RTEMS 4.11
Annotated Report
Mon Mar 21 02:25:01 2011

080077dc <IMFS_Set_handlers>:                                         
{                                                                     
  IMFS_jnode_t    *node = loc->node_access;                           
  IMFS_fs_info_t  *fs_info;                                           
                                                                      
  fs_info = loc->mt_entry->fs_info;                                   
  switch( node->type ) {                                              
 80077dc:	28 22 00 00 	lw r2,(r1+0)                                   
)                                                                     
{                                                                     
  IMFS_jnode_t    *node = loc->node_access;                           
  IMFS_fs_info_t  *fs_info;                                           
                                                                      
  fs_info = loc->mt_entry->fs_info;                                   
 80077e0:	28 23 00 10 	lw r3,(r1+16)                                  
  switch( node->type ) {                                              
 80077e4:	34 04 00 07 	mvi r4,7                                       
 80077e8:	28 42 00 4c 	lw r2,(r2+76)                                  
)                                                                     
{                                                                     
  IMFS_jnode_t    *node = loc->node_access;                           
  IMFS_fs_info_t  *fs_info;                                           
                                                                      
  fs_info = loc->mt_entry->fs_info;                                   
 80077ec:	28 63 00 34 	lw r3,(r3+52)                                  
  switch( node->type ) {                                              
 80077f0:	54 44 00 0a 	bgu r2,r4,8007818 <IMFS_Set_handlers+0x3c>     <== NEVER TAKEN
 80077f4:	78 04 08 01 	mvhi r4,0x801                                  
 80077f8:	b4 42 10 00 	add r2,r2,r2                                   
 80077fc:	38 84 37 40 	ori r4,r4,0x3740                               
 8007800:	b4 42 10 00 	add r2,r2,r2                                   
 8007804:	b4 82 10 00 	add r2,r4,r2                                   
 8007808:	28 42 00 00 	lw r2,(r2+0)                                   
 800780c:	c0 40 00 00 	b r2                                           
    case IMFS_DIRECTORY:                                              
      loc->handlers = fs_info->directory_handlers;                    
 8007810:	28 62 00 0c 	lw r2,(r3+12)                                  
 8007814:	58 22 00 08 	sw (r1+8),r2                                   
      loc->handlers = fs_info->fifo_handlers;                         
      break;                                                          
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8007818:	34 01 00 00 	mvi r1,0                                       
 800781c:	c3 a0 00 00 	ret                                            
      break;                                                          
    case IMFS_LINEAR_FILE:                                            
      loc->handlers = fs_info->memfile_handlers;                      
      break;                                                          
    case IMFS_MEMORY_FILE:                                            
      loc->handlers = fs_info->memfile_handlers;                      
 8007820:	28 62 00 08 	lw r2,(r3+8)                                   
 8007824:	58 22 00 08 	sw (r1+8),r2                                   
      loc->handlers = fs_info->fifo_handlers;                         
      break;                                                          
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8007828:	34 01 00 00 	mvi r1,0                                       
 800782c:	c3 a0 00 00 	ret                                            
    case IMFS_DEVICE:                                                 
      loc->handlers = &IMFS_device_handlers;                          
      break;                                                          
    case IMFS_SYM_LINK:                                               
    case IMFS_HARD_LINK:                                              
      loc->handlers = &IMFS_link_handlers;                            
 8007830:	78 02 08 01 	mvhi r2,0x801                                  
 8007834:	38 42 37 e0 	ori r2,r2,0x37e0                               
 8007838:	58 22 00 08 	sw (r1+8),r2                                   
      loc->handlers = fs_info->fifo_handlers;                         
      break;                                                          
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 800783c:	34 01 00 00 	mvi r1,0                                       
 8007840:	c3 a0 00 00 	ret                                            
      break;                                                          
    case IMFS_MEMORY_FILE:                                            
      loc->handlers = fs_info->memfile_handlers;                      
      break;                                                          
    case IMFS_FIFO:                                                   
      loc->handlers = fs_info->fifo_handlers;                         
 8007844:	28 62 00 10 	lw r2,(r3+16)                                  
 8007848:	58 22 00 08 	sw (r1+8),r2                                   
      break;                                                          
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 800784c:	34 01 00 00 	mvi r1,0                                       
 8007850:	c3 a0 00 00 	ret                                            
  switch( node->type ) {                                              
    case IMFS_DIRECTORY:                                              
      loc->handlers = fs_info->directory_handlers;                    
      break;                                                          
    case IMFS_DEVICE:                                                 
      loc->handlers = &IMFS_device_handlers;                          
 8007854:	78 02 08 01 	mvhi r2,0x801                                  
 8007858:	38 42 37 70 	ori r2,r2,0x3770                               
 800785c:	58 22 00 08 	sw (r1+8),r2                                   
      loc->handlers = fs_info->fifo_handlers;                         
      break;                                                          
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8007860:	34 01 00 00 	mvi r1,0                                       
 8007864:	c3 a0 00 00 	ret                                            
                                                                      

0800763c <IMFS_create_node>: IMFS_jnode_types_t type, const char *name, mode_t mode, const IMFS_types_union *info ) {
 800763c:	37 9c ff e8 	addi sp,sp,-24                                 
 8007640:	5b 8b 00 18 	sw (sp+24),r11                                 
 8007644:	5b 8c 00 14 	sw (sp+20),r12                                 
 8007648:	5b 8d 00 10 	sw (sp+16),r13                                 
 800764c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8007650:	5b 8f 00 08 	sw (sp+8),r15                                  
 8007654:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  MUST have a parent node to call this routine.                   
   */                                                                 
  if ( parent_loc == NULL )                                           
    return NULL;                                                      
 8007658:	34 0b 00 00 	mvi r11,0                                      
  IMFS_jnode_types_t                type,                             
  const char                       *name,                             
  mode_t                            mode,                             
  const IMFS_types_union           *info                              
)                                                                     
{                                                                     
 800765c:	b8 40 60 00 	mv r12,r2                                      
 8007660:	b8 a0 70 00 	mv r14,r5                                      
  IMFS_fs_info_t      *fs_info;                                       
                                                                      
  /*                                                                  
   *  MUST have a parent node to call this routine.                   
   */                                                                 
  if ( parent_loc == NULL )                                           
 8007664:	44 20 00 2e 	be r1,r0,800771c <IMFS_create_node+0xe0>       <== NEVER TAKEN
    return NULL;                                                      
                                                                      
  parent = parent_loc->node_access;                                   
  fs_info = parent_loc->mt_entry->fs_info;                            
 8007668:	28 22 00 10 	lw r2,(r1+16)                                  
   *  MUST have a parent node to call this routine.                   
   */                                                                 
  if ( parent_loc == NULL )                                           
    return NULL;                                                      
                                                                      
  parent = parent_loc->node_access;                                   
 800766c:	28 2f 00 00 	lw r15,(r1+0)                                  
  fs_info = parent_loc->mt_entry->fs_info;                            
                                                                      
  /*                                                                  
   *  Reject creation of FIFOs if support is disabled.                
   */                                                                 
  if ( type == IMFS_FIFO &&                                           
 8007670:	34 01 00 07 	mvi r1,7                                       
   */                                                                 
  if ( parent_loc == NULL )                                           
    return NULL;                                                      
                                                                      
  parent = parent_loc->node_access;                                   
  fs_info = parent_loc->mt_entry->fs_info;                            
 8007674:	28 4d 00 34 	lw r13,(r2+52)                                 
                                                                      
  /*                                                                  
   *  Reject creation of FIFOs if support is disabled.                
   */                                                                 
  if ( type == IMFS_FIFO &&                                           
 8007678:	45 81 00 32 	be r12,r1,8007740 <IMFS_create_node+0x104>     
    return NULL;                                                      
                                                                      
  /*                                                                  
   *  Allocate filesystem node and fill in basic information          
   */                                                                 
  node  = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask );
 800767c:	78 06 08 01 	mvhi r6,0x801                                  
 8007680:	38 c6 41 4c 	ori r6,r6,0x414c                               
 8007684:	28 c5 00 00 	lw r5,(r6+0)                                   
 8007688:	b8 60 10 00 	mv r2,r3                                       
 800768c:	b9 80 08 00 	mv r1,r12                                      
 8007690:	28 a3 00 2c 	lw r3,(r5+44)                                  
 8007694:	a4 60 18 00 	not r3,r3                                      
 8007698:	a0 83 18 00 	and r3,r4,r3                                   
 800769c:	fb ff ff bf 	calli 8007598 <IMFS_allocate_node>             
 80076a0:	b8 20 58 00 	mv r11,r1                                      
  if ( !node )                                                        
 80076a4:	44 20 00 1e 	be r1,r0,800771c <IMFS_create_node+0xe0>       
    return NULL;                                                      
                                                                      
  /*                                                                  
   *  Set the type specific information                               
   */                                                                 
  if ( type == IMFS_DIRECTORY ) {                                     
 80076a8:	34 01 00 01 	mvi r1,1                                       
 80076ac:	45 81 00 0f 	be r12,r1,80076e8 <IMFS_create_node+0xac>      
    rtems_chain_initialize_empty(&node->info.directory.Entries);      
  } else if ( type == IMFS_HARD_LINK ) {                              
 80076b0:	34 01 00 03 	mvi r1,3                                       
 80076b4:	45 81 00 2d 	be r12,r1,8007768 <IMFS_create_node+0x12c>     
    node->info.hard_link.link_node = info->hard_link.link_node;       
  } else if ( type == IMFS_SYM_LINK ) {                               
 80076b8:	34 01 00 04 	mvi r1,4                                       
 80076bc:	45 81 00 2b 	be r12,r1,8007768 <IMFS_create_node+0x12c>     
    node->info.sym_link.name = info->sym_link.name;                   
  } else if ( type == IMFS_DEVICE ) {                                 
 80076c0:	34 01 00 02 	mvi r1,2                                       
 80076c4:	45 81 00 24 	be r12,r1,8007754 <IMFS_create_node+0x118>     
    node->info.device.major = info->device.major;                     
    node->info.device.minor = info->device.minor;                     
  } else if ( type == IMFS_LINEAR_FILE ) {                            
 80076c8:	34 01 00 06 	mvi r1,6                                       
 80076cc:	45 81 00 2a 	be r12,r1,8007774 <IMFS_create_node+0x138>     
    node->info.linearfile.size      = 0;                              
    node->info.linearfile.direct    = 0;                              
  } else if ( type == IMFS_MEMORY_FILE ) {                            
 80076d0:	34 01 00 05 	mvi r1,5                                       
 80076d4:	45 81 00 2c 	be r12,r1,8007784 <IMFS_create_node+0x148>     
      node->info.file.size            = 0;                            
      node->info.file.indirect        = 0;                            
      node->info.file.doubly_indirect = 0;                            
      node->info.file.triply_indirect = 0;                            
  } else if ( type == IMFS_FIFO ) {                                   
 80076d8:	34 01 00 07 	mvi r1,7                                       
 80076dc:	5d 81 00 08 	bne r12,r1,80076fc <IMFS_create_node+0xc0>     <== NEVER TAKEN
    node->info.fifo.pipe = NULL;                                      
 80076e0:	59 60 00 50 	sw (r11+80),r0                                 
 80076e4:	e0 00 00 06 	bi 80076fc <IMFS_create_node+0xc0>             
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 );                        
 80076e8:	35 62 00 54 	addi r2,r11,84                                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 80076ec:	35 61 00 50 	addi r1,r11,80                                 
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80076f0:	59 62 00 50 	sw (r11+80),r2                                 
  head->previous = NULL;                                              
 80076f4:	59 60 00 54 	sw (r11+84),r0                                 
  tail->previous = head;                                              
 80076f8:	59 61 00 58 	sw (r11+88),r1                                 
                                                                      
  /*                                                                  
   *  This node MUST have a parent, so put it in that directory list. 
   */                                                                 
  node->Parent = parent;                                              
  node->st_ino = ++fs_info->ino_count;                                
 80076fc:	29 a2 00 04 	lw r2,(r13+4)                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  This node MUST have a parent, so put it in that directory list. 
   */                                                                 
  node->Parent = parent;                                              
 8007700:	59 6f 00 08 	sw (r11+8),r15                                 
 8007704:	35 e1 00 50 	addi r1,r15,80                                 
  node->st_ino = ++fs_info->ino_count;                                
 8007708:	34 42 00 01 	addi r2,r2,1                                   
 800770c:	59 a2 00 04 	sw (r13+4),r2                                  
 8007710:	59 62 00 38 	sw (r11+56),r2                                 
 8007714:	b9 60 10 00 	mv r2,r11                                      
 8007718:	fb ff f0 6f 	calli 80038d4 <_Chain_Append>                  
                                                                      
  rtems_chain_append( &parent->info.directory.Entries, &node->Node ); 
                                                                      
  return node;                                                        
}                                                                     
 800771c:	b9 60 08 00 	mv r1,r11                                      
 8007720:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007724:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8007728:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800772c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8007730:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8007734:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8007738:	37 9c 00 18 	addi sp,sp,24                                  
 800773c:	c3 a0 00 00 	ret                                            
  fs_info = parent_loc->mt_entry->fs_info;                            
                                                                      
  /*                                                                  
   *  Reject creation of FIFOs if support is disabled.                
   */                                                                 
  if ( type == IMFS_FIFO &&                                           
 8007740:	29 a1 00 10 	lw r1,(r13+16)                                 
 8007744:	78 02 08 01 	mvhi r2,0x801                                  
 8007748:	38 42 36 d8 	ori r2,r2,0x36d8                               
 800774c:	44 22 ff f4 	be r1,r2,800771c <IMFS_create_node+0xe0>       
 8007750:	e3 ff ff cb 	bi 800767c <IMFS_create_node+0x40>             
  } else if ( type == IMFS_HARD_LINK ) {                              
    node->info.hard_link.link_node = info->hard_link.link_node;       
  } else if ( type == IMFS_SYM_LINK ) {                               
    node->info.sym_link.name = info->sym_link.name;                   
  } else if ( type == IMFS_DEVICE ) {                                 
    node->info.device.major = info->device.major;                     
 8007754:	29 c2 00 00 	lw r2,(r14+0)                                  
    node->info.device.minor = info->device.minor;                     
 8007758:	29 c1 00 04 	lw r1,(r14+4)                                  
  } else if ( type == IMFS_HARD_LINK ) {                              
    node->info.hard_link.link_node = info->hard_link.link_node;       
  } else if ( type == IMFS_SYM_LINK ) {                               
    node->info.sym_link.name = info->sym_link.name;                   
  } else if ( type == IMFS_DEVICE ) {                                 
    node->info.device.major = info->device.major;                     
 800775c:	59 62 00 50 	sw (r11+80),r2                                 
    node->info.device.minor = info->device.minor;                     
 8007760:	59 61 00 54 	sw (r11+84),r1                                 
 8007764:	e3 ff ff e6 	bi 80076fc <IMFS_create_node+0xc0>             
  if ( type == IMFS_DIRECTORY ) {                                     
    rtems_chain_initialize_empty(&node->info.directory.Entries);      
  } else if ( type == IMFS_HARD_LINK ) {                              
    node->info.hard_link.link_node = info->hard_link.link_node;       
  } else if ( type == IMFS_SYM_LINK ) {                               
    node->info.sym_link.name = info->sym_link.name;                   
 8007768:	29 c1 00 00 	lw r1,(r14+0)                                  
 800776c:	59 61 00 50 	sw (r11+80),r1                                 
 8007770:	e3 ff ff e3 	bi 80076fc <IMFS_create_node+0xc0>             
  } else if ( type == IMFS_DEVICE ) {                                 
    node->info.device.major = info->device.major;                     
    node->info.device.minor = info->device.minor;                     
  } else if ( type == IMFS_LINEAR_FILE ) {                            
    node->info.linearfile.size      = 0;                              
 8007774:	59 60 00 50 	sw (r11+80),r0                                 
 8007778:	59 60 00 54 	sw (r11+84),r0                                 
    node->info.linearfile.direct    = 0;                              
 800777c:	59 60 00 58 	sw (r11+88),r0                                 
 8007780:	e3 ff ff df 	bi 80076fc <IMFS_create_node+0xc0>             
  } else if ( type == IMFS_MEMORY_FILE ) {                            
      node->info.file.size            = 0;                            
 8007784:	59 60 00 50 	sw (r11+80),r0                                 
 8007788:	59 60 00 54 	sw (r11+84),r0                                 
      node->info.file.indirect        = 0;                            
 800778c:	59 60 00 58 	sw (r11+88),r0                                 
      node->info.file.doubly_indirect = 0;                            
 8007790:	59 60 00 5c 	sw (r11+92),r0                                 
      node->info.file.triply_indirect = 0;                            
 8007794:	59 60 00 60 	sw (r11+96),r0                                 
 8007798:	e3 ff ff d9 	bi 80076fc <IMFS_create_node+0xc0>             
                                                                      

08003914 <IMFS_dump_directory>: */ void IMFS_dump_directory( IMFS_jnode_t *the_directory, int level ) {
 8003914:	37 9c ff e0 	addi sp,sp,-32                                 
 8003918:	5b 8b 00 20 	sw (sp+32),r11                                 
 800391c:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8003920:	5b 8d 00 18 	sw (sp+24),r13                                 
 8003924:	5b 8e 00 14 	sw (sp+20),r14                                 
 8003928:	5b 8f 00 10 	sw (sp+16),r15                                 
 800392c:	5b 90 00 0c 	sw (sp+12),r16                                 
 8003930:	5b 91 00 08 	sw (sp+8),r17                                  
 8003934:	5b 9d 00 04 	sw (sp+4),ra                                   
 *                                                                    
 */                                                                   
int IMFS_memfile_maximum_size( void )                                 
{                                                                     
  return IMFS_MEMFILE_MAXIMUM_SIZE;                                   
}                                                                     
 8003938:	28 2f 00 50 	lw r15,(r1+80)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  Chain_Control *the_chain,                                           
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Tail(the_chain));                        
 800393c:	34 30 00 54 	addi r16,r1,84                                 
 */                                                                   
void IMFS_dump_directory(                                             
  IMFS_jnode_t  *the_directory,                                       
  int            level                                                
)                                                                     
{                                                                     
 8003940:	b8 40 68 00 	mv r13,r2                                      
  IMFS_assert( level >= 0 );                                          
  IMFS_assert( the_directory->type == IMFS_DIRECTORY );               
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
 8003944:	45 f0 00 17 	be r15,r16,80039a0 <IMFS_dump_directory+0x8c>  
 8003948:	78 0e 08 02 	mvhi r14,0x802                                 
 800394c:	78 0c 08 02 	mvhi r12,0x802                                 
 8003950:	39 ce 61 28 	ori r14,r14,0x6128                             
 8003954:	39 8c 81 f0 	ori r12,r12,0x81f0                             
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
      fprintf(stdout, "...." );                                       
    IMFS_print_jnode( the_jnode );                                    
    if ( the_jnode->type == IMFS_DIRECTORY )                          
      IMFS_dump_directory( the_jnode, level + 1 );                    
 8003958:	34 51 00 01 	addi r17,r2,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++ )                                      
 800395c:	48 0d 00 0a 	bg r0,r13,8003984 <IMFS_dump_directory+0x70>   <== NEVER TAKEN
 8003960:	34 0b 00 00 	mvi r11,0                                      
      fprintf(stdout, "...." );                                       
 8003964:	29 83 00 00 	lw r3,(r12+0)                                  
        !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++ )                                      
 8003968:	35 6b 00 01 	addi r11,r11,1                                 
      fprintf(stdout, "...." );                                       
 800396c:	b9 c0 08 00 	mv r1,r14                                      
 8003970:	28 64 00 08 	lw r4,(r3+8)                                   
 8003974:	34 02 00 01 	mvi r2,1                                       
 8003978:	34 03 00 04 	mvi r3,4                                       
 800397c:	f8 00 3c fd 	calli 8012d70 <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++ )                                      
 8003980:	4d ab ff f9 	bge r13,r11,8003964 <IMFS_dump_directory+0x50> 
      fprintf(stdout, "...." );                                       
    IMFS_print_jnode( the_jnode );                                    
 8003984:	b9 e0 08 00 	mv r1,r15                                      
 8003988:	fb ff ff 89 	calli 80037ac <IMFS_print_jnode>               
    if ( the_jnode->type == IMFS_DIRECTORY )                          
 800398c:	29 e3 00 4c 	lw r3,(r15+76)                                 
 8003990:	34 01 00 01 	mvi r1,1                                       
 8003994:	44 61 00 0d 	be r3,r1,80039c8 <IMFS_dump_directory+0xb4>    
                                                                      
  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 ) {                                 
 8003998:	29 ef 00 00 	lw r15,(r15+0)                                 
  IMFS_assert( level >= 0 );                                          
  IMFS_assert( the_directory->type == IMFS_DIRECTORY );               
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
 800399c:	5d f0 ff f0 	bne r15,r16,800395c <IMFS_dump_directory+0x48> 
      fprintf(stdout, "...." );                                       
    IMFS_print_jnode( the_jnode );                                    
    if ( the_jnode->type == IMFS_DIRECTORY )                          
      IMFS_dump_directory( the_jnode, level + 1 );                    
  }                                                                   
}                                                                     
 80039a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80039a4:	2b 8b 00 20 	lw r11,(sp+32)                                 
 80039a8:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 80039ac:	2b 8d 00 18 	lw r13,(sp+24)                                 
 80039b0:	2b 8e 00 14 	lw r14,(sp+20)                                 
 80039b4:	2b 8f 00 10 	lw r15,(sp+16)                                 
 80039b8:	2b 90 00 0c 	lw r16,(sp+12)                                 
 80039bc:	2b 91 00 08 	lw r17,(sp+8)                                  
 80039c0:	37 9c 00 20 	addi sp,sp,32                                  
 80039c4:	c3 a0 00 00 	ret                                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
      fprintf(stdout, "...." );                                       
    IMFS_print_jnode( the_jnode );                                    
    if ( the_jnode->type == IMFS_DIRECTORY )                          
      IMFS_dump_directory( the_jnode, level + 1 );                    
 80039c8:	b9 e0 08 00 	mv r1,r15                                      
 80039cc:	ba 20 10 00 	mv r2,r17                                      
 80039d0:	fb ff ff d1 	calli 8003914 <IMFS_dump_directory>            
 80039d4:	e3 ff ff f1 	bi 8003998 <IMFS_dump_directory+0x84>          
                                                                      

08007974 <IMFS_eval_path>: const char *pathname, /* IN */ size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) {
 8007974:	37 9c ff 9c 	addi sp,sp,-100                                
 8007978:	5b 8b 00 3c 	sw (sp+60),r11                                 
 800797c:	5b 8c 00 38 	sw (sp+56),r12                                 
 8007980:	5b 8d 00 34 	sw (sp+52),r13                                 
 8007984:	5b 8e 00 30 	sw (sp+48),r14                                 
 8007988:	5b 8f 00 2c 	sw (sp+44),r15                                 
 800798c:	5b 90 00 28 	sw (sp+40),r16                                 
 8007990:	5b 91 00 24 	sw (sp+36),r17                                 
 8007994:	5b 92 00 20 	sw (sp+32),r18                                 
 8007998:	5b 93 00 1c 	sw (sp+28),r19                                 
 800799c:	5b 94 00 18 	sw (sp+24),r20                                 
 80079a0:	5b 95 00 14 	sw (sp+20),r21                                 
 80079a4:	5b 96 00 10 	sw (sp+16),r22                                 
 80079a8:	5b 97 00 0c 	sw (sp+12),r23                                 
 80079ac:	5b 98 00 08 	sw (sp+8),r24                                  
 80079b0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80079b4:	b8 60 a8 00 	mv r21,r3                                      
  char                                token[ IMFS_NAME_MAX + 1 ];     
  rtems_filesystem_location_info_t    newloc;                         
  IMFS_jnode_t                       *node;                           
  int                                 result;                         
                                                                      
  if ( !rtems_libio_is_valid_perms( flags ) ) {                       
 80079b8:	34 03 ff f8 	mvi r3,-8                                      
 80079bc:	a2 a3 18 00 	and r3,r21,r3                                  
  const char                        *pathname,     /* IN     */       
  size_t                             pathnamelen,  /* IN     */       
  int                                flags,        /* IN     */       
  rtems_filesystem_location_info_t  *pathloc       /* IN/OUT */       
                   )                                                  
{                                                                     
 80079c0:	b8 20 88 00 	mv r17,r1                                      
 80079c4:	b8 40 70 00 	mv r14,r2                                      
 80079c8:	b8 80 58 00 	mv r11,r4                                      
  char                                token[ IMFS_NAME_MAX + 1 ];     
  rtems_filesystem_location_info_t    newloc;                         
  IMFS_jnode_t                       *node;                           
  int                                 result;                         
                                                                      
  if ( !rtems_libio_is_valid_perms( flags ) ) {                       
 80079cc:	5c 60 00 94 	bne r3,r0,8007c1c <IMFS_eval_path+0x2a8>       <== NEVER TAKEN
  /*                                                                  
   *  This was filled in by the caller and is valid in the            
   *  mount table.                                                    
   */                                                                 
                                                                      
  node = pathloc->node_access;                                        
 80079d0:	28 8c 00 00 	lw r12,(r4+0)                                  
      case IMFS_UP_DIR:                                               
        /*                                                            
         *  Am I at the root of all filesystems? (chroot'ed?)         
         */                                                           
                                                                      
        if ( pathloc->node_access == rtems_filesystem_root.node_access )
 80079d4:	78 10 08 01 	mvhi r16,0x801                                 
  size_t                             pathnamelen,  /* IN     */       
  int                                flags,        /* IN     */       
  rtems_filesystem_location_info_t  *pathloc       /* IN/OUT */       
                   )                                                  
{                                                                     
  int                                 i = 0;                          
 80079d8:	34 0f 00 00 	mvi r15,0                                      
 80079dc:	37 92 00 40 	addi r18,sp,64                                 
                                                                      
    /*                                                                
     * I cannot move out of this directory without execute permission.
     */                                                               
    if ( type != IMFS_NO_MORE_PATH )                                  
      if ( node->type == IMFS_DIRECTORY )                             
 80079e0:	34 13 00 01 	mvi r19,1                                      
        if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
          rtems_set_errno_and_return_minus_one( EACCES );             
                                                                      
    node = pathloc->node_access;                                      
                                                                      
    switch( type ) {                                                  
 80079e4:	34 14 00 03 	mvi r20,3                                      
	   * It would be a design error if we evaluated the link and         
	   * was broken.                                                     
	   */                                                                
          IMFS_assert( node );                                        
                                                                      
        } else if ( node->type == IMFS_SYM_LINK ) {                   
 80079e8:	34 16 00 04 	mvi r22,4                                      
          /*                                                          
           *  In contrast to a hard link, it is possible to have a broken
           *  symbolic link.                                          
           */                                                         
          node = pathloc->node_access;                                
          if ( result == -1 )                                         
 80079ec:	34 18 ff ff 	mvi r24,-1                                     
        if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
          rtems_set_errno_and_return_minus_one( EACCES );             
                                                                      
    node = pathloc->node_access;                                      
                                                                      
    switch( type ) {                                                  
 80079f0:	34 17 00 02 	mvi r23,2                                      
      case IMFS_UP_DIR:                                               
        /*                                                            
         *  Am I at the root of all filesystems? (chroot'ed?)         
         */                                                           
                                                                      
        if ( pathloc->node_access == rtems_filesystem_root.node_access )
 80079f4:	3a 10 41 4c 	ori r16,r16,0x414c                             
   *  Evaluate all tokens until we are done or an error occurs.       
   */                                                                 
                                                                      
  while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
                                                                      
    type = IMFS_get_token( &pathname[i], pathnamelen, token, &len );  
 80079f8:	37 84 00 64 	addi r4,sp,100                                 
 80079fc:	b6 2f 08 00 	add r1,r17,r15                                 
 8007a00:	b9 c0 10 00 	mv r2,r14                                      
 8007a04:	ba 40 18 00 	mv r3,r18                                      
 8007a08:	f8 00 02 17 	calli 8008264 <IMFS_get_token>                 
    pathnamelen -= len;                                               
    i += len;                                                         
                                                                      
    if ( !pathloc->node_access )                                      
 8007a0c:	29 64 00 00 	lw r4,(r11+0)                                  
   *  Evaluate all tokens until we are done or an error occurs.       
   */                                                                 
                                                                      
  while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
                                                                      
    type = IMFS_get_token( &pathname[i], pathnamelen, token, &len );  
 8007a10:	b8 20 68 00 	mv r13,r1                                      
    pathnamelen -= len;                                               
 8007a14:	2b 85 00 64 	lw r5,(sp+100)                                 
    i += len;                                                         
                                                                      
    if ( !pathloc->node_access )                                      
 8007a18:	44 80 00 51 	be r4,r0,8007b5c <IMFS_eval_path+0x1e8>        <== NEVER TAKEN
   */                                                                 
                                                                      
  while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
                                                                      
    type = IMFS_get_token( &pathname[i], pathnamelen, token, &len );  
    pathnamelen -= len;                                               
 8007a1c:	c9 c5 70 00 	sub r14,r14,r5                                 
    i += len;                                                         
 8007a20:	b5 e5 78 00 	add r15,r15,r5                                 
      rtems_set_errno_and_return_minus_one( ENOENT );                 
                                                                      
    /*                                                                
     * I cannot move out of this directory without execute permission.
     */                                                               
    if ( type != IMFS_NO_MORE_PATH )                                  
 8007a24:	5c 20 00 10 	bne r1,r0,8007a64 <IMFS_eval_path+0xf0>        
   *  new fs root node and let let the mounted filesystem set the handlers.
   *                                                                  
   *  NOTE: The behavior of stat() on a mount point appears to be questionable.
   */                                                                 
                                                                      
  if ( node->type == IMFS_DIRECTORY ) {                               
 8007a28:	28 82 00 4c 	lw r2,(r4+76)                                  
 8007a2c:	34 01 00 01 	mvi r1,1                                       
 8007a30:	44 41 00 6a 	be r2,r1,8007bd8 <IMFS_eval_path+0x264>        
                                          flags, pathloc );           
    } else {                                                          
      result = IMFS_Set_handlers( pathloc );                          
    }                                                                 
  } else {                                                            
    result = IMFS_Set_handlers( pathloc );                            
 8007a34:	b9 60 08 00 	mv r1,r11                                      
 8007a38:	fb ff ff 69 	calli 80077dc <IMFS_Set_handlers>              
 8007a3c:	b8 20 68 00 	mv r13,r1                                      
                                                                      
  /*                                                                  
   * Verify we have the correct permissions for this node.            
   */                                                                 
                                                                      
  if ( !IMFS_evaluate_permission( pathloc, flags ) )                  
 8007a40:	ba a0 10 00 	mv r2,r21                                      
 8007a44:	b9 60 08 00 	mv r1,r11                                      
 8007a48:	fb ff ff 88 	calli 8007868 <IMFS_evaluate_permission>       
 8007a4c:	5c 20 00 2c 	bne r1,r0,8007afc <IMFS_eval_path+0x188>       
    rtems_set_errno_and_return_minus_one( EACCES );                   
 8007a50:	f8 00 14 cb 	calli 800cd7c <__errno>                        
 8007a54:	34 02 00 0d 	mvi r2,13                                      
 8007a58:	58 22 00 00 	sw (r1+0),r2                                   
 8007a5c:	34 0d ff ff 	mvi r13,-1                                     
 8007a60:	e0 00 00 27 	bi 8007afc <IMFS_eval_path+0x188>              
                                                                      
    /*                                                                
     * I cannot move out of this directory without execute permission.
     */                                                               
    if ( type != IMFS_NO_MORE_PATH )                                  
      if ( node->type == IMFS_DIRECTORY )                             
 8007a64:	29 81 00 4c 	lw r1,(r12+76)                                 
 8007a68:	44 33 00 37 	be r1,r19,8007b44 <IMFS_eval_path+0x1d0>       
        if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
          rtems_set_errno_and_return_minus_one( EACCES );             
                                                                      
    node = pathloc->node_access;                                      
 8007a6c:	b8 80 60 00 	mv r12,r4                                      
                                                                      
    switch( type ) {                                                  
 8007a70:	45 b4 00 06 	be r13,r20,8007a88 <IMFS_eval_path+0x114>      
 8007a74:	45 b6 00 1e 	be r13,r22,8007aec <IMFS_eval_path+0x178>      <== NEVER TAKEN
 8007a78:	45 b7 00 11 	be r13,r23,8007abc <IMFS_eval_path+0x148>      
                                                                      
  /*                                                                  
   *  Evaluate all tokens until we are done or an error occurs.       
   */                                                                 
                                                                      
  while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
 8007a7c:	7d ad 00 04 	cmpnei r13,r13,4                               
 8007a80:	5d a0 ff de 	bne r13,r0,80079f8 <IMFS_eval_path+0x84>       <== ALWAYS TAKEN
 8007a84:	e3 ff ff e9 	bi 8007a28 <IMFS_eval_path+0xb4>               <== NOT EXECUTED
                                                                      
      case IMFS_NAME:                                                 
        /*                                                            
         *  If we are at a link follow it.                            
         */                                                           
        if ( node->type == IMFS_HARD_LINK ) {                         
 8007a88:	28 81 00 4c 	lw r1,(r4+76)                                  
 8007a8c:	44 34 00 39 	be r1,r20,8007b70 <IMFS_eval_path+0x1fc>       <== NEVER TAKEN
	   * It would be a design error if we evaluated the link and         
	   * was broken.                                                     
	   */                                                                
          IMFS_assert( node );                                        
                                                                      
        } else if ( node->type == IMFS_SYM_LINK ) {                   
 8007a90:	44 36 00 5b 	be r1,r22,8007bfc <IMFS_eval_path+0x288>       <== NEVER TAKEN
        }                                                             
                                                                      
        /*                                                            
         *  Only a directory can be decended into.                    
         */                                                           
        if ( node->type != IMFS_DIRECTORY )                           
 8007a94:	5c 33 00 67 	bne r1,r19,8007c30 <IMFS_eval_path+0x2bc>      <== NEVER TAKEN
                                                                      
        /*                                                            
         *  If we are at a node that is a mount point. Set loc to the 
         *  new fs root node and let them finish evaluating the path. 
         */                                                           
        if ( node->info.directory.mt_fs != NULL ) {                   
 8007a98:	29 8d 00 5c 	lw r13,(r12+92)                                
 8007a9c:	5d a0 00 6a 	bne r13,r0,8007c44 <IMFS_eval_path+0x2d0>      
        }                                                             
                                                                      
        /*                                                            
         *  Otherwise find the token name in the present location.    
         */                                                           
        node = IMFS_find_match_in_dir( node, token );                 
 8007aa0:	b9 80 08 00 	mv r1,r12                                      
 8007aa4:	ba 40 10 00 	mv r2,r18                                      
 8007aa8:	f8 00 01 c9 	calli 80081cc <IMFS_find_match_in_dir>         
 8007aac:	b8 20 60 00 	mv r12,r1                                      
        if ( !node )                                                  
 8007ab0:	44 2d 00 2b 	be r1,r13,8007b5c <IMFS_eval_path+0x1e8>       
                                                                      
        /*                                                            
         *  Set the node access to the point we have found.           
         */                                                           
                                                                      
        pathloc->node_access = node;                                  
 8007ab4:	59 6c 00 00 	sw (r11+0),r12                                 
 8007ab8:	e3 ff ff d0 	bi 80079f8 <IMFS_eval_path+0x84>               
      case IMFS_UP_DIR:                                               
        /*                                                            
         *  Am I at the root of all filesystems? (chroot'ed?)         
         */                                                           
                                                                      
        if ( pathloc->node_access == rtems_filesystem_root.node_access )
 8007abc:	2a 01 00 00 	lw r1,(r16+0)                                  
 8007ac0:	28 21 00 18 	lw r1,(r1+24)                                  
 8007ac4:	44 24 ff cd 	be r1,r4,80079f8 <IMFS_eval_path+0x84>         
        /*                                                            
         *  Am I at the root of this mounted filesystem?              
         */                                                           
                                                                      
        if (pathloc->node_access ==                                   
            pathloc->mt_entry->mt_fs_root.node_access) {              
 8007ac8:	29 61 00 10 	lw r1,(r11+16)                                 
                                                                      
        /*                                                            
         *  Am I at the root of this mounted filesystem?              
         */                                                           
                                                                      
        if (pathloc->node_access ==                                   
 8007acc:	28 22 00 1c 	lw r2,(r1+28)                                  
 8007ad0:	44 44 00 2e 	be r2,r4,8007b88 <IMFS_eval_path+0x214>        
                                               pathnamelen+len,       
                                               flags,pathloc);        
          }                                                           
        } else {                                                      
                                                                      
          if ( !node->Parent )                                        
 8007ad4:	28 8c 00 08 	lw r12,(r4+8)                                  
 8007ad8:	5d 80 ff f7 	bne r12,r0,8007ab4 <IMFS_eval_path+0x140>      
            rtems_set_errno_and_return_minus_one( ENOENT );           
 8007adc:	f8 00 14 a8 	calli 800cd7c <__errno>                        
 8007ae0:	58 2d 00 00 	sw (r1+0),r13                                  
 8007ae4:	34 0d ff ff 	mvi r13,-1                                     
 8007ae8:	e0 00 00 05 	bi 8007afc <IMFS_eval_path+0x188>              
      case IMFS_NO_MORE_PATH:                                         
      case IMFS_CURRENT_DIR:                                          
        break;                                                        
                                                                      
      case IMFS_INVALID_TOKEN:                                        
        rtems_set_errno_and_return_minus_one( ENAMETOOLONG );         
 8007aec:	f8 00 14 a4 	calli 800cd7c <__errno>                        
 8007af0:	34 02 00 5b 	mvi r2,91                                      
 8007af4:	58 22 00 00 	sw (r1+0),r2                                   
 8007af8:	34 0d ff ff 	mvi r13,-1                                     
                                                                      
  if ( !IMFS_evaluate_permission( pathloc, flags ) )                  
    rtems_set_errno_and_return_minus_one( EACCES );                   
                                                                      
  return result;                                                      
}                                                                     
 8007afc:	b9 a0 08 00 	mv r1,r13                                      
 8007b00:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007b04:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 8007b08:	2b 8c 00 38 	lw r12,(sp+56)                                 
 8007b0c:	2b 8d 00 34 	lw r13,(sp+52)                                 
 8007b10:	2b 8e 00 30 	lw r14,(sp+48)                                 
 8007b14:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 8007b18:	2b 90 00 28 	lw r16,(sp+40)                                 
 8007b1c:	2b 91 00 24 	lw r17,(sp+36)                                 
 8007b20:	2b 92 00 20 	lw r18,(sp+32)                                 
 8007b24:	2b 93 00 1c 	lw r19,(sp+28)                                 
 8007b28:	2b 94 00 18 	lw r20,(sp+24)                                 
 8007b2c:	2b 95 00 14 	lw r21,(sp+20)                                 
 8007b30:	2b 96 00 10 	lw r22,(sp+16)                                 
 8007b34:	2b 97 00 0c 	lw r23,(sp+12)                                 
 8007b38:	2b 98 00 08 	lw r24,(sp+8)                                  
 8007b3c:	37 9c 00 64 	addi sp,sp,100                                 
 8007b40:	c3 a0 00 00 	ret                                            
    /*                                                                
     * I cannot move out of this directory without execute permission.
     */                                                               
    if ( type != IMFS_NO_MORE_PATH )                                  
      if ( node->type == IMFS_DIRECTORY )                             
        if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
 8007b44:	b9 60 08 00 	mv r1,r11                                      
 8007b48:	34 02 00 01 	mvi r2,1                                       
 8007b4c:	fb ff ff 47 	calli 8007868 <IMFS_evaluate_permission>       
 8007b50:	44 20 ff c0 	be r1,r0,8007a50 <IMFS_eval_path+0xdc>         
 8007b54:	29 64 00 00 	lw r4,(r11+0)                                  
 8007b58:	e3 ff ff c5 	bi 8007a6c <IMFS_eval_path+0xf8>               
        /*                                                            
         *  Otherwise find the token name in the present location.    
         */                                                           
        node = IMFS_find_match_in_dir( node, token );                 
        if ( !node )                                                  
          rtems_set_errno_and_return_minus_one( ENOENT );             
 8007b5c:	f8 00 14 88 	calli 800cd7c <__errno>                        
 8007b60:	34 02 00 02 	mvi r2,2                                       
 8007b64:	58 22 00 00 	sw (r1+0),r2                                   
 8007b68:	34 0d ff ff 	mvi r13,-1                                     
 8007b6c:	e3 ff ff e4 	bi 8007afc <IMFS_eval_path+0x188>              
      case IMFS_NAME:                                                 
        /*                                                            
         *  If we are at a link follow it.                            
         */                                                           
        if ( node->type == IMFS_HARD_LINK ) {                         
          IMFS_evaluate_hard_link( pathloc, 0 );                      
 8007b70:	b9 60 08 00 	mv r1,r11                                      
 8007b74:	34 02 00 00 	mvi r2,0                                       
 8007b78:	fb ff ff 67 	calli 8007914 <IMFS_evaluate_hard_link>        
          node = pathloc->node_access;                                
 8007b7c:	29 6c 00 00 	lw r12,(r11+0)                                 
 8007b80:	29 81 00 4c 	lw r1,(r12+76)                                 
 8007b84:	e3 ff ff c4 	bi 8007a94 <IMFS_eval_path+0x120>              
                                                                      
        /*                                                            
         *  Am I at the root of this mounted filesystem?              
         */                                                           
                                                                      
        if (pathloc->node_access ==                                   
 8007b88:	28 23 00 14 	lw r3,(r1+20)                                  
          if ( pathloc->node_access == rtems_filesystem_root.node_access ) {
            break;       /* Throw out the .. in this case */          
          } else {                                                    
            newloc = pathloc->mt_entry->mt_point_node;                
            *pathloc = newloc;                                        
            return (*pathloc->ops->evalpath_h)(&(pathname[i-len]),    
 8007b8c:	2b 82 00 64 	lw r2,(sp+100)                                 
                                                                      
        /*                                                            
         *  Am I at the root of this mounted filesystem?              
         */                                                           
                                                                      
        if (pathloc->node_access ==                                   
 8007b90:	28 27 00 0c 	lw r7,(r1+12)                                  
 8007b94:	28 26 00 10 	lw r6,(r1+16)                                  
 8007b98:	28 24 00 18 	lw r4,(r1+24)                                  
 8007b9c:	28 28 00 08 	lw r8,(r1+8)                                   
                                                                      
  if ( node->type == IMFS_DIRECTORY ) {                               
    if ( node->info.directory.mt_fs != NULL ) {                       
      newloc   = node->info.directory.mt_fs->mt_fs_root;              
      *pathloc = newloc;                                              
      return (*pathloc->ops->evalpath_h)( &pathname[i-len],           
 8007ba0:	28 65 00 00 	lw r5,(r3+0)                                   
 8007ba4:	c9 e2 08 00 	sub r1,r15,r2                                  
   *                                                                  
   *  NOTE: The behavior of stat() on a mount point appears to be questionable.
   */                                                                 
                                                                      
  if ( node->type == IMFS_DIRECTORY ) {                               
    if ( node->info.directory.mt_fs != NULL ) {                       
 8007ba8:	59 63 00 0c 	sw (r11+12),r3                                 
 8007bac:	59 64 00 10 	sw (r11+16),r4                                 
 8007bb0:	59 68 00 00 	sw (r11+0),r8                                  
 8007bb4:	59 67 00 04 	sw (r11+4),r7                                  
 8007bb8:	59 66 00 08 	sw (r11+8),r6                                  
      newloc   = node->info.directory.mt_fs->mt_fs_root;              
      *pathloc = newloc;                                              
      return (*pathloc->ops->evalpath_h)( &pathname[i-len],           
 8007bbc:	b6 21 08 00 	add r1,r17,r1                                  
 8007bc0:	b5 c2 10 00 	add r2,r14,r2                                  
 8007bc4:	ba a0 18 00 	mv r3,r21                                      
 8007bc8:	b9 60 20 00 	mv r4,r11                                      
 8007bcc:	d8 a0 00 00 	call r5                                        
 8007bd0:	b8 20 68 00 	mv r13,r1                                      
 8007bd4:	e3 ff ff ca 	bi 8007afc <IMFS_eval_path+0x188>              
   *                                                                  
   *  NOTE: The behavior of stat() on a mount point appears to be questionable.
   */                                                                 
                                                                      
  if ( node->type == IMFS_DIRECTORY ) {                               
    if ( node->info.directory.mt_fs != NULL ) {                       
 8007bd8:	28 81 00 5c 	lw r1,(r4+92)                                  
 8007bdc:	44 20 ff 96 	be r1,r0,8007a34 <IMFS_eval_path+0xc0>         
 8007be0:	28 23 00 28 	lw r3,(r1+40)                                  
      newloc   = node->info.directory.mt_fs->mt_fs_root;              
      *pathloc = newloc;                                              
      return (*pathloc->ops->evalpath_h)( &pathname[i-len],           
 8007be4:	2b 82 00 64 	lw r2,(sp+100)                                 
   *                                                                  
   *  NOTE: The behavior of stat() on a mount point appears to be questionable.
   */                                                                 
                                                                      
  if ( node->type == IMFS_DIRECTORY ) {                               
    if ( node->info.directory.mt_fs != NULL ) {                       
 8007be8:	28 27 00 20 	lw r7,(r1+32)                                  
 8007bec:	28 26 00 24 	lw r6,(r1+36)                                  
 8007bf0:	28 24 00 2c 	lw r4,(r1+44)                                  
 8007bf4:	28 28 00 1c 	lw r8,(r1+28)                                  
 8007bf8:	e3 ff ff ea 	bi 8007ba0 <IMFS_eval_path+0x22c>              
	   * was broken.                                                     
	   */                                                                
          IMFS_assert( node );                                        
                                                                      
        } else if ( node->type == IMFS_SYM_LINK ) {                   
          result = IMFS_evaluate_sym_link( pathloc, 0 );              
 8007bfc:	b9 60 08 00 	mv r1,r11                                      
 8007c00:	34 02 00 00 	mvi r2,0                                       
 8007c04:	f8 00 00 17 	calli 8007c60 <IMFS_evaluate_sym_link>         
 8007c08:	b8 20 68 00 	mv r13,r1                                      
                                                                      
          /*                                                          
           *  In contrast to a hard link, it is possible to have a broken
           *  symbolic link.                                          
           */                                                         
          node = pathloc->node_access;                                
 8007c0c:	29 6c 00 00 	lw r12,(r11+0)                                 
          if ( result == -1 )                                         
 8007c10:	44 38 ff bb 	be r1,r24,8007afc <IMFS_eval_path+0x188>       <== NEVER TAKEN
                                                                      
          /*                                                          
           *  In contrast to a hard link, it is possible to have a broken
           *  symbolic link.                                          
           */                                                         
          node = pathloc->node_access;                                
 8007c14:	29 81 00 4c 	lw r1,(r12+76)                                 
 8007c18:	e3 ff ff 9f 	bi 8007a94 <IMFS_eval_path+0x120>              
  rtems_filesystem_location_info_t    newloc;                         
  IMFS_jnode_t                       *node;                           
  int                                 result;                         
                                                                      
  if ( !rtems_libio_is_valid_perms( flags ) ) {                       
    rtems_set_errno_and_return_minus_one( EIO );                      
 8007c1c:	f8 00 14 58 	calli 800cd7c <__errno>                        <== NOT EXECUTED
 8007c20:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8007c24:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8007c28:	34 0d ff ff 	mvi r13,-1                                     <== NOT EXECUTED
 8007c2c:	e3 ff ff b4 	bi 8007afc <IMFS_eval_path+0x188>              <== NOT EXECUTED
                                                                      
        /*                                                            
         *  Only a directory can be decended into.                    
         */                                                           
        if ( node->type != IMFS_DIRECTORY )                           
          rtems_set_errno_and_return_minus_one( ENOTDIR );            
 8007c30:	f8 00 14 53 	calli 800cd7c <__errno>                        
 8007c34:	34 02 00 14 	mvi r2,20                                      
 8007c38:	58 22 00 00 	sw (r1+0),r2                                   
 8007c3c:	34 0d ff ff 	mvi r13,-1                                     
 8007c40:	e3 ff ff af 	bi 8007afc <IMFS_eval_path+0x188>              
                                                                      
        /*                                                            
         *  If we are at a node that is a mount point. Set loc to the 
         *  new fs root node and let them finish evaluating the path. 
         */                                                           
        if ( node->info.directory.mt_fs != NULL ) {                   
 8007c44:	29 a3 00 28 	lw r3,(r13+40)                                 
          newloc   = node->info.directory.mt_fs->mt_fs_root;          
          *pathloc = newloc;                                          
          return (*pathloc->ops->evalpath_h)( &pathname[i-len],       
 8007c48:	2b 82 00 64 	lw r2,(sp+100)                                 
                                                                      
        /*                                                            
         *  If we are at a node that is a mount point. Set loc to the 
         *  new fs root node and let them finish evaluating the path. 
         */                                                           
        if ( node->info.directory.mt_fs != NULL ) {                   
 8007c4c:	29 a7 00 20 	lw r7,(r13+32)                                 
 8007c50:	29 a6 00 24 	lw r6,(r13+36)                                 
 8007c54:	29 a4 00 2c 	lw r4,(r13+44)                                 
 8007c58:	29 a8 00 1c 	lw r8,(r13+28)                                 
 8007c5c:	e3 ff ff d1 	bi 8007ba0 <IMFS_eval_path+0x22c>              
                                                                      

08007e04 <IMFS_evaluate_for_make>: int IMFS_evaluate_for_make( const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) {
 8007e04:	37 9c ff 98 	addi sp,sp,-104                                
 8007e08:	5b 8b 00 40 	sw (sp+64),r11                                 
 8007e0c:	5b 8c 00 3c 	sw (sp+60),r12                                 
 8007e10:	5b 8d 00 38 	sw (sp+56),r13                                 
 8007e14:	5b 8e 00 34 	sw (sp+52),r14                                 
 8007e18:	5b 8f 00 30 	sw (sp+48),r15                                 
 8007e1c:	5b 90 00 2c 	sw (sp+44),r16                                 
 8007e20:	5b 91 00 28 	sw (sp+40),r17                                 
 8007e24:	5b 92 00 24 	sw (sp+36),r18                                 
 8007e28:	5b 93 00 20 	sw (sp+32),r19                                 
 8007e2c:	5b 94 00 1c 	sw (sp+28),r20                                 
 8007e30:	5b 95 00 18 	sw (sp+24),r21                                 
 8007e34:	5b 96 00 14 	sw (sp+20),r22                                 
 8007e38:	5b 97 00 10 	sw (sp+16),r23                                 
 8007e3c:	5b 98 00 0c 	sw (sp+12),r24                                 
 8007e40:	5b 99 00 08 	sw (sp+8),r25                                  
 8007e44:	5b 9d 00 04 	sw (sp+4),ra                                   
      case IMFS_UP_DIR:                                               
       /*                                                             
        *  Am I at the root of all filesystems? (chroot'ed?)          
	*/                                                                   
                                                                      
       if ( pathloc->node_access == rtems_filesystem_root.node_access )
 8007e48:	78 10 08 01 	mvhi r16,0x801                                 
int IMFS_evaluate_for_make(                                           
   const char                         *path,       /* IN     */       
   rtems_filesystem_location_info_t   *pathloc,    /* IN/OUT */       
   const char                        **name        /* OUT    */       
)                                                                     
{                                                                     
 8007e4c:	b8 40 68 00 	mv r13,r2                                      
                                                                      
  /*                                                                  
   * This was filled in by the caller and is valid in the             
   * mount table.                                                     
   */                                                                 
  node = pathloc->node_access;                                        
 8007e50:	28 4b 00 00 	lw r11,(r2+0)                                  
int IMFS_evaluate_for_make(                                           
   const char                         *path,       /* IN     */       
   rtems_filesystem_location_info_t   *pathloc,    /* IN/OUT */       
   const char                        **name        /* OUT    */       
)                                                                     
{                                                                     
 8007e54:	b8 20 90 00 	mv r18,r1                                      
 8007e58:	b8 60 c0 00 	mv r24,r3                                      
  node = pathloc->node_access;                                        
                                                                      
  /*                                                                  
   * Get the path length.                                             
   */                                                                 
  pathlen = strlen( path );                                           
 8007e5c:	f8 00 18 69 	calli 800e000 <strlen>                         
   const char                         *path,       /* IN     */       
   rtems_filesystem_location_info_t   *pathloc,    /* IN/OUT */       
   const char                        **name        /* OUT    */       
)                                                                     
{                                                                     
  int                                 i = 0;                          
 8007e60:	34 0f 00 00 	mvi r15,0                                      
  node = pathloc->node_access;                                        
                                                                      
  /*                                                                  
   * Get the path length.                                             
   */                                                                 
  pathlen = strlen( path );                                           
 8007e64:	b8 20 70 00 	mv r14,r1                                      
 8007e68:	37 93 00 44 	addi r19,sp,68                                 
    /*                                                                
     * I cannot move out of this directory without execute permission.
     */                                                               
                                                                      
    if ( type != IMFS_NO_MORE_PATH )                                  
      if ( node->type == IMFS_DIRECTORY )                             
 8007e6c:	34 15 00 01 	mvi r21,1                                      
        if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
           rtems_set_errno_and_return_minus_one( EACCES );            
                                                                      
    node = pathloc->node_access;                                      
                                                                      
    switch( type ) {                                                  
 8007e70:	34 14 00 02 	mvi r20,2                                      
      case IMFS_UP_DIR:                                               
       /*                                                             
        *  Am I at the root of all filesystems? (chroot'ed?)          
	*/                                                                   
                                                                      
       if ( pathloc->node_access == rtems_filesystem_root.node_access )
 8007e74:	3a 10 41 4c 	ori r16,r16,0x414c                             
        if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
           rtems_set_errno_and_return_minus_one( EACCES );            
                                                                      
    node = pathloc->node_access;                                      
                                                                      
    switch( type ) {                                                  
 8007e78:	34 16 00 03 	mvi r22,3                                      
                                                                      
          result = IMFS_evaluate_link( pathloc, 0 );                  
          if ( result == -1 )                                         
            return -1;                                                
                                                                      
	} else if ( node->type == IMFS_SYM_LINK ) {                          
 8007e7c:	34 17 00 04 	mvi r23,4                                      
                                                                      
          result = IMFS_evaluate_link( pathloc, 0 );                  
                                                                      
          if ( result == -1 )                                         
 8007e80:	34 19 ff ff 	mvi r25,-1                                     
   *  Evaluate all tokens until we are done or an error occurs.       
   */                                                                 
                                                                      
  while( !done ) {                                                    
                                                                      
    type = IMFS_get_token( &path[i], pathlen, token, &len );          
 8007e84:	b9 c0 10 00 	mv r2,r14                                      
 8007e88:	37 84 00 68 	addi r4,sp,104                                 
 8007e8c:	b6 4f 08 00 	add r1,r18,r15                                 
 8007e90:	ba 60 18 00 	mv r3,r19                                      
 8007e94:	f8 00 00 f4 	calli 8008264 <IMFS_get_token>                 
    pathlen -= len;                                                   
    i +=  len;                                                        
                                                                      
    if ( !pathloc->node_access )                                      
 8007e98:	29 a4 00 00 	lw r4,(r13+0)                                  
   */                                                                 
                                                                      
  while( !done ) {                                                    
                                                                      
    type = IMFS_get_token( &path[i], pathlen, token, &len );          
    pathlen -= len;                                                   
 8007e9c:	2b 91 00 68 	lw r17,(sp+104)                                
   *  Evaluate all tokens until we are done or an error occurs.       
   */                                                                 
                                                                      
  while( !done ) {                                                    
                                                                      
    type = IMFS_get_token( &path[i], pathlen, token, &len );          
 8007ea0:	b8 20 60 00 	mv r12,r1                                      
    pathlen -= len;                                                   
 8007ea4:	c9 d1 70 00 	sub r14,r14,r17                                
    i +=  len;                                                        
                                                                      
    if ( !pathloc->node_access )                                      
 8007ea8:	44 80 00 51 	be r4,r0,8007fec <IMFS_evaluate_for_make+0x1e8><== NEVER TAKEN
                                                                      
    /*                                                                
     * I cannot move out of this directory without execute permission.
     */                                                               
                                                                      
    if ( type != IMFS_NO_MORE_PATH )                                  
 8007eac:	5c 20 00 18 	bne r1,r0,8007f0c <IMFS_evaluate_for_make+0x108>
          pathloc->node_access = node;                                
                                                                      
        break;                                                        
                                                                      
      case IMFS_NO_MORE_PATH:                                         
        rtems_set_errno_and_return_minus_one( EEXIST );               
 8007eb0:	f8 00 13 b3 	calli 800cd7c <__errno>                        
 8007eb4:	34 02 00 11 	mvi r2,17                                      
 8007eb8:	58 22 00 00 	sw (r1+0),r2                                   
 8007ebc:	34 0b ff ff 	mvi r11,-1                                     
                                                                      
  if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )   
    rtems_set_errno_and_return_minus_one( EACCES );                   
                                                                      
  return result;                                                      
}                                                                     
 8007ec0:	b9 60 08 00 	mv r1,r11                                      
 8007ec4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007ec8:	2b 8b 00 40 	lw r11,(sp+64)                                 
 8007ecc:	2b 8c 00 3c 	lw r12,(sp+60)                                 
 8007ed0:	2b 8d 00 38 	lw r13,(sp+56)                                 
 8007ed4:	2b 8e 00 34 	lw r14,(sp+52)                                 
 8007ed8:	2b 8f 00 30 	lw r15,(sp+48)                                 
 8007edc:	2b 90 00 2c 	lw r16,(sp+44)                                 
 8007ee0:	2b 91 00 28 	lw r17,(sp+40)                                 
 8007ee4:	2b 92 00 24 	lw r18,(sp+36)                                 
 8007ee8:	2b 93 00 20 	lw r19,(sp+32)                                 
 8007eec:	2b 94 00 1c 	lw r20,(sp+28)                                 
 8007ef0:	2b 95 00 18 	lw r21,(sp+24)                                 
 8007ef4:	2b 96 00 14 	lw r22,(sp+20)                                 
 8007ef8:	2b 97 00 10 	lw r23,(sp+16)                                 
 8007efc:	2b 98 00 0c 	lw r24,(sp+12)                                 
 8007f00:	2b 99 00 08 	lw r25,(sp+8)                                  
 8007f04:	37 9c 00 68 	addi sp,sp,104                                 
 8007f08:	c3 a0 00 00 	ret                                            
    /*                                                                
     * I cannot move out of this directory without execute permission.
     */                                                               
                                                                      
    if ( type != IMFS_NO_MORE_PATH )                                  
      if ( node->type == IMFS_DIRECTORY )                             
 8007f0c:	29 61 00 4c 	lw r1,(r11+76)                                 
 8007f10:	44 35 00 3c 	be r1,r21,8008000 <IMFS_evaluate_for_make+0x1fc>
                                                                      
  while( !done ) {                                                    
                                                                      
    type = IMFS_get_token( &path[i], pathlen, token, &len );          
    pathlen -= len;                                                   
    i +=  len;                                                        
 8007f14:	b5 f1 78 00 	add r15,r15,r17                                
    if ( type != IMFS_NO_MORE_PATH )                                  
      if ( node->type == IMFS_DIRECTORY )                             
        if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
           rtems_set_errno_and_return_minus_one( EACCES );            
                                                                      
    node = pathloc->node_access;                                      
 8007f18:	b8 80 58 00 	mv r11,r4                                      
                                                                      
    switch( type ) {                                                  
 8007f1c:	45 94 00 1a 	be r12,r20,8007f84 <IMFS_evaluate_for_make+0x180>
 8007f20:	55 94 00 03 	bgu r12,r20,8007f2c <IMFS_evaluate_for_make+0x128>
 8007f24:	5d 80 ff d8 	bne r12,r0,8007e84 <IMFS_evaluate_for_make+0x80><== ALWAYS TAKEN
 8007f28:	e3 ff ff e2 	bi 8007eb0 <IMFS_evaluate_for_make+0xac>       <== NOT EXECUTED
 8007f2c:	45 96 00 07 	be r12,r22,8007f48 <IMFS_evaluate_for_make+0x144>
 8007f30:	5d 97 ff d5 	bne r12,r23,8007e84 <IMFS_evaluate_for_make+0x80><== NEVER TAKEN
      case IMFS_NO_MORE_PATH:                                         
        rtems_set_errno_and_return_minus_one( EEXIST );               
        break;                                                        
                                                                      
      case IMFS_INVALID_TOKEN:                                        
        rtems_set_errno_and_return_minus_one( ENAMETOOLONG );         
 8007f34:	f8 00 13 92 	calli 800cd7c <__errno>                        
 8007f38:	34 02 00 5b 	mvi r2,91                                      
 8007f3c:	58 22 00 00 	sw (r1+0),r2                                   
 8007f40:	34 0b ff ff 	mvi r11,-1                                     
 8007f44:	e3 ff ff df 	bi 8007ec0 <IMFS_evaluate_for_make+0xbc>       
        pathloc->node_access = node;                                  
        break;                                                        
                                                                      
      case IMFS_NAME:                                                 
                                                                      
	if ( node->type == IMFS_HARD_LINK ) {                                
 8007f48:	28 81 00 4c 	lw r1,(r4+76)                                  
 8007f4c:	44 36 00 46 	be r1,r22,8008064 <IMFS_evaluate_for_make+0x260>
                                                                      
          result = IMFS_evaluate_link( pathloc, 0 );                  
          if ( result == -1 )                                         
            return -1;                                                
                                                                      
	} else if ( node->type == IMFS_SYM_LINK ) {                          
 8007f50:	44 37 00 45 	be r1,r23,8008064 <IMFS_evaluate_for_make+0x260>
          if ( result == -1 )                                         
            return -1;                                                
	}                                                                    
                                                                      
        node = pathloc->node_access;                                  
        if ( !node )                                                  
 8007f54:	45 60 00 5b 	be r11,r0,80080c0 <IMFS_evaluate_for_make+0x2bc><== NEVER TAKEN
                                                                      
        /*                                                            
         * Only a directory can be decended into.                     
	 */                                                                  
                                                                      
        if ( node->type != IMFS_DIRECTORY )                           
 8007f58:	29 61 00 4c 	lw r1,(r11+76)                                 
 8007f5c:	5c 35 00 59 	bne r1,r21,80080c0 <IMFS_evaluate_for_make+0x2bc>
	/*                                                                   
	 * If we are at a node that is a mount point. Set loc to the         
	 * new fs root node and let them finish evaluating the path.         
	 */                                                                  
                                                                      
        if ( node->info.directory.mt_fs != NULL ) {                   
 8007f60:	29 6c 00 5c 	lw r12,(r11+92)                                
 8007f64:	5d 80 00 5c 	bne r12,r0,80080d4 <IMFS_evaluate_for_make+0x2d0>
                                                                      
	/*                                                                   
	 * Otherwise find the token name in the present location.            
	 */                                                                  
                                                                      
        node = IMFS_find_match_in_dir( node, token );                 
 8007f68:	b9 60 08 00 	mv r1,r11                                      
 8007f6c:	ba 60 10 00 	mv r2,r19                                      
 8007f70:	f8 00 00 97 	calli 80081cc <IMFS_find_match_in_dir>         
 8007f74:	b8 20 58 00 	mv r11,r1                                      
	/*                                                                   
	 * If there is no node we have found the name of the node we         
         * wish to create.                                            
	 */                                                                  
                                                                      
        if ( ! node )                                                 
 8007f78:	44 2c 00 0f 	be r1,r12,8007fb4 <IMFS_evaluate_for_make+0x1b0>
          done = true;                                                
        else                                                          
          pathloc->node_access = node;                                
 8007f7c:	59 ab 00 00 	sw (r13+0),r11                                 
 8007f80:	e3 ff ff c1 	bi 8007e84 <IMFS_evaluate_for_make+0x80>       
      case IMFS_UP_DIR:                                               
       /*                                                             
        *  Am I at the root of all filesystems? (chroot'ed?)          
	*/                                                                   
                                                                      
       if ( pathloc->node_access == rtems_filesystem_root.node_access )
 8007f84:	2a 01 00 00 	lw r1,(r16+0)                                  
 8007f88:	28 21 00 18 	lw r1,(r1+24)                                  
 8007f8c:	44 81 ff be 	be r4,r1,8007e84 <IMFS_evaluate_for_make+0x80> 
                                                                      
	/*                                                                   
	 * Am I at the root of this mounted filesystem?                      
	 */                                                                  
                                                                      
        if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){
 8007f90:	29 a1 00 10 	lw r1,(r13+16)                                 
 8007f94:	28 22 00 1c 	lw r2,(r1+28)                                  
 8007f98:	44 82 00 20 	be r4,r2,8008018 <IMFS_evaluate_for_make+0x214>
            *pathloc = newloc;                                        
            return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
	  }                                                                  
	} else {                                                             
                                                                      
          if ( !node->Parent )                                        
 8007f9c:	28 8b 00 08 	lw r11,(r4+8)                                  
 8007fa0:	5d 60 ff f7 	bne r11,r0,8007f7c <IMFS_evaluate_for_make+0x178>
            rtems_set_errno_and_return_minus_one( ENOENT );           
 8007fa4:	f8 00 13 76 	calli 800cd7c <__errno>                        
 8007fa8:	58 2c 00 00 	sw (r1+0),r12                                  
 8007fac:	34 0b ff ff 	mvi r11,-1                                     
 8007fb0:	e3 ff ff c4 	bi 8007ec0 <IMFS_evaluate_for_make+0xbc>       
      case IMFS_CURRENT_DIR:                                          
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  *name = &path[ i - len ];                                           
 8007fb4:	2b 81 00 68 	lw r1,(sp+104)                                 
  /*                                                                  
   * We have evaluated the path as far as we can.                     
   * Verify there is not any invalid stuff at the end of the name.    
   */                                                                 
                                                                      
  for( ; path[i] != '\0'; i++) {                                      
 8007fb8:	b6 4f 10 00 	add r2,r18,r15                                 
      case IMFS_CURRENT_DIR:                                          
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  *name = &path[ i - len ];                                           
 8007fbc:	c9 e1 78 00 	sub r15,r15,r1                                 
 8007fc0:	b6 4f 90 00 	add r18,r18,r15                                
 8007fc4:	5b 12 00 00 	sw (r24+0),r18                                 
  /*                                                                  
   * We have evaluated the path as far as we can.                     
   * Verify there is not any invalid stuff at the end of the name.    
   */                                                                 
                                                                      
  for( ; path[i] != '\0'; i++) {                                      
 8007fc8:	40 41 00 00 	lbu r1,(r2+0)                                  
 8007fcc:	44 2b 00 2d 	be r1,r11,8008080 <IMFS_evaluate_for_make+0x27c>
 8007fd0:	b8 40 58 00 	mv r11,r2                                      
 8007fd4:	e0 00 00 04 	bi 8007fe4 <IMFS_evaluate_for_make+0x1e0>      
 8007fd8:	41 61 00 01 	lbu r1,(r11+1)                                 
 8007fdc:	35 6b 00 01 	addi r11,r11,1                                 
 8007fe0:	44 20 00 28 	be r1,r0,8008080 <IMFS_evaluate_for_make+0x27c>
    if ( !IMFS_is_separator( path[ i ] ) )                            
 8007fe4:	fb ff e9 a3 	calli 8002670 <rtems_filesystem_is_separator>  
 8007fe8:	5c 20 ff fc 	bne r1,r0,8007fd8 <IMFS_evaluate_for_make+0x1d4>
      rtems_set_errno_and_return_minus_one( ENOENT );                 
 8007fec:	f8 00 13 64 	calli 800cd7c <__errno>                        
 8007ff0:	34 02 00 02 	mvi r2,2                                       
 8007ff4:	58 22 00 00 	sw (r1+0),r2                                   
 8007ff8:	34 0b ff ff 	mvi r11,-1                                     
 8007ffc:	e3 ff ff b1 	bi 8007ec0 <IMFS_evaluate_for_make+0xbc>       
     * I cannot move out of this directory without execute permission.
     */                                                               
                                                                      
    if ( type != IMFS_NO_MORE_PATH )                                  
      if ( node->type == IMFS_DIRECTORY )                             
        if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
 8008000:	b9 a0 08 00 	mv r1,r13                                      
 8008004:	34 02 00 01 	mvi r2,1                                       
 8008008:	fb ff fe 18 	calli 8007868 <IMFS_evaluate_permission>       
 800800c:	44 20 00 28 	be r1,r0,80080ac <IMFS_evaluate_for_make+0x2a8>
 8008010:	29 a4 00 00 	lw r4,(r13+0)                                  
 8008014:	e3 ff ff c0 	bi 8007f14 <IMFS_evaluate_for_make+0x110>      
                                                                      
	/*                                                                   
	 * Am I at the root of this mounted filesystem?                      
	 */                                                                  
                                                                      
        if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){
 8008018:	28 22 00 14 	lw r2,(r1+20)                                  
 800801c:	28 26 00 0c 	lw r6,(r1+12)                                  
 8008020:	28 25 00 10 	lw r5,(r1+16)                                  
 8008024:	28 23 00 18 	lw r3,(r1+24)                                  
 8008028:	28 27 00 08 	lw r7,(r1+8)                                   
	 */                                                                  
                                                                      
        if ( node->info.directory.mt_fs != NULL ) {                   
          newloc  = node->info.directory.mt_fs->mt_fs_root;           
          *pathloc = newloc;                                          
          return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
 800802c:	2b 81 00 68 	lw r1,(sp+104)                                 
 8008030:	28 44 00 04 	lw r4,(r2+4)                                   
	/*                                                                   
	 * If we are at a node that is a mount point. Set loc to the         
	 * new fs root node and let them finish evaluating the path.         
	 */                                                                  
                                                                      
        if ( node->info.directory.mt_fs != NULL ) {                   
 8008034:	59 a2 00 0c 	sw (r13+12),r2                                 
          newloc  = node->info.directory.mt_fs->mt_fs_root;           
          *pathloc = newloc;                                          
          return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
 8008038:	c9 e1 08 00 	sub r1,r15,r1                                  
	/*                                                                   
	 * If we are at a node that is a mount point. Set loc to the         
	 * new fs root node and let them finish evaluating the path.         
	 */                                                                  
                                                                      
        if ( node->info.directory.mt_fs != NULL ) {                   
 800803c:	59 a3 00 10 	sw (r13+16),r3                                 
 8008040:	59 a7 00 00 	sw (r13+0),r7                                  
 8008044:	59 a6 00 04 	sw (r13+4),r6                                  
 8008048:	59 a5 00 08 	sw (r13+8),r5                                  
          newloc  = node->info.directory.mt_fs->mt_fs_root;           
          *pathloc = newloc;                                          
          return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
 800804c:	b6 41 08 00 	add r1,r18,r1                                  
 8008050:	b9 a0 10 00 	mv r2,r13                                      
 8008054:	bb 00 18 00 	mv r3,r24                                      
 8008058:	d8 80 00 00 	call r4                                        
 800805c:	b8 20 58 00 	mv r11,r1                                      
 8008060:	e3 ff ff 98 	bi 8007ec0 <IMFS_evaluate_for_make+0xbc>       
          if ( result == -1 )                                         
            return -1;                                                
                                                                      
	} else if ( node->type == IMFS_SYM_LINK ) {                          
                                                                      
          result = IMFS_evaluate_link( pathloc, 0 );                  
 8008064:	b9 a0 08 00 	mv r1,r13                                      
 8008068:	34 02 00 00 	mvi r2,0                                       
 800806c:	fb ff ff 28 	calli 8007d0c <IMFS_evaluate_link>             
 8008070:	b8 20 58 00 	mv r11,r1                                      
                                                                      
          if ( result == -1 )                                         
 8008074:	44 39 ff 93 	be r1,r25,8007ec0 <IMFS_evaluate_for_make+0xbc><== NEVER TAKEN
 8008078:	29 ab 00 00 	lw r11,(r13+0)                                 
 800807c:	e3 ff ff b6 	bi 8007f54 <IMFS_evaluate_for_make+0x150>      
                                                                      
  /*                                                                  
   * Verify we can execute and write to this directory.               
   */                                                                 
                                                                      
  result = IMFS_Set_handlers( pathloc );                              
 8008080:	b9 a0 08 00 	mv r1,r13                                      
 8008084:	fb ff fd d6 	calli 80077dc <IMFS_Set_handlers>              
 8008088:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   * The returned node must be a directory                            
   */                                                                 
  node = pathloc->node_access;                                        
  if ( node->type != IMFS_DIRECTORY )                                 
 800808c:	29 a1 00 00 	lw r1,(r13+0)                                  
 8008090:	28 22 00 4c 	lw r2,(r1+76)                                  
 8008094:	34 01 00 01 	mvi r1,1                                       
 8008098:	5c 41 00 0a 	bne r2,r1,80080c0 <IMFS_evaluate_for_make+0x2bc><== NEVER TAKEN
                                                                      
  /*                                                                  
   * We must have Write and execute permission on the returned node.  
   */                                                                 
                                                                      
  if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )   
 800809c:	b9 a0 08 00 	mv r1,r13                                      
 80080a0:	34 02 00 03 	mvi r2,3                                       
 80080a4:	fb ff fd f1 	calli 8007868 <IMFS_evaluate_permission>       
 80080a8:	5c 20 ff 86 	bne r1,r0,8007ec0 <IMFS_evaluate_for_make+0xbc>
    rtems_set_errno_and_return_minus_one( EACCES );                   
 80080ac:	f8 00 13 34 	calli 800cd7c <__errno>                        
 80080b0:	34 02 00 0d 	mvi r2,13                                      
 80080b4:	58 22 00 00 	sw (r1+0),r2                                   
 80080b8:	34 0b ff ff 	mvi r11,-1                                     
 80080bc:	e3 ff ff 81 	bi 8007ec0 <IMFS_evaluate_for_make+0xbc>       
  /*                                                                  
   * The returned node must be a directory                            
   */                                                                 
  node = pathloc->node_access;                                        
  if ( node->type != IMFS_DIRECTORY )                                 
    rtems_set_errno_and_return_minus_one( ENOTDIR );                  
 80080c0:	f8 00 13 2f 	calli 800cd7c <__errno>                        
 80080c4:	34 02 00 14 	mvi r2,20                                      
 80080c8:	58 22 00 00 	sw (r1+0),r2                                   
 80080cc:	34 0b ff ff 	mvi r11,-1                                     
 80080d0:	e3 ff ff 7c 	bi 8007ec0 <IMFS_evaluate_for_make+0xbc>       
	/*                                                                   
	 * If we are at a node that is a mount point. Set loc to the         
	 * new fs root node and let them finish evaluating the path.         
	 */                                                                  
                                                                      
        if ( node->info.directory.mt_fs != NULL ) {                   
 80080d4:	29 82 00 28 	lw r2,(r12+40)                                 
 80080d8:	29 86 00 20 	lw r6,(r12+32)                                 
 80080dc:	29 85 00 24 	lw r5,(r12+36)                                 
 80080e0:	29 83 00 2c 	lw r3,(r12+44)                                 
 80080e4:	29 87 00 1c 	lw r7,(r12+28)                                 
 80080e8:	e3 ff ff d1 	bi 800802c <IMFS_evaluate_for_make+0x228>      
                                                                      

08007868 <IMFS_evaluate_permission>: */ int IMFS_evaluate_permission( rtems_filesystem_location_info_t *node, int flags ) {
 8007868:	37 9c ff f0 	addi sp,sp,-16                                 
 800786c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8007870:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8007874:	5b 8d 00 08 	sw (sp+8),r13                                  
 8007878:	5b 9d 00 04 	sw (sp+4),ra                                   
 800787c:	b8 40 60 00 	mv r12,r2                                      
  uid_t         st_uid;                                               
  gid_t         st_gid;                                               
  IMFS_jnode_t *jnode;                                                
  int           flags_to_test;                                        
                                                                      
  if ( !rtems_libio_is_valid_perms( flags ) )                         
 8007880:	34 02 ff f8 	mvi r2,-8                                      
 8007884:	a1 82 10 00 	and r2,r12,r2                                  
 8007888:	5c 40 00 1e 	bne r2,r0,8007900 <IMFS_evaluate_permission+0x98><== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EPERM );                    
                                                                      
  jnode = node->node_access;                                          
 800788c:	28 2b 00 00 	lw r11,(r1+0)                                  
                                                                      
#if defined(RTEMS_POSIX_API)                                          
  st_uid = geteuid();                                                 
 8007890:	f8 00 03 ba 	calli 8008778 <geteuid>                        
 8007894:	b8 20 68 00 	mv r13,r1                                      
  st_gid = getegid();                                                 
 8007898:	f8 00 03 b3 	calli 8008764 <getegid>                        
   * Check if I am owner or a group member or someone else.           
   */                                                                 
                                                                      
  flags_to_test = flags;                                              
                                                                      
  if ( st_uid == jnode->st_uid )                                      
 800789c:	2d 62 00 3c 	lhu r2,(r11+60)                                
 80078a0:	44 4d 00 0d 	be r2,r13,80078d4 <IMFS_evaluate_permission+0x6c>
    flags_to_test <<= 6;                                              
  else if ( st_gid == jnode->st_gid )                                 
 80078a4:	2d 63 00 3e 	lhu r3,(r11+62)                                
 80078a8:	b9 80 10 00 	mv r2,r12                                      
 80078ac:	44 61 00 11 	be r3,r1,80078f0 <IMFS_evaluate_permission+0x88><== ALWAYS TAKEN
                                                                      
  /*                                                                  
   * If all of the flags are set we have permission                   
   * to do this.                                                      
   */                                                                 
  if ( ( flags_to_test & jnode->st_mode) == flags_to_test )           
 80078b0:	29 61 00 30 	lw r1,(r11+48)                                 
 80078b4:	a0 41 08 00 	and r1,r2,r1                                   
  gid_t         st_gid;                                               
  IMFS_jnode_t *jnode;                                                
  int           flags_to_test;                                        
                                                                      
  if ( !rtems_libio_is_valid_perms( flags ) )                         
    rtems_set_errno_and_return_minus_one( EPERM );                    
 80078b8:	e4 41 08 00 	cmpe r1,r2,r1                                  
   */                                                                 
  if ( ( flags_to_test & jnode->st_mode) == flags_to_test )           
    return 1;                                                         
                                                                      
  return 0;                                                           
}                                                                     
 80078bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80078c0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80078c4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80078c8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80078cc:	37 9c 00 10 	addi sp,sp,16                                  
 80078d0:	c3 a0 00 00 	ret                                            
   */                                                                 
                                                                      
  flags_to_test = flags;                                              
                                                                      
  if ( st_uid == jnode->st_uid )                                      
    flags_to_test <<= 6;                                              
 80078d4:	b5 8c 10 00 	add r2,r12,r12                                 
 80078d8:	b4 42 10 00 	add r2,r2,r2                                   
 80078dc:	b4 42 10 00 	add r2,r2,r2                                   
 80078e0:	b4 42 10 00 	add r2,r2,r2                                   
 80078e4:	b4 42 10 00 	add r2,r2,r2                                   
 80078e8:	b4 42 10 00 	add r2,r2,r2                                   
 80078ec:	e3 ff ff f1 	bi 80078b0 <IMFS_evaluate_permission+0x48>     
  else if ( st_gid == jnode->st_gid )                                 
    flags_to_test <<= 3;                                              
 80078f0:	b5 8c 10 00 	add r2,r12,r12                                 
 80078f4:	b4 42 10 00 	add r2,r2,r2                                   
 80078f8:	b4 42 10 00 	add r2,r2,r2                                   
 80078fc:	e3 ff ff ed 	bi 80078b0 <IMFS_evaluate_permission+0x48>     
  gid_t         st_gid;                                               
  IMFS_jnode_t *jnode;                                                
  int           flags_to_test;                                        
                                                                      
  if ( !rtems_libio_is_valid_perms( flags ) )                         
    rtems_set_errno_and_return_minus_one( EPERM );                    
 8007900:	f8 00 15 1f 	calli 800cd7c <__errno>                        <== NOT EXECUTED
 8007904:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8007908:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 800790c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8007910:	e3 ff ff eb 	bi 80078bc <IMFS_evaluate_permission+0x54>     <== NOT EXECUTED
                                                                      

08002058 <IMFS_fifo_lseek>: rtems_off64_t IMFS_fifo_lseek( rtems_libio_t *iop, rtems_off64_t offset, int whence ) {
 8002058:	37 9c ff f8 	addi sp,sp,-8                                  
 800205c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8002060:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002064:	b8 20 28 00 	mv r5,r1                                       
  off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop);       
 8002068:	28 21 00 1c 	lw r1,(r1+28)                                  
 800206c:	b8 60 10 00 	mv r2,r3                                       
 8002070:	b8 80 18 00 	mv r3,r4                                       
 8002074:	28 21 00 50 	lw r1,(r1+80)                                  
 8002078:	b8 a0 20 00 	mv r4,r5                                       
 800207c:	f8 00 24 d2 	calli 800b3c4 <pipe_lseek>                     
 8002080:	b8 20 58 00 	mv r11,r1                                      
  IMFS_FIFO_RETURN(err);                                              
 8002084:	4c 20 00 07 	bge r1,r0,80020a0 <IMFS_fifo_lseek+0x48>       <== NEVER TAKEN
 8002088:	f8 00 35 85 	calli 800f69c <__errno>                        
 800208c:	c8 0b 58 00 	sub r11,r0,r11                                 
 8002090:	58 2b 00 00 	sw (r1+0),r11                                  
 8002094:	34 02 ff ff 	mvi r2,-1                                      
 8002098:	34 01 ff ff 	mvi r1,-1                                      
 800209c:	e0 00 00 04 	bi 80020ac <IMFS_fifo_lseek+0x54>              
 80020a0:	34 02 00 1f 	mvi r2,31                                      <== NOT EXECUTED
 80020a4:	f8 00 7b 66 	calli 8020e3c <__ashrsi3>                      <== NOT EXECUTED
 80020a8:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
}                                                                     
 80020ac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80020b0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80020b4:	37 9c 00 08 	addi sp,sp,8                                   
 80020b8:	c3 a0 00 00 	ret                                            
                                                                      

08002158 <IMFS_fifo_write>: ssize_t IMFS_fifo_write( rtems_libio_t *iop, const void *buffer, size_t count ) {
 8002158:	37 9c ff ec 	addi sp,sp,-20                                 
 800215c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8002160:	5b 8c 00 08 	sw (sp+8),r12                                  
 8002164:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_jnode_t *jnode = iop->pathinfo.node_access;                    
 8002168:	28 2b 00 1c 	lw r11,(r1+28)                                 
                                                                      
  int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);        
 800216c:	b8 20 20 00 	mv r4,r1                                       
 8002170:	29 61 00 50 	lw r1,(r11+80)                                 
 8002174:	f8 00 23 e3 	calli 800b100 <pipe_write>                     
 8002178:	b8 20 60 00 	mv r12,r1                                      
  if (err > 0) {                                                      
 800217c:	4c 01 00 0d 	bge r0,r1,80021b0 <IMFS_fifo_write+0x58>       
    IMFS_mtime_ctime_update(jnode);                                   
 8002180:	34 02 00 00 	mvi r2,0                                       
 8002184:	37 81 00 10 	addi r1,sp,16                                  
 8002188:	f8 00 05 29 	calli 800362c <gettimeofday>                   
 800218c:	2b 82 00 10 	lw r2,(sp+16)                                  
 8002190:	b9 80 08 00 	mv r1,r12                                      
 8002194:	59 62 00 44 	sw (r11+68),r2                                 
 8002198:	59 62 00 48 	sw (r11+72),r2                                 
  }                                                                   
                                                                      
  IMFS_FIFO_RETURN(err);                                              
}                                                                     
 800219c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80021a0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80021a4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80021a8:	37 9c 00 14 	addi sp,sp,20                                  
 80021ac:	c3 a0 00 00 	ret                                            
  int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);        
  if (err > 0) {                                                      
    IMFS_mtime_ctime_update(jnode);                                   
  }                                                                   
                                                                      
  IMFS_FIFO_RETURN(err);                                              
 80021b0:	34 01 00 00 	mvi r1,0                                       
 80021b4:	45 80 ff fa 	be r12,r0,800219c <IMFS_fifo_write+0x44>       <== NEVER TAKEN
 80021b8:	f8 00 35 39 	calli 800f69c <__errno>                        
 80021bc:	c8 0c 60 00 	sub r12,r0,r12                                 
 80021c0:	58 2c 00 00 	sw (r1+0),r12                                  
 80021c4:	34 01 ff ff 	mvi r1,-1                                      
 80021c8:	e3 ff ff f5 	bi 800219c <IMFS_fifo_write+0x44>              
                                                                      

080081cc <IMFS_find_match_in_dir>: IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) {
 80081cc:	37 9c ff f0 	addi sp,sp,-16                                 
 80081d0:	5b 8b 00 10 	sw (sp+16),r11                                 
 80081d4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80081d8:	5b 8d 00 08 	sw (sp+8),r13                                  
 80081dc:	5b 9d 00 04 	sw (sp+4),ra                                   
 80081e0:	b8 40 60 00 	mv r12,r2                                      
                                                                      
  /*                                                                  
   *  Check for "." and ".."                                          
   */                                                                 
                                                                      
  if ( !strcmp( name, dotname ) )                                     
 80081e4:	78 02 08 01 	mvhi r2,0x801                                  
                                                                      
IMFS_jnode_t *IMFS_find_match_in_dir(                                 
  IMFS_jnode_t *directory,                                            
  char         *name                                                  
)                                                                     
{                                                                     
 80081e8:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   *  Check for "." and ".."                                          
   */                                                                 
                                                                      
  if ( !strcmp( name, dotname ) )                                     
 80081ec:	38 42 37 60 	ori r2,r2,0x3760                               
 80081f0:	b9 80 08 00 	mv r1,r12                                      
 80081f4:	f8 00 17 0c 	calli 800de24 <strcmp>                         
 80081f8:	44 20 00 07 	be r1,r0,8008214 <IMFS_find_match_in_dir+0x48> <== NEVER TAKEN
    return directory;                                                 
                                                                      
  if ( !strcmp( name, dotdotname ) )                                  
 80081fc:	78 02 08 01 	mvhi r2,0x801                                  
 8008200:	b9 80 08 00 	mv r1,r12                                      
 8008204:	38 42 37 64 	ori r2,r2,0x3764                               
 8008208:	f8 00 17 07 	calli 800de24 <strcmp>                         
 800820c:	5c 20 00 09 	bne r1,r0,8008230 <IMFS_find_match_in_dir+0x64><== ALWAYS TAKEN
    return directory->Parent;                                         
 8008210:	29 6b 00 08 	lw r11,(r11+8)                                 <== NOT EXECUTED
    if ( !strcmp( name, the_jnode->name ) )                           
      return the_jnode;                                               
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8008214:	b9 60 08 00 	mv r1,r11                                      
 8008218:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800821c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8008220:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8008224:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8008228:	37 9c 00 10 	addi sp,sp,16                                  
 800822c:	c3 a0 00 00 	ret                                            
 8008230:	29 61 00 50 	lw r1,(r11+80)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  Chain_Control *the_chain,                                           
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Tail(the_chain));                        
 8008234:	35 6d 00 54 	addi r13,r11,84                                
                                                                      
    if ( !strcmp( name, the_jnode->name ) )                           
      return the_jnode;                                               
  }                                                                   
                                                                      
  return 0;                                                           
 8008238:	34 0b 00 00 	mvi r11,0                                      
  if ( !strcmp( name, dotdotname ) )                                  
    return directory->Parent;                                         
                                                                      
  the_chain = &directory->info.directory.Entries;                     
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
 800823c:	44 2d ff f6 	be r1,r13,8008214 <IMFS_find_match_in_dir+0x48>
 8008240:	b8 20 58 00 	mv r11,r1                                      
        !rtems_chain_is_tail( the_chain, the_node );                  
        the_node = the_node->next ) {                                 
                                                                      
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    if ( !strcmp( name, the_jnode->name ) )                           
 8008244:	35 62 00 0c 	addi r2,r11,12                                 
 8008248:	b9 80 08 00 	mv r1,r12                                      
 800824c:	f8 00 16 f6 	calli 800de24 <strcmp>                         
 8008250:	44 20 ff f1 	be r1,r0,8008214 <IMFS_find_match_in_dir+0x48> 
                                                                      
  the_chain = &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 ) {                                 
 8008254:	29 6b 00 00 	lw r11,(r11+0)                                 
  if ( !strcmp( name, dotdotname ) )                                  
    return directory->Parent;                                         
                                                                      
  the_chain = &directory->info.directory.Entries;                     
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
 8008258:	5d 6d ff fb 	bne r11,r13,8008244 <IMFS_find_match_in_dir+0x78>
                                                                      
    if ( !strcmp( name, the_jnode->name ) )                           
      return the_jnode;                                               
  }                                                                   
                                                                      
  return 0;                                                           
 800825c:	34 0b 00 00 	mvi r11,0                                      
 8008260:	e3 ff ff ed 	bi 8008214 <IMFS_find_match_in_dir+0x48>       
                                                                      

080080ec <IMFS_fsunmount>: ((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next)) int IMFS_fsunmount( rtems_filesystem_mount_table_entry_t *temp_mt_entry ) {
 80080ec:	37 9c ff d8 	addi sp,sp,-40                                 
 80080f0:	5b 8b 00 14 	sw (sp+20),r11                                 
 80080f4:	5b 8c 00 10 	sw (sp+16),r12                                 
 80080f8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80080fc:	5b 8e 00 08 	sw (sp+8),r14                                  
 8008100:	5b 9d 00 04 	sw (sp+4),ra                                   
   /*                                                                 
    * Traverse tree that starts at the mt_fs_root and deallocate memory
    * associated memory space                                         
    */                                                                
                                                                      
   jnode = (IMFS_jnode_t *)temp_mt_entry->mt_fs_root.node_access;     
 8008104:	28 2b 00 1c 	lw r11,(r1+28)                                 
   loc = temp_mt_entry->mt_fs_root;                                   
 8008108:	28 25 00 20 	lw r5,(r1+32)                                  
 800810c:	28 24 00 24 	lw r4,(r1+36)                                  
 8008110:	28 23 00 28 	lw r3,(r1+40)                                  
 8008114:	28 22 00 2c 	lw r2,(r1+44)                                  
 8008118:	5b 8b 00 18 	sw (sp+24),r11                                 
 800811c:	5b 85 00 1c 	sw (sp+28),r5                                  
 8008120:	5b 84 00 20 	sw (sp+32),r4                                  
 8008124:	5b 83 00 24 	sw (sp+36),r3                                  
 8008128:	5b 82 00 28 	sw (sp+40),r2                                  
                                                                      
   /*                                                                 
    *  Set this to null to indicate that it is being unmounted.       
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root.node_access = NULL;                      
 800812c:	58 20 00 1c 	sw (r1+28),r0                                  
 8008130:	37 8d 00 18 	addi r13,sp,24                                 
   do {                                                               
     next = jnode->Parent;                                            
     loc.node_access = (void *)jnode;                                 
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( jnode->type != IMFS_DIRECTORY ) {                           
 8008134:	34 0c 00 01 	mvi r12,1                                      
   temp_mt_entry->mt_fs_root.node_access = NULL;                      
                                                                      
   do {                                                               
     next = jnode->Parent;                                            
     loc.node_access = (void *)jnode;                                 
     IMFS_Set_handlers( &loc );                                       
 8008138:	b9 a0 08 00 	mv r1,r13                                      
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root.node_access = NULL;                      
                                                                      
   do {                                                               
     next = jnode->Parent;                                            
 800813c:	29 6e 00 08 	lw r14,(r11+8)                                 
     loc.node_access = (void *)jnode;                                 
 8008140:	5b 8b 00 18 	sw (sp+24),r11                                 
     IMFS_Set_handlers( &loc );                                       
 8008144:	fb ff fd a6 	calli 80077dc <IMFS_Set_handlers>              
                                                                      
     if ( jnode->type != IMFS_DIRECTORY ) {                           
 8008148:	29 61 00 4c 	lw r1,(r11+76)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800814c:	35 63 00 54 	addi r3,r11,84                                 
 8008150:	5c 2c 00 13 	bne r1,r12,800819c <IMFS_fsunmount+0xb0>       
        result = IMFS_unlink( NULL, &loc );                           
        if (result != 0)                                              
          return -1;                                                  
        jnode = next;                                                 
     } else if ( jnode_has_no_children( jnode ) ) {                   
 8008154:	29 61 00 50 	lw r1,(r11+80)                                 
 8008158:	44 23 00 17 	be r1,r3,80081b4 <IMFS_fsunmount+0xc8>         
        result = IMFS_unlink( NULL, &loc );                           
        if (result != 0)                                              
          return -1;                                                  
        jnode = next;                                                 
     }                                                                
     if ( jnode != NULL ) {                                           
 800815c:	45 60 00 08 	be r11,r0,800817c <IMFS_fsunmount+0x90>        
       if ( jnode->type == IMFS_DIRECTORY ) {                         
 8008160:	29 61 00 4c 	lw r1,(r11+76)                                 
 8008164:	5c 2c ff f5 	bne r1,r12,8008138 <IMFS_fsunmount+0x4c>       <== NEVER TAKEN
       }                                                              
     }                                                                
   } while (jnode != NULL);                                           
                                                                      
   return 0;                                                          
}                                                                     
 8008168:	29 61 00 50 	lw r1,(r11+80)                                 
 800816c:	35 62 00 54 	addi r2,r11,84                                 
          return -1;                                                  
        jnode = next;                                                 
     }                                                                
     if ( jnode != NULL ) {                                           
       if ( jnode->type == IMFS_DIRECTORY ) {                         
         if ( jnode_has_children( jnode ) )                           
 8008170:	44 22 ff f2 	be r1,r2,8008138 <IMFS_fsunmount+0x4c>         
           jnode = jnode_get_first_child( jnode );                    
 8008174:	b8 20 58 00 	mv r11,r1                                      
       }                                                              
     }                                                                
   } while (jnode != NULL);                                           
 8008178:	5c 20 ff f0 	bne r1,r0,8008138 <IMFS_fsunmount+0x4c>        <== ALWAYS TAKEN
                                                                      
   return 0;                                                          
 800817c:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8008180:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008184:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8008188:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800818c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8008190:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8008194:	37 9c 00 28 	addi sp,sp,40                                  
 8008198:	c3 a0 00 00 	ret                                            
     next = jnode->Parent;                                            
     loc.node_access = (void *)jnode;                                 
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( jnode->type != IMFS_DIRECTORY ) {                           
        result = IMFS_unlink( NULL, &loc );                           
 800819c:	b9 a0 10 00 	mv r2,r13                                      
 80081a0:	34 01 00 00 	mvi r1,0                                       
 80081a4:	fb ff e3 25 	calli 8000e38 <IMFS_unlink>                    
        if (result != 0)                                              
 80081a8:	5c 20 00 07 	bne r1,r0,80081c4 <IMFS_fsunmount+0xd8>        <== NEVER TAKEN
        jnode = next;                                                 
     } else if ( jnode_has_no_children( jnode ) ) {                   
        result = IMFS_unlink( NULL, &loc );                           
        if (result != 0)                                              
          return -1;                                                  
        jnode = next;                                                 
 80081ac:	b9 c0 58 00 	mv r11,r14                                     
 80081b0:	e3 ff ff eb 	bi 800815c <IMFS_fsunmount+0x70>               
        result = IMFS_unlink( NULL, &loc );                           
        if (result != 0)                                              
          return -1;                                                  
        jnode = next;                                                 
     } else if ( jnode_has_no_children( jnode ) ) {                   
        result = IMFS_unlink( NULL, &loc );                           
 80081b4:	34 01 00 00 	mvi r1,0                                       
 80081b8:	b9 a0 10 00 	mv r2,r13                                      
 80081bc:	fb ff e3 1f 	calli 8000e38 <IMFS_unlink>                    
        if (result != 0)                                              
 80081c0:	44 20 ff fb 	be r1,r0,80081ac <IMFS_fsunmount+0xc0>         <== ALWAYS TAKEN
          return -1;                                                  
 80081c4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80081c8:	e3 ff ff ee 	bi 8008180 <IMFS_fsunmount+0x94>               <== NOT EXECUTED
                                                                      

08008264 <IMFS_get_token>: const char *path, int pathlen, char *token, int *token_len ) {
 8008264:	37 9c ff e0 	addi sp,sp,-32                                 
 8008268:	5b 8b 00 20 	sw (sp+32),r11                                 
 800826c:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8008270:	5b 8d 00 18 	sw (sp+24),r13                                 
 8008274:	5b 8e 00 14 	sw (sp+20),r14                                 
 8008278:	5b 8f 00 10 	sw (sp+16),r15                                 
 800827c:	5b 90 00 0c 	sw (sp+12),r16                                 
 8008280:	5b 91 00 08 	sw (sp+8),r17                                  
 8008284:	5b 9d 00 04 	sw (sp+4),ra                                   
  register int i = 0;                                                 
 8008288:	34 0b 00 00 	mvi r11,0                                      
  const char       *path,                                             
  int               pathlen,                                          
  char             *token,                                            
  int              *token_len                                         
)                                                                     
{                                                                     
 800828c:	b8 20 78 00 	mv r15,r1                                      
 8008290:	b8 40 70 00 	mv r14,r2                                      
 8008294:	b8 60 68 00 	mv r13,r3                                      
 8008298:	b8 80 88 00 	mv r17,r4                                      
  register char c;                                                    
                                                                      
  /*                                                                  
   *  Copy a name into token.  (Remember NULL is a token.)            
   */                                                                 
  c = path[i];                                                        
 800829c:	40 2c 00 00 	lbu r12,(r1+0)                                 
  while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
                                                                      
     token[i] = c;                                                    
                                                                      
     if ( i == IMFS_NAME_MAX )                                        
 80082a0:	34 10 00 20 	mvi r16,32                                     
                                                                      
  /*                                                                  
   *  Copy a name into token.  (Remember NULL is a token.)            
   */                                                                 
  c = path[i];                                                        
  while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
 80082a4:	e0 00 00 07 	bi 80082c0 <IMFS_get_token+0x5c>               
 80082a8:	44 a1 00 0b 	be r5,r1,80082d4 <IMFS_get_token+0x70>         <== NEVER TAKEN
                                                                      
     token[i] = c;                                                    
 80082ac:	30 cc 00 00 	sb (r6+0),r12                                  
                                                                      
     if ( i == IMFS_NAME_MAX )                                        
 80082b0:	45 70 00 32 	be r11,r16,8008378 <IMFS_get_token+0x114>      
       return IMFS_INVALID_TOKEN;                                     
                                                                      
     if ( !IMFS_is_valid_name_char(c) )                               
       type = IMFS_INVALID_TOKEN;                                     
                                                                      
     c = path [++i];                                                  
 80082b4:	35 6b 00 01 	addi r11,r11,1                                 
#include <string.h>                                                   
                                                                      
#include "imfs.h"                                                     
#include <rtems/libio_.h>                                             
                                                                      
IMFS_token_types IMFS_get_token(                                      
 80082b8:	b5 eb 28 00 	add r5,r15,r11                                 
       return IMFS_INVALID_TOKEN;                                     
                                                                      
     if ( !IMFS_is_valid_name_char(c) )                               
       type = IMFS_INVALID_TOKEN;                                     
                                                                      
     c = path [++i];                                                  
 80082bc:	40 ac 00 00 	lbu r12,(r5+0)                                 
                                                                      
  /*                                                                  
   *  Copy a name into token.  (Remember NULL is a token.)            
   */                                                                 
  c = path[i];                                                        
  while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
 80082c0:	b9 80 08 00 	mv r1,r12                                      
 80082c4:	fb ff e8 eb 	calli 8002670 <rtems_filesystem_is_separator>  
 80082c8:	e9 cb 28 00 	cmpg r5,r14,r11                                
#include <string.h>                                                   
                                                                      
#include "imfs.h"                                                     
#include <rtems/libio_.h>                                             
                                                                      
IMFS_token_types IMFS_get_token(                                      
 80082cc:	b5 ab 30 00 	add r6,r13,r11                                 
                                                                      
  /*                                                                  
   *  Copy a name into token.  (Remember NULL is a token.)            
   */                                                                 
  c = path[i];                                                        
  while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
 80082d0:	44 20 ff f6 	be r1,r0,80082a8 <IMFS_get_token+0x44>         
                                                                      
  /*                                                                  
   *  Copy a seperator into token.                                    
   */                                                                 
                                                                      
  if ( i == 0 ) {                                                     
 80082d4:	5d 60 00 14 	bne r11,r0,8008324 <IMFS_get_token+0xc0>       
    token[i] = c;                                                     
                                                                      
    if ( (token[i] != '\0') && pathlen ) {                            
 80082d8:	7d 81 00 00 	cmpnei r1,r12,0                                
 80082dc:	7d ce 00 00 	cmpnei r14,r14,0                               
  /*                                                                  
   *  Copy a seperator into token.                                    
   */                                                                 
                                                                      
  if ( i == 0 ) {                                                     
    token[i] = c;                                                     
 80082e0:	31 ac 00 00 	sb (r13+0),r12                                 
                                                                      
    if ( (token[i] != '\0') && pathlen ) {                            
 80082e4:	a0 2e 70 00 	and r14,r1,r14                                 
 80082e8:	45 cb 00 26 	be r14,r11,8008380 <IMFS_get_token+0x11c>      
      i++;                                                            
 80082ec:	34 0b 00 01 	mvi r11,1                                      
      type = IMFS_CURRENT_DIR;                                        
 80082f0:	34 02 00 01 	mvi r2,1                                       
                                                                      
  /*                                                                  
   *  Set token_len to the number of characters copied.               
   */                                                                 
                                                                      
  *token_len = i;                                                     
 80082f4:	5a 2b 00 00 	sw (r17+0),r11                                 
    else if ( strcmp( token, "." ) == 0 )                             
      type = IMFS_CURRENT_DIR;                                        
  }                                                                   
                                                                      
  return type;                                                        
}                                                                     
 80082f8:	b8 40 08 00 	mv r1,r2                                       
 80082fc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008300:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8008304:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8008308:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800830c:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8008310:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8008314:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8008318:	2b 91 00 08 	lw r17,(sp+8)                                  
 800831c:	37 9c 00 20 	addi sp,sp,32                                  
 8008320:	c3 a0 00 00 	ret                                            
      i++;                                                            
      type = IMFS_CURRENT_DIR;                                        
    } else {                                                          
      type = IMFS_NO_MORE_PATH;                                       
    }                                                                 
  } else if (token[ i-1 ] != '\0') {                                  
 8008324:	b5 ab 08 00 	add r1,r13,r11                                 
 8008328:	40 22 ff ff 	lbu r2,(r1+-1)                                 
 800832c:	44 40 00 02 	be r2,r0,8008334 <IMFS_get_token+0xd0>         <== NEVER TAKEN
    token[i] = '\0';                                                  
 8008330:	30 20 00 00 	sb (r1+0),r0                                   
   *  If we copied something that was not a seperator see if          
   *  it was a special name.                                          
   */                                                                 
                                                                      
  if ( type == IMFS_NAME ) {                                          
    if ( strcmp( token, "..") == 0 )                                  
 8008334:	78 02 08 01 	mvhi r2,0x801                                  
 8008338:	38 42 37 6c 	ori r2,r2,0x376c                               
                                                                      
  /*                                                                  
   *  Set token_len to the number of characters copied.               
   */                                                                 
                                                                      
  *token_len = i;                                                     
 800833c:	5a 2b 00 00 	sw (r17+0),r11                                 
   *  If we copied something that was not a seperator see if          
   *  it was a special name.                                          
   */                                                                 
                                                                      
  if ( type == IMFS_NAME ) {                                          
    if ( strcmp( token, "..") == 0 )                                  
 8008340:	b9 a0 08 00 	mv r1,r13                                      
 8008344:	f8 00 16 b8 	calli 800de24 <strcmp>                         
      type = IMFS_UP_DIR;                                             
 8008348:	34 02 00 02 	mvi r2,2                                       
   *  If we copied something that was not a seperator see if          
   *  it was a special name.                                          
   */                                                                 
                                                                      
  if ( type == IMFS_NAME ) {                                          
    if ( strcmp( token, "..") == 0 )                                  
 800834c:	44 20 ff eb 	be r1,r0,80082f8 <IMFS_get_token+0x94>         
      type = IMFS_UP_DIR;                                             
    else if ( strcmp( token, "." ) == 0 )                             
 8008350:	78 02 08 01 	mvhi r2,0x801                                  
 8008354:	38 42 37 68 	ori r2,r2,0x3768                               
 8008358:	b9 a0 08 00 	mv r1,r13                                      
 800835c:	f8 00 16 b2 	calli 800de24 <strcmp>                         
 8008360:	64 21 00 00 	cmpei r1,r1,0                                  
 8008364:	34 02 ff fe 	mvi r2,-2                                      
 8008368:	c8 01 08 00 	sub r1,r0,r1                                   
 800836c:	a0 22 10 00 	and r2,r1,r2                                   
 8008370:	34 42 00 03 	addi r2,r2,3                                   
 8008374:	e3 ff ff e1 	bi 80082f8 <IMFS_get_token+0x94>               
  while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
                                                                      
     token[i] = c;                                                    
                                                                      
     if ( i == IMFS_NAME_MAX )                                        
       return IMFS_INVALID_TOKEN;                                     
 8008378:	34 02 00 04 	mvi r2,4                                       
 800837c:	e3 ff ff df 	bi 80082f8 <IMFS_get_token+0x94>               
                                                                      
    if ( (token[i] != '\0') && pathlen ) {                            
      i++;                                                            
      type = IMFS_CURRENT_DIR;                                        
    } else {                                                          
      type = IMFS_NO_MORE_PATH;                                       
 8008380:	34 02 00 00 	mvi r2,0                                       
                                                                      
  /*                                                                  
   *  Set token_len to the number of characters copied.               
   */                                                                 
                                                                      
  *token_len = i;                                                     
 8008384:	5a 2b 00 00 	sw (r17+0),r11                                 
 8008388:	e3 ff ff dc 	bi 80082f8 <IMFS_get_token+0x94>               
                                                                      

0800091c <IMFS_initialize_support>: const rtems_filesystem_operations_table *op_table, const rtems_filesystem_file_handlers_r *memfile_handlers, const rtems_filesystem_file_handlers_r *directory_handlers, const rtems_filesystem_file_handlers_r *fifo_handlers ) {
 800091c:	37 9c ff d8 	addi sp,sp,-40                                 
 8000920:	5b 8b 00 28 	sw (sp+40),r11                                 
 8000924:	5b 8c 00 24 	sw (sp+36),r12                                 
 8000928:	5b 8d 00 20 	sw (sp+32),r13                                 
 800092c:	5b 8e 00 1c 	sw (sp+28),r14                                 
 8000930:	5b 8f 00 18 	sw (sp+24),r15                                 
 8000934:	5b 90 00 14 	sw (sp+20),r16                                 
 8000938:	5b 91 00 10 	sw (sp+16),r17                                 
 800093c:	5b 92 00 0c 	sw (sp+12),r18                                 
 8000940:	5b 93 00 08 	sw (sp+8),r19                                  
 8000944:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_jnode_t                          *jnode;                       
                                                                      
  /*                                                                  
   * determine/check value for imfs_memfile_bytes_per_block           
   */                                                                 
  IMFS_determine_bytes_per_block(&imfs_memfile_bytes_per_block,       
 8000948:	78 06 08 01 	mvhi r6,0x801                                  
 800094c:	38 c6 40 14 	ori r6,r6,0x4014                               
 8000950:	28 c6 00 00 	lw r6,(r6+0)                                   
   const rtems_filesystem_operations_table    *op_table,              
   const rtems_filesystem_file_handlers_r     *memfile_handlers,      
   const rtems_filesystem_file_handlers_r     *directory_handlers,    
   const rtems_filesystem_file_handlers_r     *fifo_handlers          
)                                                                     
{                                                                     
 8000954:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   * check, whether requested bytes per block is valid                
   */                                                                 
  for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
    if (bit_mask == requested_bytes_per_block) {                      
 8000958:	34 01 00 10 	mvi r1,16                                      
   const rtems_filesystem_operations_table    *op_table,              
   const rtems_filesystem_file_handlers_r     *memfile_handlers,      
   const rtems_filesystem_file_handlers_r     *directory_handlers,    
   const rtems_filesystem_file_handlers_r     *fifo_handlers          
)                                                                     
{                                                                     
 800095c:	b8 40 80 00 	mv r16,r2                                      
 8000960:	b8 60 78 00 	mv r15,r3                                      
 8000964:	b8 80 68 00 	mv r13,r4                                      
 8000968:	b8 a0 70 00 	mv r14,r5                                      
                                                                      
  /*                                                                  
   * check, whether requested bytes per block is valid                
   */                                                                 
  for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
    if (bit_mask == requested_bytes_per_block) {                      
 800096c:	44 c1 00 0b 	be r6,r1,8000998 <IMFS_initialize_support+0x7c>
      is_valid = true;                                                
      break;                                                          
    }                                                                 
    if(bit_mask > requested_bytes_per_block)                          
 8000970:	34 01 00 0f 	mvi r1,15                                      
 8000974:	4c 26 00 08 	bge r1,r6,8000994 <IMFS_initialize_support+0x78>
 8000978:	34 07 00 05 	mvi r7,5                                       
 800097c:	34 01 00 20 	mvi r1,32                                      
  int bit_mask;                                                       
                                                                      
  /*                                                                  
   * check, whether requested bytes per block is valid                
   */                                                                 
  for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
 8000980:	34 e7 ff ff 	addi r7,r7,-1                                  
    if (bit_mask == requested_bytes_per_block) {                      
 8000984:	44 c1 00 05 	be r6,r1,8000998 <IMFS_initialize_support+0x7c>
      is_valid = true;                                                
      break;                                                          
    }                                                                 
    if(bit_mask > requested_bytes_per_block)                          
 8000988:	48 26 00 03 	bg r1,r6,8000994 <IMFS_initialize_support+0x78><== NEVER TAKEN
  int bit_mask;                                                       
                                                                      
  /*                                                                  
   * check, whether requested bytes per block is valid                
   */                                                                 
  for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
 800098c:	b4 21 08 00 	add r1,r1,r1                                   
 8000990:	5c e0 ff fc 	bne r7,r0,8000980 <IMFS_initialize_support+0x64><== ALWAYS TAKEN
    if(bit_mask > requested_bytes_per_block)                          
      break;                                                          
  }                                                                   
  *dest_bytes_per_block = ((is_valid)                                 
			   ? requested_bytes_per_block                                     
			   : default_bytes_per_block);                                     
 8000994:	34 06 00 80 	mvi r6,128                                     
      break;                                                          
    }                                                                 
    if(bit_mask > requested_bytes_per_block)                          
      break;                                                          
  }                                                                   
  *dest_bytes_per_block = ((is_valid)                                 
 8000998:	78 01 08 01 	mvhi r1,0x801                                  
 800099c:	38 21 47 08 	ori r1,r1,0x4708                               
 80009a0:	58 26 00 00 	sw (r1+0),r6                                   
  /*                                                                  
   *  Create the root node                                            
   *                                                                  
   *  NOTE: UNIX root is 755 and owned by root/root (0/0).            
   */                                                                 
  temp_mt_entry->mt_fs_root.node_access      = IMFS_create_root_node();
 80009a4:	f8 00 1b 7e 	calli 800779c <IMFS_create_root_node>          
  temp_mt_entry->mt_fs_root.handlers         = directory_handlers;    
  temp_mt_entry->mt_fs_root.ops              = op_table;              
  temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS;
 80009a8:	78 06 08 01 	mvhi r6,0x801                                  
 80009ac:	38 c6 37 10 	ori r6,r6,0x3710                               
 80009b0:	28 c2 00 28 	lw r2,(r6+40)                                  
  /*                                                                  
   *  Create the root node                                            
   *                                                                  
   *  NOTE: UNIX root is 755 and owned by root/root (0/0).            
   */                                                                 
  temp_mt_entry->mt_fs_root.node_access      = IMFS_create_root_node();
 80009b4:	b8 20 60 00 	mv r12,r1                                      
  temp_mt_entry->mt_fs_root.handlers         = directory_handlers;    
  temp_mt_entry->mt_fs_root.ops              = op_table;              
  temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS;
 80009b8:	28 d3 00 00 	lw r19,(r6+0)                                  
 80009bc:	28 c1 00 2c 	lw r1,(r6+44)                                  
 80009c0:	28 d2 00 04 	lw r18,(r6+4)                                  
 80009c4:	28 d1 00 08 	lw r17,(r6+8)                                  
 80009c8:	28 ca 00 0c 	lw r10,(r6+12)                                 
 80009cc:	28 c9 00 10 	lw r9,(r6+16)                                  
 80009d0:	28 c8 00 14 	lw r8,(r6+20)                                  
 80009d4:	28 c7 00 18 	lw r7,(r6+24)                                  
 80009d8:	28 c5 00 1c 	lw r5,(r6+28)                                  
 80009dc:	28 c4 00 20 	lw r4,(r6+32)                                  
 80009e0:	28 c3 00 24 	lw r3,(r6+36)                                  
 80009e4:	59 62 00 60 	sw (r11+96),r2                                 
 80009e8:	59 61 00 64 	sw (r11+100),r1                                
                                                                      
  /*                                                                  
   * Create custom file system data.                                  
   */                                                                 
  fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );                    
 80009ec:	34 02 00 14 	mvi r2,20                                      
  /*                                                                  
   *  Create the root node                                            
   *                                                                  
   *  NOTE: UNIX root is 755 and owned by root/root (0/0).            
   */                                                                 
  temp_mt_entry->mt_fs_root.node_access      = IMFS_create_root_node();
 80009f0:	59 6c 00 1c 	sw (r11+28),r12                                
  temp_mt_entry->mt_fs_root.handlers         = directory_handlers;    
 80009f4:	59 6d 00 24 	sw (r11+36),r13                                
  temp_mt_entry->mt_fs_root.ops              = op_table;              
 80009f8:	59 70 00 28 	sw (r11+40),r16                                
  temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS;
 80009fc:	59 73 00 38 	sw (r11+56),r19                                
 8000a00:	59 72 00 3c 	sw (r11+60),r18                                
 8000a04:	59 71 00 40 	sw (r11+64),r17                                
 8000a08:	59 6a 00 44 	sw (r11+68),r10                                
 8000a0c:	59 69 00 48 	sw (r11+72),r9                                 
 8000a10:	59 68 00 4c 	sw (r11+76),r8                                 
 8000a14:	59 67 00 50 	sw (r11+80),r7                                 
 8000a18:	59 65 00 54 	sw (r11+84),r5                                 
 8000a1c:	59 64 00 58 	sw (r11+88),r4                                 
 8000a20:	59 63 00 5c 	sw (r11+92),r3                                 
                                                                      
  /*                                                                  
   * Create custom file system data.                                  
   */                                                                 
  fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );                    
 8000a24:	34 01 00 01 	mvi r1,1                                       
 8000a28:	f8 00 02 08 	calli 8001248 <calloc>                         
 8000a2c:	b8 20 10 00 	mv r2,r1                                       
  if ( !fs_info ) {                                                   
 8000a30:	44 20 00 1b 	be r1,r0,8000a9c <IMFS_initialize_support+0x180>
                                                                      
  /*                                                                  
   * Set st_ino for the root to 1.                                    
   */                                                                 
                                                                      
  fs_info->instance              = imfs_instance++;                   
 8000a34:	78 06 08 01 	mvhi r6,0x801                                  
 8000a38:	38 c6 47 0c 	ori r6,r6,0x470c                               
 8000a3c:	28 c4 00 00 	lw r4,(r6+0)                                   
  fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );                    
  if ( !fs_info ) {                                                   
    free(temp_mt_entry->mt_fs_root.node_access);                      
    rtems_set_errno_and_return_minus_one(ENOMEM);                     
  }                                                                   
  temp_mt_entry->fs_info = fs_info;                                   
 8000a40:	59 62 00 34 	sw (r11+52),r2                                 
  /*                                                                  
   * Set st_ino for the root to 1.                                    
   */                                                                 
                                                                      
  fs_info->instance              = imfs_instance++;                   
  fs_info->ino_count             = 1;                                 
 8000a44:	34 01 00 01 	mvi r1,1                                       
                                                                      
  /*                                                                  
   * Set st_ino for the root to 1.                                    
   */                                                                 
                                                                      
  fs_info->instance              = imfs_instance++;                   
 8000a48:	58 44 00 00 	sw (r2+0),r4                                   
  fs_info->ino_count             = 1;                                 
 8000a4c:	58 41 00 04 	sw (r2+4),r1                                   
                                                                      
  /*                                                                  
   * Set st_ino for the root to 1.                                    
   */                                                                 
                                                                      
  fs_info->instance              = imfs_instance++;                   
 8000a50:	34 84 00 01 	addi r4,r4,1                                   
  fs_info->ino_count             = 1;                                 
  fs_info->memfile_handlers      = memfile_handlers;                  
 8000a54:	58 4f 00 08 	sw (r2+8),r15                                  
  fs_info->directory_handlers    = directory_handlers;                
 8000a58:	58 4d 00 0c 	sw (r2+12),r13                                 
  fs_info->fifo_handlers         = fifo_handlers;                     
 8000a5c:	58 4e 00 10 	sw (r2+16),r14                                 
                                                                      
  jnode = temp_mt_entry->mt_fs_root.node_access;                      
  jnode->st_ino = fs_info->ino_count;                                 
 8000a60:	59 81 00 38 	sw (r12+56),r1                                 
                                                                      
  /*                                                                  
   * Set st_ino for the root to 1.                                    
   */                                                                 
                                                                      
  fs_info->instance              = imfs_instance++;                   
 8000a64:	58 c4 00 00 	sw (r6+0),r4                                   
  fs_info->fifo_handlers         = fifo_handlers;                     
                                                                      
  jnode = temp_mt_entry->mt_fs_root.node_access;                      
  jnode->st_ino = fs_info->ino_count;                                 
                                                                      
  return 0;                                                           
 8000a68:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8000a6c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000a70:	2b 8b 00 28 	lw r11,(sp+40)                                 
 8000a74:	2b 8c 00 24 	lw r12,(sp+36)                                 
 8000a78:	2b 8d 00 20 	lw r13,(sp+32)                                 
 8000a7c:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 8000a80:	2b 8f 00 18 	lw r15,(sp+24)                                 
 8000a84:	2b 90 00 14 	lw r16,(sp+20)                                 
 8000a88:	2b 91 00 10 	lw r17,(sp+16)                                 
 8000a8c:	2b 92 00 0c 	lw r18,(sp+12)                                 
 8000a90:	2b 93 00 08 	lw r19,(sp+8)                                  
 8000a94:	37 9c 00 28 	addi sp,sp,40                                  
 8000a98:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * Create custom file system data.                                  
   */                                                                 
  fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );                    
  if ( !fs_info ) {                                                   
    free(temp_mt_entry->mt_fs_root.node_access);                      
 8000a9c:	b9 80 08 00 	mv r1,r12                                      
 8000aa0:	f8 00 02 82 	calli 80014a8 <free>                           
    rtems_set_errno_and_return_minus_one(ENOMEM);                     
 8000aa4:	f8 00 30 b6 	calli 800cd7c <__errno>                        
 8000aa8:	34 02 00 0c 	mvi r2,12                                      
 8000aac:	58 22 00 00 	sw (r1+0),r2                                   
 8000ab0:	34 01 ff ff 	mvi r1,-1                                      
 8000ab4:	e3 ff ff ee 	bi 8000a6c <IMFS_initialize_support+0x150>     
                                                                      

0800b3d8 <IMFS_memfile_extend>: */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) {
 800b3d8:	37 9c ff e0 	addi sp,sp,-32                                 
 800b3dc:	5b 8b 00 20 	sw (sp+32),r11                                 
 800b3e0:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800b3e4:	5b 8d 00 18 	sw (sp+24),r13                                 
 800b3e8:	5b 8e 00 14 	sw (sp+20),r14                                 
 800b3ec:	5b 8f 00 10 	sw (sp+16),r15                                 
 800b3f0:	5b 90 00 0c 	sw (sp+12),r16                                 
 800b3f4:	5b 91 00 08 	sw (sp+8),r17                                  
 800b3f8:	5b 9d 00 04 	sw (sp+4),ra                                   
    IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );               
                                                                      
  /*                                                                  
   *  Verify new file size is supported                               
   */                                                                 
  if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )                      
 800b3fc:	78 03 08 01 	mvhi r3,0x801                                  
 800b400:	38 63 47 08 	ori r3,r3,0x4708                               
 800b404:	28 6d 00 00 	lw r13,(r3+0)                                  
 */                                                                   
MEMFILE_STATIC int IMFS_memfile_extend(                               
   IMFS_jnode_t  *the_jnode,                                          
   off_t          new_length                                          
)                                                                     
{                                                                     
 800b408:	b8 40 78 00 	mv r15,r2                                      
 800b40c:	b8 20 60 00 	mv r12,r1                                      
    IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );               
                                                                      
  /*                                                                  
   *  Verify new file size is supported                               
   */                                                                 
  if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )                      
 800b410:	01 ab 00 01 	srui r11,r13,1                                 
 800b414:	01 6b 00 01 	srui r11,r11,1                                 
 800b418:	b9 60 10 00 	mv r2,r11                                      
 800b41c:	35 61 00 01 	addi r1,r11,1                                  
 800b420:	f8 00 1b ba 	calli 8012308 <__mulsi3>                       
 800b424:	b9 60 10 00 	mv r2,r11                                      
 800b428:	34 21 00 01 	addi r1,r1,1                                   
 800b42c:	f8 00 1b b7 	calli 8012308 <__mulsi3>                       
 800b430:	34 21 ff ff 	addi r1,r1,-1                                  
 800b434:	b9 a0 10 00 	mv r2,r13                                      
 800b438:	f8 00 1b b4 	calli 8012308 <__mulsi3>                       
 800b43c:	54 2f 00 06 	bgu r1,r15,800b454 <IMFS_memfile_extend+0x7c>  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 800b440:	f8 00 06 4f 	calli 800cd7c <__errno>                        
 800b444:	34 02 00 16 	mvi r2,22                                      
 800b448:	58 22 00 00 	sw (r1+0),r2                                   
 800b44c:	34 01 ff ff 	mvi r1,-1                                      
 800b450:	e0 00 00 2e 	bi 800b508 <IMFS_memfile_extend+0x130>         
                                                                      
  /*                                                                  
   *  Verify new file size is actually larger than current size       
   */                                                                 
  if ( new_length <= the_jnode->info.file.size )                      
 800b454:	b9 e0 08 00 	mv r1,r15                                      
 800b458:	34 02 00 1f 	mvi r2,31                                      
 800b45c:	f8 00 1b 5d 	calli 80121d0 <__ashrsi3>                      
 800b460:	29 8b 00 50 	lw r11,(r12+80)                                
 800b464:	b8 20 80 00 	mv r16,r1                                      
 800b468:	29 91 00 54 	lw r17,(r12+84)                                
 800b46c:	48 2b 00 05 	bg r1,r11,800b480 <IMFS_memfile_extend+0xa8>   <== NEVER TAKEN
 800b470:	5c 2b 00 02 	bne r1,r11,800b478 <IMFS_memfile_extend+0xa0>  <== NEVER TAKEN
 800b474:	55 f1 00 03 	bgu r15,r17,800b480 <IMFS_memfile_extend+0xa8> 
    return 0;                                                         
 800b478:	34 01 00 00 	mvi r1,0                                       
 800b47c:	e0 00 00 23 	bi 800b508 <IMFS_memfile_extend+0x130>         
                                                                      
  /*                                                                  
   *  Calculate the number of range of blocks to allocate             
   */                                                                 
  new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK;             
 800b480:	b9 a0 10 00 	mv r2,r13                                      
 800b484:	b9 e0 08 00 	mv r1,r15                                      
 800b488:	f8 00 1b ac 	calli 8012338 <__divsi3>                       
  old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
 800b48c:	34 02 00 1f 	mvi r2,31                                      
    return 0;                                                         
                                                                      
  /*                                                                  
   *  Calculate the number of range of blocks to allocate             
   */                                                                 
  new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK;             
 800b490:	b8 20 70 00 	mv r14,r1                                      
  old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
 800b494:	b9 a0 08 00 	mv r1,r13                                      
 800b498:	f8 00 1b 4e 	calli 80121d0 <__ashrsi3>                      
 800b49c:	b8 20 18 00 	mv r3,r1                                       
 800b4a0:	b9 a0 20 00 	mv r4,r13                                      
 800b4a4:	b9 60 08 00 	mv r1,r11                                      
 800b4a8:	ba 20 10 00 	mv r2,r17                                      
 800b4ac:	f8 00 15 57 	calli 8010a08 <__divdi3>                       
 800b4b0:	b8 40 68 00 	mv r13,r2                                      
                                                                      
  /*                                                                  
   *  Now allocate each of those blocks.                              
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
 800b4b4:	54 4e 00 08 	bgu r2,r14,800b4d4 <IMFS_memfile_extend+0xfc>  <== NEVER TAKEN
 800b4b8:	b8 40 58 00 	mv r11,r2                                      
    if ( IMFS_memfile_addblock( the_jnode, block ) ) {                
 800b4bc:	b9 60 10 00 	mv r2,r11                                      
 800b4c0:	b9 80 08 00 	mv r1,r12                                      
 800b4c4:	fb ff ff 0f 	calli 800b100 <IMFS_memfile_addblock>          
 800b4c8:	5c 20 00 0b 	bne r1,r0,800b4f4 <IMFS_memfile_extend+0x11c>  
  old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
                                                                      
  /*                                                                  
   *  Now allocate each of those blocks.                              
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
 800b4cc:	35 6b 00 01 	addi r11,r11,1                                 
 800b4d0:	51 cb ff fb 	bgeu r14,r11,800b4bc <IMFS_memfile_extend+0xe4>
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new length of the file.                                 
   */                                                                 
  the_jnode->info.file.size = new_length;                             
 800b4d4:	59 90 00 50 	sw (r12+80),r16                                
 800b4d8:	59 8f 00 54 	sw (r12+84),r15                                
  return 0;                                                           
 800b4dc:	34 01 00 00 	mvi r1,0                                       
 800b4e0:	e0 00 00 0a 	bi 800b508 <IMFS_memfile_extend+0x130>         
   *  Now allocate each of those blocks.                              
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
    if ( IMFS_memfile_addblock( the_jnode, block ) ) {                
       for ( ; block>=old_blocks ; block-- ) {                        
         IMFS_memfile_remove_block( the_jnode, block );               
 800b4e4:	b9 60 10 00 	mv r2,r11                                      
 800b4e8:	b9 80 08 00 	mv r1,r12                                      
  /*                                                                  
   *  Now allocate each of those blocks.                              
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
    if ( IMFS_memfile_addblock( the_jnode, block ) ) {                
       for ( ; block>=old_blocks ; block-- ) {                        
 800b4ec:	35 6b ff ff 	addi r11,r11,-1                                
         IMFS_memfile_remove_block( the_jnode, block );               
 800b4f0:	fb ff ff ae 	calli 800b3a8 <IMFS_memfile_remove_block>      
  /*                                                                  
   *  Now allocate each of those blocks.                              
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
    if ( IMFS_memfile_addblock( the_jnode, block ) ) {                
       for ( ; block>=old_blocks ; block-- ) {                        
 800b4f4:	51 6d ff fc 	bgeu r11,r13,800b4e4 <IMFS_memfile_extend+0x10c>
         IMFS_memfile_remove_block( the_jnode, block );               
       }                                                              
       rtems_set_errno_and_return_minus_one( ENOSPC );                
 800b4f8:	f8 00 06 21 	calli 800cd7c <__errno>                        
 800b4fc:	34 02 00 1c 	mvi r2,28                                      
 800b500:	58 22 00 00 	sw (r1+0),r2                                   
 800b504:	34 01 ff ff 	mvi r1,-1                                      
  /*                                                                  
   *  Set the new length of the file.                                 
   */                                                                 
  the_jnode->info.file.size = new_length;                             
  return 0;                                                           
}                                                                     
 800b508:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b50c:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800b510:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 800b514:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800b518:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800b51c:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800b520:	2b 90 00 0c 	lw r16,(sp+12)                                 
 800b524:	2b 91 00 08 	lw r17,(sp+8)                                  
 800b528:	37 9c 00 20 	addi sp,sp,32                                  
 800b52c:	c3 a0 00 00 	ret                                            
                                                                      

0800ac38 <IMFS_memfile_get_block_pointer>: #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) {
 800ac38:	37 9c ff dc 	addi sp,sp,-36                                 
 800ac3c:	5b 8b 00 20 	sw (sp+32),r11                                 
 800ac40:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800ac44:	5b 8d 00 18 	sw (sp+24),r13                                 
 800ac48:	5b 8e 00 14 	sw (sp+20),r14                                 
 800ac4c:	5b 8f 00 10 	sw (sp+16),r15                                 
 800ac50:	5b 90 00 0c 	sw (sp+12),r16                                 
 800ac54:	5b 91 00 08 	sw (sp+8),r17                                  
 800ac58:	5b 9d 00 04 	sw (sp+4),ra                                   
  my_block = block;                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the simple indirect portion?             
   */                                                                 
  if ( my_block <= LAST_INDIRECT ) {                                  
 800ac5c:	78 04 08 01 	mvhi r4,0x801                                  
 800ac60:	38 84 47 08 	ori r4,r4,0x4708                               
 800ac64:	28 8b 00 00 	lw r11,(r4+0)                                  
#endif                                                                
   IMFS_jnode_t   *the_jnode,                                         
   unsigned int    block,                                             
   int             malloc_it                                          
)                                                                     
{                                                                     
 800ac68:	b8 20 70 00 	mv r14,r1                                      
 800ac6c:	b8 40 60 00 	mv r12,r2                                      
  my_block = block;                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the simple indirect portion?             
   */                                                                 
  if ( my_block <= LAST_INDIRECT ) {                                  
 800ac70:	01 6b 00 01 	srui r11,r11,1                                 
#endif                                                                
   IMFS_jnode_t   *the_jnode,                                         
   unsigned int    block,                                             
   int             malloc_it                                          
)                                                                     
{                                                                     
 800ac74:	b8 60 78 00 	mv r15,r3                                      
  my_block = block;                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the simple indirect portion?             
   */                                                                 
  if ( my_block <= LAST_INDIRECT ) {                                  
 800ac78:	01 6b 00 01 	srui r11,r11,1                                 
 800ac7c:	35 61 ff ff 	addi r1,r11,-1                                 
 800ac80:	54 41 00 08 	bgu r2,r1,800aca0 <IMFS_memfile_get_block_pointer+0x68>
    p = info->indirect;                                               
 800ac84:	29 cb 00 58 	lw r11,(r14+88)                                
                                                                      
    if ( malloc_it ) {                                                
 800ac88:	44 60 00 2b 	be r3,r0,800ad34 <IMFS_memfile_get_block_pointer+0xfc>
                                                                      
      if ( !p ) {                                                     
 800ac8c:	45 60 00 5f 	be r11,r0,800ae08 <IMFS_memfile_get_block_pointer+0x1d0>
    }                                                                 
                                                                      
    if ( !p )                                                         
      return 0;                                                       
                                                                      
    return &info->indirect[ my_block ];                               
 800ac90:	b5 8c 60 00 	add r12,r12,r12                                
 800ac94:	b5 8c 60 00 	add r12,r12,r12                                
 800ac98:	b5 6c 68 00 	add r13,r11,r12                                
 800ac9c:	e0 00 00 1b 	bi 800ad08 <IMFS_memfile_get_block_pointer+0xd0>
                                                                      
  /*                                                                  
   *  Is the block number in the doubly indirect portion?             
   */                                                                 
                                                                      
  if ( my_block <= LAST_DOUBLY_INDIRECT ) {                           
 800aca0:	35 61 00 01 	addi r1,r11,1                                  
 800aca4:	b9 60 10 00 	mv r2,r11                                      
 800aca8:	f8 00 1d 98 	calli 8012308 <__mulsi3>                       
 800acac:	b8 20 80 00 	mv r16,r1                                      
 800acb0:	34 21 ff ff 	addi r1,r1,-1                                  
 800acb4:	55 81 00 23 	bgu r12,r1,800ad40 <IMFS_memfile_get_block_pointer+0x108>
    my_block -= FIRST_DOUBLY_INDIRECT;                                
 800acb8:	c9 8b 60 00 	sub r12,r12,r11                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
 800acbc:	b9 60 10 00 	mv r2,r11                                      
 800acc0:	b9 80 08 00 	mv r1,r12                                      
 800acc4:	f8 00 1e 06 	calli 80124dc <__umodsi3>                      
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
 800acc8:	b9 60 10 00 	mv r2,r11                                      
   */                                                                 
                                                                      
  if ( my_block <= LAST_DOUBLY_INDIRECT ) {                           
    my_block -= FIRST_DOUBLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
 800accc:	b8 20 80 00 	mv r16,r1                                      
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
 800acd0:	b9 80 08 00 	mv r1,r12                                      
 800acd4:	f8 00 1d f2 	calli 801249c <__udivsi3>                      
 800acd8:	b8 20 10 00 	mv r2,r1                                       
                                                                      
    p = info->doubly_indirect;                                        
 800acdc:	29 c3 00 5c 	lw r3,(r14+92)                                 
    if ( malloc_it ) {                                                
 800ace0:	45 e0 00 3f 	be r15,r0,800addc <IMFS_memfile_get_block_pointer+0x1a4>
                                                                      
      if ( !p ) {                                                     
 800ace4:	44 60 00 4f 	be r3,r0,800ae20 <IMFS_memfile_get_block_pointer+0x1e8>
        if ( !p )                                                     
           return 0;                                                  
        info->doubly_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *)p[ doubly ];                                    
 800ace8:	b4 42 10 00 	add r2,r2,r2                                   
 800acec:	b4 42 10 00 	add r2,r2,r2                                   
 800acf0:	b4 62 10 00 	add r2,r3,r2                                   
 800acf4:	28 41 00 00 	lw r1,(r2+0)                                   
      if ( !p1 ) {                                                    
 800acf8:	44 20 00 52 	be r1,r0,800ae40 <IMFS_memfile_get_block_pointer+0x208>
        if ( !p1 )                                                    
           return 0;                                                  
        p[ doubly ] = (block_p) p1;                                   
      }                                                               
                                                                      
      return (block_p *)&p1[ singly ];                                
 800acfc:	b6 10 68 00 	add r13,r16,r16                                
 800ad00:	b5 ad 68 00 	add r13,r13,r13                                
 800ad04:	b4 2d 68 00 	add r13,r1,r13                                 
                                                                      
  /*                                                                  
   *  This means the requested block number is out of range.          
   */                                                                 
  return 0;                                                           
}                                                                     
 800ad08:	b9 a0 08 00 	mv r1,r13                                      
 800ad0c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ad10:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800ad14:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 800ad18:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800ad1c:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800ad20:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800ad24:	2b 90 00 0c 	lw r16,(sp+12)                                 
 800ad28:	2b 91 00 08 	lw r17,(sp+8)                                  
 800ad2c:	37 9c 00 24 	addi sp,sp,36                                  
 800ad30:	c3 a0 00 00 	ret                                            
      }                                                               
      return &info->indirect[ my_block ];                             
    }                                                                 
                                                                      
    if ( !p )                                                         
      return 0;                                                       
 800ad34:	34 0d 00 00 	mvi r13,0                                      
        info->indirect = p;                                           
      }                                                               
      return &info->indirect[ my_block ];                             
    }                                                                 
                                                                      
    if ( !p )                                                         
 800ad38:	5d 6d ff d6 	bne r11,r13,800ac90 <IMFS_memfile_get_block_pointer+0x58><== ALWAYS TAKEN
 800ad3c:	e3 ff ff f3 	bi 800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the triply indirect portion?             
   */                                                                 
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
 800ad40:	36 01 00 01 	addi r1,r16,1                                  
 800ad44:	b9 60 10 00 	mv r2,r11                                      
 800ad48:	f8 00 1d 70 	calli 8012308 <__mulsi3>                       
 800ad4c:	34 21 ff ff 	addi r1,r1,-1                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  This means the requested block number is out of range.          
   */                                                                 
  return 0;                                                           
 800ad50:	34 0d 00 00 	mvi r13,0                                      
  }                                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the triply indirect portion?             
   */                                                                 
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
 800ad54:	55 81 ff ed 	bgu r12,r1,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
    my_block -= FIRST_TRIPLY_INDIRECT;                                
 800ad58:	c9 90 80 00 	sub r16,r12,r16                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
 800ad5c:	b9 60 10 00 	mv r2,r11                                      
 800ad60:	ba 00 08 00 	mv r1,r16                                      
 800ad64:	f8 00 1d de 	calli 80124dc <__umodsi3>                      
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
 800ad68:	b9 60 10 00 	mv r2,r11                                      
   *  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;                     
 800ad6c:	b8 20 60 00 	mv r12,r1                                      
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
 800ad70:	ba 00 08 00 	mv r1,r16                                      
 800ad74:	f8 00 1d ca 	calli 801249c <__udivsi3>                      
    triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;                       
 800ad78:	b9 60 10 00 	mv r2,r11                                      
   */                                                                 
  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;                     
 800ad7c:	b8 20 88 00 	mv r17,r1                                      
    triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;                       
 800ad80:	f8 00 1d c7 	calli 801249c <__udivsi3>                      
    doubly %= IMFS_MEMFILE_BLOCK_SLOTS;                               
 800ad84:	b9 60 10 00 	mv r2,r11                                      
  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;                       
 800ad88:	b8 20 80 00 	mv r16,r1                                      
    doubly %= IMFS_MEMFILE_BLOCK_SLOTS;                               
 800ad8c:	ba 20 08 00 	mv r1,r17                                      
 800ad90:	f8 00 1d d3 	calli 80124dc <__umodsi3>                      
 800ad94:	b8 20 58 00 	mv r11,r1                                      
                                                                      
    p = info->triply_indirect;                                        
 800ad98:	29 c4 00 60 	lw r4,(r14+96)                                 
                                                                      
    if ( malloc_it ) {                                                
 800ad9c:	45 e0 00 30 	be r15,r0,800ae5c <IMFS_memfile_get_block_pointer+0x224>
      if ( !p ) {                                                     
 800ada0:	44 80 00 3e 	be r4,r0,800ae98 <IMFS_memfile_get_block_pointer+0x260>
        if ( !p )                                                     
           return 0;                                                  
        info->triply_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *) p[ triply ];                                   
 800ada4:	b6 10 18 00 	add r3,r16,r16                                 
 800ada8:	b4 63 18 00 	add r3,r3,r3                                   
 800adac:	b4 83 70 00 	add r14,r4,r3                                  
 800adb0:	29 c1 00 00 	lw r1,(r14+0)                                  
      if ( !p1 ) {                                                    
 800adb4:	44 20 00 43 	be r1,r0,800aec0 <IMFS_memfile_get_block_pointer+0x288>
        if ( !p1 )                                                    
           return 0;                                                  
        p[ triply ] = (block_p) p1;                                   
      }                                                               
                                                                      
      p2 = (block_p *)p1[ doubly ];                                   
 800adb8:	b5 6b 10 00 	add r2,r11,r11                                 
 800adbc:	b4 42 10 00 	add r2,r2,r2                                   
 800adc0:	b4 22 58 00 	add r11,r1,r2                                  
 800adc4:	29 61 00 00 	lw r1,(r11+0)                                  
      if ( !p2 ) {                                                    
 800adc8:	44 20 00 39 	be r1,r0,800aeac <IMFS_memfile_get_block_pointer+0x274>
        p2 = memfile_alloc_block();                                   
        if ( !p2 )                                                    
           return 0;                                                  
        p1[ doubly ] = (block_p) p2;                                  
      }                                                               
      return (block_p *)&p2[ singly ];                                
 800adcc:	b5 8c 68 00 	add r13,r12,r12                                
 800add0:	b5 ad 68 00 	add r13,r13,r13                                
 800add4:	b4 2d 68 00 	add r13,r1,r13                                 
 800add8:	e3 ff ff cc 	bi 800ad08 <IMFS_memfile_get_block_pointer+0xd0>
                                                                      
      return (block_p *)&p1[ singly ];                                
    }                                                                 
                                                                      
    if ( !p )                                                         
      return 0;                                                       
 800addc:	34 0d 00 00 	mvi r13,0                                      
      }                                                               
                                                                      
      return (block_p *)&p1[ singly ];                                
    }                                                                 
                                                                      
    if ( !p )                                                         
 800ade0:	44 6d ff ca 	be r3,r13,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
      return 0;                                                       
                                                                      
    p = (block_p *)p[ doubly ];                                       
 800ade4:	b4 21 10 00 	add r2,r1,r1                                   
 800ade8:	b4 42 10 00 	add r2,r2,r2                                   
 800adec:	b4 62 10 00 	add r2,r3,r2                                   
 800adf0:	28 41 00 00 	lw r1,(r2+0)                                   
    if ( !p )                                                         
 800adf4:	44 20 ff c5 	be r1,r0,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
      return 0;                                                       
                                                                      
    return (block_p *)&p[ singly ];                                   
 800adf8:	b6 10 80 00 	add r16,r16,r16                                
 800adfc:	b6 10 80 00 	add r16,r16,r16                                
 800ae00:	b4 30 68 00 	add r13,r1,r16                                 
 800ae04:	e3 ff ff c1 	bi 800ad08 <IMFS_memfile_get_block_pointer+0xd0>
    p = info->indirect;                                               
                                                                      
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
 800ae08:	fb ff ff 7c 	calli 800abf8 <memfile_alloc_block>            
        if ( !p )                                                     
           return 0;                                                  
 800ae0c:	34 0d 00 00 	mvi r13,0                                      
                                                                      
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
        if ( !p )                                                     
 800ae10:	44 2b ff be 	be r1,r11,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        info->indirect = p;                                           
 800ae14:	59 c1 00 58 	sw (r14+88),r1                                 
 800ae18:	b8 20 58 00 	mv r11,r1                                      
 800ae1c:	e3 ff ff 9d 	bi 800ac90 <IMFS_memfile_get_block_pointer+0x58>
                                                                      
    p = info->doubly_indirect;                                        
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
 800ae20:	5b 81 00 24 	sw (sp+36),r1                                  
 800ae24:	fb ff ff 75 	calli 800abf8 <memfile_alloc_block>            
 800ae28:	b8 20 18 00 	mv r3,r1                                       
        if ( !p )                                                     
           return 0;                                                  
 800ae2c:	34 0d 00 00 	mvi r13,0                                      
    p = info->doubly_indirect;                                        
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
        if ( !p )                                                     
 800ae30:	2b 82 00 24 	lw r2,(sp+36)                                  
 800ae34:	44 20 ff b5 	be r1,r0,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        info->doubly_indirect = p;                                    
 800ae38:	59 c1 00 5c 	sw (r14+92),r1                                 
 800ae3c:	e3 ff ff ab 	bi 800ace8 <IMFS_memfile_get_block_pointer+0xb0>
      }                                                               
                                                                      
      p1 = (block_p *)p[ doubly ];                                    
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
 800ae40:	5b 82 00 24 	sw (sp+36),r2                                  
 800ae44:	fb ff ff 6d 	calli 800abf8 <memfile_alloc_block>            
        if ( !p1 )                                                    
           return 0;                                                  
 800ae48:	34 0d 00 00 	mvi r13,0                                      
      }                                                               
                                                                      
      p1 = (block_p *)p[ doubly ];                                    
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
        if ( !p1 )                                                    
 800ae4c:	2b 82 00 24 	lw r2,(sp+36)                                  
 800ae50:	44 20 ff ae 	be r1,r0,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        p[ doubly ] = (block_p) p1;                                   
 800ae54:	58 41 00 00 	sw (r2+0),r1                                   
 800ae58:	e3 ff ff a9 	bi 800acfc <IMFS_memfile_get_block_pointer+0xc4>
        p1[ doubly ] = (block_p) p2;                                  
      }                                                               
      return (block_p *)&p2[ singly ];                                
    }                                                                 
                                                                      
    if ( !p )                                                         
 800ae5c:	44 8d ff ab 	be r4,r13,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
      return 0;                                                       
                                                                      
    p1 = (block_p *) p[ triply ];                                     
 800ae60:	b6 10 80 00 	add r16,r16,r16                                
 800ae64:	b6 10 80 00 	add r16,r16,r16                                
 800ae68:	b4 90 20 00 	add r4,r4,r16                                  
 800ae6c:	28 81 00 00 	lw r1,(r4+0)                                   
    if ( !p1 )                                                        
 800ae70:	44 20 ff a6 	be r1,r0,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
      return 0;                                                       
                                                                      
    p2 = (block_p *)p1[ doubly ];                                     
 800ae74:	b5 6b 58 00 	add r11,r11,r11                                
 800ae78:	b5 6b 58 00 	add r11,r11,r11                                
 800ae7c:	b4 2b 08 00 	add r1,r1,r11                                  
 800ae80:	28 21 00 00 	lw r1,(r1+0)                                   
    if ( !p2 )                                                        
 800ae84:	44 20 ff a1 	be r1,r0,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
      return 0;                                                       
                                                                      
    return (block_p *)&p2[ singly ];                                  
 800ae88:	b5 8c 60 00 	add r12,r12,r12                                
 800ae8c:	b5 8c 60 00 	add r12,r12,r12                                
 800ae90:	b4 2c 68 00 	add r13,r1,r12                                 
 800ae94:	e3 ff ff 9d 	bi 800ad08 <IMFS_memfile_get_block_pointer+0xd0>
                                                                      
    p = info->triply_indirect;                                        
                                                                      
    if ( malloc_it ) {                                                
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
 800ae98:	fb ff ff 58 	calli 800abf8 <memfile_alloc_block>            
 800ae9c:	b8 20 20 00 	mv r4,r1                                       
        if ( !p )                                                     
 800aea0:	44 20 ff 9a 	be r1,r0,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        info->triply_indirect = p;                                    
 800aea4:	59 c1 00 60 	sw (r14+96),r1                                 
 800aea8:	e3 ff ff bf 	bi 800ada4 <IMFS_memfile_get_block_pointer+0x16c>
        p[ triply ] = (block_p) p1;                                   
      }                                                               
                                                                      
      p2 = (block_p *)p1[ doubly ];                                   
      if ( !p2 ) {                                                    
        p2 = memfile_alloc_block();                                   
 800aeac:	fb ff ff 53 	calli 800abf8 <memfile_alloc_block>            
        if ( !p2 )                                                    
           return 0;                                                  
 800aeb0:	34 0d 00 00 	mvi r13,0                                      
      }                                                               
                                                                      
      p2 = (block_p *)p1[ doubly ];                                   
      if ( !p2 ) {                                                    
        p2 = memfile_alloc_block();                                   
        if ( !p2 )                                                    
 800aeb4:	44 20 ff 95 	be r1,r0,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        p1[ doubly ] = (block_p) p2;                                  
 800aeb8:	59 61 00 00 	sw (r11+0),r1                                  
 800aebc:	e3 ff ff c4 	bi 800adcc <IMFS_memfile_get_block_pointer+0x194>
        info->triply_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *) p[ triply ];                                   
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
 800aec0:	fb ff ff 4e 	calli 800abf8 <memfile_alloc_block>            
        if ( !p1 )                                                    
           return 0;                                                  
 800aec4:	34 0d 00 00 	mvi r13,0                                      
      }                                                               
                                                                      
      p1 = (block_p *) p[ triply ];                                   
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
        if ( !p1 )                                                    
 800aec8:	44 20 ff 90 	be r1,r0,800ad08 <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        p[ triply ] = (block_p) p1;                                   
 800aecc:	59 c1 00 00 	sw (r14+0),r1                                  
 800aed0:	e3 ff ff ba 	bi 800adb8 <IMFS_memfile_get_block_pointer+0x180>
                                                                      

0800aed4 <IMFS_memfile_read>: IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) {
 800aed4:	37 9c ff cc 	addi sp,sp,-52                                 
 800aed8:	5b 8b 00 28 	sw (sp+40),r11                                 
 800aedc:	5b 8c 00 24 	sw (sp+36),r12                                 
 800aee0:	5b 8d 00 20 	sw (sp+32),r13                                 
 800aee4:	5b 8e 00 1c 	sw (sp+28),r14                                 
 800aee8:	5b 8f 00 18 	sw (sp+24),r15                                 
 800aeec:	5b 90 00 14 	sw (sp+20),r16                                 
 800aef0:	5b 91 00 10 	sw (sp+16),r17                                 
 800aef4:	5b 92 00 0c 	sw (sp+12),r18                                 
 800aef8:	5b 93 00 08 	sw (sp+8),r19                                  
 800aefc:	5b 9d 00 04 	sw (sp+4),ra                                   
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
                                                                      
  if (the_jnode->type == IMFS_LINEAR_FILE) {                          
 800af00:	28 25 00 4c 	lw r5,(r1+76)                                  
   IMFS_jnode_t    *the_jnode,                                        
   off_t            start,                                            
   unsigned char   *destination,                                      
   unsigned int     length                                            
)                                                                     
{                                                                     
 800af04:	b8 20 80 00 	mv r16,r1                                      
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
                                                                      
  if (the_jnode->type == IMFS_LINEAR_FILE) {                          
 800af08:	34 01 00 06 	mvi r1,6                                       
   IMFS_jnode_t    *the_jnode,                                        
   off_t            start,                                            
   unsigned char   *destination,                                      
   unsigned int     length                                            
)                                                                     
{                                                                     
 800af0c:	b8 40 68 00 	mv r13,r2                                      
 800af10:	b8 60 90 00 	mv r18,r3                                      
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
                                                                      
  if (the_jnode->type == IMFS_LINEAR_FILE) {                          
 800af14:	44 a1 00 57 	be r5,r1,800b070 <IMFS_memfile_read+0x19c>     
  /*                                                                  
   *  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 )                        
 800af18:	2a 01 00 50 	lw r1,(r16+80)                                 
 800af1c:	2a 0c 00 54 	lw r12,(r16+84)                                
                                                                      
  /*                                                                  
   *  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;                                         
 800af20:	b4 82 10 00 	add r2,r4,r2                                   
  if ( last_byte > the_jnode->info.file.size )                        
 800af24:	48 01 00 04 	bg r0,r1,800af34 <IMFS_memfile_read+0x60>      <== NEVER TAKEN
 800af28:	44 01 00 67 	be r0,r1,800b0c4 <IMFS_memfile_read+0x1f0>     <== ALWAYS TAKEN
                                                                      
  /*                                                                  
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
 800af2c:	b8 80 60 00 	mv r12,r4                                      <== NOT EXECUTED
 800af30:	e0 00 00 02 	bi 800af38 <IMFS_memfile_read+0x64>            <== NOT EXECUTED
   *  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;                    
 800af34:	c9 8d 60 00 	sub r12,r12,r13                                
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
 800af38:	78 11 08 01 	mvhi r17,0x801                                 
 800af3c:	3a 31 47 08 	ori r17,r17,0x4708                             
 800af40:	2a 2b 00 00 	lw r11,(r17+0)                                 
 800af44:	b9 a0 08 00 	mv r1,r13                                      
  unsigned int         last_byte;                                     
  unsigned int         copied;                                        
  unsigned int         start_offset;                                  
  unsigned char       *dest;                                          
                                                                      
  dest = destination;                                                 
 800af48:	ba 40 70 00 	mv r14,r18                                     
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
 800af4c:	b9 60 10 00 	mv r2,r11                                      
 800af50:	f8 00 1d 2a 	calli 80123f8 <__modsi3>                       
 800af54:	b8 20 98 00 	mv r19,r1                                      
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
 800af58:	b9 60 10 00 	mv r2,r11                                      
 800af5c:	b9 a0 08 00 	mv r1,r13                                      
 800af60:	f8 00 1c f6 	calli 8012338 <__divsi3>                       
 800af64:	b8 20 68 00 	mv r13,r1                                      
   */                                                                 
  last_byte = start + length;                                         
  if ( last_byte > the_jnode->info.file.size )                        
    my_length = the_jnode->info.file.size - start;                    
                                                                      
  copied = 0;                                                         
 800af68:	34 0f 00 00 	mvi r15,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;                       
  if ( start_offset )  {                                              
 800af6c:	46 60 00 13 	be r19,r0,800afb8 <IMFS_memfile_read+0xe4>     
    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 );
 800af70:	ba 00 08 00 	mv r1,r16                                      
 800af74:	b9 a0 10 00 	mv r2,r13                                      
 800af78:	34 03 00 00 	mvi r3,0                                       
 800af7c:	fb ff ff 2f 	calli 800ac38 <IMFS_memfile_get_block_pointer> 
    if ( !block_ptr )                                                 
 800af80:	44 20 00 2f 	be r1,r0,800b03c <IMFS_memfile_read+0x168>     <== NEVER TAKEN
   *  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;            
 800af84:	c9 73 58 00 	sub r11,r11,r19                                
 800af88:	b9 80 78 00 	mv r15,r12                                     
 800af8c:	51 6c 00 02 	bgeu r11,r12,800af94 <IMFS_memfile_read+0xc0>  
 800af90:	b9 60 78 00 	mv r15,r11                                     
    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 );           
 800af94:	28 22 00 00 	lw r2,(r1+0)                                   
 800af98:	b9 e0 18 00 	mv r3,r15                                      
 800af9c:	ba 40 08 00 	mv r1,r18                                      
 800afa0:	b4 53 10 00 	add r2,r2,r19                                  
 800afa4:	f8 00 0a 2c 	calli 800d854 <memcpy>                         
    dest += to_copy;                                                  
    block++;                                                          
    my_length -= to_copy;                                             
 800afa8:	2a 2b 00 00 	lw r11,(r17+0)                                 
      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;                                                  
 800afac:	b6 4f 70 00 	add r14,r18,r15                                
    block++;                                                          
 800afb0:	35 ad 00 01 	addi r13,r13,1                                 
    my_length -= to_copy;                                             
 800afb4:	c9 8f 60 00 	sub r12,r12,r15                                
                                                                      
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800afb8:	55 6c 00 11 	bgu r11,r12,800affc <IMFS_memfile_read+0x128>  
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
 800afbc:	b9 a0 10 00 	mv r2,r13                                      
 800afc0:	34 03 00 00 	mvi r3,0                                       
 800afc4:	ba 00 08 00 	mv r1,r16                                      
 800afc8:	fb ff ff 1c 	calli 800ac38 <IMFS_memfile_get_block_pointer> 
 800afcc:	b8 20 10 00 	mv r2,r1                                       
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
 800afd0:	b9 60 18 00 	mv r3,r11                                      
 800afd4:	b9 c0 08 00 	mv r1,r14                                      
    dest += to_copy;                                                  
    block++;                                                          
    my_length -= to_copy;                                             
 800afd8:	c9 8b 60 00 	sub r12,r12,r11                                
   *  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 )                                                 
 800afdc:	44 40 00 18 	be r2,r0,800b03c <IMFS_memfile_read+0x168>     <== NEVER TAKEN
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
 800afe0:	28 42 00 00 	lw r2,(r2+0)                                   
    dest += to_copy;                                                  
 800afe4:	b5 cb 70 00 	add r14,r14,r11                                
    block++;                                                          
 800afe8:	35 ad 00 01 	addi r13,r13,1                                 
  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 );                      
 800afec:	f8 00 0a 1a 	calli 800d854 <memcpy>                         
                                                                      
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800aff0:	2a 21 00 00 	lw r1,(r17+0)                                  
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
    dest += to_copy;                                                  
    block++;                                                          
    my_length -= to_copy;                                             
    copied += to_copy;                                                
 800aff4:	b5 eb 78 00 	add r15,r15,r11                                
                                                                      
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800aff8:	51 81 ff f1 	bgeu r12,r1,800afbc <IMFS_memfile_read+0xe8>   
  /*                                                                  
   *  Phase 3: possibly the first part of one block                   
   */                                                                 
  IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );            
                                                                      
  if ( my_length ) {                                                  
 800affc:	45 80 00 0b 	be r12,r0,800b028 <IMFS_memfile_read+0x154>    
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
 800b000:	ba 00 08 00 	mv r1,r16                                      
 800b004:	b9 a0 10 00 	mv r2,r13                                      
 800b008:	34 03 00 00 	mvi r3,0                                       
 800b00c:	fb ff ff 0b 	calli 800ac38 <IMFS_memfile_get_block_pointer> 
    if ( !block_ptr )                                                 
 800b010:	44 20 00 0b 	be r1,r0,800b03c <IMFS_memfile_read+0x168>     <== NEVER TAKEN
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], my_length );                    
 800b014:	28 22 00 00 	lw r2,(r1+0)                                   
 800b018:	b9 80 18 00 	mv r3,r12                                      
 800b01c:	b9 c0 08 00 	mv r1,r14                                      
 800b020:	f8 00 0a 0d 	calli 800d854 <memcpy>                         
    copied += my_length;                                              
 800b024:	b5 ec 78 00 	add r15,r15,r12                                
  }                                                                   
                                                                      
  IMFS_update_atime( the_jnode );                                     
 800b028:	37 81 00 30 	addi r1,sp,48                                  
 800b02c:	34 02 00 00 	mvi r2,0                                       
 800b030:	fb ff d9 4c 	calli 8001560 <gettimeofday>                   
 800b034:	2b 81 00 30 	lw r1,(sp+48)                                  
 800b038:	5a 01 00 40 	sw (r16+64),r1                                 
                                                                      
  return copied;                                                      
}                                                                     
 800b03c:	b9 e0 08 00 	mv r1,r15                                      
 800b040:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b044:	2b 8b 00 28 	lw r11,(sp+40)                                 
 800b048:	2b 8c 00 24 	lw r12,(sp+36)                                 
 800b04c:	2b 8d 00 20 	lw r13,(sp+32)                                 
 800b050:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 800b054:	2b 8f 00 18 	lw r15,(sp+24)                                 
 800b058:	2b 90 00 14 	lw r16,(sp+20)                                 
 800b05c:	2b 91 00 10 	lw r17,(sp+16)                                 
 800b060:	2b 92 00 0c 	lw r18,(sp+12)                                 
 800b064:	2b 93 00 08 	lw r19,(sp+8)                                  
 800b068:	37 9c 00 34 	addi sp,sp,52                                  
 800b06c:	c3 a0 00 00 	ret                                            
  if (the_jnode->type == 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))        
 800b070:	2a 0b 00 54 	lw r11,(r16+84)                                
 800b074:	2a 0c 00 50 	lw r12,(r16+80)                                
 800b078:	b8 40 08 00 	mv r1,r2                                       
 800b07c:	34 02 00 1f 	mvi r2,31                                      
 800b080:	5b 84 00 2c 	sw (sp+44),r4                                  
 800b084:	c9 6d 78 00 	sub r15,r11,r13                                
 800b088:	f8 00 1c 52 	calli 80121d0 <__ashrsi3>                      
 800b08c:	f5 eb 10 00 	cmpgu r2,r15,r11                               
 800b090:	c9 81 08 00 	sub r1,r12,r1                                  
 800b094:	c8 22 08 00 	sub r1,r1,r2                                   
 800b098:	2b 84 00 2c 	lw r4,(sp+44)                                  
  my_length = length;                                                 
                                                                      
  if (the_jnode->type == IMFS_LINEAR_FILE) {                          
    unsigned char  *file_ptr;                                         
                                                                      
    file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;    
 800b09c:	2a 02 00 58 	lw r2,(r16+88)                                 
                                                                      
    if (my_length > (the_jnode->info.linearfile.size - start))        
 800b0a0:	48 01 00 04 	bg r0,r1,800b0b0 <IMFS_memfile_read+0x1dc>     <== NEVER TAKEN
 800b0a4:	5c 01 00 02 	bne r0,r1,800b0ac <IMFS_memfile_read+0x1d8>    <== NEVER TAKEN
 800b0a8:	54 8f 00 02 	bgu r4,r15,800b0b0 <IMFS_memfile_read+0x1dc>   <== ALWAYS TAKEN
                                                                      
  /*                                                                  
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
 800b0ac:	b8 80 78 00 	mv r15,r4                                      <== NOT EXECUTED
    file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;    
                                                                      
    if (my_length > (the_jnode->info.linearfile.size - start))        
      my_length = the_jnode->info.linearfile.size - start;            
                                                                      
    memcpy(dest, &file_ptr[start], my_length);                        
 800b0b0:	b4 4d 10 00 	add r2,r2,r13                                  
 800b0b4:	b9 e0 18 00 	mv r3,r15                                      
 800b0b8:	ba 40 08 00 	mv r1,r18                                      
 800b0bc:	f8 00 09 e6 	calli 800d854 <memcpy>                         
 800b0c0:	e3 ff ff da 	bi 800b028 <IMFS_memfile_read+0x154>           
  /*                                                                  
   *  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 )                        
 800b0c4:	54 4c ff 9c 	bgu r2,r12,800af34 <IMFS_memfile_read+0x60>    
                                                                      
  /*                                                                  
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
 800b0c8:	b8 80 60 00 	mv r12,r4                                      
 800b0cc:	e3 ff ff 9b 	bi 800af38 <IMFS_memfile_read+0x64>            
                                                                      

0800b1fc <IMFS_memfile_remove>: * is better to stick to simple, easy to understand algorithms. */ int IMFS_memfile_remove( IMFS_jnode_t *the_jnode ) {
 800b1fc:	37 9c ff dc 	addi sp,sp,-36                                 
 800b200:	5b 8b 00 24 	sw (sp+36),r11                                 
 800b204:	5b 8c 00 20 	sw (sp+32),r12                                 
 800b208:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800b20c:	5b 8e 00 18 	sw (sp+24),r14                                 
 800b210:	5b 8f 00 14 	sw (sp+20),r15                                 
 800b214:	5b 90 00 10 	sw (sp+16),r16                                 
 800b218:	5b 91 00 0c 	sw (sp+12),r17                                 
 800b21c:	5b 92 00 08 	sw (sp+8),r18                                  
 800b220:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Eventually this could be set smarter at each call to            
   *  memfile_free_blocks_in_table to greatly speed this up.          
   */                                                                 
  to_free = IMFS_MEMFILE_BLOCK_SLOTS;                                 
 800b224:	78 0c 08 01 	mvhi r12,0x801                                 
 800b228:	39 8c 47 08 	ori r12,r12,0x4708                             
 800b22c:	29 8d 00 00 	lw r13,(r12+0)                                 
 *         is better to stick to simple, easy to understand algorithms.
 */                                                                   
int IMFS_memfile_remove(                                              
 IMFS_jnode_t  *the_jnode                                             
)                                                                     
{                                                                     
 800b230:	b8 20 78 00 	mv r15,r1                                      
   *    + doubly indirect                                             
   *    + triply indirect                                             
   */                                                                 
  info = &the_jnode->info.file;                                       
                                                                      
  if ( info->indirect ) {                                             
 800b234:	28 21 00 58 	lw r1,(r1+88)                                  
                                                                      
  /*                                                                  
   *  Eventually this could be set smarter at each call to            
   *  memfile_free_blocks_in_table to greatly speed this up.          
   */                                                                 
  to_free = IMFS_MEMFILE_BLOCK_SLOTS;                                 
 800b238:	01 ad 00 01 	srui r13,r13,1                                 
 800b23c:	01 ad 00 01 	srui r13,r13,1                                 
   *    + doubly indirect                                             
   *    + triply indirect                                             
   */                                                                 
  info = &the_jnode->info.file;                                       
                                                                      
  if ( info->indirect ) {                                             
 800b240:	44 20 00 04 	be r1,r0,800b250 <IMFS_memfile_remove+0x54>    
    memfile_free_blocks_in_table( &info->indirect, to_free );         
 800b244:	35 e1 00 58 	addi r1,r15,88                                 
 800b248:	b9 a0 10 00 	mv r2,r13                                      
 800b24c:	fb ff ff ce 	calli 800b184 <memfile_free_blocks_in_table>   
  }                                                                   
                                                                      
  if ( info->doubly_indirect ) {                                      
 800b250:	29 e1 00 5c 	lw r1,(r15+92)                                 
 800b254:	44 20 00 19 	be r1,r0,800b2b8 <IMFS_memfile_remove+0xbc>    
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
 800b258:	29 83 00 00 	lw r3,(r12+0)                                  
 800b25c:	34 02 00 00 	mvi r2,0                                       
 800b260:	34 0b 00 00 	mvi r11,0                                      
 800b264:	00 63 00 01 	srui r3,r3,1                                   
 800b268:	00 63 00 01 	srui r3,r3,1                                   
 800b26c:	44 60 00 10 	be r3,r0,800b2ac <IMFS_memfile_remove+0xb0>    <== NEVER TAKEN
      if ( info->doubly_indirect[i] ) {                               
 800b270:	b4 42 10 00 	add r2,r2,r2                                   
 800b274:	b4 42 10 00 	add r2,r2,r2                                   
 800b278:	b4 22 08 00 	add r1,r1,r2                                   
 800b27c:	28 23 00 00 	lw r3,(r1+0)                                   
  if ( info->indirect ) {                                             
    memfile_free_blocks_in_table( &info->indirect, to_free );         
  }                                                                   
                                                                      
  if ( info->doubly_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
 800b280:	35 6b 00 01 	addi r11,r11,1                                 
      if ( info->doubly_indirect[i] ) {                               
        memfile_free_blocks_in_table(                                 
 800b284:	b9 a0 10 00 	mv r2,r13                                      
    memfile_free_blocks_in_table( &info->indirect, to_free );         
  }                                                                   
                                                                      
  if ( info->doubly_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      if ( info->doubly_indirect[i] ) {                               
 800b288:	44 60 00 02 	be r3,r0,800b290 <IMFS_memfile_remove+0x94>    <== NEVER TAKEN
        memfile_free_blocks_in_table(                                 
 800b28c:	fb ff ff be 	calli 800b184 <memfile_free_blocks_in_table>   
  if ( info->indirect ) {                                             
    memfile_free_blocks_in_table( &info->indirect, to_free );         
  }                                                                   
                                                                      
  if ( info->doubly_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
 800b290:	29 81 00 00 	lw r1,(r12+0)                                  
 800b294:	b9 60 10 00 	mv r2,r11                                      
 800b298:	00 21 00 01 	srui r1,r1,1                                   
 800b29c:	00 21 00 01 	srui r1,r1,1                                   
 800b2a0:	51 61 00 03 	bgeu r11,r1,800b2ac <IMFS_memfile_remove+0xb0> 
 800b2a4:	29 e1 00 5c 	lw r1,(r15+92)                                 
 800b2a8:	e3 ff ff f2 	bi 800b270 <IMFS_memfile_remove+0x74>          
      if ( info->doubly_indirect[i] ) {                               
        memfile_free_blocks_in_table(                                 
         (block_p **)&info->doubly_indirect[i], to_free );            
      }                                                               
    }                                                                 
    memfile_free_blocks_in_table( &info->doubly_indirect, to_free );  
 800b2ac:	35 e1 00 5c 	addi r1,r15,92                                 
 800b2b0:	b9 a0 10 00 	mv r2,r13                                      
 800b2b4:	fb ff ff b4 	calli 800b184 <memfile_free_blocks_in_table>   
                                                                      
  }                                                                   
                                                                      
  if ( info->triply_indirect ) {                                      
 800b2b8:	29 e1 00 60 	lw r1,(r15+96)                                 
 800b2bc:	44 20 00 27 	be r1,r0,800b358 <IMFS_memfile_remove+0x15c>   
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
 800b2c0:	29 82 00 00 	lw r2,(r12+0)                                  
 800b2c4:	00 42 00 01 	srui r2,r2,1                                   
 800b2c8:	00 43 00 01 	srui r3,r2,1                                   
 800b2cc:	44 60 00 20 	be r3,r0,800b34c <IMFS_memfile_remove+0x150>   <== NEVER TAKEN
      p = (block_p *) info->triply_indirect[i];                       
 800b2d0:	28 2e 00 00 	lw r14,(r1+0)                                  
      if ( !p )  /* ensure we have a valid pointer */                 
 800b2d4:	34 10 00 04 	mvi r16,4                                      
                                                                      
  }                                                                   
                                                                      
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
 800b2d8:	34 12 00 00 	mvi r18,0                                      
      if ( !p )  /* ensure we have a valid pointer */                 
 800b2dc:	34 11 00 00 	mvi r17,0                                      
 800b2e0:	45 c0 00 1b 	be r14,r0,800b34c <IMFS_memfile_remove+0x150>  <== NEVER TAKEN
         break;                                                       
      for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {                
 800b2e4:	00 42 00 01 	srui r2,r2,1                                   
 800b2e8:	44 40 00 11 	be r2,r0,800b32c <IMFS_memfile_remove+0x130>   <== NEVER TAKEN
 800b2ec:	34 03 00 00 	mvi r3,0                                       
 800b2f0:	34 0b 00 00 	mvi r11,0                                      
        if ( p[j] ) {                                                 
 800b2f4:	b4 63 18 00 	add r3,r3,r3                                   
 800b2f8:	b4 63 18 00 	add r3,r3,r3                                   
 800b2fc:	b5 c3 08 00 	add r1,r14,r3                                  
 800b300:	28 23 00 00 	lw r3,(r1+0)                                   
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
      if ( !p )  /* ensure we have a valid pointer */                 
         break;                                                       
      for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {                
 800b304:	35 6b 00 01 	addi r11,r11,1                                 
        if ( p[j] ) {                                                 
          memfile_free_blocks_in_table( (block_p **)&p[j], to_free);  
 800b308:	b9 a0 10 00 	mv r2,r13                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
      if ( !p )  /* ensure we have a valid pointer */                 
         break;                                                       
      for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {                
        if ( p[j] ) {                                                 
 800b30c:	44 60 00 02 	be r3,r0,800b314 <IMFS_memfile_remove+0x118>   <== NEVER TAKEN
          memfile_free_blocks_in_table( (block_p **)&p[j], to_free);  
 800b310:	fb ff ff 9d 	calli 800b184 <memfile_free_blocks_in_table>   
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
      if ( !p )  /* ensure we have a valid pointer */                 
         break;                                                       
      for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {                
 800b314:	29 84 00 00 	lw r4,(r12+0)                                  
 800b318:	b9 60 18 00 	mv r3,r11                                      
 800b31c:	00 84 00 01 	srui r4,r4,1                                   
 800b320:	00 84 00 01 	srui r4,r4,1                                   
 800b324:	54 8b ff f4 	bgu r4,r11,800b2f4 <IMFS_memfile_remove+0xf8>  
 800b328:	29 e1 00 60 	lw r1,(r15+96)                                 
        if ( p[j] ) {                                                 
          memfile_free_blocks_in_table( (block_p **)&p[j], to_free);  
        }                                                             
      }                                                               
      memfile_free_blocks_in_table(                                   
 800b32c:	b4 32 08 00 	add r1,r1,r18                                  
 800b330:	b9 a0 10 00 	mv r2,r13                                      
 800b334:	fb ff ff 94 	calli 800b184 <memfile_free_blocks_in_table>   
    memfile_free_blocks_in_table( &info->doubly_indirect, to_free );  
                                                                      
  }                                                                   
                                                                      
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
 800b338:	29 82 00 00 	lw r2,(r12+0)                                  
 800b33c:	36 31 00 01 	addi r17,r17,1                                 
 800b340:	00 42 00 01 	srui r2,r2,1                                   
 800b344:	00 41 00 01 	srui r1,r2,1                                   
 800b348:	54 31 00 10 	bgu r1,r17,800b388 <IMFS_memfile_remove+0x18c> 
        }                                                             
      }                                                               
      memfile_free_blocks_in_table(                                   
        (block_p **)&info->triply_indirect[i], to_free );             
    }                                                                 
    memfile_free_blocks_in_table(                                     
 800b34c:	35 e1 00 60 	addi r1,r15,96                                 
 800b350:	b9 a0 10 00 	mv r2,r13                                      
 800b354:	fb ff ff 8c 	calli 800b184 <memfile_free_blocks_in_table>   
        (block_p **)&info->triply_indirect, to_free );                
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 800b358:	34 01 00 00 	mvi r1,0                                       
 800b35c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b360:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800b364:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800b368:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800b36c:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800b370:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800b374:	2b 90 00 10 	lw r16,(sp+16)                                 
 800b378:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800b37c:	2b 92 00 08 	lw r18,(sp+8)                                  
 800b380:	37 9c 00 24 	addi sp,sp,36                                  
 800b384:	c3 a0 00 00 	ret                                            
                                                                      
  }                                                                   
                                                                      
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
 800b388:	29 e1 00 60 	lw r1,(r15+96)                                 
 800b38c:	36 04 00 04 	addi r4,r16,4                                  
 800b390:	b4 30 18 00 	add r3,r1,r16                                  
 800b394:	28 6e 00 00 	lw r14,(r3+0)                                  
      if ( !p )  /* ensure we have a valid pointer */                 
 800b398:	45 c0 ff ed 	be r14,r0,800b34c <IMFS_memfile_remove+0x150>  <== NEVER TAKEN
                                                                      
  }                                                                   
                                                                      
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
 800b39c:	ba 00 90 00 	mv r18,r16                                     
      if ( !p )  /* ensure we have a valid pointer */                 
 800b3a0:	b8 80 80 00 	mv r16,r4                                      
 800b3a4:	e3 ff ff d0 	bi 800b2e4 <IMFS_memfile_remove+0xe8>          
                                                                      

0800b530 <IMFS_memfile_write>: IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) {
 800b530:	37 9c ff cc 	addi sp,sp,-52                                 
 800b534:	5b 8b 00 2c 	sw (sp+44),r11                                 
 800b538:	5b 8c 00 28 	sw (sp+40),r12                                 
 800b53c:	5b 8d 00 24 	sw (sp+36),r13                                 
 800b540:	5b 8e 00 20 	sw (sp+32),r14                                 
 800b544:	5b 8f 00 1c 	sw (sp+28),r15                                 
 800b548:	5b 90 00 18 	sw (sp+24),r16                                 
 800b54c:	5b 91 00 14 	sw (sp+20),r17                                 
 800b550:	5b 92 00 10 	sw (sp+16),r18                                 
 800b554:	5b 93 00 0c 	sw (sp+12),r19                                 
 800b558:	5b 94 00 08 	sw (sp+8),r20                                  
 800b55c:	5b 9d 00 04 	sw (sp+4),ra                                   
 800b560:	b8 20 88 00 	mv r17,r1                                      
   *  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 ) {                      
 800b564:	28 21 00 50 	lw r1,(r1+80)                                  
   IMFS_jnode_t          *the_jnode,                                  
   off_t                  start,                                      
   const unsigned char   *source,                                     
   unsigned int           length                                      
)                                                                     
{                                                                     
 800b568:	b8 40 60 00 	mv r12,r2                                      
 800b56c:	b8 80 90 00 	mv r18,r4                                      
 800b570:	b8 60 98 00 	mv r19,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;                                      
 800b574:	b4 82 10 00 	add r2,r4,r2                                   
  if ( last_byte > the_jnode->info.file.size ) {                      
 800b578:	48 01 00 57 	bg r0,r1,800b6d4 <IMFS_memfile_write+0x1a4>    <== NEVER TAKEN
 800b57c:	44 20 00 5e 	be r1,r0,800b6f4 <IMFS_memfile_write+0x1c4>    <== ALWAYS TAKEN
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
 800b580:	78 10 08 01 	mvhi r16,0x801                                 
 800b584:	3a 10 47 08 	ori r16,r16,0x4708                             
 800b588:	2a 0b 00 00 	lw r11,(r16+0)                                 
 800b58c:	b9 80 08 00 	mv r1,r12                                      
  unsigned int         last_byte;                                     
  unsigned int         start_offset;                                  
  int                  copied;                                        
  const unsigned char *src;                                           
                                                                      
  src = source;                                                       
 800b590:	ba 60 70 00 	mv r14,r19                                     
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
 800b594:	b9 60 10 00 	mv r2,r11                                      
 800b598:	f8 00 1b 98 	calli 80123f8 <__modsi3>                       
 800b59c:	b8 20 a0 00 	mv r20,r1                                      
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
 800b5a0:	b9 60 10 00 	mv r2,r11                                      
 800b5a4:	b9 80 08 00 	mv r1,r12                                      
 800b5a8:	f8 00 1b 64 	calli 8012338 <__divsi3>                       
 800b5ac:	b8 20 68 00 	mv r13,r1                                      
  if ( start_offset )  {                                              
 800b5b0:	ba 40 60 00 	mv r12,r18                                     
    status = IMFS_memfile_extend( the_jnode, last_byte );             
    if ( status )                                                     
      rtems_set_errno_and_return_minus_one( ENOSPC );                 
  }                                                                   
                                                                      
  copied = 0;                                                         
 800b5b4:	34 0f 00 00 	mvi r15,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;                       
  if ( start_offset )  {                                              
 800b5b8:	5e 80 00 32 	bne r20,r0,800b680 <IMFS_memfile_write+0x150>  
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800b5bc:	55 6c 00 10 	bgu r11,r12,800b5fc <IMFS_memfile_write+0xcc>  
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
 800b5c0:	b9 a0 10 00 	mv r2,r13                                      
 800b5c4:	34 03 00 00 	mvi r3,0                                       
 800b5c8:	ba 20 08 00 	mv r1,r17                                      
 800b5cc:	fb ff fd 9b 	calli 800ac38 <IMFS_memfile_get_block_pointer> 
    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 );                       
 800b5d0:	b9 c0 10 00 	mv r2,r14                                      
 800b5d4:	b9 60 18 00 	mv r3,r11                                      
    src += to_copy;                                                   
    block++;                                                          
    my_length -= to_copy;                                             
 800b5d8:	c9 8b 60 00 	sub r12,r12,r11                                
   */                                                                 
                                                                      
  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 )                                                 
 800b5dc:	44 20 00 3c 	be r1,r0,800b6cc <IMFS_memfile_write+0x19c>    <== NEVER TAKEN
      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 );                       
 800b5e0:	28 21 00 00 	lw r1,(r1+0)                                   
    src += to_copy;                                                   
 800b5e4:	b5 cb 70 00 	add r14,r14,r11                                
    block++;                                                          
 800b5e8:	35 ad 00 01 	addi r13,r13,1                                 
    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 );                       
 800b5ec:	f8 00 08 9a 	calli 800d854 <memcpy>                         
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800b5f0:	2a 01 00 00 	lw r1,(r16+0)                                  
 *  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(                            
 800b5f4:	b5 eb 78 00 	add r15,r15,r11                                
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800b5f8:	51 81 ff f2 	bgeu r12,r1,800b5c0 <IMFS_memfile_write+0x90>  
   *  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 ) {                                                  
 800b5fc:	45 80 00 0c 	be r12,r0,800b62c <IMFS_memfile_write+0xfc>    
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
 800b600:	ba 20 08 00 	mv r1,r17                                      
 800b604:	b9 a0 10 00 	mv r2,r13                                      
 800b608:	34 03 00 00 	mvi r3,0                                       
 800b60c:	fb ff fd 8b 	calli 800ac38 <IMFS_memfile_get_block_pointer> 
    if ( !block_ptr )                                                 
 800b610:	b9 e0 20 00 	mv r4,r15                                      
 800b614:	44 20 00 0d 	be r1,r0,800b648 <IMFS_memfile_write+0x118>    <== NEVER TAKEN
      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 );                     
 800b618:	28 21 00 00 	lw r1,(r1+0)                                   
 800b61c:	b9 c0 10 00 	mv r2,r14                                      
 800b620:	b9 80 18 00 	mv r3,r12                                      
 800b624:	f8 00 08 8c 	calli 800d854 <memcpy>                         
    my_length = 0;                                                    
    copied += to_copy;                                                
 800b628:	b5 ec 78 00 	add r15,r15,r12                                
  }                                                                   
                                                                      
  IMFS_mtime_ctime_update( the_jnode );                               
 800b62c:	37 81 00 30 	addi r1,sp,48                                  
 800b630:	34 02 00 00 	mvi r2,0                                       
 800b634:	fb ff d7 cb 	calli 8001560 <gettimeofday>                   
 800b638:	2b 81 00 30 	lw r1,(sp+48)                                  
                                                                      
  return copied;                                                      
 800b63c:	b9 e0 20 00 	mv r4,r15                                      
    memcpy( &(*block_ptr)[ 0 ], src, my_length );                     
    my_length = 0;                                                    
    copied += to_copy;                                                
  }                                                                   
                                                                      
  IMFS_mtime_ctime_update( the_jnode );                               
 800b640:	5a 21 00 44 	sw (r17+68),r1                                 
 800b644:	5a 21 00 48 	sw (r17+72),r1                                 
                                                                      
  return copied;                                                      
}                                                                     
 800b648:	b8 80 08 00 	mv r1,r4                                       
 800b64c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b650:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 800b654:	2b 8c 00 28 	lw r12,(sp+40)                                 
 800b658:	2b 8d 00 24 	lw r13,(sp+36)                                 
 800b65c:	2b 8e 00 20 	lw r14,(sp+32)                                 
 800b660:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 800b664:	2b 90 00 18 	lw r16,(sp+24)                                 
 800b668:	2b 91 00 14 	lw r17,(sp+20)                                 
 800b66c:	2b 92 00 10 	lw r18,(sp+16)                                 
 800b670:	2b 93 00 0c 	lw r19,(sp+12)                                 
 800b674:	2b 94 00 08 	lw r20,(sp+8)                                  
 800b678:	37 9c 00 34 	addi sp,sp,52                                  
 800b67c:	c3 a0 00 00 	ret                                            
  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 );
 800b680:	ba 20 08 00 	mv r1,r17                                      
 800b684:	b9 a0 10 00 	mv r2,r13                                      
 800b688:	34 03 00 00 	mvi r3,0                                       
 800b68c:	fb ff fd 6b 	calli 800ac38 <IMFS_memfile_get_block_pointer> 
    if ( !block_ptr )                                                 
      return copied;                                                  
 800b690:	34 04 00 00 	mvi r4,0                                       
  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 );
    if ( !block_ptr )                                                 
 800b694:	44 20 ff ed 	be r1,r0,800b648 <IMFS_memfile_write+0x118>    <== NEVER TAKEN
   *  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;            
 800b698:	c9 74 78 00 	sub r15,r11,r20                                
 800b69c:	52 4f 00 02 	bgeu r18,r15,800b6a4 <IMFS_memfile_write+0x174>
 800b6a0:	ba 40 78 00 	mv r15,r18                                     
        block,                                                        
        to_copy,                                                      
        src                                                           
      );                                                              
    #endif                                                            
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );            
 800b6a4:	28 21 00 00 	lw r1,(r1+0)                                   
 800b6a8:	ba 60 10 00 	mv r2,r19                                      
 800b6ac:	b9 e0 18 00 	mv r3,r15                                      
 800b6b0:	b4 34 08 00 	add r1,r1,r20                                  
 800b6b4:	f8 00 08 68 	calli 800d854 <memcpy>                         
    src += to_copy;                                                   
 800b6b8:	b6 6f 70 00 	add r14,r19,r15                                
    block++;                                                          
    my_length -= to_copy;                                             
    copied += to_copy;                                                
 800b6bc:	2a 0b 00 00 	lw r11,(r16+0)                                 
        src                                                           
      );                                                              
    #endif                                                            
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );            
    src += to_copy;                                                   
    block++;                                                          
 800b6c0:	35 ad 00 01 	addi r13,r13,1                                 
    my_length -= to_copy;                                             
 800b6c4:	ca 4f 60 00 	sub r12,r18,r15                                
 800b6c8:	e3 ff ff bd 	bi 800b5bc <IMFS_memfile_write+0x8c>           
   */                                                                 
                                                                      
  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 )                                                 
 800b6cc:	b9 e0 20 00 	mv r4,r15                                      <== NOT EXECUTED
 800b6d0:	e3 ff ff de 	bi 800b648 <IMFS_memfile_write+0x118>          <== NOT EXECUTED
   *  in memory file, then extend the length.                         
   */                                                                 
                                                                      
  last_byte = start + my_length;                                      
  if ( last_byte > the_jnode->info.file.size ) {                      
    status = IMFS_memfile_extend( the_jnode, last_byte );             
 800b6d4:	ba 20 08 00 	mv r1,r17                                      
 800b6d8:	fb ff ff 40 	calli 800b3d8 <IMFS_memfile_extend>            
    if ( status )                                                     
 800b6dc:	44 20 ff a9 	be r1,r0,800b580 <IMFS_memfile_write+0x50>     
      rtems_set_errno_and_return_minus_one( ENOSPC );                 
 800b6e0:	f8 00 05 a7 	calli 800cd7c <__errno>                        
 800b6e4:	34 02 00 1c 	mvi r2,28                                      
 800b6e8:	58 22 00 00 	sw (r1+0),r2                                   
 800b6ec:	34 04 ff ff 	mvi r4,-1                                      
 800b6f0:	e3 ff ff d6 	bi 800b648 <IMFS_memfile_write+0x118>          
   *  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 ) {                      
 800b6f4:	2a 21 00 54 	lw r1,(r17+84)                                 
 800b6f8:	54 41 ff f7 	bgu r2,r1,800b6d4 <IMFS_memfile_write+0x1a4>   <== ALWAYS TAKEN
 800b6fc:	e3 ff ff a1 	bi 800b580 <IMFS_memfile_write+0x50>           <== NOT EXECUTED
                                                                      

08000c80 <IMFS_mount>: #include <rtems/seterr.h> int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) {
 8000c80:	37 9c ff fc 	addi sp,sp,-4                                  
 8000c84:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_jnode_t  *node;                                                
                                                                      
  node = mt_entry->mt_point_node.node_access;                         
 8000c88:	28 22 00 08 	lw r2,(r1+8)                                   
                                                                      
  /*                                                                  
   *  Is the node that we are mounting onto a directory node ?        
   */                                                                 
                                                                      
  if ( node->type != IMFS_DIRECTORY )                                 
 8000c8c:	34 03 00 01 	mvi r3,1                                       
 8000c90:	28 44 00 4c 	lw r4,(r2+76)                                  
 8000c94:	5c 83 00 06 	bne r4,r3,8000cac <IMFS_mount+0x2c>            <== NEVER TAKEN
  /*                                                                  
   *  Set mt_fs pointer to point to the mount table entry for         
   *  the mounted file system.                                        
   */                                                                 
                                                                      
  node->info.directory.mt_fs = mt_entry;                              
 8000c98:	58 41 00 5c 	sw (r2+92),r1                                  
  return 0;                                                           
 8000c9c:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8000ca0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000ca4:	37 9c 00 04 	addi sp,sp,4                                   
 8000ca8:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Is the node that we are mounting onto a directory node ?        
   */                                                                 
                                                                      
  if ( node->type != IMFS_DIRECTORY )                                 
    rtems_set_errno_and_return_minus_one( ENOTDIR );                  
 8000cac:	f8 00 30 34 	calli 800cd7c <__errno>                        <== NOT EXECUTED
 8000cb0:	34 02 00 14 	mvi r2,20                                      <== NOT EXECUTED
 8000cb4:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8000cb8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8000cbc:	e3 ff ff f9 	bi 8000ca0 <IMFS_mount+0x20>                   <== NOT EXECUTED
                                                                      

080037ac <IMFS_print_jnode>: * This routine prints the contents of the specified jnode. */ void IMFS_print_jnode( IMFS_jnode_t *the_jnode ) {
 80037ac:	37 9c ff f4 	addi sp,sp,-12                                 
 80037b0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80037b4:	5b 8c 00 08 	sw (sp+8),r12                                  
 80037b8:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_assert( the_jnode );                                           
                                                                      
  fprintf(stdout, "%s", the_jnode->name );                            
 80037bc:	78 0b 08 02 	mvhi r11,0x802                                 
 80037c0:	39 6b 81 f0 	ori r11,r11,0x81f0                             
 80037c4:	29 62 00 00 	lw r2,(r11+0)                                  
 *  This routine prints the contents of the specified jnode.          
 */                                                                   
void IMFS_print_jnode(                                                
  IMFS_jnode_t *the_jnode                                             
)                                                                     
{                                                                     
 80037c8:	b8 20 60 00 	mv r12,r1                                      
  IMFS_assert( the_jnode );                                           
                                                                      
  fprintf(stdout, "%s", the_jnode->name );                            
 80037cc:	34 21 00 0c 	addi r1,r1,12                                  
 80037d0:	28 42 00 08 	lw r2,(r2+8)                                   
 80037d4:	f8 00 3a 3f 	calli 80120d0 <fputs>                          
  switch( the_jnode->type ) {                                         
 80037d8:	29 83 00 4c 	lw r3,(r12+76)                                 
 80037dc:	34 01 00 07 	mvi r1,7                                       
 80037e0:	54 61 00 36 	bgu r3,r1,80038b8 <IMFS_print_jnode+0x10c>     <== NEVER TAKEN
 80037e4:	78 02 08 02 	mvhi r2,0x802                                  
 80037e8:	b4 63 08 00 	add r1,r3,r3                                   
 80037ec:	38 42 61 a4 	ori r2,r2,0x61a4                               
 80037f0:	b4 21 08 00 	add r1,r1,r1                                   
 80037f4:	b4 41 08 00 	add r1,r2,r1                                   
 80037f8:	28 21 00 00 	lw r1,(r1+0)                                   
 80037fc:	c0 20 00 00 	b r1                                           
    case IMFS_HARD_LINK:                                              
      fprintf(stdout, " links not printed\n" );                       
      return;                                                         
                                                                      
    case IMFS_SYM_LINK:                                               
      fprintf(stdout, " links not printed\n" );                       
 8003800:	29 62 00 00 	lw r2,(r11+0)                                  
 8003804:	78 01 08 02 	mvhi r1,0x802                                  
 8003808:	34 03 00 13 	mvi r3,19                                      
 800380c:	28 44 00 08 	lw r4,(r2+8)                                   
 8003810:	38 21 60 f0 	ori r1,r1,0x60f0                               
 8003814:	34 02 00 01 	mvi r2,1                                       
 8003818:	f8 00 3d 56 	calli 8012d70 <fwrite>                         
    default:                                                          
      fprintf(stdout, " bad type %d\n", the_jnode->type );            
      return;                                                         
  }                                                                   
  puts("");                                                           
}                                                                     
 800381c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003820:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003824:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003828:	37 9c 00 0c 	addi sp,sp,12                                  
 800382c:	c3 a0 00 00 	ret                                            
    case IMFS_SYM_LINK:                                               
      fprintf(stdout, " links not printed\n" );                       
      return;                                                         
                                                                      
    case IMFS_FIFO:                                                   
      fprintf(stdout, " FIFO not printed\n" );                        
 8003830:	29 62 00 00 	lw r2,(r11+0)                                  
 8003834:	78 01 08 02 	mvhi r1,0x802                                  
 8003838:	34 03 00 12 	mvi r3,18                                      
 800383c:	28 44 00 08 	lw r4,(r2+8)                                   
 8003840:	38 21 61 04 	ori r1,r1,0x6104                               
 8003844:	34 02 00 01 	mvi r2,1                                       
 8003848:	f8 00 3d 4a 	calli 8012d70 <fwrite>                         
    default:                                                          
      fprintf(stdout, " bad type %d\n", the_jnode->type );            
      return;                                                         
  }                                                                   
  puts("");                                                           
}                                                                     
 800384c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003850:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003854:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003858:	37 9c 00 0c 	addi sp,sp,12                                  
 800385c:	c3 a0 00 00 	ret                                            
        the_jnode->info.file.indirect,                                
        the_jnode->info.file.doubly_indirect,                         
        the_jnode->info.file.triply_indirect                          
      );                                                              
#else                                                                 
      fprintf(stdout, " (file %" PRId32 ")",                          
 8003860:	29 61 00 00 	lw r1,(r11+0)                                  
 8003864:	29 83 00 54 	lw r3,(r12+84)                                 
 8003868:	78 02 08 02 	mvhi r2,0x802                                  
 800386c:	28 21 00 08 	lw r1,(r1+8)                                   
 8003870:	38 42 60 e4 	ori r2,r2,0x60e4                               
 8003874:	f8 00 39 ac 	calli 8011f24 <fprintf>                        
                                                                      
    default:                                                          
      fprintf(stdout, " bad type %d\n", the_jnode->type );            
      return;                                                         
  }                                                                   
  puts("");                                                           
 8003878:	78 01 08 02 	mvhi r1,0x802                                  
 800387c:	38 21 5c 88 	ori r1,r1,0x5c88                               
 8003880:	f8 00 41 d7 	calli 8013fdc <puts>                           
}                                                                     
 8003884:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003888:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800388c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003890:	37 9c 00 0c 	addi sp,sp,12                                  
 8003894:	c3 a0 00 00 	ret                                            
      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)",                       
 8003898:	29 61 00 00 	lw r1,(r11+0)                                  
 800389c:	29 83 00 54 	lw r3,(r12+84)                                 
 80038a0:	29 84 00 58 	lw r4,(r12+88)                                 
 80038a4:	28 21 00 08 	lw r1,(r1+8)                                   
 80038a8:	78 02 08 02 	mvhi r2,0x802                                  
 80038ac:	38 42 60 d4 	ori r2,r2,0x60d4                               
 80038b0:	f8 00 39 9d 	calli 8011f24 <fprintf>                        
        (uint32_t)the_jnode->info.linearfile.size,                    
        the_jnode->info.linearfile.direct                             
      );                                                              
      break;                                                          
 80038b4:	e3 ff ff f1 	bi 8003878 <IMFS_print_jnode+0xcc>             
    case IMFS_FIFO:                                                   
      fprintf(stdout, " FIFO not printed\n" );                        
      return;                                                         
                                                                      
    default:                                                          
      fprintf(stdout, " bad type %d\n", the_jnode->type );            
 80038b8:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 80038bc:	78 02 08 02 	mvhi r2,0x802                                  <== NOT EXECUTED
 80038c0:	38 42 61 18 	ori r2,r2,0x6118                               <== NOT EXECUTED
 80038c4:	28 21 00 08 	lw r1,(r1+8)                                   <== NOT EXECUTED
 80038c8:	f8 00 39 97 	calli 8011f24 <fprintf>                        <== NOT EXECUTED
      return;                                                         
  }                                                                   
  puts("");                                                           
}                                                                     
 80038cc:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80038d0:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 80038d4:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 80038d8:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 80038dc:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  IMFS_assert( the_jnode );                                           
                                                                      
  fprintf(stdout, "%s", the_jnode->name );                            
  switch( the_jnode->type ) {                                         
    case IMFS_DIRECTORY:                                              
      fprintf(stdout, "/" );                                          
 80038e0:	29 62 00 00 	lw r2,(r11+0)                                  
 80038e4:	34 01 00 2f 	mvi r1,47                                      
 80038e8:	28 42 00 08 	lw r2,(r2+8)                                   
 80038ec:	f8 00 39 b5 	calli 8011fc0 <fputc>                          
      break;                                                          
 80038f0:	e3 ff ff e2 	bi 8003878 <IMFS_print_jnode+0xcc>             
                                                                      
    case IMFS_DEVICE:                                                 
      fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",           
 80038f4:	29 61 00 00 	lw r1,(r11+0)                                  
 80038f8:	29 83 00 50 	lw r3,(r12+80)                                 
 80038fc:	29 84 00 54 	lw r4,(r12+84)                                 
 8003900:	28 21 00 08 	lw r1,(r1+8)                                   
 8003904:	78 02 08 02 	mvhi r2,0x802                                  
 8003908:	38 42 60 c0 	ori r2,r2,0x60c0                               
 800390c:	f8 00 39 86 	calli 8011f24 <fprintf>                        
        the_jnode->info.device.major, the_jnode->info.device.minor ); 
      break;                                                          
 8003910:	e3 ff ff da 	bi 8003878 <IMFS_print_jnode+0xcc>             
                                                                      

08000ccc <IMFS_readlink>: ) { IMFS_jnode_t *node; ssize_t i; node = loc->node_access;
 8000ccc:	28 25 00 00 	lw r5,(r1+0)                                   
                                                                      
  IMFS_assert( node->type == IMFS_SYM_LINK );                         
                                                                      
  for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
 8000cd0:	34 01 00 00 	mvi r1,0                                       
 8000cd4:	44 60 00 0e 	be r3,r0,8000d0c <IMFS_readlink+0x40>          <== NEVER TAKEN
 8000cd8:	28 a4 00 50 	lw r4,(r5+80)                                  
 8000cdc:	40 84 00 00 	lbu r4,(r4+0)                                  
 8000ce0:	44 80 00 0b 	be r4,r0,8000d0c <IMFS_readlink+0x40>          <== NEVER TAKEN
 8000ce4:	34 06 00 00 	mvi r6,0                                       
    buf[i] = node->info.sym_link.name[i];                             
 8000ce8:	b4 46 30 00 	add r6,r2,r6                                   
 8000cec:	30 c4 00 00 	sb (r6+0),r4                                   
                                                                      
  node = loc->node_access;                                            
                                                                      
  IMFS_assert( node->type == IMFS_SYM_LINK );                         
                                                                      
  for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
 8000cf0:	34 21 00 01 	addi r1,r1,1                                   
 8000cf4:	b8 20 30 00 	mv r6,r1                                       
 8000cf8:	50 23 00 05 	bgeu r1,r3,8000d0c <IMFS_readlink+0x40>        
 8000cfc:	28 a4 00 50 	lw r4,(r5+80)                                  
 8000d00:	b4 81 20 00 	add r4,r4,r1                                   
 8000d04:	40 84 00 00 	lbu r4,(r4+0)                                  
 8000d08:	5c 80 ff f8 	bne r4,r0,8000ce8 <IMFS_readlink+0x1c>         
    buf[i] = node->info.sym_link.name[i];                             
                                                                      
  return i;                                                           
}                                                                     
 8000d0c:	c3 a0 00 00 	ret                                            
                                                                      

08000d10 <IMFS_rename>: rtems_filesystem_location_info_t *old_parent_loc, /* IN */ rtems_filesystem_location_info_t *old_loc, /* IN */ rtems_filesystem_location_info_t *new_parent_loc, /* IN */ const char *new_name /* IN */ ) {
 8000d10:	37 9c ff ec 	addi sp,sp,-20                                 
 8000d14:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8000d18:	5b 8c 00 08 	sw (sp+8),r12                                  
 8000d1c:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_jnode_t *the_jnode;                                            
  IMFS_jnode_t *new_parent;                                           
                                                                      
  the_jnode = old_loc->node_access;                                   
 8000d20:	28 4b 00 00 	lw r11,(r2+0)                                  
  rtems_filesystem_location_info_t  *old_parent_loc,  /* IN */        
  rtems_filesystem_location_info_t  *old_loc,         /* IN */        
  rtems_filesystem_location_info_t  *new_parent_loc,  /* IN */        
  const char                        *new_name         /* IN */        
)                                                                     
{                                                                     
 8000d24:	b8 60 60 00 	mv r12,r3                                      
  IMFS_jnode_t *the_jnode;                                            
  IMFS_jnode_t *new_parent;                                           
                                                                      
  the_jnode = old_loc->node_access;                                   
                                                                      
  strncpy( the_jnode->name, new_name, IMFS_NAME_MAX );                
 8000d28:	b8 80 10 00 	mv r2,r4                                       
 8000d2c:	35 61 00 0c 	addi r1,r11,12                                 
 8000d30:	34 03 00 20 	mvi r3,32                                      
 8000d34:	f8 00 34 e2 	calli 800e0bc <strncpy>                        
                                                                      
  if ( the_jnode->Parent != NULL )                                    
 8000d38:	29 61 00 08 	lw r1,(r11+8)                                  
 8000d3c:	44 20 00 03 	be r1,r0,8000d48 <IMFS_rename+0x38>            <== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 8000d40:	b9 60 08 00 	mv r1,r11                                      
 8000d44:	f8 00 0a f0 	calli 8003904 <_Chain_Extract>                 
    rtems_chain_extract( (rtems_chain_node *) the_jnode );            
                                                                      
  new_parent = new_parent_loc->node_access;                           
 8000d48:	29 83 00 00 	lw r3,(r12+0)                                  
RTEMS_INLINE_ROUTINE void rtems_chain_append(                         
  rtems_chain_control *the_chain,                                     
  rtems_chain_node    *the_node                                       
)                                                                     
{                                                                     
  _Chain_Append( the_chain, the_node );                               
 8000d4c:	b9 60 10 00 	mv r2,r11                                      
 8000d50:	34 61 00 50 	addi r1,r3,80                                  
  the_jnode->Parent = new_parent;                                     
 8000d54:	59 63 00 08 	sw (r11+8),r3                                  
 8000d58:	f8 00 0a df 	calli 80038d4 <_Chain_Append>                  
  rtems_chain_append( &new_parent->info.directory.Entries, &the_jnode->Node );
                                                                      
  /*                                                                  
   * Update the time.                                                 
   */                                                                 
  IMFS_update_ctime( the_jnode );                                     
 8000d5c:	37 81 00 10 	addi r1,sp,16                                  
 8000d60:	34 02 00 00 	mvi r2,0                                       
 8000d64:	f8 00 01 ff 	calli 8001560 <gettimeofday>                   
 8000d68:	2b 82 00 10 	lw r2,(sp+16)                                  
                                                                      
  return 0;                                                           
}                                                                     
 8000d6c:	34 01 00 00 	mvi r1,0                                       
  rtems_chain_append( &new_parent->info.directory.Entries, &the_jnode->Node );
                                                                      
  /*                                                                  
   * Update the time.                                                 
   */                                                                 
  IMFS_update_ctime( the_jnode );                                     
 8000d70:	59 62 00 48 	sw (r11+72),r2                                 
                                                                      
  return 0;                                                           
}                                                                     
 8000d74:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000d78:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8000d7c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8000d80:	37 9c 00 14 	addi sp,sp,20                                  
 8000d84:	c3 a0 00 00 	ret                                            
                                                                      

080084a0 <IMFS_stat>: int IMFS_stat( rtems_filesystem_location_info_t *loc, struct stat *buf ) {
 80084a0:	37 9c ff f8 	addi sp,sp,-8                                  
 80084a4:	5b 8b 00 08 	sw (sp+8),r11                                  
 80084a8:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_fs_info_t *fs_info;                                            
  IMFS_jnode_t   *the_jnode;                                          
  IMFS_device_t  *io;                                                 
                                                                      
  the_jnode = loc->node_access;                                       
 80084ac:	28 23 00 00 	lw r3,(r1+0)                                   
                                                                      
                                                                      
  switch ( the_jnode->type ) {                                        
 80084b0:	34 05 00 07 	mvi r5,7                                       
 80084b4:	28 64 00 4c 	lw r4,(r3+76)                                  
 80084b8:	54 85 00 29 	bgu r4,r5,800855c <IMFS_stat+0xbc>             <== NEVER TAKEN
 80084bc:	78 05 08 01 	mvhi r5,0x801                                  
 80084c0:	b4 84 20 00 	add r4,r4,r4                                   
 80084c4:	38 a5 38 50 	ori r5,r5,0x3850                               
 80084c8:	b4 84 20 00 	add r4,r4,r4                                   
 80084cc:	b4 a4 20 00 	add r4,r5,r4                                   
 80084d0:	28 84 00 00 	lw r4,(r4+0)                                   
 80084d4:	c0 80 00 00 	b r4                                           
    case IMFS_SYM_LINK:                                               
      buf->st_size = 0;                                               
      break;                                                          
                                                                      
    case IMFS_FIFO:                                                   
      buf->st_size = 0;                                               
 80084d8:	58 40 00 20 	sw (r2+32),r0                                  
                                                                      
  /*                                                                  
   * The device number of the IMFS is the major number and the minor is the
   * instance.                                                        
   */                                                                 
  fs_info = loc->mt_entry->fs_info;                                   
 80084dc:	28 21 00 10 	lw r1,(r1+16)                                  
  buf->st_dev =                                                       
    rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
                                                                      
  buf->st_mode  = the_jnode->st_mode;                                 
 80084e0:	28 6a 00 30 	lw r10,(r3+48)                                 
  buf->st_nlink = the_jnode->st_nlink;                                
 80084e4:	2c 69 00 34 	lhu r9,(r3+52)                                 
   * The device number of the IMFS is the major number and the minor is the
   * instance.                                                        
   */                                                                 
  fs_info = loc->mt_entry->fs_info;                                   
  buf->st_dev =                                                       
    rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
 80084e8:	28 21 00 34 	lw r1,(r1+52)                                  
                                                                      
  buf->st_mode  = the_jnode->st_mode;                                 
  buf->st_nlink = the_jnode->st_nlink;                                
  buf->st_ino   = the_jnode->st_ino;                                  
 80084ec:	28 68 00 38 	lw r8,(r3+56)                                  
  buf->st_uid   = the_jnode->st_uid;                                  
 80084f0:	2c 67 00 3c 	lhu r7,(r3+60)                                 
   * The device number of the IMFS is the major number and the minor is the
   * instance.                                                        
   */                                                                 
  fs_info = loc->mt_entry->fs_info;                                   
  buf->st_dev =                                                       
    rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
 80084f4:	28 2b 00 00 	lw r11,(r1+0)                                  
                                                                      
  buf->st_mode  = the_jnode->st_mode;                                 
  buf->st_nlink = the_jnode->st_nlink;                                
  buf->st_ino   = the_jnode->st_ino;                                  
  buf->st_uid   = the_jnode->st_uid;                                  
  buf->st_gid   = the_jnode->st_gid;                                  
 80084f8:	2c 66 00 3e 	lhu r6,(r3+62)                                 
                                                                      
  buf->st_atime = the_jnode->stat_atime;                              
 80084fc:	28 65 00 40 	lw r5,(r3+64)                                  
  buf->st_mtime = the_jnode->stat_mtime;                              
 8008500:	28 64 00 44 	lw r4,(r3+68)                                  
  buf->st_ctime = the_jnode->stat_ctime;                              
 8008504:	28 63 00 48 	lw r3,(r3+72)                                  
  rtems_device_minor_number _minor                                    
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.__overlay.major = _major;                                      
 8008508:	38 01 ff fe 	mvu r1,0xfffe                                  
  /*                                                                  
   * The device number of the IMFS is the major number and the minor is the
   * instance.                                                        
   */                                                                 
  fs_info = loc->mt_entry->fs_info;                                   
  buf->st_dev =                                                       
 800850c:	58 41 00 00 	sw (r2+0),r1                                   
                                                                      
  buf->st_atime = the_jnode->stat_atime;                              
  buf->st_mtime = the_jnode->stat_mtime;                              
  buf->st_ctime = the_jnode->stat_ctime;                              
                                                                      
  return 0;                                                           
 8008510:	34 01 00 00 	mvi r1,0                                       
  /*                                                                  
   * The device number of the IMFS is the major number and the minor is the
   * instance.                                                        
   */                                                                 
  fs_info = loc->mt_entry->fs_info;                                   
  buf->st_dev =                                                       
 8008514:	58 4b 00 04 	sw (r2+4),r11                                  
    rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
                                                                      
  buf->st_mode  = the_jnode->st_mode;                                 
 8008518:	58 4a 00 0c 	sw (r2+12),r10                                 
  buf->st_nlink = the_jnode->st_nlink;                                
 800851c:	0c 49 00 10 	sh (r2+16),r9                                  
  buf->st_ino   = the_jnode->st_ino;                                  
 8008520:	58 48 00 08 	sw (r2+8),r8                                   
  buf->st_uid   = the_jnode->st_uid;                                  
 8008524:	0c 47 00 12 	sh (r2+18),r7                                  
  buf->st_gid   = the_jnode->st_gid;                                  
 8008528:	0c 46 00 14 	sh (r2+20),r6                                  
                                                                      
  buf->st_atime = the_jnode->stat_atime;                              
 800852c:	58 45 00 24 	sw (r2+36),r5                                  
  buf->st_mtime = the_jnode->stat_mtime;                              
 8008530:	58 44 00 2c 	sw (r2+44),r4                                  
  buf->st_ctime = the_jnode->stat_ctime;                              
 8008534:	58 43 00 34 	sw (r2+52),r3                                  
                                                                      
  return 0;                                                           
}                                                                     
 8008538:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800853c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8008540:	37 9c 00 08 	addi sp,sp,8                                   
 8008544:	c3 a0 00 00 	ret                                            
                                                                      
  switch ( the_jnode->type ) {                                        
                                                                      
    case IMFS_DEVICE:                                                 
      io           = &the_jnode->info.device;                         
      buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor );
 8008548:	28 65 00 54 	lw r5,(r3+84)                                  
 800854c:	28 64 00 50 	lw r4,(r3+80)                                  
 8008550:	58 45 00 1c 	sw (r2+28),r5                                  
 8008554:	58 44 00 18 	sw (r2+24),r4                                  
      break;                                                          
 8008558:	e3 ff ff e1 	bi 80084dc <IMFS_stat+0x3c>                    
    case IMFS_FIFO:                                                   
      buf->st_size = 0;                                               
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( ENOTSUP );                
 800855c:	f8 00 12 08 	calli 800cd7c <__errno>                        
 8008560:	34 02 00 86 	mvi r2,134                                     
 8008564:	58 22 00 00 	sw (r1+0),r2                                   
 8008568:	34 01 ff ff 	mvi r1,-1                                      
  buf->st_atime = the_jnode->stat_atime;                              
  buf->st_mtime = the_jnode->stat_mtime;                              
  buf->st_ctime = the_jnode->stat_ctime;                              
                                                                      
  return 0;                                                           
}                                                                     
 800856c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008570:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8008574:	37 9c 00 08 	addi sp,sp,8                                   
 8008578:	c3 a0 00 00 	ret                                            
      buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor );
      break;                                                          
                                                                      
    case IMFS_LINEAR_FILE:                                            
    case IMFS_MEMORY_FILE:                                            
      buf->st_size = the_jnode->info.file.size;                       
 800857c:	28 64 00 54 	lw r4,(r3+84)                                  
 8008580:	58 44 00 20 	sw (r2+32),r4                                  
      break;                                                          
 8008584:	e3 ff ff d6 	bi 80084dc <IMFS_stat+0x3c>                    
                                                                      

08000e38 <IMFS_unlink>: int IMFS_unlink( rtems_filesystem_location_info_t *parentloc, /* IN */ rtems_filesystem_location_info_t *loc /* IN */ ) {
 8000e38:	37 9c ff d0 	addi sp,sp,-48                                 
 8000e3c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8000e40:	5b 8c 00 10 	sw (sp+16),r12                                 
 8000e44:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8000e48:	5b 8e 00 08 	sw (sp+8),r14                                  
 8000e4c:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_jnode_t                      *node;                            
  rtems_filesystem_location_info_t   the_link;                        
  int                                result = 0;                      
                                                                      
  node = loc->node_access;                                            
 8000e50:	28 4c 00 00 	lw r12,(r2+0)                                  
                                                                      
int IMFS_unlink(                                                      
  rtems_filesystem_location_info_t  *parentloc, /* IN */              
  rtems_filesystem_location_info_t  *loc        /* IN */              
)                                                                     
{                                                                     
 8000e54:	b8 40 58 00 	mv r11,r2                                      
 8000e58:	b8 20 68 00 	mv r13,r1                                      
  /*                                                                  
   * If this is the last last pointer to the node                     
   * free the node.                                                   
   */                                                                 
                                                                      
  if ( node->type == IMFS_HARD_LINK ) {                               
 8000e5c:	29 82 00 4c 	lw r2,(r12+76)                                 
 8000e60:	34 01 00 03 	mvi r1,3                                       
 8000e64:	44 41 00 0f 	be r2,r1,8000ea0 <IMFS_unlink+0x68>            
                                                                      
  /*                                                                  
   *  Now actually free the node we were asked to free.               
   */                                                                 
                                                                      
  result = (*loc->handlers->rmnod_h)( parentloc, loc );               
 8000e68:	29 63 00 08 	lw r3,(r11+8)                                  
 8000e6c:	b9 60 10 00 	mv r2,r11                                      
 8000e70:	b9 a0 08 00 	mv r1,r13                                      
 8000e74:	28 63 00 34 	lw r3,(r3+52)                                  
 8000e78:	d8 60 00 00 	call r3                                        
 8000e7c:	b8 20 10 00 	mv r2,r1                                       
                                                                      
  return result;                                                      
}                                                                     
 8000e80:	b8 40 08 00 	mv r1,r2                                       
 8000e84:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000e88:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8000e8c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8000e90:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8000e94:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8000e98:	37 9c 00 30 	addi sp,sp,48                                  
 8000e9c:	c3 a0 00 00 	ret                                            
   * free the node.                                                   
   */                                                                 
                                                                      
  if ( node->type == IMFS_HARD_LINK ) {                               
                                                                      
    if ( !node->info.hard_link.link_node )                            
 8000ea0:	29 83 00 50 	lw r3,(r12+80)                                 
 8000ea4:	44 60 00 22 	be r3,r0,8000f2c <IMFS_unlink+0xf4>            <== NEVER TAKEN
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    the_link = *loc;                                                  
 8000ea8:	29 64 00 0c 	lw r4,(r11+12)                                 
 8000eac:	29 66 00 04 	lw r6,(r11+4)                                  
 8000eb0:	29 65 00 08 	lw r5,(r11+8)                                  
 8000eb4:	29 62 00 10 	lw r2,(r11+16)                                 
    the_link.node_access = node->info.hard_link.link_node;            
    IMFS_Set_handlers( &the_link );                                   
 8000eb8:	37 8e 00 18 	addi r14,sp,24                                 
 8000ebc:	b9 c0 08 00 	mv r1,r14                                      
  if ( node->type == IMFS_HARD_LINK ) {                               
                                                                      
    if ( !node->info.hard_link.link_node )                            
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    the_link = *loc;                                                  
 8000ec0:	5b 84 00 24 	sw (sp+36),r4                                  
    the_link.node_access = node->info.hard_link.link_node;            
 8000ec4:	5b 83 00 18 	sw (sp+24),r3                                  
  if ( node->type == IMFS_HARD_LINK ) {                               
                                                                      
    if ( !node->info.hard_link.link_node )                            
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    the_link = *loc;                                                  
 8000ec8:	5b 86 00 1c 	sw (sp+28),r6                                  
 8000ecc:	5b 85 00 20 	sw (sp+32),r5                                  
 8000ed0:	5b 82 00 28 	sw (sp+40),r2                                  
    the_link.node_access = node->info.hard_link.link_node;            
    IMFS_Set_handlers( &the_link );                                   
 8000ed4:	f8 00 1a 42 	calli 80077dc <IMFS_Set_handlers>              
    /*                                                                
     *  If removing the last hard link to a node, then we need        
     *  to remove the node that is a link and the node itself.        
     */                                                               
                                                                      
    if ( node->info.hard_link.link_node->st_nlink == 1)               
 8000ed8:	29 83 00 50 	lw r3,(r12+80)                                 
 8000edc:	34 01 00 01 	mvi r1,1                                       
 8000ee0:	2c 64 00 34 	lhu r4,(r3+52)                                 
 8000ee4:	44 81 00 0a 	be r4,r1,8000f0c <IMFS_unlink+0xd4>            
        if ( result != 0 )                                            
            return -1;                                                
    }                                                                 
    else                                                              
    {                                                                 
        node->info.hard_link.link_node->st_nlink --;                  
 8000ee8:	34 84 ff ff 	addi r4,r4,-1                                  
        IMFS_update_ctime( node->info.hard_link.link_node );          
 8000eec:	34 02 00 00 	mvi r2,0                                       
        if ( result != 0 )                                            
            return -1;                                                
    }                                                                 
    else                                                              
    {                                                                 
        node->info.hard_link.link_node->st_nlink --;                  
 8000ef0:	0c 64 00 34 	sh (r3+52),r4                                  
        IMFS_update_ctime( node->info.hard_link.link_node );          
 8000ef4:	37 81 00 2c 	addi r1,sp,44                                  
 8000ef8:	f8 00 01 9a 	calli 8001560 <gettimeofday>                   
 8000efc:	29 81 00 50 	lw r1,(r12+80)                                 
 8000f00:	2b 82 00 2c 	lw r2,(sp+44)                                  
 8000f04:	58 22 00 48 	sw (r1+72),r2                                  
 8000f08:	e3 ff ff d8 	bi 8000e68 <IMFS_unlink+0x30>                  
     *  to remove the node that is a link and the node itself.        
     */                                                               
                                                                      
    if ( node->info.hard_link.link_node->st_nlink == 1)               
    {                                                                 
        result = (*the_link.handlers->rmnod_h)( parentloc, &the_link );
 8000f0c:	2b 83 00 20 	lw r3,(sp+32)                                  
 8000f10:	b9 c0 10 00 	mv r2,r14                                      
 8000f14:	b9 a0 08 00 	mv r1,r13                                      
 8000f18:	28 63 00 34 	lw r3,(r3+52)                                  
 8000f1c:	d8 60 00 00 	call r3                                        
        if ( result != 0 )                                            
            return -1;                                                
 8000f20:	34 02 ff ff 	mvi r2,-1                                      
     */                                                               
                                                                      
    if ( node->info.hard_link.link_node->st_nlink == 1)               
    {                                                                 
        result = (*the_link.handlers->rmnod_h)( parentloc, &the_link );
        if ( result != 0 )                                            
 8000f24:	44 20 ff d1 	be r1,r0,8000e68 <IMFS_unlink+0x30>            
 8000f28:	e3 ff ff d6 	bi 8000e80 <IMFS_unlink+0x48>                  
   */                                                                 
                                                                      
  if ( node->type == IMFS_HARD_LINK ) {                               
                                                                      
    if ( !node->info.hard_link.link_node )                            
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8000f2c:	f8 00 2f 94 	calli 800cd7c <__errno>                        <== NOT EXECUTED
 8000f30:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 8000f34:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8000f38:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8000f3c:	e3 ff ff d1 	bi 8000e80 <IMFS_unlink+0x48>                  <== NOT EXECUTED
                                                                      

08000f40 <IMFS_unmount>: #include <rtems/seterr.h> int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) {
 8000f40:	37 9c ff fc 	addi sp,sp,-4                                  
 8000f44:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_jnode_t  *node;                                                
                                                                      
  node = mt_entry->mt_point_node.node_access;                         
 8000f48:	28 21 00 08 	lw r1,(r1+8)                                   
                                                                      
  /*                                                                  
   * Is the node that we are mounting onto a directory node ?         
   */                                                                 
                                                                      
  if ( node->type != IMFS_DIRECTORY )                                 
 8000f4c:	34 02 00 01 	mvi r2,1                                       
 8000f50:	28 23 00 4c 	lw r3,(r1+76)                                  
 8000f54:	5c 62 00 08 	bne r3,r2,8000f74 <IMFS_unmount+0x34>          <== NEVER TAKEN
                                                                      
  /*                                                                  
   * Did the node indicate that there was a directory mounted here?   
   */                                                                 
                                                                      
  if ( node->info.directory.mt_fs == NULL )                           
 8000f58:	28 22 00 5c 	lw r2,(r1+92)                                  
 8000f5c:	44 40 00 0b 	be r2,r0,8000f88 <IMFS_unmount+0x48>           <== NEVER TAKEN
  /*                                                                  
   * Set the mt_fs pointer to indicate that there is no longer        
   * a file system mounted to this point.                             
   */                                                                 
                                                                      
  node->info.directory.mt_fs = NULL;                                  
 8000f60:	58 20 00 5c 	sw (r1+92),r0                                  
                                                                      
  return 0;                                                           
 8000f64:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8000f68:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000f6c:	37 9c 00 04 	addi sp,sp,4                                   
 8000f70:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * Is the node that we are mounting onto a directory node ?         
   */                                                                 
                                                                      
  if ( node->type != IMFS_DIRECTORY )                                 
    rtems_set_errno_and_return_minus_one( ENOTDIR );                  
 8000f74:	f8 00 2f 82 	calli 800cd7c <__errno>                        <== NOT EXECUTED
 8000f78:	34 02 00 14 	mvi r2,20                                      <== NOT EXECUTED
 8000f7c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8000f80:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8000f84:	e3 ff ff f9 	bi 8000f68 <IMFS_unmount+0x28>                 <== NOT EXECUTED
  /*                                                                  
   * Did the node indicate that there was a directory mounted here?   
   */                                                                 
                                                                      
  if ( node->info.directory.mt_fs == NULL )                           
    rtems_set_errno_and_return_minus_one( EINVAL );  /* XXX */        
 8000f88:	f8 00 2f 7d 	calli 800cd7c <__errno>                        <== NOT EXECUTED
 8000f8c:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 8000f90:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8000f94:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8000f98:	e3 ff ff f4 	bi 8000f68 <IMFS_unmount+0x28>                 <== NOT EXECUTED
                                                                      

0800179c <RTEMS_Malloc_Initialize>: void RTEMS_Malloc_Initialize( void *heap_begin, uintptr_t heap_size, size_t sbrk_amount ) {
 800179c:	37 9c ff ec 	addi sp,sp,-20                                 
 80017a0:	5b 8b 00 14 	sw (sp+20),r11                                 
 80017a4:	5b 8c 00 10 	sw (sp+16),r12                                 
 80017a8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80017ac:	5b 8e 00 08 	sw (sp+8),r14                                  
 80017b0:	5b 9d 00 04 	sw (sp+4),ra                                   
  /*                                                                  
   *  If configured, initialize the statistics support                
  */                                                                  
  if ( rtems_malloc_statistics_helpers != NULL ) {                    
 80017b4:	78 04 08 01 	mvhi r4,0x801                                  
 80017b8:	38 84 46 c0 	ori r4,r4,0x46c0                               
 80017bc:	28 84 00 00 	lw r4,(r4+0)                                   
void RTEMS_Malloc_Initialize(                                         
  void *heap_begin,                                                   
  uintptr_t heap_size,                                                
  size_t sbrk_amount                                                  
)                                                                     
{                                                                     
 80017c0:	b8 20 68 00 	mv r13,r1                                      
 80017c4:	b8 40 70 00 	mv r14,r2                                      
 80017c8:	b8 60 58 00 	mv r11,r3                                      
  /*                                                                  
   *  If configured, initialize the statistics support                
  */                                                                  
  if ( rtems_malloc_statistics_helpers != NULL ) {                    
 80017cc:	44 80 00 03 	be r4,r0,80017d8 <RTEMS_Malloc_Initialize+0x3c>
    (*rtems_malloc_statistics_helpers->initialize)();                 
 80017d0:	28 81 00 00 	lw r1,(r4+0)                                   
 80017d4:	d8 20 00 00 	call r1                                        
  }                                                                   
                                                                      
  /*                                                                  
   *  Initialize the garbage collection list to start with nothing on it.
   */                                                                 
  malloc_deferred_frees_initialize();                                 
 80017d8:	fb ff ff d2 	calli 8001720 <malloc_deferred_frees_initialize>
                                                                      
  /*                                                                  
   *  Initialize the optional sbrk support for extending the heap     
   */                                                                 
  if ( rtems_malloc_sbrk_helpers != NULL ) {                          
 80017dc:	78 04 08 01 	mvhi r4,0x801                                  
 80017e0:	38 84 46 c4 	ori r4,r4,0x46c4                               
 80017e4:	28 81 00 00 	lw r1,(r4+0)                                   
 80017e8:	44 20 00 07 	be r1,r0,8001804 <RTEMS_Malloc_Initialize+0x68>
    heap_begin = (*rtems_malloc_sbrk_helpers->initialize)(            
 80017ec:	28 23 00 00 	lw r3,(r1+0)                                   
 80017f0:	b9 60 10 00 	mv r2,r11                                      
 80017f4:	b9 a0 08 00 	mv r1,r13                                      
 80017f8:	d8 60 00 00 	call r3                                        
 80017fc:	b8 20 68 00 	mv r13,r1                                      
      heap_begin,                                                     
      sbrk_amount                                                     
    );                                                                
    heap_size  = (uintptr_t) sbrk_amount;                             
 8001800:	b9 60 70 00 	mv r14,r11                                     
   *  of the time under UNIX because zero'ing memory when it is first 
   *  given to a process eliminates the chance of a process seeing data
   *  left over from another process.  This would be a security violation.
   */                                                                 
                                                                      
  if (                                                                
 8001804:	78 0c 08 01 	mvhi r12,0x801                                 
 8001808:	39 8c 46 bc 	ori r12,r12,0x46bc                             
 800180c:	41 82 00 00 	lbu r2,(r12+0)                                 
 8001810:	78 0b 08 01 	mvhi r11,0x801                                 
 8001814:	39 6b 40 4c 	ori r11,r11,0x404c                             
 8001818:	5c 40 00 0d 	bne r2,r0,800184c <RTEMS_Malloc_Initialize+0xb0>
    !rtems_unified_work_area                                          
      && rtems_configuration_get_do_zero_of_workspace()               
 800181c:	78 01 08 01 	mvhi r1,0x801                                  
 8001820:	38 21 40 f4 	ori r1,r1,0x40f4                               
 8001824:	40 21 00 28 	lbu r1,(r1+40)                                 
 8001828:	5c 22 00 17 	bne r1,r2,8001884 <RTEMS_Malloc_Initialize+0xe8>
  void *area_begin,                                                   
  uintptr_t area_size,                                                
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return _Heap_Initialize( heap, area_begin, area_size, page_size );  
 800182c:	78 0b 08 01 	mvhi r11,0x801                                 
 8001830:	39 6b 40 4c 	ori r11,r11,0x404c                             
 8001834:	29 61 00 00 	lw r1,(r11+0)                                  
 8001838:	b9 a0 10 00 	mv r2,r13                                      
 800183c:	b9 c0 18 00 	mv r3,r14                                      
 8001840:	34 04 00 08 	mvi r4,8                                       
 8001844:	f8 00 0a 47 	calli 8004160 <_Heap_Initialize>               
      RTEMS_Malloc_Heap,                                              
      heap_begin,                                                     
      heap_size,                                                      
      CPU_HEAP_ALIGNMENT                                              
    );                                                                
    if ( status == 0 ) {                                              
 8001848:	44 20 00 17 	be r1,r0,80018a4 <RTEMS_Malloc_Initialize+0x108>
      rtems_fatal_error_occurred( RTEMS_NO_MEMORY );                  
    }                                                                 
  }                                                                   
                                                                      
  MSBUMP( space_available, _Protected_heap_Get_size(RTEMS_Malloc_Heap) );
 800184c:	78 0c 08 01 	mvhi r12,0x801                                 
 8001850:	39 8c 47 a8 	ori r12,r12,0x47a8                             
 8001854:	29 61 00 00 	lw r1,(r11+0)                                  
 8001858:	29 8b 00 00 	lw r11,(r12+0)                                 
 800185c:	f8 00 0d b1 	calli 8004f20 <_Protected_heap_Get_size>       
 8001860:	b4 2b 08 00 	add r1,r1,r11                                  
 8001864:	59 81 00 00 	sw (r12+0),r1                                  
}                                                                     
 8001868:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800186c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8001870:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8001874:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8001878:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800187c:	37 9c 00 14 	addi sp,sp,20                                  
 8001880:	c3 a0 00 00 	ret                                            
                                                                      
  if (                                                                
    !rtems_unified_work_area                                          
      && rtems_configuration_get_do_zero_of_workspace()               
  ) {                                                                 
     memset( heap_begin, 0, heap_size );                              
 8001884:	b9 a0 08 00 	mv r1,r13                                      
 8001888:	b9 c0 18 00 	mv r3,r14                                      
 800188c:	f8 00 30 33 	calli 800d958 <memset>                         
   *  Unfortunately we cannot use assert if this fails because if this
   *  has failed we do not have a heap and if we do not have a heap   
   *  STDIO cannot work because there will be no buffers.             
   */                                                                 
                                                                      
  if ( !rtems_unified_work_area ) {                                   
 8001890:	41 81 00 00 	lbu r1,(r12+0)                                 
 8001894:	78 0b 08 01 	mvhi r11,0x801                                 
 8001898:	39 6b 40 4c 	ori r11,r11,0x404c                             
 800189c:	44 20 ff e4 	be r1,r0,800182c <RTEMS_Malloc_Initialize+0x90><== ALWAYS TAKEN
 80018a0:	e3 ff ff eb 	bi 800184c <RTEMS_Malloc_Initialize+0xb0>      <== NOT EXECUTED
      heap_begin,                                                     
      heap_size,                                                      
      CPU_HEAP_ALIGNMENT                                              
    );                                                                
    if ( status == 0 ) {                                              
      rtems_fatal_error_occurred( RTEMS_NO_MEMORY );                  
 80018a4:	34 01 00 1a 	mvi r1,26                                      
 80018a8:	f8 00 06 f4 	calli 8003478 <rtems_fatal_error_occurred>     
                                                                      

0800111c <Stack_check_Dump_threads_usage>: static rtems_printk_plugin_t print_handler; void Stack_check_Dump_threads_usage( Thread_Control *the_thread ) {
 800111c:	37 9c ff d0 	addi sp,sp,-48                                 
 8001120:	5b 8b 00 28 	sw (sp+40),r11                                 
 8001124:	5b 8c 00 24 	sw (sp+36),r12                                 
 8001128:	5b 8d 00 20 	sw (sp+32),r13                                 
 800112c:	5b 8e 00 1c 	sw (sp+28),r14                                 
 8001130:	5b 8f 00 18 	sw (sp+24),r15                                 
 8001134:	5b 90 00 14 	sw (sp+20),r16                                 
 8001138:	5b 91 00 10 	sw (sp+16),r17                                 
 800113c:	5b 92 00 0c 	sw (sp+12),r18                                 
 8001140:	5b 93 00 08 	sw (sp+8),r19                                  
 8001144:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Obtain interrupt stack information                              
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (the_thread == (Thread_Control *) -1) {                        
 8001148:	34 02 ff ff 	mvi r2,-1                                      
 800114c:	44 22 00 62 	be r1,r2,80012d4 <Stack_check_Dump_threads_usage+0x1b8>
      current = 0;                                                    
    } else                                                            
  #endif                                                              
    {                                                                 
      stack  = &the_thread->Start.Initial_stack;                      
      current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
 8001150:	28 31 01 08 	lw r17,(r1+264)                                
 8001154:	28 27 00 bc 	lw r7,(r1+188)                                 
      the_thread = 0;                                                 
      current = 0;                                                    
    } else                                                            
  #endif                                                              
    {                                                                 
      stack  = &the_thread->Start.Initial_stack;                      
 8001158:	34 2d 00 b8 	addi r13,r1,184                                
      current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
    }                                                                 
                                                                      
  low  = Stack_check_usable_stack_start(stack);                       
  size = Stack_check_usable_stack_size(stack);                        
 800115c:	29 ae 00 00 	lw r14,(r13+0)                                 
    /*                                                                
     * start at lower memory and find first word that does not        
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
 8001160:	34 e2 00 20 	addi r2,r7,32                                  
    {                                                                 
      stack  = &the_thread->Start.Initial_stack;                      
      current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
    }                                                                 
                                                                      
  low  = Stack_check_usable_stack_start(stack);                       
 8001164:	34 e6 00 10 	addi r6,r7,16                                  
  size = Stack_check_usable_stack_size(stack);                        
 8001168:	35 ce ff f0 	addi r14,r14,-16                               
{                                                                     
  const uint32_t   *base, *ebase;                                     
  uint32_t   length;                                                  
                                                                      
  base = s;                                                           
  length = n/4;                                                       
 800116c:	01 c4 00 01 	srui r4,r14,1                                  
  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;                                                         
 8001170:	34 0f 00 00 	mvi r15,0                                      
{                                                                     
  const uint32_t   *base, *ebase;                                     
  uint32_t   length;                                                  
                                                                      
  base = s;                                                           
  length = n/4;                                                       
 8001174:	00 84 00 01 	srui r4,r4,1                                   
     * start at lower memory and find first word that does not        
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
    for (ebase = base + length; base < ebase; base++)                 
 8001178:	b4 84 20 00 	add r4,r4,r4                                   
 800117c:	b4 84 20 00 	add r4,r4,r4                                   
 8001180:	b4 44 20 00 	add r4,r2,r4                                   
 8001184:	50 44 00 09 	bgeu r2,r4,80011a8 <Stack_check_Dump_threads_usage+0x8c><== NEVER TAKEN
      if (*base != U32_PATTERN)                                       
 8001188:	28 e3 00 20 	lw r3,(r7+32)                                  
 800118c:	78 07 08 01 	mvhi r7,0x801                                  
 8001190:	38 e7 69 b8 	ori r7,r7,0x69b8                               
 8001194:	28 e5 00 00 	lw r5,(r7+0)                                   
 8001198:	5c 65 00 39 	bne r3,r5,800127c <Stack_check_Dump_threads_usage+0x160><== NEVER TAKEN
     * start at lower memory and find first word that does not        
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
    for (ebase = base + length; base < ebase; base++)                 
 800119c:	34 42 00 04 	addi r2,r2,4                                   
 80011a0:	54 82 00 35 	bgu r4,r2,8001274 <Stack_check_Dump_threads_usage+0x158><== ALWAYS TAKEN
  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;                                                         
 80011a4:	34 0f 00 00 	mvi r15,0                                      <== NOT EXECUTED
                                                                      
                                                                      
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if ( the_thread )                                                 
 80011a8:	44 20 00 3a 	be r1,r0,8001290 <Stack_check_Dump_threads_usage+0x174><== NOT EXECUTED
  #endif                                                              
    {                                                                 
      (*print_handler)(                                               
 80011ac:	28 30 00 08 	lw r16,(r1+8)                                  
 80011b0:	78 0c 08 01 	mvhi r12,0x801                                 
 80011b4:	39 8c 87 2c 	ori r12,r12,0x872c                             
 80011b8:	78 0b 08 01 	mvhi r11,0x801                                 
 80011bc:	29 93 00 00 	lw r19,(r12+0)                                 
 80011c0:	37 83 00 2c 	addi r3,sp,44                                  
 80011c4:	34 02 00 05 	mvi r2,5                                       
 80011c8:	39 6b 87 30 	ori r11,r11,0x8730                             
 80011cc:	ba 00 08 00 	mv r1,r16                                      
 80011d0:	29 72 00 00 	lw r18,(r11+0)                                 
 80011d4:	f8 00 13 7b 	calli 8005fc0 <rtems_object_get_name>          
 80011d8:	78 02 08 01 	mvhi r2,0x801                                  
 80011dc:	b8 20 20 00 	mv r4,r1                                       
 80011e0:	38 42 68 20 	ori r2,r2,0x6820                               
 80011e4:	ba 60 08 00 	mv r1,r19                                      
 80011e8:	ba 00 18 00 	mv r3,r16                                      
 80011ec:	da 40 00 00 	call r18                                       
                                                                      
  (*print_handler)(                                                   
    print_context,                                                    
    " %010p - %010p %010p  %8" PRId32 "   ",                          
    stack->area,                                                      
    stack->area + stack->size - 1,                                    
 80011f0:	29 a4 00 00 	lw r4,(r13+0)                                  
 80011f4:	29 a3 00 04 	lw r3,(r13+4)                                  
      else {                                                          
        (*print_handler)( print_context, "0x%08" PRIx32 "  INTR", ~0 );
      }                                                               
    #endif                                                            
                                                                      
  (*print_handler)(                                                   
 80011f8:	29 67 00 00 	lw r7,(r11+0)                                  
 80011fc:	29 81 00 00 	lw r1,(r12+0)                                  
    print_context,                                                    
    " %010p - %010p %010p  %8" PRId32 "   ",                          
    stack->area,                                                      
    stack->area + stack->size - 1,                                    
 8001200:	34 84 ff ff 	addi r4,r4,-1                                  
      else {                                                          
        (*print_handler)( print_context, "0x%08" PRIx32 "  INTR", ~0 );
      }                                                               
    #endif                                                            
                                                                      
  (*print_handler)(                                                   
 8001204:	78 02 08 01 	mvhi r2,0x801                                  
 8001208:	38 42 68 40 	ori r2,r2,0x6840                               
 800120c:	b4 64 20 00 	add r4,r3,r4                                   
 8001210:	ba 20 28 00 	mv r5,r17                                      
 8001214:	b9 c0 30 00 	mv r6,r14                                      
 8001218:	d8 e0 00 00 	call r7                                        
    stack->area + stack->size - 1,                                    
    current,                                                          
    size                                                              
  );                                                                  
                                                                      
  if (Stack_check_Initialized == 0) {                                 
 800121c:	78 01 08 01 	mvhi r1,0x801                                  
 8001220:	38 21 87 34 	ori r1,r1,0x8734                               
 8001224:	28 21 00 00 	lw r1,(r1+0)                                   
 8001228:	44 20 00 25 	be r1,r0,80012bc <Stack_check_Dump_threads_usage+0x1a0><== NEVER TAKEN
    (*print_handler)( print_context, "Unavailable\n" );               
  } else {                                                            
    (*print_handler)( print_context, "%8" PRId32 "\n", used );        
 800122c:	29 64 00 00 	lw r4,(r11+0)                                  
 8001230:	29 81 00 00 	lw r1,(r12+0)                                  
 8001234:	78 02 08 01 	mvhi r2,0x801                                  
 8001238:	38 42 68 70 	ori r2,r2,0x6870                               
 800123c:	b9 e0 18 00 	mv r3,r15                                      
 8001240:	d8 80 00 00 	call r4                                        
  }                                                                   
                                                                      
                                                                      
}                                                                     
 8001244:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001248:	2b 8b 00 28 	lw r11,(sp+40)                                 
 800124c:	2b 8c 00 24 	lw r12,(sp+36)                                 
 8001250:	2b 8d 00 20 	lw r13,(sp+32)                                 
 8001254:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 8001258:	2b 8f 00 18 	lw r15,(sp+24)                                 
 800125c:	2b 90 00 14 	lw r16,(sp+20)                                 
 8001260:	2b 91 00 10 	lw r17,(sp+16)                                 
 8001264:	2b 92 00 0c 	lw r18,(sp+12)                                 
 8001268:	2b 93 00 08 	lw r19,(sp+8)                                  
 800126c:	37 9c 00 30 	addi sp,sp,48                                  
 8001270:	c3 a0 00 00 	ret                                            
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
    for (ebase = base + length; base < ebase; base++)                 
      if (*base != U32_PATTERN)                                       
 8001274:	28 47 00 00 	lw r7,(r2+0)                                   
 8001278:	44 e3 ff c9 	be r7,r3,800119c <Stack_check_Dump_threads_usage+0x80>
  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;                                                         
 800127c:	34 0f 00 00 	mvi r15,0                                      
  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 )                                              
 8001280:	44 40 ff ca 	be r2,r0,80011a8 <Stack_check_Dump_threads_usage+0x8c><== NEVER TAKEN
    used = Stack_check_Calculate_used( low, size, high_water_mark );  
 8001284:	b4 ce 78 00 	add r15,r6,r14                                 
 8001288:	c9 e2 78 00 	sub r15,r15,r2                                 
  else                                                                
    used = 0;                                                         
                                                                      
                                                                      
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if ( the_thread )                                                 
 800128c:	5c 20 ff c8 	bne r1,r0,80011ac <Stack_check_Dump_threads_usage+0x90>
        rtems_object_get_name( the_thread->Object.id, sizeof(name), name )
      );                                                              
    }                                                                 
    #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                        
      else {                                                          
        (*print_handler)( print_context, "0x%08" PRIx32 "  INTR", ~0 );
 8001290:	78 0b 08 01 	mvhi r11,0x801                                 
 8001294:	78 0c 08 01 	mvhi r12,0x801                                 
 8001298:	39 6b 87 30 	ori r11,r11,0x8730                             
 800129c:	39 8c 87 2c 	ori r12,r12,0x872c                             
 80012a0:	29 64 00 00 	lw r4,(r11+0)                                  
 80012a4:	29 81 00 00 	lw r1,(r12+0)                                  
 80012a8:	78 02 08 01 	mvhi r2,0x801                                  
 80012ac:	38 42 68 30 	ori r2,r2,0x6830                               
 80012b0:	34 03 ff ff 	mvi r3,-1                                      
 80012b4:	d8 80 00 00 	call r4                                        
 80012b8:	e3 ff ff ce 	bi 80011f0 <Stack_check_Dump_threads_usage+0xd4>
    current,                                                          
    size                                                              
  );                                                                  
                                                                      
  if (Stack_check_Initialized == 0) {                                 
    (*print_handler)( print_context, "Unavailable\n" );               
 80012bc:	29 63 00 00 	lw r3,(r11+0)                                  <== NOT EXECUTED
 80012c0:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 80012c4:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 80012c8:	38 42 68 60 	ori r2,r2,0x6860                               <== NOT EXECUTED
 80012cc:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
 80012d0:	e3 ff ff dd 	bi 8001244 <Stack_check_Dump_threads_usage+0x128><== NOT EXECUTED
  /*                                                                  
   *  Obtain interrupt stack information                              
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (the_thread == (Thread_Control *) -1) {                        
      if (!Stack_check_Interrupt_stack.area)                          
 80012d4:	78 0d 08 01 	mvhi r13,0x801                                 
 80012d8:	39 ad 87 d0 	ori r13,r13,0x87d0                             
 80012dc:	29 a7 00 04 	lw r7,(r13+4)                                  
        return;                                                       
      stack = &Stack_check_Interrupt_stack;                           
      the_thread = 0;                                                 
      current = 0;                                                    
 80012e0:	34 11 00 00 	mvi r17,0                                      
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (the_thread == (Thread_Control *) -1) {                        
      if (!Stack_check_Interrupt_stack.area)                          
        return;                                                       
      stack = &Stack_check_Interrupt_stack;                           
      the_thread = 0;                                                 
 80012e4:	34 01 00 00 	mvi r1,0                                       
  /*                                                                  
   *  Obtain interrupt stack information                              
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (the_thread == (Thread_Control *) -1) {                        
      if (!Stack_check_Interrupt_stack.area)                          
 80012e8:	5c e0 ff 9d 	bne r7,r0,800115c <Stack_check_Dump_threads_usage+0x40><== ALWAYS TAKEN
 80012ec:	e3 ff ff d6 	bi 8001244 <Stack_check_Dump_threads_usage+0x128><== NOT EXECUTED
                                                                      

080012f0 <Stack_check_Initialize>: /* * Stack_check_Initialize */ void Stack_check_Initialize( void ) {
 80012f0:	37 9c ff f8 	addi sp,sp,-8                                  
 80012f4:	5b 8b 00 08 	sw (sp+8),r11                                  
 80012f8:	5b 9d 00 04 	sw (sp+4),ra                                   
  static    uint32_t pattern[ 4 ] = {                                 
    0xFEEDF00D, 0x0BAD0D06,  /* FEED FOOD to  BAD DOG */              
    0xDEADF00D, 0x600D0D06   /* DEAD FOOD but GOOD DOG */             
  };                                                                  
                                                                      
  if ( Stack_check_Initialized )                                      
 80012fc:	78 0b 08 01 	mvhi r11,0x801                                 
 8001300:	39 6b 87 34 	ori r11,r11,0x8734                             
 8001304:	29 61 00 00 	lw r1,(r11+0)                                  
 8001308:	5c 20 00 24 	bne r1,r0,8001398 <Stack_check_Initialize+0xa8>
  /*                                                                  
   * Dope the pattern and fill areas                                  
   */                                                                 
  p = Stack_check_Pattern.pattern;                                    
  for ( i = 0; i < PATTERN_SIZE_WORDS; i++ ) {                        
      p[i] = pattern[ i%4 ];                                          
 800130c:	78 06 08 01 	mvhi r6,0x801                                  
 8001310:	38 c6 69 bc 	ori r6,r6,0x69bc                               
 8001314:	28 c5 00 00 	lw r5,(r6+0)                                   
  /*                                                                  
   * If appropriate, setup the interrupt stack for high water testing 
   * also.                                                            
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {      
 8001318:	78 03 08 01 	mvhi r3,0x801                                  
  /*                                                                  
   * Dope the pattern and fill areas                                  
   */                                                                 
  p = Stack_check_Pattern.pattern;                                    
  for ( i = 0; i < PATTERN_SIZE_WORDS; i++ ) {                        
      p[i] = pattern[ i%4 ];                                          
 800131c:	78 02 08 01 	mvhi r2,0x801                                  
 8001320:	78 06 08 01 	mvhi r6,0x801                                  
 8001324:	38 42 87 c0 	ori r2,r2,0x87c0                               
 8001328:	38 c6 69 c0 	ori r6,r6,0x69c0                               
  /*                                                                  
   * If appropriate, setup the interrupt stack for high water testing 
   * also.                                                            
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {      
 800132c:	38 63 8e 28 	ori r3,r3,0x8e28                               
 8001330:	28 64 00 00 	lw r4,(r3+0)                                   
  /*                                                                  
   * Dope the pattern and fill areas                                  
   */                                                                 
  p = Stack_check_Pattern.pattern;                                    
  for ( i = 0; i < PATTERN_SIZE_WORDS; i++ ) {                        
      p[i] = pattern[ i%4 ];                                          
 8001334:	58 45 00 00 	sw (r2+0),r5                                   
 8001338:	28 c5 00 00 	lw r5,(r6+0)                                   
 800133c:	78 06 08 01 	mvhi r6,0x801                                  
 8001340:	38 c6 69 c4 	ori r6,r6,0x69c4                               
 8001344:	58 45 00 04 	sw (r2+4),r5                                   
 8001348:	28 c5 00 00 	lw r5,(r6+0)                                   
 800134c:	78 06 08 01 	mvhi r6,0x801                                  
 8001350:	38 c6 69 c8 	ori r6,r6,0x69c8                               
 8001354:	58 45 00 08 	sw (r2+8),r5                                   
 8001358:	28 c5 00 00 	lw r5,(r6+0)                                   
 800135c:	58 45 00 0c 	sw (r2+12),r5                                  
  /*                                                                  
   * If appropriate, setup the interrupt stack for high water testing 
   * also.                                                            
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {      
 8001360:	44 81 00 0c 	be r4,r1,8001390 <Stack_check_Initialize+0xa0> <== NEVER TAKEN
 8001364:	28 63 00 04 	lw r3,(r3+4)                                   
 8001368:	44 60 00 0a 	be r3,r0,8001390 <Stack_check_Initialize+0xa0> <== NEVER TAKEN
      Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;    
 800136c:	78 05 08 01 	mvhi r5,0x801                                  
      Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
 8001370:	c8 64 30 00 	sub r6,r3,r4                                   
   * If appropriate, setup the interrupt stack for high water testing 
   * also.                                                            
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {      
      Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;    
 8001374:	38 a5 87 d0 	ori r5,r5,0x87d0                               
      Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
                                  (char *) _CPU_Interrupt_stack_low;  
      Stack_check_Dope_stack(&Stack_check_Interrupt_stack);           
 8001378:	b8 80 08 00 	mv r1,r4                                       
 800137c:	34 02 00 a5 	mvi r2,165                                     
 8001380:	b8 c0 18 00 	mv r3,r6                                       
   * If appropriate, setup the interrupt stack for high water testing 
   * also.                                                            
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {      
      Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;    
 8001384:	58 a4 00 04 	sw (r5+4),r4                                   
      Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
 8001388:	58 a6 00 00 	sw (r5+0),r6                                   
                                  (char *) _CPU_Interrupt_stack_low;  
      Stack_check_Dope_stack(&Stack_check_Interrupt_stack);           
 800138c:	f8 00 3d fc 	calli 8010b7c <memset>                         
   }                                                                  
  #endif                                                              
                                                                      
  Stack_check_Initialized = 1;                                        
 8001390:	34 01 00 01 	mvi r1,1                                       
 8001394:	59 61 00 00 	sw (r11+0),r1                                  
}                                                                     
 8001398:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800139c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80013a0:	37 9c 00 08 	addi sp,sp,8                                   
 80013a4:	c3 a0 00 00 	ret                                            
                                                                      

080036f0 <_API_extensions_Run_postdriver>: * * _API_extensions_Run_postdriver */ void _API_extensions_Run_postdriver( void ) {
 80036f0:	37 9c ff f4 	addi sp,sp,-12                                 
 80036f4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80036f8:	5b 8c 00 08 	sw (sp+8),r12                                  
 80036fc:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    the_extension = (API_extensions_Control *) the_node;              
                                                                      
    (*the_extension->postswitch_hook)( _Thread_Executing );           
  }                                                                   
}                                                                     
 8003700:	78 01 08 01 	mvhi r1,0x801                                  
 8003704:	38 21 4a 70 	ori r1,r1,0x4a70                               
 8003708:	28 2b 00 00 	lw r11,(r1+0)                                  
void _API_extensions_Run_postdriver( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
 800370c:	78 0c 08 01 	mvhi r12,0x801                                 
 8003710:	39 8c 4a 74 	ori r12,r12,0x4a74                             
 8003714:	45 6c 00 05 	be r11,r12,8003728 <_API_extensions_Run_postdriver+0x38><== NEVER TAKEN
     *  Currently all APIs configure this hook so it is always non-NULL.
     */                                                               
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)              
    if ( the_extension->postdriver_hook )                             
#endif                                                                
      (*the_extension->postdriver_hook)();                            
 8003718:	29 61 00 08 	lw r1,(r11+8)                                  
 800371c:	d8 20 00 00 	call r1                                        
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
        !_Chain_Is_tail( &_API_extensions_List, the_node ) ;          
        the_node = the_node->next ) {                                 
 8003720:	29 6b 00 00 	lw r11,(r11+0)                                 
void _API_extensions_Run_postdriver( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
 8003724:	5d 6c ff fd 	bne r11,r12,8003718 <_API_extensions_Run_postdriver+0x28>
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)              
    if ( the_extension->postdriver_hook )                             
#endif                                                                
      (*the_extension->postdriver_hook)();                            
  }                                                                   
}                                                                     
 8003728:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800372c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003730:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003734:	37 9c 00 0c 	addi sp,sp,12                                  
 8003738:	c3 a0 00 00 	ret                                            
                                                                      

0800373c <_API_extensions_Run_postswitch>: * * _API_extensions_Run_postswitch */ void _API_extensions_Run_postswitch( void ) {
 800373c:	37 9c ff f0 	addi sp,sp,-16                                 
 8003740:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003744:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003748:	5b 8d 00 08 	sw (sp+8),r13                                  
 800374c:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    the_extension = (API_extensions_Control *) the_node;              
                                                                      
    (*the_extension->postswitch_hook)( _Thread_Executing );           
  }                                                                   
}                                                                     
 8003750:	78 01 08 01 	mvhi r1,0x801                                  
 8003754:	38 21 4a 70 	ori r1,r1,0x4a70                               
 8003758:	28 2b 00 00 	lw r11,(r1+0)                                  
void _API_extensions_Run_postswitch( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
 800375c:	78 0c 08 01 	mvhi r12,0x801                                 
 8003760:	39 8c 4a 74 	ori r12,r12,0x4a74                             
 8003764:	45 6c 00 08 	be r11,r12,8003784 <_API_extensions_Run_postswitch+0x48><== NEVER TAKEN
 8003768:	78 0d 08 01 	mvhi r13,0x801                                 
 800376c:	39 ad 4d b4 	ori r13,r13,0x4db4                             
        !_Chain_Is_tail( &_API_extensions_List, the_node ) ;          
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (API_extensions_Control *) the_node;              
                                                                      
    (*the_extension->postswitch_hook)( _Thread_Executing );           
 8003770:	29 62 00 0c 	lw r2,(r11+12)                                 
 8003774:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8003778:	d8 40 00 00 	call r2                                        
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
        !_Chain_Is_tail( &_API_extensions_List, the_node ) ;          
        the_node = the_node->next ) {                                 
 800377c:	29 6b 00 00 	lw r11,(r11+0)                                 
void _API_extensions_Run_postswitch( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
 8003780:	5d 6c ff fc 	bne r11,r12,8003770 <_API_extensions_Run_postswitch+0x34>
                                                                      
    the_extension = (API_extensions_Control *) the_node;              
                                                                      
    (*the_extension->postswitch_hook)( _Thread_Executing );           
  }                                                                   
}                                                                     
 8003784:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003788:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800378c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003790:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003794:	37 9c 00 10 	addi sp,sp,16                                  
 8003798:	c3 a0 00 00 	ret                                            
                                                                      

08006488 <_CORE_RWLock_Release>: */ CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock ) {
 8006488:	37 9c ff f4 	addi sp,sp,-12                                 
 800648c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8006490:	5b 8c 00 08 	sw (sp+8),r12                                  
 8006494:	5b 9d 00 04 	sw (sp+4),ra                                   
  ISR_Level       level;                                              
  Thread_Control *executing = _Thread_Executing;                      
 8006498:	78 02 08 01 	mvhi r2,0x801                                  
 800649c:	38 42 9d 84 	ori r2,r2,0x9d84                               
 80064a0:	28 43 00 0c 	lw r3,(r2+12)                                  
 */                                                                   
                                                                      
CORE_RWLock_Status _CORE_RWLock_Release(                              
  CORE_RWLock_Control  *the_rwlock                                    
)                                                                     
{                                                                     
 80064a4:	b8 20 58 00 	mv r11,r1                                      
   *  Otherwise, we have to block.                                    
   *  If locked for reading and no waiters, then OK to read.          
   *  If any thread is waiting, then we wait.                         
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
 80064a8:	90 00 08 00 	rcsr r1,IE                                     
 80064ac:	34 02 ff fe 	mvi r2,-2                                      
 80064b0:	a0 22 10 00 	and r2,r1,r2                                   
 80064b4:	d0 02 00 00 	wcsr IE,r2                                     
    if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){          
 80064b8:	29 62 00 44 	lw r2,(r11+68)                                 
 80064bc:	44 40 00 2f 	be r2,r0,8006578 <_CORE_RWLock_Release+0xf0>   
      _ISR_Enable( level );                                           
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
      return CORE_RWLOCK_SUCCESSFUL;                                  
    }                                                                 
    if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
 80064c0:	34 04 00 01 	mvi r4,1                                       
 80064c4:	44 44 00 22 	be r2,r4,800654c <_CORE_RWLock_Release+0xc4>   
          return CORE_RWLOCK_SUCCESSFUL;                              
        }                                                             
    }                                                                 
                                                                      
    /* CORE_RWLOCK_LOCKED_FOR_WRITING or READING with readers */      
    executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;             
 80064c8:	58 60 00 34 	sw (r3+52),r0                                  
                                                                      
    /*                                                                
     * Implicitly transition to "unlocked" and find another thread interested
     * in obtaining this rwlock.                                      
     */                                                               
    the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;                 
 80064cc:	59 60 00 44 	sw (r11+68),r0                                 
  _ISR_Enable( level );                                               
 80064d0:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
  next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );            
 80064d4:	b9 60 08 00 	mv r1,r11                                      
 80064d8:	f8 00 08 45 	calli 80085ec <_Thread_queue_Dequeue>          
                                                                      
  if ( next ) {                                                       
 80064dc:	44 20 00 16 	be r1,r0,8006534 <_CORE_RWLock_Release+0xac>   
    if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
 80064e0:	28 22 00 30 	lw r2,(r1+48)                                  
 80064e4:	34 01 00 01 	mvi r1,1                                       
 80064e8:	44 41 00 2d 	be r2,r1,800659c <_CORE_RWLock_Release+0x114>  
    }                                                                 
                                                                      
    /*                                                                
     * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING                 
     */                                                               
    the_rwlock->number_of_readers += 1;                               
 80064ec:	29 62 00 48 	lw r2,(r11+72)                                 
    the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;       
 80064f0:	59 61 00 44 	sw (r11+68),r1                                 
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
 80064f4:	34 0c 00 01 	mvi r12,1                                      
    }                                                                 
                                                                      
    /*                                                                
     * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING                 
     */                                                               
    the_rwlock->number_of_readers += 1;                               
 80064f8:	34 41 00 01 	addi r1,r2,1                                   
 80064fc:	59 61 00 48 	sw (r11+72),r1                                 
 8006500:	e0 00 00 07 	bi 800651c <_CORE_RWLock_Release+0x94>         
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
 8006504:	28 63 00 30 	lw r3,(r3+48)                                  
 8006508:	44 6c 00 0b 	be r3,r12,8006534 <_CORE_RWLock_Release+0xac>  <== NEVER TAKEN
           next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
        return CORE_RWLOCK_SUCCESSFUL;                                
      the_rwlock->number_of_readers += 1;                             
 800650c:	29 63 00 48 	lw r3,(r11+72)                                 
 8006510:	34 63 00 01 	addi r3,r3,1                                   
 8006514:	59 63 00 48 	sw (r11+72),r3                                 
      _Thread_queue_Extract( &the_rwlock->Wait_queue, next );         
 8006518:	f8 00 09 5d 	calli 8008a8c <_Thread_queue_Extract>          
                                                                      
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
 800651c:	b9 60 08 00 	mv r1,r11                                      
 8006520:	f8 00 09 ae 	calli 8008bd8 <_Thread_queue_First>            
 8006524:	b8 20 18 00 	mv r3,r1                                       
      if ( !next ||                                                   
           next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
        return CORE_RWLOCK_SUCCESSFUL;                                
      the_rwlock->number_of_readers += 1;                             
      _Thread_queue_Extract( &the_rwlock->Wait_queue, next );         
 8006528:	b8 20 10 00 	mv r2,r1                                       
 800652c:	b9 60 08 00 	mv r1,r11                                      
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
 8006530:	5c 60 ff f5 	bne r3,r0,8006504 <_CORE_RWLock_Release+0x7c>  
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
 8006534:	34 01 00 00 	mvi r1,0                                       
 8006538:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800653c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8006540:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8006544:	37 9c 00 0c 	addi sp,sp,12                                  
 8006548:	c3 a0 00 00 	ret                                            
      _ISR_Enable( level );                                           
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
      return CORE_RWLOCK_SUCCESSFUL;                                  
    }                                                                 
    if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
	the_rwlock->number_of_readers -= 1;                                  
 800654c:	29 62 00 48 	lw r2,(r11+72)                                 
 8006550:	34 42 ff ff 	addi r2,r2,-1                                  
 8006554:	59 62 00 48 	sw (r11+72),r2                                 
	if ( the_rwlock->number_of_readers != 0 ) {                          
 8006558:	44 40 ff dc 	be r2,r0,80064c8 <_CORE_RWLock_Release+0x40>   
          /* must be unlocked again */                                
	  _ISR_Enable( level );                                              
 800655c:	d0 01 00 00 	wcsr IE,r1                                     
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
 8006560:	34 01 00 00 	mvi r1,0                                       
 8006564:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006568:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800656c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8006570:	37 9c 00 0c 	addi sp,sp,12                                  
 8006574:	c3 a0 00 00 	ret                                            
   *  If any thread is waiting, then we wait.                         
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
    if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){          
      _ISR_Enable( level );                                           
 8006578:	d0 01 00 00 	wcsr IE,r1                                     
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
 800657c:	34 01 00 02 	mvi r1,2                                       
 8006580:	58 61 00 34 	sw (r3+52),r1                                  
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
 8006584:	34 01 00 00 	mvi r1,0                                       
 8006588:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800658c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8006590:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8006594:	37 9c 00 0c 	addi sp,sp,12                                  
 8006598:	c3 a0 00 00 	ret                                            
                                                                      
  next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );            
                                                                      
  if ( next ) {                                                       
    if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
      the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;     
 800659c:	34 01 00 02 	mvi r1,2                                       
 80065a0:	59 61 00 44 	sw (r11+68),r1                                 
      return CORE_RWLOCK_SUCCESSFUL;                                  
 80065a4:	e3 ff ff e4 	bi 8006534 <_CORE_RWLock_Release+0xac>         
                                                                      

080065a8 <_CORE_RWLock_Timeout>: void _CORE_RWLock_Timeout( Objects_Id id, void *ignored ) {
 80065a8:	37 9c ff f8 	addi sp,sp,-8                                  
 80065ac:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 80065b0:	37 82 00 08 	addi r2,sp,8                                   
 80065b4:	f8 00 07 13 	calli 8008200 <_Thread_Get>                    
  switch ( location ) {                                               
 80065b8:	2b 82 00 08 	lw r2,(sp+8)                                   
 80065bc:	5c 40 00 07 	bne r2,r0,80065d8 <_CORE_RWLock_Timeout+0x30>  <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_queue_Process_timeout( the_thread );                    
 80065c0:	f8 00 09 c4 	calli 8008cd0 <_Thread_queue_Process_timeout>  
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
 80065c4:	78 01 08 01 	mvhi r1,0x801                                  
 80065c8:	38 21 98 d8 	ori r1,r1,0x98d8                               
 80065cc:	28 22 00 00 	lw r2,(r1+0)                                   
 80065d0:	34 42 ff ff 	addi r2,r2,-1                                  
 80065d4:	58 22 00 00 	sw (r1+0),r2                                   
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
 80065d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80065dc:	37 9c 00 08 	addi sp,sp,8                                   
 80065e0:	c3 a0 00 00 	ret                                            
                                                                      

0800ed94 <_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 ) {
 800ed94:	37 9c ff e4 	addi sp,sp,-28                                 
 800ed98:	5b 8b 00 1c 	sw (sp+28),r11                                 
 800ed9c:	5b 8c 00 18 	sw (sp+24),r12                                 
 800eda0:	5b 8d 00 14 	sw (sp+20),r13                                 
 800eda4:	5b 8e 00 10 	sw (sp+16),r14                                 
 800eda8:	5b 8f 00 0c 	sw (sp+12),r15                                 
 800edac:	5b 90 00 08 	sw (sp+8),r16                                  
 800edb0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800edb4:	b8 20 58 00 	mv r11,r1                                      
  size_t message_buffering_required;                                  
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
  the_message_queue->number_of_pending_messages = 0;                  
 800edb8:	58 20 00 48 	sw (r1+72),r0                                  
  the_message_queue->maximum_message_size       = maximum_message_size;
 800edbc:	58 24 00 4c 	sw (r1+76),r4                                  
    CORE_message_queue_Control        *the_message_queue,             
    CORE_message_queue_Notify_Handler  the_handler,                   
    void                              *the_argument                   
  )                                                                   
  {                                                                   
    the_message_queue->notify_handler  = the_handler;                 
 800edc0:	58 20 00 60 	sw (r1+96),r0                                  
    the_message_queue->notify_argument = the_argument;                
 800edc4:	58 20 00 64 	sw (r1+100),r0                                 
)                                                                     
{                                                                     
  size_t message_buffering_required;                                  
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
 800edc8:	59 63 00 44 	sw (r11+68),r3                                 
  /*                                                                  
   *  Round size up to multiple of a pointer for chain init and       
   *  check for overflow on adding overhead to each message.          
   */                                                                 
  allocated_message_size = maximum_message_size;                      
  if (allocated_message_size & (sizeof(uint32_t) - 1)) {              
 800edcc:	20 81 00 03 	andi r1,r4,0x3                                 
  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                 
)                                                                     
{                                                                     
 800edd0:	b8 60 70 00 	mv r14,r3                                      
 800edd4:	b8 40 80 00 	mv r16,r2                                      
  /*                                                                  
   *  Round size up to multiple of a pointer for chain init and       
   *  check for overflow on adding overhead to each message.          
   */                                                                 
  allocated_message_size = maximum_message_size;                      
  if (allocated_message_size & (sizeof(uint32_t) - 1)) {              
 800edd8:	b8 80 60 00 	mv r12,r4                                      
 800eddc:	44 20 00 06 	be r1,r0,800edf4 <_CORE_message_queue_Initialize+0x60>
    allocated_message_size += sizeof(uint32_t);                       
 800ede0:	34 8c 00 04 	addi r12,r4,4                                  
    allocated_message_size &= ~(sizeof(uint32_t) - 1);                
 800ede4:	34 01 ff fc 	mvi r1,-4                                      
 800ede8:	a1 81 60 00 	and r12,r12,r1                                 
  }                                                                   
                                                                      
  if (allocated_message_size < maximum_message_size)                  
    return false;                                                     
 800edec:	34 0d 00 00 	mvi r13,0                                      
  if (allocated_message_size & (sizeof(uint32_t) - 1)) {              
    allocated_message_size += sizeof(uint32_t);                       
    allocated_message_size &= ~(sizeof(uint32_t) - 1);                
  }                                                                   
                                                                      
  if (allocated_message_size < maximum_message_size)                  
 800edf0:	54 8c 00 1c 	bgu r4,r12,800ee60 <_CORE_message_queue_Initialize+0xcc><== NEVER TAKEN
  /*                                                                  
   *  Calculate how much total memory is required for message buffering and
   *  check for overflow on the multiplication.                       
   */                                                                 
  message_buffering_required = (size_t) maximum_pending_messages *    
       (allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
 800edf4:	35 8f 00 14 	addi r15,r12,20                                
                                                                      
  /*                                                                  
   *  Calculate how much total memory is required for message buffering and
   *  check for overflow on the multiplication.                       
   */                                                                 
  message_buffering_required = (size_t) maximum_pending_messages *    
 800edf8:	b9 e0 08 00 	mv r1,r15                                      
 800edfc:	b9 c0 10 00 	mv r2,r14                                      
 800ee00:	f8 00 5f 8b 	calli 8026c2c <__mulsi3>                       
       (allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
                                                                      
  if (message_buffering_required < allocated_message_size)            
    return false;                                                     
 800ee04:	34 0d 00 00 	mvi r13,0                                      
   *  check for overflow on the multiplication.                       
   */                                                                 
  message_buffering_required = (size_t) maximum_pending_messages *    
       (allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
                                                                      
  if (message_buffering_required < allocated_message_size)            
 800ee08:	55 81 00 16 	bgu r12,r1,800ee60 <_CORE_message_queue_Initialize+0xcc><== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
     _Workspace_Allocate( message_buffering_required );               
 800ee0c:	f8 00 0f 3b 	calli 8012af8 <_Workspace_Allocate>            
    return false;                                                     
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
 800ee10:	59 61 00 5c 	sw (r11+92),r1                                 
     _Workspace_Allocate( message_buffering_required );               
 800ee14:	b8 20 18 00 	mv r3,r1                                       
                                                                      
  if (the_message_queue->message_buffers == 0)                        
 800ee18:	44 20 00 12 	be r1,r0,800ee60 <_CORE_message_queue_Initialize+0xcc>
                                                                      
  /*                                                                  
   *  Initialize the pool of inactive messages, pending messages,     
   *  and set of waiting threads.                                     
   */                                                                 
  _Chain_Initialize (                                                 
 800ee1c:	b8 60 10 00 	mv r2,r3                                       
 800ee20:	35 61 00 68 	addi r1,r11,104                                
 800ee24:	b9 c0 18 00 	mv r3,r14                                      
 800ee28:	b9 e0 20 00 	mv r4,r15                                      
 800ee2c:	f8 00 1a aa 	calli 80158d4 <_Chain_Initialize>              
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 );                        
 800ee30:	35 62 00 54 	addi r2,r11,84                                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 800ee34:	35 61 00 50 	addi r1,r11,80                                 
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800ee38:	59 61 00 58 	sw (r11+88),r1                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800ee3c:	59 62 00 50 	sw (r11+80),r2                                 
  head->previous = NULL;                                              
 800ee40:	59 60 00 54 	sw (r11+84),r0                                 
    allocated_message_size + sizeof( CORE_message_queue_Buffer_control )
  );                                                                  
                                                                      
  _Chain_Initialize_empty( &the_message_queue->Pending_messages );    
                                                                      
  _Thread_queue_Initialize(                                           
 800ee44:	2a 02 00 00 	lw r2,(r16+0)                                  
 800ee48:	b9 60 08 00 	mv r1,r11                                      
 800ee4c:	34 03 00 80 	mvi r3,128                                     
 800ee50:	64 42 00 01 	cmpei r2,r2,1                                  
 800ee54:	34 04 00 06 	mvi r4,6                                       
 800ee58:	f8 00 0b e2 	calli 8011de0 <_Thread_queue_Initialize>       
       THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
    STATES_WAITING_FOR_MESSAGE,                                       
    CORE_MESSAGE_QUEUE_STATUS_TIMEOUT                                 
  );                                                                  
                                                                      
  return true;                                                        
 800ee5c:	34 0d 00 01 	mvi r13,1                                      
}                                                                     
 800ee60:	b9 a0 08 00 	mv r1,r13                                      
 800ee64:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ee68:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800ee6c:	2b 8c 00 18 	lw r12,(sp+24)                                 
 800ee70:	2b 8d 00 14 	lw r13,(sp+20)                                 
 800ee74:	2b 8e 00 10 	lw r14,(sp+16)                                 
 800ee78:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800ee7c:	2b 90 00 08 	lw r16,(sp+8)                                  
 800ee80:	37 9c 00 1c 	addi sp,sp,28                                  
 800ee84:	c3 a0 00 00 	ret                                            
                                                                      

08003aac <_CORE_mutex_Seize>: Objects_Id _id, bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) {
 8003aac:	37 9c ff e4 	addi sp,sp,-28                                 
 8003ab0:	5b 8b 00 18 	sw (sp+24),r11                                 
 8003ab4:	5b 8c 00 14 	sw (sp+20),r12                                 
 8003ab8:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003abc:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003ac0:	5b 8f 00 08 	sw (sp+8),r15                                  
 8003ac4:	5b 9d 00 04 	sw (sp+4),ra                                   
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
 8003ac8:	78 0b 08 01 	mvhi r11,0x801                                 
 8003acc:	39 6b 49 08 	ori r11,r11,0x4908                             
 8003ad0:	29 66 00 00 	lw r6,(r11+0)                                  
  Objects_Id           _id,                                           
  bool                 _wait,                                         
  Watchdog_Interval    _timeout,                                      
  ISR_Level            _level                                         
)                                                                     
{                                                                     
 8003ad4:	5b 85 00 1c 	sw (sp+28),r5                                  
 8003ad8:	b8 20 60 00 	mv r12,r1                                      
 8003adc:	b8 40 78 00 	mv r15,r2                                      
 8003ae0:	b8 80 70 00 	mv r14,r4                                      
 8003ae4:	20 6d 00 ff 	andi r13,r3,0xff                               
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
 8003ae8:	44 c0 00 02 	be r6,r0,8003af0 <_CORE_mutex_Seize+0x44>      
 8003aec:	5d a0 00 15 	bne r13,r0,8003b40 <_CORE_mutex_Seize+0x94>    <== ALWAYS TAKEN
 8003af0:	b9 80 08 00 	mv r1,r12                                      
 8003af4:	37 82 00 1c 	addi r2,sp,28                                  
 8003af8:	f8 00 19 32 	calli 8009fc0 <_CORE_mutex_Seize_interrupt_trylock>
 8003afc:	44 20 00 09 	be r1,r0,8003b20 <_CORE_mutex_Seize+0x74>      
 8003b00:	5d a0 00 19 	bne r13,r0,8003b64 <_CORE_mutex_Seize+0xb8>    
 8003b04:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8003b08:	d0 01 00 00 	wcsr IE,r1                                     
 8003b0c:	78 01 08 01 	mvhi r1,0x801                                  
 8003b10:	38 21 4d b4 	ori r1,r1,0x4db4                               
 8003b14:	28 21 00 0c 	lw r1,(r1+12)                                  
 8003b18:	34 02 00 01 	mvi r2,1                                       
 8003b1c:	58 22 00 34 	sw (r1+52),r2                                  
}                                                                     
 8003b20:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003b24:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003b28:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003b2c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003b30:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003b34:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003b38:	37 9c 00 1c 	addi sp,sp,28                                  
 8003b3c:	c3 a0 00 00 	ret                                            
  bool                 _wait,                                         
  Watchdog_Interval    _timeout,                                      
  ISR_Level            _level                                         
)                                                                     
{                                                                     
  _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 
 8003b40:	78 01 08 01 	mvhi r1,0x801                                  
 8003b44:	38 21 4a 60 	ori r1,r1,0x4a60                               
 8003b48:	28 21 00 00 	lw r1,(r1+0)                                   
 8003b4c:	34 02 00 01 	mvi r2,1                                       
 8003b50:	50 41 ff e8 	bgeu r2,r1,8003af0 <_CORE_mutex_Seize+0x44>    
 8003b54:	34 01 00 00 	mvi r1,0                                       
 8003b58:	34 02 00 00 	mvi r2,0                                       
 8003b5c:	34 03 00 12 	mvi r3,18                                      
 8003b60:	f8 00 02 31 	calli 8004424 <_Internal_error_Occurred>       
 8003b64:	78 01 08 01 	mvhi r1,0x801                                  
 8003b68:	29 62 00 00 	lw r2,(r11+0)                                  
 8003b6c:	38 21 4d b4 	ori r1,r1,0x4db4                               
 8003b70:	28 21 00 0c 	lw r1,(r1+12)                                  
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (      
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
 8003b74:	34 03 00 01 	mvi r3,1                                       
 8003b78:	59 83 00 30 	sw (r12+48),r3                                 
 8003b7c:	34 42 00 01 	addi r2,r2,1                                   
 8003b80:	58 2c 00 44 	sw (r1+68),r12                                 
 8003b84:	58 2f 00 20 	sw (r1+32),r15                                 
 8003b88:	59 62 00 00 	sw (r11+0),r2                                  
 8003b8c:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8003b90:	d0 01 00 00 	wcsr IE,r1                                     
 8003b94:	b9 80 08 00 	mv r1,r12                                      
 8003b98:	b9 c0 10 00 	mv r2,r14                                      
 8003b9c:	fb ff ff a3 	calli 8003a28 <_CORE_mutex_Seize_interrupt_blocking>
}                                                                     
 8003ba0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003ba4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003ba8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003bac:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003bb0:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003bb4:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003bb8:	37 9c 00 1c 	addi sp,sp,28                                  
 8003bbc:	c3 a0 00 00 	ret                                            
                                                                      

08003d2c <_CORE_semaphore_Surrender>: CORE_semaphore_Status _CORE_semaphore_Surrender( CORE_semaphore_Control *the_semaphore, Objects_Id id, CORE_semaphore_API_mp_support_callout api_semaphore_mp_support ) {
 8003d2c:	37 9c ff f8 	addi sp,sp,-8                                  
 8003d30:	5b 8b 00 08 	sw (sp+8),r11                                  
 8003d34:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003d38:	b8 20 58 00 	mv r11,r1                                      
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
                                                                      
  if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) {
 8003d3c:	f8 00 08 56 	calli 8005e94 <_Thread_queue_Dequeue>          
{                                                                     
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
 8003d40:	34 02 00 00 	mvi r2,0                                       
                                                                      
  if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) {
 8003d44:	44 20 00 06 	be r1,r0,8003d5c <_CORE_semaphore_Surrender+0x30>
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
    _ISR_Enable( level );                                             
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
 8003d48:	b8 40 08 00 	mv r1,r2                                       
 8003d4c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d50:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003d54:	37 9c 00 08 	addi sp,sp,8                                   
 8003d58:	c3 a0 00 00 	ret                                            
    if ( !_Objects_Is_local_id( the_thread->Object.id ) )             
      (*api_semaphore_mp_support) ( the_thread, id );                 
#endif                                                                
                                                                      
  } else {                                                            
    _ISR_Disable( level );                                            
 8003d5c:	90 00 08 00 	rcsr r1,IE                                     
 8003d60:	34 02 ff fe 	mvi r2,-2                                      
 8003d64:	a0 22 10 00 	and r2,r1,r2                                   
 8003d68:	d0 02 00 00 	wcsr IE,r2                                     
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
 8003d6c:	29 63 00 48 	lw r3,(r11+72)                                 
 8003d70:	29 64 00 40 	lw r4,(r11+64)                                 
        the_semaphore->count += 1;                                    
      else                                                            
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
 8003d74:	34 02 00 04 	mvi r2,4                                       
      (*api_semaphore_mp_support) ( the_thread, id );                 
#endif                                                                
                                                                      
  } else {                                                            
    _ISR_Disable( level );                                            
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
 8003d78:	50 64 00 04 	bgeu r3,r4,8003d88 <_CORE_semaphore_Surrender+0x5c><== NEVER TAKEN
        the_semaphore->count += 1;                                    
 8003d7c:	34 63 00 01 	addi r3,r3,1                                   
 8003d80:	59 63 00 48 	sw (r11+72),r3                                 
{                                                                     
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
 8003d84:	34 02 00 00 	mvi r2,0                                       
    _ISR_Disable( level );                                            
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
        the_semaphore->count += 1;                                    
      else                                                            
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
    _ISR_Enable( level );                                             
 8003d88:	d0 01 00 00 	wcsr IE,r1                                     
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
 8003d8c:	b8 40 08 00 	mv r1,r2                                       
 8003d90:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d94:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003d98:	37 9c 00 08 	addi sp,sp,8                                   
 8003d9c:	c3 a0 00 00 	ret                                            
                                                                      

08009f24 <_Chain_Initialize>: Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size ) {
 8009f24:	37 9c ff f0 	addi sp,sp,-16                                 
 8009f28:	5b 8b 00 10 	sw (sp+16),r11                                 
 8009f2c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8009f30:	5b 8d 00 08 	sw (sp+8),r13                                  
 8009f34:	5b 9d 00 04 	sw (sp+4),ra                                   
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
 8009f38:	58 20 00 04 	sw (r1+4),r0                                   
  Chain_Control *the_chain,                                           
  void           *starting_address,                                   
  size_t         number_nodes,                                        
  size_t         node_size                                            
)                                                                     
{                                                                     
 8009f3c:	b8 20 58 00 	mv r11,r1                                      
 8009f40:	b8 40 60 00 	mv r12,r2                                      
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 8009f44:	34 2d 00 04 	addi r13,r1,4                                  
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 8009f48:	44 60 00 10 	be r3,r0,8009f88 <_Chain_Initialize+0x64>      <== NEVER TAKEN
 8009f4c:	34 63 ff ff 	addi r3,r3,-1                                  
 8009f50:	b8 60 10 00 	mv r2,r3                                       
{                                                                     
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
 8009f54:	b9 80 28 00 	mv r5,r12                                      
)                                                                     
{                                                                     
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *current = head;                                         
 8009f58:	b9 60 30 00 	mv r6,r11                                      
 8009f5c:	e0 00 00 04 	bi 8009f6c <_Chain_Initialize+0x48>            
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 8009f60:	b8 a0 30 00 	mv r6,r5                                       
 8009f64:	34 63 ff ff 	addi r3,r3,-1                                  
    current->next  = next;                                            
    next->previous = current;                                         
    current        = next;                                            
    next           = (Chain_Node *)                                   
 8009f68:	b8 e0 28 00 	mv r5,r7                                       
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
    current->next  = next;                                            
 8009f6c:	58 c5 00 00 	sw (r6+0),r5                                   
    next->previous = current;                                         
 8009f70:	58 a6 00 04 	sw (r5+4),r6                                   
 *    node_size        - size of node in bytes                        
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Chain_Initialize(                                               
 8009f74:	b4 a4 38 00 	add r7,r5,r4                                   
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 8009f78:	5c 60 ff fa 	bne r3,r0,8009f60 <_Chain_Initialize+0x3c>     
 *    node_size        - size of node in bytes                        
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Chain_Initialize(                                               
 8009f7c:	b8 80 08 00 	mv r1,r4                                       
 8009f80:	f8 00 20 e2 	calli 8012308 <__mulsi3>                       
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 8009f84:	b5 81 08 00 	add r1,r12,r1                                  
    current        = next;                                            
    next           = (Chain_Node *)                                   
                        _Addresses_Add_offset( (void *) next, node_size );
  }                                                                   
                                                                      
  current->next = tail;                                               
 8009f88:	58 2d 00 00 	sw (r1+0),r13                                  
  tail->previous = current;                                           
 8009f8c:	59 61 00 08 	sw (r11+8),r1                                  
}                                                                     
 8009f90:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009f94:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8009f98:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8009f9c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8009fa0:	37 9c 00 10 	addi sp,sp,16                                  
 8009fa4:	c3 a0 00 00 	ret                                            
                                                                      

0800e064 <_Event_Seize>: rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) {
 800e064:	37 9c ff f4 	addi sp,sp,-12                                 
 800e068:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800e06c:	5b 8c 00 08 	sw (sp+8),r12                                  
 800e070:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_event_set                   pending_events;                   
  ISR_Level                         level;                            
  RTEMS_API_Control                *api;                              
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  executing = _Thread_Executing;                                      
 800e074:	78 05 08 01 	mvhi r5,0x801                                  
 800e078:	38 a5 ae 3c 	ori r5,r5,0xae3c                               
 800e07c:	28 ab 00 0c 	lw r11,(r5+12)                                 
  executing->Wait.return_code = RTEMS_SUCCESSFUL;                     
 800e080:	59 60 00 34 	sw (r11+52),r0                                 
                                                                      
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
 800e084:	29 67 01 1c 	lw r7,(r11+284)                                
                                                                      
  _ISR_Disable( level );                                              
 800e088:	90 00 30 00 	rcsr r6,IE                                     
 800e08c:	34 05 ff fe 	mvi r5,-2                                      
 800e090:	a0 c5 28 00 	and r5,r6,r5                                   
 800e094:	d0 05 00 00 	wcsr IE,r5                                     
  pending_events = api->pending_events;                               
 800e098:	28 e8 00 00 	lw r8,(r7+0)                                   
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(                 
  rtems_event_set the_event_set,                                      
  rtems_event_set the_event_condition                                 
)                                                                     
{                                                                     
   return ( the_event_set & the_event_condition );                    
 800e09c:	a0 28 28 00 	and r5,r1,r8                                   
  seized_events  = _Event_sets_Get( pending_events, event_in );       
                                                                      
  if ( !_Event_sets_Is_empty( seized_events ) &&                      
 800e0a0:	44 a0 00 04 	be r5,r0,800e0b0 <_Event_Seize+0x4c>           
 800e0a4:	44 25 00 29 	be r1,r5,800e148 <_Event_Seize+0xe4>           
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Options_Is_any (                           
  rtems_option option_set                                             
)                                                                     
{                                                                     
   return (option_set & RTEMS_EVENT_ANY) ? true : false;              
 800e0a8:	20 49 00 02 	andi r9,r2,0x2                                 
       (seized_events == event_in || _Options_Is_any( option_set )) ) {
 800e0ac:	5d 20 00 27 	bne r9,r0,800e148 <_Event_Seize+0xe4>          
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait (                       
  rtems_option option_set                                             
)                                                                     
{                                                                     
   return (option_set & RTEMS_NO_WAIT) ? true : false;                
 800e0b0:	20 47 00 01 	andi r7,r2,0x1                                 
    _ISR_Enable( level );                                             
    *event_out = seized_events;                                       
    return;                                                           
  }                                                                   
                                                                      
  if ( _Options_Is_no_wait( option_set ) ) {                          
 800e0b4:	5c e0 00 1c 	bne r7,r0,800e124 <_Event_Seize+0xc0>          
   */                                                                 
  executing->Wait.option            = (uint32_t) option_set;          
  executing->Wait.count             = (uint32_t) event_in;            
  executing->Wait.return_argument   = event_out;                      
                                                                      
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;     
 800e0b8:	78 0c 08 01 	mvhi r12,0x801                                 
 800e0bc:	39 8c b3 30 	ori r12,r12,0xb330                             
   *                                                                  
   *  NOTE: Since interrupts are disabled, this isn't that much of an 
   *        issue but better safe than sorry.                         
   */                                                                 
  executing->Wait.option            = (uint32_t) option_set;          
  executing->Wait.count             = (uint32_t) event_in;            
 800e0c0:	59 61 00 24 	sw (r11+36),r1                                 
  executing->Wait.return_argument   = event_out;                      
                                                                      
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;     
 800e0c4:	34 01 00 01 	mvi r1,1                                       
   *  set properly when we are marked as in the event critical section.
   *                                                                  
   *  NOTE: Since interrupts are disabled, this isn't that much of an 
   *        issue but better safe than sorry.                         
   */                                                                 
  executing->Wait.option            = (uint32_t) option_set;          
 800e0c8:	59 62 00 30 	sw (r11+48),r2                                 
  executing->Wait.count             = (uint32_t) event_in;            
  executing->Wait.return_argument   = event_out;                      
 800e0cc:	59 64 00 28 	sw (r11+40),r4                                 
                                                                      
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;     
 800e0d0:	59 81 00 00 	sw (r12+0),r1                                  
                                                                      
  _ISR_Enable( level );                                               
 800e0d4:	d0 06 00 00 	wcsr IE,r6                                     
                                                                      
  if ( ticks ) {                                                      
 800e0d8:	5c 60 00 2c 	bne r3,r0,800e188 <_Event_Seize+0x124>         
      NULL                                                            
    );                                                                
    _Watchdog_Insert_ticks( &executing->Timer, ticks );               
  }                                                                   
                                                                      
  _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );           
 800e0dc:	b9 60 08 00 	mv r1,r11                                      
 800e0e0:	34 02 01 00 	mvi r2,256                                     
 800e0e4:	fb ff e5 e7 	calli 8007880 <_Thread_Set_state>              
                                                                      
  _ISR_Disable( level );                                              
 800e0e8:	90 00 18 00 	rcsr r3,IE                                     
 800e0ec:	34 01 ff fe 	mvi r1,-2                                      
 800e0f0:	a0 61 08 00 	and r1,r3,r1                                   
 800e0f4:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
  sync_state = _Event_Sync_state;                                     
 800e0f8:	29 81 00 00 	lw r1,(r12+0)                                  
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;         
  if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {   
 800e0fc:	34 02 00 01 	mvi r2,1                                       
  _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );           
                                                                      
  _ISR_Disable( level );                                              
                                                                      
  sync_state = _Event_Sync_state;                                     
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;         
 800e100:	59 80 00 00 	sw (r12+0),r0                                  
  if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {   
 800e104:	44 22 00 1b 	be r1,r2,800e170 <_Event_Seize+0x10c>          <== ALWAYS TAKEN
   *  An interrupt completed the thread's blocking request.           
   *  The blocking thread was satisfied by an ISR or timed out.       
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  _Thread_blocking_operation_Cancel( sync_state, executing, level );  
 800e108:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800e10c:	f8 00 05 93 	calli 800f758 <_Thread_blocking_operation_Cancel><== NOT EXECUTED
}                                                                     
 800e110:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800e114:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 800e118:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 800e11c:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 800e120:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    *event_out = seized_events;                                       
    return;                                                           
  }                                                                   
                                                                      
  if ( _Options_Is_no_wait( option_set ) ) {                          
    _ISR_Enable( level );                                             
 800e124:	d0 06 00 00 	wcsr IE,r6                                     
    executing->Wait.return_code = RTEMS_UNSATISFIED;                  
 800e128:	34 01 00 0d 	mvi r1,13                                      
 800e12c:	59 61 00 34 	sw (r11+52),r1                                 
    *event_out = seized_events;                                       
 800e130:	58 85 00 00 	sw (r4+0),r5                                   
   *  The blocking thread was satisfied by an ISR or timed out.       
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  _Thread_blocking_operation_Cancel( sync_state, executing, level );  
}                                                                     
 800e134:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e138:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800e13c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800e140:	37 9c 00 0c 	addi sp,sp,12                                  
 800e144:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(               
 rtems_event_set the_event_set,                                       
 rtems_event_set the_mask                                             
)                                                                     
{                                                                     
   return ( the_event_set & ~(the_mask) );                            
 800e148:	a4 a0 08 00 	not r1,r5                                      
 800e14c:	a0 28 40 00 	and r8,r1,r8                                   
  pending_events = api->pending_events;                               
  seized_events  = _Event_sets_Get( pending_events, event_in );       
                                                                      
  if ( !_Event_sets_Is_empty( seized_events ) &&                      
       (seized_events == event_in || _Options_Is_any( option_set )) ) {
    api->pending_events =                                             
 800e150:	58 e8 00 00 	sw (r7+0),r8                                   
      _Event_sets_Clear( pending_events, seized_events );             
    _ISR_Enable( level );                                             
 800e154:	d0 06 00 00 	wcsr IE,r6                                     
    *event_out = seized_events;                                       
 800e158:	58 85 00 00 	sw (r4+0),r5                                   
   *  The blocking thread was satisfied by an ISR or timed out.       
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  _Thread_blocking_operation_Cancel( sync_state, executing, level );  
}                                                                     
 800e15c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e160:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800e164:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800e168:	37 9c 00 0c 	addi sp,sp,12                                  
 800e16c:	c3 a0 00 00 	ret                                            
  _ISR_Disable( level );                                              
                                                                      
  sync_state = _Event_Sync_state;                                     
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;         
  if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {   
    _ISR_Enable( level );                                             
 800e170:	d0 03 00 00 	wcsr IE,r3                                     
   *  The blocking thread was satisfied by an ISR or timed out.       
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  _Thread_blocking_operation_Cancel( sync_state, executing, level );  
}                                                                     
 800e174:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e178:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800e17c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800e180:	37 9c 00 0c 	addi sp,sp,12                                  
 800e184:	c3 a0 00 00 	ret                                            
  _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;     
                                                                      
  _ISR_Enable( level );                                               
                                                                      
  if ( ticks ) {                                                      
    _Watchdog_Initialize(                                             
 800e188:	29 62 00 08 	lw r2,(r11+8)                                  
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 800e18c:	78 01 08 00 	mvhi r1,0x800                                  
 800e190:	38 21 e3 94 	ori r1,r1,0xe394                               
 800e194:	59 61 00 64 	sw (r11+100),r1                                
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800e198:	78 01 08 01 	mvhi r1,0x801                                  
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
 800e19c:	59 62 00 68 	sw (r11+104),r2                                
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 800e1a0:	59 60 00 50 	sw (r11+80),r0                                 
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
  the_watchdog->user_data = user_data;                                
 800e1a4:	59 60 00 6c 	sw (r11+108),r0                                
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 800e1a8:	59 63 00 54 	sw (r11+84),r3                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800e1ac:	38 21 aa 50 	ori r1,r1,0xaa50                               
 800e1b0:	35 62 00 48 	addi r2,r11,72                                 
 800e1b4:	fb ff e7 5a 	calli 8007f1c <_Watchdog_Insert>               
 800e1b8:	e3 ff ff c9 	bi 800e0dc <_Event_Seize+0x78>                 
                                                                      

0800e230 <_Event_Surrender>: */ void _Event_Surrender( Thread_Control *the_thread ) {
 800e230:	37 9c ff f8 	addi sp,sp,-8                                  
 800e234:	5b 8b 00 08 	sw (sp+8),r11                                  
 800e238:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_event_set     event_condition;                                
  rtems_event_set     seized_events;                                  
  rtems_option        option_set;                                     
  RTEMS_API_Control  *api;                                            
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_RTEMS ];               
 800e23c:	28 25 01 1c 	lw r5,(r1+284)                                 
                                                                      
  option_set = (rtems_option) the_thread->Wait.option;                
 800e240:	28 28 00 30 	lw r8,(r1+48)                                  
 */                                                                   
                                                                      
void _Event_Surrender(                                                
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 800e244:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_RTEMS ];               
                                                                      
  option_set = (rtems_option) the_thread->Wait.option;                
                                                                      
  _ISR_Disable( level );                                              
 800e248:	90 00 08 00 	rcsr r1,IE                                     
 800e24c:	34 07 ff fe 	mvi r7,-2                                      
 800e250:	a0 27 38 00 	and r7,r1,r7                                   
 800e254:	d0 07 00 00 	wcsr IE,r7                                     
  pending_events  = api->pending_events;                              
 800e258:	28 a6 00 00 	lw r6,(r5+0)                                   
  event_condition = (rtems_event_set) the_thread->Wait.count;         
 800e25c:	29 64 00 24 	lw r4,(r11+36)                                 
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(                 
  rtems_event_set the_event_set,                                      
  rtems_event_set the_event_condition                                 
)                                                                     
{                                                                     
   return ( the_event_set & the_event_condition );                    
 800e260:	a0 86 10 00 	and r2,r4,r6                                   
  seized_events = _Event_sets_Get( pending_events, event_condition ); 
                                                                      
  /*                                                                  
   *  No events were seized in this operation                         
   */                                                                 
  if ( _Event_sets_Is_empty( seized_events ) ) {                      
 800e264:	44 40 00 27 	be r2,r0,800e300 <_Event_Surrender+0xd0>       
                                                                      
  /*                                                                  
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
 800e268:	78 03 08 01 	mvhi r3,0x801                                  
 800e26c:	38 63 ae 3c 	ori r3,r3,0xae3c                               
 800e270:	28 69 00 08 	lw r9,(r3+8)                                   
 800e274:	45 20 00 03 	be r9,r0,800e280 <_Event_Surrender+0x50>       
 800e278:	28 63 00 0c 	lw r3,(r3+12)                                  
 800e27c:	45 63 00 31 	be r11,r3,800e340 <_Event_Surrender+0x110>     <== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event (              
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_FOR_EVENT);                    
 800e280:	29 63 00 10 	lw r3,(r11+16)                                 
 800e284:	20 63 01 00 	andi r3,r3,0x100                               
  }                                                                   
                                                                      
  /*                                                                  
   *  Otherwise, this is a normal send to another thread              
   */                                                                 
  if ( _States_Is_waiting_for_event( the_thread->current_state ) ) {  
 800e288:	44 60 00 19 	be r3,r0,800e2ec <_Event_Surrender+0xbc>       
    if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
 800e28c:	44 82 00 03 	be r4,r2,800e298 <_Event_Surrender+0x68>       
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Options_Is_any (                           
  rtems_option option_set                                             
)                                                                     
{                                                                     
   return (option_set & RTEMS_EVENT_ANY) ? true : false;              
 800e290:	21 08 00 02 	andi r8,r8,0x2                                 
 800e294:	45 00 00 16 	be r8,r0,800e2ec <_Event_Surrender+0xbc>       <== NEVER TAKEN
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(               
 rtems_event_set the_event_set,                                       
 rtems_event_set the_mask                                             
)                                                                     
{                                                                     
   return ( the_event_set & ~(the_mask) );                            
 800e298:	a4 40 18 00 	not r3,r2                                      
      api->pending_events = _Event_sets_Clear( pending_events, seized_events );
      the_thread->Wait.count = 0;                                     
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800e29c:	29 64 00 28 	lw r4,(r11+40)                                 
 800e2a0:	a0 66 30 00 	and r6,r3,r6                                   
  /*                                                                  
   *  Otherwise, this is a normal send to another thread              
   */                                                                 
  if ( _States_Is_waiting_for_event( the_thread->current_state ) ) {  
    if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
      api->pending_events = _Event_sets_Clear( pending_events, seized_events );
 800e2a4:	58 a6 00 00 	sw (r5+0),r6                                   
      the_thread->Wait.count = 0;                                     
 800e2a8:	59 60 00 24 	sw (r11+36),r0                                 
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800e2ac:	58 82 00 00 	sw (r4+0),r2                                   
                                                                      
      _ISR_Flash( level );                                            
 800e2b0:	d0 01 00 00 	wcsr IE,r1                                     
 800e2b4:	d0 07 00 00 	wcsr IE,r7                                     
                                                                      
      if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {             
 800e2b8:	29 63 00 50 	lw r3,(r11+80)                                 
 800e2bc:	34 02 00 02 	mvi r2,2                                       
 800e2c0:	44 62 00 15 	be r3,r2,800e314 <_Event_Surrender+0xe4>       
        _ISR_Enable( level );                                         
 800e2c4:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 800e2c8:	78 01 08 01 	mvhi r1,0x801                                  
 800e2cc:	38 21 8b 54 	ori r1,r1,0x8b54                               
 800e2d0:	28 22 00 00 	lw r2,(r1+0)                                   
 800e2d4:	b9 60 08 00 	mv r1,r11                                      
 800e2d8:	f8 00 05 38 	calli 800f7b8 <_Thread_Clear_state>            
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
}                                                                     
 800e2dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e2e0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800e2e4:	37 9c 00 08 	addi sp,sp,8                                   
 800e2e8:	c3 a0 00 00 	ret                                            
        _Thread_Unblock( the_thread );                                
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
 800e2ec:	d0 01 00 00 	wcsr IE,r1                                     
}                                                                     
 800e2f0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e2f4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800e2f8:	37 9c 00 08 	addi sp,sp,8                                   
 800e2fc:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  No events were seized in this operation                         
   */                                                                 
  if ( _Event_sets_Is_empty( seized_events ) ) {                      
    _ISR_Enable( level );                                             
 800e300:	d0 01 00 00 	wcsr IE,r1                                     
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
}                                                                     
 800e304:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e308:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800e30c:	37 9c 00 08 	addi sp,sp,8                                   
 800e310:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(                       
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_REMOVE_IT;                           
 800e314:	34 02 00 03 	mvi r2,3                                       
 800e318:	59 62 00 50 	sw (r11+80),r2                                 
      if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {             
        _ISR_Enable( level );                                         
        _Thread_Unblock( the_thread );                                
      } else {                                                        
        _Watchdog_Deactivate( &the_thread->Timer );                   
        _ISR_Enable( level );                                         
 800e31c:	d0 01 00 00 	wcsr IE,r1                                     
        (void) _Watchdog_Remove( &the_thread->Timer );                
 800e320:	35 61 00 48 	addi r1,r11,72                                 
 800e324:	fb ff e7 69 	calli 80080c8 <_Watchdog_Remove>               
 800e328:	78 03 08 01 	mvhi r3,0x801                                  
 800e32c:	38 63 8b 54 	ori r3,r3,0x8b54                               
 800e330:	28 62 00 00 	lw r2,(r3+0)                                   
 800e334:	b9 60 08 00 	mv r1,r11                                      
 800e338:	f8 00 05 20 	calli 800f7b8 <_Thread_Clear_state>            
 800e33c:	e3 ff ff ed 	bi 800e2f0 <_Event_Surrender+0xc0>             
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
       ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||   
 800e340:	78 03 08 01 	mvhi r3,0x801                                  <== NOT EXECUTED
 800e344:	38 63 b3 30 	ori r3,r3,0xb330                               <== NOT EXECUTED
 800e348:	28 6a 00 00 	lw r10,(r3+0)                                  <== NOT EXECUTED
  /*                                                                  
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
 800e34c:	34 09 00 02 	mvi r9,2                                       <== NOT EXECUTED
 800e350:	45 49 00 04 	be r10,r9,800e360 <_Event_Surrender+0x130>     <== NOT EXECUTED
       ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||   
        (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
 800e354:	28 6a 00 00 	lw r10,(r3+0)                                  <== NOT EXECUTED
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
       ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||   
 800e358:	34 09 00 01 	mvi r9,1                                       <== NOT EXECUTED
 800e35c:	5d 49 ff c9 	bne r10,r9,800e280 <_Event_Surrender+0x50>     <== NOT EXECUTED
        (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
    if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
 800e360:	44 82 00 03 	be r4,r2,800e36c <_Event_Surrender+0x13c>      <== NOT EXECUTED
 800e364:	21 08 00 02 	andi r8,r8,0x2                                 <== NOT EXECUTED
 800e368:	45 00 00 09 	be r8,r0,800e38c <_Event_Surrender+0x15c>      <== NOT EXECUTED
 800e36c:	a4 40 20 00 	not r4,r2                                      <== NOT EXECUTED
 800e370:	a0 86 30 00 	and r6,r4,r6                                   <== NOT EXECUTED
      api->pending_events = _Event_sets_Clear( pending_events,seized_events );
      the_thread->Wait.count = 0;                                     
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800e374:	29 64 00 28 	lw r4,(r11+40)                                 <== NOT EXECUTED
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
       ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||   
        (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
    if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
      api->pending_events = _Event_sets_Clear( pending_events,seized_events );
 800e378:	58 a6 00 00 	sw (r5+0),r6                                   <== NOT EXECUTED
      the_thread->Wait.count = 0;                                     
 800e37c:	59 60 00 24 	sw (r11+36),r0                                 <== NOT EXECUTED
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800e380:	58 82 00 00 	sw (r4+0),r2                                   <== NOT EXECUTED
      _Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;        
 800e384:	34 02 00 03 	mvi r2,3                                       <== NOT EXECUTED
 800e388:	58 62 00 00 	sw (r3+0),r2                                   <== NOT EXECUTED
    }                                                                 
    _ISR_Enable( level );                                             
 800e38c:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
    return;                                                           
 800e390:	e3 ff ff d8 	bi 800e2f0 <_Event_Surrender+0xc0>             <== NOT EXECUTED
                                                                      

0800e394 <_Event_Timeout>: void _Event_Timeout( Objects_Id id, void *ignored ) {
 800e394:	37 9c ff f8 	addi sp,sp,-8                                  
 800e398:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control    *the_thread;                                      
  Objects_Locations  location;                                        
  ISR_Level          level;                                           
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 800e39c:	37 82 00 08 	addi r2,sp,8                                   
 800e3a0:	fb ff e2 a3 	calli 8006e2c <_Thread_Get>                    
  switch ( location ) {                                               
 800e3a4:	2b 82 00 08 	lw r2,(sp+8)                                   
 800e3a8:	44 40 00 04 	be r2,r0,800e3b8 <_Event_Timeout+0x24>         <== ALWAYS TAKEN
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 800e3ac:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800e3b0:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 800e3b4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
       *                                                              
       *  If it is not satisfied, then it is "nothing happened" and   
       *  this is the "timeout" transition.  After a request is satisfied,
       *  a timeout is not allowed to occur.                          
       */                                                             
      _ISR_Disable( level );                                          
 800e3b8:	90 00 18 00 	rcsr r3,IE                                     
 800e3bc:	34 02 ff fe 	mvi r2,-2                                      
 800e3c0:	a0 62 10 00 	and r2,r3,r2                                   
 800e3c4:	d0 02 00 00 	wcsr IE,r2                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
 800e3c8:	78 02 08 01 	mvhi r2,0x801                                  
 800e3cc:	38 42 ae 3c 	ori r2,r2,0xae3c                               
            return;                                                   
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
        if ( _Thread_Is_executing( the_thread ) ) {                   
 800e3d0:	28 42 00 0c 	lw r2,(r2+12)                                  
            _ISR_Enable( level );                                     
            return;                                                   
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
 800e3d4:	58 20 00 24 	sw (r1+36),r0                                  
        if ( _Thread_Is_executing( the_thread ) ) {                   
 800e3d8:	44 22 00 10 	be r1,r2,800e418 <_Event_Timeout+0x84>         <== NEVER TAKEN
          if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
            _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;    
        }                                                             
                                                                      
        the_thread->Wait.return_code = RTEMS_TIMEOUT;                 
 800e3dc:	34 02 00 06 	mvi r2,6                                       
 800e3e0:	58 22 00 34 	sw (r1+52),r2                                  
      _ISR_Enable( level );                                           
 800e3e4:	d0 03 00 00 	wcsr IE,r3                                     
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 800e3e8:	78 03 08 01 	mvhi r3,0x801                                  
 800e3ec:	38 63 8b 54 	ori r3,r3,0x8b54                               
 800e3f0:	28 62 00 00 	lw r2,(r3+0)                                   
 800e3f4:	f8 00 04 f1 	calli 800f7b8 <_Thread_Clear_state>            
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
 800e3f8:	78 01 08 01 	mvhi r1,0x801                                  
 800e3fc:	38 21 a9 90 	ori r1,r1,0xa990                               
 800e400:	28 22 00 00 	lw r2,(r1+0)                                   
 800e404:	34 42 ff ff 	addi r2,r2,-1                                  
 800e408:	58 22 00 00 	sw (r1+0),r2                                   
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 800e40c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e410:	37 9c 00 08 	addi sp,sp,8                                   
 800e414:	c3 a0 00 00 	ret                                            
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
        if ( _Thread_Is_executing( the_thread ) ) {                   
          if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
 800e418:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 800e41c:	38 42 b3 30 	ori r2,r2,0xb330                               <== NOT EXECUTED
 800e420:	28 45 00 00 	lw r5,(r2+0)                                   <== NOT EXECUTED
 800e424:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 800e428:	5c a4 ff ed 	bne r5,r4,800e3dc <_Event_Timeout+0x48>        <== NOT EXECUTED
            _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;    
 800e42c:	34 04 00 02 	mvi r4,2                                       <== NOT EXECUTED
 800e430:	58 44 00 00 	sw (r2+0),r4                                   <== NOT EXECUTED
 800e434:	e3 ff ff ea 	bi 800e3dc <_Event_Timeout+0x48>               <== NOT EXECUTED
                                                                      

0800a1b8 <_Heap_Allocate_aligned_with_boundary>: Heap_Control *heap, uintptr_t alloc_size, uintptr_t alignment, uintptr_t boundary ) {
 800a1b8:	37 9c ff bc 	addi sp,sp,-68                                 
 800a1bc:	5b 8b 00 44 	sw (sp+68),r11                                 
 800a1c0:	5b 8c 00 40 	sw (sp+64),r12                                 
 800a1c4:	5b 8d 00 3c 	sw (sp+60),r13                                 
 800a1c8:	5b 8e 00 38 	sw (sp+56),r14                                 
 800a1cc:	5b 8f 00 34 	sw (sp+52),r15                                 
 800a1d0:	5b 90 00 30 	sw (sp+48),r16                                 
 800a1d4:	5b 91 00 2c 	sw (sp+44),r17                                 
 800a1d8:	5b 92 00 28 	sw (sp+40),r18                                 
 800a1dc:	5b 93 00 24 	sw (sp+36),r19                                 
 800a1e0:	5b 94 00 20 	sw (sp+32),r20                                 
 800a1e4:	5b 95 00 1c 	sw (sp+28),r21                                 
 800a1e8:	5b 96 00 18 	sw (sp+24),r22                                 
 800a1ec:	5b 97 00 14 	sw (sp+20),r23                                 
 800a1f0:	5b 98 00 10 	sw (sp+16),r24                                 
 800a1f4:	5b 99 00 0c 	sw (sp+12),r25                                 
 800a1f8:	5b 9b 00 08 	sw (sp+8),fp                                   
 800a1fc:	5b 9d 00 04 	sw (sp+4),ra                                   
  Heap_Statistics *const stats = &heap->stats;                        
  uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
 800a200:	34 54 00 04 	addi r20,r2,4                                  
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
 800a204:	b8 20 78 00 	mv r15,r1                                      
  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;                        
 800a208:	28 37 00 10 	lw r23,(r1+16)                                 
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
 800a20c:	b8 40 70 00 	mv r14,r2                                      
 800a210:	b8 60 80 00 	mv r16,r3                                      
 800a214:	b8 80 90 00 	mv r18,r4                                      
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
    /* Integer overflow occured */                                    
    return NULL;                                                      
 800a218:	34 01 00 00 	mvi r1,0                                       
  Heap_Block *block = NULL;                                           
  uintptr_t alloc_begin = 0;                                          
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
 800a21c:	54 54 00 5b 	bgu r2,r20,800a388 <_Heap_Allocate_aligned_with_boundary+0x1d0>
    /* Integer overflow occured */                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
 800a220:	5c 80 00 6f 	bne r4,r0,800a3dc <_Heap_Allocate_aligned_with_boundary+0x224>
  if ( stats->max_search < search_count ) {                           
    stats->max_search = search_count;                                 
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
 800a224:	29 ec 00 08 	lw r12,(r15+8)                                 
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800a228:	34 01 00 00 	mvi r1,0                                       
 800a22c:	45 ec 00 57 	be r15,r12,800a388 <_Heap_Allocate_aligned_with_boundary+0x1d0>
                                                                      
  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;                 
 800a230:	34 18 00 04 	mvi r24,4                                      
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800a234:	34 11 00 01 	mvi r17,1                                      
    - 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;                
 800a238:	34 1b ff fe 	mvi fp,-2                                      
  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    
 800a23c:	36 f9 00 07 	addi r25,r23,7                                 
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
 800a240:	cb 0e c0 00 	sub r24,r24,r14                                
      /*                                                              
       * 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 ) {                
 800a244:	29 81 00 04 	lw r1,(r12+4)                                  
 800a248:	52 81 00 3b 	bgeu r20,r1,800a334 <_Heap_Allocate_aligned_with_boundary+0x17c>
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
 800a24c:	35 8b 00 08 	addi r11,r12,8                                 
        if ( alignment == 0 ) {                                       
 800a250:	46 00 00 3e 	be r16,r0,800a348 <_Heap_Allocate_aligned_with_boundary+0x190>
    - 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;                
 800a254:	a0 3b 68 00 	and r13,r1,fp                                  
  if ( stats->max_search < search_count ) {                           
    stats->max_search = search_count;                                 
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
 800a258:	29 f5 00 14 	lw r21,(r15+20)                                
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
                                                                      
  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;               
 800a25c:	b5 8d 68 00 	add r13,r12,r13                                
  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;                     
 800a260:	b7 0d 58 00 	add r11,r24,r13                                
  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;                         
 800a264:	cb 35 18 00 	sub r3,r25,r21                                 
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a268:	b9 60 08 00 	mv r1,r11                                      
 800a26c:	ba 00 10 00 	mv r2,r16                                      
  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    
 800a270:	b4 6d 68 00 	add r13,r3,r13                                 
 800a274:	f8 00 20 9a 	calli 80124dc <__umodsi3>                      
 800a278:	c9 61 58 00 	sub r11,r11,r1                                 
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
 800a27c:	35 96 00 08 	addi r22,r12,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 ) {                          
 800a280:	51 ab 00 05 	bgeu r13,r11,800a294 <_Heap_Allocate_aligned_with_boundary+0xdc>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a284:	b9 a0 08 00 	mv r1,r13                                      
 800a288:	ba 00 10 00 	mv r2,r16                                      
 800a28c:	f8 00 20 94 	calli 80124dc <__umodsi3>                      
 800a290:	c9 a1 58 00 	sub r11,r13,r1                                 
  }                                                                   
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
                                                                      
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
 800a294:	46 40 00 1c 	be r18,r0,800a304 <_Heap_Allocate_aligned_with_boundary+0x14c>
  /* 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;                               
 800a298:	b5 6e 68 00 	add r13,r11,r14                                
 800a29c:	b9 a0 08 00 	mv r1,r13                                      
 800a2a0:	ba 40 10 00 	mv r2,r18                                      
 800a2a4:	f8 00 20 8e 	calli 80124dc <__umodsi3>                      
 800a2a8:	c9 a1 28 00 	sub r5,r13,r1                                  
  /* 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 ) {
 800a2ac:	f5 a5 68 00 	cmpgu r13,r13,r5                               
 800a2b0:	f4 ab 08 00 	cmpgu r1,r5,r11                                
 800a2b4:	a1 a1 68 00 	and r13,r13,r1                                 
 800a2b8:	45 a0 00 13 	be r13,r0,800a304 <_Heap_Allocate_aligned_with_boundary+0x14c>
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
                                                                      
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
 800a2bc:	b6 ce 98 00 	add r19,r22,r14                                
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
      if ( boundary_line < boundary_floor ) {                         
 800a2c0:	56 65 00 1d 	bgu r19,r5,800a334 <_Heap_Allocate_aligned_with_boundary+0x17c>
 800a2c4:	e0 00 00 02 	bi 800a2cc <_Heap_Allocate_aligned_with_boundary+0x114>
 800a2c8:	56 65 00 1b 	bgu r19,r5,800a334 <_Heap_Allocate_aligned_with_boundary+0x17c><== NEVER TAKEN
        return 0;                                                     
      }                                                               
      alloc_begin = boundary_line - alloc_size;                       
 800a2cc:	c8 ae 58 00 	sub r11,r5,r14                                 
 800a2d0:	ba 00 10 00 	mv r2,r16                                      
 800a2d4:	b9 60 08 00 	mv r1,r11                                      
 800a2d8:	f8 00 20 81 	calli 80124dc <__umodsi3>                      
 800a2dc:	c9 61 58 00 	sub r11,r11,r1                                 
      alloc_begin = _Heap_Align_down( alloc_begin, alignment );       
      alloc_end = alloc_begin + alloc_size;                           
 800a2e0:	b5 6e 68 00 	add r13,r11,r14                                
 800a2e4:	b9 a0 08 00 	mv r1,r13                                      
 800a2e8:	ba 40 10 00 	mv r2,r18                                      
 800a2ec:	f8 00 20 7c 	calli 80124dc <__umodsi3>                      
 800a2f0:	c9 a1 28 00 	sub r5,r13,r1                                  
  /* 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 ) {
 800a2f4:	f5 a5 68 00 	cmpgu r13,r13,r5                               
 800a2f8:	f4 ab 08 00 	cmpgu r1,r5,r11                                
 800a2fc:	a1 a1 68 00 	and r13,r13,r1                                 
 800a300:	5d a0 ff f2 	bne r13,r0,800a2c8 <_Heap_Allocate_aligned_with_boundary+0x110>
      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 ) {                           
 800a304:	56 cb 00 0c 	bgu r22,r11,800a334 <_Heap_Allocate_aligned_with_boundary+0x17c>
 800a308:	34 01 ff f8 	mvi r1,-8                                      
 800a30c:	c8 2c 68 00 	sub r13,r1,r12                                 
 800a310:	ba e0 10 00 	mv r2,r23                                      
 800a314:	b9 60 08 00 	mv r1,r11                                      
 800a318:	f8 00 20 71 	calli 80124dc <__umodsi3>                      
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800a31c:	b5 ab 68 00 	add r13,r13,r11                                
    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;      
 800a320:	c9 a1 08 00 	sub r1,r13,r1                                  
                                                                      
    if ( free_size >= min_block_size || free_size == 0 ) {            
 800a324:	64 22 00 00 	cmpei r2,r1,0                                  
 800a328:	f0 35 a8 00 	cmpgeu r21,r1,r21                              
 800a32c:	b8 55 08 00 	or r1,r2,r21                                   
 800a330:	5c 20 00 06 	bne r1,r0,800a348 <_Heap_Allocate_aligned_with_boundary+0x190>
                                                                      
      if ( alloc_begin != 0 ) {                                       
        break;                                                        
      }                                                               
                                                                      
      block = block->next;                                            
 800a334:	29 8c 00 08 	lw r12,(r12+8)                                 
 800a338:	36 21 00 01 	addi r1,r17,1                                  
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800a33c:	45 ec 00 26 	be r15,r12,800a3d4 <_Heap_Allocate_aligned_with_boundary+0x21c>
 800a340:	b8 20 88 00 	mv r17,r1                                      
 800a344:	e3 ff ff c0 	bi 800a244 <_Heap_Allocate_aligned_with_boundary+0x8c>
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
                                                                      
      if ( alloc_begin != 0 ) {                                       
 800a348:	45 60 ff fb 	be r11,r0,800a334 <_Heap_Allocate_aligned_with_boundary+0x17c><== NEVER TAKEN
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
 800a34c:	29 e3 00 48 	lw r3,(r15+72)                                 
    stats->searches += search_count;                                  
 800a350:	29 e2 00 4c 	lw r2,(r15+76)                                 
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
 800a354:	b9 e0 08 00 	mv r1,r15                                      
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
 800a358:	34 63 00 01 	addi r3,r3,1                                   
    stats->searches += search_count;                                  
 800a35c:	b4 51 10 00 	add r2,r2,r17                                  
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
 800a360:	59 e3 00 48 	sw (r15+72),r3                                 
    stats->searches += search_count;                                  
 800a364:	59 e2 00 4c 	sw (r15+76),r2                                 
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
 800a368:	b9 60 18 00 	mv r3,r11                                      
 800a36c:	b9 80 10 00 	mv r2,r12                                      
 800a370:	b9 c0 20 00 	mv r4,r14                                      
 800a374:	fb ff e7 d0 	calli 80042b4 <_Heap_Block_allocate>           
 800a378:	b9 60 08 00 	mv r1,r11                                      
      boundary                                                        
    );                                                                
  }                                                                   
                                                                      
  /* Statistics */                                                    
  if ( stats->max_search < search_count ) {                           
 800a37c:	29 e2 00 44 	lw r2,(r15+68)                                 
 800a380:	50 51 00 02 	bgeu r2,r17,800a388 <_Heap_Allocate_aligned_with_boundary+0x1d0>
    stats->max_search = search_count;                                 
 800a384:	59 f1 00 44 	sw (r15+68),r17                                
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
 800a388:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a38c:	2b 8b 00 44 	lw r11,(sp+68)                                 
 800a390:	2b 8c 00 40 	lw r12,(sp+64)                                 
 800a394:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 800a398:	2b 8e 00 38 	lw r14,(sp+56)                                 
 800a39c:	2b 8f 00 34 	lw r15,(sp+52)                                 
 800a3a0:	2b 90 00 30 	lw r16,(sp+48)                                 
 800a3a4:	2b 91 00 2c 	lw r17,(sp+44)                                 
 800a3a8:	2b 92 00 28 	lw r18,(sp+40)                                 
 800a3ac:	2b 93 00 24 	lw r19,(sp+36)                                 
 800a3b0:	2b 94 00 20 	lw r20,(sp+32)                                 
 800a3b4:	2b 95 00 1c 	lw r21,(sp+28)                                 
 800a3b8:	2b 96 00 18 	lw r22,(sp+24)                                 
 800a3bc:	2b 97 00 14 	lw r23,(sp+20)                                 
 800a3c0:	2b 98 00 10 	lw r24,(sp+16)                                 
 800a3c4:	2b 99 00 0c 	lw r25,(sp+12)                                 
 800a3c8:	2b 9b 00 08 	lw fp,(sp+8)                                   
 800a3cc:	37 9c 00 44 	addi sp,sp,68                                  
 800a3d0:	c3 a0 00 00 	ret                                            
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800a3d4:	34 01 00 00 	mvi r1,0                                       
 800a3d8:	e3 ff ff e9 	bi 800a37c <_Heap_Allocate_aligned_with_boundary+0x1c4>
    /* Integer overflow occured */                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
    if ( boundary < alloc_size ) {                                    
 800a3dc:	54 44 ff eb 	bgu r2,r4,800a388 <_Heap_Allocate_aligned_with_boundary+0x1d0>
      return NULL;                                                    
    }                                                                 
                                                                      
    if ( alignment == 0 ) {                                           
 800a3e0:	5c 60 ff 91 	bne r3,r0,800a224 <_Heap_Allocate_aligned_with_boundary+0x6c>
      alignment = page_size;                                          
 800a3e4:	ba e0 80 00 	mv r16,r23                                     
 800a3e8:	e3 ff ff 8f 	bi 800a224 <_Heap_Allocate_aligned_with_boundary+0x6c>
                                                                      

0800a64c <_Heap_Extend>: Heap_Control *heap, void *extend_area_begin_ptr, uintptr_t extend_area_size, uintptr_t *extended_size_ptr ) {
 800a64c:	37 9c ff b8 	addi sp,sp,-72                                 
 800a650:	5b 8b 00 40 	sw (sp+64),r11                                 
 800a654:	5b 8c 00 3c 	sw (sp+60),r12                                 
 800a658:	5b 8d 00 38 	sw (sp+56),r13                                 
 800a65c:	5b 8e 00 34 	sw (sp+52),r14                                 
 800a660:	5b 8f 00 30 	sw (sp+48),r15                                 
 800a664:	5b 90 00 2c 	sw (sp+44),r16                                 
 800a668:	5b 91 00 28 	sw (sp+40),r17                                 
 800a66c:	5b 92 00 24 	sw (sp+36),r18                                 
 800a670:	5b 93 00 20 	sw (sp+32),r19                                 
 800a674:	5b 94 00 1c 	sw (sp+28),r20                                 
 800a678:	5b 95 00 18 	sw (sp+24),r21                                 
 800a67c:	5b 96 00 14 	sw (sp+20),r22                                 
 800a680:	5b 97 00 10 	sw (sp+16),r23                                 
 800a684:	5b 98 00 0c 	sw (sp+12),r24                                 
 800a688:	5b 99 00 08 	sw (sp+8),r25                                  
 800a68c:	5b 9d 00 04 	sw (sp+4),ra                                   
  Heap_Block *start_block = first_block;                              
  Heap_Block *merge_below_block = NULL;                               
  Heap_Block *merge_above_block = NULL;                               
  Heap_Block *link_below_block = NULL;                                
  Heap_Block *link_above_block = NULL;                                
  Heap_Block *extend_first_block = NULL;                              
 800a690:	5b 80 00 48 	sw (sp+72),r0                                  
  Heap_Block *extend_last_block = NULL;                               
 800a694:	5b 80 00 44 	sw (sp+68),r0                                  
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
  uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr;
  uintptr_t const extend_area_end = extend_area_begin + extend_area_size;
 800a698:	b4 43 70 00 	add r14,r2,r3                                  
  Heap_Control *heap,                                                 
  void *extend_area_begin_ptr,                                        
  uintptr_t extend_area_size,                                         
  uintptr_t *extended_size_ptr                                        
)                                                                     
{                                                                     
 800a69c:	b8 40 68 00 	mv r13,r2                                      
 800a6a0:	b8 20 58 00 	mv r11,r1                                      
 800a6a4:	b8 80 b8 00 	mv r23,r4                                      
  Heap_Statistics *const stats = &heap->stats;                        
  Heap_Block *const first_block = heap->first_block;                  
 800a6a8:	28 30 00 20 	lw r16,(r1+32)                                 
  Heap_Block *merge_above_block = NULL;                               
  Heap_Block *link_below_block = NULL;                                
  Heap_Block *link_above_block = NULL;                                
  Heap_Block *extend_first_block = NULL;                              
  Heap_Block *extend_last_block = NULL;                               
  uintptr_t const page_size = heap->page_size;                        
 800a6ac:	28 32 00 10 	lw r18,(r1+16)                                 
  uintptr_t const min_block_size = heap->min_block_size;              
 800a6b0:	28 25 00 14 	lw r5,(r1+20)                                  
  uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr;
  uintptr_t const extend_area_end = extend_area_begin + extend_area_size;
  uintptr_t const free_size = stats->free_size;                       
 800a6b4:	28 38 00 30 	lw r24,(r1+48)                                 
  uintptr_t extend_first_block_size = 0;                              
  uintptr_t extended_size = 0;                                        
  bool extend_area_ok = false;                                        
                                                                      
  if ( extend_area_end < extend_area_begin ) {                        
    return false;                                                     
 800a6b8:	34 0c 00 00 	mvi r12,0                                      
  uintptr_t const free_size = stats->free_size;                       
  uintptr_t extend_first_block_size = 0;                              
  uintptr_t extended_size = 0;                                        
  bool extend_area_ok = false;                                        
                                                                      
  if ( extend_area_end < extend_area_begin ) {                        
 800a6bc:	54 4e 00 76 	bgu r2,r14,800a894 <_Heap_Extend+0x248>        
    return false;                                                     
  }                                                                   
                                                                      
  extend_area_ok = _Heap_Get_first_and_last_block(                    
 800a6c0:	b8 40 08 00 	mv r1,r2                                       
 800a6c4:	b8 a0 20 00 	mv r4,r5                                       
 800a6c8:	b8 60 10 00 	mv r2,r3                                       
 800a6cc:	37 85 00 48 	addi r5,sp,72                                  
 800a6d0:	ba 40 18 00 	mv r3,r18                                      
 800a6d4:	37 86 00 44 	addi r6,sp,68                                  
 800a6d8:	fb ff e7 5f 	calli 8004454 <_Heap_Get_first_and_last_block> 
    page_size,                                                        
    min_block_size,                                                   
    &extend_first_block,                                              
    &extend_last_block                                                
  );                                                                  
  if (!extend_area_ok ) {                                             
 800a6dc:	44 20 00 6e 	be r1,r0,800a894 <_Heap_Extend+0x248>          
 800a6e0:	ba 00 60 00 	mv r12,r16                                     
 800a6e4:	34 16 00 00 	mvi r22,0                                      
 800a6e8:	34 19 00 00 	mvi r25,0                                      
 800a6ec:	34 11 00 00 	mvi r17,0                                      
 800a6f0:	34 14 00 00 	mvi r20,0                                      
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800a6f4:	34 15 ff fe 	mvi r21,-2                                     
 800a6f8:	e0 00 00 0d 	bi 800a72c <_Heap_Extend+0xe0>                 
      return false;                                                   
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
 800a6fc:	55 ee 00 7b 	bgu r15,r14,800a8e8 <_Heap_Extend+0x29c>       
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a700:	b9 e0 08 00 	mv r1,r15                                      
 800a704:	ba 40 10 00 	mv r2,r18                                      
 800a708:	35 f3 ff f8 	addi r19,r15,-8                                
 800a70c:	f8 00 20 f8 	calli 8012aec <__umodsi3>                      
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800a710:	ca 61 08 00 	sub r1,r19,r1                                  
      link_below_block = start_block;                                 
    }                                                                 
                                                                      
    if ( sub_area_end == extend_area_begin ) {                        
 800a714:	45 af 00 15 	be r13,r15,800a768 <_Heap_Extend+0x11c>        
      start_block->prev_size = extend_area_end;                       
                                                                      
      merge_above_block = end_block;                                  
    } else if ( sub_area_end < extend_area_begin ) {                  
 800a718:	55 af 00 72 	bgu r13,r15,800a8e0 <_Heap_Extend+0x294>       
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800a71c:	28 2c 00 04 	lw r12,(r1+4)                                  
 800a720:	a2 ac 60 00 	and r12,r21,r12                                
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800a724:	b4 2c 60 00 	add r12,r1,r12                                 
      link_above_block = end_block;                                   
    }                                                                 
                                                                      
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
 800a728:	46 0c 00 16 	be r16,r12,800a780 <_Heap_Extend+0x134>        
    return false;                                                     
  }                                                                   
                                                                      
  do {                                                                
    uintptr_t const sub_area_begin = (start_block != first_block) ?   
      (uintptr_t) start_block : heap->area_begin;                     
 800a72c:	b9 80 08 00 	mv r1,r12                                      
 800a730:	45 90 00 70 	be r12,r16,800a8f0 <_Heap_Extend+0x2a4>        
    uintptr_t const sub_area_end = start_block->prev_size;            
 800a734:	29 8f 00 00 	lw r15,(r12+0)                                 
    Heap_Block *const end_block =                                     
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
 800a738:	f5 c1 30 00 	cmpgu r6,r14,r1                                
 800a73c:	f5 ed 28 00 	cmpgu r5,r15,r13                               
      (uintptr_t) start_block : heap->area_begin;                     
    uintptr_t const sub_area_end = start_block->prev_size;            
    Heap_Block *const end_block =                                     
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
 800a740:	a0 c5 28 00 	and r5,r6,r5                                   
 800a744:	5c a0 00 75 	bne r5,r0,800a918 <_Heap_Extend+0x2cc>         
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
    ) {                                                               
      return false;                                                   
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
 800a748:	5c 2e ff ed 	bne r1,r14,800a6fc <_Heap_Extend+0xb0>         
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a74c:	b9 e0 08 00 	mv r1,r15                                      
 800a750:	ba 40 10 00 	mv r2,r18                                      
 800a754:	35 f3 ff f8 	addi r19,r15,-8                                
 800a758:	f8 00 20 e5 	calli 8012aec <__umodsi3>                      
 800a75c:	b9 80 a0 00 	mv r20,r12                                     
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800a760:	ca 61 08 00 	sub r1,r19,r1                                  
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
      link_below_block = start_block;                                 
    }                                                                 
                                                                      
    if ( sub_area_end == extend_area_begin ) {                        
 800a764:	5d af ff ed 	bne r13,r15,800a718 <_Heap_Extend+0xcc>        <== ALWAYS TAKEN
      start_block->prev_size = extend_area_end;                       
 800a768:	59 8e 00 00 	sw (r12+0),r14                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800a76c:	28 2c 00 04 	lw r12,(r1+4)                                  
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area(           
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
 800a770:	b8 20 88 00 	mv r17,r1                                      
    - 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;                
 800a774:	a2 ac 60 00 	and r12,r21,r12                                
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800a778:	b4 2c 60 00 	add r12,r1,r12                                 
    } else if ( sub_area_end < extend_area_begin ) {                  
      link_above_block = end_block;                                   
    }                                                                 
                                                                      
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
 800a77c:	5e 0c ff ec 	bne r16,r12,800a72c <_Heap_Extend+0xe0>        <== NEVER TAKEN
                                                                      
  if ( extend_area_begin < heap->area_begin ) {                       
 800a780:	29 61 00 18 	lw r1,(r11+24)                                 
 800a784:	51 a1 00 61 	bgeu r13,r1,800a908 <_Heap_Extend+0x2bc>       
    heap->area_begin = extend_area_begin;                             
 800a788:	59 6d 00 18 	sw (r11+24),r13                                
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
 800a78c:	2b 81 00 44 	lw r1,(sp+68)                                  
 800a790:	2b 82 00 48 	lw r2,(sp+72)                                  
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
  extend_last_block->size_and_flag = 0;                               
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
 800a794:	29 65 00 20 	lw r5,(r11+32)                                 
    heap->area_begin = extend_area_begin;                             
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
 800a798:	c8 22 18 00 	sub r3,r1,r2                                   
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
  extend_first_block->size_and_flag =                                 
    extend_first_block_size | HEAP_PREV_BLOCK_USED;                   
 800a79c:	38 64 00 01 	ori r4,r3,0x1                                  
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
 800a7a0:	58 4e 00 00 	sw (r2+0),r14                                  
  extend_first_block->size_and_flag =                                 
 800a7a4:	58 44 00 04 	sw (r2+4),r4                                   
    extend_first_block_size | HEAP_PREV_BLOCK_USED;                   
  _Heap_Protection_block_initialize( heap, extend_first_block );      
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
 800a7a8:	58 23 00 00 	sw (r1+0),r3                                   
  extend_last_block->size_and_flag = 0;                               
 800a7ac:	58 20 00 04 	sw (r1+4),r0                                   
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
 800a7b0:	50 45 00 52 	bgeu r2,r5,800a8f8 <_Heap_Extend+0x2ac>        
    heap->first_block = extend_first_block;                           
 800a7b4:	59 62 00 20 	sw (r11+32),r2                                 
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
    heap->last_block = extend_last_block;                             
  }                                                                   
                                                                      
  if ( merge_below_block != NULL ) {                                  
 800a7b8:	46 80 00 6a 	be r20,r0,800a960 <_Heap_Extend+0x314>         
  Heap_Control *heap,                                                 
  uintptr_t extend_area_begin,                                        
  Heap_Block *first_block                                             
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
 800a7bc:	29 6c 00 10 	lw r12,(r11+16)                                
  uintptr_t const new_first_block_alloc_begin =                       
    _Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
 800a7c0:	35 ad 00 08 	addi r13,r13,8                                 
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(                        
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  uintptr_t remainder = value % alignment;                            
 800a7c4:	b9 a0 08 00 	mv r1,r13                                      
 800a7c8:	b9 80 10 00 	mv r2,r12                                      
 800a7cc:	f8 00 20 c8 	calli 8012aec <__umodsi3>                      
                                                                      
  if ( remainder != 0 ) {                                             
 800a7d0:	44 20 00 03 	be r1,r0,800a7dc <_Heap_Extend+0x190>          
    return value - remainder + alignment;                             
 800a7d4:	b5 ac 68 00 	add r13,r13,r12                                
 800a7d8:	c9 a1 68 00 	sub r13,r13,r1                                 
  uintptr_t const new_first_block_begin =                             
 800a7dc:	35 a2 ff f8 	addi r2,r13,-8                                 
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
  uintptr_t const new_first_block_size =                              
    first_block_begin - new_first_block_begin;                        
  Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
                                                                      
  new_first_block->prev_size = first_block->prev_size;                
 800a7e0:	2a 83 00 00 	lw r3,(r20+0)                                  
  uintptr_t const new_first_block_alloc_begin =                       
    _Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
  uintptr_t const new_first_block_begin =                             
    new_first_block_alloc_begin - HEAP_BLOCK_HEADER_SIZE;             
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
  uintptr_t const new_first_block_size =                              
 800a7e4:	ca 82 08 00 	sub r1,r20,r2                                  
    first_block_begin - new_first_block_begin;                        
  Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
                                                                      
  new_first_block->prev_size = first_block->prev_size;                
  new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
 800a7e8:	38 21 00 01 	ori r1,r1,0x1                                  
 800a7ec:	58 41 00 04 	sw (r2+4),r1                                   
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
  uintptr_t const new_first_block_size =                              
    first_block_begin - new_first_block_begin;                        
  Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
                                                                      
  new_first_block->prev_size = first_block->prev_size;                
 800a7f0:	59 a3 ff f8 	sw (r13+-8),r3                                 
  new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
                                                                      
  _Heap_Free_block( heap, new_first_block );                          
 800a7f4:	b9 60 08 00 	mv r1,r11                                      
 800a7f8:	fb ff ff 88 	calli 800a618 <_Heap_Free_block>               
      link_below_block,                                               
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
 800a7fc:	46 20 00 49 	be r17,r0,800a920 <_Heap_Extend+0x2d4>         
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a800:	29 62 00 10 	lw r2,(r11+16)                                 
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const last_block_new_size = _Heap_Align_down(             
    extend_area_end - last_block_begin - HEAP_BLOCK_HEADER_SIZE,      
 800a804:	35 ce ff f8 	addi r14,r14,-8                                
  uintptr_t extend_area_end                                           
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const last_block_new_size = _Heap_Align_down(             
 800a808:	c9 d1 70 00 	sub r14,r14,r17                                
 800a80c:	b9 c0 08 00 	mv r1,r14                                      
 800a810:	f8 00 20 b7 	calli 8012aec <__umodsi3>                      
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
    (last_block->size_and_flag - last_block_new_size)                 
 800a814:	2a 22 00 04 	lw r2,(r17+4)                                  
 800a818:	c9 c1 70 00 	sub r14,r14,r1                                 
    page_size                                                         
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
 800a81c:	b5 d1 08 00 	add r1,r14,r17                                 
    (last_block->size_and_flag - last_block_new_size)                 
 800a820:	c8 4e 10 00 	sub r2,r2,r14                                  
      | HEAP_PREV_BLOCK_USED;                                         
 800a824:	38 42 00 01 	ori r2,r2,0x1                                  
    page_size                                                         
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
 800a828:	58 22 00 04 	sw (r1+4),r2                                   
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
 800a82c:	2a 23 00 04 	lw r3,(r17+4)                                  
    (last_block->size_and_flag - last_block_new_size)                 
      | HEAP_PREV_BLOCK_USED;                                         
                                                                      
  _Heap_Block_set_size( last_block, last_block_new_size );            
                                                                      
  _Heap_Free_block( heap, last_block );                               
 800a830:	b9 60 08 00 	mv r1,r11                                      
 800a834:	ba 20 10 00 	mv r2,r17                                      
 800a838:	20 63 00 01 	andi r3,r3,0x1                                 
                                                                      
  block->size_and_flag = size | flag;                                 
 800a83c:	b9 c3 70 00 	or r14,r14,r3                                  
 800a840:	5a 2e 00 04 	sw (r17+4),r14                                 
 800a844:	fb ff ff 75 	calli 800a618 <_Heap_Free_block>               
      extend_first_block,                                             
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_below_block == NULL && merge_above_block == NULL ) {     
 800a848:	66 31 00 00 	cmpei r17,r17,0                                
 800a84c:	66 94 00 00 	cmpei r20,r20,0                                
 800a850:	a2 34 88 00 	and r17,r17,r20                                
 800a854:	5e 20 00 3f 	bne r17,r0,800a950 <_Heap_Extend+0x304>        
                                                                      
  if ( extended_size_ptr != NULL )                                    
    *extended_size_ptr = extended_size;                               
                                                                      
  return true;                                                        
}                                                                     
 800a858:	29 61 00 24 	lw r1,(r11+36)                                 
 * This feature will be used to terminate the scattered heap area list.  See
 * also _Heap_Extend().                                               
 */                                                                   
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{                                                                     
  _Heap_Block_set_size(                                               
 800a85c:	29 63 00 20 	lw r3,(r11+32)                                 
    _Heap_Free_block( heap, extend_first_block );                     
  }                                                                   
                                                                      
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
 800a860:	29 65 00 30 	lw r5,(r11+48)                                 
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
 800a864:	28 22 00 04 	lw r2,(r1+4)                                   
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
 800a868:	29 64 00 2c 	lw r4,(r11+44)                                 
 * This feature will be used to terminate the scattered heap area list.  See
 * also _Heap_Extend().                                               
 */                                                                   
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{                                                                     
  _Heap_Block_set_size(                                               
 800a86c:	c8 61 18 00 	sub r3,r3,r1                                   
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
 800a870:	20 42 00 01 	andi r2,r2,0x1                                 
                                                                      
  block->size_and_flag = size | flag;                                 
 800a874:	b8 62 10 00 	or r2,r3,r2                                    
    _Heap_Free_block( heap, extend_first_block );                     
  }                                                                   
                                                                      
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
 800a878:	c8 b8 c0 00 	sub r24,r5,r24                                 
 800a87c:	58 22 00 04 	sw (r1+4),r2                                   
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
 800a880:	b4 98 08 00 	add r1,r4,r24                                  
 800a884:	59 61 00 2c 	sw (r11+44),r1                                 
                                                                      
  if ( extended_size_ptr != NULL )                                    
    *extended_size_ptr = extended_size;                               
                                                                      
  return true;                                                        
 800a888:	34 0c 00 01 	mvi r12,1                                      
  extended_size = stats->free_size - free_size;                       
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
                                                                      
  if ( extended_size_ptr != NULL )                                    
 800a88c:	46 e0 00 02 	be r23,r0,800a894 <_Heap_Extend+0x248>         <== NEVER TAKEN
    *extended_size_ptr = extended_size;                               
 800a890:	5a f8 00 00 	sw (r23+0),r24                                 
                                                                      
  return true;                                                        
}                                                                     
 800a894:	b9 80 08 00 	mv r1,r12                                      
 800a898:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a89c:	2b 8b 00 40 	lw r11,(sp+64)                                 
 800a8a0:	2b 8c 00 3c 	lw r12,(sp+60)                                 
 800a8a4:	2b 8d 00 38 	lw r13,(sp+56)                                 
 800a8a8:	2b 8e 00 34 	lw r14,(sp+52)                                 
 800a8ac:	2b 8f 00 30 	lw r15,(sp+48)                                 
 800a8b0:	2b 90 00 2c 	lw r16,(sp+44)                                 
 800a8b4:	2b 91 00 28 	lw r17,(sp+40)                                 
 800a8b8:	2b 92 00 24 	lw r18,(sp+36)                                 
 800a8bc:	2b 93 00 20 	lw r19,(sp+32)                                 
 800a8c0:	2b 94 00 1c 	lw r20,(sp+28)                                 
 800a8c4:	2b 95 00 18 	lw r21,(sp+24)                                 
 800a8c8:	2b 96 00 14 	lw r22,(sp+20)                                 
 800a8cc:	2b 97 00 10 	lw r23,(sp+16)                                 
 800a8d0:	2b 98 00 0c 	lw r24,(sp+12)                                 
 800a8d4:	2b 99 00 08 	lw r25,(sp+8)                                  
 800a8d8:	37 9c 00 48 	addi sp,sp,72                                  
 800a8dc:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area(           
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
 800a8e0:	b8 20 b0 00 	mv r22,r1                                      
 800a8e4:	e3 ff ff 8e 	bi 800a71c <_Heap_Extend+0xd0>                 
      return false;                                                   
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
 800a8e8:	b9 80 c8 00 	mv r25,r12                                     
 800a8ec:	e3 ff ff 85 	bi 800a700 <_Heap_Extend+0xb4>                 
    return false;                                                     
  }                                                                   
                                                                      
  do {                                                                
    uintptr_t const sub_area_begin = (start_block != first_block) ?   
      (uintptr_t) start_block : heap->area_begin;                     
 800a8f0:	29 61 00 18 	lw r1,(r11+24)                                 
 800a8f4:	e3 ff ff 90 	bi 800a734 <_Heap_Extend+0xe8>                 
  extend_last_block->size_and_flag = 0;                               
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
    heap->first_block = extend_first_block;                           
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
 800a8f8:	29 62 00 24 	lw r2,(r11+36)                                 
 800a8fc:	50 41 ff af 	bgeu r2,r1,800a7b8 <_Heap_Extend+0x16c>        
    heap->last_block = extend_last_block;                             
 800a900:	59 61 00 24 	sw (r11+36),r1                                 
 800a904:	e3 ff ff ad 	bi 800a7b8 <_Heap_Extend+0x16c>                
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
                                                                      
  if ( extend_area_begin < heap->area_begin ) {                       
    heap->area_begin = extend_area_begin;                             
  } else if ( heap->area_end < extend_area_end ) {                    
 800a908:	29 61 00 1c 	lw r1,(r11+28)                                 
 800a90c:	50 2e ff a0 	bgeu r1,r14,800a78c <_Heap_Extend+0x140>       
    heap->area_end = extend_area_end;                                 
 800a910:	59 6e 00 1c 	sw (r11+28),r14                                
 800a914:	e3 ff ff 9e 	bi 800a78c <_Heap_Extend+0x140>                
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
    ) {                                                               
      return false;                                                   
 800a918:	34 0c 00 00 	mvi r12,0                                      
 800a91c:	e3 ff ff de 	bi 800a894 <_Heap_Extend+0x248>                
    );                                                                
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
    _Heap_Merge_above( heap, merge_above_block, extend_area_end );    
  } else if ( link_above_block != NULL ) {                            
 800a920:	46 d1 ff ca 	be r22,r17,800a848 <_Heap_Extend+0x1fc>        
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
 800a924:	2a c3 00 04 	lw r3,(r22+4)                                  
)                                                                     
{                                                                     
  uintptr_t const link_begin = (uintptr_t) link;                      
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
                                                                      
  _Heap_Block_set_size( link, first_block_begin - link_begin );       
 800a928:	2b 82 00 48 	lw r2,(sp+72)                                  
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
    _Heap_Merge_above( heap, merge_above_block, extend_area_end );    
  } else if ( link_above_block != NULL ) {                            
    _Heap_Link_above(                                                 
 800a92c:	2b 81 00 44 	lw r1,(sp+68)                                  
 800a930:	20 63 00 01 	andi r3,r3,0x1                                 
)                                                                     
{                                                                     
  uintptr_t const link_begin = (uintptr_t) link;                      
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
                                                                      
  _Heap_Block_set_size( link, first_block_begin - link_begin );       
 800a934:	c8 56 10 00 	sub r2,r2,r22                                  
                                                                      
  block->size_and_flag = size | flag;                                 
 800a938:	b8 43 10 00 	or r2,r2,r3                                    
 800a93c:	5a c2 00 04 	sw (r22+4),r2                                  
                                                                      
  last_block->size_and_flag |= HEAP_PREV_BLOCK_USED;                  
 800a940:	28 22 00 04 	lw r2,(r1+4)                                   
 800a944:	38 42 00 01 	ori r2,r2,0x1                                  
 800a948:	58 22 00 04 	sw (r1+4),r2                                   
 800a94c:	e3 ff ff bf 	bi 800a848 <_Heap_Extend+0x1fc>                
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_below_block == NULL && merge_above_block == NULL ) {     
    _Heap_Free_block( heap, extend_first_block );                     
 800a950:	2b 82 00 48 	lw r2,(sp+72)                                  
 800a954:	b9 60 08 00 	mv r1,r11                                      
 800a958:	fb ff ff 30 	calli 800a618 <_Heap_Free_block>               
 800a95c:	e3 ff ff bf 	bi 800a858 <_Heap_Extend+0x20c>                
    heap->last_block = extend_last_block;                             
  }                                                                   
                                                                      
  if ( merge_below_block != NULL ) {                                  
    _Heap_Merge_below( heap, extend_area_begin, merge_below_block );  
  } else if ( link_below_block != NULL ) {                            
 800a960:	47 34 ff a7 	be r25,r20,800a7fc <_Heap_Extend+0x1b0>        
{                                                                     
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const link_begin = (uintptr_t) link;                      
                                                                      
  last_block->size_and_flag =                                         
    (link_begin - last_block_begin) | HEAP_PREV_BLOCK_USED;           
 800a964:	cb 21 c8 00 	sub r25,r25,r1                                 
 800a968:	3b 39 00 01 	ori r25,r25,0x1                                
)                                                                     
{                                                                     
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const link_begin = (uintptr_t) link;                      
                                                                      
  last_block->size_and_flag =                                         
 800a96c:	58 39 00 04 	sw (r1+4),r25                                  
 800a970:	e3 ff ff a3 	bi 800a7fc <_Heap_Extend+0x1b0>                
                                                                      

0800a3ec <_Heap_Free>: return do_free; } #endif bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr ) {
 800a3ec:	37 9c ff f4 	addi sp,sp,-12                                 
 800a3f0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800a3f4:	5b 8c 00 08 	sw (sp+8),r12                                  
 800a3f8:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a3fc:	b8 20 58 00 	mv r11,r1                                      
 800a400:	b8 40 18 00 	mv r3,r2                                       
   * 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;                                                      
 800a404:	34 01 00 01 	mvi r1,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 ) {                                    
 800a408:	44 40 00 4b 	be r2,r0,800a534 <_Heap_Free+0x148>            
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a40c:	29 62 00 10 	lw r2,(r11+16)                                 
 800a410:	b8 60 08 00 	mv r1,r3                                       
 800a414:	34 6c ff f8 	addi r12,r3,-8                                 
 800a418:	f8 00 20 31 	calli 80124dc <__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           
 800a41c:	29 64 00 20 	lw r4,(r11+32)                                 
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800a420:	c9 81 10 00 	sub r2,r12,r1                                  
                                                                      
  alloc_begin = (uintptr_t) alloc_begin_ptr;                          
  block = _Heap_Block_of_alloc_area( alloc_begin, heap->page_size );  
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
    return false;                                                     
 800a424:	34 01 00 00 	mvi r1,0                                       
  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;             
 800a428:	54 82 00 43 	bgu r4,r2,800a534 <_Heap_Free+0x148>           
 800a42c:	29 65 00 24 	lw r5,(r11+36)                                 
 800a430:	54 45 00 41 	bgu r2,r5,800a534 <_Heap_Free+0x148>           <== NEVER TAKEN
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800a434:	28 48 00 04 	lw r8,(r2+4)                                   
    - 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;                
 800a438:	34 07 ff fe 	mvi r7,-2                                      
 800a43c:	a1 07 30 00 	and r6,r8,r7                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800a440:	b4 46 18 00 	add r3,r2,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;             
 800a444:	54 83 00 3c 	bgu r4,r3,800a534 <_Heap_Free+0x148>           <== NEVER TAKEN
 800a448:	54 65 00 3b 	bgu r3,r5,800a534 <_Heap_Free+0x148>           <== NEVER TAKEN
 800a44c:	28 69 00 04 	lw r9,(r3+4)                                   
  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;                 
 800a450:	21 2a 00 01 	andi r10,r9,0x1                                
    return false;                                                     
  }                                                                   
                                                                      
  _Heap_Protection_block_check( heap, next_block );                   
                                                                      
  if ( !_Heap_Is_prev_used( next_block ) ) {                          
 800a454:	45 40 00 38 	be r10,r0,800a534 <_Heap_Free+0x148>           <== NEVER TAKEN
    - 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;                
 800a458:	a1 27 48 00 	and r9,r9,r7                                   
    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 ));
 800a45c:	34 07 00 00 	mvi r7,0                                       
 800a460:	44 a3 00 05 	be r5,r3,800a474 <_Heap_Free+0x88>             
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800a464:	b4 69 08 00 	add r1,r3,r9                                   
  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;                 
 800a468:	28 27 00 04 	lw r7,(r1+4)                                   
 800a46c:	20 e7 00 01 	andi r7,r7,0x1                                 
                                                                      
    return do_free;                                                   
  }                                                                   
#endif                                                                
                                                                      
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )          
 800a470:	18 e7 00 01 	xori r7,r7,0x1                                 
 800a474:	21 08 00 01 	andi r8,r8,0x1                                 
                                                                      
  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 ) ) {                               
 800a478:	5d 00 00 19 	bne r8,r0,800a4dc <_Heap_Free+0xf0>            
    uintptr_t const prev_size = block->prev_size;                     
 800a47c:	28 4a 00 00 	lw r10,(r2+0)                                  
    Heap_Block * const prev_block = _Heap_Block_at( block, -prev_size );
                                                                      
    if ( !_Heap_Is_block_in_heap( heap, prev_block ) ) {              
      _HAssert( false );                                              
      return( false );                                                
 800a480:	34 01 00 00 	mvi r1,0                                       
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800a484:	c8 4a 10 00 	sub r2,r2,r10                                  
  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;             
 800a488:	54 82 00 2b 	bgu r4,r2,800a534 <_Heap_Free+0x148>           <== NEVER TAKEN
 800a48c:	b9 00 08 00 	mv r1,r8                                       
 800a490:	54 45 00 29 	bgu r2,r5,800a534 <_Heap_Free+0x148>           <== NEVER TAKEN
  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;                 
 800a494:	28 44 00 04 	lw r4,(r2+4)                                   
 800a498:	20 84 00 01 	andi r4,r4,0x1                                 
    }                                                                 
                                                                      
    /* As we always coalesce free blocks, the block that preceedes prev_block
       must have been used. */                                        
    if ( !_Heap_Is_prev_used ( prev_block) ) {                        
 800a49c:	44 80 00 26 	be r4,r0,800a534 <_Heap_Free+0x148>            <== NEVER TAKEN
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
 800a4a0:	44 e0 00 3d 	be r7,r0,800a594 <_Heap_Free+0x1a8>            
      uintptr_t const size = block_size + prev_size + next_block_size;
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
 800a4a4:	29 64 00 38 	lw r4,(r11+56)                                 
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800a4a8:	28 61 00 08 	lw r1,(r3+8)                                   
 800a4ac:	28 63 00 0c 	lw r3,(r3+12)                                  
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
      uintptr_t const size = block_size + prev_size + next_block_size;
 800a4b0:	b4 c9 48 00 	add r9,r6,r9                                   
 800a4b4:	b5 2a 50 00 	add r10,r9,r10                                 
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) 
{                                                                     
  Heap_Block *next = block->next;                                     
  Heap_Block *prev = block->prev;                                     
                                                                      
  prev->next = next;                                                  
 800a4b8:	58 61 00 08 	sw (r3+8),r1                                   
  next->prev = prev;                                                  
 800a4bc:	58 23 00 0c 	sw (r1+12),r3                                  
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
 800a4c0:	34 81 ff ff 	addi r1,r4,-1                                  
 800a4c4:	59 61 00 38 	sw (r11+56),r1                                 
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
 800a4c8:	39 43 00 01 	ori r3,r10,0x1                                 
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
 800a4cc:	b4 4a 08 00 	add r1,r2,r10                                  
                                                                      
    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;                                        
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
 800a4d0:	58 43 00 04 	sw (r2+4),r3                                   
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
 800a4d4:	58 2a 00 00 	sw (r1+0),r10                                  
 800a4d8:	e0 00 00 0d 	bi 800a50c <_Heap_Free+0x120>                  
      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 */                 
 800a4dc:	44 e0 00 1b 	be r7,r0,800a548 <_Heap_Free+0x15c>            
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800a4e0:	28 64 00 08 	lw r4,(r3+8)                                   
 800a4e4:	28 61 00 0c 	lw r1,(r3+12)                                  
      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 */                 
    uintptr_t const size = block_size + next_block_size;              
 800a4e8:	b5 26 48 00 	add r9,r9,r6                                   
)                                                                     
{                                                                     
  Heap_Block *next = old_block->next;                                 
  Heap_Block *prev = old_block->prev;                                 
                                                                      
  new_block->next = next;                                             
 800a4ec:	58 44 00 08 	sw (r2+8),r4                                   
  new_block->prev = prev;                                             
 800a4f0:	58 41 00 0c 	sw (r2+12),r1                                  
    _Heap_Free_list_replace( next_block, block );                     
    block->size_and_flag = size | HEAP_PREV_BLOCK_USED;               
 800a4f4:	39 25 00 01 	ori r5,r9,0x1                                  
    next_block  = _Heap_Block_at( block, size );                      
    next_block->prev_size = size;                                     
 800a4f8:	b4 49 18 00 	add r3,r2,r9                                   
                                                                      
  next->prev = new_block;                                             
 800a4fc:	58 82 00 0c 	sw (r4+12),r2                                  
  prev->next = new_block;                                             
 800a500:	58 22 00 08 	sw (r1+8),r2                                   
      next_block->prev_size = size;                                   
    }                                                                 
  } else if ( next_is_free ) {    /* coalesce next */                 
    uintptr_t const size = block_size + next_block_size;              
    _Heap_Free_list_replace( next_block, block );                     
    block->size_and_flag = size | HEAP_PREV_BLOCK_USED;               
 800a504:	58 45 00 04 	sw (r2+4),r5                                   
    next_block  = _Heap_Block_at( block, size );                      
    next_block->prev_size = size;                                     
 800a508:	58 69 00 00 	sw (r3+0),r9                                   
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
 800a50c:	29 62 00 40 	lw r2,(r11+64)                                 
  ++stats->frees;                                                     
 800a510:	29 61 00 50 	lw r1,(r11+80)                                 
  stats->free_size += block_size;                                     
 800a514:	29 63 00 30 	lw r3,(r11+48)                                 
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
 800a518:	34 42 ff ff 	addi r2,r2,-1                                  
  ++stats->frees;                                                     
 800a51c:	34 21 00 01 	addi r1,r1,1                                   
  stats->free_size += block_size;                                     
 800a520:	b4 66 30 00 	add r6,r3,r6                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
 800a524:	59 61 00 50 	sw (r11+80),r1                                 
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
 800a528:	59 62 00 40 	sw (r11+64),r2                                 
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
 800a52c:	59 66 00 30 	sw (r11+48),r6                                 
                                                                      
  return( true );                                                     
 800a530:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 800a534:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a538:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800a53c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800a540:	37 9c 00 0c 	addi sp,sp,12                                  
 800a544:	c3 a0 00 00 	ret                                            
    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;         
 800a548:	38 c1 00 01 	ori r1,r6,0x1                                  
 800a54c:	58 41 00 04 	sw (r2+4),r1                                   
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
 800a550:	28 67 00 04 	lw r7,(r3+4)                                   
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
 800a554:	29 61 00 38 	lw r1,(r11+56)                                 
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(               
  Heap_Block *block_before,                                           
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
 800a558:	29 64 00 08 	lw r4,(r11+8)                                  
  } 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;               
 800a55c:	34 05 ff fe 	mvi r5,-2                                      
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
 800a560:	58 4b 00 0c 	sw (r2+12),r11                                 
 800a564:	a0 e5 28 00 	and r5,r7,r5                                   
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
    if ( stats->max_free_blocks < stats->free_blocks ) {              
 800a568:	29 67 00 3c 	lw r7,(r11+60)                                 
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
 800a56c:	34 21 00 01 	addi r1,r1,1                                   
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
 800a570:	58 44 00 08 	sw (r2+8),r4                                   
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
  next->prev = new_block;                                             
 800a574:	58 82 00 0c 	sw (r4+12),r2                                  
  } 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;               
 800a578:	58 65 00 04 	sw (r3+4),r5                                   
    next_block->prev_size = block_size;                               
 800a57c:	58 66 00 00 	sw (r3+0),r6                                   
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
 800a580:	59 62 00 08 	sw (r11+8),r2                                  
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
 800a584:	59 61 00 38 	sw (r11+56),r1                                 
    if ( stats->max_free_blocks < stats->free_blocks ) {              
 800a588:	50 e1 ff e1 	bgeu r7,r1,800a50c <_Heap_Free+0x120>          
      stats->max_free_blocks = stats->free_blocks;                    
 800a58c:	59 61 00 3c 	sw (r11+60),r1                                 
 800a590:	e3 ff ff df 	bi 800a50c <_Heap_Free+0x120>                  
      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;                  
 800a594:	b4 ca 50 00 	add r10,r6,r10                                 
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
 800a598:	39 41 00 01 	ori r1,r10,0x1                                 
 800a59c:	58 41 00 04 	sw (r2+4),r1                                   
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
 800a5a0:	28 62 00 04 	lw r2,(r3+4)                                   
 800a5a4:	34 01 ff fe 	mvi r1,-2                                      
      next_block->prev_size = size;                                   
 800a5a8:	58 6a 00 00 	sw (r3+0),r10                                  
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
    } else {                      /* coalesce prev */                 
      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;             
 800a5ac:	a0 41 08 00 	and r1,r2,r1                                   
 800a5b0:	58 61 00 04 	sw (r3+4),r1                                   
 800a5b4:	e3 ff ff d6 	bi 800a50c <_Heap_Free+0x120>                  
                                                                      

0800afd0 <_Heap_Get_information>: void _Heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) { Heap_Block *the_block = the_heap->first_block;
 800afd0:	28 24 00 20 	lw r4,(r1+32)                                  
  Heap_Block *const end = the_heap->last_block;                       
 800afd4:	28 28 00 24 	lw r8,(r1+36)                                  
                                                                      
  memset(the_info, 0, sizeof(*the_info));                             
 800afd8:	58 40 00 00 	sw (r2+0),r0                                   
 800afdc:	58 40 00 04 	sw (r2+4),r0                                   
 800afe0:	58 40 00 08 	sw (r2+8),r0                                   
 800afe4:	58 40 00 0c 	sw (r2+12),r0                                  
 800afe8:	58 40 00 10 	sw (r2+16),r0                                  
 800afec:	58 40 00 14 	sw (r2+20),r0                                  
                                                                      
  while ( the_block != end ) {                                        
 800aff0:	44 88 00 14 	be r4,r8,800b040 <_Heap_Get_information+0x70>  <== NEVER TAKEN
 800aff4:	28 85 00 04 	lw r5,(r4+4)                                   
    - 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;                
 800aff8:	34 09 ff fe 	mvi r9,-2                                      
 800affc:	a0 a9 18 00 	and r3,r5,r9                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800b000:	b4 83 20 00 	add r4,r4,r3                                   
    if ( info->largest < the_size )                                   
      info->largest = the_size;                                       
                                                                      
    the_block = next_block;                                           
  }                                                                   
}                                                                     
 800b004:	28 85 00 04 	lw r5,(r4+4)                                   
    Heap_Information  *info;                                          
                                                                      
    if ( _Heap_Is_prev_used(next_block) )                             
      info = &the_info->Used;                                         
    else                                                              
      info = &the_info->Free;                                         
 800b008:	b8 40 08 00 	mv r1,r2                                       
  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;                 
 800b00c:	20 a6 00 01 	andi r6,r5,0x1                                 
  while ( the_block != end ) {                                        
    uintptr_t const     the_size = _Heap_Block_size(the_block);       
    Heap_Block *const  next_block = _Heap_Block_at(the_block, the_size);
    Heap_Information  *info;                                          
                                                                      
    if ( _Heap_Is_prev_used(next_block) )                             
 800b010:	44 c0 00 02 	be r6,r0,800b018 <_Heap_Get_information+0x48>  
      info = &the_info->Used;                                         
 800b014:	34 41 00 0c 	addi r1,r2,12                                  
    else                                                              
      info = &the_info->Free;                                         
                                                                      
    info->number++;                                                   
 800b018:	28 27 00 00 	lw r7,(r1+0)                                   
    info->total += the_size;                                          
 800b01c:	28 26 00 08 	lw r6,(r1+8)                                   
    if ( info->largest < the_size )                                   
 800b020:	28 2a 00 04 	lw r10,(r1+4)                                  
    if ( _Heap_Is_prev_used(next_block) )                             
      info = &the_info->Used;                                         
    else                                                              
      info = &the_info->Free;                                         
                                                                      
    info->number++;                                                   
 800b024:	34 e7 00 01 	addi r7,r7,1                                   
    info->total += the_size;                                          
 800b028:	b4 c3 30 00 	add r6,r6,r3                                   
    if ( _Heap_Is_prev_used(next_block) )                             
      info = &the_info->Used;                                         
    else                                                              
      info = &the_info->Free;                                         
                                                                      
    info->number++;                                                   
 800b02c:	58 27 00 00 	sw (r1+0),r7                                   
    info->total += the_size;                                          
 800b030:	58 26 00 08 	sw (r1+8),r6                                   
    if ( info->largest < the_size )                                   
 800b034:	51 43 00 02 	bgeu r10,r3,800b03c <_Heap_Get_information+0x6c>
      info->largest = the_size;                                       
 800b038:	58 23 00 04 	sw (r1+4),r3                                   
  Heap_Block *the_block = the_heap->first_block;                      
  Heap_Block *const end = the_heap->last_block;                       
                                                                      
  memset(the_info, 0, sizeof(*the_info));                             
                                                                      
  while ( the_block != end ) {                                        
 800b03c:	5d 04 ff f0 	bne r8,r4,800affc <_Heap_Get_information+0x2c> 
 800b040:	c3 a0 00 00 	ret                                            
                                                                      

08012f08 <_Heap_Size_of_alloc_area>: bool _Heap_Size_of_alloc_area( Heap_Control *heap, void *alloc_begin_ptr, uintptr_t *alloc_size ) {
 8012f08:	37 9c ff f0 	addi sp,sp,-16                                 
 8012f0c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8012f10:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8012f14:	5b 8d 00 08 	sw (sp+8),r13                                  
 8012f18:	5b 9d 00 04 	sw (sp+4),ra                                   
 8012f1c:	b8 40 60 00 	mv r12,r2                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 8012f20:	28 22 00 10 	lw r2,(r1+16)                                  
 8012f24:	b8 20 58 00 	mv r11,r1                                      
 8012f28:	b9 80 08 00 	mv r1,r12                                      
 8012f2c:	b8 60 68 00 	mv r13,r3                                      
 8012f30:	fb ff fd 6b 	calli 80124dc <__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           
 8012f34:	29 62 00 20 	lw r2,(r11+32)                                 
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 8012f38:	35 84 ff f8 	addi r4,r12,-8                                 
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 8012f3c:	c8 81 20 00 	sub r4,r4,r1                                   
  Heap_Block *block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
  Heap_Block *next_block = NULL;                                      
  uintptr_t block_size = 0;                                           
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
    return false;                                                     
 8012f40:	34 01 00 00 	mvi r1,0                                       
  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;             
 8012f44:	54 44 00 10 	bgu r2,r4,8012f84 <_Heap_Size_of_alloc_area+0x7c>
 8012f48:	29 65 00 24 	lw r5,(r11+36)                                 
 8012f4c:	54 85 00 0e 	bgu r4,r5,8012f84 <_Heap_Size_of_alloc_area+0x7c><== NEVER TAKEN
    - 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;                
 8012f50:	28 86 00 04 	lw r6,(r4+4)                                   
 8012f54:	34 03 ff fe 	mvi r3,-2                                      
 8012f58:	a0 66 18 00 	and r3,r3,r6                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 8012f5c:	b4 83 20 00 	add r4,r4,r3                                   
  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;             
 8012f60:	54 44 00 09 	bgu r2,r4,8012f84 <_Heap_Size_of_alloc_area+0x7c><== NEVER TAKEN
 8012f64:	54 85 00 08 	bgu r4,r5,8012f84 <_Heap_Size_of_alloc_area+0x7c><== NEVER TAKEN
  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;                 
 8012f68:	28 82 00 04 	lw r2,(r4+4)                                   
 8012f6c:	20 42 00 01 	andi r2,r2,0x1                                 
  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 )                            
 8012f70:	44 40 00 05 	be r2,r0,8012f84 <_Heap_Size_of_alloc_area+0x7c><== NEVER TAKEN
  ) {                                                                 
    return false;                                                     
  }                                                                   
                                                                      
  *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
 8012f74:	c8 8c 20 00 	sub r4,r4,r12                                  
 8012f78:	34 84 00 04 	addi r4,r4,4                                   
 8012f7c:	59 a4 00 00 	sw (r13+0),r4                                  
                                                                      
  return true;                                                        
 8012f80:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 8012f84:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8012f88:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8012f8c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8012f90:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8012f94:	37 9c 00 10 	addi sp,sp,16                                  
 8012f98:	c3 a0 00 00 	ret                                            
                                                                      

08004ed4 <_Heap_Walk>: bool _Heap_Walk( Heap_Control *heap, int source, bool dump ) {
 8004ed4:	37 9c ff 9c 	addi sp,sp,-100                                
 8004ed8:	5b 8b 00 50 	sw (sp+80),r11                                 
 8004edc:	5b 8c 00 4c 	sw (sp+76),r12                                 
 8004ee0:	5b 8d 00 48 	sw (sp+72),r13                                 
 8004ee4:	5b 8e 00 44 	sw (sp+68),r14                                 
 8004ee8:	5b 8f 00 40 	sw (sp+64),r15                                 
 8004eec:	5b 90 00 3c 	sw (sp+60),r16                                 
 8004ef0:	5b 91 00 38 	sw (sp+56),r17                                 
 8004ef4:	5b 92 00 34 	sw (sp+52),r18                                 
 8004ef8:	5b 93 00 30 	sw (sp+48),r19                                 
 8004efc:	5b 94 00 2c 	sw (sp+44),r20                                 
 8004f00:	5b 95 00 28 	sw (sp+40),r21                                 
 8004f04:	5b 96 00 24 	sw (sp+36),r22                                 
 8004f08:	5b 97 00 20 	sw (sp+32),r23                                 
 8004f0c:	5b 98 00 1c 	sw (sp+28),r24                                 
 8004f10:	5b 99 00 18 	sw (sp+24),r25                                 
 8004f14:	5b 9b 00 14 	sw (sp+20),fp                                  
 8004f18:	5b 9d 00 10 	sw (sp+16),ra                                  
  uintptr_t const min_block_size = heap->min_block_size;              
  Heap_Block *const first_block = heap->first_block;                  
  Heap_Block *const last_block = heap->last_block;                    
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
 8004f1c:	78 0f 08 00 	mvhi r15,0x800                                 
bool _Heap_Walk(                                                      
  Heap_Control *heap,                                                 
  int source,                                                         
  bool dump                                                           
)                                                                     
{                                                                     
 8004f20:	20 63 00 ff 	andi r3,r3,0xff                                
 8004f24:	b8 20 68 00 	mv r13,r1                                      
 8004f28:	b8 40 98 00 	mv r19,r2                                      
  uintptr_t const page_size = heap->page_size;                        
 8004f2c:	28 35 00 10 	lw r21,(r1+16)                                 
  uintptr_t const min_block_size = heap->min_block_size;              
 8004f30:	28 36 00 14 	lw r22,(r1+20)                                 
  Heap_Block *const first_block = heap->first_block;                  
 8004f34:	28 34 00 20 	lw r20,(r1+32)                                 
  Heap_Block *const last_block = heap->last_block;                    
 8004f38:	28 37 00 24 	lw r23,(r1+36)                                 
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
 8004f3c:	39 ef 4e 2c 	ori r15,r15,0x4e2c                             
 8004f40:	44 60 00 03 	be r3,r0,8004f4c <_Heap_Walk+0x78>             
 8004f44:	78 0f 08 00 	mvhi r15,0x800                                 
 8004f48:	39 ef 4e 50 	ori r15,r15,0x4e50                             
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
 8004f4c:	78 03 08 01 	mvhi r3,0x801                                  
 8004f50:	38 63 7a a8 	ori r3,r3,0x7aa8                               
 8004f54:	28 69 00 00 	lw r9,(r3+0)                                   
 8004f58:	34 07 00 03 	mvi r7,3                                       
    return true;                                                      
 8004f5c:	34 03 00 01 	mvi r3,1                                       
  Heap_Block *const last_block = heap->last_block;                    
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
 8004f60:	45 27 00 15 	be r9,r7,8004fb4 <_Heap_Walk+0xe0>             
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8004f64:	b8 60 08 00 	mv r1,r3                                       
 8004f68:	2b 9d 00 10 	lw ra,(sp+16)                                  
 8004f6c:	2b 8b 00 50 	lw r11,(sp+80)                                 
 8004f70:	2b 8c 00 4c 	lw r12,(sp+76)                                 
 8004f74:	2b 8d 00 48 	lw r13,(sp+72)                                 
 8004f78:	2b 8e 00 44 	lw r14,(sp+68)                                 
 8004f7c:	2b 8f 00 40 	lw r15,(sp+64)                                 
 8004f80:	2b 90 00 3c 	lw r16,(sp+60)                                 
 8004f84:	2b 91 00 38 	lw r17,(sp+56)                                 
 8004f88:	2b 92 00 34 	lw r18,(sp+52)                                 
 8004f8c:	2b 93 00 30 	lw r19,(sp+48)                                 
 8004f90:	2b 94 00 2c 	lw r20,(sp+44)                                 
 8004f94:	2b 95 00 28 	lw r21,(sp+40)                                 
 8004f98:	2b 96 00 24 	lw r22,(sp+36)                                 
 8004f9c:	2b 97 00 20 	lw r23,(sp+32)                                 
 8004fa0:	2b 98 00 1c 	lw r24,(sp+28)                                 
 8004fa4:	2b 99 00 18 	lw r25,(sp+24)                                 
 8004fa8:	2b 9b 00 14 	lw fp,(sp+20)                                  
 8004fac:	37 9c 00 64 	addi sp,sp,100                                 
 8004fb0:	c3 a0 00 00 	ret                                            
  Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  Heap_Block *const first_block = heap->first_block;                  
  Heap_Block *const last_block = heap->last_block;                    
                                                                      
  (*printer)(                                                         
 8004fb4:	29 a2 00 08 	lw r2,(r13+8)                                  
 8004fb8:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8004fbc:	29 a6 00 18 	lw r6,(r13+24)                                 
 8004fc0:	29 a7 00 1c 	lw r7,(r13+28)                                 
 8004fc4:	78 03 08 01 	mvhi r3,0x801                                  
 8004fc8:	5b 82 00 08 	sw (sp+8),r2                                   
 8004fcc:	5b 81 00 0c 	sw (sp+12),r1                                  
 8004fd0:	5b 97 00 04 	sw (sp+4),r23                                  
 8004fd4:	ba 60 08 00 	mv r1,r19                                      
 8004fd8:	34 02 00 00 	mvi r2,0                                       
 8004fdc:	38 63 49 24 	ori r3,r3,0x4924                               
 8004fe0:	ba a0 20 00 	mv r4,r21                                      
 8004fe4:	ba c0 28 00 	mv r5,r22                                      
 8004fe8:	ba 80 40 00 	mv r8,r20                                      
 8004fec:	d9 e0 00 00 	call r15                                       
    heap->area_begin, heap->area_end,                                 
    first_block, last_block,                                          
    first_free_block, last_free_block                                 
  );                                                                  
                                                                      
  if ( page_size == 0 ) {                                             
 8004ff0:	46 a0 00 26 	be r21,r0,8005088 <_Heap_Walk+0x1b4>           <== NEVER TAKEN
)                                                                     
{                                                                     
#if (CPU_ALIGNMENT == 0)                                              
    return true;                                                      
#else                                                                 
    return (((uintptr_t)address % CPU_ALIGNMENT) == 0);               
 8004ff4:	22 ab 00 07 	andi r11,r21,0x7                               
    (*printer)( source, true, "page size is zero\n" );                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {               
 8004ff8:	5d 60 00 2b 	bne r11,r0,80050a4 <_Heap_Walk+0x1d0>          <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8004ffc:	ba c0 08 00 	mv r1,r22                                      
 8005000:	ba a0 10 00 	mv r2,r21                                      
 8005004:	fb ff ee 87 	calli 8000a20 <__umodsi3>                      
 8005008:	b8 20 60 00 	mv r12,r1                                      
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {             
 800500c:	5c 2b 00 2e 	bne r1,r11,80050c4 <_Heap_Walk+0x1f0>          
 8005010:	36 81 00 08 	addi r1,r20,8                                  
 8005014:	ba a0 10 00 	mv r2,r21                                      
 8005018:	fb ff ee 82 	calli 8000a20 <__umodsi3>                      
 800501c:	b8 20 18 00 	mv r3,r1                                       
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
 8005020:	5c 2c 00 31 	bne r1,r12,80050e4 <_Heap_Walk+0x210>          
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005024:	2a 8c 00 04 	lw r12,(r20+4)                                 
  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;                 
 8005028:	21 81 00 01 	andi r1,r12,0x1                                
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( first_block ) ) {                         
 800502c:	44 23 00 fe 	be r1,r3,8005424 <_Heap_Walk+0x550>            
    - 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;                
 8005030:	2a e2 00 04 	lw r2,(r23+4)                                  
 8005034:	34 01 ff fe 	mvi r1,-2                                      
 8005038:	a0 22 08 00 	and r1,r1,r2                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800503c:	b6 e1 08 00 	add r1,r23,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;                 
 8005040:	28 22 00 04 	lw r2,(r1+4)                                   
 8005044:	20 42 00 01 	andi r2,r2,0x1                                 
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( _Heap_Is_free( last_block ) ) {                                
 8005048:	44 43 00 09 	be r2,r3,800506c <_Heap_Walk+0x198>            
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
 800504c:	46 81 00 2e 	be r20,r1,8005104 <_Heap_Walk+0x230>           
    _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
  ) {                                                                 
    (*printer)(                                                       
 8005050:	78 03 08 01 	mvhi r3,0x801                                  
 8005054:	38 63 4a 8c 	ori r3,r3,0x4a8c                               
 8005058:	ba 60 08 00 	mv r1,r19                                      
 800505c:	34 02 00 01 	mvi r2,1                                       
 8005060:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005064:	34 03 00 00 	mvi r3,0                                       
 8005068:	e3 ff ff bf 	bi 8004f64 <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( _Heap_Is_free( last_block ) ) {                                
    (*printer)(                                                       
 800506c:	78 03 08 01 	mvhi r3,0x801                                  
 8005070:	38 63 4a 74 	ori r3,r3,0x4a74                               
 8005074:	ba 60 08 00 	mv r1,r19                                      
 8005078:	34 02 00 01 	mvi r2,1                                       
 800507c:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005080:	34 03 00 00 	mvi r3,0                                       
 8005084:	e3 ff ff b8 	bi 8004f64 <_Heap_Walk+0x90>                   
    first_block, last_block,                                          
    first_free_block, last_free_block                                 
  );                                                                  
                                                                      
  if ( page_size == 0 ) {                                             
    (*printer)( source, true, "page size is zero\n" );                
 8005088:	78 03 08 01 	mvhi r3,0x801                                  
 800508c:	38 63 49 b8 	ori r3,r3,0x49b8                               
 8005090:	ba 60 08 00 	mv r1,r19                                      
 8005094:	34 02 00 01 	mvi r2,1                                       
 8005098:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 800509c:	34 03 00 00 	mvi r3,0                                       
 80050a0:	e3 ff ff b1 	bi 8004f64 <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {               
    (*printer)(                                                       
 80050a4:	78 03 08 01 	mvhi r3,0x801                                  
 80050a8:	38 63 49 cc 	ori r3,r3,0x49cc                               
 80050ac:	ba 60 08 00 	mv r1,r19                                      
 80050b0:	34 02 00 01 	mvi r2,1                                       
 80050b4:	ba a0 20 00 	mv r4,r21                                      
 80050b8:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 80050bc:	34 03 00 00 	mvi r3,0                                       
 80050c0:	e3 ff ff a9 	bi 8004f64 <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {             
    (*printer)(                                                       
 80050c4:	78 03 08 01 	mvhi r3,0x801                                  
 80050c8:	38 63 49 ec 	ori r3,r3,0x49ec                               
 80050cc:	ba 60 08 00 	mv r1,r19                                      
 80050d0:	34 02 00 01 	mvi r2,1                                       
 80050d4:	ba c0 20 00 	mv r4,r22                                      
 80050d8:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 80050dc:	34 03 00 00 	mvi r3,0                                       
 80050e0:	e3 ff ff a1 	bi 8004f64 <_Heap_Walk+0x90>                   
  }                                                                   
                                                                      
  if (                                                                
    !_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
  ) {                                                                 
    (*printer)(                                                       
 80050e4:	78 03 08 01 	mvhi r3,0x801                                  
 80050e8:	38 63 4a 10 	ori r3,r3,0x4a10                               
 80050ec:	ba 60 08 00 	mv r1,r19                                      
 80050f0:	34 02 00 01 	mvi r2,1                                       
 80050f4:	ba 80 20 00 	mv r4,r20                                      
 80050f8:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 80050fc:	34 03 00 00 	mvi r3,0                                       
 8005100:	e3 ff ff 99 	bi 8004f64 <_Heap_Walk+0x90>                   
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005104:	29 b0 00 08 	lw r16,(r13+8)                                 
  int source,                                                         
  Heap_Walk_printer printer,                                          
  Heap_Control *heap                                                  
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
 8005108:	29 b2 00 10 	lw r18,(r13+16)                                
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
 800510c:	45 b0 00 2f 	be r13,r16,80051c8 <_Heap_Walk+0x2f4>          
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005110:	29 ae 00 20 	lw r14,(r13+32)                                
  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;             
 8005114:	ba 00 58 00 	mv r11,r16                                     
 8005118:	55 d0 00 dc 	bgu r14,r16,8005488 <_Heap_Walk+0x5b4>         <== NEVER TAKEN
 800511c:	29 b8 00 24 	lw r24,(r13+36)                                
 8005120:	56 18 00 da 	bgu r16,r24,8005488 <_Heap_Walk+0x5b4>         <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8005124:	36 01 00 08 	addi r1,r16,8                                  
 8005128:	ba 40 10 00 	mv r2,r18                                      
 800512c:	fb ff ee 3d 	calli 8000a20 <__umodsi3>                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
 8005130:	5c 20 00 de 	bne r1,r0,80054a8 <_Heap_Walk+0x5d4>           <== NEVER TAKEN
    - 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;                
 8005134:	2a 03 00 04 	lw r3,(r16+4)                                  
 8005138:	34 02 ff fe 	mvi r2,-2                                      
 800513c:	34 11 ff fe 	mvi r17,-2                                     
 8005140:	a0 43 10 00 	and r2,r2,r3                                   
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005144:	b6 02 10 00 	add r2,r16,r2                                  
  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;                 
 8005148:	28 42 00 04 	lw r2,(r2+4)                                   
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 800514c:	b9 a0 18 00 	mv r3,r13                                      
 8005150:	20 42 00 01 	andi r2,r2,0x1                                 
 8005154:	44 41 00 12 	be r2,r1,800519c <_Heap_Walk+0x2c8>            <== ALWAYS TAKEN
 8005158:	e0 00 00 dc 	bi 80054c8 <_Heap_Walk+0x5f4>                  <== NOT EXECUTED
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    prev_block = free_block;                                          
    free_block = free_block->next;                                    
 800515c:	2a 0b 00 08 	lw r11,(r16+8)                                 
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
 8005160:	45 ab 00 1b 	be r13,r11,80051cc <_Heap_Walk+0x2f8>          
  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;             
 8005164:	55 cb 00 c9 	bgu r14,r11,8005488 <_Heap_Walk+0x5b4>         
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8005168:	35 61 00 08 	addi r1,r11,8                                  
 800516c:	ba 40 10 00 	mv r2,r18                                      
  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;             
 8005170:	55 78 00 c6 	bgu r11,r24,8005488 <_Heap_Walk+0x5b4>         <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8005174:	fb ff ee 2b 	calli 8000a20 <__umodsi3>                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
 8005178:	5c 20 00 cc 	bne r1,r0,80054a8 <_Heap_Walk+0x5d4>           
    - 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;                
 800517c:	29 64 00 04 	lw r4,(r11+4)                                  
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 8005180:	ba 00 18 00 	mv r3,r16                                      
 8005184:	b9 60 80 00 	mv r16,r11                                     
 8005188:	a2 24 20 00 	and r4,r17,r4                                  
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 800518c:	b4 8b 20 00 	add r4,r4,r11                                  
  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;                 
 8005190:	28 84 00 04 	lw r4,(r4+4)                                   
 8005194:	20 84 00 01 	andi r4,r4,0x1                                 
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 8005198:	5c 81 00 cc 	bne r4,r1,80054c8 <_Heap_Walk+0x5f4>           
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( free_block->prev != prev_block ) {                           
 800519c:	2a 07 00 0c 	lw r7,(r16+12)                                 
 80051a0:	44 e3 ff ef 	be r7,r3,800515c <_Heap_Walk+0x288>            
      (*printer)(                                                     
 80051a4:	78 03 08 01 	mvhi r3,0x801                                  
 80051a8:	38 63 4b 28 	ori r3,r3,0x4b28                               
 80051ac:	ba 60 08 00 	mv r1,r19                                      
 80051b0:	34 02 00 01 	mvi r2,1                                       
 80051b4:	ba 00 20 00 	mv r4,r16                                      
 80051b8:	b8 e0 28 00 	mv r5,r7                                       
 80051bc:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 80051c0:	34 03 00 00 	mvi r3,0                                       
 80051c4:	e3 ff ff 68 	bi 8004f64 <_Heap_Walk+0x90>                   
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
 80051c8:	29 ae 00 20 	lw r14,(r13+32)                                
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 80051cc:	78 01 08 01 	mvhi r1,0x801                                  
 80051d0:	5b 81 00 54 	sw (sp+84),r1                                  
 80051d4:	78 01 08 01 	mvhi r1,0x801                                  
 80051d8:	5b 81 00 58 	sw (sp+88),r1                                  
 80051dc:	78 01 08 01 	mvhi r1,0x801                                  
 80051e0:	5b 81 00 5c 	sw (sp+92),r1                                  
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 80051e4:	78 01 08 01 	mvhi r1,0x801                                  
 80051e8:	5b 81 00 60 	sw (sp+96),r1                                  
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 80051ec:	78 01 08 01 	mvhi r1,0x801                                  
 80051f0:	5b 81 00 64 	sw (sp+100),r1                                 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 80051f4:	2b 81 00 54 	lw r1,(sp+84)                                  
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
 80051f8:	78 1b 08 01 	mvhi fp,0x801                                  
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
      (*printer)(                                                     
 80051fc:	78 19 08 01 	mvhi r25,0x801                                 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005200:	38 21 48 ec 	ori r1,r1,0x48ec                               
 8005204:	5b 81 00 54 	sw (sp+84),r1                                  
 8005208:	2b 81 00 58 	lw r1,(sp+88)                                  
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 800520c:	78 18 08 01 	mvhi r24,0x801                                 
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 8005210:	ba 80 88 00 	mv r17,r20                                     
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005214:	38 21 49 08 	ori r1,r1,0x4908                               
 8005218:	5b 81 00 58 	sw (sp+88),r1                                  
 800521c:	2b 81 00 5c 	lw r1,(sp+92)                                  
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
 8005220:	3b 7b 4c d8 	ori fp,fp,0x4cd8                               
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
      (*printer)(                                                     
 8005224:	3b 39 4c c0 	ori r25,r25,0x4cc0                             
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005228:	38 21 4c 1c 	ori r1,r1,0x4c1c                               
 800522c:	5b 81 00 5c 	sw (sp+92),r1                                  
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 8005230:	2b 81 00 60 	lw r1,(sp+96)                                  
 8005234:	3b 18 4c 8c 	ori r24,r24,0x4c8c                             
 8005238:	38 21 49 18 	ori r1,r1,0x4918                               
 800523c:	5b 81 00 60 	sw (sp+96),r1                                  
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 8005240:	2b 81 00 64 	lw r1,(sp+100)                                 
 8005244:	38 21 48 fc 	ori r1,r1,0x48fc                               
 8005248:	5b 81 00 64 	sw (sp+100),r1                                 
    - 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;                
 800524c:	34 01 ff fe 	mvi r1,-2                                      
 8005250:	a1 81 90 00 	and r18,r12,r1                                 
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 8005254:	b6 51 80 00 	add r16,r18,r17                                
  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;             
 8005258:	55 d0 00 7a 	bgu r14,r16,8005440 <_Heap_Walk+0x56c>         <== NEVER TAKEN
 800525c:	29 a4 00 24 	lw r4,(r13+36)                                 
 8005260:	56 04 00 78 	bgu r16,r4,8005440 <_Heap_Walk+0x56c>          
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8005264:	ba 40 08 00 	mv r1,r18                                      
 8005268:	ba a0 10 00 	mv r2,r21                                      
    uintptr_t const block_begin = (uintptr_t) block;                  
    uintptr_t const block_size = _Heap_Block_size( block );           
    bool const prev_used = _Heap_Is_prev_used( block );               
    Heap_Block *const next_block = _Heap_Block_at( block, block_size );
    uintptr_t const next_block_begin = (uintptr_t) next_block;        
    bool const is_not_last_block = block != last_block;               
 800526c:	fe 37 58 00 	cmpne r11,r17,r23                              
 8005270:	fb ff ed ec 	calli 8000a20 <__umodsi3>                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
 8005274:	44 20 00 02 	be r1,r0,800527c <_Heap_Walk+0x3a8>            
 8005278:	5d 60 00 15 	bne r11,r0,80052cc <_Heap_Walk+0x3f8>          
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( block_size < min_block_size && is_not_last_block ) {         
 800527c:	52 56 00 02 	bgeu r18,r22,8005284 <_Heap_Walk+0x3b0>        
 8005280:	5d 60 00 1c 	bne r11,r0,80052f0 <_Heap_Walk+0x41c>          <== ALWAYS TAKEN
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( next_block_begin <= block_begin && is_not_last_block ) {     
 8005284:	56 11 00 02 	bgu r16,r17,800528c <_Heap_Walk+0x3b8>         
 8005288:	5d 60 00 77 	bne r11,r0,8005464 <_Heap_Walk+0x590>          
  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;                 
 800528c:	2a 06 00 04 	lw r6,(r16+4)                                  
 8005290:	21 8c 00 01 	andi r12,r12,0x1                               
 8005294:	20 c6 00 01 	andi r6,r6,0x1                                 
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
 8005298:	44 c0 00 28 	be r6,r0,8005338 <_Heap_Walk+0x464>            
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
 800529c:	45 80 00 1f 	be r12,r0,8005318 <_Heap_Walk+0x444>           
      (*printer)(                                                     
 80052a0:	ba 60 08 00 	mv r1,r19                                      
 80052a4:	34 02 00 00 	mvi r2,0                                       
 80052a8:	bb 20 18 00 	mv r3,r25                                      
 80052ac:	ba 20 20 00 	mv r4,r17                                      
 80052b0:	ba 40 28 00 	mv r5,r18                                      
 80052b4:	d9 e0 00 00 	call r15                                       
        block->prev_size                                              
      );                                                              
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
 80052b8:	46 90 00 43 	be r20,r16,80053c4 <_Heap_Walk+0x4f0>          
 80052bc:	2a 0c 00 04 	lw r12,(r16+4)                                 
 80052c0:	29 ae 00 20 	lw r14,(r13+32)                                
 80052c4:	ba 00 88 00 	mv r17,r16                                     
 80052c8:	e3 ff ff e1 	bi 800524c <_Heap_Walk+0x378>                  
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
      (*printer)(                                                     
 80052cc:	78 03 08 01 	mvhi r3,0x801                                  
 80052d0:	38 63 4b 8c 	ori r3,r3,0x4b8c                               
 80052d4:	ba 60 08 00 	mv r1,r19                                      
 80052d8:	34 02 00 01 	mvi r2,1                                       
 80052dc:	ba 20 20 00 	mv r4,r17                                      
 80052e0:	ba 40 28 00 	mv r5,r18                                      
 80052e4:	d9 e0 00 00 	call r15                                       
        "block 0x%08x: block size %u not page aligned\n",             
        block,                                                        
        block_size                                                    
      );                                                              
                                                                      
      return false;                                                   
 80052e8:	34 03 00 00 	mvi r3,0                                       
 80052ec:	e3 ff ff 1e 	bi 8004f64 <_Heap_Walk+0x90>                   
    }                                                                 
                                                                      
    if ( block_size < min_block_size && is_not_last_block ) {         
      (*printer)(                                                     
 80052f0:	78 03 08 01 	mvhi r3,0x801                                  
 80052f4:	38 63 4b bc 	ori r3,r3,0x4bbc                               
 80052f8:	ba 60 08 00 	mv r1,r19                                      
 80052fc:	34 02 00 01 	mvi r2,1                                       
 8005300:	ba 20 20 00 	mv r4,r17                                      
 8005304:	ba 40 28 00 	mv r5,r18                                      
 8005308:	ba c0 30 00 	mv r6,r22                                      
 800530c:	d9 e0 00 00 	call r15                                       
        block,                                                        
        block_size,                                                   
        min_block_size                                                
      );                                                              
                                                                      
      return false;                                                   
 8005310:	34 03 00 00 	mvi r3,0                                       
 8005314:	e3 ff ff 14 	bi 8004f64 <_Heap_Walk+0x90>                   
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
 8005318:	2a 26 00 00 	lw r6,(r17+0)                                  
 800531c:	ba 20 20 00 	mv r4,r17                                      
 8005320:	ba 60 08 00 	mv r1,r19                                      
 8005324:	34 02 00 00 	mvi r2,0                                       
 8005328:	bb 60 18 00 	mv r3,fp                                       
 800532c:	ba 40 28 00 	mv r5,r18                                      
 8005330:	d9 e0 00 00 	call r15                                       
 8005334:	e3 ff ff e1 	bi 80052b8 <_Heap_Walk+0x3e4>                  
    false,                                                            
    "block 0x%08x: size %u, prev 0x%08x%s, next 0x%08x%s\n",          
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
 8005338:	2a 26 00 0c 	lw r6,(r17+12)                                 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 800533c:	29 a4 00 08 	lw r4,(r13+8)                                  
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005340:	29 a5 00 0c 	lw r5,(r13+12)                                 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005344:	2b 87 00 54 	lw r7,(sp+84)                                  
 8005348:	44 86 00 03 	be r4,r6,8005354 <_Heap_Walk+0x480>            
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 800534c:	bb 00 38 00 	mv r7,r24                                      
 8005350:	45 a6 00 29 	be r13,r6,80053f4 <_Heap_Walk+0x520>           
    block->next,                                                      
    block->next == last_free_block ?                                  
 8005354:	2a 28 00 08 	lw r8,(r17+8)                                  
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005358:	2b 84 00 58 	lw r4,(sp+88)                                  
 800535c:	44 a8 00 03 	be r5,r8,8005368 <_Heap_Walk+0x494>            
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 8005360:	bb 00 20 00 	mv r4,r24                                      
 8005364:	45 a8 00 26 	be r13,r8,80053fc <_Heap_Walk+0x528>           
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005368:	2b 83 00 5c 	lw r3,(sp+92)                                  
 800536c:	5b 84 00 04 	sw (sp+4),r4                                   
 8005370:	ba 60 08 00 	mv r1,r19                                      
 8005374:	34 02 00 00 	mvi r2,0                                       
 8005378:	ba 20 20 00 	mv r4,r17                                      
 800537c:	ba 40 28 00 	mv r5,r18                                      
 8005380:	d9 e0 00 00 	call r15                                       
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
  );                                                                  
                                                                      
  if ( block_size != next_block->prev_size ) {                        
 8005384:	2a 06 00 00 	lw r6,(r16+0)                                  
 8005388:	5e 46 00 11 	bne r18,r6,80053cc <_Heap_Walk+0x4f8>          
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !prev_used ) {                                                 
 800538c:	45 80 00 1e 	be r12,r0,8005404 <_Heap_Walk+0x530>           
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005390:	29 a5 00 08 	lw r5,(r13+8)                                  
)                                                                     
{                                                                     
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *free_block = _Heap_Free_list_first( heap );       
                                                                      
  while ( free_block != free_list_tail ) {                            
 8005394:	45 a5 00 04 	be r13,r5,80053a4 <_Heap_Walk+0x4d0>           <== NEVER TAKEN
    if ( free_block == block ) {                                      
 8005398:	46 25 ff c8 	be r17,r5,80052b8 <_Heap_Walk+0x3e4>           
      return true;                                                    
    }                                                                 
    free_block = free_block->next;                                    
 800539c:	28 a5 00 08 	lw r5,(r5+8)                                   
)                                                                     
{                                                                     
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *free_block = _Heap_Free_list_first( heap );       
                                                                      
  while ( free_block != free_list_tail ) {                            
 80053a0:	5d a5 ff fe 	bne r13,r5,8005398 <_Heap_Walk+0x4c4>          
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {                 
    (*printer)(                                                       
 80053a4:	78 03 08 01 	mvhi r3,0x801                                  
 80053a8:	38 63 4d 00 	ori r3,r3,0x4d00                               
 80053ac:	ba 60 08 00 	mv r1,r19                                      
 80053b0:	34 02 00 01 	mvi r2,1                                       
 80053b4:	ba 20 20 00 	mv r4,r17                                      
 80053b8:	d9 e0 00 00 	call r15                                       
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
 80053bc:	34 03 00 00 	mvi r3,0                                       
 80053c0:	e3 ff fe e9 	bi 8004f64 <_Heap_Walk+0x90>                   
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
 80053c4:	34 03 00 01 	mvi r3,1                                       
 80053c8:	e3 ff fe e7 	bi 8004f64 <_Heap_Walk+0x90>                   
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
  );                                                                  
                                                                      
  if ( block_size != next_block->prev_size ) {                        
    (*printer)(                                                       
 80053cc:	78 03 08 01 	mvhi r3,0x801                                  
 80053d0:	38 63 4c 54 	ori r3,r3,0x4c54                               
 80053d4:	ba 60 08 00 	mv r1,r19                                      
 80053d8:	34 02 00 01 	mvi r2,1                                       
 80053dc:	ba 20 20 00 	mv r4,r17                                      
 80053e0:	ba 40 28 00 	mv r5,r18                                      
 80053e4:	ba 00 38 00 	mv r7,r16                                      
 80053e8:	d9 e0 00 00 	call r15                                       
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
 80053ec:	34 03 00 00 	mvi r3,0                                       
 80053f0:	e3 ff fe dd 	bi 8004f64 <_Heap_Walk+0x90>                   
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 80053f4:	2b 87 00 64 	lw r7,(sp+100)                                 
 80053f8:	e3 ff ff d7 	bi 8005354 <_Heap_Walk+0x480>                  
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 80053fc:	2b 84 00 60 	lw r4,(sp+96)                                  
 8005400:	e3 ff ff da 	bi 8005368 <_Heap_Walk+0x494>                  
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !prev_used ) {                                                 
    (*printer)(                                                       
 8005404:	78 03 08 01 	mvhi r3,0x801                                  
 8005408:	38 63 4c 90 	ori r3,r3,0x4c90                               
 800540c:	ba 60 08 00 	mv r1,r19                                      
 8005410:	34 02 00 01 	mvi r2,1                                       
 8005414:	ba 20 20 00 	mv r4,r17                                      
 8005418:	d9 e0 00 00 	call r15                                       
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
 800541c:	34 03 00 00 	mvi r3,0                                       
 8005420:	e3 ff fe d1 	bi 8004f64 <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( first_block ) ) {                         
    (*printer)(                                                       
 8005424:	78 03 08 01 	mvhi r3,0x801                                  
 8005428:	38 63 4a 44 	ori r3,r3,0x4a44                               
 800542c:	ba 60 08 00 	mv r1,r19                                      
 8005430:	34 02 00 01 	mvi r2,1                                       
 8005434:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005438:	34 03 00 00 	mvi r3,0                                       
 800543c:	e3 ff fe ca 	bi 8004f64 <_Heap_Walk+0x90>                   
    Heap_Block *const next_block = _Heap_Block_at( block, block_size );
    uintptr_t const next_block_begin = (uintptr_t) next_block;        
    bool const is_not_last_block = block != last_block;               
                                                                      
    if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {              
      (*printer)(                                                     
 8005440:	78 03 08 01 	mvhi r3,0x801                                  
 8005444:	38 63 4b 5c 	ori r3,r3,0x4b5c                               
 8005448:	ba 60 08 00 	mv r1,r19                                      
 800544c:	34 02 00 01 	mvi r2,1                                       
 8005450:	ba 20 20 00 	mv r4,r17                                      
 8005454:	ba 00 28 00 	mv r5,r16                                      
 8005458:	d9 e0 00 00 	call r15                                       
        "block 0x%08x: next block 0x%08x not in heap\n",              
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
 800545c:	34 03 00 00 	mvi r3,0                                       
 8005460:	e3 ff fe c1 	bi 8004f64 <_Heap_Walk+0x90>                   
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( next_block_begin <= block_begin && is_not_last_block ) {     
      (*printer)(                                                     
 8005464:	78 03 08 01 	mvhi r3,0x801                                  
 8005468:	38 63 4b e8 	ori r3,r3,0x4be8                               
 800546c:	ba 60 08 00 	mv r1,r19                                      
 8005470:	34 02 00 01 	mvi r2,1                                       
 8005474:	ba 20 20 00 	mv r4,r17                                      
 8005478:	ba 00 28 00 	mv r5,r16                                      
 800547c:	d9 e0 00 00 	call r15                                       
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
 8005480:	34 03 00 00 	mvi r3,0                                       
 8005484:	e3 ff fe b8 	bi 8004f64 <_Heap_Walk+0x90>                   
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
    if ( !_Heap_Is_block_in_heap( heap, free_block ) ) {              
      (*printer)(                                                     
 8005488:	78 03 08 01 	mvhi r3,0x801                                  
 800548c:	38 63 4a bc 	ori r3,r3,0x4abc                               
 8005490:	ba 60 08 00 	mv r1,r19                                      
 8005494:	34 02 00 01 	mvi r2,1                                       
 8005498:	b9 60 20 00 	mv r4,r11                                      
 800549c:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 80054a0:	34 03 00 00 	mvi r3,0                                       
 80054a4:	e3 ff fe b0 	bi 8004f64 <_Heap_Walk+0x90>                   
    }                                                                 
                                                                      
    if (                                                              
      !_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
    ) {                                                               
      (*printer)(                                                     
 80054a8:	78 03 08 01 	mvhi r3,0x801                                  
 80054ac:	38 63 4a dc 	ori r3,r3,0x4adc                               
 80054b0:	ba 60 08 00 	mv r1,r19                                      
 80054b4:	34 02 00 01 	mvi r2,1                                       
 80054b8:	b9 60 20 00 	mv r4,r11                                      
 80054bc:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 80054c0:	34 03 00 00 	mvi r3,0                                       
 80054c4:	e3 ff fe a8 	bi 8004f64 <_Heap_Walk+0x90>                   
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
      (*printer)(                                                     
 80054c8:	78 03 08 01 	mvhi r3,0x801                                  
 80054cc:	38 63 4b 0c 	ori r3,r3,0x4b0c                               
 80054d0:	ba 60 08 00 	mv r1,r19                                      
 80054d4:	34 02 00 01 	mvi r2,1                                       
 80054d8:	b9 60 20 00 	mv r4,r11                                      
 80054dc:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 80054e0:	34 03 00 00 	mvi r3,0                                       
 80054e4:	e3 ff fe a0 	bi 8004f64 <_Heap_Walk+0x90>                   
                                                                      

080035b0 <_IO_Initialize_all_drivers>: * * Output Parameters: NONE */ void _IO_Initialize_all_drivers( void ) {
 80035b0:	37 9c ff f4 	addi sp,sp,-12                                 
 80035b4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80035b8:	5b 8c 00 08 	sw (sp+8),r12                                  
 80035bc:	5b 9d 00 04 	sw (sp+4),ra                                   
   rtems_device_major_number major;                                   
                                                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )         
 80035c0:	78 0c 08 01 	mvhi r12,0x801                                 
 80035c4:	39 8c 51 e0 	ori r12,r12,0x51e0                             
 80035c8:	29 81 00 00 	lw r1,(r12+0)                                  
 80035cc:	44 20 00 09 	be r1,r0,80035f0 <_IO_Initialize_all_drivers+0x40><== NEVER TAKEN
 80035d0:	34 0b 00 00 	mvi r11,0                                      
     (void) rtems_io_initialize( major, 0, NULL );                    
 80035d4:	b9 60 08 00 	mv r1,r11                                      
 80035d8:	34 02 00 00 	mvi r2,0                                       
 80035dc:	34 03 00 00 	mvi r3,0                                       
 80035e0:	f8 00 1a 38 	calli 8009ec0 <rtems_io_initialize>            
                                                                      
void _IO_Initialize_all_drivers( void )                               
{                                                                     
   rtems_device_major_number major;                                   
                                                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )         
 80035e4:	29 81 00 00 	lw r1,(r12+0)                                  
 80035e8:	35 6b 00 01 	addi r11,r11,1                                 
 80035ec:	54 2b ff fa 	bgu r1,r11,80035d4 <_IO_Initialize_all_drivers+0x24>
     (void) rtems_io_initialize( major, 0, NULL );                    
}                                                                     
 80035f0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80035f4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80035f8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80035fc:	37 9c 00 0c 	addi sp,sp,12                                  
 8003600:	c3 a0 00 00 	ret                                            
                                                                      

08003490 <_IO_Manager_initialization>: * workspace. * */ void _IO_Manager_initialization(void) {
 8003490:	37 9c ff e8 	addi sp,sp,-24                                 
 8003494:	5b 8b 00 18 	sw (sp+24),r11                                 
 8003498:	5b 8c 00 14 	sw (sp+20),r12                                 
 800349c:	5b 8d 00 10 	sw (sp+16),r13                                 
 80034a0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80034a4:	5b 8f 00 08 	sw (sp+8),r15                                  
 80034a8:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = Configuration.Device_driver_table;              
 80034ac:	78 01 08 01 	mvhi r1,0x801                                  
 80034b0:	38 21 40 f4 	ori r1,r1,0x40f4                               
  drivers_in_table  = Configuration.number_of_device_drivers;         
 80034b4:	28 2b 00 30 	lw r11,(r1+48)                                 
  number_of_drivers = Configuration.maximum_drivers;                  
 80034b8:	28 2e 00 2c 	lw r14,(r1+44)                                 
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = Configuration.Device_driver_table;              
 80034bc:	28 2d 00 34 	lw r13,(r1+52)                                 
                                                                      
  /*                                                                  
   *  If the user claims there are less drivers than are actually in  
   *  the table, then let's just go with the table's count.           
   */                                                                 
  if ( number_of_drivers <= drivers_in_table )                        
 80034c0:	51 6e 00 2e 	bgeu r11,r14,8003578 <_IO_Manager_initialization+0xe8>
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
 80034c4:	b5 ce 60 00 	add r12,r14,r14                                
 80034c8:	b5 8e 60 00 	add r12,r12,r14                                
 80034cc:	b5 8c 60 00 	add r12,r12,r12                                
 80034d0:	b5 8c 60 00 	add r12,r12,r12                                
 80034d4:	b5 8c 60 00 	add r12,r12,r12                                
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
 80034d8:	b9 80 08 00 	mv r1,r12                                      
 80034dc:	f8 00 0f 00 	calli 80070dc <_Workspace_Allocate_or_fatal_error>
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
 80034e0:	78 04 08 01 	mvhi r4,0x801                                  
  /*                                                                  
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
 80034e4:	78 0f 08 01 	mvhi r15,0x801                                 
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
 80034e8:	38 84 51 e0 	ori r4,r4,0x51e0                               
  /*                                                                  
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
 80034ec:	39 ef 51 e4 	ori r15,r15,0x51e4                             
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
                                                                      
  memset(                                                             
 80034f0:	34 02 00 00 	mvi r2,0                                       
 80034f4:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
 80034f8:	58 8e 00 00 	sw (r4+0),r14                                  
  /*                                                                  
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
 80034fc:	59 e1 00 00 	sw (r15+0),r1                                  
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
                                                                      
  memset(                                                             
 8003500:	f8 00 29 16 	calli 800d958 <memset>                         
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 8003504:	45 60 00 15 	be r11,r0,8003558 <_IO_Manager_initialization+0xc8><== NEVER TAKEN
 8003508:	29 e5 00 00 	lw r5,(r15+0)                                  
 800350c:	34 03 00 00 	mvi r3,0                                       
 8003510:	34 04 00 00 	mvi r4,0                                       
 *  registration. The driver table is now allocated in the            
 *  workspace.                                                        
 *                                                                    
 */                                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
 8003514:	b5 a3 08 00 	add r1,r13,r3                                  
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
 8003518:	28 26 00 00 	lw r6,(r1+0)                                   
 *  registration. The driver table is now allocated in the            
 *  workspace.                                                        
 *                                                                    
 */                                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
 800351c:	b4 a3 10 00 	add r2,r5,r3                                   
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 8003520:	34 84 00 01 	addi r4,r4,1                                   
    _IO_Driver_address_table[index] = driver_table[index];            
 8003524:	58 46 00 00 	sw (r2+0),r6                                   
 8003528:	28 26 00 04 	lw r6,(r1+4)                                   
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 800352c:	34 63 00 18 	addi r3,r3,24                                  
    _IO_Driver_address_table[index] = driver_table[index];            
 8003530:	58 46 00 04 	sw (r2+4),r6                                   
 8003534:	28 26 00 08 	lw r6,(r1+8)                                   
 8003538:	58 46 00 08 	sw (r2+8),r6                                   
 800353c:	28 26 00 0c 	lw r6,(r1+12)                                  
 8003540:	58 46 00 0c 	sw (r2+12),r6                                  
 8003544:	28 26 00 10 	lw r6,(r1+16)                                  
 8003548:	58 46 00 10 	sw (r2+16),r6                                  
 800354c:	28 21 00 14 	lw r1,(r1+20)                                  
 8003550:	58 41 00 14 	sw (r2+20),r1                                  
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 8003554:	55 64 ff f0 	bgu r11,r4,8003514 <_IO_Manager_initialization+0x84>
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
 8003558:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800355c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003560:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003564:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003568:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800356c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003570:	37 9c 00 18 	addi sp,sp,24                                  
 8003574:	c3 a0 00 00 	ret                                            
   *  If the maximum number of driver is the same as the number in the
   *  table, then we do not have to copy the driver table.  They can't
   *  register any dynamically.                                       
   */                                                                 
  if ( number_of_drivers == drivers_in_table ) {                      
    _IO_Driver_address_table = driver_table;                          
 8003578:	78 02 08 01 	mvhi r2,0x801                                  
    _IO_Number_of_drivers = number_of_drivers;                        
 800357c:	78 01 08 01 	mvhi r1,0x801                                  
   *  If the maximum number of driver is the same as the number in the
   *  table, then we do not have to copy the driver table.  They can't
   *  register any dynamically.                                       
   */                                                                 
  if ( number_of_drivers == drivers_in_table ) {                      
    _IO_Driver_address_table = driver_table;                          
 8003580:	38 42 51 e4 	ori r2,r2,0x51e4                               
    _IO_Number_of_drivers = number_of_drivers;                        
 8003584:	38 21 51 e0 	ori r1,r1,0x51e0                               
   *  If the maximum number of driver is the same as the number in the
   *  table, then we do not have to copy the driver table.  They can't
   *  register any dynamically.                                       
   */                                                                 
  if ( number_of_drivers == drivers_in_table ) {                      
    _IO_Driver_address_table = driver_table;                          
 8003588:	58 4d 00 00 	sw (r2+0),r13                                  
    _IO_Number_of_drivers = number_of_drivers;                        
 800358c:	58 2b 00 00 	sw (r1+0),r11                                  
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
 8003590:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003594:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003598:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800359c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80035a0:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80035a4:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80035a8:	37 9c 00 18 	addi sp,sp,24                                  
 80035ac:	c3 a0 00 00 	ret                                            
                                                                      

080044f0 <_Objects_Allocate>: */ Objects_Control *_Objects_Allocate( Objects_Information *information ) {
 80044f0:	37 9c ff ec 	addi sp,sp,-20                                 
 80044f4:	5b 8b 00 14 	sw (sp+20),r11                                 
 80044f8:	5b 8c 00 10 	sw (sp+16),r12                                 
 80044fc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8004500:	5b 8e 00 08 	sw (sp+8),r14                                  
 8004504:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004508:	b8 20 58 00 	mv r11,r1                                      
   *  If the application is using the optional manager stubs and      
   *  still attempts to create the object, the information block      
   *  should be all zeroed out because it is in the BSS.  So let's    
   *  check that code for this manager is even present.               
   */                                                                 
  if ( information->size == 0 )                                       
 800450c:	28 21 00 18 	lw r1,(r1+24)                                  
    return NULL;                                                      
 8004510:	34 0c 00 00 	mvi r12,0                                      
   *  If the application is using the optional manager stubs and      
   *  still attempts to create the object, the information block      
   *  should be all zeroed out because it is in the BSS.  So let's    
   *  check that code for this manager is even present.               
   */                                                                 
  if ( information->size == 0 )                                       
 8004514:	5c 20 00 09 	bne r1,r0,8004538 <_Objects_Allocate+0x48>     <== ALWAYS TAKEN
    );                                                                
  }                                                                   
#endif                                                                
                                                                      
  return the_object;                                                  
}                                                                     
 8004518:	b9 80 08 00 	mv r1,r12                                      
 800451c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004520:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004524:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004528:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800452c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004530:	37 9c 00 14 	addi sp,sp,20                                  
 8004534:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  OK.  The manager should be initialized and configured to have objects.
   *  With any luck, it is safe to attempt to allocate an object.     
   */                                                                 
  the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
 8004538:	35 6d 00 20 	addi r13,r11,32                                
 800453c:	b9 a0 08 00 	mv r1,r13                                      
 8004540:	fb ff fc fb 	calli 800392c <_Chain_Get>                     
 8004544:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( information->auto_extend ) {                                   
 8004548:	41 61 00 12 	lbu r1,(r11+18)                                
                                                                      
  /*                                                                  
   *  OK.  The manager should be initialized and configured to have objects.
   *  With any luck, it is safe to attempt to allocate an object.     
   */                                                                 
  the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
 800454c:	b9 80 70 00 	mv r14,r12                                     
                                                                      
  if ( information->auto_extend ) {                                   
 8004550:	44 20 ff f2 	be r1,r0,8004518 <_Objects_Allocate+0x28>      
    /*                                                                
     *  If the list is empty then we are out of objects and need to   
     *  extend information base.                                      
     */                                                               
                                                                      
    if ( !the_object ) {                                              
 8004554:	45 80 00 18 	be r12,r0,80045b4 <_Objects_Allocate+0xc4>     
    }                                                                 
                                                                      
    if ( the_object ) {                                               
      uint32_t   block;                                               
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
 8004558:	2d 83 00 0a 	lhu r3,(r12+10)                                
 800455c:	2d 61 00 0a 	lhu r1,(r11+10)                                
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
 8004560:	2d 62 00 14 	lhu r2,(r11+20)                                
 8004564:	c8 61 08 00 	sub r1,r3,r1                                   
 8004568:	f8 00 37 cd 	calli 801249c <__udivsi3>                      
                                                                      
      information->inactive_per_block[ block ]--;                     
 800456c:	29 62 00 30 	lw r2,(r11+48)                                 
 8004570:	b4 21 08 00 	add r1,r1,r1                                   
 8004574:	b4 21 08 00 	add r1,r1,r1                                   
 8004578:	b4 41 08 00 	add r1,r2,r1                                   
 800457c:	28 22 00 00 	lw r2,(r1+0)                                   
      information->inactive--;                                        
 8004580:	2d 63 00 2c 	lhu r3,(r11+44)                                
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
                                                                      
      information->inactive_per_block[ block ]--;                     
 8004584:	34 42 ff ff 	addi r2,r2,-1                                  
 8004588:	58 22 00 00 	sw (r1+0),r2                                   
      information->inactive--;                                        
 800458c:	34 61 ff ff 	addi r1,r3,-1                                  
 8004590:	0d 61 00 2c 	sh (r11+44),r1                                 
    );                                                                
  }                                                                   
#endif                                                                
                                                                      
  return the_object;                                                  
}                                                                     
 8004594:	b9 80 08 00 	mv r1,r12                                      
 8004598:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800459c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80045a0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80045a4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80045a8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80045ac:	37 9c 00 14 	addi sp,sp,20                                  
 80045b0:	c3 a0 00 00 	ret                                            
     *  If the list is empty then we are out of objects and need to   
     *  extend information base.                                      
     */                                                               
                                                                      
    if ( !the_object ) {                                              
      _Objects_Extend_information( information );                     
 80045b4:	b9 60 08 00 	mv r1,r11                                      
 80045b8:	f8 00 00 06 	calli 80045d0 <_Objects_Extend_information>    
      the_object =  (Objects_Control *) _Chain_Get( &information->Inactive );
 80045bc:	b9 a0 08 00 	mv r1,r13                                      
 80045c0:	fb ff fc db 	calli 800392c <_Chain_Get>                     
 80045c4:	b8 20 60 00 	mv r12,r1                                      
    }                                                                 
                                                                      
    if ( the_object ) {                                               
 80045c8:	44 2e ff d4 	be r1,r14,8004518 <_Objects_Allocate+0x28>     
 80045cc:	e3 ff ff e3 	bi 8004558 <_Objects_Allocate+0x68>            
                                                                      

080045d0 <_Objects_Extend_information>: */ void _Objects_Extend_information( Objects_Information *information ) {
 80045d0:	37 9c ff c8 	addi sp,sp,-56                                 
 80045d4:	5b 8b 00 2c 	sw (sp+44),r11                                 
 80045d8:	5b 8c 00 28 	sw (sp+40),r12                                 
 80045dc:	5b 8d 00 24 	sw (sp+36),r13                                 
 80045e0:	5b 8e 00 20 	sw (sp+32),r14                                 
 80045e4:	5b 8f 00 1c 	sw (sp+28),r15                                 
 80045e8:	5b 90 00 18 	sw (sp+24),r16                                 
 80045ec:	5b 91 00 14 	sw (sp+20),r17                                 
 80045f0:	5b 92 00 10 	sw (sp+16),r18                                 
 80045f4:	5b 93 00 0c 	sw (sp+12),r19                                 
 80045f8:	5b 94 00 08 	sw (sp+8),r20                                  
 80045fc:	5b 9d 00 04 	sw (sp+4),ra                                   
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 8004600:	28 2c 00 34 	lw r12,(r1+52)                                 
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
 8004604:	b8 20 58 00 	mv r11,r1                                      
  /*                                                                  
   *  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 );      
 8004608:	2c 30 00 0a 	lhu r16,(r1+10)                                
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 800460c:	45 80 00 a9 	be r12,r0,80048b0 <_Objects_Extend_information+0x2e0>
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
 8004610:	2c 2f 00 14 	lhu r15,(r1+20)                                
 8004614:	2c 31 00 10 	lhu r17,(r1+16)                                
 8004618:	b9 e0 10 00 	mv r2,r15                                      
 800461c:	ba 20 08 00 	mv r1,r17                                      
 8004620:	f8 00 37 9f 	calli 801249c <__udivsi3>                      
 8004624:	20 2e ff ff 	andi r14,r1,0xffff                             
                                                                      
    for ( ; block < block_count; block++ ) {                          
 8004628:	45 c0 00 a8 	be r14,r0,80048c8 <_Objects_Extend_information+0x2f8><== NEVER TAKEN
      if ( information->object_blocks[ block ] == NULL ) {            
 800462c:	29 81 00 00 	lw r1,(r12+0)                                  
 8004630:	44 20 00 ab 	be r1,r0,80048dc <_Objects_Extend_information+0x30c><== NEVER TAKEN
 8004634:	b9 80 18 00 	mv r3,r12                                      
 8004638:	b9 e0 08 00 	mv r1,r15                                      
  /*                                                                  
   *  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 );      
 800463c:	ba 00 68 00 	mv r13,r16                                     
  index_base    = minimum_index;                                      
  block         = 0;                                                  
 8004640:	34 0c 00 00 	mvi r12,0                                      
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
 8004644:	35 8c 00 01 	addi r12,r12,1                                 
      if ( information->object_blocks[ block ] == NULL ) {            
        do_extend = false;                                            
        break;                                                        
      } else                                                          
        index_base += information->allocation_size;                   
 8004648:	b5 af 68 00 	add r13,r13,r15                                
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
 800464c:	55 cc 00 80 	bgu r14,r12,800484c <_Objects_Extend_information+0x27c>
                                                                      
  /*                                                                  
   *  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;                                               
 8004650:	34 12 00 01 	mvi r18,1                                      
      } else                                                          
        index_base += information->allocation_size;                   
    }                                                                 
  }                                                                   
                                                                      
  maximum = (uint32_t) information->maximum + information->allocation_size;
 8004654:	b6 21 88 00 	add r17,r17,r1                                 
  /*                                                                  
   *  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 ) {                           
 8004658:	38 02 ff ff 	mvu r2,0xffff                                  
 800465c:	56 22 00 6f 	bgu r17,r2,8004818 <_Objects_Extend_information+0x248>
                                                                      
  /*                                                                  
   * 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;      
 8004660:	29 62 00 18 	lw r2,(r11+24)                                 
 8004664:	f8 00 37 29 	calli 8012308 <__mulsi3>                       
  if ( information->auto_extend ) {                                   
 8004668:	41 62 00 12 	lbu r2,(r11+18)                                
 800466c:	44 40 00 7d 	be r2,r0,8004860 <_Objects_Extend_information+0x290>
    new_object_block = _Workspace_Allocate( block_size );             
 8004670:	f8 00 0a 87 	calli 800708c <_Workspace_Allocate>            
 8004674:	b8 20 78 00 	mv r15,r1                                      
    if ( !new_object_block )                                          
 8004678:	44 20 00 68 	be r1,r0,8004818 <_Objects_Extend_information+0x248>
  }                                                                   
                                                                      
  /*                                                                  
   *  Do we need to grow the tables?                                  
   */                                                                 
  if ( do_extend ) {                                                  
 800467c:	46 40 00 40 	be r18,r0,800477c <_Objects_Extend_information+0x1ac>
     */                                                               
                                                                      
    /*                                                                
     *  Up the block count and maximum                                
     */                                                               
    block_count++;                                                    
 8004680:	35 c1 00 01 	addi r1,r14,1                                  
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
 8004684:	b4 21 98 00 	add r19,r1,r1                                  
 8004688:	b6 61 08 00 	add r1,r19,r1                                  
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
 800468c:	b6 21 08 00 	add r1,r17,r1                                  
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
 8004690:	b4 30 08 00 	add r1,r1,r16                                  
    block_count++;                                                    
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
 8004694:	b4 21 08 00 	add r1,r1,r1                                   
 8004698:	b4 21 08 00 	add r1,r1,r1                                   
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    object_blocks = (void**) _Workspace_Allocate( block_size );       
 800469c:	f8 00 0a 7c 	calli 800708c <_Workspace_Allocate>            
 80046a0:	b8 20 90 00 	mv r18,r1                                      
                                                                      
    if ( !object_blocks ) {                                           
 80046a4:	44 20 00 93 	be r1,r0,80048f0 <_Objects_Extend_information+0x320>
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
 80046a8:	2d 62 00 10 	lhu r2,(r11+16)                                
    }                                                                 
                                                                      
    /*                                                                
     *  Break the block into the various sections.                    
     */                                                               
    inactive_per_block = (uint32_t *) _Addresses_Add_offset(          
 80046ac:	b6 73 a0 00 	add r20,r19,r19                                
 80046b0:	b4 34 98 00 	add r19,r1,r20                                 
 80046b4:	b6 74 a0 00 	add r20,r19,r20                                
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
 80046b8:	54 50 00 6d 	bgu r2,r16,800486c <_Objects_Extend_information+0x29c>
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
 80046bc:	ba 80 20 00 	mv r4,r20                                      
 80046c0:	34 03 00 00 	mvi r3,0                                       
 80046c4:	46 00 00 05 	be r16,r0,80046d8 <_Objects_Extend_information+0x108><== NEVER TAKEN
        local_table[ index ] = NULL;                                  
 80046c8:	58 80 00 00 	sw (r4+0),r0                                   
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
 80046cc:	34 63 00 01 	addi r3,r3,1                                   
 80046d0:	34 84 00 04 	addi r4,r4,4                                   
 80046d4:	56 03 ff fd 	bgu r16,r3,80046c8 <_Objects_Extend_information+0xf8><== NEVER TAKEN
 80046d8:	b5 ce 70 00 	add r14,r14,r14                                
 80046dc:	b5 ce 70 00 	add r14,r14,r14                                
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
 80046e0:	2d 65 00 14 	lhu r5,(r11+20)                                
    }                                                                 
                                                                      
    /*                                                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
 80046e4:	b6 4e 08 00 	add r1,r18,r14                                 
 80046e8:	58 20 00 00 	sw (r1+0),r0                                   
    inactive_per_block[block_count] = 0;                              
 80046ec:	b6 6e 70 00 	add r14,r19,r14                                
 80046f0:	59 c0 00 00 	sw (r14+0),r0                                  
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
 80046f4:	b5 a5 28 00 	add r5,r13,r5                                  
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
 80046f8:	51 a5 00 09 	bgeu r13,r5,800471c <_Objects_Extend_information+0x14c><== NEVER TAKEN
 *    information     - object information table                      
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
 80046fc:	b5 ad 20 00 	add r4,r13,r13                                 
 8004700:	b4 84 20 00 	add r4,r4,r4                                   
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
 8004704:	b6 84 20 00 	add r4,r20,r4                                  
 *    information     - object information table                      
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
 8004708:	b9 a0 18 00 	mv r3,r13                                      
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
 800470c:	58 80 00 00 	sw (r4+0),r0                                   
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
 8004710:	34 63 00 01 	addi r3,r3,1                                   
 8004714:	34 84 00 04 	addi r4,r4,4                                   
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
 8004718:	54 a3 ff fd 	bgu r5,r3,800470c <_Objects_Extend_information+0x13c>
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
    }                                                                 
                                                                      
    _ISR_Disable( level );                                            
 800471c:	90 00 70 00 	rcsr r14,IE                                    
 8004720:	34 01 ff fe 	mvi r1,-2                                      
 8004724:	a1 c1 08 00 	and r1,r14,r1                                  
 8004728:	d0 01 00 00 	wcsr IE,r1                                     
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 800472c:	29 61 00 00 	lw r1,(r11+0)                                  
    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;                 
 8004730:	22 31 ff ff 	andi r17,r17,0xffff                            
 8004734:	0d 71 00 10 	sh (r11+16),r17                                
      local_table[ index ] = NULL;                                    
    }                                                                 
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
 8004738:	29 70 00 34 	lw r16,(r11+52)                                
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
 800473c:	59 73 00 30 	sw (r11+48),r19                                
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
 8004740:	59 72 00 34 	sw (r11+52),r18                                
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
 8004744:	59 74 00 1c 	sw (r11+28),r20                                
 8004748:	34 02 00 18 	mvi r2,24                                      
 800474c:	f8 00 36 7a 	calli 8012134 <__ashlsi3>                      
 8004750:	78 12 00 01 	mvhi r18,0x1                                   
 8004754:	b8 32 90 00 	or r18,r1,r18                                  
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
 8004758:	2d 61 00 04 	lhu r1,(r11+4)                                 
 800475c:	34 02 00 1b 	mvi r2,27                                      
 8004760:	f8 00 36 75 	calli 8012134 <__ashlsi3>                      
 8004764:	ba 41 10 00 	or r2,r18,r1                                   
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 8004768:	b8 51 88 00 	or r17,r2,r17                                  
    information->maximum = (Objects_Maximum) maximum;                 
    information->maximum_id = _Objects_Build_id(                      
 800476c:	59 71 00 0c 	sw (r11+12),r17                                
        information->the_class,                                       
        _Objects_Local_node,                                          
        information->maximum                                          
      );                                                              
                                                                      
    _ISR_Enable( level );                                             
 8004770:	d0 0e 00 00 	wcsr IE,r14                                    
                                                                      
    _Workspace_Free( old_tables );                                    
 8004774:	ba 00 08 00 	mv r1,r16                                      
 8004778:	f8 00 0a 50 	calli 80070b8 <_Workspace_Free>                
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
 800477c:	29 61 00 34 	lw r1,(r11+52)                                 
 8004780:	b5 8c 60 00 	add r12,r12,r12                                
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
 8004784:	2d 63 00 14 	lhu r3,(r11+20)                                
 8004788:	29 64 00 18 	lw r4,(r11+24)                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
 800478c:	b5 8c 60 00 	add r12,r12,r12                                
 8004790:	b4 2c 08 00 	add r1,r1,r12                                  
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
 8004794:	37 90 00 30 	addi r16,sp,48                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
 8004798:	58 2f 00 00 	sw (r1+0),r15                                  
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
 800479c:	b9 e0 10 00 	mv r2,r15                                      
 80047a0:	ba 00 08 00 	mv r1,r16                                      
 80047a4:	f8 00 15 e0 	calli 8009f24 <_Chain_Initialize>              
 80047a8:	78 12 00 01 	mvhi r18,0x1                                   
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
 80047ac:	35 71 00 20 	addi r17,r11,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 ) {
 80047b0:	e0 00 00 0e 	bi 80047e8 <_Objects_Extend_information+0x218> 
 80047b4:	29 61 00 00 	lw r1,(r11+0)                                  
 80047b8:	f8 00 36 5f 	calli 8012134 <__ashlsi3>                      
 80047bc:	b8 32 78 00 	or r15,r1,r18                                  
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
 80047c0:	2d 61 00 04 	lhu r1,(r11+4)                                 
 80047c4:	34 02 00 1b 	mvi r2,27                                      
 80047c8:	f8 00 36 5b 	calli 8012134 <__ashlsi3>                      
 80047cc:	b9 e1 10 00 	or r2,r15,r1                                   
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 80047d0:	b8 4d 10 00 	or r2,r2,r13                                   
                                                                      
    the_object->id = _Objects_Build_id(                               
 80047d4:	59 c2 00 08 	sw (r14+8),r2                                  
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
 80047d8:	ba 20 08 00 	mv r1,r17                                      
 80047dc:	b9 c0 10 00 	mv r2,r14                                      
 80047e0:	fb ff fc 3d 	calli 80038d4 <_Chain_Append>                  
                                                                      
    index++;                                                          
 80047e4:	35 ad 00 01 	addi r13,r13,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 ) {
 80047e8:	ba 00 08 00 	mv r1,r16                                      
 80047ec:	fb ff fc 50 	calli 800392c <_Chain_Get>                     
 80047f0:	b8 20 70 00 	mv r14,r1                                      
 80047f4:	34 02 00 18 	mvi r2,24                                      
 80047f8:	5c 20 ff ef 	bne r1,r0,80047b4 <_Objects_Extend_information+0x1e4>
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
 80047fc:	29 63 00 30 	lw r3,(r11+48)                                 
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
 8004800:	2d 62 00 2c 	lhu r2,(r11+44)                                
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
 8004804:	2d 61 00 14 	lhu r1,(r11+20)                                
 8004808:	b4 6c 60 00 	add r12,r3,r12                                 
 800480c:	59 81 00 00 	sw (r12+0),r1                                  
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
 8004810:	b4 22 08 00 	add r1,r1,r2                                   
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
  information->inactive =                                             
 8004814:	0d 61 00 2c 	sh (r11+44),r1                                 
    (Objects_Maximum)(information->inactive + information->allocation_size);
}                                                                     
 8004818:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800481c:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 8004820:	2b 8c 00 28 	lw r12,(sp+40)                                 
 8004824:	2b 8d 00 24 	lw r13,(sp+36)                                 
 8004828:	2b 8e 00 20 	lw r14,(sp+32)                                 
 800482c:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 8004830:	2b 90 00 18 	lw r16,(sp+24)                                 
 8004834:	2b 91 00 14 	lw r17,(sp+20)                                 
 8004838:	2b 92 00 10 	lw r18,(sp+16)                                 
 800483c:	2b 93 00 0c 	lw r19,(sp+12)                                 
 8004840:	2b 94 00 08 	lw r20,(sp+8)                                  
 8004844:	37 9c 00 38 	addi sp,sp,56                                  
 8004848:	c3 a0 00 00 	ret                                            
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
 800484c:	28 62 00 04 	lw r2,(r3+4)                                   
 8004850:	34 63 00 04 	addi r3,r3,4                                   
 8004854:	5c 40 ff 7c 	bne r2,r0,8004644 <_Objects_Extend_information+0x74>
        do_extend = false;                                            
 8004858:	34 12 00 00 	mvi r18,0                                      
 800485c:	e3 ff ff 7e 	bi 8004654 <_Objects_Extend_information+0x84>  
  if ( information->auto_extend ) {                                   
    new_object_block = _Workspace_Allocate( block_size );             
    if ( !new_object_block )                                          
      return;                                                         
  } else {                                                            
    new_object_block = _Workspace_Allocate_or_fatal_error( block_size );
 8004860:	f8 00 0a 1f 	calli 80070dc <_Workspace_Allocate_or_fatal_error>
 8004864:	b8 20 78 00 	mv r15,r1                                      
 8004868:	e3 ff ff 85 	bi 800467c <_Objects_Extend_information+0xac>  
      /*                                                              
       *  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,                                          
 800486c:	29 62 00 34 	lw r2,(r11+52)                                 
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
 8004870:	b5 ce 70 00 	add r14,r14,r14                                
 8004874:	b5 ce 70 00 	add r14,r14,r14                                
      /*                                                              
       *  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,                                          
 8004878:	b9 c0 18 00 	mv r3,r14                                      
 800487c:	f8 00 23 f6 	calli 800d854 <memcpy>                         
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
 8004880:	29 62 00 30 	lw r2,(r11+48)                                 
 8004884:	b9 c0 18 00 	mv r3,r14                                      
 8004888:	ba 60 08 00 	mv r1,r19                                      
 800488c:	f8 00 23 f2 	calli 800d854 <memcpy>                         
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
              information->local_table,                               
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );
 8004890:	2d 63 00 10 	lhu r3,(r11+16)                                
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
 8004894:	29 62 00 1c 	lw r2,(r11+28)                                 
 8004898:	ba 80 08 00 	mv r1,r20                                      
              information->local_table,                               
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );
 800489c:	b6 03 18 00 	add r3,r16,r3                                  
 80048a0:	b4 63 18 00 	add r3,r3,r3                                   
 80048a4:	b4 63 18 00 	add r3,r3,r3                                   
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
 80048a8:	f8 00 23 eb 	calli 800d854 <memcpy>                         
 80048ac:	e3 ff ff 8d 	bi 80046e0 <_Objects_Extend_information+0x110> 
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 80048b0:	2c 31 00 10 	lhu r17,(r1+16)                                
  /*                                                                  
   *  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 );      
 80048b4:	ba 00 68 00 	mv r13,r16                                     
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 80048b8:	2c 21 00 14 	lhu r1,(r1+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;                                               
 80048bc:	34 12 00 01 	mvi r18,1                                      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
 80048c0:	34 0e 00 00 	mvi r14,0                                      
 80048c4:	e3 ff ff 64 	bi 8004654 <_Objects_Extend_information+0x84>  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
 80048c8:	b9 e0 08 00 	mv r1,r15                                      <== 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 );      
 80048cc:	ba 00 68 00 	mv r13,r16                                     <== 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;                                               
 80048d0:	34 12 00 01 	mvi r18,1                                      <== NOT EXECUTED
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
 80048d4:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 80048d8:	e3 ff ff 5f 	bi 8004654 <_Objects_Extend_information+0x84>  <== NOT EXECUTED
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
 80048dc:	b9 e0 08 00 	mv r1,r15                                      <== 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 );      
 80048e0:	ba 00 68 00 	mv r13,r16                                     <== NOT EXECUTED
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
        do_extend = false;                                            
 80048e4:	34 12 00 00 	mvi r18,0                                      <== NOT EXECUTED
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
 80048e8:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 80048ec:	e3 ff ff 5a 	bi 8004654 <_Objects_Extend_information+0x84>  <== NOT EXECUTED
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    object_blocks = (void**) _Workspace_Allocate( block_size );       
                                                                      
    if ( !object_blocks ) {                                           
      _Workspace_Free( new_object_block );                            
 80048f0:	b9 e0 08 00 	mv r1,r15                                      
 80048f4:	f8 00 09 f1 	calli 80070b8 <_Workspace_Free>                
      return;                                                         
 80048f8:	e3 ff ff c8 	bi 8004818 <_Objects_Extend_information+0x248> 
                                                                      

080049e4 <_Objects_Get_information>: Objects_Information *_Objects_Get_information( Objects_APIs the_api, uint16_t the_class ) {
 80049e4:	37 9c ff f0 	addi sp,sp,-16                                 
 80049e8:	5b 8b 00 10 	sw (sp+16),r11                                 
 80049ec:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80049f0:	5b 8d 00 08 	sw (sp+8),r13                                  
 80049f4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80049f8:	20 4c ff ff 	andi r12,r2,0xffff                             
 80049fc:	b8 20 68 00 	mv r13,r1                                      
  Objects_Information *info;                                          
  int the_class_api_maximum;                                          
                                                                      
  if ( !the_class )                                                   
    return NULL;                                                      
 8004a00:	34 0b 00 00 	mvi r11,0                                      
)                                                                     
{                                                                     
  Objects_Information *info;                                          
  int the_class_api_maximum;                                          
                                                                      
  if ( !the_class )                                                   
 8004a04:	5d 80 00 08 	bne r12,r0,8004a24 <_Objects_Get_information+0x40>
    if ( info->maximum == 0 )                                         
      return NULL;                                                    
  #endif                                                              
                                                                      
  return info;                                                        
}                                                                     
 8004a08:	b9 60 08 00 	mv r1,r11                                      
 8004a0c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004a10:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004a14:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004a18:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004a1c:	37 9c 00 10 	addi sp,sp,16                                  
 8004a20:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  This call implicitly validates the_api so we do not call        
   *  _Objects_Is_api_valid above here.                               
   */                                                                 
  the_class_api_maximum = _Objects_API_maximum_class( the_api );      
 8004a24:	f8 00 16 e5 	calli 800a5b8 <_Objects_API_maximum_class>     
  if ( the_class_api_maximum == 0 )                                   
 8004a28:	44 20 ff f8 	be r1,r0,8004a08 <_Objects_Get_information+0x24>
    return NULL;                                                      
                                                                      
  if ( the_class > (uint32_t) the_class_api_maximum )                 
 8004a2c:	55 81 ff f7 	bgu r12,r1,8004a08 <_Objects_Get_information+0x24>
    return NULL;                                                      
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
 8004a30:	78 01 08 01 	mvhi r1,0x801                                  
 8004a34:	b5 ad 68 00 	add r13,r13,r13                                
 8004a38:	38 21 48 a4 	ori r1,r1,0x48a4                               
 8004a3c:	b5 ad 68 00 	add r13,r13,r13                                
 8004a40:	b4 2d 08 00 	add r1,r1,r13                                  
 8004a44:	28 21 00 00 	lw r1,(r1+0)                                   
 8004a48:	44 20 ff f0 	be r1,r0,8004a08 <_Objects_Get_information+0x24><== NEVER TAKEN
    return NULL;                                                      
                                                                      
  info = _Objects_Information_table[ the_api ][ the_class ];          
 8004a4c:	b5 8c 60 00 	add r12,r12,r12                                
 8004a50:	b5 8c 60 00 	add r12,r12,r12                                
 8004a54:	b4 2c 08 00 	add r1,r1,r12                                  
 8004a58:	28 2b 00 00 	lw r11,(r1+0)                                  
  if ( !info )                                                        
 8004a5c:	45 60 ff eb 	be r11,r0,8004a08 <_Objects_Get_information+0x24><== NEVER TAKEN
   *  In a multprocessing configuration, we may access remote objects.
   *  Thus we may have 0 local instances and still have a valid object
   *  pointer.                                                        
   */                                                                 
  #if !defined(RTEMS_MULTIPROCESSING)                                 
    if ( info->maximum == 0 )                                         
 8004a60:	2d 61 00 10 	lhu r1,(r11+16)                                
      return NULL;                                                    
 8004a64:	7c 21 00 00 	cmpnei r1,r1,0                                 
 8004a68:	c8 01 08 00 	sub r1,r0,r1                                   
 8004a6c:	a1 61 58 00 	and r11,r11,r1                                 
 8004a70:	e3 ff ff e6 	bi 8004a08 <_Objects_Get_information+0x24>     
                                                                      

08006a58 <_Objects_Get_name_as_string>: char *_Objects_Get_name_as_string( Objects_Id id, size_t length, char *name ) {
 8006a58:	37 9c ff e0 	addi sp,sp,-32                                 
 8006a5c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006a60:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006a64:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006a68:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006a6c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006a70:	b8 40 60 00 	mv r12,r2                                      
 8006a74:	b8 60 58 00 	mv r11,r3                                      
  char                   lname[5];                                    
  Objects_Control       *the_object;                                  
  Objects_Locations      location;                                    
  Objects_Id             tmpId;                                       
                                                                      
  if ( length == 0 )                                                  
 8006a78:	5c 40 00 0a 	bne r2,r0,8006aa0 <_Objects_Get_name_as_string+0x48>
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:                                              
      /* not supported */                                             
#endif                                                                
    case OBJECTS_ERROR:                                               
      return NULL;                                                    
 8006a7c:	34 0b 00 00 	mvi r11,0                                      
                                                                      
      _Thread_Enable_dispatch();                                      
      return name;                                                    
  }                                                                   
  return NULL;                  /* unreachable path */                
}                                                                     
 8006a80:	b9 60 08 00 	mv r1,r11                                      
 8006a84:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006a88:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006a8c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006a90:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006a94:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006a98:	37 9c 00 20 	addi sp,sp,32                                  
 8006a9c:	c3 a0 00 00 	ret                                            
  Objects_Id             tmpId;                                       
                                                                      
  if ( length == 0 )                                                  
    return NULL;                                                      
                                                                      
  if ( name == NULL )                                                 
 8006aa0:	44 60 ff f8 	be r3,r0,8006a80 <_Objects_Get_name_as_string+0x28>
    return NULL;                                                      
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
 8006aa4:	b8 20 68 00 	mv r13,r1                                      
 8006aa8:	5c 20 00 05 	bne r1,r0,8006abc <_Objects_Get_name_as_string+0x64>
 8006aac:	78 01 08 02 	mvhi r1,0x802                                  
 8006ab0:	38 21 32 14 	ori r1,r1,0x3214                               
 8006ab4:	28 21 00 0c 	lw r1,(r1+12)                                  
 8006ab8:	28 2d 00 08 	lw r13,(r1+8)                                  
                                                                      
  information = _Objects_Get_information_id( tmpId );                 
 8006abc:	b9 a0 08 00 	mv r1,r13                                      
 8006ac0:	fb ff ff 94 	calli 8006910 <_Objects_Get_information_id>    
 8006ac4:	b8 20 70 00 	mv r14,r1                                      
  if ( !information )                                                 
 8006ac8:	44 20 ff ed 	be r1,r0,8006a7c <_Objects_Get_name_as_string+0x24>
    return NULL;                                                      
                                                                      
  the_object = _Objects_Get( information, tmpId, &location );         
 8006acc:	b9 a0 10 00 	mv r2,r13                                      
 8006ad0:	37 83 00 20 	addi r3,sp,32                                  
 8006ad4:	f8 00 00 36 	calli 8006bac <_Objects_Get>                   
  switch ( location ) {                                               
 8006ad8:	2b 82 00 20 	lw r2,(sp+32)                                  
 8006adc:	5c 40 ff e8 	bne r2,r0,8006a7c <_Objects_Get_name_as_string+0x24>
      return NULL;                                                    
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)             
        if ( information->is_string ) {                               
 8006ae0:	41 c3 00 38 	lbu r3,(r14+56)                                
 8006ae4:	44 62 00 1c 	be r3,r2,8006b54 <_Objects_Get_name_as_string+0xfc>
          s = the_object->name.name_p;                                
 8006ae8:	28 27 00 0c 	lw r7,(r1+12)                                  
        lname[ 4 ] = '\0';                                            
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
 8006aec:	b9 60 08 00 	mv r1,r11                                      
 8006af0:	44 e0 00 16 	be r7,r0,8006b48 <_Objects_Get_name_as_string+0xf0>
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
 8006af4:	35 8c ff ff 	addi r12,r12,-1                                
 8006af8:	b9 60 08 00 	mv r1,r11                                      
 8006afc:	45 80 00 13 	be r12,r0,8006b48 <_Objects_Get_name_as_string+0xf0><== NEVER TAKEN
 8006b00:	40 e3 00 00 	lbu r3,(r7+0)                                  
 8006b04:	44 60 00 11 	be r3,r0,8006b48 <_Objects_Get_name_as_string+0xf0><== NEVER TAKEN
 8006b08:	78 04 08 02 	mvhi r4,0x802                                  
 8006b0c:	34 02 00 00 	mvi r2,0                                       
 8006b10:	38 84 22 30 	ori r4,r4,0x2230                               
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
 8006b14:	28 85 00 00 	lw r5,(r4+0)                                   
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
 8006b18:	34 42 00 01 	addi r2,r2,1                                   
 *  This method objects the name of an object and returns its name    
 *  in the form of a C string.  It attempts to be careful about       
 *  overflowing the user's string and about returning unprintable characters.
 */                                                                   
                                                                      
char *_Objects_Get_name_as_string(                                    
 8006b1c:	b4 e2 30 00 	add r6,r7,r2                                   
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
 8006b20:	b4 a3 28 00 	add r5,r5,r3                                   
 8006b24:	40 a5 00 01 	lbu r5,(r5+1)                                  
 8006b28:	20 a5 00 97 	andi r5,r5,0x97                                
 8006b2c:	5c a0 00 02 	bne r5,r0,8006b34 <_Objects_Get_name_as_string+0xdc>
 8006b30:	34 03 00 2a 	mvi r3,42                                      
 8006b34:	30 23 00 00 	sb (r1+0),r3                                   
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
 8006b38:	34 21 00 01 	addi r1,r1,1                                   
 8006b3c:	50 4c 00 03 	bgeu r2,r12,8006b48 <_Objects_Get_name_as_string+0xf0>
 8006b40:	40 c3 00 00 	lbu r3,(r6+0)                                  
 8006b44:	5c 60 ff f4 	bne r3,r0,8006b14 <_Objects_Get_name_as_string+0xbc>
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
        }                                                             
      }                                                               
      *d = '\0';                                                      
 8006b48:	30 20 00 00 	sb (r1+0),r0                                   
                                                                      
      _Thread_Enable_dispatch();                                      
 8006b4c:	f8 00 03 c3 	calli 8007a58 <_Thread_Enable_dispatch>        
      return name;                                                    
 8006b50:	e3 ff ff cc 	bi 8006a80 <_Objects_Get_name_as_string+0x28>  
        if ( information->is_string ) {                               
          s = the_object->name.name_p;                                
        } else                                                        
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
 8006b54:	28 2d 00 0c 	lw r13,(r1+12)                                 
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
 8006b58:	34 02 00 18 	mvi r2,24                                      
 8006b5c:	b9 a0 08 00 	mv r1,r13                                      
 8006b60:	fb ff e9 93 	calli 80011ac <__lshrsi3>                      
 8006b64:	33 81 00 18 	sb (sp+24),r1                                  
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
 8006b68:	34 02 00 10 	mvi r2,16                                      
 8006b6c:	b9 a0 08 00 	mv r1,r13                                      
 8006b70:	fb ff e9 8f 	calli 80011ac <__lshrsi3>                      
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8006b74:	01 a2 00 01 	srui r2,r13,1                                  
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
 8006b78:	33 81 00 19 	sb (sp+25),r1                                  
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8006b7c:	00 42 00 01 	srui r2,r2,1                                   
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
 8006b80:	33 8d 00 1b 	sb (sp+27),r13                                 
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8006b84:	00 42 00 01 	srui r2,r2,1                                   
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
        lname[ 4 ] = '\0';                                            
 8006b88:	33 80 00 1c 	sb (sp+28),r0                                  
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8006b8c:	00 42 00 01 	srui r2,r2,1                                   
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
        lname[ 4 ] = '\0';                                            
        s = lname;                                                    
 8006b90:	37 87 00 18 	addi r7,sp,24                                  
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8006b94:	00 42 00 01 	srui r2,r2,1                                   
 8006b98:	00 42 00 01 	srui r2,r2,1                                   
 8006b9c:	00 42 00 01 	srui r2,r2,1                                   
 8006ba0:	00 42 00 01 	srui r2,r2,1                                   
 8006ba4:	33 82 00 1a 	sb (sp+26),r2                                  
 8006ba8:	e3 ff ff d3 	bi 8006af4 <_Objects_Get_name_as_string+0x9c>  
                                                                      

080176f0 <_Objects_Get_no_protection>: /* * You can't just extract the index portion or you can get tricked * by a value between 1 and maximum. */ index = id - information->minimum_id + 1;
 80176f0:	28 25 00 08 	lw r5,(r1+8)                                   
                                                                      
  if ( information->maximum >= index ) {                              
 80176f4:	2c 24 00 10 	lhu r4,(r1+16)                                 
                                                                      
  /*                                                                  
   * You can't just extract the index portion or you can get tricked  
   * by a value between 1 and maximum.                                
   */                                                                 
  index = id - information->minimum_id + 1;                           
 80176f8:	c8 45 10 00 	sub r2,r2,r5                                   
 80176fc:	34 42 00 01 	addi r2,r2,1                                   
                                                                      
  if ( information->maximum >= index ) {                              
 8017700:	54 44 00 09 	bgu r2,r4,8017724 <_Objects_Get_no_protection+0x34>
    if ( (the_object = information->local_table[ index ]) != NULL ) { 
 8017704:	28 24 00 1c 	lw r4,(r1+28)                                  
 8017708:	b4 42 08 00 	add r1,r2,r2                                   
 801770c:	b4 21 08 00 	add r1,r1,r1                                   
 8017710:	b4 81 08 00 	add r1,r4,r1                                   
 8017714:	28 21 00 00 	lw r1,(r1+0)                                   
 8017718:	44 20 00 03 	be r1,r0,8017724 <_Objects_Get_no_protection+0x34><== NEVER TAKEN
      *location = OBJECTS_LOCAL;                                      
 801771c:	58 60 00 00 	sw (r3+0),r0                                   
      return the_object;                                              
 8017720:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  This isn't supported or required yet for Global objects so      
   *  if it isn't local, we don't find it.                            
   */                                                                 
  *location = OBJECTS_ERROR;                                          
 8017724:	34 01 00 01 	mvi r1,1                                       
 8017728:	58 61 00 00 	sw (r3+0),r1                                   
  return NULL;                                                        
 801772c:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8017730:	c3 a0 00 00 	ret                                            
                                                                      

0800657c <_Objects_Id_to_name>: */ Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( Objects_Id id, Objects_Name *name ) {
 800657c:	37 9c ff e8 	addi sp,sp,-24                                 
 8006580:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006584:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006588:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800658c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006590:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Caller is trusted for name != NULL.                             
   */                                                                 
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
 8006594:	b8 20 58 00 	mv r11,r1                                      
 */                                                                   
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (                
  Objects_Id      id,                                                 
  Objects_Name   *name                                                
)                                                                     
{                                                                     
 8006598:	b8 40 70 00 	mv r14,r2                                      
                                                                      
  /*                                                                  
   *  Caller is trusted for name != NULL.                             
   */                                                                 
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
 800659c:	5c 20 00 05 	bne r1,r0,80065b0 <_Objects_Id_to_name+0x34>   
 80065a0:	78 01 08 02 	mvhi r1,0x802                                  
 80065a4:	38 21 1e 0c 	ori r1,r1,0x1e0c                               
 80065a8:	28 21 00 0c 	lw r1,(r1+12)                                  
 80065ac:	28 2b 00 08 	lw r11,(r1+8)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(                   
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
 80065b0:	b9 60 08 00 	mv r1,r11                                      
 80065b4:	34 02 00 18 	mvi r2,24                                      
 80065b8:	f8 00 59 57 	calli 801cb14 <__lshrsi3>                      
 80065bc:	20 23 00 07 	andi r3,r1,0x7                                 
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(                      
  uint32_t   the_api                                                  
)                                                                     
{                                                                     
  if ( !the_api || the_api > OBJECTS_APIS_LAST )                      
 80065c0:	34 64 ff ff 	addi r4,r3,-1                                  
 80065c4:	34 01 00 02 	mvi r1,2                                       
                                                                      
  the_api = _Objects_Get_API( tmpId );                                
  if ( !_Objects_Is_api_valid( the_api ) )                            
    return OBJECTS_INVALID_ID;                                        
 80065c8:	34 0c 00 03 	mvi r12,3                                      
 80065cc:	54 81 00 12 	bgu r4,r1,8006614 <_Objects_Id_to_name+0x98>   
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
 80065d0:	78 04 08 02 	mvhi r4,0x802                                  
 80065d4:	b4 63 18 00 	add r3,r3,r3                                   
 80065d8:	38 84 18 fc 	ori r4,r4,0x18fc                               
 80065dc:	b4 63 18 00 	add r3,r3,r3                                   
 80065e0:	b4 83 18 00 	add r3,r4,r3                                   
 80065e4:	28 6d 00 00 	lw r13,(r3+0)                                  
 80065e8:	45 a0 00 0b 	be r13,r0,8006614 <_Objects_Id_to_name+0x98>   
 */                                                                   
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(                     
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (uint32_t)                                                   
 80065ec:	b9 60 08 00 	mv r1,r11                                      
 80065f0:	34 02 00 1b 	mvi r2,27                                      
 80065f4:	f8 00 59 48 	calli 801cb14 <__lshrsi3>                      
    return OBJECTS_INVALID_ID;                                        
                                                                      
  the_class = _Objects_Get_class( tmpId );                            
                                                                      
  information = _Objects_Information_table[ the_api ][ the_class ];   
 80065f8:	b4 21 18 00 	add r3,r1,r1                                   
 80065fc:	b4 63 18 00 	add r3,r3,r3                                   
 8006600:	b5 a3 18 00 	add r3,r13,r3                                  
 8006604:	28 63 00 00 	lw r3,(r3+0)                                   
  if ( !information )                                                 
 8006608:	44 60 00 03 	be r3,r0,8006614 <_Objects_Id_to_name+0x98>    <== NEVER TAKEN
    return OBJECTS_INVALID_ID;                                        
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    if ( information->is_string )                                     
 800660c:	40 6d 00 38 	lbu r13,(r3+56)                                
 8006610:	45 a0 00 09 	be r13,r0,8006634 <_Objects_Id_to_name+0xb8>   <== ALWAYS TAKEN
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
  _Thread_Enable_dispatch();                                          
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
}                                                                     
 8006614:	b9 80 08 00 	mv r1,r12                                      
 8006618:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800661c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006620:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006624:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006628:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800662c:	37 9c 00 18 	addi sp,sp,24                                  
 8006630:	c3 a0 00 00 	ret                                            
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    if ( information->is_string )                                     
      return OBJECTS_INVALID_ID;                                      
  #endif                                                              
                                                                      
  the_object = _Objects_Get( information, tmpId, &ignored_location ); 
 8006634:	b8 60 08 00 	mv r1,r3                                       
 8006638:	b9 60 10 00 	mv r2,r11                                      
 800663c:	37 83 00 18 	addi r3,sp,24                                  
 8006640:	fb ff ff a9 	calli 80064e4 <_Objects_Get>                   
  if ( !the_object )                                                  
 8006644:	44 2d ff f4 	be r1,r13,8006614 <_Objects_Id_to_name+0x98>   
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
 8006648:	28 21 00 0c 	lw r1,(r1+12)                                  
  _Thread_Enable_dispatch();                                          
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
 800664c:	34 0c 00 00 	mvi r12,0                                      
                                                                      
  the_object = _Objects_Get( information, tmpId, &ignored_location ); 
  if ( !the_object )                                                  
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
 8006650:	59 c1 00 00 	sw (r14+0),r1                                  
  _Thread_Enable_dispatch();                                          
 8006654:	f8 00 03 da 	calli 80075bc <_Thread_Enable_dispatch>        
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
}                                                                     
 8006658:	b9 80 08 00 	mv r1,r12                                      
 800665c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006660:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006664:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006668:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800666c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006670:	37 9c 00 18 	addi sp,sp,24                                  
 8006674:	c3 a0 00 00 	ret                                            
                                                                      

08004b78 <_Objects_Initialize_information>: , bool supports_global, Objects_Thread_queue_Extract_callout extract #endif ) {
 8004b78:	37 9c ff e8 	addi sp,sp,-24                                 
 8004b7c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8004b80:	5b 8c 00 14 	sw (sp+20),r12                                 
 8004b84:	5b 8d 00 10 	sw (sp+16),r13                                 
 8004b88:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8004b8c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8004b90:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004b94:	b8 40 68 00 	mv r13,r2                                      
  information->maximum = 0;                                           
                                                                      
  /*                                                                  
   *  Register this Object Class in the Object Information Table.     
   */                                                                 
  _Objects_Information_table[ the_api ][ the_class ] = information;   
 8004b98:	b5 ad 40 00 	add r8,r13,r13                                 
 8004b9c:	78 02 08 01 	mvhi r2,0x801                                  
 8004ba0:	38 42 48 a4 	ori r2,r2,0x48a4                               
 8004ba4:	b5 08 40 00 	add r8,r8,r8                                   
 8004ba8:	b4 48 40 00 	add r8,r2,r8                                   
 8004bac:	29 02 00 00 	lw r2,(r8+0)                                   
  ,                                                                   
  bool                 supports_global,                               
  Objects_Thread_queue_Extract_callout extract                        
#endif                                                                
)                                                                     
{                                                                     
 8004bb0:	20 6c ff ff 	andi r12,r3,0xffff                             
  information->maximum = 0;                                           
                                                                      
  /*                                                                  
   *  Register this Object Class in the Object Information Table.     
   */                                                                 
  _Objects_Information_table[ the_api ][ the_class ] = information;   
 8004bb4:	b5 8c 40 00 	add r8,r12,r12                                 
  ,                                                                   
  bool                 supports_global,                               
  Objects_Thread_queue_Extract_callout extract                        
#endif                                                                
)                                                                     
{                                                                     
 8004bb8:	20 a5 ff ff 	andi r5,r5,0xffff                              
  information->maximum = 0;                                           
                                                                      
  /*                                                                  
   *  Register this Object Class in the Object Information Table.     
   */                                                                 
  _Objects_Information_table[ the_api ][ the_class ] = information;   
 8004bbc:	b5 08 40 00 	add r8,r8,r8                                   
  uint32_t                maximum_per_allocation;                     
  #if defined(RTEMS_MULTIPROCESSING)                                  
    uint32_t              index;                                      
  #endif                                                              
                                                                      
  information->the_api            = the_api;                          
 8004bc0:	58 2d 00 00 	sw (r1+0),r13                                  
  information->the_class          = the_class;                        
 8004bc4:	0c 2c 00 04 	sh (r1+4),r12                                  
  information->size               = size;                             
 8004bc8:	58 25 00 18 	sw (r1+24),r5                                  
  information->local_table        = 0;                                
 8004bcc:	58 20 00 1c 	sw (r1+28),r0                                  
  information->inactive_per_block = 0;                                
 8004bd0:	58 20 00 30 	sw (r1+48),r0                                  
  information->object_blocks      = 0;                                
 8004bd4:	58 20 00 34 	sw (r1+52),r0                                  
  information->inactive           = 0;                                
 8004bd8:	0c 20 00 2c 	sh (r1+44),r0                                  
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    information->is_string        = is_string;                        
 8004bdc:	30 26 00 38 	sb (r1+56),r6                                  
                                                                      
  /*                                                                  
   *  Set the maximum value to 0. It will be updated when objects are 
   *  added to the inactive set from _Objects_Extend_information()    
   */                                                                 
  information->maximum = 0;                                           
 8004be0:	0c 20 00 10 	sh (r1+16),r0                                  
                                                                      
  /*                                                                  
   *  Register this Object Class in the Object Information Table.     
   */                                                                 
  _Objects_Information_table[ the_api ][ the_class ] = information;   
 8004be4:	b4 48 40 00 	add r8,r2,r8                                   
  ,                                                                   
  bool                 supports_global,                               
  Objects_Thread_queue_Extract_callout extract                        
#endif                                                                
)                                                                     
{                                                                     
 8004be8:	b8 20 58 00 	mv r11,r1                                      
  information->maximum = 0;                                           
                                                                      
  /*                                                                  
   *  Register this Object Class in the Object Information Table.     
   */                                                                 
  _Objects_Information_table[ the_api ][ the_class ] = information;   
 8004bec:	59 01 00 00 	sw (r8+0),r1                                   
                                                                      
  /*                                                                  
   *  Are we operating in limited or unlimited (e.g. auto-extend) mode.
   */                                                                 
  information->auto_extend =                                          
        (maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;         
 8004bf0:	34 02 00 1f 	mvi r2,31                                      
 8004bf4:	b8 80 08 00 	mv r1,r4                                       
  ,                                                                   
  bool                 supports_global,                               
  Objects_Thread_queue_Extract_callout extract                        
#endif                                                                
)                                                                     
{                                                                     
 8004bf8:	b8 80 70 00 	mv r14,r4                                      
 8004bfc:	b8 e0 78 00 	mv r15,r7                                      
                                                                      
  /*                                                                  
   *  Are we operating in limited or unlimited (e.g. auto-extend) mode.
   */                                                                 
  information->auto_extend =                                          
        (maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;         
 8004c00:	f8 00 35 9b 	calli 801226c <__lshrsi3>                      
  maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;      
 8004c04:	78 03 08 01 	mvhi r3,0x801                                  
 8004c08:	38 63 36 bc 	ori r3,r3,0x36bc                               
                                                                      
  /*                                                                  
   *  Are we operating in limited or unlimited (e.g. auto-extend) mode.
   */                                                                 
  information->auto_extend =                                          
        (maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;         
 8004c0c:	20 22 00 ff 	andi r2,r1,0xff                                
  maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;      
 8004c10:	28 61 00 00 	lw r1,(r3+0)                                   
  _Objects_Information_table[ the_api ][ the_class ] = information;   
                                                                      
  /*                                                                  
   *  Are we operating in limited or unlimited (e.g. auto-extend) mode.
   */                                                                 
  information->auto_extend =                                          
 8004c14:	31 62 00 12 	sb (r11+18),r2                                 
        (maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;         
  maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;      
 8004c18:	a1 c1 70 00 	and r14,r14,r1                                 
                                                                      
  /*                                                                  
   *  Unlimited and maximum of zero is illogical.                     
   */                                                                 
  if ( information->auto_extend && maximum_per_allocation == 0) {     
 8004c1c:	44 40 00 02 	be r2,r0,8004c24 <_Objects_Initialize_information+0xac>
 8004c20:	45 c0 00 29 	be r14,r0,8004cc4 <_Objects_Initialize_information+0x14c><== NEVER TAKEN
  information->allocation_size = maximum_per_allocation;              
                                                                      
  /*                                                                  
   *  Provide a null local table entry for the case of any empty table.
   */                                                                 
  information->local_table = &null_local_table;                       
 8004c24:	78 01 08 01 	mvhi r1,0x801                                  
 8004c28:	38 21 47 14 	ori r1,r1,0x4714                               
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 8004c2c:	34 02 00 18 	mvi r2,24                                      
 8004c30:	59 61 00 1c 	sw (r11+28),r1                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  The allocation unit is the maximum value                        
   */                                                                 
  information->allocation_size = maximum_per_allocation;              
 8004c34:	0d 6e 00 14 	sh (r11+20),r14                                
 8004c38:	b9 a0 08 00 	mv r1,r13                                      
 8004c3c:	f8 00 35 3e 	calli 8012134 <__ashlsi3>                      
 8004c40:	78 0d 00 01 	mvhi r13,0x1                                   
 8004c44:	b8 2d 68 00 	or r13,r1,r13                                  
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
 8004c48:	34 02 00 1b 	mvi r2,27                                      
 8004c4c:	b9 80 08 00 	mv r1,r12                                      
 8004c50:	f8 00 35 39 	calli 8012134 <__ashlsi3>                      
  information->local_table = &null_local_table;                       
                                                                      
  /*                                                                  
   *  Calculate minimum and maximum Id's                              
   */                                                                 
  minimum_index = (maximum_per_allocation == 0) ? 0 : 1;              
 8004c54:	7d c2 00 00 	cmpnei r2,r14,0                                
 8004c58:	b9 a1 08 00 	or r1,r13,r1                                   
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 8004c5c:	b8 22 08 00 	or r1,r1,r2                                    
  information->minimum_id =                                           
 8004c60:	59 61 00 08 	sw (r11+8),r1                                  
   *        lengths that may be an odd number of bytes.               
   */                                                                 
  name_length = maximum_name_length;                                  
                                                                      
  #if defined(RTEMS_POSIX_API)                                        
    if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) )                   
 8004c64:	21 e1 00 03 	andi r1,r15,0x3                                
 8004c68:	b9 e0 38 00 	mv r7,r15                                      
 8004c6c:	5c 20 00 12 	bne r1,r0,8004cb4 <_Objects_Initialize_information+0x13c>
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 );                        
 8004c70:	35 62 00 24 	addi r2,r11,36                                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 8004c74:	35 61 00 20 	addi r1,r11,32                                 
      name_length = (name_length + OBJECTS_NAME_ALIGNMENT) &          
                    ~(OBJECTS_NAME_ALIGNMENT-1);                      
  #endif                                                              
                                                                      
  information->name_length = name_length;                             
 8004c78:	0d 67 00 3a 	sh (r11+58),r7                                 
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8004c7c:	59 62 00 20 	sw (r11+32),r2                                 
  head->previous = NULL;                                              
 8004c80:	59 60 00 24 	sw (r11+36),r0                                 
  tail->previous = head;                                              
 8004c84:	59 61 00 28 	sw (r11+40),r1                                 
  _Chain_Initialize_empty( &information->Inactive );                  
                                                                      
  /*                                                                  
   *  Initialize objects .. if there are any                          
   */                                                                 
  if ( maximum_per_allocation ) {                                     
 8004c88:	45 c0 00 03 	be r14,r0,8004c94 <_Objects_Initialize_information+0x11c>
    /*                                                                
     *  Always have the maximum size available so the current performance
     *  figures are create are met.  If the user moves past the maximum
     *  number then a performance hit is taken.                       
     */                                                               
    _Objects_Extend_information( information );                       
 8004c8c:	b9 60 08 00 	mv r1,r11                                      
 8004c90:	fb ff fe 50 	calli 80045d0 <_Objects_Extend_information>    
	_Chain_Initialize_empty( &information->global_table[ index ] );      
     }                                                                
     else                                                             
       information->global_table = NULL;                              
  #endif                                                              
}                                                                     
 8004c94:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004c98:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8004c9c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004ca0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004ca4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8004ca8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8004cac:	37 9c 00 18 	addi sp,sp,24                                  
 8004cb0:	c3 a0 00 00 	ret                                            
   */                                                                 
  name_length = maximum_name_length;                                  
                                                                      
  #if defined(RTEMS_POSIX_API)                                        
    if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) )                   
      name_length = (name_length + OBJECTS_NAME_ALIGNMENT) &          
 8004cb4:	35 e7 00 04 	addi r7,r15,4                                  
 8004cb8:	34 01 ff fc 	mvi r1,-4                                      
 8004cbc:	a0 e1 38 00 	and r7,r7,r1                                   
 8004cc0:	e3 ff ff ec 	bi 8004c70 <_Objects_Initialize_information+0xf8>
                                                                      
  /*                                                                  
   *  Unlimited and maximum of zero is illogical.                     
   */                                                                 
  if ( information->auto_extend && maximum_per_allocation == 0) {     
    _Internal_error_Occurred(                                         
 8004cc4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8004cc8:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8004ccc:	34 03 00 13 	mvi r3,19                                      <== NOT EXECUTED
 8004cd0:	fb ff fd d5 	calli 8004424 <_Internal_error_Occurred>       <== NOT EXECUTED
                                                                      

08004d50 <_Objects_Shrink_information>: */ void _Objects_Shrink_information( Objects_Information *information ) {
 8004d50:	37 9c ff ec 	addi sp,sp,-20                                 
 8004d54:	5b 8b 00 14 	sw (sp+20),r11                                 
 8004d58:	5b 8c 00 10 	sw (sp+16),r12                                 
 8004d5c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8004d60:	5b 8e 00 08 	sw (sp+8),r14                                  
 8004d64:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
 8004d68:	2c 2c 00 0a 	lhu r12,(r1+10)                                
  block_count = (information->maximum - index_base) /                 
 8004d6c:	2c 2d 00 14 	lhu r13,(r1+20)                                
 */                                                                   
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
 8004d70:	b8 20 70 00 	mv r14,r1                                      
  /*                                                                  
   * 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) /                 
 8004d74:	2c 21 00 10 	lhu r1,(r1+16)                                 
 8004d78:	b9 a0 10 00 	mv r2,r13                                      
 8004d7c:	c8 2c 08 00 	sub r1,r1,r12                                  
 8004d80:	f8 00 35 c7 	calli 801249c <__udivsi3>                      
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
 8004d84:	44 20 00 09 	be r1,r0,8004da8 <_Objects_Shrink_information+0x58><== NEVER TAKEN
    if ( information->inactive_per_block[ block ] ==                  
 8004d88:	29 c5 00 30 	lw r5,(r14+48)                                 
 8004d8c:	34 0b 00 04 	mvi r11,4                                      
 8004d90:	34 03 00 00 	mvi r3,0                                       
 8004d94:	28 a2 00 00 	lw r2,(r5+0)                                   
 8004d98:	45 a2 00 11 	be r13,r2,8004ddc <_Objects_Shrink_information+0x8c><== NEVER TAKEN
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
 8004d9c:	34 63 00 01 	addi r3,r3,1                                   
 *    the_block       - the block to remove                           
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Shrink_information(                                     
 8004da0:	b4 ab 10 00 	add r2,r5,r11                                  
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
 8004da4:	54 23 00 08 	bgu r1,r3,8004dc4 <_Objects_Shrink_information+0x74>
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
 8004da8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004dac:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004db0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004db4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004db8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004dbc:	37 9c 00 14 	addi sp,sp,20                                  
 8004dc0:	c3 a0 00 00 	ret                                            
  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 ] ==                  
 8004dc4:	28 42 00 00 	lw r2,(r2+0)                                   
      information->inactive -= information->allocation_size;          
                                                                      
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
 8004dc8:	35 64 00 04 	addi r4,r11,4                                  
 8004dcc:	b5 8d 60 00 	add r12,r12,r13                                
  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 ] ==                  
 8004dd0:	45 a2 00 04 	be r13,r2,8004de0 <_Objects_Shrink_information+0x90>
 8004dd4:	b8 80 58 00 	mv r11,r4                                      
 8004dd8:	e3 ff ff f1 	bi 8004d9c <_Objects_Shrink_information+0x4c>  
 8004ddc:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
         information->allocation_size ) {                             
                                                                      
      /*                                                              
       *  Assume the Inactive chain is never empty at this point      
       */                                                             
      the_object = (Objects_Control *) _Chain_First( &information->Inactive );
 8004de0:	29 c1 00 20 	lw r1,(r14+32)                                 
                                                                      
      do {                                                            
         index = _Objects_Get_index( the_object->id );                
 8004de4:	2c 22 00 0a 	lhu r2,(r1+10)                                 
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
 8004de8:	28 2d 00 00 	lw r13,(r1+0)                                  
         if ((index >= index_base) &&                                 
 8004dec:	55 82 00 05 	bgu r12,r2,8004e00 <_Objects_Shrink_information+0xb0>
             (index < (index_base + information->allocation_size))) { 
 8004df0:	2d c3 00 14 	lhu r3,(r14+20)                                
 8004df4:	b5 83 18 00 	add r3,r12,r3                                  
         /*                                                           
          *  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) &&                                 
 8004df8:	50 43 00 02 	bgeu r2,r3,8004e00 <_Objects_Shrink_information+0xb0>
             (index < (index_base + information->allocation_size))) { 
           _Chain_Extract( &extract_me->Node );                       
 8004dfc:	fb ff fa c2 	calli 8003904 <_Chain_Extract>                 
         }                                                            
       }                                                              
       while ( the_object );                                          
 8004e00:	45 a0 00 03 	be r13,r0,8004e0c <_Objects_Shrink_information+0xbc>
         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;      
 8004e04:	b9 a0 08 00 	mv r1,r13                                      
 8004e08:	e3 ff ff f7 	bi 8004de4 <_Objects_Shrink_information+0x94>  
       while ( the_object );                                          
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
 8004e0c:	29 c1 00 34 	lw r1,(r14+52)                                 
 8004e10:	b4 2b 08 00 	add r1,r1,r11                                  
 8004e14:	28 21 00 00 	lw r1,(r1+0)                                   
 8004e18:	f8 00 08 a8 	calli 80070b8 <_Workspace_Free>                
      information->object_blocks[ block ] = NULL;                     
 8004e1c:	29 c2 00 34 	lw r2,(r14+52)                                 
      information->inactive_per_block[ block ] = 0;                   
 8004e20:	29 c4 00 30 	lw r4,(r14+48)                                 
                                                                      
      information->inactive -= information->allocation_size;          
 8004e24:	2d c3 00 2c 	lhu r3,(r14+44)                                
 8004e28:	2d c1 00 14 	lhu r1,(r14+20)                                
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
 8004e2c:	b4 4b 10 00 	add r2,r2,r11                                  
 8004e30:	58 40 00 00 	sw (r2+0),r0                                   
      information->inactive_per_block[ block ] = 0;                   
 8004e34:	b4 8b 58 00 	add r11,r4,r11                                 
 8004e38:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
      information->inactive -= information->allocation_size;          
 8004e3c:	c8 61 08 00 	sub r1,r3,r1                                   
 8004e40:	0d c1 00 2c 	sh (r14+44),r1                                 
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
 8004e44:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004e48:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004e4c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004e50:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004e54:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004e58:	37 9c 00 14 	addi sp,sp,20                                  
 8004e5c:	c3 a0 00 00 	ret                                            
                                                                      

08009044 <_POSIX_Message_queue_Receive_support>: size_t msg_len, unsigned int *msg_prio, bool wait, Watchdog_Interval timeout ) {
 8009044:	37 9c ff dc 	addi sp,sp,-36                                 
 8009048:	5b 8b 00 1c 	sw (sp+28),r11                                 
 800904c:	5b 8c 00 18 	sw (sp+24),r12                                 
 8009050:	5b 8d 00 14 	sw (sp+20),r13                                 
 8009054:	5b 8e 00 10 	sw (sp+16),r14                                 
 8009058:	5b 8f 00 0c 	sw (sp+12),r15                                 
 800905c:	5b 90 00 08 	sw (sp+8),r16                                  
 8009060:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009064:	b8 20 60 00 	mv r12,r1                                      
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
  mqd_t              id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Message_queue_Control_fd *) _Objects_Get(             
 8009068:	78 01 08 02 	mvhi r1,0x802                                  
 800906c:	b8 40 78 00 	mv r15,r2                                      
 8009070:	b8 60 58 00 	mv r11,r3                                      
 8009074:	b9 80 10 00 	mv r2,r12                                      
 8009078:	38 21 a2 58 	ori r1,r1,0xa258                               
 800907c:	37 83 00 24 	addi r3,sp,36                                  
 8009080:	b8 80 68 00 	mv r13,r4                                      
 8009084:	b8 c0 70 00 	mv r14,r6                                      
 8009088:	20 b0 00 ff 	andi r16,r5,0xff                               
 800908c:	f8 00 0d 28 	calli 800c52c <_Objects_Get>                   
  Objects_Locations                location;                          
  size_t                           length_out;                        
  bool                             do_wait;                           
                                                                      
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
 8009090:	2b 82 00 24 	lw r2,(sp+36)                                  
 8009094:	44 40 00 0e 	be r2,r0,80090cc <_POSIX_Message_queue_Receive_support+0x88>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EBADF );                      
 8009098:	f8 00 30 6b 	calli 8015244 <__errno>                        
 800909c:	34 02 00 09 	mvi r2,9                                       
 80090a0:	58 22 00 00 	sw (r1+0),r2                                   
 80090a4:	34 01 ff ff 	mvi r1,-1                                      
}                                                                     
 80090a8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80090ac:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80090b0:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80090b4:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80090b8:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80090bc:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80090c0:	2b 90 00 08 	lw r16,(sp+8)                                  
 80090c4:	37 9c 00 24 	addi sp,sp,36                                  
 80090c8:	c3 a0 00 00 	ret                                            
                                                                      
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {             
 80090cc:	28 28 00 14 	lw r8,(r1+20)                                  
 80090d0:	34 07 00 01 	mvi r7,1                                       
 80090d4:	21 09 00 03 	andi r9,r8,0x3                                 
 80090d8:	45 27 00 2e 	be r9,r7,8009190 <_POSIX_Message_queue_Receive_support+0x14c>
        _Thread_Enable_dispatch();                                    
        rtems_set_errno_and_return_minus_one( EBADF );                
      }                                                               
                                                                      
      the_mq = the_mq_fd->Queue;                                      
 80090dc:	28 27 00 10 	lw r7,(r1+16)                                  
                                                                      
      if ( msg_len < the_mq->Message_queue.maximum_message_size ) {   
 80090e0:	28 e1 00 68 	lw r1,(r7+104)                                 
 80090e4:	51 61 00 07 	bgeu r11,r1,8009100 <_POSIX_Message_queue_Receive_support+0xbc>
        _Thread_Enable_dispatch();                                    
 80090e8:	f8 00 11 11 	calli 800d52c <_Thread_Enable_dispatch>        
        rtems_set_errno_and_return_minus_one( EMSGSIZE );             
 80090ec:	f8 00 30 56 	calli 8015244 <__errno>                        
 80090f0:	34 02 00 7a 	mvi r2,122                                     
 80090f4:	58 22 00 00 	sw (r1+0),r2                                   
 80090f8:	34 01 ff ff 	mvi r1,-1                                      
 80090fc:	e3 ff ff eb 	bi 80090a8 <_POSIX_Message_queue_Receive_support+0x64>
      /*                                                              
       *  Now if something goes wrong, we return a "length" of -1     
       *  to indicate an error.                                       
       */                                                             
                                                                      
      length_out = -1;                                                
 8009100:	34 01 ff ff 	mvi r1,-1                                      
 8009104:	5b 81 00 20 	sw (sp+32),r1                                  
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
 8009108:	34 05 00 00 	mvi r5,0                                       
 800910c:	5e 00 00 16 	bne r16,r0,8009164 <_POSIX_Message_queue_Receive_support+0x120><== ALWAYS TAKEN
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      *msg_prio =                                                     
        _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
 8009110:	78 0b 08 02 	mvhi r11,0x802                                 
        do_wait = wait;                                               
                                                                      
      /*                                                              
       *  Now perform the actual message receive                      
       */                                                             
      _CORE_message_queue_Seize(                                      
 8009114:	34 e1 00 1c 	addi r1,r7,28                                  
 8009118:	b9 80 10 00 	mv r2,r12                                      
 800911c:	b9 e0 18 00 	mv r3,r15                                      
 8009120:	37 84 00 20 	addi r4,sp,32                                  
 8009124:	b9 c0 30 00 	mv r6,r14                                      
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      *msg_prio =                                                     
        _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
 8009128:	39 6b a2 c4 	ori r11,r11,0xa2c4                             
        do_wait = wait;                                               
                                                                      
      /*                                                              
       *  Now perform the actual message receive                      
       */                                                             
      _CORE_message_queue_Seize(                                      
 800912c:	f8 00 07 cf 	calli 800b068 <_CORE_message_queue_Seize>      
        &length_out,                                                  
        do_wait,                                                      
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
 8009130:	f8 00 10 ff 	calli 800d52c <_Thread_Enable_dispatch>        
      *msg_prio =                                                     
        _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
 8009134:	29 6c 00 0c 	lw r12,(r11+12)                                
RTEMS_INLINE_ROUTINE unsigned int _POSIX_Message_queue_Priority_from_core(
  CORE_message_queue_Submit_types priority                            
)                                                                     
{                                                                     
  /* absolute value without a library dependency */                   
  return ((priority >= 0) ? priority : -priority);                    
 8009138:	34 02 00 1f 	mvi r2,31                                      
 800913c:	29 81 00 24 	lw r1,(r12+36)                                 
 8009140:	f8 00 6f 75 	calli 8024f14 <__ashrsi3>                      
 8009144:	29 83 00 24 	lw r3,(r12+36)                                 
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
 8009148:	29 82 00 34 	lw r2,(r12+52)                                 
 800914c:	98 23 18 00 	xor r3,r1,r3                                   
 8009150:	c8 61 08 00 	sub r1,r3,r1                                   
        do_wait,                                                      
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      *msg_prio =                                                     
 8009154:	59 a1 00 00 	sw (r13+0),r1                                  
        _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
 8009158:	5c 40 00 06 	bne r2,r0,8009170 <_POSIX_Message_queue_Receive_support+0x12c>
        return length_out;                                            
 800915c:	2b 81 00 20 	lw r1,(sp+32)                                  
 8009160:	e3 ff ff d2 	bi 80090a8 <_POSIX_Message_queue_Receive_support+0x64>
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
        do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? false : true;     
 8009164:	21 05 40 00 	andi r5,r8,0x4000                              
      length_out = -1;                                                
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
 8009168:	64 a5 00 00 	cmpei r5,r5,0                                  
 800916c:	e3 ff ff e9 	bi 8009110 <_POSIX_Message_queue_Receive_support+0xcc>
        _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
        return length_out;                                            
                                                                      
      rtems_set_errno_and_return_minus_one(                           
 8009170:	f8 00 30 35 	calli 8015244 <__errno>                        
 8009174:	b8 20 60 00 	mv r12,r1                                      
 8009178:	29 61 00 0c 	lw r1,(r11+12)                                 
 800917c:	28 21 00 34 	lw r1,(r1+52)                                  
 8009180:	f8 00 00 c2 	calli 8009488 <_POSIX_Message_queue_Translate_core_message_queue_return_code>
 8009184:	59 81 00 00 	sw (r12+0),r1                                  
 8009188:	34 01 ff ff 	mvi r1,-1                                      
 800918c:	e3 ff ff c7 	bi 80090a8 <_POSIX_Message_queue_Receive_support+0x64>
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {             
        _Thread_Enable_dispatch();                                    
 8009190:	f8 00 10 e7 	calli 800d52c <_Thread_Enable_dispatch>        
        rtems_set_errno_and_return_minus_one( EBADF );                
 8009194:	f8 00 30 2c 	calli 8015244 <__errno>                        
 8009198:	34 02 00 09 	mvi r2,9                                       
 800919c:	58 22 00 00 	sw (r1+0),r2                                   
 80091a0:	34 01 ff ff 	mvi r1,-1                                      
 80091a4:	e3 ff ff c1 	bi 80090a8 <_POSIX_Message_queue_Receive_support+0x64>
                                                                      

08008dec <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch>: #include <rtems/posix/pthread.h> void _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch( Thread_Control *the_thread ) {
 8008dec:	37 9c ff fc 	addi sp,sp,-4                                  
 8008df0:	5b 9d 00 04 	sw (sp+4),ra                                   
  POSIX_API_Control *thread_support;                                  
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
 8008df4:	28 22 01 20 	lw r2,(r1+288)                                 
                                                                      
  if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
 8008df8:	28 43 00 d8 	lw r3,(r2+216)                                 
 8008dfc:	5c 60 00 04 	bne r3,r0,8008e0c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x20><== NEVER TAKEN
 8008e00:	28 44 00 dc 	lw r4,(r2+220)                                 
 8008e04:	34 03 00 01 	mvi r3,1                                       
 8008e08:	44 83 00 05 	be r4,r3,8008e1c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x30>
       thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS &&
       thread_support->cancelation_requested ) {                      
    _Thread_Unnest_dispatch();                                        
    _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );               
  } else                                                              
    _Thread_Enable_dispatch();                                        
 8008e0c:	fb ff f3 07 	calli 8005a28 <_Thread_Enable_dispatch>        
                                                                      
}                                                                     
 8008e10:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008e14:	37 9c 00 04 	addi sp,sp,4                                   
 8008e18:	c3 a0 00 00 	ret                                            
  POSIX_API_Control *thread_support;                                  
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
                                                                      
  if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
       thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS &&
 8008e1c:	28 42 00 e0 	lw r2,(r2+224)                                 
 8008e20:	44 40 ff fb 	be r2,r0,8008e0c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x20>
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
 8008e24:	78 03 08 01 	mvhi r3,0x801                                  
 8008e28:	38 63 68 c8 	ori r3,r3,0x68c8                               
 8008e2c:	28 64 00 00 	lw r4,(r3+0)                                   
       thread_support->cancelation_requested ) {                      
    _Thread_Unnest_dispatch();                                        
    _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );               
 8008e30:	34 02 ff ff 	mvi r2,-1                                      
 8008e34:	34 84 ff ff 	addi r4,r4,-1                                  
 8008e38:	58 64 00 00 	sw (r3+0),r4                                   
 8008e3c:	f8 00 02 89 	calli 8009860 <_POSIX_Thread_Exit>             
 8008e40:	e3 ff ff f4 	bi 8008e10 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x24>
                                                                      

0800a804 <_POSIX_Thread_Translate_sched_param>: int policy, struct sched_param *param, Thread_CPU_budget_algorithms *budget_algorithm, Thread_CPU_budget_algorithm_callout *budget_callout ) {
 800a804:	37 9c ff e8 	addi sp,sp,-24                                 
 800a808:	5b 8b 00 18 	sw (sp+24),r11                                 
 800a80c:	5b 8c 00 14 	sw (sp+20),r12                                 
 800a810:	5b 8d 00 10 	sw (sp+16),r13                                 
 800a814:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800a818:	5b 8f 00 08 	sw (sp+8),r15                                  
 800a81c:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a820:	b8 20 68 00 	mv r13,r1                                      
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
 800a824:	28 41 00 00 	lw r1,(r2+0)                                   
  int                                  policy,                        
  struct sched_param                  *param,                         
  Thread_CPU_budget_algorithms        *budget_algorithm,              
  Thread_CPU_budget_algorithm_callout *budget_callout                 
)                                                                     
{                                                                     
 800a828:	b8 40 60 00 	mv r12,r2                                      
 800a82c:	b8 60 70 00 	mv r14,r3                                      
 800a830:	b8 80 78 00 	mv r15,r4                                      
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
 800a834:	fb ff ff ec 	calli 800a7e4 <_POSIX_Priority_Is_valid>       
    return EINVAL;                                                    
 800a838:	34 0b 00 16 	mvi r11,22                                     
  struct sched_param                  *param,                         
  Thread_CPU_budget_algorithms        *budget_algorithm,              
  Thread_CPU_budget_algorithm_callout *budget_callout                 
)                                                                     
{                                                                     
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
 800a83c:	44 20 00 0c 	be r1,r0,800a86c <_POSIX_Thread_Translate_sched_param+0x68><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;               
 800a840:	59 c0 00 00 	sw (r14+0),r0                                  
  *budget_callout = NULL;                                             
 800a844:	59 e0 00 00 	sw (r15+0),r0                                  
                                                                      
  if ( policy == SCHED_OTHER ) {                                      
 800a848:	45 a0 00 12 	be r13,r0,800a890 <_POSIX_Thread_Translate_sched_param+0x8c>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_FIFO ) {                                       
 800a84c:	34 01 00 01 	mvi r1,1                                       
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
 800a850:	34 0b 00 00 	mvi r11,0                                      
  if ( policy == SCHED_OTHER ) {                                      
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_FIFO ) {                                       
 800a854:	45 a1 00 06 	be r13,r1,800a86c <_POSIX_Thread_Translate_sched_param+0x68>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_RR ) {                                         
 800a858:	34 01 00 02 	mvi r1,2                                       
 800a85c:	45 a1 00 2b 	be r13,r1,800a908 <_POSIX_Thread_Translate_sched_param+0x104>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_SPORADIC ) {                                   
 800a860:	34 01 00 04 	mvi r1,4                                       
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
    return 0;                                                         
  }                                                                   
                                                                      
  return EINVAL;                                                      
 800a864:	34 0b 00 16 	mvi r11,22                                     
  if ( policy == SCHED_RR ) {                                         
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_SPORADIC ) {                                   
 800a868:	45 a1 00 0e 	be r13,r1,800a8a0 <_POSIX_Thread_Translate_sched_param+0x9c>
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
    return 0;                                                         
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
 800a86c:	b9 60 08 00 	mv r1,r11                                      
 800a870:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a874:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800a878:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800a87c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800a880:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800a884:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800a888:	37 9c 00 18 	addi sp,sp,24                                  
 800a88c:	c3 a0 00 00 	ret                                            
                                                                      
  *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;               
  *budget_callout = NULL;                                             
                                                                      
  if ( policy == SCHED_OTHER ) {                                      
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
 800a890:	34 01 00 01 	mvi r1,1                                       
 800a894:	59 c1 00 00 	sw (r14+0),r1                                  
    return 0;                                                         
 800a898:	34 0b 00 00 	mvi r11,0                                      
 800a89c:	e3 ff ff f4 	bi 800a86c <_POSIX_Thread_Translate_sched_param+0x68>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_SPORADIC ) {                                   
    if ( (param->sched_ss_repl_period.tv_sec == 0) &&                 
 800a8a0:	29 81 00 08 	lw r1,(r12+8)                                  
 800a8a4:	5c 20 00 03 	bne r1,r0,800a8b0 <_POSIX_Thread_Translate_sched_param+0xac>
 800a8a8:	29 82 00 0c 	lw r2,(r12+12)                                 
 800a8ac:	44 41 ff f0 	be r2,r1,800a86c <_POSIX_Thread_Translate_sched_param+0x68>
         (param->sched_ss_repl_period.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( (param->sched_ss_init_budget.tv_sec == 0) &&                 
 800a8b0:	29 81 00 10 	lw r1,(r12+16)                                 
 800a8b4:	5c 20 00 04 	bne r1,r0,800a8c4 <_POSIX_Thread_Translate_sched_param+0xc0>
 800a8b8:	29 82 00 14 	lw r2,(r12+20)                                 
         (param->sched_ss_init_budget.tv_nsec == 0) )                 
      return EINVAL;                                                  
 800a8bc:	34 0b 00 16 	mvi r11,22                                     
  if ( policy == SCHED_SPORADIC ) {                                   
    if ( (param->sched_ss_repl_period.tv_sec == 0) &&                 
         (param->sched_ss_repl_period.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( (param->sched_ss_init_budget.tv_sec == 0) &&                 
 800a8c0:	44 41 ff eb 	be r2,r1,800a86c <_POSIX_Thread_Translate_sched_param+0x68>
         (param->sched_ss_init_budget.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <         
 800a8c4:	35 81 00 08 	addi r1,r12,8                                  
 800a8c8:	fb ff f4 36 	calli 80079a0 <_Timespec_To_ticks>             
 800a8cc:	b8 20 68 00 	mv r13,r1                                      
	 _Timespec_To_ticks( ¶m->sched_ss_init_budget ) )                
 800a8d0:	35 81 00 10 	addi r1,r12,16                                 
 800a8d4:	fb ff f4 33 	calli 80079a0 <_Timespec_To_ticks>             
      return EINVAL;                                                  
 800a8d8:	34 0b 00 16 	mvi r11,22                                     
                                                                      
    if ( (param->sched_ss_init_budget.tv_sec == 0) &&                 
         (param->sched_ss_init_budget.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <         
 800a8dc:	54 2d ff e4 	bgu r1,r13,800a86c <_POSIX_Thread_Translate_sched_param+0x68>
	 _Timespec_To_ticks( ¶m->sched_ss_init_budget ) )                
      return EINVAL;                                                  
                                                                      
    if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )  
 800a8e0:	29 81 00 04 	lw r1,(r12+4)                                  
 800a8e4:	fb ff ff c0 	calli 800a7e4 <_POSIX_Priority_Is_valid>       
 800a8e8:	44 20 ff e1 	be r1,r0,800a86c <_POSIX_Thread_Translate_sched_param+0x68>
      return EINVAL;                                                  
                                                                      
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
 800a8ec:	78 01 08 00 	mvhi r1,0x800                                  
      return EINVAL;                                                  
                                                                      
    if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )  
      return EINVAL;                                                  
                                                                      
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
 800a8f0:	34 02 00 03 	mvi r2,3                                       
 800a8f4:	59 c2 00 00 	sw (r14+0),r2                                  
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
 800a8f8:	38 21 3b e0 	ori r1,r1,0x3be0                               
 800a8fc:	59 e1 00 00 	sw (r15+0),r1                                  
    return 0;                                                         
 800a900:	34 0b 00 00 	mvi r11,0                                      
 800a904:	e3 ff ff da 	bi 800a86c <_POSIX_Thread_Translate_sched_param+0x68>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_RR ) {                                         
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
 800a908:	59 cd 00 00 	sw (r14+0),r13                                 
    return 0;                                                         
 800a90c:	e3 ff ff d8 	bi 800a86c <_POSIX_Thread_Translate_sched_param+0x68>
                                                                      

0800947c <_POSIX_Threads_Exitted_extension>: * This method is invoked each time a thread exits. */ void _POSIX_Threads_Exitted_extension( Thread_Control *executing ) {
 800947c:	37 9c ff f8 	addi sp,sp,-8                                  
 8009480:	5b 8b 00 08 	sw (sp+8),r11                                  
 8009484:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009488:	b8 20 58 00 	mv r11,r1                                      
 */                                                                   
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(                   
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
 800948c:	28 21 00 08 	lw r1,(r1+8)                                   
 8009490:	34 02 00 18 	mvi r2,24                                      
 8009494:	f8 00 23 76 	calli 801226c <__lshrsi3>                      
 8009498:	20 21 00 07 	andi r1,r1,0x7                                 
  /*                                                                  
   *  If the executing thread was not created with the POSIX API, then this
   *  API do not get to define its exit behavior.                     
   */                                                                 
  if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
 800949c:	34 02 00 03 	mvi r2,3                                       
 80094a0:	44 22 00 05 	be r1,r2,80094b4 <_POSIX_Threads_Exitted_extension+0x38>
    pthread_exit( executing->Wait.return_argument );                  
}                                                                     
 80094a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80094a8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80094ac:	37 9c 00 08 	addi sp,sp,8                                   
 80094b0:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  If the executing thread was not created with the POSIX API, then this
   *  API do not get to define its exit behavior.                     
   */                                                                 
  if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
    pthread_exit( executing->Wait.return_argument );                  
 80094b4:	29 61 00 28 	lw r1,(r11+40)                                 
 80094b8:	f8 00 0c 87 	calli 800c6d4 <pthread_exit>                   
}                                                                     
 80094bc:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80094c0:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 80094c4:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 80094c8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08003838 <_POSIX_Threads_Initialize_user_threads_body>: * * Output parameters: NONE */ void _POSIX_Threads_Initialize_user_threads_body(void) {
 8003838:	37 9c ff a8 	addi sp,sp,-88                                 
 800383c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003840:	5b 8c 00 10 	sw (sp+16),r12                                 
 8003844:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003848:	5b 8e 00 08 	sw (sp+8),r14                                  
 800384c:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t                            maximum;                        
  posix_initialization_threads_table *user_threads;                   
  pthread_t                           thread_id;                      
  pthread_attr_t                      attr;                           
                                                                      
  user_threads = Configuration_POSIX_API.User_initialization_threads_table;
 8003850:	78 01 08 02 	mvhi r1,0x802                                  
 8003854:	38 21 00 d8 	ori r1,r1,0xd8                                 
  maximum      = Configuration_POSIX_API.number_of_initialization_threads;
 8003858:	28 2e 00 30 	lw r14,(r1+48)                                 
  uint32_t                            maximum;                        
  posix_initialization_threads_table *user_threads;                   
  pthread_t                           thread_id;                      
  pthread_attr_t                      attr;                           
                                                                      
  user_threads = Configuration_POSIX_API.User_initialization_threads_table;
 800385c:	28 2c 00 34 	lw r12,(r1+52)                                 
  maximum      = Configuration_POSIX_API.number_of_initialization_threads;
                                                                      
  if ( !user_threads || maximum == 0 )                                
 8003860:	65 c2 00 00 	cmpei r2,r14,0                                 
 8003864:	65 81 00 00 	cmpei r1,r12,0                                 
 8003868:	b8 41 08 00 	or r1,r2,r1                                    
 800386c:	5c 20 00 15 	bne r1,r0,80038c0 <_POSIX_Threads_Initialize_user_threads_body+0x88><== NEVER TAKEN
 8003870:	34 0d 00 00 	mvi r13,0                                      
 8003874:	37 8b 00 18 	addi r11,sp,24                                 
                                                                      
  for ( index=0 ; index < maximum ; index++ ) {                       
    /*                                                                
     * There is no way for these calls to fail in this situation.     
     */                                                               
    (void) pthread_attr_init( &attr );                                
 8003878:	b9 60 08 00 	mv r1,r11                                      
 800387c:	f8 00 1c 25 	calli 800a910 <pthread_attr_init>              
    (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
 8003880:	34 02 00 02 	mvi r2,2                                       
 8003884:	b9 60 08 00 	mv r1,r11                                      
 8003888:	f8 00 1c 59 	calli 800a9ec <pthread_attr_setinheritsched>   
    (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size);
 800388c:	29 82 00 04 	lw r2,(r12+4)                                  
 8003890:	b9 60 08 00 	mv r1,r11                                      
 8003894:	f8 00 1c 62 	calli 800aa1c <pthread_attr_setstacksize>      
                                                                      
    status = pthread_create(                                          
 8003898:	29 83 00 00 	lw r3,(r12+0)                                  
 800389c:	37 81 00 58 	addi r1,sp,88                                  
 80038a0:	b9 60 10 00 	mv r2,r11                                      
 80038a4:	34 04 00 00 	mvi r4,0                                       
 80038a8:	fb ff fe db 	calli 8003414 <pthread_create>                 
 80038ac:	b8 20 18 00 	mv r3,r1                                       
      &thread_id,                                                     
      &attr,                                                          
      user_threads[ index ].thread_entry,                             
      NULL                                                            
    );                                                                
    if ( status )                                                     
 80038b0:	5c 20 00 0b 	bne r1,r0,80038dc <_POSIX_Threads_Initialize_user_threads_body+0xa4><== NEVER TAKEN
   *                                                                  
   *  Setting the attributes explicitly is critical, since we don't want
   *  to inherit the idle tasks attributes.                           
   */                                                                 
                                                                      
  for ( index=0 ; index < maximum ; index++ ) {                       
 80038b4:	35 ad 00 01 	addi r13,r13,1                                 
 80038b8:	35 8c 00 08 	addi r12,r12,8                                 
 80038bc:	55 cd ff ef 	bgu r14,r13,8003878 <_POSIX_Threads_Initialize_user_threads_body+0x40><== NEVER TAKEN
      NULL                                                            
    );                                                                
    if ( status )                                                     
      _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
  }                                                                   
}                                                                     
 80038c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80038c4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80038c8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80038cc:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80038d0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80038d4:	37 9c 00 58 	addi sp,sp,88                                  
 80038d8:	c3 a0 00 00 	ret                                            
      &attr,                                                          
      user_threads[ index ].thread_entry,                             
      NULL                                                            
    );                                                                
    if ( status )                                                     
      _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
 80038dc:	34 01 00 02 	mvi r1,2                                       <== NOT EXECUTED
 80038e0:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 80038e4:	f8 00 07 5c 	calli 8005654 <_Internal_error_Occurred>       <== NOT EXECUTED
                                                                      

080096c4 <_POSIX_Threads_Sporadic_budget_TSR>: */ void _POSIX_Threads_Sporadic_budget_TSR( Objects_Id id __attribute__((unused)), void *argument ) {
 80096c4:	37 9c ff f4 	addi sp,sp,-12                                 
 80096c8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80096cc:	5b 8c 00 08 	sw (sp+8),r12                                  
 80096d0:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control     *the_thread;                                     
  POSIX_API_Control  *api;                                            
                                                                      
  the_thread = argument;                                              
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 80096d4:	28 4c 01 20 	lw r12,(r2+288)                                
 */                                                                   
void _POSIX_Threads_Sporadic_budget_TSR(                              
  Objects_Id      id __attribute__((unused)),                         
  void           *argument                                            
)                                                                     
{                                                                     
 80096d8:	b8 40 58 00 	mv r11,r2                                      
  the_thread = argument;                                              
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
 80096dc:	35 81 00 98 	addi r1,r12,152                                
 80096e0:	f8 00 04 f5 	calli 800aab4 <_Timespec_To_ticks>             
                                                                      
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(        
  int priority                                                        
)                                                                     
{                                                                     
  return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
 80096e4:	78 03 08 01 	mvhi r3,0x801                                  
 80096e8:	38 63 40 f0 	ori r3,r3,0x40f0                               
 80096ec:	29 84 00 88 	lw r4,(r12+136)                                
 80096f0:	40 62 00 00 	lbu r2,(r3+0)                                  
   */                                                                 
  #if 0                                                               
    printk( "TSR %d %d %d\n", the_thread->resource_count,             
        the_thread->current_priority, new_priority );                 
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
 80096f4:	29 63 00 1c 	lw r3,(r11+28)                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
                                                                      
  the_thread->cpu_time_budget = ticks;                                
 80096f8:	59 61 00 78 	sw (r11+120),r1                                
 80096fc:	c8 44 10 00 	sub r2,r2,r4                                   
                                                                      
  new_priority = _POSIX_Priority_To_core( api->schedparam.sched_priority );
  the_thread->real_priority = new_priority;                           
 8009700:	59 62 00 18 	sw (r11+24),r2                                 
   */                                                                 
  #if 0                                                               
    printk( "TSR %d %d %d\n", the_thread->resource_count,             
        the_thread->current_priority, new_priority );                 
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
 8009704:	5c 60 00 06 	bne r3,r0,800971c <_POSIX_Threads_Sporadic_budget_TSR+0x58><== NEVER TAKEN
    /*                                                                
     *  If this would make them less important, then do not change it.
     */                                                               
    if ( the_thread->current_priority > new_priority ) {              
 8009708:	29 61 00 14 	lw r1,(r11+20)                                 
 800970c:	50 41 00 04 	bgeu r2,r1,800971c <_POSIX_Threads_Sporadic_budget_TSR+0x58>
      _Thread_Change_priority( the_thread, new_priority, true );      
 8009710:	b9 60 08 00 	mv r1,r11                                      
 8009714:	34 03 00 01 	mvi r3,1                                       
 8009718:	fb ff ef a2 	calli 80055a0 <_Thread_Change_priority>        
      #endif                                                          
    }                                                                 
  }                                                                   
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period );
 800971c:	35 81 00 90 	addi r1,r12,144                                
 8009720:	f8 00 04 e5 	calli 800aab4 <_Timespec_To_ticks>             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8009724:	59 81 00 b4 	sw (r12+180),r1                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8009728:	78 01 08 01 	mvhi r1,0x801                                  
 800972c:	35 82 00 a8 	addi r2,r12,168                                
 8009730:	38 21 49 c8 	ori r1,r1,0x49c8                               
 8009734:	fb ff f5 5c 	calli 8006ca4 <_Watchdog_Insert>               
                                                                      
  _Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );              
}                                                                     
 8009738:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800973c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8009740:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8009744:	37 9c 00 0c 	addi sp,sp,12                                  
 8009748:	c3 a0 00 00 	ret                                            
                                                                      

0800974c <_POSIX_Threads_Sporadic_budget_callout>: * _POSIX_Threads_Sporadic_budget_callout */ void _POSIX_Threads_Sporadic_budget_callout( Thread_Control *the_thread ) {
 800974c:	37 9c ff fc 	addi sp,sp,-4                                  
 8009750:	5b 9d 00 04 	sw (sp+4),ra                                   
  POSIX_API_Control *api;                                             
  uint32_t           new_priority;                                    
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8009754:	28 22 01 20 	lw r2,(r1+288)                                 
 8009758:	78 04 08 01 	mvhi r4,0x801                                  
 800975c:	38 84 40 f0 	ori r4,r4,0x40f0                               
 8009760:	28 42 00 8c 	lw r2,(r2+140)                                 
 8009764:	40 84 00 00 	lbu r4,(r4+0)                                  
   */                                                                 
  #if 0                                                               
    printk( "callout %d %d %d\n", the_thread->resource_count,         
	the_thread->current_priority, new_priority );                        
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
 8009768:	28 25 00 1c 	lw r5,(r1+28)                                  
 800976c:	c8 82 10 00 	sub r2,r4,r2                                   
                                                                      
  /*                                                                  
   *  This will prevent the thread from consuming its entire "budget" 
   *  while at low priority.                                          
   */                                                                 
  the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */
 8009770:	34 04 ff ff 	mvi r4,-1                                      
 8009774:	58 24 00 78 	sw (r1+120),r4                                 
                                                                      
  new_priority = _POSIX_Priority_To_core(api->schedparam.sched_ss_low_priority);
  the_thread->real_priority = new_priority;                           
 8009778:	58 22 00 18 	sw (r1+24),r2                                  
   */                                                                 
  #if 0                                                               
    printk( "callout %d %d %d\n", the_thread->resource_count,         
	the_thread->current_priority, new_priority );                        
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
 800977c:	5c a0 00 05 	bne r5,r0,8009790 <_POSIX_Threads_Sporadic_budget_callout+0x44><== NEVER TAKEN
    /*                                                                
     *  Make sure we are actually lowering it. If they have lowered it
     *  to logically lower than sched_ss_low_priority, then we do not want to
     *  change it.                                                    
     */                                                               
    if ( the_thread->current_priority < new_priority ) {              
 8009780:	28 23 00 14 	lw r3,(r1+20)                                  
 8009784:	50 62 00 03 	bgeu r3,r2,8009790 <_POSIX_Threads_Sporadic_budget_callout+0x44><== NEVER TAKEN
      _Thread_Change_priority( the_thread, new_priority, true );      
 8009788:	34 03 00 01 	mvi r3,1                                       
 800978c:	fb ff ef 85 	calli 80055a0 <_Thread_Change_priority>        
      #if 0                                                           
        printk( "lower priority\n" );                                 
      #endif                                                          
    }                                                                 
  }                                                                   
}                                                                     
 8009790:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009794:	37 9c 00 04 	addi sp,sp,4                                   
 8009798:	c3 a0 00 00 	ret                                            
                                                                      

0800c1b0 <_POSIX_Threads_cancel_run>: #include <rtems/posix/threadsup.h> void _POSIX_Threads_cancel_run( Thread_Control *the_thread ) {
 800c1b0:	37 9c ff ec 	addi sp,sp,-20                                 
 800c1b4:	5b 8b 00 14 	sw (sp+20),r11                                 
 800c1b8:	5b 8c 00 10 	sw (sp+16),r12                                 
 800c1bc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800c1c0:	5b 8e 00 08 	sw (sp+8),r14                                  
 800c1c4:	5b 9d 00 04 	sw (sp+4),ra                                   
  POSIX_Cancel_Handler_control      *handler;                         
  Chain_Control                     *handler_stack;                   
  POSIX_API_Control                 *thread_support;                  
  ISR_Level                          level;                           
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
 800c1c8:	28 2c 01 20 	lw r12,(r1+288)                                
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
 800c1cc:	34 01 00 01 	mvi r1,1                                       
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
 800c1d0:	29 82 00 e4 	lw r2,(r12+228)                                
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
 800c1d4:	59 81 00 d8 	sw (r12+216),r1                                
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800c1d8:	35 8d 00 e8 	addi r13,r12,232                               
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
 800c1dc:	44 4d 00 12 	be r2,r13,800c224 <_POSIX_Threads_cancel_run+0x74>
    _ISR_Disable( level );                                            
 800c1e0:	34 0e ff fe 	mvi r14,-2                                     
 800c1e4:	90 00 08 00 	rcsr r1,IE                                     
 800c1e8:	a0 2e 10 00 	and r2,r1,r14                                  
 800c1ec:	d0 02 00 00 	wcsr IE,r2                                     
      handler = (POSIX_Cancel_Handler_control *)                      
 800c1f0:	29 8b 00 ec 	lw r11,(r12+236)                               
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800c1f4:	29 63 00 00 	lw r3,(r11+0)                                  
  previous       = the_node->previous;                                
 800c1f8:	29 62 00 04 	lw r2,(r11+4)                                  
  next->previous = previous;                                          
 800c1fc:	58 62 00 04 	sw (r3+4),r2                                   
  previous->next = next;                                              
 800c200:	58 43 00 00 	sw (r2+0),r3                                   
           _Chain_Tail( handler_stack )->previous;                    
      _Chain_Extract_unprotected( &handler->Node );                   
    _ISR_Enable( level );                                             
 800c204:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
    (*handler->routine)( handler->arg );                              
 800c208:	29 62 00 08 	lw r2,(r11+8)                                  
 800c20c:	29 61 00 0c 	lw r1,(r11+12)                                 
 800c210:	d8 40 00 00 	call r2                                        
                                                                      
    _Workspace_Free( handler );                                       
 800c214:	b9 60 08 00 	mv r1,r11                                      
 800c218:	fb ff eb a8 	calli 80070b8 <_Workspace_Free>                
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
 800c21c:	29 81 00 e4 	lw r1,(r12+228)                                
 800c220:	5c 2d ff f1 	bne r1,r13,800c1e4 <_POSIX_Threads_cancel_run+0x34><== NEVER TAKEN
                                                                      
    (*handler->routine)( handler->arg );                              
                                                                      
    _Workspace_Free( handler );                                       
  }                                                                   
}                                                                     
 800c224:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c228:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800c22c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800c230:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800c234:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800c238:	37 9c 00 14 	addi sp,sp,20                                  
 800c23c:	c3 a0 00 00 	ret                                            
                                                                      

080034f8 <_POSIX_Timer_TSR>: * This is the operation that is run when a timer expires */ void _POSIX_Timer_TSR( Objects_Id timer __attribute__((unused)), void *data) {
 80034f8:	37 9c ff f8 	addi sp,sp,-8                                  
 80034fc:	5b 8b 00 08 	sw (sp+8),r11                                  
 8003500:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003504:	b8 40 58 00 	mv r11,r2                                      
  bool                 activated;                                     
                                                                      
  ptimer = (POSIX_Timer_Control *)data;                               
                                                                      
  /* Increment the number of expirations. */                          
  ptimer->overrun = ptimer->overrun + 1;                              
 8003508:	28 42 00 68 	lw r2,(r2+104)                                 
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
 800350c:	29 61 00 54 	lw r1,(r11+84)                                 
  bool                 activated;                                     
                                                                      
  ptimer = (POSIX_Timer_Control *)data;                               
                                                                      
  /* Increment the number of expirations. */                          
  ptimer->overrun = ptimer->overrun + 1;                              
 8003510:	34 42 00 01 	addi r2,r2,1                                   
 8003514:	59 62 00 68 	sw (r11+104),r2                                
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
 8003518:	5c 20 00 0d 	bne r1,r0,800354c <_POSIX_Timer_TSR+0x54>      
 800351c:	29 62 00 58 	lw r2,(r11+88)                                 
 8003520:	5c 41 00 0b 	bne r2,r1,800354c <_POSIX_Timer_TSR+0x54>      <== ALWAYS TAKEN
                                                                      
    /* The state really did not change but just to be safe */         
    ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                     
  } else {                                                            
   /* Indicates that the timer is stopped */                          
   ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;                     
 8003524:	34 01 00 04 	mvi r1,4                                       <== NOT EXECUTED
 8003528:	31 61 00 3c 	sb (r11+60),r1                                 <== NOT EXECUTED
  /*                                                                  
   * The sending of the signal to the process running the handling function
   * specified for that signal is simulated                           
   */                                                                 
                                                                      
  if ( pthread_kill ( ptimer->thread_id, ptimer->inf.sigev_signo ) ) {
 800352c:	29 61 00 38 	lw r1,(r11+56)                                 
 8003530:	29 62 00 44 	lw r2,(r11+68)                                 
 8003534:	f8 00 1a 32 	calli 8009dfc <pthread_kill>                   
  }                                                                   
                                                                      
  /* After the signal handler returns, the count of expirations of the
   * timer must be set to 0.                                          
   */                                                                 
  ptimer->overrun = 0;                                                
 8003538:	59 60 00 68 	sw (r11+104),r0                                
}                                                                     
 800353c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003540:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003544:	37 9c 00 08 	addi sp,sp,8                                   
 8003548:	c3 a0 00 00 	ret                                            
  ptimer->overrun = ptimer->overrun + 1;                              
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
       ( ptimer->timer_data.it_interval.tv_nsec != 0 ) ) {            
    activated = _POSIX_Timer_Insert_helper(                           
 800354c:	29 62 00 64 	lw r2,(r11+100)                                
 8003550:	29 63 00 08 	lw r3,(r11+8)                                  
 8003554:	78 04 08 00 	mvhi r4,0x800                                  
 8003558:	35 61 00 10 	addi r1,r11,16                                 
 800355c:	38 84 34 f8 	ori r4,r4,0x34f8                               
 8003560:	b9 60 28 00 	mv r5,r11                                      
 8003564:	f8 00 1b 84 	calli 800a374 <_POSIX_Timer_Insert_helper>     
      ptimer->ticks,                                                  
      ptimer->Object.id,                                              
      _POSIX_Timer_TSR,                                               
      ptimer                                                          
    );                                                                
    if ( !activated )                                                 
 8003568:	44 20 ff f5 	be r1,r0,800353c <_POSIX_Timer_TSR+0x44>       <== NEVER TAKEN
      return;                                                         
                                                                      
    /* Store the time when the timer was started again */             
    _TOD_Get( &ptimer->time );                                        
 800356c:	35 61 00 6c 	addi r1,r11,108                                
 8003570:	f8 00 04 ad 	calli 8004824 <_TOD_Get>                       
                                                                      
    /* The state really did not change but just to be safe */         
    ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                     
 8003574:	34 01 00 03 	mvi r1,3                                       
 8003578:	31 61 00 3c 	sb (r11+60),r1                                 
 800357c:	e3 ff ff ec 	bi 800352c <_POSIX_Timer_TSR+0x34>             
                                                                      

0800c318 <_POSIX_signals_Check_signal>: bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) {
 800c318:	37 9c ff a0 	addi sp,sp,-96                                 
 800c31c:	5b 8b 00 2c 	sw (sp+44),r11                                 
 800c320:	5b 8c 00 28 	sw (sp+40),r12                                 
 800c324:	5b 8d 00 24 	sw (sp+36),r13                                 
 800c328:	5b 8e 00 20 	sw (sp+32),r14                                 
 800c32c:	5b 8f 00 1c 	sw (sp+28),r15                                 
 800c330:	5b 90 00 18 	sw (sp+24),r16                                 
 800c334:	5b 91 00 14 	sw (sp+20),r17                                 
 800c338:	5b 92 00 10 	sw (sp+16),r18                                 
 800c33c:	5b 93 00 0c 	sw (sp+12),r19                                 
 800c340:	5b 94 00 08 	sw (sp+8),r20                                  
 800c344:	5b 9d 00 04 	sw (sp+4),ra                                   
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
 800c348:	37 8e 00 58 	addi r14,sp,88                                 
bool    _POSIX_signals_Check_signal(                                  
  POSIX_API_Control  *api,                                            
  int                 signo,                                          
  bool                is_global                                       
)                                                                     
{                                                                     
 800c34c:	20 64 00 ff 	andi r4,r3,0xff                                
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
 800c350:	34 05 00 01 	mvi r5,1                                       
 800c354:	b9 c0 18 00 	mv r3,r14                                      
bool    _POSIX_signals_Check_signal(                                  
  POSIX_API_Control  *api,                                            
  int                 signo,                                          
  bool                is_global                                       
)                                                                     
{                                                                     
 800c358:	b8 20 68 00 	mv r13,r1                                      
 800c35c:	b8 40 58 00 	mv r11,r2                                      
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
 800c360:	f8 00 00 57 	calli 800c4bc <_POSIX_signals_Clear_signals>   
                                       is_global, true ) )            
    return false;                                                     
 800c364:	34 06 00 00 	mvi r6,0                                       
{                                                                     
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
 800c368:	44 20 00 42 	be r1,r0,800c470 <_POSIX_signals_Check_signal+0x158>
  #endif                                                              
                                                                      
  /*                                                                  
   *  Just to prevent sending a signal which is currently being ignored.
   */                                                                 
  if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN )        
 800c36c:	b5 6b 20 00 	add r4,r11,r11                                 
 800c370:	b4 8b 20 00 	add r4,r4,r11                                  
 800c374:	78 05 08 01 	mvhi r5,0x801                                  
 800c378:	b4 84 20 00 	add r4,r4,r4                                   
 800c37c:	38 a5 4e 00 	ori r5,r5,0x4e00                               
 800c380:	b4 84 20 00 	add r4,r4,r4                                   
 800c384:	b4 a4 28 00 	add r5,r5,r4                                   
 800c388:	28 a7 00 08 	lw r7,(r5+8)                                   
 800c38c:	34 01 00 01 	mvi r1,1                                       
 800c390:	44 e1 00 38 	be r7,r1,800c470 <_POSIX_signals_Check_signal+0x158><== NEVER TAKEN
  /*                                                                  
   *  We have to save the blocking information of the current wait queue
   *  because the signal handler may subsequently go on and put the thread
   *  on a wait queue, for its own purposes.                          
   */                                                                 
  memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,  
 800c394:	78 0c 08 01 	mvhi r12,0x801                                 
 800c398:	39 8c 4d b4 	ori r12,r12,0x4db4                             
 800c39c:	29 84 00 0c 	lw r4,(r12+12)                                 
    return false;                                                     
                                                                      
  /*                                                                  
   *  Block the signals requested in sa_mask                          
   */                                                                 
  saved_signals_blocked = api->signals_blocked;                       
 800c3a0:	29 af 00 d0 	lw r15,(r13+208)                               
  api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;    
 800c3a4:	28 a1 00 04 	lw r1,(r5+4)                                   
  /*                                                                  
   *  We have to save the blocking information of the current wait queue
   *  because the signal handler may subsequently go on and put the thread
   *  on a wait queue, for its own purposes.                          
   */                                                                 
  memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,  
 800c3a8:	28 94 00 20 	lw r20,(r4+32)                                 
 800c3ac:	28 93 00 24 	lw r19,(r4+36)                                 
 800c3b0:	28 92 00 28 	lw r18,(r4+40)                                 
 800c3b4:	28 91 00 2c 	lw r17,(r4+44)                                 
 800c3b8:	28 90 00 30 	lw r16,(r4+48)                                 
 800c3bc:	28 8a 00 34 	lw r10,(r4+52)                                 
 800c3c0:	28 89 00 38 	lw r9,(r4+56)                                  
 800c3c4:	28 88 00 3c 	lw r8,(r4+60)                                  
 800c3c8:	28 86 00 40 	lw r6,(r4+64)                                  
 800c3cc:	28 83 00 44 	lw r3,(r4+68)                                  
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
 800c3d0:	28 a2 00 00 	lw r2,(r5+0)                                   
                                                                      
  /*                                                                  
   *  Block the signals requested in sa_mask                          
   */                                                                 
  saved_signals_blocked = api->signals_blocked;                       
  api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;    
 800c3d4:	b8 2f 08 00 	or r1,r1,r15                                   
 800c3d8:	59 a1 00 d0 	sw (r13+208),r1                                
  /*                                                                  
   *  We have to save the blocking information of the current wait queue
   *  because the signal handler may subsequently go on and put the thread
   *  on a wait queue, for its own purposes.                          
   */                                                                 
  memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,  
 800c3dc:	5b 94 00 30 	sw (sp+48),r20                                 
 800c3e0:	5b 93 00 34 	sw (sp+52),r19                                 
 800c3e4:	5b 92 00 38 	sw (sp+56),r18                                 
 800c3e8:	5b 91 00 3c 	sw (sp+60),r17                                 
 800c3ec:	5b 90 00 40 	sw (sp+64),r16                                 
 800c3f0:	5b 8a 00 44 	sw (sp+68),r10                                 
 800c3f4:	5b 89 00 48 	sw (sp+72),r9                                  
 800c3f8:	5b 88 00 4c 	sw (sp+76),r8                                  
 800c3fc:	5b 86 00 50 	sw (sp+80),r6                                  
 800c400:	5b 83 00 54 	sw (sp+84),r3                                  
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
 800c404:	34 01 00 02 	mvi r1,2                                       
 800c408:	44 41 00 28 	be r2,r1,800c4a8 <_POSIX_signals_Check_signal+0x190>
        &siginfo_struct,                                              
        NULL        /* context is undefined per 1003.1b-1993, p. 66 */
      );                                                              
      break;                                                          
    default:                                                          
      (*_POSIX_signals_Vectors[ signo ].sa_handler)( signo );         
 800c40c:	b9 60 08 00 	mv r1,r11                                      
 800c410:	d8 e0 00 00 	call r7                                        
  }                                                                   
                                                                      
  /*                                                                  
   *  Restore the blocking information                                
   */                                                                 
  memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,  
 800c414:	29 82 00 0c 	lw r2,(r12+12)                                 
 800c418:	2b 81 00 30 	lw r1,(sp+48)                                  
  /*                                                                  
   *  Restore the previous set of blocked signals                     
   */                                                                 
  api->signals_blocked = saved_signals_blocked;                       
                                                                      
  return true;                                                        
 800c41c:	34 06 00 01 	mvi r6,1                                       
  }                                                                   
                                                                      
  /*                                                                  
   *  Restore the blocking information                                
   */                                                                 
  memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,  
 800c420:	58 41 00 20 	sw (r2+32),r1                                  
 800c424:	2b 81 00 34 	lw r1,(sp+52)                                  
 800c428:	58 41 00 24 	sw (r2+36),r1                                  
 800c42c:	2b 81 00 38 	lw r1,(sp+56)                                  
 800c430:	58 41 00 28 	sw (r2+40),r1                                  
 800c434:	2b 81 00 3c 	lw r1,(sp+60)                                  
 800c438:	58 41 00 2c 	sw (r2+44),r1                                  
 800c43c:	2b 81 00 40 	lw r1,(sp+64)                                  
 800c440:	58 41 00 30 	sw (r2+48),r1                                  
 800c444:	2b 81 00 44 	lw r1,(sp+68)                                  
 800c448:	58 41 00 34 	sw (r2+52),r1                                  
 800c44c:	2b 81 00 48 	lw r1,(sp+72)                                  
 800c450:	58 41 00 38 	sw (r2+56),r1                                  
 800c454:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800c458:	58 41 00 3c 	sw (r2+60),r1                                  
 800c45c:	2b 81 00 50 	lw r1,(sp+80)                                  
 800c460:	58 41 00 40 	sw (r2+64),r1                                  
 800c464:	2b 81 00 54 	lw r1,(sp+84)                                  
 800c468:	58 41 00 44 	sw (r2+68),r1                                  
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Restore the previous set of blocked signals                     
   */                                                                 
  api->signals_blocked = saved_signals_blocked;                       
 800c46c:	59 af 00 d0 	sw (r13+208),r15                               
                                                                      
  return true;                                                        
}                                                                     
 800c470:	b8 c0 08 00 	mv r1,r6                                       
 800c474:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c478:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 800c47c:	2b 8c 00 28 	lw r12,(sp+40)                                 
 800c480:	2b 8d 00 24 	lw r13,(sp+36)                                 
 800c484:	2b 8e 00 20 	lw r14,(sp+32)                                 
 800c488:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 800c48c:	2b 90 00 18 	lw r16,(sp+24)                                 
 800c490:	2b 91 00 14 	lw r17,(sp+20)                                 
 800c494:	2b 92 00 10 	lw r18,(sp+16)                                 
 800c498:	2b 93 00 0c 	lw r19,(sp+12)                                 
 800c49c:	2b 94 00 08 	lw r20,(sp+8)                                  
 800c4a0:	37 9c 00 60 	addi sp,sp,96                                  
 800c4a4:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
    case SA_SIGINFO:                                                  
      (*_POSIX_signals_Vectors[ signo ].sa_sigaction)(                
 800c4a8:	b9 60 08 00 	mv r1,r11                                      
 800c4ac:	b9 c0 10 00 	mv r2,r14                                      
 800c4b0:	34 03 00 00 	mvi r3,0                                       
 800c4b4:	d8 e0 00 00 	call r7                                        
        signo,                                                        
        &siginfo_struct,                                              
        NULL        /* context is undefined per 1003.1b-1993, p. 66 */
      );                                                              
      break;                                                          
 800c4b8:	e3 ff ff d7 	bi 800c414 <_POSIX_signals_Check_signal+0xfc>  
                                                                      

0800cc94 <_POSIX_signals_Clear_process_signals>: */ void _POSIX_signals_Clear_process_signals( int signo ) {
 800cc94:	37 9c ff f4 	addi sp,sp,-12                                 
 800cc98:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800cc9c:	5b 8c 00 08 	sw (sp+8),r12                                  
 800cca0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800cca4:	b8 20 10 00 	mv r2,r1                                       
  clear_signal = true;                                                
  mask         = signo_to_mask( signo );                              
                                                                      
  ISR_Level  level;                                                   
                                                                      
  _ISR_Disable( level );                                              
 800cca8:	90 00 60 00 	rcsr r12,IE                                    
 800ccac:	34 01 ff fe 	mvi r1,-2                                      
 800ccb0:	a1 81 08 00 	and r1,r12,r1                                  
 800ccb4:	d0 01 00 00 	wcsr IE,r1                                     
    if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {   
 800ccb8:	b4 42 20 00 	add r4,r2,r2                                   
 800ccbc:	b4 82 20 00 	add r4,r4,r2                                   
 800ccc0:	78 01 08 01 	mvhi r1,0x801                                  
 800ccc4:	b4 84 18 00 	add r3,r4,r4                                   
 800ccc8:	38 21 4e 00 	ori r1,r1,0x4e00                               
 800cccc:	b4 63 18 00 	add r3,r3,r3                                   
 800ccd0:	b4 23 18 00 	add r3,r1,r3                                   
 800ccd4:	28 63 00 00 	lw r3,(r3+0)                                   
 800ccd8:	34 01 00 02 	mvi r1,2                                       
 800ccdc:	44 61 00 10 	be r3,r1,800cd1c <_POSIX_signals_Clear_process_signals+0x88>
 800cce0:	34 42 ff ff 	addi r2,r2,-1                                  
      if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )     
       clear_signal = false;                                          
    }                                                                 
    if ( clear_signal ) {                                             
      _POSIX_signals_Pending &= ~mask;                                
 800cce4:	78 0b 08 01 	mvhi r11,0x801                                 
 800cce8:	34 01 00 01 	mvi r1,1                                       
 800ccec:	f8 00 15 12 	calli 8012134 <__ashlsi3>                      
 800ccf0:	39 6b 4f f4 	ori r11,r11,0x4ff4                             
 800ccf4:	29 62 00 00 	lw r2,(r11+0)                                  
 800ccf8:	a4 20 08 00 	not r1,r1                                      
 800ccfc:	a0 22 08 00 	and r1,r1,r2                                   
 800cd00:	59 61 00 00 	sw (r11+0),r1                                  
    }                                                                 
  _ISR_Enable( level );                                               
 800cd04:	d0 0c 00 00 	wcsr IE,r12                                    
}                                                                     
 800cd08:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800cd0c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800cd10:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800cd14:	37 9c 00 0c 	addi sp,sp,12                                  
 800cd18:	c3 a0 00 00 	ret                                            
 800cd1c:	78 01 08 01 	mvhi r1,0x801                                  
 800cd20:	b4 84 20 00 	add r4,r4,r4                                   
 800cd24:	38 21 4f f8 	ori r1,r1,0x4ff8                               
 800cd28:	b4 84 20 00 	add r4,r4,r4                                   
 800cd2c:	b4 24 20 00 	add r4,r1,r4                                   
                                                                      
  ISR_Level  level;                                                   
                                                                      
  _ISR_Disable( level );                                              
    if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {   
      if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )     
 800cd30:	28 81 00 00 	lw r1,(r4+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800cd34:	34 84 00 04 	addi r4,r4,4                                   
 800cd38:	44 24 ff ea 	be r1,r4,800cce0 <_POSIX_signals_Clear_process_signals+0x4c><== ALWAYS TAKEN
       clear_signal = false;                                          
    }                                                                 
    if ( clear_signal ) {                                             
      _POSIX_signals_Pending &= ~mask;                                
    }                                                                 
  _ISR_Enable( level );                                               
 800cd3c:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
}                                                                     
 800cd40:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800cd44:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 800cd48:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 800cd4c:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 800cd50:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080041bc <_POSIX_signals_Get_lowest>: #include <rtems/score/isr.h> int _POSIX_signals_Get_lowest( sigset_t set ) {
 80041bc:	37 9c ff f0 	addi sp,sp,-16                                 
 80041c0:	5b 8b 00 10 	sw (sp+16),r11                                 
 80041c4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80041c8:	5b 8d 00 08 	sw (sp+8),r13                                  
 80041cc:	5b 9d 00 04 	sw (sp+4),ra                                   
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
 80041d0:	34 0b 00 1b 	mvi r11,27                                     
#include <rtems/score/isr.h>                                          
                                                                      
int _POSIX_signals_Get_lowest(                                        
  sigset_t   set                                                      
)                                                                     
{                                                                     
 80041d4:	b8 20 60 00 	mv r12,r1                                      
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
 80041d8:	34 0d 00 20 	mvi r13,32                                     
 80041dc:	35 62 ff ff 	addi r2,r11,-1                                 
 80041e0:	34 01 00 01 	mvi r1,1                                       
 80041e4:	f8 00 68 6a 	calli 801e38c <__ashlsi3>                      
    if ( set & signo_to_mask( signo ) ) {                             
 80041e8:	a0 2c 08 00 	and r1,r1,r12                                  
 80041ec:	5c 20 00 0d 	bne r1,r0,8004220 <_POSIX_signals_Get_lowest+0x64><== NEVER TAKEN
  sigset_t   set                                                      
)                                                                     
{                                                                     
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
 80041f0:	35 6b 00 01 	addi r11,r11,1                                 
 80041f4:	5d 6d ff fa 	bne r11,r13,80041dc <_POSIX_signals_Get_lowest+0x20>
 80041f8:	34 0b 00 01 	mvi r11,1                                      
   */                                                                 
                                                                      
  #if (SIGHUP != 1)                                                   
    #error "Assumption that SIGHUP==1 violated!!"                     
  #endif                                                              
  for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {        
 80041fc:	34 0d 00 1b 	mvi r13,27                                     
 8004200:	e0 00 00 03 	bi 800420c <_POSIX_signals_Get_lowest+0x50>    
 8004204:	35 6b 00 01 	addi r11,r11,1                                 
 8004208:	45 6d 00 06 	be r11,r13,8004220 <_POSIX_signals_Get_lowest+0x64><== NEVER TAKEN
 800420c:	35 62 ff ff 	addi r2,r11,-1                                 
 8004210:	34 01 00 01 	mvi r1,1                                       
 8004214:	f8 00 68 5e 	calli 801e38c <__ashlsi3>                      
    if ( set & signo_to_mask( signo ) ) {                             
 8004218:	a0 2c 10 00 	and r2,r1,r12                                  
 800421c:	44 40 ff fa 	be r2,r0,8004204 <_POSIX_signals_Get_lowest+0x48>
   *  a return 0.  This routine will NOT be called unless a signal    
   *  is pending in the set passed in.                                
   */                                                                 
found_it:                                                             
  return signo;                                                       
}                                                                     
 8004220:	b9 60 08 00 	mv r1,r11                                      
 8004224:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004228:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800422c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004230:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004234:	37 9c 00 10 	addi sp,sp,16                                  
 8004238:	c3 a0 00 00 	ret                                            
                                                                      

08026d7c <_POSIX_signals_Unblock_thread>: bool _POSIX_signals_Unblock_thread( Thread_Control *the_thread, int signo, siginfo_t *info ) {
 8026d7c:	37 9c ff ec 	addi sp,sp,-20                                 
 8026d80:	5b 8b 00 14 	sw (sp+20),r11                                 
 8026d84:	5b 8c 00 10 	sw (sp+16),r12                                 
 8026d88:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8026d8c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8026d90:	5b 9d 00 04 	sw (sp+4),ra                                   
 8026d94:	b8 20 58 00 	mv r11,r1                                      
 8026d98:	b8 40 70 00 	mv r14,r2                                      
 8026d9c:	34 01 00 01 	mvi r1,1                                       
 8026da0:	34 42 ff ff 	addi r2,r2,-1                                  
 8026da4:	b8 60 68 00 	mv r13,r3                                      
 8026da8:	fb ff 6c f0 	calli 8002168 <__ashlsi3>                      
                                                                      
  /*                                                                  
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
 8026dac:	78 02 08 02 	mvhi r2,0x802                                  
 8026db0:	38 42 85 f8 	ori r2,r2,0x85f8                               
 8026db4:	29 64 00 10 	lw r4,(r11+16)                                 
 8026db8:	28 43 00 00 	lw r3,(r2+0)                                   
{                                                                     
  POSIX_API_Control  *api;                                            
  sigset_t            mask;                                           
  siginfo_t          *the_info = NULL;                                
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8026dbc:	29 65 01 20 	lw r5,(r11+288)                                
                                                                      
  /*                                                                  
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
 8026dc0:	a0 83 10 00 	and r2,r4,r3                                   
 8026dc4:	44 43 00 21 	be r2,r3,8026e48 <_POSIX_signals_Unblock_thread+0xcc>
  }                                                                   
                                                                      
  /*                                                                  
   *  Thread is not waiting due to a sigwait.                         
   */                                                                 
  if ( ~api->signals_blocked & mask ) {                               
 8026dc8:	28 a2 00 d0 	lw r2,(r5+208)                                 
    } else if ( the_thread->current_state == STATES_READY ) {         
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
 8026dcc:	34 0c 00 00 	mvi r12,0                                      
  }                                                                   
                                                                      
  /*                                                                  
   *  Thread is not waiting due to a sigwait.                         
   */                                                                 
  if ( ~api->signals_blocked & mask ) {                               
 8026dd0:	a4 40 10 00 	not r2,r2                                      
 8026dd4:	a0 22 08 00 	and r1,r1,r2                                   
 8026dd8:	44 20 00 14 	be r1,r0,8026e28 <_POSIX_signals_Unblock_thread+0xac>
 8026ddc:	78 01 10 00 	mvhi r1,0x1000                                 
 8026de0:	a0 81 08 00 	and r1,r4,r1                                   
     *      it is not blocked, THEN                                   
     *        we need to dispatch at the end of this ISR.             
     *    + Any other combination, do nothing.                        
     */                                                               
                                                                      
    if ( _States_Is_interruptible_by_signal( the_thread->current_state ) ) {
 8026de4:	44 20 00 31 	be r1,r0,8026ea8 <_POSIX_signals_Unblock_thread+0x12c>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
 8026de8:	78 03 08 02 	mvhi r3,0x802                                  
      the_thread->Wait.return_code = EINTR;                           
 8026dec:	34 01 00 04 	mvi r1,4                                       
 8026df0:	38 63 83 a0 	ori r3,r3,0x83a0                               
 8026df4:	59 61 00 34 	sw (r11+52),r1                                 
 8026df8:	28 61 00 00 	lw r1,(r3+0)                                   
 8026dfc:	a0 81 08 00 	and r1,r4,r1                                   
      /*                                                              
       *  In pthread_cond_wait, a thread will be blocking on a thread 
       *  queue, but is also interruptible by a POSIX signal.         
       */                                                             
       if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) )
 8026e00:	5c 20 00 3a 	bne r1,r0,8026ee8 <_POSIX_signals_Unblock_thread+0x16c>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_delaying (                       
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_DELAYING);                             
 8026e04:	20 84 00 08 	andi r4,r4,0x8                                 
         _Thread_queue_Extract_with_proxy( the_thread );              
       else if ( _States_Is_delaying(the_thread->current_state) ) {   
 8026e08:	44 8c 00 08 	be r4,r12,8026e28 <_POSIX_signals_Unblock_thread+0xac><== NEVER TAKEN
          (void) _Watchdog_Remove( &the_thread->Timer );              
 8026e0c:	35 61 00 48 	addi r1,r11,72                                 
 8026e10:	fb ff 9c 76 	calli 800dfe8 <_Watchdog_Remove>               
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 8026e14:	78 03 08 02 	mvhi r3,0x802                                  
 8026e18:	38 63 82 04 	ori r3,r3,0x8204                               
 8026e1c:	28 62 00 00 	lw r2,(r3+0)                                   
 8026e20:	b9 60 08 00 	mv r1,r11                                      
 8026e24:	fb ff 96 5a 	calli 800c78c <_Thread_Clear_state>            
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
}                                                                     
 8026e28:	b9 80 08 00 	mv r1,r12                                      
 8026e2c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8026e30:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8026e34:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8026e38:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8026e3c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8026e40:	37 9c 00 14 	addi sp,sp,20                                  
 8026e44:	c3 a0 00 00 	ret                                            
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
                                                                      
    if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
 8026e48:	29 62 00 30 	lw r2,(r11+48)                                 
 8026e4c:	a0 22 10 00 	and r2,r1,r2                                   
 8026e50:	44 40 00 20 	be r2,r0,8026ed0 <_POSIX_signals_Unblock_thread+0x154>
      the_thread->Wait.return_code = EINTR;                           
 8026e54:	34 01 00 04 	mvi r1,4                                       
 8026e58:	59 61 00 34 	sw (r11+52),r1                                 
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
 8026e5c:	29 61 00 28 	lw r1,(r11+40)                                 
                                                                      
      if ( !info ) {                                                  
 8026e60:	45 a0 00 25 	be r13,r0,8026ef4 <_POSIX_signals_Unblock_thread+0x178>
        the_info->si_signo = signo;                                   
        the_info->si_code = SI_USER;                                  
        the_info->si_value.sival_int = 0;                             
      } else {                                                        
        *the_info = *info;                                            
 8026e64:	29 a2 00 00 	lw r2,(r13+0)                                  
 8026e68:	58 22 00 00 	sw (r1+0),r2                                   
 8026e6c:	29 a2 00 04 	lw r2,(r13+4)                                  
 8026e70:	58 22 00 04 	sw (r1+4),r2                                   
 8026e74:	29 a2 00 08 	lw r2,(r13+8)                                  
 8026e78:	58 22 00 08 	sw (r1+8),r2                                   
      }                                                               
                                                                      
      _Thread_queue_Extract_with_proxy( the_thread );                 
 8026e7c:	b9 60 08 00 	mv r1,r11                                      
 8026e80:	fb ff 99 83 	calli 800d48c <_Thread_queue_Extract_with_proxy>
      return true;                                                    
 8026e84:	34 0c 00 01 	mvi r12,1                                      
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
}                                                                     
 8026e88:	b9 80 08 00 	mv r1,r12                                      
 8026e8c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8026e90:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8026e94:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8026e98:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8026e9c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8026ea0:	37 9c 00 14 	addi sp,sp,20                                  
 8026ea4:	c3 a0 00 00 	ret                                            
       else if ( _States_Is_delaying(the_thread->current_state) ) {   
          (void) _Watchdog_Remove( &the_thread->Timer );              
          _Thread_Unblock( the_thread );                              
       }                                                              
                                                                      
    } else if ( the_thread->current_state == STATES_READY ) {         
 8026ea8:	5c 8c ff e0 	bne r4,r12,8026e28 <_POSIX_signals_Unblock_thread+0xac><== NEVER TAKEN
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
 8026eac:	78 01 08 02 	mvhi r1,0x802                                  
 8026eb0:	38 21 af 2c 	ori r1,r1,0xaf2c                               
 8026eb4:	28 22 00 08 	lw r2,(r1+8)                                   
 8026eb8:	44 4c ff dc 	be r2,r12,8026e28 <_POSIX_signals_Unblock_thread+0xac>
 8026ebc:	28 22 00 0c 	lw r2,(r1+12)                                  
 8026ec0:	5d 62 ff da 	bne r11,r2,8026e28 <_POSIX_signals_Unblock_thread+0xac><== NEVER TAKEN
        _Thread_Dispatch_necessary = true;                            
 8026ec4:	34 02 00 01 	mvi r2,1                                       
 8026ec8:	30 22 00 18 	sb (r1+24),r2                                  
 8026ecc:	e3 ff ff d7 	bi 8026e28 <_POSIX_signals_Unblock_thread+0xac>
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
                                                                      
    if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
 8026ed0:	28 a2 00 d0 	lw r2,(r5+208)                                 
                                                                      
    /*                                                                
     *  This should only be reached via pthread_kill().               
     */                                                               
                                                                      
    return false;                                                     
 8026ed4:	34 0c 00 00 	mvi r12,0                                      
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
                                                                      
    if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
 8026ed8:	a4 40 10 00 	not r2,r2                                      
 8026edc:	a0 22 08 00 	and r1,r1,r2                                   
 8026ee0:	5c 2c ff dd 	bne r1,r12,8026e54 <_POSIX_signals_Unblock_thread+0xd8>
 8026ee4:	e3 ff ff d1 	bi 8026e28 <_POSIX_signals_Unblock_thread+0xac>
      /*                                                              
       *  In pthread_cond_wait, a thread will be blocking on a thread 
       *  queue, but is also interruptible by a POSIX signal.         
       */                                                             
       if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) )
         _Thread_queue_Extract_with_proxy( the_thread );              
 8026ee8:	b9 60 08 00 	mv r1,r11                                      
 8026eec:	fb ff 99 68 	calli 800d48c <_Thread_queue_Extract_with_proxy>
 8026ef0:	e3 ff ff ce 	bi 8026e28 <_POSIX_signals_Unblock_thread+0xac>
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
                                                                      
      if ( !info ) {                                                  
        the_info->si_signo = signo;                                   
        the_info->si_code = SI_USER;                                  
 8026ef4:	34 02 00 01 	mvi r2,1                                       
      the_thread->Wait.return_code = EINTR;                           
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
                                                                      
      if ( !info ) {                                                  
        the_info->si_signo = signo;                                   
 8026ef8:	58 2e 00 00 	sw (r1+0),r14                                  
        the_info->si_code = SI_USER;                                  
 8026efc:	58 22 00 04 	sw (r1+4),r2                                   
        the_info->si_value.sival_int = 0;                             
 8026f00:	58 20 00 08 	sw (r1+8),r0                                   
 8026f04:	e3 ff ff de 	bi 8026e7c <_POSIX_signals_Unblock_thread+0x100>
                                                                      

080031c0 <_RTEMS_tasks_Initialize_user_tasks_body>: * * Output parameters: NONE */ void _RTEMS_tasks_Initialize_user_tasks_body( void ) {
 80031c0:	37 9c ff e8 	addi sp,sp,-24                                 
 80031c4:	5b 8b 00 14 	sw (sp+20),r11                                 
 80031c8:	5b 8c 00 10 	sw (sp+16),r12                                 
 80031cc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80031d0:	5b 8e 00 08 	sw (sp+8),r14                                  
 80031d4:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_initialization_tasks_table *user_tasks;                       
                                                                      
  /*                                                                  
   *  Move information into local variables                           
   */                                                                 
  user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table;
 80031d8:	78 01 08 01 	mvhi r1,0x801                                  
 80031dc:	38 21 40 bc 	ori r1,r1,0x40bc                               
 80031e0:	28 2b 00 2c 	lw r11,(r1+44)                                 
  maximum    = Configuration_RTEMS_API.number_of_initialization_tasks;
 80031e4:	28 2e 00 28 	lw r14,(r1+40)                                 
                                                                      
  /*                                                                  
   *  Verify that we have a set of user tasks to iterate              
   */                                                                 
  if ( !user_tasks )                                                  
 80031e8:	45 60 00 15 	be r11,r0,800323c <_RTEMS_tasks_Initialize_user_tasks_body+0x7c>
    return;                                                           
                                                                      
  /*                                                                  
   *  Now iterate over the initialization tasks and create/start them.
   */                                                                 
  for ( index=0 ; index < maximum ; index++ ) {                       
 80031ec:	45 c0 00 14 	be r14,r0,800323c <_RTEMS_tasks_Initialize_user_tasks_body+0x7c><== NEVER TAKEN
 80031f0:	34 0c 00 00 	mvi r12,0                                      
    return_value = rtems_task_create(                                 
 80031f4:	29 61 00 00 	lw r1,(r11+0)                                  
 80031f8:	29 62 00 08 	lw r2,(r11+8)                                  
 80031fc:	29 63 00 04 	lw r3,(r11+4)                                  
 8003200:	29 64 00 14 	lw r4,(r11+20)                                 
 8003204:	29 65 00 0c 	lw r5,(r11+12)                                 
 8003208:	37 86 00 18 	addi r6,sp,24                                  
 800320c:	fb ff ff 52 	calli 8002f54 <rtems_task_create>              
 8003210:	b8 20 68 00 	mv r13,r1                                      
      user_tasks[ index ].stack_size,                                 
      user_tasks[ index ].mode_set,                                   
      user_tasks[ index ].attribute_set,                              
      &id                                                             
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
 8003214:	5c 20 00 11 	bne r1,r0,8003258 <_RTEMS_tasks_Initialize_user_tasks_body+0x98><== NEVER TAKEN
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
                                                                      
    return_value = rtems_task_start(                                  
 8003218:	29 63 00 18 	lw r3,(r11+24)                                 
 800321c:	2b 81 00 18 	lw r1,(sp+24)                                  
 8003220:	29 62 00 10 	lw r2,(r11+16)                                 
 8003224:	f8 00 00 14 	calli 8003274 <rtems_task_start>               
 8003228:	b8 20 18 00 	mv r3,r1                                       
      id,                                                             
      user_tasks[ index ].entry_point,                                
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
 800322c:	5c 2d 00 0f 	bne r1,r13,8003268 <_RTEMS_tasks_Initialize_user_tasks_body+0xa8><== NEVER TAKEN
    return;                                                           
                                                                      
  /*                                                                  
   *  Now iterate over the initialization tasks and create/start them.
   */                                                                 
  for ( index=0 ; index < maximum ; index++ ) {                       
 8003230:	35 8c 00 01 	addi r12,r12,1                                 
 8003234:	35 6b 00 1c 	addi r11,r11,28                                
 8003238:	55 cc ff ef 	bgu r14,r12,80031f4 <_RTEMS_tasks_Initialize_user_tasks_body+0x34><== NEVER TAKEN
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
  }                                                                   
}                                                                     
 800323c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003240:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8003244:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8003248:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800324c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8003250:	37 9c 00 18 	addi sp,sp,24                                  
 8003254:	c3 a0 00 00 	ret                                            
      user_tasks[ index ].mode_set,                                   
      user_tasks[ index ].attribute_set,                              
      &id                                                             
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
 8003258:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 800325c:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8003260:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
 8003264:	f8 00 04 70 	calli 8004424 <_Internal_error_Occurred>       <== NOT EXECUTED
      id,                                                             
      user_tasks[ index ].entry_point,                                
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
 8003268:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 800326c:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8003270:	f8 00 04 6d 	calli 8004424 <_Internal_error_Occurred>       <== NOT EXECUTED
                                                                      

08009bb0 <_RTEMS_tasks_Switch_extension>: /* * Per Task Variables */ tvp = executing->task_variables;
 8009bb0:	28 21 01 28 	lw r1,(r1+296)                                 
  while (tvp) {                                                       
 8009bb4:	44 20 00 08 	be r1,r0,8009bd4 <_RTEMS_tasks_Switch_extension+0x24>
    tvp->tval = *tvp->ptr;                                            
 8009bb8:	28 23 00 04 	lw r3,(r1+4)                                   
    *tvp->ptr = tvp->gval;                                            
 8009bbc:	28 24 00 08 	lw r4,(r1+8)                                   
   *  Per Task Variables                                              
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
    tvp->tval = *tvp->ptr;                                            
 8009bc0:	28 65 00 00 	lw r5,(r3+0)                                   
 8009bc4:	58 25 00 0c 	sw (r1+12),r5                                  
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
 8009bc8:	28 21 00 00 	lw r1,(r1+0)                                   
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
    tvp->tval = *tvp->ptr;                                            
    *tvp->ptr = tvp->gval;                                            
 8009bcc:	58 64 00 00 	sw (r3+0),r4                                   
  /*                                                                  
   *  Per Task Variables                                              
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
 8009bd0:	5c 20 ff fa 	bne r1,r0,8009bb8 <_RTEMS_tasks_Switch_extension+0x8><== NEVER TAKEN
    tvp->tval = *tvp->ptr;                                            
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
 8009bd4:	28 41 01 28 	lw r1,(r2+296)                                 
  while (tvp) {                                                       
 8009bd8:	44 20 00 08 	be r1,r0,8009bf8 <_RTEMS_tasks_Switch_extension+0x48>
    tvp->gval = *tvp->ptr;                                            
 8009bdc:	28 22 00 04 	lw r2,(r1+4)                                   
    *tvp->ptr = tvp->tval;                                            
 8009be0:	28 23 00 0c 	lw r3,(r1+12)                                  
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
    tvp->gval = *tvp->ptr;                                            
 8009be4:	28 44 00 00 	lw r4,(r2+0)                                   
 8009be8:	58 24 00 08 	sw (r1+8),r4                                   
    *tvp->ptr = tvp->tval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
 8009bec:	28 21 00 00 	lw r1,(r1+0)                                   
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
    tvp->gval = *tvp->ptr;                                            
    *tvp->ptr = tvp->tval;                                            
 8009bf0:	58 43 00 00 	sw (r2+0),r3                                   
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
 8009bf4:	5c 20 ff fa 	bne r1,r0,8009bdc <_RTEMS_tasks_Switch_extension+0x2c><== NEVER TAKEN
 8009bf8:	c3 a0 00 00 	ret                                            
                                                                      

080048a8 <_Rate_monotonic_Timeout>: void _Rate_monotonic_Timeout( Objects_Id id, void *ignored ) {
 80048a8:	37 9c ff f4 	addi sp,sp,-12                                 
 80048ac:	5b 8b 00 08 	sw (sp+8),r11                                  
 80048b0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80048b4:	b8 20 10 00 	mv r2,r1                                       
 80048b8:	78 01 08 02 	mvhi r1,0x802                                  
 80048bc:	38 21 19 00 	ori r1,r1,0x1900                               
 80048c0:	37 83 00 0c 	addi r3,sp,12                                  
 80048c4:	f8 00 09 2b 	calli 8006d70 <_Objects_Get>                   
  /*                                                                  
   *  When we get here, the Timer is already off the chain so we do not
   *  have to worry about that -- hence no _Watchdog_Remove().        
   */                                                                 
  the_period = _Rate_monotonic_Get( id, &location );                  
  switch ( location ) {                                               
 80048c8:	2b 82 00 0c 	lw r2,(sp+12)                                  
 80048cc:	b8 20 58 00 	mv r11,r1                                      
 80048d0:	44 40 00 05 	be r2,r0,80048e4 <_Rate_monotonic_Timeout+0x3c><== ALWAYS TAKEN
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 80048d4:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80048d8:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 80048dc:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 80048e0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
   */                                                                 
  the_period = _Rate_monotonic_Get( id, &location );                  
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      the_thread = the_period->owner;                                 
 80048e4:	28 21 00 40 	lw r1,(r1+64)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period (             
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_FOR_PERIOD);                   
 80048e8:	28 23 00 10 	lw r3,(r1+16)                                  
 80048ec:	20 63 40 00 	andi r3,r3,0x4000                              
      if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
 80048f0:	44 62 00 04 	be r3,r2,8004900 <_Rate_monotonic_Timeout+0x58>
 80048f4:	28 23 00 20 	lw r3,(r1+32)                                  
 80048f8:	29 62 00 08 	lw r2,(r11+8)                                  
 80048fc:	44 62 00 1a 	be r3,r2,8004964 <_Rate_monotonic_Timeout+0xbc>
        _Thread_Unblock( the_thread );                                
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
 8004900:	29 62 00 38 	lw r2,(r11+56)                                 
 8004904:	34 01 00 01 	mvi r1,1                                       
 8004908:	44 41 00 0c 	be r2,r1,8004938 <_Rate_monotonic_Timeout+0x90><== NEVER TAKEN
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else                                                          
        the_period->state = RATE_MONOTONIC_EXPIRED;                   
 800490c:	34 01 00 04 	mvi r1,4                                       
 8004910:	59 61 00 38 	sw (r11+56),r1                                 
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
 8004914:	78 01 08 02 	mvhi r1,0x802                                  
 8004918:	38 21 1a 28 	ori r1,r1,0x1a28                               
 800491c:	28 22 00 00 	lw r2,(r1+0)                                   
 8004920:	34 42 ff ff 	addi r2,r2,-1                                  
 8004924:	58 22 00 00 	sw (r1+0),r2                                   
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 8004928:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800492c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004930:	37 9c 00 0c 	addi sp,sp,12                                  
 8004934:	c3 a0 00 00 	ret                                            
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
        the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING;    
 8004938:	34 02 00 03 	mvi r2,3                                       <== NOT EXECUTED
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
 800493c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
        the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING;    
 8004940:	59 62 00 38 	sw (r11+56),r2                                 <== NOT EXECUTED
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
 8004944:	fb ff fe 00 	calli 8004144 <_Rate_monotonic_Initiate_statistics>
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8004948:	29 62 00 3c 	lw r2,(r11+60)                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800494c:	78 01 08 02 	mvhi r1,0x802                                  
 8004950:	38 21 1a e8 	ori r1,r1,0x1ae8                               
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8004954:	59 62 00 1c 	sw (r11+28),r2                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8004958:	35 62 00 10 	addi r2,r11,16                                 
 800495c:	f8 00 12 22 	calli 80091e4 <_Watchdog_Insert>               
 8004960:	e3 ff ff ed 	bi 8004914 <_Rate_monotonic_Timeout+0x6c>      
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 8004964:	78 03 08 01 	mvhi r3,0x801                                  
 8004968:	38 63 f5 84 	ori r3,r3,0xf584                               
 800496c:	28 62 00 00 	lw r2,(r3+0)                                   
 8004970:	f8 00 0c 03 	calli 800797c <_Thread_Clear_state>            
      the_thread = the_period->owner;                                 
      if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
            the_thread->Wait.id == the_period->Object.id ) {          
        _Thread_Unblock( the_thread );                                
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
 8004974:	b9 60 08 00 	mv r1,r11                                      
 8004978:	e3 ff ff f3 	bi 8004944 <_Rate_monotonic_Timeout+0x9c>      
                                                                      

080041f0 <_Rate_monotonic_Update_statistics>: void _Rate_monotonic_Update_statistics( Rate_monotonic_Control *the_period ) {
 80041f0:	37 9c ff e0 	addi sp,sp,-32                                 
 80041f4:	5b 8b 00 10 	sw (sp+16),r11                                 
 80041f8:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80041fc:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004200:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004204:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   *  Update the counts.                                              
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
 8004208:	28 21 00 54 	lw r1,(r1+84)                                  
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
 800420c:	29 62 00 38 	lw r2,(r11+56)                                 
                                                                      
  /*                                                                  
   *  Update the counts.                                              
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
 8004210:	34 21 00 01 	addi r1,r1,1                                   
 8004214:	59 61 00 54 	sw (r11+84),r1                                 
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
 8004218:	34 01 00 04 	mvi r1,4                                       
 800421c:	44 41 00 36 	be r2,r1,80042f4 <_Rate_monotonic_Update_statistics+0x104>
                                                                      
  /*                                                                  
   *  Grab status for time statistics.                                
   */                                                                 
  valid_status =                                                      
    _Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
 8004220:	37 8c 00 14 	addi r12,sp,20                                 
 8004224:	37 8d 00 1c 	addi r13,sp,28                                 
    stats->missed_count++;                                            
                                                                      
  /*                                                                  
   *  Grab status for time statistics.                                
   */                                                                 
  valid_status =                                                      
 8004228:	b9 60 08 00 	mv r1,r11                                      
 800422c:	b9 80 10 00 	mv r2,r12                                      
 8004230:	b9 a0 18 00 	mv r3,r13                                      
 8004234:	fb ff ff 8a 	calli 800405c <_Rate_monotonic_Get_status>     
    _Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
  if (!valid_status)                                                  
 8004238:	5c 20 00 07 	bne r1,r0,8004254 <_Rate_monotonic_Update_statistics+0x64><== ALWAYS TAKEN
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( since_last_period > stats->max_wall_time )                   
      stats->max_wall_time = since_last_period;                       
  #endif                                                              
}                                                                     
 800423c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004240:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004244:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004248:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800424c:	37 9c 00 20 	addi sp,sp,32                                  
 8004250:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  Update CPU time                                                 
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_cpu_time, &executed );           
 8004254:	b9 a0 10 00 	mv r2,r13                                      
 8004258:	35 61 00 6c 	addi r1,r11,108                                
 800425c:	f8 00 11 e4 	calli 80089ec <_Timespec_Add_to>               
                                                                      
    if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )    
 8004260:	b9 a0 08 00 	mv r1,r13                                      
 8004264:	35 62 00 5c 	addi r2,r11,92                                 
 8004268:	f8 00 12 cd 	calli 8008d9c <_Timespec_Less_than>            
 800426c:	44 20 00 05 	be r1,r0,8004280 <_Rate_monotonic_Update_statistics+0x90>
      stats->min_cpu_time = executed;                                 
 8004270:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8004274:	59 61 00 5c 	sw (r11+92),r1                                 
 8004278:	2b 81 00 20 	lw r1,(sp+32)                                  
 800427c:	59 61 00 60 	sw (r11+96),r1                                 
                                                                      
    if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) ) 
 8004280:	b9 a0 08 00 	mv r1,r13                                      
 8004284:	35 62 00 64 	addi r2,r11,100                                
 8004288:	f8 00 12 ba 	calli 8008d70 <_Timespec_Greater_than>         
 800428c:	44 20 00 05 	be r1,r0,80042a0 <_Rate_monotonic_Update_statistics+0xb0>
      stats->max_cpu_time = executed;                                 
 8004290:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8004294:	59 61 00 64 	sw (r11+100),r1                                
 8004298:	2b 81 00 20 	lw r1,(sp+32)                                  
 800429c:	59 61 00 68 	sw (r11+104),r1                                
                                                                      
  /*                                                                  
   *  Update Wall time                                                
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
 80042a0:	b9 80 10 00 	mv r2,r12                                      
 80042a4:	35 61 00 84 	addi r1,r11,132                                
 80042a8:	f8 00 11 d1 	calli 80089ec <_Timespec_Add_to>               
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
 80042ac:	b9 80 08 00 	mv r1,r12                                      
 80042b0:	35 62 00 74 	addi r2,r11,116                                
 80042b4:	f8 00 12 ba 	calli 8008d9c <_Timespec_Less_than>            
 80042b8:	5c 20 00 13 	bne r1,r0,8004304 <_Rate_monotonic_Update_statistics+0x114>
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
 80042bc:	b9 80 08 00 	mv r1,r12                                      
 80042c0:	35 62 00 7c 	addi r2,r11,124                                
 80042c4:	f8 00 12 ab 	calli 8008d70 <_Timespec_Greater_than>         
 80042c8:	44 20 ff dd 	be r1,r0,800423c <_Rate_monotonic_Update_statistics+0x4c>
      stats->max_wall_time = since_last_period;                       
 80042cc:	2b 81 00 14 	lw r1,(sp+20)                                  
 80042d0:	59 61 00 7c 	sw (r11+124),r1                                
 80042d4:	2b 81 00 18 	lw r1,(sp+24)                                  
 80042d8:	59 61 00 80 	sw (r11+128),r1                                
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( since_last_period > stats->max_wall_time )                   
      stats->max_wall_time = since_last_period;                       
  #endif                                                              
}                                                                     
 80042dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80042e0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80042e4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80042e8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80042ec:	37 9c 00 20 	addi sp,sp,32                                  
 80042f0:	c3 a0 00 00 	ret                                            
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
    stats->missed_count++;                                            
 80042f4:	29 61 00 58 	lw r1,(r11+88)                                 
 80042f8:	34 21 00 01 	addi r1,r1,1                                   
 80042fc:	59 61 00 58 	sw (r11+88),r1                                 
 8004300:	e3 ff ff c8 	bi 8004220 <_Rate_monotonic_Update_statistics+0x30>
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
      stats->min_wall_time = since_last_period;                       
 8004304:	2b 81 00 14 	lw r1,(sp+20)                                  
 8004308:	59 61 00 74 	sw (r11+116),r1                                
 800430c:	2b 81 00 18 	lw r1,(sp+24)                                  
 8004310:	59 61 00 78 	sw (r11+120),r1                                
 8004314:	e3 ff ff ea 	bi 80042bc <_Rate_monotonic_Update_statistics+0xcc>
                                                                      

08004f78 <_Scheduler_priority_Block>: ) { Scheduler_priority_Per_thread *sched_info; Chain_Control *ready; sched_info = (Scheduler_priority_Per_thread *) the_thread->scheduler_info;
 8004f78:	28 23 00 8c 	lw r3,(r1+140)                                 
  ready      = sched_info->ready_chain;                               
 8004f7c:	28 62 00 00 	lw r2,(r3+0)                                   
                                                                      
  if ( _Chain_Has_only_one_node( ready ) ) {                          
 8004f80:	28 45 00 00 	lw r5,(r2+0)                                   
 8004f84:	28 44 00 08 	lw r4,(r2+8)                                   
 8004f88:	44 a4 00 37 	be r5,r4,8005064 <_Scheduler_priority_Block+0xec>
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 8004f8c:	28 23 00 00 	lw r3,(r1+0)                                   
  previous       = the_node->previous;                                
 8004f90:	28 22 00 04 	lw r2,(r1+4)                                   
  next->previous = previous;                                          
 8004f94:	58 62 00 04 	sw (r3+4),r2                                   
  previous->next = next;                                              
 8004f98:	58 43 00 00 	sw (r2+0),r3                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_heir (                           
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Heir );                              
 8004f9c:	78 02 08 01 	mvhi r2,0x801                                  
 8004fa0:	38 42 4d b4 	ori r2,r2,0x4db4                               
{                                                                     
  _Scheduler_priority_Ready_queue_extract( the_thread );              
                                                                      
  /* TODO: flash critical section? */                                 
                                                                      
  if ( _Thread_Is_heir( the_thread ) )                                
 8004fa4:	28 43 00 10 	lw r3,(r2+16)                                  
 8004fa8:	44 23 00 07 	be r1,r3,8004fc4 <_Scheduler_priority_Block+0x4c>
     _Scheduler_priority_Schedule_body();                             
                                                                      
  if ( _Thread_Is_executing( the_thread ) )                           
 8004fac:	28 43 00 0c 	lw r3,(r2+12)                                  
 8004fb0:	44 23 00 02 	be r1,r3,8004fb8 <_Scheduler_priority_Block+0x40>
 8004fb4:	c3 a0 00 00 	ret                                            
    _Thread_Dispatch_necessary = true;                                
 8004fb8:	34 01 00 01 	mvi r1,1                                       
 8004fbc:	30 41 00 18 	sb (r2+24),r1                                  
 8004fc0:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
 8004fc4:	78 03 08 01 	mvhi r3,0x801                                  
 8004fc8:	38 63 4d d0 	ori r3,r3,0x4dd0                               
 8004fcc:	2c 64 00 00 	lhu r4,(r3+0)                                  
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
    (Chain_Control *) _Scheduler.information                          
 8004fd0:	78 03 08 01 	mvhi r3,0x801                                  
 8004fd4:	38 63 40 1c 	ori r3,r3,0x401c                               
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
 8004fd8:	28 67 00 00 	lw r7,(r3+0)                                   
 8004fdc:	20 84 ff ff 	andi r4,r4,0xffff                              
 8004fe0:	34 03 00 ff 	mvi r3,255                                     
 8004fe4:	54 83 00 3c 	bgu r4,r3,80050d4 <_Scheduler_priority_Block+0x15c>
 8004fe8:	78 05 08 01 	mvhi r5,0x801                                  
 8004fec:	38 a5 35 58 	ori r5,r5,0x3558                               
 8004ff0:	b4 a4 20 00 	add r4,r5,r4                                   
 8004ff4:	40 84 00 00 	lbu r4,(r4+0)                                  
 8004ff8:	34 84 00 08 	addi r4,r4,8                                   
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
 8004ffc:	78 06 08 01 	mvhi r6,0x801                                  
 8005000:	38 c6 4d d8 	ori r6,r6,0x4dd8                               
 8005004:	b4 84 20 00 	add r4,r4,r4                                   
 8005008:	b4 c4 30 00 	add r6,r6,r4                                   
 800500c:	2c c3 00 00 	lhu r3,(r6+0)                                  
 8005010:	34 06 00 ff 	mvi r6,255                                     
 8005014:	54 66 00 25 	bgu r3,r6,80050a8 <_Scheduler_priority_Block+0x130>
 8005018:	b4 a3 18 00 	add r3,r5,r3                                   
 800501c:	40 65 00 00 	lbu r5,(r3+0)                                  
 8005020:	34 a5 00 08 	addi r5,r5,8                                   
                                                                      
  return (_Priority_Bits_index( major ) << 4) +                       
 8005024:	b4 84 18 00 	add r3,r4,r4                                   
 8005028:	b4 63 18 00 	add r3,r3,r3                                   
 800502c:	b4 63 18 00 	add r3,r3,r3                                   
 8005030:	b4 a3 18 00 	add r3,r5,r3                                   
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 8005034:	b4 63 20 00 	add r4,r3,r3                                   
 8005038:	b4 83 18 00 	add r3,r4,r3                                   
 800503c:	b4 63 18 00 	add r3,r3,r3                                   
 8005040:	b4 63 18 00 	add r3,r3,r3                                   
 8005044:	b4 e3 18 00 	add r3,r7,r3                                   
                                                                      
}                                                                     
 8005048:	28 65 00 00 	lw r5,(r3+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800504c:	34 63 00 04 	addi r3,r3,4                                   
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
                                                                      
  return NULL;                                                        
 8005050:	34 04 00 00 	mvi r4,0                                       
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 8005054:	44 a3 00 02 	be r5,r3,800505c <_Scheduler_priority_Block+0xe4><== NEVER TAKEN
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
 8005058:	b8 a0 20 00 	mv r4,r5                                       
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
 800505c:	58 44 00 10 	sw (r2+16),r4                                  
 8005060:	e3 ff ff d3 	bi 8004fac <_Scheduler_priority_Block+0x34>    
                                                                      
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (                  
  Priority_bit_map_Information *the_priority_map                      
)                                                                     
{                                                                     
  *the_priority_map->minor &= the_priority_map->block_minor;          
 8005064:	28 64 00 04 	lw r4,(r3+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 );                        
 8005068:	34 45 00 04 	addi r5,r2,4                                   
                                                                      
  head->next = tail;                                                  
 800506c:	58 45 00 00 	sw (r2+0),r5                                   
  head->previous = NULL;                                              
 8005070:	58 40 00 04 	sw (r2+4),r0                                   
  tail->previous = head;                                              
 8005074:	58 42 00 08 	sw (r2+8),r2                                   
 8005078:	2c 65 00 0e 	lhu r5,(r3+14)                                 
 800507c:	2c 82 00 00 	lhu r2,(r4+0)                                  
 8005080:	a0 45 10 00 	and r2,r2,r5                                   
 8005084:	0c 82 00 00 	sh (r4+0),r2                                   
  if ( *the_priority_map->minor == 0 )                                
 8005088:	5c 40 ff c5 	bne r2,r0,8004f9c <_Scheduler_priority_Block+0x24>
    _Priority_Major_bit_map &= the_priority_map->block_major;         
 800508c:	78 02 08 01 	mvhi r2,0x801                                  
 8005090:	38 42 4d d0 	ori r2,r2,0x4dd0                               
 8005094:	2c 44 00 00 	lhu r4,(r2+0)                                  
 8005098:	2c 63 00 0c 	lhu r3,(r3+12)                                 
 800509c:	a0 64 18 00 	and r3,r3,r4                                   
 80050a0:	0c 43 00 00 	sh (r2+0),r3                                   
 80050a4:	e3 ff ff be 	bi 8004f9c <_Scheduler_priority_Block+0x24>    
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
 80050a8:	00 63 00 01 	srui r3,r3,1                                   
 80050ac:	00 63 00 01 	srui r3,r3,1                                   
 80050b0:	00 63 00 01 	srui r3,r3,1                                   
 80050b4:	00 63 00 01 	srui r3,r3,1                                   
 80050b8:	00 63 00 01 	srui r3,r3,1                                   
 80050bc:	00 63 00 01 	srui r3,r3,1                                   
 80050c0:	00 63 00 01 	srui r3,r3,1                                   
 80050c4:	00 63 00 01 	srui r3,r3,1                                   
 80050c8:	b4 a3 18 00 	add r3,r5,r3                                   
 80050cc:	40 65 00 00 	lbu r5,(r3+0)                                  
 80050d0:	e3 ff ff d5 	bi 8005024 <_Scheduler_priority_Block+0xac>    
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
 80050d4:	00 84 00 01 	srui r4,r4,1                                   
 80050d8:	78 05 08 01 	mvhi r5,0x801                                  
 80050dc:	00 84 00 01 	srui r4,r4,1                                   
 80050e0:	38 a5 35 58 	ori r5,r5,0x3558                               
 80050e4:	00 84 00 01 	srui r4,r4,1                                   
 80050e8:	00 84 00 01 	srui r4,r4,1                                   
 80050ec:	00 84 00 01 	srui r4,r4,1                                   
 80050f0:	00 84 00 01 	srui r4,r4,1                                   
 80050f4:	00 84 00 01 	srui r4,r4,1                                   
 80050f8:	00 84 00 01 	srui r4,r4,1                                   
 80050fc:	b4 a4 20 00 	add r4,r5,r4                                   
 8005100:	40 84 00 00 	lbu r4,(r4+0)                                  
 8005104:	e3 ff ff be 	bi 8004ffc <_Scheduler_priority_Block+0x84>    
                                                                      

080052c8 <_Scheduler_priority_Schedule>: RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void ) { Priority_bit_map_Control minor; Priority_bit_map_Control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );
 80052c8:	78 01 08 01 	mvhi r1,0x801                                  
 80052cc:	38 21 4d d0 	ori r1,r1,0x4dd0                               
 80052d0:	2c 22 00 00 	lhu r2,(r1+0)                                  
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
    (Chain_Control *) _Scheduler.information                          
 80052d4:	78 01 08 01 	mvhi r1,0x801                                  
 80052d8:	38 21 40 1c 	ori r1,r1,0x401c                               
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
 80052dc:	28 25 00 00 	lw r5,(r1+0)                                   
 80052e0:	20 42 ff ff 	andi r2,r2,0xffff                              
 80052e4:	34 01 00 ff 	mvi r1,255                                     
 80052e8:	54 41 00 2d 	bgu r2,r1,800539c <_Scheduler_priority_Schedule+0xd4>
 80052ec:	78 03 08 01 	mvhi r3,0x801                                  
 80052f0:	38 63 35 58 	ori r3,r3,0x3558                               
 80052f4:	b4 62 10 00 	add r2,r3,r2                                   
 80052f8:	40 42 00 00 	lbu r2,(r2+0)                                  
 80052fc:	34 42 00 08 	addi r2,r2,8                                   
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
 8005300:	78 04 08 01 	mvhi r4,0x801                                  
 8005304:	38 84 4d d8 	ori r4,r4,0x4dd8                               
 8005308:	b4 42 10 00 	add r2,r2,r2                                   
 800530c:	b4 82 20 00 	add r4,r4,r2                                   
 8005310:	2c 81 00 00 	lhu r1,(r4+0)                                  
 8005314:	34 04 00 ff 	mvi r4,255                                     
 8005318:	54 24 00 16 	bgu r1,r4,8005370 <_Scheduler_priority_Schedule+0xa8>
 800531c:	b4 61 08 00 	add r1,r3,r1                                   
 8005320:	40 23 00 00 	lbu r3,(r1+0)                                  
 8005324:	34 63 00 08 	addi r3,r3,8                                   
                                                                      
  return (_Priority_Bits_index( major ) << 4) +                       
 8005328:	b4 42 08 00 	add r1,r2,r2                                   
 800532c:	b4 21 08 00 	add r1,r1,r1                                   
 8005330:	b4 21 08 00 	add r1,r1,r1                                   
 8005334:	b4 61 08 00 	add r1,r3,r1                                   
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 8005338:	b4 21 10 00 	add r2,r1,r1                                   
 800533c:	b4 41 08 00 	add r1,r2,r1                                   
 8005340:	b4 21 08 00 	add r1,r1,r1                                   
 8005344:	b4 21 08 00 	add r1,r1,r1                                   
 8005348:	b4 a1 08 00 	add r1,r5,r1                                   
#include <rtems/score/schedulerpriority.h>                            
                                                                      
void _Scheduler_priority_Schedule(void)                               
{                                                                     
  _Scheduler_priority_Schedule_body();                                
}                                                                     
 800534c:	28 23 00 00 	lw r3,(r1+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8005350:	34 21 00 04 	addi r1,r1,4                                   
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
                                                                      
  return NULL;                                                        
 8005354:	34 02 00 00 	mvi r2,0                                       
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 8005358:	44 61 00 02 	be r3,r1,8005360 <_Scheduler_priority_Schedule+0x98><== NEVER TAKEN
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
 800535c:	b8 60 10 00 	mv r2,r3                                       
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
 8005360:	78 01 08 01 	mvhi r1,0x801                                  
 8005364:	38 21 4d b4 	ori r1,r1,0x4db4                               
 8005368:	58 22 00 10 	sw (r1+16),r2                                  
 800536c:	c3 a0 00 00 	ret                                            
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
 8005370:	00 21 00 01 	srui r1,r1,1                                   
 8005374:	00 21 00 01 	srui r1,r1,1                                   
 8005378:	00 21 00 01 	srui r1,r1,1                                   
 800537c:	00 21 00 01 	srui r1,r1,1                                   
 8005380:	00 21 00 01 	srui r1,r1,1                                   
 8005384:	00 21 00 01 	srui r1,r1,1                                   
 8005388:	00 21 00 01 	srui r1,r1,1                                   
 800538c:	00 21 00 01 	srui r1,r1,1                                   
 8005390:	b4 61 08 00 	add r1,r3,r1                                   
 8005394:	40 23 00 00 	lbu r3,(r1+0)                                  
 8005398:	e3 ff ff e4 	bi 8005328 <_Scheduler_priority_Schedule+0x60> 
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
 800539c:	00 42 00 01 	srui r2,r2,1                                   
 80053a0:	78 03 08 01 	mvhi r3,0x801                                  
 80053a4:	00 42 00 01 	srui r2,r2,1                                   
 80053a8:	38 63 35 58 	ori r3,r3,0x3558                               
 80053ac:	00 42 00 01 	srui r2,r2,1                                   
 80053b0:	00 42 00 01 	srui r2,r2,1                                   
 80053b4:	00 42 00 01 	srui r2,r2,1                                   
 80053b8:	00 42 00 01 	srui r2,r2,1                                   
 80053bc:	00 42 00 01 	srui r2,r2,1                                   
 80053c0:	00 42 00 01 	srui r2,r2,1                                   
 80053c4:	b4 62 10 00 	add r2,r3,r2                                   
 80053c8:	40 42 00 00 	lbu r2,(r2+0)                                  
 80053cc:	e3 ff ff cd 	bi 8005300 <_Scheduler_priority_Schedule+0x38> 
                                                                      

08003e68 <_TOD_Tickle_ticks>: * * Output parameters: NONE */ void _TOD_Tickle_ticks( void ) {
 8003e68:	37 9c ff ec 	addi sp,sp,-20                                 
 8003e6c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8003e70:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003e74:	5b 9d 00 04 	sw (sp+4),ra                                   
  Timestamp_Control tick;                                             
  uint32_t          seconds;                                          
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
 8003e78:	78 01 08 01 	mvhi r1,0x801                                  
 8003e7c:	38 21 40 f4 	ori r1,r1,0x40f4                               
 8003e80:	28 21 00 0c 	lw r1,(r1+12)                                  
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
 8003e84:	78 03 08 01 	mvhi r3,0x801                                  
 8003e88:	38 63 4a 18 	ori r3,r3,0x4a18                               
{                                                                     
  Timestamp_Control tick;                                             
  uint32_t          seconds;                                          
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
 8003e8c:	b4 21 08 00 	add r1,r1,r1                                   
 8003e90:	b4 21 08 00 	add r1,r1,r1                                   
 8003e94:	b4 21 08 00 	add r1,r1,r1                                   
 8003e98:	b4 21 10 00 	add r2,r1,r1                                   
 8003e9c:	b4 42 10 00 	add r2,r2,r2                                   
 8003ea0:	b4 22 08 00 	add r1,r1,r2                                   
 8003ea4:	b4 21 10 00 	add r2,r1,r1                                   
 8003ea8:	b4 42 10 00 	add r2,r2,r2                                   
 8003eac:	b4 22 08 00 	add r1,r1,r2                                   
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
 8003eb0:	28 65 00 00 	lw r5,(r3+0)                                   
{                                                                     
  Timestamp_Control tick;                                             
  uint32_t          seconds;                                          
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
 8003eb4:	b4 21 20 00 	add r4,r1,r1                                   
 8003eb8:	b4 84 20 00 	add r4,r4,r4                                   
 8003ebc:	b4 24 20 00 	add r4,r1,r4                                   
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
                                                                      
  /* Update the timespec format uptime */                             
  _Timestamp_Add_to( &_TOD_Uptime, &tick );                           
 8003ec0:	37 8b 00 10 	addi r11,sp,16                                 
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
 8003ec4:	34 a5 00 01 	addi r5,r5,1                                   
                                                                      
  /* Update the timespec format uptime */                             
  _Timestamp_Add_to( &_TOD_Uptime, &tick );                           
 8003ec8:	78 01 08 01 	mvhi r1,0x801                                  
 8003ecc:	b9 60 10 00 	mv r2,r11                                      
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
 8003ed0:	58 65 00 00 	sw (r3+0),r5                                   
                                                                      
  /* Update the timespec format uptime */                             
  _Timestamp_Add_to( &_TOD_Uptime, &tick );                           
 8003ed4:	38 21 49 84 	ori r1,r1,0x4984                               
{                                                                     
  Timestamp_Control tick;                                             
  uint32_t          seconds;                                          
                                                                      
  /* Convert the tick quantum to a timestamp */                       
  _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
 8003ed8:	5b 84 00 14 	sw (sp+20),r4                                  
 8003edc:	5b 80 00 10 	sw (sp+16),r0                                  
                                                                      
  /* Update the counter of ticks since boot */                        
  _Watchdog_Ticks_since_boot += 1;                                    
                                                                      
  /* Update the timespec format uptime */                             
  _Timestamp_Add_to( &_TOD_Uptime, &tick );                           
 8003ee0:	f8 00 0a 38 	calli 80067c0 <_Timespec_Add_to>               
  /* we do not care how much the uptime changed */                    
                                                                      
  /* Update the timespec format TOD */                                
  seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );            
 8003ee4:	78 01 08 01 	mvhi r1,0x801                                  
 8003ee8:	b9 60 10 00 	mv r2,r11                                      
 8003eec:	38 21 49 90 	ori r1,r1,0x4990                               
 8003ef0:	f8 00 0a 34 	calli 80067c0 <_Timespec_Add_to>               
 8003ef4:	b8 20 58 00 	mv r11,r1                                      
  while ( seconds ) {                                                 
 8003ef8:	44 20 00 07 	be r1,r0,8003f14 <_TOD_Tickle_ticks+0xac>      
 8003efc:	78 0c 08 01 	mvhi r12,0x801                                 
 8003f00:	39 8c 49 bc 	ori r12,r12,0x49bc                             
    _Watchdog_Tickle_seconds();                                       
    seconds--;                                                        
 8003f04:	35 6b ff ff 	addi r11,r11,-1                                
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void )            
{                                                                     
                                                                      
  _Watchdog_Tickle( &_Watchdog_Seconds_chain );                       
 8003f08:	b9 80 08 00 	mv r1,r12                                      
 8003f0c:	f8 00 0c 06 	calli 8006f24 <_Watchdog_Tickle>               
  _Timestamp_Add_to( &_TOD_Uptime, &tick );                           
  /* we do not care how much the uptime changed */                    
                                                                      
  /* Update the timespec format TOD */                                
  seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );            
  while ( seconds ) {                                                 
 8003f10:	5d 60 ff fd 	bne r11,r0,8003f04 <_TOD_Tickle_ticks+0x9c>    <== NEVER TAKEN
    _Watchdog_Tickle_seconds();                                       
    seconds--;                                                        
  }                                                                   
}                                                                     
 8003f14:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003f18:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003f1c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003f20:	37 9c 00 14 	addi sp,sp,20                                  
 8003f24:	c3 a0 00 00 	ret                                            
                                                                      

080044a0 <_TOD_Validate>: */ bool _TOD_Validate( const rtems_time_of_day *the_tod ) {
 80044a0:	37 9c ff f4 	addi sp,sp,-12                                 
 80044a4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80044a8:	5b 8c 00 08 	sw (sp+8),r12                                  
 80044ac:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
 80044b0:	78 02 08 02 	mvhi r2,0x802                                  
 80044b4:	38 42 20 f4 	ori r2,r2,0x20f4                               
 */                                                                   
                                                                      
bool _TOD_Validate(                                                   
  const rtems_time_of_day *the_tod                                    
)                                                                     
{                                                                     
 80044b8:	b8 20 58 00 	mv r11,r1                                      
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
 80044bc:	28 42 00 0c 	lw r2,(r2+12)                                  
      (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;                                                    
 80044c0:	34 0c 00 00 	mvi r12,0                                      
  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)                                  ||                  
 80044c4:	44 20 00 22 	be r1,r0,800454c <_TOD_Validate+0xac>          <== NEVER TAKEN
)                                                                     
{                                                                     
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
 80044c8:	78 03 08 01 	mvhi r3,0x801                                  
 80044cc:	38 63 f6 18 	ori r3,r3,0xf618                               
 80044d0:	28 61 00 00 	lw r1,(r3+0)                                   
 80044d4:	f8 00 66 98 	calli 801df34 <__udivsi3>                      
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
 80044d8:	29 62 00 18 	lw r2,(r11+24)                                 
 80044dc:	50 41 00 1c 	bgeu r2,r1,800454c <_TOD_Validate+0xac>        
      (the_tod->ticks  >= ticks_per_second)       ||                  
 80044e0:	29 62 00 14 	lw r2,(r11+20)                                 
 80044e4:	34 01 00 3b 	mvi r1,59                                      
 80044e8:	54 41 00 19 	bgu r2,r1,800454c <_TOD_Validate+0xac>         
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
 80044ec:	29 62 00 10 	lw r2,(r11+16)                                 
 80044f0:	54 41 00 17 	bgu r2,r1,800454c <_TOD_Validate+0xac>         
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
 80044f4:	29 62 00 0c 	lw r2,(r11+12)                                 
 80044f8:	34 01 00 17 	mvi r1,23                                      
 80044fc:	54 41 00 14 	bgu r2,r1,800454c <_TOD_Validate+0xac>         
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
 8004500:	29 61 00 04 	lw r1,(r11+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)      ||                  
 8004504:	44 20 00 12 	be r1,r0,800454c <_TOD_Validate+0xac>          <== NEVER TAKEN
      (the_tod->month  == 0)                      ||                  
 8004508:	34 02 00 0c 	mvi r2,12                                      
 800450c:	54 22 00 10 	bgu r1,r2,800454c <_TOD_Validate+0xac>         
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
 8004510:	29 62 00 00 	lw r2,(r11+0)                                  
      (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)    ||                  
 8004514:	34 03 07 c3 	mvi r3,1987                                    
 8004518:	50 62 00 0d 	bgeu r3,r2,800454c <_TOD_Validate+0xac>        
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
 800451c:	29 63 00 08 	lw r3,(r11+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)          ||                  
 8004520:	44 60 00 0b 	be r3,r0,800454c <_TOD_Validate+0xac>          <== NEVER TAKEN
      (the_tod->day    == 0) )                                        
     return false;                                                    
                                                                      
  if ( (the_tod->year % 4) == 0 )                                     
 8004524:	20 42 00 03 	andi r2,r2,0x3                                 
 8004528:	5c 40 00 02 	bne r2,r0,8004530 <_TOD_Validate+0x90>         
    days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];       
 800452c:	34 21 00 0d 	addi r1,r1,13                                  
  else                                                                
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];       
 8004530:	78 02 08 01 	mvhi r2,0x801                                  
 8004534:	b4 21 08 00 	add r1,r1,r1                                   
 8004538:	38 42 fe c8 	ori r2,r2,0xfec8                               
 800453c:	b4 21 08 00 	add r1,r1,r1                                   
 8004540:	b4 41 08 00 	add r1,r2,r1                                   
 8004544:	28 2c 00 00 	lw r12,(r1+0)                                  
 *    false - if the the_tod is invalid                               
 *                                                                    
 *  NOTE: This routine only works for leap-years through 2099.        
 */                                                                   
                                                                      
bool _TOD_Validate(                                                   
 8004548:	f1 83 60 00 	cmpgeu r12,r12,r3                              
                                                                      
  if ( the_tod->day > days_in_month )                                 
    return false;                                                     
                                                                      
  return true;                                                        
}                                                                     
 800454c:	b9 80 08 00 	mv r1,r12                                      
 8004550:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004554:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004558:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800455c:	37 9c 00 0c 	addi sp,sp,12                                  
 8004560:	c3 a0 00 00 	ret                                            
                                                                      

080055a0 <_Thread_Change_priority>: void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) {
 80055a0:	37 9c ff e4 	addi sp,sp,-28                                 
 80055a4:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80055a8:	5b 8c 00 18 	sw (sp+24),r12                                 
 80055ac:	5b 8d 00 14 	sw (sp+20),r13                                 
 80055b0:	5b 8e 00 10 	sw (sp+16),r14                                 
 80055b4:	5b 8f 00 0c 	sw (sp+12),r15                                 
 80055b8:	5b 90 00 08 	sw (sp+8),r16                                  
 80055bc:	5b 9d 00 04 	sw (sp+4),ra                                   
 80055c0:	b8 20 58 00 	mv r11,r1                                      
  States_Control state, original_state;                               
                                                                      
  /*                                                                  
   * Save original state                                              
   */                                                                 
  original_state = the_thread->current_state;                         
 80055c4:	28 2f 00 10 	lw r15,(r1+16)                                 
void _Thread_Change_priority(                                         
  Thread_Control   *the_thread,                                       
  Priority_Control  new_priority,                                     
  bool              prepend_it                                        
)                                                                     
{                                                                     
 80055c8:	b8 40 60 00 	mv r12,r2                                      
 80055cc:	20 70 00 ff 	andi r16,r3,0xff                               
  /*                                                                  
   * Set a transient state for the thread so it is pulled off the Ready chains.
   * This will prevent it from being scheduled no matter what happens in an
   * ISR.                                                             
   */                                                                 
  _Thread_Set_transient( the_thread );                                
 80055d0:	f8 00 03 e5 	calli 8006564 <_Thread_Set_transient>          
                                                                      
  /*                                                                  
   *  Do not bother recomputing all the priority related information if
   *  we are not REALLY changing priority.                            
   */                                                                 
 if ( the_thread->current_priority != new_priority )                  
 80055d4:	29 61 00 14 	lw r1,(r11+20)                                 
 80055d8:	44 2c 00 04 	be r1,r12,80055e8 <_Thread_Change_priority+0x48>
    _Thread_Set_priority( the_thread, new_priority );                 
 80055dc:	b9 60 08 00 	mv r1,r11                                      
 80055e0:	b9 80 10 00 	mv r2,r12                                      
 80055e4:	f8 00 03 bc 	calli 80064d4 <_Thread_Set_priority>           
                                                                      
  _ISR_Disable( level );                                              
 80055e8:	90 00 60 00 	rcsr r12,IE                                    
 80055ec:	34 0d ff fe 	mvi r13,-2                                     
 80055f0:	a1 8d 68 00 	and r13,r12,r13                                
 80055f4:	d0 0d 00 00 	wcsr IE,r13                                    
                                                                      
  /*                                                                  
   *  If the thread has more than STATES_TRANSIENT set, then it is blocked,
   *  If it is blocked on a thread queue, then we need to requeue it. 
   */                                                                 
  state = the_thread->current_state;                                  
 80055f8:	29 61 00 10 	lw r1,(r11+16)                                 
  if ( state != STATES_TRANSIENT ) {                                  
 80055fc:	34 02 00 04 	mvi r2,4                                       
 8005600:	44 22 00 1f 	be r1,r2,800567c <_Thread_Change_priority+0xdc>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_transient (                      
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_TRANSIENT);                            
 8005604:	21 ef 00 04 	andi r15,r15,0x4                               
    /* Only clear the transient state if it wasn't set already */     
    if ( ! _States_Is_transient( original_state ) )                   
 8005608:	45 e0 00 10 	be r15,r0,8005648 <_Thread_Change_priority+0xa8><== ALWAYS TAKEN
      the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
    _ISR_Enable( level );                                             
 800560c:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
 8005610:	78 03 08 01 	mvhi r3,0x801                                  <== NOT EXECUTED
 8005614:	38 63 36 c0 	ori r3,r3,0x36c0                               <== NOT EXECUTED
 8005618:	28 62 00 00 	lw r2,(r3+0)                                   <== NOT EXECUTED
 800561c:	a0 22 08 00 	and r1,r1,r2                                   <== NOT EXECUTED
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
 8005620:	5c 20 00 13 	bne r1,r0,800566c <_Thread_Change_priority+0xcc><== NOT EXECUTED
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
  _ISR_Enable( level );                                               
}                                                                     
 8005624:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005628:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800562c:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8005630:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8005634:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8005638:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800563c:	2b 90 00 08 	lw r16,(sp+8)                                  
 8005640:	37 9c 00 1c 	addi sp,sp,28                                  
 8005644:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE States_Control _States_Clear (                   
  States_Control states_to_clear,                                     
  States_Control current_state                                        
)                                                                     
{                                                                     
   return (current_state & ~states_to_clear);                         
 8005648:	34 02 ff fb 	mvi r2,-5                                      
 800564c:	a0 22 10 00 	and r2,r1,r2                                   
   */                                                                 
  state = the_thread->current_state;                                  
  if ( state != STATES_TRANSIENT ) {                                  
    /* Only clear the transient state if it wasn't set already */     
    if ( ! _States_Is_transient( original_state ) )                   
      the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
 8005650:	59 62 00 10 	sw (r11+16),r2                                 
    _ISR_Enable( level );                                             
 8005654:	d0 0c 00 00 	wcsr IE,r12                                    
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
 8005658:	78 03 08 01 	mvhi r3,0x801                                  
 800565c:	38 63 36 c0 	ori r3,r3,0x36c0                               
 8005660:	28 62 00 00 	lw r2,(r3+0)                                   
 8005664:	a0 22 08 00 	and r1,r1,r2                                   
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
 8005668:	44 20 ff ef 	be r1,r0,8005624 <_Thread_Change_priority+0x84>
      _Thread_queue_Requeue( the_thread->Wait.queue, the_thread );    
 800566c:	29 61 00 44 	lw r1,(r11+68)                                 
 8005670:	b9 60 10 00 	mv r2,r11                                      
 8005674:	f8 00 03 5b 	calli 80063e0 <_Thread_queue_Requeue>          
 8005678:	e3 ff ff eb 	bi 8005624 <_Thread_Change_priority+0x84>      
 800567c:	78 0e 08 01 	mvhi r14,0x801                                 
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_transient (                      
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_TRANSIENT);                            
 8005680:	21 ef 00 04 	andi r15,r15,0x4                               
 8005684:	39 ce 40 1c 	ori r14,r14,0x401c                             
    }                                                                 
    return;                                                           
  }                                                                   
                                                                      
  /* Only clear the transient state if it wasn't set already */       
  if ( ! _States_Is_transient( original_state ) ) {                   
 8005688:	5d e0 00 06 	bne r15,r0,80056a0 <_Thread_Change_priority+0x100><== NEVER TAKEN
     *  Interrupts are STILL disabled.                                
     *  We now know the thread will be in the READY state when we remove
     *  the TRANSIENT state.  So we have to place it on the appropriate
     *  Ready Queue with interrupts off.                              
     */                                                               
    the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
 800568c:	59 60 00 10 	sw (r11+16),r0                                 
                                                                      
    if ( prepend_it )                                                 
 8005690:	46 0f 00 13 	be r16,r15,80056dc <_Thread_Change_priority+0x13c>
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue_first(                   
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  _Scheduler.Operations.enqueue_first( the_thread );                  
 8005694:	29 c2 00 28 	lw r2,(r14+40)                                 
 8005698:	b9 60 08 00 	mv r1,r11                                      
 800569c:	d8 40 00 00 	call r2                                        
      _Scheduler_Enqueue_first( the_thread );                         
    else                                                              
      _Scheduler_Enqueue( the_thread );                               
  }                                                                   
                                                                      
  _ISR_Flash( level );                                                
 80056a0:	d0 0c 00 00 	wcsr IE,r12                                    
 80056a4:	d0 0d 00 00 	wcsr IE,r13                                    
 *  This kernel routine implements the scheduling decision logic for  
 *  the scheduler. It does NOT dispatch.                              
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule( void )                 
{                                                                     
  _Scheduler.Operations.schedule();                                   
 80056a8:	29 c1 00 08 	lw r1,(r14+8)                                  
 80056ac:	d8 20 00 00 	call r1                                        
 *  is also the heir thread, and false otherwise.                     
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void )  
{                                                                     
  return ( _Thread_Executing == _Thread_Heir );                       
 80056b0:	78 01 08 01 	mvhi r1,0x801                                  
 80056b4:	38 21 4d b4 	ori r1,r1,0x4db4                               
 80056b8:	28 22 00 0c 	lw r2,(r1+12)                                  
   *  We altered the set of thread priorities.  So let's figure out   
   *  who is the heir and if we need to switch to them.               
   */                                                                 
  _Scheduler_Schedule();                                              
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
 80056bc:	28 23 00 10 	lw r3,(r1+16)                                  
 80056c0:	44 43 00 05 	be r2,r3,80056d4 <_Thread_Change_priority+0x134>
 80056c4:	40 42 00 74 	lbu r2,(r2+116)                                
 80056c8:	44 40 00 03 	be r2,r0,80056d4 <_Thread_Change_priority+0x134>
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
 80056cc:	34 02 00 01 	mvi r2,1                                       
 80056d0:	30 22 00 18 	sb (r1+24),r2                                  
  _ISR_Enable( level );                                               
 80056d4:	d0 0c 00 00 	wcsr IE,r12                                    
 80056d8:	e3 ff ff d3 	bi 8005624 <_Thread_Change_priority+0x84>      
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue(                         
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  _Scheduler.Operations.enqueue( the_thread );                        
 80056dc:	29 c2 00 24 	lw r2,(r14+36)                                 
 80056e0:	b9 60 08 00 	mv r1,r11                                      
 80056e4:	d8 40 00 00 	call r2                                        
 80056e8:	e3 ff ff ee 	bi 80056a0 <_Thread_Change_priority+0x100>     
                                                                      

0800c9cc <_Thread_Delay_ended>: void _Thread_Delay_ended( Objects_Id id, void *ignored __attribute__((unused)) ) {
 800c9cc:	37 9c ff f8 	addi sp,sp,-8                                  
 800c9d0:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control    *the_thread;                                      
  Objects_Locations  location;                                        
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 800c9d4:	37 82 00 08 	addi r2,sp,8                                   
 800c9d8:	f8 00 00 8a 	calli 800cc00 <_Thread_Get>                    
  switch ( location ) {                                               
 800c9dc:	2b 82 00 08 	lw r2,(sp+8)                                   
 800c9e0:	5c 40 00 0a 	bne r2,r0,800ca08 <_Thread_Delay_ended+0x3c>   <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_Clear_state(                                            
 800c9e4:	78 03 08 02 	mvhi r3,0x802                                  
 800c9e8:	38 63 83 a8 	ori r3,r3,0x83a8                               
 800c9ec:	28 62 00 00 	lw r2,(r3+0)                                   
 800c9f0:	fb ff ff 67 	calli 800c78c <_Thread_Clear_state>            
 800c9f4:	78 01 08 02 	mvhi r1,0x802                                  
 800c9f8:	38 21 aa 80 	ori r1,r1,0xaa80                               
 800c9fc:	28 22 00 00 	lw r2,(r1+0)                                   
 800ca00:	34 42 ff ff 	addi r2,r2,-1                                  
 800ca04:	58 22 00 00 	sw (r1+0),r2                                   
          | STATES_INTERRUPTIBLE_BY_SIGNAL                            
      );                                                              
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
 800ca08:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ca0c:	37 9c 00 08 	addi sp,sp,8                                   
 800ca10:	c3 a0 00 00 	ret                                            
                                                                      

080058bc <_Thread_Dispatch>: * dispatch thread * no dispatch thread */ void _Thread_Dispatch( void ) {
 80058bc:	37 9c ff bc 	addi sp,sp,-68                                 
 80058c0:	5b 8b 00 34 	sw (sp+52),r11                                 
 80058c4:	5b 8c 00 30 	sw (sp+48),r12                                 
 80058c8:	5b 8d 00 2c 	sw (sp+44),r13                                 
 80058cc:	5b 8e 00 28 	sw (sp+40),r14                                 
 80058d0:	5b 8f 00 24 	sw (sp+36),r15                                 
 80058d4:	5b 90 00 20 	sw (sp+32),r16                                 
 80058d8:	5b 91 00 1c 	sw (sp+28),r17                                 
 80058dc:	5b 92 00 18 	sw (sp+24),r18                                 
 80058e0:	5b 93 00 14 	sw (sp+20),r19                                 
 80058e4:	5b 94 00 10 	sw (sp+16),r20                                 
 80058e8:	5b 95 00 0c 	sw (sp+12),r21                                 
 80058ec:	5b 96 00 08 	sw (sp+8),r22                                  
 80058f0:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control   *executing;                                        
  Thread_Control   *heir;                                             
  ISR_Level         level;                                            
                                                                      
  executing   = _Thread_Executing;                                    
 80058f4:	78 01 08 01 	mvhi r1,0x801                                  
 80058f8:	38 21 4d b4 	ori r1,r1,0x4db4                               
 80058fc:	28 2c 00 0c 	lw r12,(r1+12)                                 
  _ISR_Disable( level );                                              
 8005900:	90 00 08 00 	rcsr r1,IE                                     
 8005904:	34 02 ff fe 	mvi r2,-2                                      
 8005908:	a0 22 10 00 	and r2,r1,r2                                   
 800590c:	d0 02 00 00 	wcsr IE,r2                                     
  while ( _Thread_Dispatch_necessary == true ) {                      
 8005910:	78 0e 08 01 	mvhi r14,0x801                                 
 8005914:	39 ce 4d b4 	ori r14,r14,0x4db4                             
 8005918:	41 c2 00 18 	lbu r2,(r14+24)                                
 800591c:	78 10 08 01 	mvhi r16,0x801                                 
  Thread_Control   *executing;                                        
  Thread_Control   *heir;                                             
  ISR_Level         level;                                            
                                                                      
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
 8005920:	b8 20 20 00 	mv r4,r1                                       
  while ( _Thread_Dispatch_necessary == true ) {                      
 8005924:	20 42 00 ff 	andi r2,r2,0xff                                
 8005928:	3a 10 49 08 	ori r16,r16,0x4908                             
 800592c:	44 40 00 40 	be r2,r0,8005a2c <_Thread_Dispatch+0x170>      
    heir = _Thread_Heir;                                              
 8005930:	29 cb 00 10 	lw r11,(r14+16)                                
    _Thread_Dispatch_disable_level = 1;                               
 8005934:	34 02 00 01 	mvi r2,1                                       
 8005938:	5a 02 00 00 	sw (r16+0),r2                                  
    _Thread_Dispatch_necessary = false;                               
 800593c:	31 c0 00 18 	sb (r14+24),r0                                 
    _Thread_Executing = heir;                                         
 8005940:	59 cb 00 0c 	sw (r14+12),r11                                
    /*                                                                
     *  When the heir and executing are the same, then we are being   
     *  requested to do the post switch dispatching.  This is normally
     *  done to dispatch signals.                                     
     */                                                               
    if ( heir == executing )                                          
 8005944:	45 8b 00 3a 	be r12,r11,8005a2c <_Thread_Dispatch+0x170>    
 8005948:	78 0f 08 01 	mvhi r15,0x801                                 
 800594c:	78 14 08 01 	mvhi r20,0x801                                 
#if __RTEMS_ADA__                                                     
    executing->rtems_ada_self = rtems_ada_self;                       
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
 8005950:	78 15 08 01 	mvhi r21,0x801                                 
 8005954:	37 92 00 40 	addi r18,sp,64                                 
 8005958:	39 ef 49 b4 	ori r15,r15,0x49b4                             
 800595c:	37 91 00 38 	addi r17,sp,56                                 
 8005960:	3a 94 49 8c 	ori r20,r20,0x498c                             
     */                                                               
#if __RTEMS_ADA__                                                     
    executing->rtems_ada_self = rtems_ada_self;                       
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
 8005964:	34 13 00 01 	mvi r19,1                                      
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
 8005968:	3a b5 48 a0 	ori r21,r21,0x48a0                             
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
                                                                      
    _ISR_Disable( level );                                            
 800596c:	34 16 ff fe 	mvi r22,-2                                     
  Thread_Control   *heir;                                             
  ISR_Level         level;                                            
                                                                      
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
 8005970:	b9 c0 68 00 	mv r13,r14                                     
 8005974:	e0 00 00 29 	bi 8005a18 <_Thread_Dispatch+0x15c>            
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
                                                                      
    _ISR_Enable( level );                                             
 8005978:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      {                                                               
        Timestamp_Control uptime, ran;                                
        _TOD_Get_uptime( &uptime );                                   
 800597c:	ba 40 08 00 	mv r1,r18                                      
 8005980:	f8 00 11 eb 	calli 800a12c <_TOD_Get_uptime>                
        _Timestamp_Subtract(                                          
 8005984:	ba 20 18 00 	mv r3,r17                                      
 8005988:	b9 e0 08 00 	mv r1,r15                                      
 800598c:	ba 40 10 00 	mv r2,r18                                      
 8005990:	f8 00 03 a3 	calli 800681c <_Timespec_Subtract>             
          &_Thread_Time_of_last_context_switch,                       
          &uptime,                                                    
          &ran                                                        
        );                                                            
        _Timestamp_Add_to( &executing->cpu_time_used, &ran );         
 8005994:	ba 20 10 00 	mv r2,r17                                      
 8005998:	35 81 00 84 	addi r1,r12,132                                
 800599c:	f8 00 03 89 	calli 80067c0 <_Timespec_Add_to>               
        _Thread_Time_of_last_context_switch = uptime;                 
 80059a0:	2b 83 00 40 	lw r3,(sp+64)                                  
    #endif                                                            
                                                                      
    /*                                                                
     * Switch libc's task specific data.                              
     */                                                               
    if ( _Thread_libc_reent ) {                                       
 80059a4:	2a 84 00 00 	lw r4,(r20+0)                                  
      executing->libc_reent = *_Thread_libc_reent;                    
      *_Thread_libc_reent = heir->libc_reent;                         
    }                                                                 
                                                                      
    _User_extensions_Thread_switch( executing, heir );                
 80059a8:	b9 80 08 00 	mv r1,r12                                      
          &_Thread_Time_of_last_context_switch,                       
          &uptime,                                                    
          &ran                                                        
        );                                                            
        _Timestamp_Add_to( &executing->cpu_time_used, &ran );         
        _Thread_Time_of_last_context_switch = uptime;                 
 80059ac:	59 e3 00 00 	sw (r15+0),r3                                  
 80059b0:	2b 83 00 44 	lw r3,(sp+68)                                  
    if ( _Thread_libc_reent ) {                                       
      executing->libc_reent = *_Thread_libc_reent;                    
      *_Thread_libc_reent = heir->libc_reent;                         
    }                                                                 
                                                                      
    _User_extensions_Thread_switch( executing, heir );                
 80059b4:	b9 60 10 00 	mv r2,r11                                      
          &_Thread_Time_of_last_context_switch,                       
          &uptime,                                                    
          &ran                                                        
        );                                                            
        _Timestamp_Add_to( &executing->cpu_time_used, &ran );         
        _Thread_Time_of_last_context_switch = uptime;                 
 80059b8:	59 e3 00 04 	sw (r15+4),r3                                  
    #endif                                                            
                                                                      
    /*                                                                
     * Switch libc's task specific data.                              
     */                                                               
    if ( _Thread_libc_reent ) {                                       
 80059bc:	44 80 00 05 	be r4,r0,80059d0 <_Thread_Dispatch+0x114>      <== NEVER TAKEN
      executing->libc_reent = *_Thread_libc_reent;                    
 80059c0:	28 83 00 00 	lw r3,(r4+0)                                   
 80059c4:	59 83 01 18 	sw (r12+280),r3                                
      *_Thread_libc_reent = heir->libc_reent;                         
 80059c8:	29 63 01 18 	lw r3,(r11+280)                                
 80059cc:	58 83 00 00 	sw (r4+0),r3                                   
    }                                                                 
                                                                      
    _User_extensions_Thread_switch( executing, heir );                
 80059d0:	f8 00 04 9a 	calli 8006c38 <_User_extensions_Thread_switch> 
    if ( executing->fp_context != NULL )                              
      _Context_Save_fp( &executing->fp_context );                     
#endif                                                                
#endif                                                                
                                                                      
    _Context_Switch( &executing->Registers, &heir->Registers );       
 80059d4:	35 81 00 c4 	addi r1,r12,196                                
 80059d8:	35 62 00 c4 	addi r2,r11,196                                
 80059dc:	f8 00 05 cf 	calli 8007118 <_CPU_Context_switch>            
    if ( executing->fp_context != NULL )                              
      _Context_Restore_fp( &executing->fp_context );                  
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
 80059e0:	29 cc 00 0c 	lw r12,(r14+12)                                
                                                                      
    _ISR_Disable( level );                                            
 80059e4:	90 00 20 00 	rcsr r4,IE                                     
 80059e8:	a0 96 08 00 	and r1,r4,r22                                  
 80059ec:	d0 01 00 00 	wcsr IE,r1                                     
  Thread_Control   *heir;                                             
  ISR_Level         level;                                            
                                                                      
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
 80059f0:	41 a2 00 18 	lbu r2,(r13+24)                                
 80059f4:	b9 a0 70 00 	mv r14,r13                                     
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
                                                                      
    _ISR_Disable( level );                                            
 80059f8:	b8 80 08 00 	mv r1,r4                                       
  Thread_Control   *heir;                                             
  ISR_Level         level;                                            
                                                                      
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
 80059fc:	20 42 00 ff 	andi r2,r2,0xff                                
 8005a00:	44 40 00 0b 	be r2,r0,8005a2c <_Thread_Dispatch+0x170>      <== ALWAYS TAKEN
    heir = _Thread_Heir;                                              
 8005a04:	29 ab 00 10 	lw r11,(r13+16)                                <== NOT EXECUTED
    _Thread_Dispatch_disable_level = 1;                               
 8005a08:	5a 13 00 00 	sw (r16+0),r19                                 <== NOT EXECUTED
    _Thread_Dispatch_necessary = false;                               
 8005a0c:	31 a0 00 18 	sb (r13+24),r0                                 <== NOT EXECUTED
    _Thread_Executing = heir;                                         
 8005a10:	59 ab 00 0c 	sw (r13+12),r11                                <== NOT EXECUTED
    /*                                                                
     *  When the heir and executing are the same, then we are being   
     *  requested to do the post switch dispatching.  This is normally
     *  done to dispatch signals.                                     
     */                                                               
    if ( heir == executing )                                          
 8005a14:	45 6c 00 06 	be r11,r12,8005a2c <_Thread_Dispatch+0x170>    <== NOT EXECUTED
     */                                                               
#if __RTEMS_ADA__                                                     
    executing->rtems_ada_self = rtems_ada_self;                       
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
 8005a18:	29 62 00 7c 	lw r2,(r11+124)                                
 8005a1c:	5c 53 ff d7 	bne r2,r19,8005978 <_Thread_Dispatch+0xbc>     
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
 8005a20:	2a a2 00 00 	lw r2,(r21+0)                                  
 8005a24:	59 62 00 78 	sw (r11+120),r2                                
 8005a28:	e3 ff ff d4 	bi 8005978 <_Thread_Dispatch+0xbc>             
                                                                      
    _ISR_Disable( level );                                            
  }                                                                   
                                                                      
post_switch:                                                          
  _Thread_Dispatch_disable_level = 0;                                 
 8005a2c:	5a 00 00 00 	sw (r16+0),r0                                  
                                                                      
  _ISR_Enable( level );                                               
 8005a30:	d0 04 00 00 	wcsr IE,r4                                     
                                                                      
  _API_extensions_Run_postswitch();                                   
 8005a34:	fb ff f7 42 	calli 800373c <_API_extensions_Run_postswitch> 
}                                                                     
 8005a38:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005a3c:	2b 8b 00 34 	lw r11,(sp+52)                                 
 8005a40:	2b 8c 00 30 	lw r12,(sp+48)                                 
 8005a44:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 8005a48:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8005a4c:	2b 8f 00 24 	lw r15,(sp+36)                                 
 8005a50:	2b 90 00 20 	lw r16,(sp+32)                                 
 8005a54:	2b 91 00 1c 	lw r17,(sp+28)                                 
 8005a58:	2b 92 00 18 	lw r18,(sp+24)                                 
 8005a5c:	2b 93 00 14 	lw r19,(sp+20)                                 
 8005a60:	2b 94 00 10 	lw r20,(sp+16)                                 
 8005a64:	2b 95 00 0c 	lw r21,(sp+12)                                 
 8005a68:	2b 96 00 08 	lw r22,(sp+8)                                  
 8005a6c:	37 9c 00 44 	addi sp,sp,68                                  
 8005a70:	c3 a0 00 00 	ret                                            
                                                                      

0800cae4 <_Thread_Handler>: * * Output parameters: NONE */ void _Thread_Handler( void ) {
 800cae4:	37 9c ff f4 	addi sp,sp,-12                                 
 800cae8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800caec:	5b 8c 00 08 	sw (sp+8),r12                                  
 800caf0:	5b 9d 00 04 	sw (sp+4),ra                                   
  #if defined(EXECUTE_GLOBAL_CONSTRUCTORS)                            
    static char doneConstructors;                                     
    char doneCons;                                                    
  #endif                                                              
                                                                      
  executing = _Thread_Executing;                                      
 800caf4:	78 01 08 01 	mvhi r1,0x801                                  
 800caf8:	38 21 4d b4 	ori r1,r1,0x4db4                               
 800cafc:	28 2b 00 0c 	lw r11,(r1+12)                                 
  /*                                                                  
   * have to put level into a register for those cpu's that use       
   * inline asm here                                                  
   */                                                                 
                                                                      
  level = executing->Start.isr_level;                                 
 800cb00:	29 61 00 ac 	lw r1,(r11+172)                                
  _ISR_Set_level(level);                                              
 800cb04:	64 21 00 00 	cmpei r1,r1,0                                  
 800cb08:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
  #if defined(EXECUTE_GLOBAL_CONSTRUCTORS)                            
    doneCons = doneConstructors;                                      
 800cb0c:	78 02 08 01 	mvhi r2,0x801                                  
 800cb10:	38 42 47 1c 	ori r2,r2,0x471c                               
 800cb14:	40 4c 00 00 	lbu r12,(r2+0)                                 
    doneConstructors = 1;                                             
 800cb18:	34 03 00 01 	mvi r3,1                                       
  /*                                                                  
   * Take care that 'begin' extensions get to complete before         
   * 'switch' extensions can run.  This means must keep dispatch      
   * disabled until all 'begin' extensions complete.                  
   */                                                                 
  _User_extensions_Thread_begin( executing );                         
 800cb1c:	b9 60 08 00 	mv r1,r11                                      
  level = executing->Start.isr_level;                                 
  _ISR_Set_level(level);                                              
                                                                      
  #if defined(EXECUTE_GLOBAL_CONSTRUCTORS)                            
    doneCons = doneConstructors;                                      
    doneConstructors = 1;                                             
 800cb20:	30 43 00 00 	sb (r2+0),r3                                   
  /*                                                                  
   * Take care that 'begin' extensions get to complete before         
   * 'switch' extensions can run.  This means must keep dispatch      
   * disabled until all 'begin' extensions complete.                  
   */                                                                 
  _User_extensions_Thread_begin( executing );                         
 800cb24:	fb ff e7 99 	calli 8006988 <_User_extensions_Thread_begin>  
                                                                      
  /*                                                                  
   *  At this point, the dispatch disable level BETTER be 1.          
   */                                                                 
  _Thread_Enable_dispatch();                                          
 800cb28:	fb ff e3 d3 	calli 8005a74 <_Thread_Enable_dispatch>        
    /*                                                                
     *  _init could be a weak symbol and we SHOULD test it but it isn't
     *  in any configuration I know of and it generates a warning on every
     *  RTEMS target configuration.  --joel (12 May 2007)             
     */                                                               
    if (!doneCons) /* && (volatile void *)_init) */ {                 
 800cb2c:	45 80 00 0b 	be r12,r0,800cb58 <_Thread_Handler+0x74>       
      INIT_NAME ();                                                   
    }                                                                 
  #endif                                                              
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
 800cb30:	29 61 00 94 	lw r1,(r11+148)                                
 800cb34:	44 20 00 0c 	be r1,r0,800cb64 <_Thread_Handler+0x80>        
      (*(Thread_Entry_numeric) executing->Start.entry_point)(         
        executing->Start.numeric_argument                             
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
 800cb38:	34 02 00 01 	mvi r2,1                                       
 800cb3c:	44 22 00 0f 	be r1,r2,800cb78 <_Thread_Handler+0x94>        <== ALWAYS TAKEN
   *  was placed in return_argument.  This assumed that if it returned
   *  anything (which is not supporting in all APIs), then it would be
   *  able to fit in a (void *).                                      
   */                                                                 
                                                                      
  _User_extensions_Thread_exitted( executing );                       
 800cb40:	b9 60 08 00 	mv r1,r11                                      
 800cb44:	fb ff e7 a9 	calli 80069e8 <_User_extensions_Thread_exitted>
                                                                      
  _Internal_error_Occurred(                                           
 800cb48:	34 01 00 00 	mvi r1,0                                       
 800cb4c:	34 02 00 01 	mvi r2,1                                       
 800cb50:	34 03 00 05 	mvi r3,5                                       
 800cb54:	fb ff de 34 	calli 8004424 <_Internal_error_Occurred>       
     *  _init could be a weak symbol and we SHOULD test it but it isn't
     *  in any configuration I know of and it generates a warning on every
     *  RTEMS target configuration.  --joel (12 May 2007)             
     */                                                               
    if (!doneCons) /* && (volatile void *)_init) */ {                 
      INIT_NAME ();                                                   
 800cb58:	fb ff cd 2a 	calli 8000000 <RamBase>                        
    }                                                                 
  #endif                                                              
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
 800cb5c:	29 61 00 94 	lw r1,(r11+148)                                
 800cb60:	5c 20 ff f6 	bne r1,r0,800cb38 <_Thread_Handler+0x54>       
    executing->Wait.return_argument =                                 
      (*(Thread_Entry_numeric) executing->Start.entry_point)(         
 800cb64:	29 62 00 90 	lw r2,(r11+144)                                
 800cb68:	29 61 00 9c 	lw r1,(r11+156)                                
 800cb6c:	d8 40 00 00 	call r2                                        
      INIT_NAME ();                                                   
    }                                                                 
  #endif                                                              
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
    executing->Wait.return_argument =                                 
 800cb70:	59 61 00 28 	sw (r11+40),r1                                 
 800cb74:	e3 ff ff f3 	bi 800cb40 <_Thread_Handler+0x5c>              
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
      executing->Wait.return_argument =                               
        (*(Thread_Entry_pointer) executing->Start.entry_point)(       
 800cb78:	29 62 00 90 	lw r2,(r11+144)                                
 800cb7c:	29 61 00 98 	lw r1,(r11+152)                                
 800cb80:	d8 40 00 00 	call r2                                        
        executing->Start.numeric_argument                             
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
      executing->Wait.return_argument =                               
 800cb84:	59 61 00 28 	sw (r11+40),r1                                 
 800cb88:	e3 ff ff ee 	bi 800cb40 <_Thread_Handler+0x5c>              
                                                                      

08006720 <_Thread_Tickle_timeslice>: * * Output parameters: NONE */ void _Thread_Tickle_timeslice( void ) {
 8006720:	37 9c ff f8 	addi sp,sp,-8                                  
 8006724:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control *executing;                                          
                                                                      
  executing = _Thread_Executing;                                      
 8006728:	78 01 08 01 	mvhi r1,0x801                                  
 800672c:	38 21 4d b4 	ori r1,r1,0x4db4                               
 8006730:	28 21 00 0c 	lw r1,(r1+12)                                  
  /*                                                                  
   *  If the thread is not preemptible or is not ready, then          
   *  just return.                                                    
   */                                                                 
                                                                      
  if ( !executing->is_preemptible )                                   
 8006734:	40 22 00 74 	lbu r2,(r1+116)                                
 8006738:	44 40 00 09 	be r2,r0,800675c <_Thread_Tickle_timeslice+0x3c>
    return;                                                           
                                                                      
  if ( !_States_Is_ready( executing->current_state ) )                
 800673c:	28 22 00 10 	lw r2,(r1+16)                                  
 8006740:	5c 40 00 07 	bne r2,r0,800675c <_Thread_Tickle_timeslice+0x3c>
                                                                      
  /*                                                                  
   *  The cpu budget algorithm determines what happens next.          
   */                                                                 
                                                                      
  switch ( executing->budget_algorithm ) {                            
 8006744:	28 22 00 7c 	lw r2,(r1+124)                                 
 8006748:	44 40 00 05 	be r2,r0,800675c <_Thread_Tickle_timeslice+0x3c>
 800674c:	34 03 00 02 	mvi r3,2                                       
 8006750:	50 62 00 0d 	bgeu r3,r2,8006784 <_Thread_Tickle_timeslice+0x64>
 8006754:	34 03 00 03 	mvi r3,3                                       
 8006758:	44 43 00 04 	be r2,r3,8006768 <_Thread_Tickle_timeslice+0x48><== ALWAYS TAKEN
	if ( --executing->cpu_time_budget == 0 )                             
	  (*executing->budget_callout)( executing );                         
	break;                                                               
    #endif                                                            
  }                                                                   
}                                                                     
 800675c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006760:	37 9c 00 08 	addi sp,sp,8                                   
 8006764:	c3 a0 00 00 	ret                                            
      }                                                               
      break;                                                          
                                                                      
    #if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT)          
      case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:                       
	if ( --executing->cpu_time_budget == 0 )                             
 8006768:	28 22 00 78 	lw r2,(r1+120)                                 
 800676c:	34 42 ff ff 	addi r2,r2,-1                                  
 8006770:	58 22 00 78 	sw (r1+120),r2                                 
 8006774:	5c 40 ff fa 	bne r2,r0,800675c <_Thread_Tickle_timeslice+0x3c>
	  (*executing->budget_callout)( executing );                         
 8006778:	28 22 00 80 	lw r2,(r1+128)                                 
 800677c:	d8 40 00 00 	call r2                                        
 8006780:	e3 ff ff f7 	bi 800675c <_Thread_Tickle_timeslice+0x3c>     
                                                                      
    case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE:                 
    #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE)          
      case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE:             
    #endif                                                            
      if ( (int)(--executing->cpu_time_budget) <= 0 ) {               
 8006784:	28 22 00 78 	lw r2,(r1+120)                                 
 8006788:	34 42 ff ff 	addi r2,r2,-1                                  
 800678c:	58 22 00 78 	sw (r1+120),r2                                 
 8006790:	48 40 ff f3 	bg r2,r0,800675c <_Thread_Tickle_timeslice+0x3c>
 *  always operates on the scheduler that 'owns' the currently executing
 *  thread.                                                           
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )                    
{                                                                     
  _Scheduler.Operations.yield();                                      
 8006794:	78 02 08 01 	mvhi r2,0x801                                  
 8006798:	38 42 40 1c 	ori r2,r2,0x401c                               
 800679c:	28 42 00 0c 	lw r2,(r2+12)                                  
 80067a0:	5b 81 00 08 	sw (sp+8),r1                                   
 80067a4:	d8 40 00 00 	call r2                                        
         *  executing thread's timeslice is reset.  Otherwise, the    
         *  currently executing thread is placed at the rear of the   
         *  FIFO for this priority and a new heir is selected.        
         */                                                           
        _Scheduler_Yield( );                                          
        executing->cpu_time_budget = _Thread_Ticks_per_timeslice;     
 80067a8:	78 02 08 01 	mvhi r2,0x801                                  
 80067ac:	38 42 48 a0 	ori r2,r2,0x48a0                               
 80067b0:	28 42 00 00 	lw r2,(r2+0)                                   
 80067b4:	2b 81 00 08 	lw r1,(sp+8)                                   
 80067b8:	58 22 00 78 	sw (r1+120),r2                                 
 80067bc:	e3 ff ff e8 	bi 800675c <_Thread_Tickle_timeslice+0x3c>     
                                                                      

0800a644 <_Thread_blocking_operation_Cancel>: Thread_blocking_operation_States sync_state __attribute__((unused)), #endif Thread_Control *the_thread, ISR_Level level ) {
 800a644:	37 9c ff f8 	addi sp,sp,-8                                  <== NOT EXECUTED
 800a648:	5b 8b 00 08 	sw (sp+8),r11                                  <== NOT EXECUTED
 800a64c:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 800a650:	b8 40 58 00 	mv r11,r2                                      <== NOT EXECUTED
                                                                      
  /*                                                                  
   *  If the sync state is timed out, this is very likely not needed. 
   *  But better safe than sorry when it comes to critical sections.  
   */                                                                 
  if ( _Watchdog_Is_active( &the_thread->Timer ) ) {                  
 800a654:	28 42 00 50 	lw r2,(r2+80)                                  <== NOT EXECUTED
  #endif                                                              
                                                                      
  /*                                                                  
   * The thread is not waiting on anything after this completes.      
   */                                                                 
  the_thread->Wait.queue = NULL;                                      
 800a658:	59 60 00 44 	sw (r11+68),r0                                 <== NOT EXECUTED
                                                                      
  /*                                                                  
   *  If the sync state is timed out, this is very likely not needed. 
   *  But better safe than sorry when it comes to critical sections.  
   */                                                                 
  if ( _Watchdog_Is_active( &the_thread->Timer ) ) {                  
 800a65c:	34 01 00 02 	mvi r1,2                                       <== NOT EXECUTED
 800a660:	44 41 00 0b 	be r2,r1,800a68c <_Thread_blocking_operation_Cancel+0x48><== NOT EXECUTED
    _Watchdog_Deactivate( &the_thread->Timer );                       
    _ISR_Enable( level );                                             
    (void) _Watchdog_Remove( &the_thread->Timer );                    
  } else                                                              
    _ISR_Enable( level );                                             
 800a664:	d0 03 00 00 	wcsr IE,r3                                     <== NOT EXECUTED
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 800a668:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 800a66c:	38 21 36 c8 	ori r1,r1,0x36c8                               <== NOT EXECUTED
 800a670:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
 800a674:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800a678:	f8 00 00 0b 	calli 800a6a4 <_Thread_Clear_state>            <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)                                    
  if ( !_Objects_Is_local_id( the_thread->Object.id ) )               
    _Thread_MP_Free_proxy( the_thread );                              
#endif                                                                
                                                                      
}                                                                     
 800a67c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800a680:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 800a684:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 800a688:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(                       
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_REMOVE_IT;                           
 800a68c:	34 01 00 03 	mvi r1,3                                       <== NOT EXECUTED
 800a690:	59 61 00 50 	sw (r11+80),r1                                 <== NOT EXECUTED
   *  If the sync state is timed out, this is very likely not needed. 
   *  But better safe than sorry when it comes to critical sections.  
   */                                                                 
  if ( _Watchdog_Is_active( &the_thread->Timer ) ) {                  
    _Watchdog_Deactivate( &the_thread->Timer );                       
    _ISR_Enable( level );                                             
 800a694:	d0 03 00 00 	wcsr IE,r3                                     <== NOT EXECUTED
    (void) _Watchdog_Remove( &the_thread->Timer );                    
 800a698:	35 61 00 48 	addi r1,r11,72                                 <== NOT EXECUTED
 800a69c:	fb ff f1 ed 	calli 8006e50 <_Watchdog_Remove>               <== NOT EXECUTED
 800a6a0:	e3 ff ff f2 	bi 800a668 <_Thread_blocking_operation_Cancel+0x24><== NOT EXECUTED
                                                                      

0800a82c <_Thread_queue_Enqueue_fifo>: ) { Thread_blocking_operation_States sync_state; ISR_Level level; _ISR_Disable( level );
 800a82c:	90 00 20 00 	rcsr r4,IE                                     
 800a830:	34 05 ff fe 	mvi r5,-2                                      
 800a834:	a0 85 28 00 	and r5,r4,r5                                   
 800a838:	d0 05 00 00 	wcsr IE,r5                                     
                                                                      
    sync_state = the_thread_queue->sync_state;                        
 800a83c:	28 25 00 30 	lw r5,(r1+48)                                  
    the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
    if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {   
 800a840:	34 06 00 01 	mvi r6,1                                       
  ISR_Level                        level;                             
                                                                      
  _ISR_Disable( level );                                              
                                                                      
    sync_state = the_thread_queue->sync_state;                        
    the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
 800a844:	58 20 00 30 	sw (r1+48),r0                                  
    if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {   
 800a848:	44 a6 00 04 	be r5,r6,800a858 <_Thread_queue_Enqueue_fifo+0x2c><== ALWAYS TAKEN
   *  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;                                                   
 800a84c:	58 64 00 00 	sw (r3+0),r4                                   <== NOT EXECUTED
  return sync_state;                                                  
}                                                                     
 800a850:	b8 a0 08 00 	mv r1,r5                                       <== NOT EXECUTED
 800a854:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800a858:	28 23 00 08 	lw r3,(r1+8)                                   
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 800a85c:	34 26 00 04 	addi r6,r1,4                                   
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 800a860:	58 46 00 00 	sw (r2+0),r6                                   
  tail->previous = the_node;                                          
 800a864:	58 22 00 08 	sw (r1+8),r2                                   
  old_last->next = the_node;                                          
 800a868:	58 62 00 00 	sw (r3+0),r2                                   
  the_node->previous = old_last;                                      
 800a86c:	58 43 00 04 	sw (r2+4),r3                                   
    if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {   
      _Chain_Append_unprotected(                                      
        &the_thread_queue->Queues.Fifo,                               
        &the_thread->Object.Node                                      
      );                                                              
      the_thread->Wait.queue = the_thread_queue;                      
 800a870:	58 41 00 44 	sw (r2+68),r1                                  
                                                                      
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
      _ISR_Enable( level );                                           
 800a874:	d0 04 00 00 	wcsr IE,r4                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return sync_state;                                                  
}                                                                     
 800a878:	b8 a0 08 00 	mv r1,r5                                       
 800a87c:	c3 a0 00 00 	ret                                            
                                                                      

08006140 <_Thread_queue_Enqueue_priority>: Thread_blocking_operation_States _Thread_queue_Enqueue_priority ( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, ISR_Level *level_p ) {
 8006140:	37 9c ff f4 	addi sp,sp,-12                                 
 8006144:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8006148:	5b 8c 00 08 	sw (sp+8),r12                                  
 800614c:	5b 8d 00 04 	sw (sp+4),r13                                  
  Priority_Control     priority;                                      
  States_Control       block_state;                                   
                                                                      
  _Chain_Initialize_empty( &the_thread->Wait.Block2n );               
                                                                      
  priority     = the_thread->current_priority;                        
 8006150:	28 45 00 14 	lw r5,(r2+20)                                  
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 );                        
 8006154:	34 47 00 3c 	addi r7,r2,60                                  
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 8006158:	34 46 00 38 	addi r6,r2,56                                  
                                                                      
RTEMS_INLINE_ROUTINE uint32_t   _Thread_queue_Header_number (         
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);      
 800615c:	00 a4 00 01 	srui r4,r5,1                                   
 8006160:	78 0c 08 01 	mvhi r12,0x801                                 
 8006164:	00 84 00 01 	srui r4,r4,1                                   
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8006168:	58 47 00 38 	sw (r2+56),r7                                  
 800616c:	00 84 00 01 	srui r4,r4,1                                   
  head->previous = NULL;                                              
  tail->previous = head;                                              
 8006170:	58 46 00 40 	sw (r2+64),r6                                  
 8006174:	00 84 00 01 	srui r4,r4,1                                   
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
 8006178:	58 40 00 3c 	sw (r2+60),r0                                  
 800617c:	00 84 00 01 	srui r4,r4,1                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_queue_Is_reverse_search (           
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return ( the_priority & TASK_QUEUE_DATA_REVERSE_SEARCH_MASK );      
 8006180:	20 a8 00 20 	andi r8,r5,0x20                                
                                                                      
RTEMS_INLINE_ROUTINE uint32_t   _Thread_queue_Header_number (         
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);      
 8006184:	00 84 00 01 	srui r4,r4,1                                   
  header_index = _Thread_queue_Header_number( priority );             
  header       = &the_thread_queue->Queues.Priority[ header_index ];  
  block_state  = the_thread_queue->state;                             
 8006188:	28 27 00 38 	lw r7,(r1+56)                                  
 800618c:	b4 84 30 00 	add r6,r4,r4                                   
 8006190:	39 8c 40 f0 	ori r12,r12,0x40f0                             
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
 8006194:	5d 00 00 18 	bne r8,r0,80061f4 <_Thread_queue_Enqueue_priority+0xb4>
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8006198:	b4 c4 20 00 	add r4,r6,r4                                   
 800619c:	b4 84 20 00 	add r4,r4,r4                                   
 80061a0:	b4 84 20 00 	add r4,r4,r4                                   
 80061a4:	b4 24 60 00 	add r12,r1,r4                                  
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
    goto restart_reverse_search;                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
 80061a8:	34 0d ff fe 	mvi r13,-2                                     
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  Chain_Control *the_chain,                                           
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Tail(the_chain));                        
 80061ac:	35 8b 00 04 	addi r11,r12,4                                 
 80061b0:	90 00 40 00 	rcsr r8,IE                                     
 80061b4:	a1 0d 50 00 	and r10,r8,r13                                 
 80061b8:	d0 0a 00 00 	wcsr IE,r10                                    
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 80061bc:	29 84 00 00 	lw r4,(r12+0)                                  
                                                                      
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 ) ) {  
 80061c0:	5c 8b 00 04 	bne r4,r11,80061d0 <_Thread_queue_Enqueue_priority+0x90>
 80061c4:	e0 00 00 24 	bi 8006254 <_Thread_queue_Enqueue_priority+0x114>
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
      _ISR_Enable( level );                                           
      goto restart_forward_search;                                    
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
 80061c8:	28 84 00 00 	lw r4,(r4+0)                                   
                                                                      
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 ) ) {  
 80061cc:	44 8b 00 23 	be r4,r11,8006258 <_Thread_queue_Enqueue_priority+0x118>
    search_priority = search_thread->current_priority;                
 80061d0:	28 86 00 14 	lw r6,(r4+20)                                  
    if ( priority <= search_priority )                                
 80061d4:	50 c5 00 21 	bgeu r6,r5,8006258 <_Thread_queue_Enqueue_priority+0x118>
      break;                                                          
    search_priority = search_thread->current_priority;                
    if ( priority <= search_priority )                                
      break;                                                          
#endif                                                                
    _ISR_Flash( level );                                              
 80061d8:	d0 08 00 00 	wcsr IE,r8                                     
 80061dc:	d0 0a 00 00 	wcsr IE,r10                                    
RTEMS_INLINE_ROUTINE bool _States_Are_set (                           
  States_Control the_states,                                          
  States_Control mask                                                 
)                                                                     
{                                                                     
   return ( (the_states & mask) != STATES_READY);                     
 80061e0:	28 89 00 10 	lw r9,(r4+16)                                  
 80061e4:	a0 e9 48 00 	and r9,r7,r9                                   
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
 80061e8:	5d 20 ff f8 	bne r9,r0,80061c8 <_Thread_queue_Enqueue_priority+0x88><== ALWAYS TAKEN
      _ISR_Enable( level );                                           
 80061ec:	d0 08 00 00 	wcsr IE,r8                                     <== NOT EXECUTED
      goto restart_forward_search;                                    
 80061f0:	e3 ff ff f0 	bi 80061b0 <_Thread_queue_Enqueue_priority+0x70><== NOT EXECUTED
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 80061f4:	b4 c4 20 00 	add r4,r6,r4                                   
 80061f8:	b4 84 20 00 	add r4,r4,r4                                   
 80061fc:	b4 84 20 00 	add r4,r4,r4                                   
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
                                                                      
  _ISR_Disable( level );                                              
 8006200:	34 0d ff fe 	mvi r13,-2                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8006204:	b4 24 50 00 	add r10,r1,r4                                  
  the_thread->Wait.queue = the_thread_queue;                          
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
 8006208:	41 86 00 00 	lbu r6,(r12+0)                                 
 800620c:	34 c6 00 01 	addi r6,r6,1                                   
                                                                      
  _ISR_Disable( level );                                              
 8006210:	90 00 40 00 	rcsr r8,IE                                     
 8006214:	a1 0d 58 00 	and r11,r8,r13                                 
 8006218:	d0 0b 00 00 	wcsr IE,r11                                    
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 800621c:	29 44 00 08 	lw r4,(r10+8)                                  
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 ) ) {  
 8006220:	5c 8a 00 04 	bne r4,r10,8006230 <_Thread_queue_Enqueue_priority+0xf0>
 8006224:	e0 00 00 18 	bi 8006284 <_Thread_queue_Enqueue_priority+0x144>
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
      _ISR_Enable( level );                                           
      goto restart_reverse_search;                                    
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
 8006228:	28 84 00 04 	lw 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 ) ) {  
 800622c:	44 8a 00 16 	be r4,r10,8006284 <_Thread_queue_Enqueue_priority+0x144>
    search_priority = search_thread->current_priority;                
 8006230:	28 86 00 14 	lw r6,(r4+20)                                  
    if ( priority >= search_priority )                                
 8006234:	50 a6 00 14 	bgeu r5,r6,8006284 <_Thread_queue_Enqueue_priority+0x144>
      break;                                                          
    search_priority = search_thread->current_priority;                
    if ( priority >= search_priority )                                
      break;                                                          
#endif                                                                
    _ISR_Flash( level );                                              
 8006238:	d0 08 00 00 	wcsr IE,r8                                     
 800623c:	d0 0b 00 00 	wcsr IE,r11                                    
 8006240:	28 89 00 10 	lw r9,(r4+16)                                  
 8006244:	a0 e9 48 00 	and r9,r7,r9                                   
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
 8006248:	5d 20 ff f8 	bne r9,r0,8006228 <_Thread_queue_Enqueue_priority+0xe8><== ALWAYS TAKEN
      _ISR_Enable( level );                                           
 800624c:	d0 08 00 00 	wcsr IE,r8                                     <== NOT EXECUTED
      goto restart_reverse_search;                                    
 8006250:	e3 ff ff ee 	bi 8006208 <_Thread_queue_Enqueue_priority+0xc8><== NOT EXECUTED
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
    goto restart_reverse_search;                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
 8006254:	34 06 ff ff 	mvi r6,-1                                      
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
 8006258:	28 27 00 30 	lw r7,(r1+48)                                  
 800625c:	34 0a 00 01 	mvi r10,1                                      
 8006260:	b9 00 48 00 	mv r9,r8                                       
 8006264:	44 ea 00 1b 	be r7,r10,80062d0 <_Thread_queue_Enqueue_priority+0x190><== ALWAYS TAKEN
   *  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;                                                   
 8006268:	58 69 00 00 	sw (r3+0),r9                                   <== NOT EXECUTED
  return the_thread_queue->sync_state;                                
}                                                                     
 800626c:	b8 e0 08 00 	mv r1,r7                                       
 8006270:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8006274:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8006278:	2b 8d 00 04 	lw r13,(sp+4)                                  
 800627c:	37 9c 00 0c 	addi sp,sp,12                                  
 8006280:	c3 a0 00 00 	ret                                            
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
 8006284:	28 27 00 30 	lw r7,(r1+48)                                  
 8006288:	34 0a 00 01 	mvi r10,1                                      
 800628c:	b9 00 48 00 	mv r9,r8                                       
 8006290:	5c ea ff f6 	bne r7,r10,8006268 <_Thread_queue_Enqueue_priority+0x128><== NEVER TAKEN
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
 8006294:	58 20 00 30 	sw (r1+48),r0                                  
                                                                      
  if ( priority == search_priority )                                  
 8006298:	44 a6 00 1d 	be r5,r6,800630c <_Thread_queue_Enqueue_priority+0x1cc>
    goto equal_priority;                                              
                                                                      
  search_node = (Chain_Node *) search_thread;                         
  next_node   = search_node->next;                                    
 800629c:	28 83 00 00 	lw r3,(r4+0)                                   
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
  the_node->previous      = search_node;                              
 80062a0:	58 44 00 04 	sw (r2+4),r4                                   
                                                                      
  search_node = (Chain_Node *) search_thread;                         
  next_node   = search_node->next;                                    
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
 80062a4:	58 43 00 00 	sw (r2+0),r3                                   
  the_node->previous      = search_node;                              
  search_node->next       = the_node;                                 
 80062a8:	58 82 00 00 	sw (r4+0),r2                                   
  next_node->previous    = the_node;                                  
 80062ac:	58 62 00 04 	sw (r3+4),r2                                   
  the_thread->Wait.queue = the_thread_queue;                          
 80062b0:	58 41 00 44 	sw (r2+68),r1                                  
  _ISR_Enable( level );                                               
 80062b4:	d0 08 00 00 	wcsr IE,r8                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 80062b8:	b8 e0 08 00 	mv r1,r7                                       
 80062bc:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80062c0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80062c4:	2b 8d 00 04 	lw r13,(sp+4)                                  
 80062c8:	37 9c 00 0c 	addi sp,sp,12                                  
 80062cc:	c3 a0 00 00 	ret                                            
                                                                      
  if ( the_thread_queue->sync_state !=                                
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
 80062d0:	58 20 00 30 	sw (r1+48),r0                                  
                                                                      
  if ( priority == search_priority )                                  
 80062d4:	44 a6 00 0e 	be r5,r6,800630c <_Thread_queue_Enqueue_priority+0x1cc>
    goto equal_priority;                                              
                                                                      
  search_node   = (Chain_Node *) search_thread;                       
  previous_node = search_node->previous;                              
 80062d8:	28 83 00 04 	lw r3,(r4+4)                                   
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
 80062dc:	58 44 00 00 	sw (r2+0),r4                                   
  the_node->previous     = previous_node;                             
 80062e0:	58 43 00 04 	sw (r2+4),r3                                   
  previous_node->next    = the_node;                                  
 80062e4:	58 62 00 00 	sw (r3+0),r2                                   
  search_node->previous  = the_node;                                  
 80062e8:	58 82 00 04 	sw (r4+4),r2                                   
  the_thread->Wait.queue = the_thread_queue;                          
 80062ec:	58 41 00 44 	sw (r2+68),r1                                  
  _ISR_Enable( level );                                               
 80062f0:	d0 08 00 00 	wcsr IE,r8                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 80062f4:	b8 e0 08 00 	mv r1,r7                                       
 80062f8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80062fc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8006300:	2b 8d 00 04 	lw r13,(sp+4)                                  
 8006304:	37 9c 00 0c 	addi sp,sp,12                                  
 8006308:	c3 a0 00 00 	ret                                            
  _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;                              
 800630c:	28 83 00 40 	lw r3,(r4+64)                                  
  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 );        
 8006310:	34 85 00 3c 	addi r5,r4,60                                  
  previous_node = search_node->previous;                              
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
 8006314:	58 45 00 00 	sw (r2+0),r5                                   
  the_node->previous     = previous_node;                             
 8006318:	58 43 00 04 	sw (r2+4),r3                                   
  previous_node->next    = the_node;                                  
 800631c:	58 62 00 00 	sw (r3+0),r2                                   
  search_node->previous  = the_node;                                  
 8006320:	58 82 00 40 	sw (r4+64),r2                                  
  the_thread->Wait.queue = the_thread_queue;                          
 8006324:	58 41 00 44 	sw (r2+68),r1                                  
  _ISR_Enable( level );                                               
 8006328:	d0 08 00 00 	wcsr IE,r8                                     
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
 800632c:	34 07 00 01 	mvi r7,1                                       
 8006330:	e3 ff ff cf 	bi 800626c <_Thread_queue_Enqueue_priority+0x12c>
                                                                      

08006064 <_Thread_queue_Enqueue_with_handler>: void _Thread_queue_Enqueue_with_handler( Thread_queue_Control *the_thread_queue, Watchdog_Interval timeout, Thread_queue_Timeout_callout handler ) {
 8006064:	37 9c ff e8 	addi sp,sp,-24                                 
 8006068:	5b 8b 00 14 	sw (sp+20),r11                                 
 800606c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006070:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006074:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006078:	5b 9d 00 04 	sw (sp+4),ra                                   
    Thread_queue_Control *,                                           
    Thread_Control *,                                                 
    ISR_Level *                                                       
  );                                                                  
                                                                      
  the_thread = _Thread_Executing;                                     
 800607c:	78 04 08 01 	mvhi r4,0x801                                  
 8006080:	38 84 4d b4 	ori r4,r4,0x4db4                               
 8006084:	28 8b 00 0c 	lw r11,(r4+12)                                 
void _Thread_queue_Enqueue_with_handler(                              
  Thread_queue_Control         *the_thread_queue,                     
  Watchdog_Interval             timeout,                              
  Thread_queue_Timeout_callout  handler                               
)                                                                     
{                                                                     
 8006088:	b8 40 68 00 	mv r13,r2                                      
  else                                                                
#endif                                                                
  /*                                                                  
   *  Set the blocking state for this thread queue in the thread.     
   */                                                                 
  _Thread_Set_state( the_thread, the_thread_queue->state );           
 800608c:	28 22 00 38 	lw r2,(r1+56)                                  
void _Thread_queue_Enqueue_with_handler(                              
  Thread_queue_Control         *the_thread_queue,                     
  Watchdog_Interval             timeout,                              
  Thread_queue_Timeout_callout  handler                               
)                                                                     
{                                                                     
 8006090:	b8 20 60 00 	mv r12,r1                                      
  else                                                                
#endif                                                                
  /*                                                                  
   *  Set the blocking state for this thread queue in the thread.     
   */                                                                 
  _Thread_Set_state( the_thread, the_thread_queue->state );           
 8006094:	b9 60 08 00 	mv r1,r11                                      
void _Thread_queue_Enqueue_with_handler(                              
  Thread_queue_Control         *the_thread_queue,                     
  Watchdog_Interval             timeout,                              
  Thread_queue_Timeout_callout  handler                               
)                                                                     
{                                                                     
 8006098:	b8 60 70 00 	mv r14,r3                                      
  else                                                                
#endif                                                                
  /*                                                                  
   *  Set the blocking state for this thread queue in the thread.     
   */                                                                 
  _Thread_Set_state( the_thread, the_thread_queue->state );           
 800609c:	f8 00 01 18 	calli 80064fc <_Thread_Set_state>              
                                                                      
  /*                                                                  
   *  If the thread wants to timeout, then schedule its timer.        
   */                                                                 
  if ( timeout ) {                                                    
 80060a0:	5d a0 00 16 	bne r13,r0,80060f8 <_Thread_queue_Enqueue_with_handler+0x94>
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 80060a4:	29 82 00 34 	lw r2,(r12+52)                                 
    enqueue_p = _Thread_queue_Enqueue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    enqueue_p = _Thread_queue_Enqueue_fifo;                           
 80060a8:	78 04 08 00 	mvhi r4,0x800                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 80060ac:	34 01 00 01 	mvi r1,1                                       
    enqueue_p = _Thread_queue_Enqueue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    enqueue_p = _Thread_queue_Enqueue_fifo;                           
 80060b0:	38 84 a8 2c 	ori r4,r4,0xa82c                               
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 80060b4:	44 41 00 20 	be r2,r1,8006134 <_Thread_queue_Enqueue_with_handler+0xd0>
    enqueue_p = _Thread_queue_Enqueue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    enqueue_p = _Thread_queue_Enqueue_fifo;                           
                                                                      
  sync_state = (*enqueue_p)( the_thread_queue, the_thread, &level );  
 80060b8:	b9 60 10 00 	mv r2,r11                                      
 80060bc:	b9 80 08 00 	mv r1,r12                                      
 80060c0:	37 83 00 18 	addi r3,sp,24                                  
 80060c4:	d8 80 00 00 	call r4                                        
  if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )     
 80060c8:	34 02 00 01 	mvi r2,1                                       
 80060cc:	44 22 00 04 	be r1,r2,80060dc <_Thread_queue_Enqueue_with_handler+0x78><== ALWAYS TAKEN
    _Thread_blocking_operation_Cancel( sync_state, the_thread, level );
 80060d0:	2b 83 00 18 	lw r3,(sp+24)                                  <== NOT EXECUTED
 80060d4:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 80060d8:	f8 00 11 5b 	calli 800a644 <_Thread_blocking_operation_Cancel><== NOT EXECUTED
}                                                                     
 80060dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80060e0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80060e4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80060e8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80060ec:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80060f0:	37 9c 00 18 	addi sp,sp,24                                  
 80060f4:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  If the thread wants to timeout, then schedule its timer.        
   */                                                                 
  if ( timeout ) {                                                    
    _Watchdog_Initialize(                                             
 80060f8:	29 61 00 08 	lw r1,(r11+8)                                  
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 80060fc:	35 62 00 48 	addi r2,r11,72                                 
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8006100:	59 60 00 50 	sw (r11+80),r0                                 
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
 8006104:	59 61 00 68 	sw (r11+104),r1                                
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8006108:	78 01 08 01 	mvhi r1,0x801                                  
 800610c:	38 21 49 c8 	ori r1,r1,0x49c8                               
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 8006110:	59 6e 00 64 	sw (r11+100),r14                               
  the_watchdog->id        = id;                                       
  the_watchdog->user_data = user_data;                                
 8006114:	59 60 00 6c 	sw (r11+108),r0                                
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8006118:	59 6d 00 54 	sw (r11+84),r13                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800611c:	f8 00 02 e2 	calli 8006ca4 <_Watchdog_Insert>               
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8006120:	29 82 00 34 	lw r2,(r12+52)                                 
    enqueue_p = _Thread_queue_Enqueue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    enqueue_p = _Thread_queue_Enqueue_fifo;                           
 8006124:	78 04 08 00 	mvhi r4,0x800                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8006128:	34 01 00 01 	mvi r1,1                                       
    enqueue_p = _Thread_queue_Enqueue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    enqueue_p = _Thread_queue_Enqueue_fifo;                           
 800612c:	38 84 a8 2c 	ori r4,r4,0xa82c                               
  }                                                                   
                                                                      
  /*                                                                  
   *  Now enqueue the thread per the discipline for this thread queue.
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8006130:	5c 41 ff e2 	bne r2,r1,80060b8 <_Thread_queue_Enqueue_with_handler+0x54>
    enqueue_p = _Thread_queue_Enqueue_priority;                       
 8006134:	78 04 08 00 	mvhi r4,0x800                                  
 8006138:	38 84 61 40 	ori r4,r4,0x6140                               
 800613c:	e3 ff ff df 	bi 80060b8 <_Thread_queue_Enqueue_with_handler+0x54>
                                                                      

0800aa0c <_Thread_queue_Process_timeout>: #include <rtems/score/tqdata.h> void _Thread_queue_Process_timeout( Thread_Control *the_thread ) {
 800aa0c:	37 9c ff fc 	addi sp,sp,-4                                  
 800aa10:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_queue_Control *the_thread_queue = the_thread->Wait.queue;    
 800aa14:	28 23 00 44 	lw r3,(r1+68)                                  
#include <rtems/score/tqdata.h>                                       
                                                                      
void _Thread_queue_Process_timeout(                                   
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 800aa18:	b8 20 20 00 	mv r4,r1                                       
   *  If it is not satisfied, then it is "nothing happened" and       
   *  this is the "timeout" transition.  After a request is satisfied,
   *  a timeout is not allowed to occur.                              
   */                                                                 
                                                                      
  if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
 800aa1c:	28 62 00 30 	lw r2,(r3+48)                                  
 800aa20:	44 40 00 05 	be r2,r0,800aa34 <_Thread_queue_Process_timeout+0x28><== ALWAYS TAKEN
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
 800aa24:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 800aa28:	38 21 4d b4 	ori r1,r1,0x4db4                               <== NOT EXECUTED
 800aa2c:	28 21 00 0c 	lw r1,(r1+12)                                  <== NOT EXECUTED
 800aa30:	44 81 00 09 	be r4,r1,800aa54 <_Thread_queue_Process_timeout+0x48><== NOT EXECUTED
    if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
      the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
    }                                                                 
  } else {                                                            
    the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
 800aa34:	28 65 00 3c 	lw r5,(r3+60)                                  
    _Thread_queue_Extract( the_thread->Wait.queue, the_thread );      
 800aa38:	b8 60 08 00 	mv r1,r3                                       
 800aa3c:	b8 80 10 00 	mv r2,r4                                       
    if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
      the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
    }                                                                 
  } else {                                                            
    the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
 800aa40:	58 85 00 34 	sw (r4+52),r5                                  
    _Thread_queue_Extract( the_thread->Wait.queue, the_thread );      
 800aa44:	fb ff ff 8f 	calli 800a880 <_Thread_queue_Extract>          
  }                                                                   
}                                                                     
 800aa48:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aa4c:	37 9c 00 04 	addi sp,sp,4                                   
 800aa50:	c3 a0 00 00 	ret                                            
   *  a timeout is not allowed to occur.                              
   */                                                                 
                                                                      
  if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
       _Thread_Is_executing( the_thread ) ) {                         
    if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
 800aa54:	34 01 00 03 	mvi r1,3                                       <== NOT EXECUTED
 800aa58:	44 41 ff fc 	be r2,r1,800aa48 <_Thread_queue_Process_timeout+0x3c><== NOT EXECUTED
      the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
 800aa5c:	28 61 00 3c 	lw r1,(r3+60)                                  <== NOT EXECUTED
 800aa60:	58 81 00 34 	sw (r4+52),r1                                  <== NOT EXECUTED
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
 800aa64:	34 01 00 02 	mvi r1,2                                       <== NOT EXECUTED
 800aa68:	58 61 00 30 	sw (r3+48),r1                                  <== NOT EXECUTED
 800aa6c:	e3 ff ff f7 	bi 800aa48 <_Thread_queue_Process_timeout+0x3c><== NOT EXECUTED
                                                                      

080063e0 <_Thread_queue_Requeue>: void _Thread_queue_Requeue( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) {
 80063e0:	37 9c ff ec 	addi sp,sp,-20                                 
 80063e4:	5b 8b 00 10 	sw (sp+16),r11                                 
 80063e8:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80063ec:	5b 8d 00 08 	sw (sp+8),r13                                  
 80063f0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80063f4:	b8 20 58 00 	mv r11,r1                                      
 80063f8:	b8 40 60 00 	mv r12,r2                                      
  /*                                                                  
   * Just in case the thread really wasn't blocked on a thread queue  
   * when we get here.                                                
   */                                                                 
  if ( !the_thread_queue )                                            
 80063fc:	44 20 00 04 	be r1,r0,800640c <_Thread_queue_Requeue+0x2c>  <== NEVER TAKEN
                                                                      
  /*                                                                  
   * If queueing by FIFO, there is nothing to do. This only applies to
   * priority blocking discipline.                                    
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
 8006400:	28 22 00 34 	lw r2,(r1+52)                                  
 8006404:	34 01 00 01 	mvi r1,1                                       
 8006408:	44 41 00 07 	be r2,r1,8006424 <_Thread_queue_Requeue+0x44>  <== ALWAYS TAKEN
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
    }                                                                 
    _ISR_Enable( level );                                             
  }                                                                   
}                                                                     
 800640c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8006410:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 8006414:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8006418:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 800641c:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 8006420:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
    Thread_queue_Control *tq = the_thread_queue;                      
    ISR_Level             level;                                      
    ISR_Level             level_ignored;                              
                                                                      
    _ISR_Disable( level );                                            
 8006424:	90 00 68 00 	rcsr r13,IE                                    
 8006428:	34 01 ff fe 	mvi r1,-2                                      
 800642c:	a1 a1 08 00 	and r1,r13,r1                                  
 8006430:	d0 01 00 00 	wcsr IE,r1                                     
 8006434:	78 03 08 01 	mvhi r3,0x801                                  
 8006438:	38 63 36 c0 	ori r3,r3,0x36c0                               
 800643c:	29 82 00 10 	lw r2,(r12+16)                                 
 8006440:	28 61 00 00 	lw r1,(r3+0)                                   
 8006444:	a0 41 08 00 	and r1,r2,r1                                   
    if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
 8006448:	5c 20 00 08 	bne r1,r0,8006468 <_Thread_queue_Requeue+0x88> <== ALWAYS TAKEN
      _Thread_queue_Enter_critical_section( tq );                     
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
    }                                                                 
    _ISR_Enable( level );                                             
 800644c:	d0 0d 00 00 	wcsr IE,r13                                    <== NOT EXECUTED
  }                                                                   
}                                                                     
 8006450:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006454:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8006458:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800645c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8006460:	37 9c 00 14 	addi sp,sp,20                                  
 8006464:	c3 a0 00 00 	ret                                            
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (      
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
 8006468:	34 01 00 01 	mvi r1,1                                       
 800646c:	59 61 00 30 	sw (r11+48),r1                                 
    ISR_Level             level_ignored;                              
                                                                      
    _ISR_Disable( level );                                            
    if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
      _Thread_queue_Enter_critical_section( tq );                     
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
 8006470:	b9 80 10 00 	mv r2,r12                                      
 8006474:	b9 60 08 00 	mv r1,r11                                      
 8006478:	34 03 00 01 	mvi r3,1                                       
 800647c:	f8 00 11 0f 	calli 800a8b8 <_Thread_queue_Extract_priority_helper>
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
 8006480:	b9 60 08 00 	mv r1,r11                                      
 8006484:	b9 80 10 00 	mv r2,r12                                      
 8006488:	37 83 00 14 	addi r3,sp,20                                  
 800648c:	fb ff ff 2d 	calli 8006140 <_Thread_queue_Enqueue_priority> 
    }                                                                 
    _ISR_Enable( level );                                             
 8006490:	d0 0d 00 00 	wcsr IE,r13                                    
 8006494:	e3 ff ff ef 	bi 8006450 <_Thread_queue_Requeue+0x70>        
                                                                      

08006498 <_Thread_queue_Timeout>: void _Thread_queue_Timeout( Objects_Id id, void *ignored __attribute__((unused)) ) {
 8006498:	37 9c ff f8 	addi sp,sp,-8                                  
 800649c:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 80064a0:	37 82 00 08 	addi r2,sp,8                                   
 80064a4:	fb ff fd 81 	calli 8005aa8 <_Thread_Get>                    
  switch ( location ) {                                               
 80064a8:	2b 82 00 08 	lw r2,(sp+8)                                   
 80064ac:	5c 40 00 07 	bne r2,r0,80064c8 <_Thread_queue_Timeout+0x30> <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_queue_Process_timeout( the_thread );                    
 80064b0:	f8 00 11 57 	calli 800aa0c <_Thread_queue_Process_timeout>  
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
 80064b4:	78 01 08 01 	mvhi r1,0x801                                  
 80064b8:	38 21 49 08 	ori r1,r1,0x4908                               
 80064bc:	28 22 00 00 	lw r2,(r1+0)                                   
 80064c0:	34 42 ff ff 	addi r2,r2,-1                                  
 80064c4:	58 22 00 00 	sw (r1+0),r2                                   
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
 80064c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80064cc:	37 9c 00 08 	addi sp,sp,8                                   
 80064d0:	c3 a0 00 00 	ret                                            
                                                                      

0801456c <_Timer_server_Body>: * @a arg points to the corresponding timer server control block. */ static rtems_task _Timer_server_Body( rtems_task_argument arg ) {
 801456c:	37 9c ff a4 	addi sp,sp,-92                                 
 8014570:	5b 8b 00 44 	sw (sp+68),r11                                 
 8014574:	5b 8c 00 40 	sw (sp+64),r12                                 
 8014578:	5b 8d 00 3c 	sw (sp+60),r13                                 
 801457c:	5b 8e 00 38 	sw (sp+56),r14                                 
 8014580:	5b 8f 00 34 	sw (sp+52),r15                                 
 8014584:	5b 90 00 30 	sw (sp+48),r16                                 
 8014588:	5b 91 00 2c 	sw (sp+44),r17                                 
 801458c:	5b 92 00 28 	sw (sp+40),r18                                 
 8014590:	5b 93 00 24 	sw (sp+36),r19                                 
 8014594:	5b 94 00 20 	sw (sp+32),r20                                 
 8014598:	5b 95 00 1c 	sw (sp+28),r21                                 
 801459c:	5b 96 00 18 	sw (sp+24),r22                                 
 80145a0:	5b 97 00 14 	sw (sp+20),r23                                 
 80145a4:	5b 98 00 10 	sw (sp+16),r24                                 
 80145a8:	5b 99 00 0c 	sw (sp+12),r25                                 
 80145ac:	5b 9b 00 08 	sw (sp+8),fp                                   
 80145b0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80145b4:	78 13 08 04 	mvhi r19,0x804                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80145b8:	37 96 00 54 	addi r22,sp,84                                 
 80145bc:	37 95 00 58 	addi r21,sp,88                                 
 80145c0:	37 8e 00 48 	addi r14,sp,72                                 
 80145c4:	37 94 00 4c 	addi r20,sp,76                                 
 80145c8:	78 12 08 04 	mvhi r18,0x804                                 
 80145cc:	78 17 08 04 	mvhi r23,0x804                                 
 80145d0:	b8 20 58 00 	mv r11,r1                                      
 80145d4:	5b 95 00 54 	sw (sp+84),r21                                 
  head->previous = NULL;                                              
 80145d8:	5b 80 00 58 	sw (sp+88),r0                                  
  tail->previous = head;                                              
 80145dc:	5b 96 00 5c 	sw (sp+92),r22                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80145e0:	5b 94 00 48 	sw (sp+72),r20                                 
  head->previous = NULL;                                              
 80145e4:	5b 80 00 4c 	sw (sp+76),r0                                  
  tail->previous = head;                                              
 80145e8:	5b 8e 00 50 	sw (sp+80),r14                                 
 80145ec:	3a 73 0e 20 	ori r19,r19,0xe20                              
 80145f0:	34 30 00 30 	addi r16,r1,48                                 
 80145f4:	3a 52 0d 98 	ori r18,r18,0xd98                              
 80145f8:	34 2f 00 68 	addi r15,r1,104                                
 80145fc:	3a f7 0d 10 	ori r23,r23,0xd10                              
 8014600:	34 3b 00 08 	addi fp,r1,8                                   
 8014604:	34 39 00 40 	addi r25,r1,64                                 
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
 8014608:	34 0d 00 03 	mvi r13,3                                      
     *  of zero it will be processed in the next iteration of the timer server
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
 801460c:	34 11 ff fe 	mvi r17,-2                                     
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
        _Timer_server_Reset_interval_system_watchdog( ts );           
        _Timer_server_Reset_tod_system_watchdog( ts );                
      _Thread_Enable_dispatch();                                      
                                                                      
      ts->active = true;                                              
 8014610:	34 18 00 01 	mvi r24,1                                      
{                                                                     
  /*                                                                  
   *  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;                                    
 8014614:	59 76 00 78 	sw (r11+120),r22                               
static void _Timer_server_Process_interval_watchdogs(                 
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
 8014618:	2a 62 00 00 	lw r2,(r19+0)                                  
                                                                      
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
 801461c:	29 63 00 3c 	lw r3,(r11+60)                                 
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
 8014620:	ba 00 08 00 	mv r1,r16                                      
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
 8014624:	59 62 00 3c 	sw (r11+60),r2                                 
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
 8014628:	c8 43 10 00 	sub r2,r2,r3                                   
 801462c:	b9 c0 18 00 	mv r3,r14                                      
 8014630:	f8 00 15 a6 	calli 8019cc8 <_Watchdog_Adjust_to_chain>      
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
  Watchdog_Interval last_snapshot = watchdogs->last_snapshot;         
 8014634:	29 64 00 74 	lw r4,(r11+116)                                
static void _Timer_server_Process_tod_watchdogs(                      
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
 8014638:	2a 4c 00 00 	lw r12,(r18+0)                                 
  /*                                                                  
   *  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 ) {                                   
 801463c:	50 8c 00 1c 	bgeu r4,r12,80146ac <_Timer_server_Body+0x140> 
    /*                                                                
     *  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 );
 8014640:	b9 e0 08 00 	mv r1,r15                                      
 8014644:	c9 84 10 00 	sub r2,r12,r4                                  
 8014648:	b9 c0 18 00 	mv r3,r14                                      
 801464c:	f8 00 15 9f 	calli 8019cc8 <_Watchdog_Adjust_to_chain>      
      */                                                              
     delta = last_snapshot - snapshot;                                
     _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 
  }                                                                   
                                                                      
  watchdogs->last_snapshot = snapshot;                                
 8014650:	59 6c 00 74 	sw (r11+116),r12                               
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
 8014654:	34 0c 00 01 	mvi r12,1                                      
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
 8014658:	29 61 00 78 	lw r1,(r11+120)                                
 801465c:	f8 00 03 4b 	calli 8015388 <_Chain_Get>                     
 8014660:	b8 20 10 00 	mv r2,r1                                       
                                                                      
    if ( timer == NULL ) {                                            
 8014664:	44 20 00 0b 	be r1,r0,8014690 <_Timer_server_Body+0x124>    <== ALWAYS TAKEN
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
 8014668:	28 24 00 38 	lw r4,(r1+56)                                  <== NOT EXECUTED
 801466c:	44 8c 00 16 	be r4,r12,80146c4 <_Timer_server_Body+0x158>   <== NOT EXECUTED
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
 8014670:	5c 8d ff fa 	bne r4,r13,8014658 <_Timer_server_Body+0xec>   <== NOT EXECUTED
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
 8014674:	34 42 00 10 	addi r2,r2,16                                  <== NOT EXECUTED
 8014678:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 801467c:	f8 00 15 b9 	calli 8019d60 <_Watchdog_Insert>               <== NOT EXECUTED
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
 8014680:	29 61 00 78 	lw r1,(r11+120)                                <== NOT EXECUTED
 8014684:	f8 00 03 41 	calli 8015388 <_Chain_Get>                     <== NOT EXECUTED
 8014688:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
                                                                      
    if ( timer == NULL ) {                                            
 801468c:	5c 20 ff f7 	bne r1,r0,8014668 <_Timer_server_Body+0xfc>    <== NOT EXECUTED
     *  of zero it will be processed in the next iteration of the timer server
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
 8014690:	90 00 10 00 	rcsr r2,IE                                     
 8014694:	a0 51 18 00 	and r3,r2,r17                                  
 8014698:	d0 03 00 00 	wcsr IE,r3                                     
    if ( _Chain_Is_empty( insert_chain ) ) {                          
 801469c:	2b 83 00 54 	lw r3,(sp+84)                                  
 80146a0:	44 75 00 0d 	be r3,r21,80146d4 <_Timer_server_Body+0x168>   <== ALWAYS TAKEN
      ts->insert_chain = NULL;                                        
      _ISR_Enable( level );                                           
                                                                      
      break;                                                          
    } else {                                                          
      _ISR_Enable( level );                                           
 80146a4:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
 80146a8:	e3 ff ff dc 	bi 8014618 <_Timer_server_Body+0xac>           <== NOT EXECUTED
     *  TOD has been set forward.                                     
     */                                                               
    delta = snapshot - last_snapshot;                                 
    _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
                                                                      
  } else if ( snapshot < last_snapshot ) {                            
 80146ac:	51 84 ff e9 	bgeu r12,r4,8014650 <_Timer_server_Body+0xe4>  
     /*                                                               
      *  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 ); 
 80146b0:	b9 e0 08 00 	mv r1,r15                                      
 80146b4:	34 02 00 01 	mvi r2,1                                       
 80146b8:	c8 8c 18 00 	sub r3,r4,r12                                  
 80146bc:	f8 00 15 45 	calli 8019bd0 <_Watchdog_Adjust>               
 80146c0:	e3 ff ff e4 	bi 8014650 <_Timer_server_Body+0xe4>           
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
 80146c4:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 80146c8:	34 42 00 10 	addi r2,r2,16                                  <== NOT EXECUTED
 80146cc:	f8 00 15 a5 	calli 8019d60 <_Watchdog_Insert>               <== NOT EXECUTED
 80146d0:	e3 ff ff e2 	bi 8014658 <_Timer_server_Body+0xec>           <== NOT EXECUTED
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
    if ( _Chain_Is_empty( insert_chain ) ) {                          
      ts->insert_chain = NULL;                                        
 80146d4:	59 60 00 78 	sw (r11+120),r0                                
      _ISR_Enable( level );                                           
 80146d8:	d0 02 00 00 	wcsr IE,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 ) ) {                          
 80146dc:	2b 82 00 48 	lw r2,(sp+72)                                  
 80146e0:	5c 54 00 0b 	bne r2,r20,801470c <_Timer_server_Body+0x1a0>  
 80146e4:	e0 00 00 11 	bi 8014728 <_Timer_server_Body+0x1bc>          
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
 80146e8:	28 43 00 00 	lw r3,(r2+0)                                   
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
 80146ec:	58 6e 00 04 	sw (r3+4),r14                                  
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
 80146f0:	5b 83 00 48 	sw (sp+72),r3                                  
         *  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;                        
 80146f4:	58 40 00 08 	sw (r2+8),r0                                   
          _ISR_Enable( level );                                       
 80146f8:	d0 04 00 00 	wcsr IE,r4                                     
        /*                                                            
         *  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 );    
 80146fc:	28 43 00 1c 	lw r3,(r2+28)                                  
 8014700:	28 41 00 20 	lw r1,(r2+32)                                  
 8014704:	28 42 00 24 	lw r2,(r2+36)                                  
 8014708:	d8 60 00 00 	call r3                                        
                                                                      
        /*                                                            
         *  It is essential that interrupts are disable here since an interrupt
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
 801470c:	90 00 20 00 	rcsr r4,IE                                     
 8014710:	a0 91 10 00 	and r2,r4,r17                                  
 8014714:	d0 02 00 00 	wcsr IE,r2                                     
      initialized = false;                                            
    }                                                                 
  #endif                                                              
                                                                      
  return status;                                                      
}                                                                     
 8014718:	2b 82 00 48 	lw r2,(sp+72)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 801471c:	5c 54 ff f3 	bne r2,r20,80146e8 <_Timer_server_Body+0x17c>  
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
          _ISR_Enable( level );                                       
        } else {                                                      
          _ISR_Enable( level );                                       
 8014720:	d0 04 00 00 	wcsr IE,r4                                     
 8014724:	e3 ff ff bc 	bi 8014614 <_Timer_server_Body+0xa8>           
         *  the active flag of the timer server is true.              
         */                                                           
        (*watchdog->routine)( watchdog->id, watchdog->user_data );    
      }                                                               
    } else {                                                          
      ts->active = false;                                             
 8014728:	31 60 00 7c 	sb (r11+124),r0                                
 801472c:	2a e1 00 00 	lw r1,(r23+0)                                  
 8014730:	34 21 00 01 	addi r1,r1,1                                   
 8014734:	5a e1 00 00 	sw (r23+0),r1                                  
                                                                      
      /*                                                              
       *  Block until there is something to do.                       
       */                                                             
      _Thread_Disable_dispatch();                                     
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
 8014738:	29 61 00 00 	lw r1,(r11+0)                                  
 801473c:	34 02 00 08 	mvi r2,8                                       
 8014740:	f8 00 13 07 	calli 801935c <_Thread_Set_state>              
        _Timer_server_Reset_interval_system_watchdog( ts );           
 8014744:	b9 60 08 00 	mv r1,r11                                      
 8014748:	fb ff ff 47 	calli 8014464 <_Timer_server_Reset_interval_system_watchdog>
        _Timer_server_Reset_tod_system_watchdog( ts );                
 801474c:	b9 60 08 00 	mv r1,r11                                      
 8014750:	fb ff ff 66 	calli 80144e8 <_Timer_server_Reset_tod_system_watchdog>
      _Thread_Enable_dispatch();                                      
 8014754:	f8 00 10 2f 	calli 8018810 <_Thread_Enable_dispatch>        
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
 8014758:	bb 60 08 00 	mv r1,fp                                       
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
        _Timer_server_Reset_interval_system_watchdog( ts );           
        _Timer_server_Reset_tod_system_watchdog( ts );                
      _Thread_Enable_dispatch();                                      
                                                                      
      ts->active = true;                                              
 801475c:	31 78 00 7c 	sb (r11+124),r24                               
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
 8014760:	f8 00 15 eb 	calli 8019f0c <_Watchdog_Remove>               
                                                                      
static void _Timer_server_Stop_tod_system_watchdog(                   
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );             
 8014764:	bb 20 08 00 	mv r1,r25                                      
 8014768:	f8 00 15 e9 	calli 8019f0c <_Watchdog_Remove>               
 801476c:	e3 ff ff aa 	bi 8014614 <_Timer_server_Body+0xa8>           
                                                                      

08014770 <_Timer_server_Schedule_operation_method>: static void _Timer_server_Schedule_operation_method( Timer_server_Control *ts, Timer_Control *timer ) {
 8014770:	37 9c ff f8 	addi sp,sp,-8                                  
 8014774:	5b 8b 00 08 	sw (sp+8),r11                                  
 8014778:	5b 9d 00 04 	sw (sp+4),ra                                   
 801477c:	b8 20 58 00 	mv r11,r1                                      
  if ( ts->insert_chain == NULL ) {                                   
 8014780:	28 21 00 78 	lw r1,(r1+120)                                 
                                                                      
static void _Timer_server_Schedule_operation_method(                  
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
 8014784:	b8 40 18 00 	mv r3,r2                                       
  if ( ts->insert_chain == NULL ) {                                   
 8014788:	44 20 00 07 	be r1,r0,80147a4 <_Timer_server_Schedule_operation_method+0x34><== ALWAYS TAKEN
     *  server is not preemptible, so we must be in interrupt context here.  No
     *  thread dispatch will happen until the timer server finishes its
     *  critical section.  We have to use the protected chain methods because
     *  we may be interrupted by a higher priority interrupt.         
     */                                                               
    _Chain_Append( ts->insert_chain, &timer->Object.Node );           
 801478c:	29 61 00 78 	lw r1,(r11+120)                                <== NOT EXECUTED
 8014790:	f8 00 02 e8 	calli 8015330 <_Chain_Append>                  <== NOT EXECUTED
  }                                                                   
}                                                                     
 8014794:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8014798:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 801479c:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 80147a0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
 80147a4:	78 01 08 04 	mvhi r1,0x804                                  
 80147a8:	38 21 0d 10 	ori r1,r1,0xd10                                
 80147ac:	28 22 00 00 	lw r2,(r1+0)                                   
 80147b0:	34 42 00 01 	addi r2,r2,1                                   
 80147b4:	58 22 00 00 	sw (r1+0),r2                                   
   *  being inserted.  This could result in an integer overflow.      
   */                                                                 
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
 80147b8:	28 61 00 38 	lw r1,(r3+56)                                  
 80147bc:	34 02 00 01 	mvi r2,1                                       
 80147c0:	44 22 00 28 	be r1,r2,8014860 <_Timer_server_Schedule_operation_method+0xf0>
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
                                                                      
    if ( !ts->active ) {                                              
      _Timer_server_Reset_interval_system_watchdog( ts );             
    }                                                                 
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
 80147c4:	34 02 00 03 	mvi r2,3                                       
 80147c8:	44 22 00 06 	be r1,r2,80147e0 <_Timer_server_Schedule_operation_method+0x70>
    if ( !ts->active ) {                                              
      _Timer_server_Reset_tod_system_watchdog( ts );                  
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
 80147cc:	f8 00 10 11 	calli 8018810 <_Thread_Enable_dispatch>        
     *  critical section.  We have to use the protected chain methods because
     *  we may be interrupted by a higher priority interrupt.         
     */                                                               
    _Chain_Append( ts->insert_chain, &timer->Object.Node );           
  }                                                                   
}                                                                     
 80147d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80147d4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80147d8:	37 9c 00 08 	addi sp,sp,8                                   
 80147dc:	c3 a0 00 00 	ret                                            
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
    /*                                                                
     *  We have to advance the last known seconds value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
 80147e0:	90 00 38 00 	rcsr r7,IE                                     
 80147e4:	34 01 ff fe 	mvi r1,-2                                      
 80147e8:	a0 e1 08 00 	and r1,r7,r1                                   
 80147ec:	d0 01 00 00 	wcsr IE,r1                                     
      initialized = false;                                            
    }                                                                 
  #endif                                                              
                                                                      
  return status;                                                      
}                                                                     
 80147f0:	29 62 00 68 	lw r2,(r11+104)                                
    /*                                                                
     *  We have to advance the last known seconds value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
    snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();        
 80147f4:	78 01 08 04 	mvhi r1,0x804                                  
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
 80147f8:	29 64 00 74 	lw r4,(r11+116)                                
    /*                                                                
     *  We have to advance the last known seconds value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
    snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();        
 80147fc:	38 21 0d 98 	ori r1,r1,0xd98                                
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8014800:	35 65 00 6c 	addi r5,r11,108                                
 8014804:	28 21 00 00 	lw r1,(r1+0)                                   
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
    if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {             
 8014808:	44 45 00 0a 	be r2,r5,8014830 <_Timer_server_Schedule_operation_method+0xc0>
      first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );   
      delta_interval = first_watchdog->delta_interval;                
 801480c:	28 46 00 10 	lw r6,(r2+16)                                  
        }                                                             
      } else {                                                        
        /*                                                            
         *  Someone put us in the past.                               
         */                                                           
        delta = last_snapshot - snapshot;                             
 8014810:	b4 c4 28 00 	add r5,r6,r4                                   
        delta_interval += delta;                                      
 8014814:	c8 a1 28 00 	sub r5,r5,r1                                   
    snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();        
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
    if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {             
      first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );   
      delta_interval = first_watchdog->delta_interval;                
      if ( snapshot > last_snapshot ) {                               
 8014818:	50 81 00 05 	bgeu r4,r1,801482c <_Timer_server_Schedule_operation_method+0xbc>
        /*                                                            
         *  We advanced in time.                                      
         */                                                           
        delta = snapshot - last_snapshot;                             
 801481c:	c8 24 20 00 	sub r4,r1,r4                                   
        if (delta_interval > delta) {                                 
          delta_interval -= delta;                                    
        } else {                                                      
          delta_interval = 0;                                         
 8014820:	34 05 00 00 	mvi r5,0                                       
      if ( snapshot > last_snapshot ) {                               
        /*                                                            
         *  We advanced in time.                                      
         */                                                           
        delta = snapshot - last_snapshot;                             
        if (delta_interval > delta) {                                 
 8014824:	50 86 00 02 	bgeu r4,r6,801482c <_Timer_server_Schedule_operation_method+0xbc><== NEVER TAKEN
          delta_interval -= delta;                                    
 8014828:	c8 c4 28 00 	sub r5,r6,r4                                   
         *  Someone put us in the past.                               
         */                                                           
        delta = last_snapshot - snapshot;                             
        delta_interval += delta;                                      
      }                                                               
      first_watchdog->delta_interval = delta_interval;                
 801482c:	58 45 00 10 	sw (r2+16),r5                                  
    }                                                                 
    ts->TOD_watchdogs.last_snapshot = snapshot;                       
 8014830:	59 61 00 74 	sw (r11+116),r1                                
    _ISR_Enable( level );                                             
 8014834:	d0 07 00 00 	wcsr IE,r7                                     
                                                                      
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
 8014838:	35 61 00 68 	addi r1,r11,104                                
 801483c:	34 62 00 10 	addi r2,r3,16                                  
 8014840:	f8 00 15 48 	calli 8019d60 <_Watchdog_Insert>               
                                                                      
    if ( !ts->active ) {                                              
 8014844:	41 61 00 7c 	lbu r1,(r11+124)                               
 8014848:	20 21 00 ff 	andi r1,r1,0xff                                
 801484c:	5c 20 ff e0 	bne r1,r0,80147cc <_Timer_server_Schedule_operation_method+0x5c><== NEVER TAKEN
      _Timer_server_Reset_tod_system_watchdog( ts );                  
 8014850:	b9 60 08 00 	mv r1,r11                                      
 8014854:	fb ff ff 25 	calli 80144e8 <_Timer_server_Reset_tod_system_watchdog>
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
 8014858:	f8 00 0f ee 	calli 8018810 <_Thread_Enable_dispatch>        
 801485c:	e3 ff ff dd 	bi 80147d0 <_Timer_server_Schedule_operation_method+0x60>
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    /*                                                                
     *  We have to advance the last known ticks value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
 8014860:	90 00 20 00 	rcsr r4,IE                                     
 8014864:	34 01 ff fe 	mvi r1,-2                                      
 8014868:	a0 81 08 00 	and r1,r4,r1                                   
 801486c:	d0 01 00 00 	wcsr IE,r1                                     
    snapshot = _Watchdog_Ticks_since_boot;                            
 8014870:	78 01 08 04 	mvhi r1,0x804                                  
 8014874:	38 21 0e 20 	ori r1,r1,0xe20                                
      initialized = false;                                            
    }                                                                 
  #endif                                                              
                                                                      
  return status;                                                      
}                                                                     
 8014878:	29 62 00 30 	lw r2,(r11+48)                                 
    /*                                                                
     *  We have to advance the last known ticks value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
    snapshot = _Watchdog_Ticks_since_boot;                            
 801487c:	28 21 00 00 	lw r1,(r1+0)                                   
    last_snapshot = ts->Interval_watchdogs.last_snapshot;             
 8014880:	29 66 00 3c 	lw r6,(r11+60)                                 
 8014884:	35 65 00 34 	addi r5,r11,52                                 
    if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {        
 8014888:	44 45 00 07 	be r2,r5,80148a4 <_Timer_server_Schedule_operation_method+0x134>
      /*                                                              
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
                                                                      
      delta_interval = first_watchdog->delta_interval;                
 801488c:	28 47 00 10 	lw r7,(r2+16)                                  
      first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain );
                                                                      
      /*                                                              
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
 8014890:	c8 26 30 00 	sub r6,r1,r6                                   
                                                                      
      delta_interval = first_watchdog->delta_interval;                
      if (delta_interval > delta) {                                   
        delta_interval -= delta;                                      
      } else {                                                        
        delta_interval = 0;                                           
 8014894:	34 05 00 00 	mvi r5,0                                       
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
                                                                      
      delta_interval = first_watchdog->delta_interval;                
      if (delta_interval > delta) {                                   
 8014898:	50 c7 00 02 	bgeu r6,r7,80148a0 <_Timer_server_Schedule_operation_method+0x130>
        delta_interval -= delta;                                      
 801489c:	c8 e6 28 00 	sub r5,r7,r6                                   
      } else {                                                        
        delta_interval = 0;                                           
      }                                                               
      first_watchdog->delta_interval = delta_interval;                
 80148a0:	58 45 00 10 	sw (r2+16),r5                                  
    }                                                                 
    ts->Interval_watchdogs.last_snapshot = snapshot;                  
 80148a4:	59 61 00 3c 	sw (r11+60),r1                                 
    _ISR_Enable( level );                                             
 80148a8:	d0 04 00 00 	wcsr IE,r4                                     
                                                                      
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
 80148ac:	35 61 00 30 	addi r1,r11,48                                 
 80148b0:	34 62 00 10 	addi r2,r3,16                                  
 80148b4:	f8 00 15 2b 	calli 8019d60 <_Watchdog_Insert>               
                                                                      
    if ( !ts->active ) {                                              
 80148b8:	41 61 00 7c 	lbu r1,(r11+124)                               
 80148bc:	20 21 00 ff 	andi r1,r1,0xff                                
 80148c0:	5c 20 ff c3 	bne r1,r0,80147cc <_Timer_server_Schedule_operation_method+0x5c>
      _Timer_server_Reset_interval_system_watchdog( ts );             
 80148c4:	b9 60 08 00 	mv r1,r11                                      
 80148c8:	fb ff fe e7 	calli 8014464 <_Timer_server_Reset_interval_system_watchdog>
    if ( !ts->active ) {                                              
      _Timer_server_Reset_tod_system_watchdog( ts );                  
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
 80148cc:	f8 00 0f d1 	calli 8018810 <_Thread_Enable_dispatch>        
 80148d0:	e3 ff ff c0 	bi 80147d0 <_Timer_server_Schedule_operation_method+0x60>
                                                                      

08006a40 <_User_extensions_Fatal>: void _User_extensions_Fatal ( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) {
 8006a40:	37 9c ff e8 	addi sp,sp,-24                                 
 8006a44:	5b 8b 00 18 	sw (sp+24),r11                                 
 8006a48:	5b 8c 00 14 	sw (sp+20),r12                                 
 8006a4c:	5b 8d 00 10 	sw (sp+16),r13                                 
 8006a50:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8006a54:	5b 8f 00 08 	sw (sp+8),r15                                  
 8006a58:	5b 9d 00 04 	sw (sp+4),ra                                   
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
  }                                                                   
}                                                                     
 8006a5c:	78 0c 08 01 	mvhi r12,0x801                                 
 8006a60:	39 8c 4a 64 	ori r12,r12,0x4a64                             
 8006a64:	29 8b 00 08 	lw r11,(r12+8)                                 
void _User_extensions_Fatal (                                         
  Internal_errors_Source  the_source,                                 
  bool                    is_internal,                                
  Internal_errors_t       the_error                                   
)                                                                     
{                                                                     
 8006a68:	b8 20 78 00 	mv r15,r1                                      
 8006a6c:	b8 60 70 00 	mv r14,r3                                      
 8006a70:	20 4d 00 ff 	andi r13,r2,0xff                               
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 8006a74:	45 6c 00 09 	be r11,r12,8006a98 <_User_extensions_Fatal+0x58><== NEVER TAKEN
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
 8006a78:	29 64 00 30 	lw r4,(r11+48)                                 
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
 8006a7c:	b9 e0 08 00 	mv r1,r15                                      
 8006a80:	b9 a0 10 00 	mv r2,r13                                      
 8006a84:	b9 c0 18 00 	mv r3,r14                                      
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
 8006a88:	44 80 00 02 	be r4,r0,8006a90 <_User_extensions_Fatal+0x50> 
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
 8006a8c:	d8 80 00 00 	call r4                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
 8006a90:	29 6b 00 04 	lw r11,(r11+4)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 8006a94:	5d 6c ff f9 	bne r11,r12,8006a78 <_User_extensions_Fatal+0x38>
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
  }                                                                   
}                                                                     
 8006a98:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006a9c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8006aa0:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8006aa4:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8006aa8:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8006aac:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8006ab0:	37 9c 00 18 	addi sp,sp,24                                  
 8006ab4:	c3 a0 00 00 	ret                                            
                                                                      

08006874 <_User_extensions_Handler_initialization>: #include <rtems/score/userext.h> #include <rtems/score/wkspace.h> #include <string.h> void _User_extensions_Handler_initialization(void) {
 8006874:	37 9c ff ec 	addi sp,sp,-20                                 
 8006878:	5b 8b 00 14 	sw (sp+20),r11                                 
 800687c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006880:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006884:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006888:	5b 9d 00 04 	sw (sp+4),ra                                   
  User_extensions_Control *extension;                                 
  uint32_t                 i;                                         
  uint32_t                 number_of_extensions;                      
  User_extensions_Table   *initial_extensions;                        
                                                                      
  number_of_extensions = Configuration.number_of_initial_extensions;  
 800688c:	78 03 08 01 	mvhi r3,0x801                                  
 8006890:	38 63 40 f4 	ori r3,r3,0x40f4                               
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8006894:	78 02 08 01 	mvhi r2,0x801                                  
 8006898:	78 05 08 01 	mvhi r5,0x801                                  
 800689c:	78 01 08 01 	mvhi r1,0x801                                  
 80068a0:	78 04 08 01 	mvhi r4,0x801                                  
  initial_extensions   = Configuration.User_extension_table;          
 80068a4:	28 6b 00 3c 	lw r11,(r3+60)                                 
 80068a8:	38 42 4a 64 	ori r2,r2,0x4a64                               
 80068ac:	38 21 49 0c 	ori r1,r1,0x490c                               
 80068b0:	38 a5 4a 68 	ori r5,r5,0x4a68                               
 80068b4:	38 84 49 10 	ori r4,r4,0x4910                               
 80068b8:	58 45 00 00 	sw (r2+0),r5                                   
  head->previous = NULL;                                              
 80068bc:	58 40 00 04 	sw (r2+4),r0                                   
  tail->previous = head;                                              
 80068c0:	58 42 00 08 	sw (r2+8),r2                                   
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80068c4:	58 24 00 00 	sw (r1+0),r4                                   
  head->previous = NULL;                                              
 80068c8:	58 20 00 04 	sw (r1+4),r0                                   
  tail->previous = head;                                              
 80068cc:	58 21 00 08 	sw (r1+8),r1                                   
  User_extensions_Control *extension;                                 
  uint32_t                 i;                                         
  uint32_t                 number_of_extensions;                      
  User_extensions_Table   *initial_extensions;                        
                                                                      
  number_of_extensions = Configuration.number_of_initial_extensions;  
 80068d0:	28 6e 00 38 	lw r14,(r3+56)                                 
  initial_extensions   = Configuration.User_extension_table;          
                                                                      
  _Chain_Initialize_empty( &_User_extensions_List );                  
  _Chain_Initialize_empty( &_User_extensions_Switches_list );         
                                                                      
  if ( initial_extensions ) {                                         
 80068d4:	45 60 00 26 	be r11,r0,800696c <_User_extensions_Handler_initialization+0xf8><== NEVER TAKEN
    extension = (User_extensions_Control *)                           
      _Workspace_Allocate_or_fatal_error(                             
        number_of_extensions * sizeof( User_extensions_Control )      
 80068d8:	b5 ce 68 00 	add r13,r14,r14                                
 80068dc:	b5 ae 68 00 	add r13,r13,r14                                
 80068e0:	b5 ad 68 00 	add r13,r13,r13                                
 80068e4:	b5 ad 68 00 	add r13,r13,r13                                
 80068e8:	b5 ae 68 00 	add r13,r13,r14                                
 80068ec:	b5 ad 68 00 	add r13,r13,r13                                
 80068f0:	b5 ad 68 00 	add r13,r13,r13                                
  _Chain_Initialize_empty( &_User_extensions_List );                  
  _Chain_Initialize_empty( &_User_extensions_Switches_list );         
                                                                      
  if ( initial_extensions ) {                                         
    extension = (User_extensions_Control *)                           
      _Workspace_Allocate_or_fatal_error(                             
 80068f4:	b9 a0 08 00 	mv r1,r13                                      
 80068f8:	f8 00 01 f9 	calli 80070dc <_Workspace_Allocate_or_fatal_error>
        number_of_extensions * sizeof( User_extensions_Control )      
      );                                                              
                                                                      
    memset (                                                          
 80068fc:	34 02 00 00 	mvi r2,0                                       
 8006900:	b9 a0 18 00 	mv r3,r13                                      
  _Chain_Initialize_empty( &_User_extensions_List );                  
  _Chain_Initialize_empty( &_User_extensions_Switches_list );         
                                                                      
  if ( initial_extensions ) {                                         
    extension = (User_extensions_Control *)                           
      _Workspace_Allocate_or_fatal_error(                             
 8006904:	b8 20 60 00 	mv r12,r1                                      
        number_of_extensions * sizeof( User_extensions_Control )      
      );                                                              
                                                                      
    memset (                                                          
 8006908:	f8 00 1c 14 	calli 800d958 <memset>                         
      extension,                                                      
      0,                                                              
      number_of_extensions * sizeof( User_extensions_Control )        
    );                                                                
                                                                      
    for ( i = 0 ; i < number_of_extensions ; i++ ) {                  
 800690c:	45 c0 00 18 	be r14,r0,800696c <_User_extensions_Handler_initialization+0xf8><== NEVER TAKEN
 8006910:	34 0d 00 00 	mvi r13,0                                      
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(        
  User_extensions_Control     *extension,                             
  const User_extensions_Table *extension_table                        
)                                                                     
{                                                                     
  extension->Callouts = *extension_table;                             
 8006914:	29 62 00 00 	lw r2,(r11+0)                                  
                                                                      
  _User_extensions_Add_set( extension );                              
 8006918:	b9 80 08 00 	mv r1,r12                                      
 800691c:	35 ad 00 01 	addi r13,r13,1                                 
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(        
  User_extensions_Control     *extension,                             
  const User_extensions_Table *extension_table                        
)                                                                     
{                                                                     
  extension->Callouts = *extension_table;                             
 8006920:	59 82 00 14 	sw (r12+20),r2                                 
 8006924:	29 62 00 04 	lw r2,(r11+4)                                  
 8006928:	59 82 00 18 	sw (r12+24),r2                                 
 800692c:	29 62 00 08 	lw r2,(r11+8)                                  
 8006930:	59 82 00 1c 	sw (r12+28),r2                                 
 8006934:	29 62 00 0c 	lw r2,(r11+12)                                 
 8006938:	59 82 00 20 	sw (r12+32),r2                                 
 800693c:	29 62 00 10 	lw r2,(r11+16)                                 
 8006940:	59 82 00 24 	sw (r12+36),r2                                 
 8006944:	29 62 00 14 	lw r2,(r11+20)                                 
 8006948:	59 82 00 28 	sw (r12+40),r2                                 
 800694c:	29 62 00 18 	lw r2,(r11+24)                                 
 8006950:	59 82 00 2c 	sw (r12+44),r2                                 
 8006954:	29 62 00 1c 	lw r2,(r11+28)                                 
 8006958:	35 6b 00 20 	addi r11,r11,32                                
 800695c:	59 82 00 30 	sw (r12+48),r2                                 
                                                                      
  _User_extensions_Add_set( extension );                              
 8006960:	f8 00 10 81 	calli 800ab64 <_User_extensions_Add_set>       
      _User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
      extension++;                                                    
 8006964:	35 8c 00 34 	addi r12,r12,52                                
      extension,                                                      
      0,                                                              
      number_of_extensions * sizeof( User_extensions_Control )        
    );                                                                
                                                                      
    for ( i = 0 ; i < number_of_extensions ; i++ ) {                  
 8006968:	55 cd ff eb 	bgu r14,r13,8006914 <_User_extensions_Handler_initialization+0xa0>
      _User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
      extension++;                                                    
    }                                                                 
  }                                                                   
}                                                                     
 800696c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006970:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006974:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006978:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800697c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006980:	37 9c 00 14 	addi sp,sp,20                                  
 8006984:	c3 a0 00 00 	ret                                            
                                                                      

08006988 <_User_extensions_Thread_begin>: #include <rtems/score/userext.h> void _User_extensions_Thread_begin ( Thread_Control *executing ) {
 8006988:	37 9c ff f0 	addi sp,sp,-16                                 
 800698c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8006990:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8006994:	5b 8d 00 08 	sw (sp+8),r13                                  
 8006998:	5b 9d 00 04 	sw (sp+4),ra                                   
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
  }                                                                   
}                                                                     
 800699c:	78 02 08 01 	mvhi r2,0x801                                  
 80069a0:	38 42 4a 64 	ori r2,r2,0x4a64                               
 80069a4:	28 4b 00 00 	lw r11,(r2+0)                                  
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 80069a8:	78 0c 08 01 	mvhi r12,0x801                                 
 80069ac:	39 8c 4a 68 	ori r12,r12,0x4a68                             
#include <rtems/score/userext.h>                                      
                                                                      
void _User_extensions_Thread_begin (                                  
  Thread_Control *executing                                           
)                                                                     
{                                                                     
 80069b0:	b8 20 68 00 	mv r13,r1                                      
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 80069b4:	45 6c 00 07 	be r11,r12,80069d0 <_User_extensions_Thread_begin+0x48><== NEVER TAKEN
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_begin != NULL )               
 80069b8:	29 62 00 28 	lw r2,(r11+40)                                 
      (*the_extension->Callouts.thread_begin)( executing );           
 80069bc:	b9 a0 08 00 	mv r1,r13                                      
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_begin != NULL )               
 80069c0:	44 40 00 02 	be r2,r0,80069c8 <_User_extensions_Thread_begin+0x40>
      (*the_extension->Callouts.thread_begin)( executing );           
 80069c4:	d8 40 00 00 	call r2                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
 80069c8:	29 6b 00 00 	lw r11,(r11+0)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 80069cc:	5d 6c ff fb 	bne r11,r12,80069b8 <_User_extensions_Thread_begin+0x30>
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_begin != NULL )               
      (*the_extension->Callouts.thread_begin)( executing );           
  }                                                                   
}                                                                     
 80069d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80069d4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80069d8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80069dc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80069e0:	37 9c 00 10 	addi sp,sp,16                                  
 80069e4:	c3 a0 00 00 	ret                                            
                                                                      

08006ab8 <_User_extensions_Thread_create>: #include <rtems/score/userext.h> bool _User_extensions_Thread_create ( Thread_Control *the_thread ) {
 8006ab8:	37 9c ff ec 	addi sp,sp,-20                                 
 8006abc:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006ac0:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006ac4:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006ac8:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006acc:	5b 9d 00 04 	sw (sp+4),ra                                   
        return false;                                                 
    }                                                                 
  }                                                                   
                                                                      
  return true;                                                        
}                                                                     
 8006ad0:	78 02 08 01 	mvhi r2,0x801                                  
 8006ad4:	38 42 4a 64 	ori r2,r2,0x4a64                               
 8006ad8:	28 4b 00 00 	lw r11,(r2+0)                                  
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
  bool                     status;                                    
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006adc:	78 0c 08 01 	mvhi r12,0x801                                 
 8006ae0:	39 8c 4a 68 	ori r12,r12,0x4a68                             
#include <rtems/score/userext.h>                                      
                                                                      
bool _User_extensions_Thread_create (                                 
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 8006ae4:	b8 20 70 00 	mv r14,r1                                      
      if ( !status )                                                  
        return false;                                                 
    }                                                                 
  }                                                                   
                                                                      
  return true;                                                        
 8006ae8:	34 01 00 01 	mvi r1,1                                       
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
  bool                     status;                                    
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006aec:	45 6c 00 0c 	be r11,r12,8006b1c <_User_extensions_Thread_create+0x64><== NEVER TAKEN
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_create != NULL ) {            
      status = (*the_extension->Callouts.thread_create)(              
 8006af0:	78 0d 08 01 	mvhi r13,0x801                                 
 8006af4:	39 ad 4d b4 	ori r13,r13,0x4db4                             
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_create != NULL ) {            
 8006af8:	29 63 00 14 	lw r3,(r11+20)                                 
      status = (*the_extension->Callouts.thread_create)(              
 8006afc:	b9 c0 10 00 	mv r2,r14                                      
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_create != NULL ) {            
 8006b00:	44 60 00 04 	be r3,r0,8006b10 <_User_extensions_Thread_create+0x58>
      status = (*the_extension->Callouts.thread_create)(              
 8006b04:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8006b08:	d8 60 00 00 	call r3                                        
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
      if ( !status )                                                  
 8006b0c:	44 20 00 0b 	be r1,r0,8006b38 <_User_extensions_Thread_create+0x80>
  User_extensions_Control *the_extension;                             
  bool                     status;                                    
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
 8006b10:	29 6b 00 00 	lw r11,(r11+0)                                 
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
  bool                     status;                                    
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006b14:	5d 6c ff f9 	bne r11,r12,8006af8 <_User_extensions_Thread_create+0x40>
      if ( !status )                                                  
        return false;                                                 
    }                                                                 
  }                                                                   
                                                                      
  return true;                                                        
 8006b18:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 8006b1c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006b20:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006b24:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006b28:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006b2c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006b30:	37 9c 00 14 	addi sp,sp,20                                  
 8006b34:	c3 a0 00 00 	ret                                            
      status = (*the_extension->Callouts.thread_create)(              
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
      if ( !status )                                                  
        return false;                                                 
 8006b38:	34 01 00 00 	mvi r1,0                                       
    }                                                                 
  }                                                                   
                                                                      
  return true;                                                        
}                                                                     
 8006b3c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006b40:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006b44:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006b48:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006b4c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006b50:	37 9c 00 14 	addi sp,sp,20                                  
 8006b54:	c3 a0 00 00 	ret                                            
                                                                      

08006b58 <_User_extensions_Thread_delete>: #include <rtems/score/userext.h> void _User_extensions_Thread_delete ( Thread_Control *the_thread ) {
 8006b58:	37 9c ff ec 	addi sp,sp,-20                                 
 8006b5c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006b60:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006b64:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006b68:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006b6c:	5b 9d 00 04 	sw (sp+4),ra                                   
      (*the_extension->Callouts.thread_delete)(                       
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8006b70:	78 0c 08 01 	mvhi r12,0x801                                 
 8006b74:	39 8c 4a 64 	ori r12,r12,0x4a64                             
 8006b78:	29 8b 00 08 	lw r11,(r12+8)                                 
#include <rtems/score/userext.h>                                      
                                                                      
void _User_extensions_Thread_delete (                                 
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 8006b7c:	b8 20 70 00 	mv r14,r1                                      
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 8006b80:	45 6c 00 0a 	be r11,r12,8006ba8 <_User_extensions_Thread_delete+0x50><== NEVER TAKEN
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_delete != NULL )              
      (*the_extension->Callouts.thread_delete)(                       
 8006b84:	78 0d 08 01 	mvhi r13,0x801                                 
 8006b88:	39 ad 4d b4 	ori r13,r13,0x4db4                             
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_delete != NULL )              
 8006b8c:	29 63 00 20 	lw r3,(r11+32)                                 
      (*the_extension->Callouts.thread_delete)(                       
 8006b90:	b9 c0 10 00 	mv r2,r14                                      
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_delete != NULL )              
 8006b94:	44 60 00 03 	be r3,r0,8006ba0 <_User_extensions_Thread_delete+0x48>
      (*the_extension->Callouts.thread_delete)(                       
 8006b98:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8006b9c:	d8 60 00 00 	call r3                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
 8006ba0:	29 6b 00 04 	lw r11,(r11+4)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 8006ba4:	5d 6c ff fa 	bne r11,r12,8006b8c <_User_extensions_Thread_delete+0x34>
      (*the_extension->Callouts.thread_delete)(                       
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8006ba8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006bac:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006bb0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006bb4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006bb8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006bbc:	37 9c 00 14 	addi sp,sp,20                                  
 8006bc0:	c3 a0 00 00 	ret                                            
                                                                      

080069e8 <_User_extensions_Thread_exitted>: void _User_extensions_Thread_exitted ( Thread_Control *executing ) {
 80069e8:	37 9c ff f0 	addi sp,sp,-16                                 
 80069ec:	5b 8b 00 10 	sw (sp+16),r11                                 
 80069f0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80069f4:	5b 8d 00 08 	sw (sp+8),r13                                  
 80069f8:	5b 9d 00 04 	sw (sp+4),ra                                   
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.fatal != NULL )                      
      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
  }                                                                   
}                                                                     
 80069fc:	78 0c 08 01 	mvhi r12,0x801                                 
 8006a00:	39 8c 4a 64 	ori r12,r12,0x4a64                             
 8006a04:	29 8b 00 08 	lw r11,(r12+8)                                 
}                                                                     
                                                                      
void _User_extensions_Thread_exitted (                                
  Thread_Control *executing                                           
)                                                                     
{                                                                     
 8006a08:	b8 20 68 00 	mv r13,r1                                      
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 8006a0c:	45 6c 00 07 	be r11,r12,8006a28 <_User_extensions_Thread_exitted+0x40><== NEVER TAKEN
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_exitted != NULL )             
 8006a10:	29 62 00 2c 	lw r2,(r11+44)                                 
      (*the_extension->Callouts.thread_exitted)( executing );         
 8006a14:	b9 a0 08 00 	mv r1,r13                                      
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_exitted != NULL )             
 8006a18:	44 40 00 02 	be r2,r0,8006a20 <_User_extensions_Thread_exitted+0x38>
      (*the_extension->Callouts.thread_exitted)( executing );         
 8006a1c:	d8 40 00 00 	call r2                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
        !_Chain_Is_head( &_User_extensions_List, the_node ) ;         
        the_node = the_node->previous ) {                             
 8006a20:	29 6b 00 04 	lw r11,(r11+4)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_Last( &_User_extensions_List );             
 8006a24:	5d 6c ff fb 	bne r11,r12,8006a10 <_User_extensions_Thread_exitted+0x28>
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_exitted != NULL )             
      (*the_extension->Callouts.thread_exitted)( executing );         
  }                                                                   
}                                                                     
 8006a28:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006a2c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8006a30:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8006a34:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8006a38:	37 9c 00 10 	addi sp,sp,16                                  
 8006a3c:	c3 a0 00 00 	ret                                            
                                                                      

08007bb0 <_User_extensions_Thread_restart>: #include <rtems/score/userext.h> void _User_extensions_Thread_restart ( Thread_Control *the_thread ) {
 8007bb0:	37 9c ff ec 	addi sp,sp,-20                                 
 8007bb4:	5b 8b 00 14 	sw (sp+20),r11                                 
 8007bb8:	5b 8c 00 10 	sw (sp+16),r12                                 
 8007bbc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8007bc0:	5b 8e 00 08 	sw (sp+8),r14                                  
 8007bc4:	5b 9d 00 04 	sw (sp+4),ra                                   
      (*the_extension->Callouts.thread_restart)(                      
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8007bc8:	78 02 08 02 	mvhi r2,0x802                                  
 8007bcc:	38 42 0a bc 	ori r2,r2,0xabc                                
 8007bd0:	28 4b 00 00 	lw r11,(r2+0)                                  
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8007bd4:	78 0c 08 02 	mvhi r12,0x802                                 
 8007bd8:	39 8c 0a c0 	ori r12,r12,0xac0                              
#include <rtems/score/userext.h>                                      
                                                                      
void _User_extensions_Thread_restart (                                
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 8007bdc:	b8 20 70 00 	mv r14,r1                                      
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8007be0:	45 6c 00 0a 	be r11,r12,8007c08 <_User_extensions_Thread_restart+0x58><== NEVER TAKEN
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_restart != NULL )             
      (*the_extension->Callouts.thread_restart)(                      
 8007be4:	78 0d 08 02 	mvhi r13,0x802                                 
 8007be8:	39 ad 0e 0c 	ori r13,r13,0xe0c                              
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_restart != NULL )             
 8007bec:	29 63 00 1c 	lw r3,(r11+28)                                 
      (*the_extension->Callouts.thread_restart)(                      
 8007bf0:	b9 c0 10 00 	mv r2,r14                                      
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_restart != NULL )             
 8007bf4:	44 60 00 03 	be r3,r0,8007c00 <_User_extensions_Thread_restart+0x50>
      (*the_extension->Callouts.thread_restart)(                      
 8007bf8:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8007bfc:	d8 60 00 00 	call r3                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
 8007c00:	29 6b 00 00 	lw r11,(r11+0)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8007c04:	5d 6c ff fa 	bne r11,r12,8007bec <_User_extensions_Thread_restart+0x3c>
      (*the_extension->Callouts.thread_restart)(                      
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8007c08:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007c0c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8007c10:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8007c14:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8007c18:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8007c1c:	37 9c 00 14 	addi sp,sp,20                                  
 8007c20:	c3 a0 00 00 	ret                                            
                                                                      

08006bc4 <_User_extensions_Thread_start>: #include <rtems/score/userext.h> void _User_extensions_Thread_start ( Thread_Control *the_thread ) {
 8006bc4:	37 9c ff ec 	addi sp,sp,-20                                 
 8006bc8:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006bcc:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006bd0:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006bd4:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006bd8:	5b 9d 00 04 	sw (sp+4),ra                                   
      (*the_extension->Callouts.thread_start)(                        
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8006bdc:	78 02 08 01 	mvhi r2,0x801                                  
 8006be0:	38 42 4a 64 	ori r2,r2,0x4a64                               
 8006be4:	28 4b 00 00 	lw r11,(r2+0)                                  
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006be8:	78 0c 08 01 	mvhi r12,0x801                                 
 8006bec:	39 8c 4a 68 	ori r12,r12,0x4a68                             
#include <rtems/score/userext.h>                                      
                                                                      
void _User_extensions_Thread_start (                                  
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 8006bf0:	b8 20 70 00 	mv r14,r1                                      
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006bf4:	45 6c 00 0a 	be r11,r12,8006c1c <_User_extensions_Thread_start+0x58><== NEVER TAKEN
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_start != NULL )               
      (*the_extension->Callouts.thread_start)(                        
 8006bf8:	78 0d 08 01 	mvhi r13,0x801                                 
 8006bfc:	39 ad 4d b4 	ori r13,r13,0x4db4                             
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_start != NULL )               
 8006c00:	29 63 00 18 	lw r3,(r11+24)                                 
      (*the_extension->Callouts.thread_start)(                        
 8006c04:	b9 c0 10 00 	mv r2,r14                                      
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
                                                                      
    the_extension = (User_extensions_Control *) the_node;             
                                                                      
    if ( the_extension->Callouts.thread_start != NULL )               
 8006c08:	44 60 00 03 	be r3,r0,8006c14 <_User_extensions_Thread_start+0x50>
      (*the_extension->Callouts.thread_start)(                        
 8006c0c:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8006c10:	d8 60 00 00 	call r3                                        
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;         
        the_node = the_node->next ) {                                 
 8006c14:	29 6b 00 00 	lw r11,(r11+0)                                 
)                                                                     
{                                                                     
  Chain_Node              *the_node;                                  
  User_extensions_Control *the_extension;                             
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_List );            
 8006c18:	5d 6c ff fa 	bne r11,r12,8006c00 <_User_extensions_Thread_start+0x3c>
      (*the_extension->Callouts.thread_start)(                        
        _Thread_Executing,                                            
        the_thread                                                    
      );                                                              
  }                                                                   
}                                                                     
 8006c1c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006c20:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006c24:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006c28:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006c2c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006c30:	37 9c 00 14 	addi sp,sp,20                                  
 8006c34:	c3 a0 00 00 	ret                                            
                                                                      

08006c38 <_User_extensions_Thread_switch>: void _User_extensions_Thread_switch ( Thread_Control *executing, Thread_Control *heir ) {
 8006c38:	37 9c ff ec 	addi sp,sp,-20                                 
 8006c3c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006c40:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006c44:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006c48:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006c4c:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    the_extension_switch = (User_extensions_Switch_control *) the_node;
                                                                      
    (*the_extension_switch->thread_switch)( executing, heir );        
  }                                                                   
}                                                                     
 8006c50:	78 03 08 01 	mvhi r3,0x801                                  
 8006c54:	38 63 49 0c 	ori r3,r3,0x490c                               
 8006c58:	28 6b 00 00 	lw r11,(r3+0)                                  
)                                                                     
{                                                                     
  Chain_Node                     *the_node;                           
  User_extensions_Switch_control *the_extension_switch;               
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_Switches_list );   
 8006c5c:	78 0c 08 01 	mvhi r12,0x801                                 
 8006c60:	39 8c 49 10 	ori r12,r12,0x4910                             
                                                                      
void _User_extensions_Thread_switch (                                 
  Thread_Control *executing,                                          
  Thread_Control *heir                                                
)                                                                     
{                                                                     
 8006c64:	b8 20 70 00 	mv r14,r1                                      
 8006c68:	b8 40 68 00 	mv r13,r2                                      
  Chain_Node                     *the_node;                           
  User_extensions_Switch_control *the_extension_switch;               
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_Switches_list );   
 8006c6c:	45 6c 00 07 	be r11,r12,8006c88 <_User_extensions_Thread_switch+0x50><== NEVER TAKEN
        !_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ;
        the_node = the_node->next ) {                                 
                                                                      
    the_extension_switch = (User_extensions_Switch_control *) the_node;
                                                                      
    (*the_extension_switch->thread_switch)( executing, heir );        
 8006c70:	29 63 00 08 	lw r3,(r11+8)                                  
 8006c74:	b9 c0 08 00 	mv r1,r14                                      
 8006c78:	b9 a0 10 00 	mv r2,r13                                      
 8006c7c:	d8 60 00 00 	call r3                                        
  Chain_Node                     *the_node;                           
  User_extensions_Switch_control *the_extension_switch;               
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_Switches_list );   
        !_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ;
        the_node = the_node->next ) {                                 
 8006c80:	29 6b 00 00 	lw r11,(r11+0)                                 
)                                                                     
{                                                                     
  Chain_Node                     *the_node;                           
  User_extensions_Switch_control *the_extension_switch;               
                                                                      
  for ( the_node = _Chain_First( &_User_extensions_Switches_list );   
 8006c84:	5d 6c ff fb 	bne r11,r12,8006c70 <_User_extensions_Thread_switch+0x38>
                                                                      
    the_extension_switch = (User_extensions_Switch_control *) the_node;
                                                                      
    (*the_extension_switch->thread_switch)( executing, heir );        
  }                                                                   
}                                                                     
 8006c88:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006c8c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006c90:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006c94:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006c98:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006c9c:	37 9c 00 14 	addi sp,sp,20                                  
 8006ca0:	c3 a0 00 00 	ret                                            
                                                                      

08009344 <_Watchdog_Adjust>: void _Watchdog_Adjust( Chain_Control *header, Watchdog_Adjust_directions direction, Watchdog_Interval units ) {
 8009344:	37 9c ff e4 	addi sp,sp,-28                                 
 8009348:	5b 8b 00 1c 	sw (sp+28),r11                                 
 800934c:	5b 8c 00 18 	sw (sp+24),r12                                 
 8009350:	5b 8d 00 14 	sw (sp+20),r13                                 
 8009354:	5b 8e 00 10 	sw (sp+16),r14                                 
 8009358:	5b 8f 00 0c 	sw (sp+12),r15                                 
 800935c:	5b 90 00 08 	sw (sp+8),r16                                  
 8009360:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009364:	b8 20 60 00 	mv r12,r1                                      
 8009368:	b8 60 58 00 	mv r11,r3                                      
  ISR_Level level;                                                    
                                                                      
  _ISR_Disable( level );                                              
 800936c:	90 00 18 00 	rcsr r3,IE                                     
 8009370:	34 01 ff fe 	mvi r1,-2                                      
 8009374:	a0 61 08 00 	and r1,r3,r1                                   
 8009378:	d0 01 00 00 	wcsr IE,r1                                     
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
                                                                      
}                                                                     
 800937c:	29 81 00 00 	lw r1,(r12+0)                                  
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8009380:	35 8e 00 04 	addi r14,r12,4                                 
  Watchdog_Interval            units                                  
)                                                                     
{                                                                     
  ISR_Level level;                                                    
                                                                      
  _ISR_Disable( level );                                              
 8009384:	b8 60 20 00 	mv r4,r3                                       
   *       hence the compiler must not assume *header to remain       
   *       unmodified across that call.                               
   *                                                                  
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
 8009388:	44 2e 00 04 	be r1,r14,8009398 <_Watchdog_Adjust+0x54>      
    switch ( direction ) {                                            
 800938c:	44 40 00 11 	be r2,r0,80093d0 <_Watchdog_Adjust+0x8c>       
 8009390:	34 03 00 01 	mvi r3,1                                       
 8009394:	44 43 00 0b 	be r2,r3,80093c0 <_Watchdog_Adjust+0x7c>       <== ALWAYS TAKEN
        }                                                             
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
 8009398:	d0 04 00 00 	wcsr IE,r4                                     
                                                                      
}                                                                     
 800939c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80093a0:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80093a4:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80093a8:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80093ac:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80093b0:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80093b4:	2b 90 00 08 	lw r16,(sp+8)                                  
 80093b8:	37 9c 00 1c 	addi sp,sp,28                                  
 80093bc:	c3 a0 00 00 	ret                                            
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
    switch ( direction ) {                                            
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
 80093c0:	28 22 00 10 	lw r2,(r1+16)                                  
 80093c4:	b4 4b 58 00 	add r11,r2,r11                                 
 80093c8:	58 2b 00 10 	sw (r1+16),r11                                 
        break;                                                        
 80093cc:	e3 ff ff f3 	bi 8009398 <_Watchdog_Adjust+0x54>             
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
 80093d0:	b8 60 20 00 	mv r4,r3                                       
 80093d4:	45 62 ff f1 	be r11,r2,8009398 <_Watchdog_Adjust+0x54>      <== NEVER TAKEN
          if ( units < _Watchdog_First( header )->delta_interval ) {  
 80093d8:	28 2d 00 10 	lw r13,(r1+16)                                 
 80093dc:	55 ab 00 13 	bgu r13,r11,8009428 <_Watchdog_Adjust+0xe4>    <== NEVER TAKEN
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
 80093e0:	34 10 00 01 	mvi r16,1                                      
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 80093e4:	34 0f ff fe 	mvi r15,-2                                     
          if ( units < _Watchdog_First( header )->delta_interval ) {  
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
 80093e8:	58 30 00 10 	sw (r1+16),r16                                 
                                                                      
            _ISR_Enable( level );                                     
 80093ec:	d0 03 00 00 	wcsr IE,r3                                     
                                                                      
            _Watchdog_Tickle( header );                               
 80093f0:	b9 80 08 00 	mv r1,r12                                      
 80093f4:	f8 00 00 b2 	calli 80096bc <_Watchdog_Tickle>               
                                                                      
            _ISR_Disable( level );                                    
 80093f8:	90 00 10 00 	rcsr r2,IE                                     
 80093fc:	a0 4f 08 00 	and r1,r2,r15                                  
 8009400:	d0 01 00 00 	wcsr IE,r1                                     
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
                                                                      
}                                                                     
 8009404:	29 84 00 00 	lw r4,(r12+0)                                  
        while ( units ) {                                             
          if ( units < _Watchdog_First( header )->delta_interval ) {  
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
 8009408:	c9 6d 58 00 	sub r11,r11,r13                                
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 800940c:	b8 40 18 00 	mv r3,r2                                       
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(               
  Chain_Control *header                                               
)                                                                     
{                                                                     
                                                                      
  return ( (Watchdog_Control *) _Chain_First( header ) );             
 8009410:	b8 80 08 00 	mv r1,r4                                       
                                                                      
            if ( _Chain_Is_empty( header ) )                          
 8009414:	45 c4 00 08 	be r14,r4,8009434 <_Watchdog_Adjust+0xf0>      
    switch ( direction ) {                                            
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
 8009418:	45 60 00 07 	be r11,r0,8009434 <_Watchdog_Adjust+0xf0>      <== NEVER TAKEN
          if ( units < _Watchdog_First( header )->delta_interval ) {  
 800941c:	28 2d 00 10 	lw r13,(r1+16)                                 
 8009420:	51 6d ff f2 	bgeu r11,r13,80093e8 <_Watchdog_Adjust+0xa4>   
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 8009424:	b8 40 20 00 	mv r4,r2                                       
        _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;       
 8009428:	c9 ab 58 00 	sub r11,r13,r11                                
 800942c:	58 2b 00 10 	sw (r1+16),r11                                 
            break;                                                    
 8009430:	e3 ff ff da 	bi 8009398 <_Watchdog_Adjust+0x54>             
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 8009434:	b8 40 20 00 	mv r4,r2                                       
 8009438:	e3 ff ff d8 	bi 8009398 <_Watchdog_Adjust+0x54>             
                                                                      

08006ca4 <_Watchdog_Insert>: void _Watchdog_Insert( Chain_Control *header, Watchdog_Control *the_watchdog ) {
 8006ca4:	37 9c ff f8 	addi sp,sp,-8                                  
 8006ca8:	5b 8b 00 08 	sw (sp+8),r11                                  
 8006cac:	5b 8c 00 04 	sw (sp+4),r12                                  
  Watchdog_Control  *after;                                           
  uint32_t           insert_isr_nest_level;                           
  Watchdog_Interval  delta_interval;                                  
                                                                      
                                                                      
  insert_isr_nest_level   = _ISR_Nest_level;                          
 8006cb0:	78 03 08 01 	mvhi r3,0x801                                  
 8006cb4:	38 63 4d b4 	ori r3,r3,0x4db4                               
 8006cb8:	28 69 00 08 	lw r9,(r3+8)                                   
                                                                      
  _ISR_Disable( level );                                              
 8006cbc:	90 00 30 00 	rcsr r6,IE                                     
 8006cc0:	34 08 ff fe 	mvi r8,-2                                      
 8006cc4:	a0 c8 40 00 	and r8,r6,r8                                   
 8006cc8:	d0 08 00 00 	wcsr IE,r8                                     
  /*                                                                  
   *  Check to see if the watchdog has just been inserted by a        
   *  higher priority interrupt.  If so, abandon this insert.         
   */                                                                 
                                                                      
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
 8006ccc:	28 43 00 08 	lw r3,(r2+8)                                   
 8006cd0:	5c 60 00 3f 	bne r3,r0,8006dcc <_Watchdog_Insert+0x128>     
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
  _Watchdog_Sync_count++;                                             
 8006cd4:	78 0c 08 01 	mvhi r12,0x801                                 
 8006cd8:	39 8c 4a 14 	ori r12,r12,0x4a14                             
 8006cdc:	29 83 00 00 	lw r3,(r12+0)                                  
 8006ce0:	78 07 08 01 	mvhi r7,0x801                                  
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
 8006ce4:	34 04 00 01 	mvi r4,1                                       
  _Watchdog_Sync_count++;                                             
 8006ce8:	34 63 00 01 	addi r3,r3,1                                   
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
 8006cec:	58 44 00 08 	sw (r2+8),r4                                   
  _Watchdog_Sync_count++;                                             
 8006cf0:	59 83 00 00 	sw (r12+0),r3                                  
 8006cf4:	38 e7 49 ac 	ori r7,r7,0x49ac                               
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8006cf8:	34 0a 00 01 	mvi r10,1                                      
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
  _Watchdog_Sync_count++;                                             
                                                                      
restart:                                                              
  delta_interval = the_watchdog->initial;                             
 8006cfc:	28 44 00 0c 	lw r4,(r2+12)                                  
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(               
  Chain_Control *header                                               
)                                                                     
{                                                                     
                                                                      
  return ( (Watchdog_Control *) _Chain_First( header ) );             
 8006d00:	28 23 00 00 	lw r3,(r1+0)                                   
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
 8006d04:	44 80 00 14 	be r4,r0,8006d54 <_Watchdog_Insert+0xb0>       
 8006d08:	28 65 00 00 	lw r5,(r3+0)                                   
 8006d0c:	44 a0 00 12 	be r5,r0,8006d54 <_Watchdog_Insert+0xb0>       
       break;                                                         
                                                                      
     if ( delta_interval < after->delta_interval ) {                  
 8006d10:	28 65 00 10 	lw r5,(r3+16)                                  
 8006d14:	54 a4 00 0e 	bgu r5,r4,8006d4c <_Watchdog_Insert+0xa8>      
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
 8006d18:	d0 06 00 00 	wcsr IE,r6                                     
 8006d1c:	d0 08 00 00 	wcsr IE,r8                                     
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8006d20:	28 4b 00 08 	lw r11,(r2+8)                                  
 8006d24:	5d 6a 00 19 	bne r11,r10,8006d88 <_Watchdog_Insert+0xe4>    
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
 8006d28:	28 eb 00 00 	lw r11,(r7+0)                                  
 8006d2c:	55 69 00 2d 	bgu r11,r9,8006de0 <_Watchdog_Insert+0x13c>    
     if ( delta_interval < after->delta_interval ) {                  
       after->delta_interval -= delta_interval;                       
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
 8006d30:	c8 85 20 00 	sub r4,r4,r5                                   
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
  _Watchdog_Sync_count--;                                             
  _ISR_Enable( level );                                               
}                                                                     
 8006d34:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
 8006d38:	44 80 00 07 	be r4,r0,8006d54 <_Watchdog_Insert+0xb0>       
 8006d3c:	28 65 00 00 	lw r5,(r3+0)                                   
 8006d40:	44 a0 00 05 	be r5,r0,8006d54 <_Watchdog_Insert+0xb0>       
       break;                                                         
                                                                      
     if ( delta_interval < after->delta_interval ) {                  
 8006d44:	28 65 00 10 	lw r5,(r3+16)                                  
 8006d48:	50 85 00 19 	bgeu r4,r5,8006dac <_Watchdog_Insert+0x108>    
       after->delta_interval -= delta_interval;                       
 8006d4c:	c8 a4 28 00 	sub r5,r5,r4                                   
 8006d50:	58 65 00 10 	sw (r3+16),r5                                  
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
 8006d54:	28 63 00 04 	lw r3,(r3+4)                                   
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
 8006d58:	78 01 08 01 	mvhi r1,0x801                                  
 8006d5c:	38 21 4a 18 	ori r1,r1,0x4a18                               
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 8006d60:	28 65 00 00 	lw r5,(r3+0)                                   
 8006d64:	28 28 00 00 	lw r8,(r1+0)                                   
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(                         
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_ACTIVE;                              
 8006d68:	34 01 00 02 	mvi r1,2                                       
 8006d6c:	58 41 00 08 	sw (r2+8),r1                                   
     }                                                                
  }                                                                   
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
 8006d70:	58 44 00 10 	sw (r2+16),r4                                  
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 8006d74:	58 43 00 04 	sw (r2+4),r3                                   
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 8006d78:	58 62 00 00 	sw (r3+0),r2                                   
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
 8006d7c:	58 a2 00 04 	sw (r5+4),r2                                   
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
 8006d80:	58 45 00 00 	sw (r2+0),r5                                   
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
 8006d84:	58 48 00 14 	sw (r2+20),r8                                  
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
 8006d88:	58 e9 00 00 	sw (r7+0),r9                                   
  _Watchdog_Sync_count--;                                             
 8006d8c:	29 81 00 00 	lw r1,(r12+0)                                  
 8006d90:	34 21 ff ff 	addi r1,r1,-1                                  
 8006d94:	59 81 00 00 	sw (r12+0),r1                                  
  _ISR_Enable( level );                                               
 8006d98:	d0 06 00 00 	wcsr IE,r6                                     
}                                                                     
 8006d9c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8006da0:	2b 8c 00 04 	lw r12,(sp+4)                                  
 8006da4:	37 9c 00 08 	addi sp,sp,8                                   
 8006da8:	c3 a0 00 00 	ret                                            
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
 8006dac:	d0 06 00 00 	wcsr IE,r6                                     
 8006db0:	d0 08 00 00 	wcsr IE,r8                                     
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8006db4:	28 4b 00 08 	lw r11,(r2+8)                                  
     if ( delta_interval < after->delta_interval ) {                  
       after->delta_interval -= delta_interval;                       
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
 8006db8:	c8 85 20 00 	sub r4,r4,r5                                   
                                                                      
     _ISR_Flash( level );                                             
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8006dbc:	5d 6a ff f3 	bne r11,r10,8006d88 <_Watchdog_Insert+0xe4>    <== NEVER TAKEN
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
 8006dc0:	28 e5 00 00 	lw r5,(r7+0)                                   
 8006dc4:	54 a9 00 07 	bgu r5,r9,8006de0 <_Watchdog_Insert+0x13c>     <== NEVER TAKEN
 8006dc8:	e3 ff ff db 	bi 8006d34 <_Watchdog_Insert+0x90>             
   *  Check to see if the watchdog has just been inserted by a        
   *  higher priority interrupt.  If so, abandon this insert.         
   */                                                                 
                                                                      
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
    _ISR_Enable( level );                                             
 8006dcc:	d0 06 00 00 	wcsr IE,r6                                     
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
  _Watchdog_Sync_count--;                                             
  _ISR_Enable( level );                                               
}                                                                     
 8006dd0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8006dd4:	2b 8c 00 04 	lw r12,(sp+4)                                  
 8006dd8:	37 9c 00 08 	addi sp,sp,8                                   
 8006ddc:	c3 a0 00 00 	ret                                            
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
       _Watchdog_Sync_level = insert_isr_nest_level;                  
 8006de0:	58 e9 00 00 	sw (r7+0),r9                                   
       goto restart;                                                  
 8006de4:	e3 ff ff c6 	bi 8006cfc <_Watchdog_Insert+0x58>             
                                                                      

08006e50 <_Watchdog_Remove>: { ISR_Level level; Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level );
 8006e50:	90 00 20 00 	rcsr r4,IE                                     
 8006e54:	34 02 ff fe 	mvi r2,-2                                      
 8006e58:	a0 82 10 00 	and r2,r4,r2                                   
 8006e5c:	d0 02 00 00 	wcsr IE,r2                                     
  previous_state = the_watchdog->state;                               
 8006e60:	28 22 00 08 	lw r2,(r1+8)                                   
  switch ( previous_state ) {                                         
 8006e64:	34 03 00 01 	mvi r3,1                                       
 8006e68:	44 43 00 27 	be r2,r3,8006f04 <_Watchdog_Remove+0xb4>       
 8006e6c:	5c 40 00 08 	bne r2,r0,8006e8c <_Watchdog_Remove+0x3c>      
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8006e70:	78 03 08 01 	mvhi r3,0x801                                  
 8006e74:	38 63 4a 18 	ori r3,r3,0x4a18                               
 8006e78:	28 63 00 00 	lw r3,(r3+0)                                   
 8006e7c:	58 23 00 18 	sw (r1+24),r3                                  
                                                                      
  _ISR_Enable( level );                                               
 8006e80:	d0 04 00 00 	wcsr IE,r4                                     
  return( previous_state );                                           
}                                                                     
 8006e84:	b8 40 08 00 	mv r1,r2                                       
 8006e88:	c3 a0 00 00 	ret                                            
  Watchdog_States   previous_state;                                   
  Watchdog_Control *next_watchdog;                                    
                                                                      
  _ISR_Disable( level );                                              
  previous_state = the_watchdog->state;                               
  switch ( previous_state ) {                                         
 8006e8c:	34 03 00 03 	mvi r3,3                                       
 8006e90:	54 43 ff f8 	bgu r2,r3,8006e70 <_Watchdog_Remove+0x20>      <== NEVER TAKEN
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
                                                                      
  _ISR_Enable( level );                                               
  return( previous_state );                                           
}                                                                     
 8006e94:	28 23 00 00 	lw r3,(r1+0)                                   
      break;                                                          
                                                                      
    case WATCHDOG_ACTIVE:                                             
    case WATCHDOG_REMOVE_IT:                                          
                                                                      
      the_watchdog->state = WATCHDOG_INACTIVE;                        
 8006e98:	58 20 00 08 	sw (r1+8),r0                                   
      next_watchdog = _Watchdog_Next( the_watchdog );                 
                                                                      
      if ( _Watchdog_Next(next_watchdog) )                            
 8006e9c:	28 65 00 00 	lw r5,(r3+0)                                   
 8006ea0:	44 a0 00 05 	be r5,r0,8006eb4 <_Watchdog_Remove+0x64>       
        next_watchdog->delta_interval += the_watchdog->delta_interval;
 8006ea4:	28 66 00 10 	lw r6,(r3+16)                                  
 8006ea8:	28 25 00 10 	lw r5,(r1+16)                                  
 8006eac:	b4 c5 28 00 	add r5,r6,r5                                   
 8006eb0:	58 65 00 10 	sw (r3+16),r5                                  
                                                                      
      if ( _Watchdog_Sync_count )                                     
 8006eb4:	78 05 08 01 	mvhi r5,0x801                                  
 8006eb8:	38 a5 4a 14 	ori r5,r5,0x4a14                               
 8006ebc:	28 a5 00 00 	lw r5,(r5+0)                                   
 8006ec0:	44 a0 00 07 	be r5,r0,8006edc <_Watchdog_Remove+0x8c>       
        _Watchdog_Sync_level = _ISR_Nest_level;                       
 8006ec4:	78 05 08 01 	mvhi r5,0x801                                  
 8006ec8:	38 a5 4d b4 	ori r5,r5,0x4db4                               
 8006ecc:	28 a6 00 08 	lw r6,(r5+8)                                   
 8006ed0:	78 05 08 01 	mvhi r5,0x801                                  
 8006ed4:	38 a5 49 ac 	ori r5,r5,0x49ac                               
 8006ed8:	58 a6 00 00 	sw (r5+0),r6                                   
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
 8006edc:	28 25 00 04 	lw r5,(r1+4)                                   
  next->previous = previous;                                          
 8006ee0:	58 65 00 04 	sw (r3+4),r5                                   
  previous->next = next;                                              
 8006ee4:	58 a3 00 00 	sw (r5+0),r3                                   
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8006ee8:	78 03 08 01 	mvhi r3,0x801                                  
 8006eec:	38 63 4a 18 	ori r3,r3,0x4a18                               
 8006ef0:	28 63 00 00 	lw r3,(r3+0)                                   
 8006ef4:	58 23 00 18 	sw (r1+24),r3                                  
                                                                      
  _ISR_Enable( level );                                               
 8006ef8:	d0 04 00 00 	wcsr IE,r4                                     
  return( previous_state );                                           
}                                                                     
 8006efc:	b8 40 08 00 	mv r1,r2                                       
 8006f00:	c3 a0 00 00 	ret                                            
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8006f04:	78 03 08 01 	mvhi r3,0x801                                  
 8006f08:	38 63 4a 18 	ori r3,r3,0x4a18                               
 8006f0c:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
      /*                                                              
       *  It is not actually on the chain so just change the state and
       *  the Insert operation we interrupted will be aborted.        
       */                                                             
      the_watchdog->state = WATCHDOG_INACTIVE;                        
 8006f10:	58 20 00 08 	sw (r1+8),r0                                   
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8006f14:	58 23 00 18 	sw (r1+24),r3                                  
                                                                      
  _ISR_Enable( level );                                               
 8006f18:	d0 04 00 00 	wcsr IE,r4                                     
  return( previous_state );                                           
}                                                                     
 8006f1c:	b8 40 08 00 	mv r1,r2                                       
 8006f20:	c3 a0 00 00 	ret                                            
                                                                      

08008a90 <_Watchdog_Report_chain>: void _Watchdog_Report_chain( const char *name, Chain_Control *header ) {
 8008a90:	37 9c ff ec 	addi sp,sp,-20                                 
 8008a94:	5b 8b 00 14 	sw (sp+20),r11                                 
 8008a98:	5b 8c 00 10 	sw (sp+16),r12                                 
 8008a9c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8008aa0:	5b 8e 00 08 	sw (sp+8),r14                                  
 8008aa4:	5b 9d 00 04 	sw (sp+4),ra                                   
 8008aa8:	b8 20 70 00 	mv r14,r1                                      
 8008aac:	b8 40 60 00 	mv r12,r2                                      
  ISR_Level          level;                                           
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
 8008ab0:	90 00 68 00 	rcsr r13,IE                                    
 8008ab4:	34 01 ff fe 	mvi r1,-2                                      
 8008ab8:	a1 a1 08 00 	and r1,r13,r1                                  
 8008abc:	d0 01 00 00 	wcsr IE,r1                                     
    printk( "Watchdog Chain: %s %p\n", name, header );                
 8008ac0:	78 01 08 01 	mvhi r1,0x801                                  
 8008ac4:	b9 80 18 00 	mv r3,r12                                      
 8008ac8:	38 21 f4 d8 	ori r1,r1,0xf4d8                               
 8008acc:	b9 c0 10 00 	mv r2,r14                                      
 8008ad0:	fb ff ea b0 	calli 8003590 <printk>                         
      printk( "== end of %s \n", name );                              
    } else {                                                          
      printk( "Chain is empty\n" );                                   
    }                                                                 
  _ISR_Enable( level );                                               
}                                                                     
 8008ad4:	29 8b 00 00 	lw r11,(r12+0)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8008ad8:	35 8c 00 04 	addi r12,r12,4                                 
  ISR_Level          level;                                           
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
    if ( !_Chain_Is_empty( header ) ) {                               
 8008adc:	45 6c 00 12 	be r11,r12,8008b24 <_Watchdog_Report_chain+0x94>
            node != _Chain_Tail(header) ;                             
            node = node->next )                                       
      {                                                               
        Watchdog_Control *watch = (Watchdog_Control *) node;          
                                                                      
        _Watchdog_Report( NULL, watch );                              
 8008ae0:	b9 60 10 00 	mv r2,r11                                      
 8008ae4:	34 01 00 00 	mvi r1,0                                       
 8008ae8:	f8 00 00 13 	calli 8008b34 <_Watchdog_Report>               
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
    if ( !_Chain_Is_empty( header ) ) {                               
      for ( node = _Chain_First( header ) ;                           
            node != _Chain_Tail(header) ;                             
            node = node->next )                                       
 8008aec:	29 6b 00 00 	lw r11,(r11+0)                                 
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
    if ( !_Chain_Is_empty( header ) ) {                               
      for ( node = _Chain_First( header ) ;                           
 8008af0:	5d 6c ff fc 	bne r11,r12,8008ae0 <_Watchdog_Report_chain+0x50><== NEVER TAKEN
      {                                                               
        Watchdog_Control *watch = (Watchdog_Control *) node;          
                                                                      
        _Watchdog_Report( NULL, watch );                              
      }                                                               
      printk( "== end of %s \n", name );                              
 8008af4:	78 01 08 01 	mvhi r1,0x801                                  
 8008af8:	38 21 f4 f0 	ori r1,r1,0xf4f0                               
 8008afc:	b9 c0 10 00 	mv r2,r14                                      
 8008b00:	fb ff ea a4 	calli 8003590 <printk>                         
    } else {                                                          
      printk( "Chain is empty\n" );                                   
    }                                                                 
  _ISR_Enable( level );                                               
 8008b04:	d0 0d 00 00 	wcsr IE,r13                                    
}                                                                     
 8008b08:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008b0c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8008b10:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8008b14:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8008b18:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8008b1c:	37 9c 00 14 	addi sp,sp,20                                  
 8008b20:	c3 a0 00 00 	ret                                            
                                                                      
        _Watchdog_Report( NULL, watch );                              
      }                                                               
      printk( "== end of %s \n", name );                              
    } else {                                                          
      printk( "Chain is empty\n" );                                   
 8008b24:	78 01 08 01 	mvhi r1,0x801                                  
 8008b28:	38 21 f5 00 	ori r1,r1,0xf500                               
 8008b2c:	fb ff ea 99 	calli 8003590 <printk>                         
 8008b30:	e3 ff ff f5 	bi 8008b04 <_Watchdog_Report_chain+0x74>       
                                                                      

08006f24 <_Watchdog_Tickle>: */ void _Watchdog_Tickle( Chain_Control *header ) {
 8006f24:	37 9c ff e4 	addi sp,sp,-28                                 
 8006f28:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8006f2c:	5b 8c 00 18 	sw (sp+24),r12                                 
 8006f30:	5b 8d 00 14 	sw (sp+20),r13                                 
 8006f34:	5b 8e 00 10 	sw (sp+16),r14                                 
 8006f38:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8006f3c:	5b 90 00 08 	sw (sp+8),r16                                  
 8006f40:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006f44:	b8 20 60 00 	mv r12,r1                                      
   * See the comment in watchdoginsert.c and watchdogadjust.c         
   * about why it's safe not to declare header a pointer to           
   * volatile data - till, 2003/7                                     
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
 8006f48:	90 00 68 00 	rcsr r13,IE                                    
 8006f4c:	34 01 ff fe 	mvi r1,-2                                      
 8006f50:	a1 a1 08 00 	and r1,r13,r1                                  
 8006f54:	d0 01 00 00 	wcsr IE,r1                                     
   } while ( !_Chain_Is_empty( header ) &&                            
             (the_watchdog->delta_interval == 0) );                   
                                                                      
leave:                                                                
   _ISR_Enable(level);                                                
}                                                                     
 8006f58:	29 8b 00 00 	lw r11,(r12+0)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8006f5c:	35 8e 00 04 	addi r14,r12,4                                 
   * See the comment in watchdoginsert.c and watchdogadjust.c         
   * about why it's safe not to declare header a pointer to           
   * volatile data - till, 2003/7                                     
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
 8006f60:	b9 a0 10 00 	mv r2,r13                                      
                                                                      
  if ( _Chain_Is_empty( header ) )                                    
 8006f64:	45 6e 00 1e 	be r11,r14,8006fdc <_Watchdog_Tickle+0xb8>     
   * to be inserted has already had its delta_interval adjusted to 0, and
   * so is added to the head of the chain with a delta_interval of 0. 
   *                                                                  
   * Steven Johnson - 12/2005 (gcc-3.2.3 -O3 on powerpc)              
   */                                                                 
  if (the_watchdog->delta_interval != 0) {                            
 8006f68:	29 61 00 10 	lw r1,(r11+16)                                 
 8006f6c:	5c 20 00 26 	bne r1,r0,8007004 <_Watchdog_Tickle+0xe0>      
  do {                                                                
     watchdog_state = _Watchdog_Remove( the_watchdog );               
                                                                      
     _ISR_Enable( level );                                            
                                                                      
     switch( watchdog_state ) {                                       
 8006f70:	34 10 00 02 	mvi r16,2                                      
                                                                      
       case WATCHDOG_REMOVE_IT:                                       
         break;                                                       
     }                                                                
                                                                      
     _ISR_Disable( level );                                           
 8006f74:	34 0f ff fe 	mvi r15,-2                                     
 8006f78:	e0 00 00 0a 	bi 8006fa0 <_Watchdog_Tickle+0x7c>             
 8006f7c:	90 00 10 00 	rcsr r2,IE                                     <== NOT EXECUTED
 8006f80:	a0 4f 08 00 	and r1,r2,r15                                  <== NOT EXECUTED
 8006f84:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
   } while ( !_Chain_Is_empty( header ) &&                            
             (the_watchdog->delta_interval == 0) );                   
                                                                      
leave:                                                                
   _ISR_Enable(level);                                                
}                                                                     
 8006f88:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
                                                                      
       case WATCHDOG_REMOVE_IT:                                       
         break;                                                       
     }                                                                
                                                                      
     _ISR_Disable( level );                                           
 8006f8c:	b8 40 68 00 	mv r13,r2                                      <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(               
  Chain_Control *header                                               
)                                                                     
{                                                                     
                                                                      
  return ( (Watchdog_Control *) _Chain_First( header ) );             
 8006f90:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
                                                                      
     the_watchdog = _Watchdog_First( header );                        
   } while ( !_Chain_Is_empty( header ) &&                            
             (the_watchdog->delta_interval == 0) );                   
 8006f94:	44 2e 00 12 	be r1,r14,8006fdc <_Watchdog_Tickle+0xb8>      <== NOT EXECUTED
     }                                                                
                                                                      
     _ISR_Disable( level );                                           
                                                                      
     the_watchdog = _Watchdog_First( header );                        
   } while ( !_Chain_Is_empty( header ) &&                            
 8006f98:	28 21 00 10 	lw r1,(r1+16)                                  
 8006f9c:	5c 20 00 10 	bne r1,r0,8006fdc <_Watchdog_Tickle+0xb8>      
    if ( the_watchdog->delta_interval != 0 )                          
      goto leave;                                                     
  }                                                                   
                                                                      
  do {                                                                
     watchdog_state = _Watchdog_Remove( the_watchdog );               
 8006fa0:	b9 60 08 00 	mv r1,r11                                      
 8006fa4:	fb ff ff ab 	calli 8006e50 <_Watchdog_Remove>               
                                                                      
     _ISR_Enable( level );                                            
 8006fa8:	d0 0d 00 00 	wcsr IE,r13                                    
                                                                      
     switch( watchdog_state ) {                                       
 8006fac:	5c 30 ff f4 	bne r1,r16,8006f7c <_Watchdog_Tickle+0x58>     <== NEVER TAKEN
       case WATCHDOG_ACTIVE:                                          
         (*the_watchdog->routine)(                                    
 8006fb0:	29 63 00 1c 	lw r3,(r11+28)                                 
 8006fb4:	29 61 00 20 	lw r1,(r11+32)                                 
 8006fb8:	29 62 00 24 	lw r2,(r11+36)                                 
 8006fbc:	d8 60 00 00 	call r3                                        
                                                                      
       case WATCHDOG_REMOVE_IT:                                       
         break;                                                       
     }                                                                
                                                                      
     _ISR_Disable( level );                                           
 8006fc0:	90 00 10 00 	rcsr r2,IE                                     
 8006fc4:	a0 4f 08 00 	and r1,r2,r15                                  
 8006fc8:	d0 01 00 00 	wcsr IE,r1                                     
   } while ( !_Chain_Is_empty( header ) &&                            
             (the_watchdog->delta_interval == 0) );                   
                                                                      
leave:                                                                
   _ISR_Enable(level);                                                
}                                                                     
 8006fcc:	29 81 00 00 	lw r1,(r12+0)                                  
                                                                      
       case WATCHDOG_REMOVE_IT:                                       
         break;                                                       
     }                                                                
                                                                      
     _ISR_Disable( level );                                           
 8006fd0:	b8 40 68 00 	mv r13,r2                                      
 8006fd4:	b8 20 58 00 	mv r11,r1                                      
                                                                      
     the_watchdog = _Watchdog_First( header );                        
   } while ( !_Chain_Is_empty( header ) &&                            
             (the_watchdog->delta_interval == 0) );                   
 8006fd8:	5c 2e ff f0 	bne r1,r14,8006f98 <_Watchdog_Tickle+0x74>     
                                                                      
leave:                                                                
   _ISR_Enable(level);                                                
 8006fdc:	d0 02 00 00 	wcsr IE,r2                                     
}                                                                     
 8006fe0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006fe4:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8006fe8:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8006fec:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8006ff0:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8006ff4:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8006ff8:	2b 90 00 08 	lw r16,(sp+8)                                  
 8006ffc:	37 9c 00 1c 	addi sp,sp,28                                  
 8007000:	c3 a0 00 00 	ret                                            
   * so is added to the head of the chain with a delta_interval of 0. 
   *                                                                  
   * Steven Johnson - 12/2005 (gcc-3.2.3 -O3 on powerpc)              
   */                                                                 
  if (the_watchdog->delta_interval != 0) {                            
    the_watchdog->delta_interval--;                                   
 8007004:	34 21 ff ff 	addi r1,r1,-1                                  
 8007008:	59 61 00 10 	sw (r11+16),r1                                 
    if ( the_watchdog->delta_interval != 0 )                          
 800700c:	44 20 ff d9 	be r1,r0,8006f70 <_Watchdog_Tickle+0x4c>       
 8007010:	e3 ff ff f3 	bi 8006fdc <_Watchdog_Tickle+0xb8>             
                                                                      

0800631c <_rename_r>: int _rename_r( struct _reent *ptr __attribute__((unused)), const char *old, const char *new ) {
 800631c:	37 9c ff a0 	addi sp,sp,-96                                 
 8006320:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8006324:	5b 8c 00 18 	sw (sp+24),r12                                 
 8006328:	5b 8d 00 14 	sw (sp+20),r13                                 
 800632c:	5b 8e 00 10 	sw (sp+16),r14                                 
 8006330:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8006334:	5b 90 00 08 	sw (sp+8),r16                                  
 8006338:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Get the parent node of the old path to be renamed. Find the parent path.
   */                                                                 
                                                                      
  old_parent_pathlen = rtems_filesystem_dirname ( old );              
 800633c:	b8 40 08 00 	mv r1,r2                                       
int _rename_r(                                                        
  struct _reent *ptr __attribute__((unused)),                         
  const char    *old,                                                 
  const char    *new                                                  
)                                                                     
{                                                                     
 8006340:	b8 40 60 00 	mv r12,r2                                      
 8006344:	b8 60 70 00 	mv r14,r3                                      
                                                                      
  /*                                                                  
   *  Get the parent node of the old path to be renamed. Find the parent path.
   */                                                                 
                                                                      
  old_parent_pathlen = rtems_filesystem_dirname ( old );              
 8006348:	fb ff f9 08 	calli 8004768 <rtems_filesystem_dirname>       
                                                                      
  if ( old_parent_pathlen == 0 )                                      
 800634c:	5c 20 00 62 	bne r1,r0,80064d4 <_rename_r+0x1b8>            
    rtems_filesystem_get_start_loc( old, &i, &old_parent_loc );       
 8006350:	37 8d 00 34 	addi r13,sp,52                                 
 8006354:	b9 80 08 00 	mv r1,r12                                      
 8006358:	37 82 00 60 	addi r2,sp,96                                  
 800635c:	b9 a0 18 00 	mv r3,r13                                      
 8006360:	f8 00 01 09 	calli 8006784 <rtems_filesystem_get_start_loc> 
 8006364:	34 0b 00 00 	mvi r11,0                                      
  rtems_filesystem_location_info_t    old_parent_loc;                 
  rtems_filesystem_location_info_t    new_parent_loc;                 
  int                                 i;                              
  int                                 result;                         
  const char                         *name;                           
  bool                                free_old_parentloc = false;     
 8006368:	34 10 00 00 	mvi r16,0                                      
                                                                      
  /*                                                                  
   * Start from the parent to find the node that should be under it.  
   */                                                                 
                                                                      
  old_loc = old_parent_loc;                                           
 800636c:	2b 82 00 34 	lw r2,(sp+52)                                  
  name = old + old_parent_pathlen;                                    
 8006370:	b5 8b 58 00 	add r11,r12,r11                                
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
 8006374:	b9 60 08 00 	mv r1,r11                                      
                                                                      
  /*                                                                  
   * Start from the parent to find the node that should be under it.  
   */                                                                 
                                                                      
  old_loc = old_parent_loc;                                           
 8006378:	5b 82 00 48 	sw (sp+72),r2                                  
 800637c:	2b 82 00 38 	lw r2,(sp+56)                                  
  name = old + old_parent_pathlen;                                    
 8006380:	5b 8b 00 5c 	sw (sp+92),r11                                 
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
                                                                      
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
 8006384:	37 8c 00 48 	addi r12,sp,72                                 
                                                                      
  /*                                                                  
   * Start from the parent to find the node that should be under it.  
   */                                                                 
                                                                      
  old_loc = old_parent_loc;                                           
 8006388:	5b 82 00 4c 	sw (sp+76),r2                                  
 800638c:	2b 82 00 3c 	lw r2,(sp+60)                                  
 8006390:	5b 82 00 50 	sw (sp+80),r2                                  
 8006394:	2b 82 00 40 	lw r2,(sp+64)                                  
 8006398:	5b 82 00 54 	sw (sp+84),r2                                  
 800639c:	2b 82 00 44 	lw r2,(sp+68)                                  
 80063a0:	5b 82 00 58 	sw (sp+88),r2                                  
  name = old + old_parent_pathlen;                                    
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
 80063a4:	f8 00 39 b8 	calli 8014a84 <strlen>                         
 80063a8:	b8 20 10 00 	mv r2,r1                                       
 80063ac:	b9 60 08 00 	mv r1,r11                                      
 80063b0:	fb ff f9 03 	calli 80047bc <rtems_filesystem_prefix_separators>
 80063b4:	b5 61 58 00 	add r11,r11,r1                                 
                                                                      
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
 80063b8:	b9 60 08 00 	mv r1,r11                                      
   * Start from the parent to find the node that should be under it.  
   */                                                                 
                                                                      
  old_loc = old_parent_loc;                                           
  name = old + old_parent_pathlen;                                    
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
 80063bc:	5b 8b 00 5c 	sw (sp+92),r11                                 
                                                                      
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
 80063c0:	f8 00 39 b1 	calli 8014a84 <strlen>                         
 80063c4:	b8 20 10 00 	mv r2,r1                                       
 80063c8:	34 03 00 00 	mvi r3,0                                       
 80063cc:	b9 60 08 00 	mv r1,r11                                      
 80063d0:	b9 80 20 00 	mv r4,r12                                      
 80063d4:	34 05 00 00 	mvi r5,0                                       
 80063d8:	fb ff f8 a6 	calli 8004670 <rtems_filesystem_evaluate_relative_path>
 80063dc:	b8 20 78 00 	mv r15,r1                                      
                                                    0, &old_loc, false );
  if ( result != 0 ) {                                                
 80063e0:	5c 20 00 38 	bne r1,r0,80064c0 <_rename_r+0x1a4>            
                                                                      
  /*                                                                  
   * Get the parent of the new node we are renaming to.               
   */                                                                 
                                                                      
  rtems_filesystem_get_start_loc( new, &i, &new_parent_loc );         
 80063e4:	37 8b 00 20 	addi r11,sp,32                                 
 80063e8:	b9 c0 08 00 	mv r1,r14                                      
 80063ec:	37 82 00 60 	addi r2,sp,96                                  
 80063f0:	b9 60 18 00 	mv r3,r11                                      
 80063f4:	f8 00 00 e4 	calli 8006784 <rtems_filesystem_get_start_loc> 
                                                                      
  result = (*new_parent_loc.ops->evalformake_h)( &new[i], &new_parent_loc, &name );
 80063f8:	2b 81 00 2c 	lw r1,(sp+44)                                  
 80063fc:	b9 60 10 00 	mv r2,r11                                      
 8006400:	37 83 00 5c 	addi r3,sp,92                                  
 8006404:	28 24 00 04 	lw r4,(r1+4)                                   
 8006408:	2b 81 00 60 	lw r1,(sp+96)                                  
 800640c:	b5 c1 08 00 	add r1,r14,r1                                  
 8006410:	d8 80 00 00 	call r4                                        
 8006414:	b8 20 70 00 	mv r14,r1                                      
  if ( result != 0 ) {                                                
 8006418:	5c 2f 00 3b 	bne r1,r15,8006504 <_rename_r+0x1e8>           
  /*                                                                  
   *  Check to see if the caller is trying to rename across file system
   *  boundaries.                                                     
   */                                                                 
                                                                      
  if ( old_parent_loc.mt_entry != new_parent_loc.mt_entry ) {         
 800641c:	2b 81 00 30 	lw r1,(sp+48)                                  
 8006420:	2b 82 00 44 	lw r2,(sp+68)                                  
 8006424:	5c 41 00 1b 	bne r2,r1,8006490 <_rename_r+0x174>            
      rtems_filesystem_freenode( &old_parent_loc );                   
    rtems_filesystem_freenode( &old_loc );                            
    rtems_set_errno_and_return_minus_one( EXDEV );                    
  }                                                                   
                                                                      
  result = (*new_parent_loc.ops->rename_h)( &old_parent_loc, &old_loc, &new_parent_loc, name );
 8006428:	2b 82 00 2c 	lw r2,(sp+44)                                  
 800642c:	2b 84 00 5c 	lw r4,(sp+92)                                  
 8006430:	b9 a0 08 00 	mv r1,r13                                      
 8006434:	28 45 00 40 	lw r5,(r2+64)                                  
 8006438:	b9 60 18 00 	mv r3,r11                                      
 800643c:	b9 80 10 00 	mv r2,r12                                      
 8006440:	d8 a0 00 00 	call r5                                        
 8006444:	b8 20 78 00 	mv r15,r1                                      
                                                                      
  rtems_filesystem_freenode( &new_parent_loc );                       
 8006448:	b9 60 08 00 	mv r1,r11                                      
 800644c:	fb ff f9 91 	calli 8004a90 <rtems_filesystem_freenode>      
  if ( free_old_parentloc )                                           
 8006450:	5e 0e 00 0d 	bne r16,r14,8006484 <_rename_r+0x168>          
    rtems_filesystem_freenode( &old_parent_loc );                     
  rtems_filesystem_freenode( &old_loc );                              
 8006454:	b9 80 08 00 	mv r1,r12                                      
 8006458:	fb ff f9 8e 	calli 8004a90 <rtems_filesystem_freenode>      
                                                                      
  return result;                                                      
}                                                                     
 800645c:	b9 e0 08 00 	mv r1,r15                                      
 8006460:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006464:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8006468:	2b 8c 00 18 	lw r12,(sp+24)                                 
 800646c:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8006470:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8006474:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8006478:	2b 90 00 08 	lw r16,(sp+8)                                  
 800647c:	37 9c 00 60 	addi sp,sp,96                                  
 8006480:	c3 a0 00 00 	ret                                            
                                                                      
  result = (*new_parent_loc.ops->rename_h)( &old_parent_loc, &old_loc, &new_parent_loc, name );
                                                                      
  rtems_filesystem_freenode( &new_parent_loc );                       
  if ( free_old_parentloc )                                           
    rtems_filesystem_freenode( &old_parent_loc );                     
 8006484:	b9 a0 08 00 	mv r1,r13                                      
 8006488:	fb ff f9 82 	calli 8004a90 <rtems_filesystem_freenode>      
 800648c:	e3 ff ff f2 	bi 8006454 <_rename_r+0x138>                   
   *  Check to see if the caller is trying to rename across file system
   *  boundaries.                                                     
   */                                                                 
                                                                      
  if ( old_parent_loc.mt_entry != new_parent_loc.mt_entry ) {         
    rtems_filesystem_freenode( &new_parent_loc );                     
 8006490:	b9 60 08 00 	mv r1,r11                                      
 8006494:	fb ff f9 7f 	calli 8004a90 <rtems_filesystem_freenode>      
    if ( free_old_parentloc )                                         
 8006498:	46 0e 00 03 	be r16,r14,80064a4 <_rename_r+0x188>           
      rtems_filesystem_freenode( &old_parent_loc );                   
 800649c:	b9 a0 08 00 	mv r1,r13                                      
 80064a0:	fb ff f9 7c 	calli 8004a90 <rtems_filesystem_freenode>      
    rtems_filesystem_freenode( &old_loc );                            
 80064a4:	b9 80 08 00 	mv r1,r12                                      
 80064a8:	fb ff f9 7a 	calli 8004a90 <rtems_filesystem_freenode>      
    rtems_set_errno_and_return_minus_one( EXDEV );                    
 80064ac:	f8 00 2b 90 	calli 80112ec <__errno>                        
 80064b0:	34 02 00 12 	mvi r2,18                                      
 80064b4:	58 22 00 00 	sw (r1+0),r2                                   
 80064b8:	34 0f ff ff 	mvi r15,-1                                     
 80064bc:	e3 ff ff e8 	bi 800645c <_rename_r+0x140>                   
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
                                                    0, &old_loc, false );
  if ( result != 0 ) {                                                
    if ( free_old_parentloc )                                         
      rtems_filesystem_freenode( &old_parent_loc );                   
    return -1;                                                        
 80064c0:	34 0f ff ff 	mvi r15,-1                                     
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
                                                                      
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
                                                    0, &old_loc, false );
  if ( result != 0 ) {                                                
    if ( free_old_parentloc )                                         
 80064c4:	46 00 ff e6 	be r16,r0,800645c <_rename_r+0x140>            <== NEVER TAKEN
      rtems_filesystem_freenode( &old_parent_loc );                   
 80064c8:	b9 a0 08 00 	mv r1,r13                                      
 80064cc:	fb ff f9 71 	calli 8004a90 <rtems_filesystem_freenode>      
 80064d0:	e3 ff ff e3 	bi 800645c <_rename_r+0x140>                   
  old_parent_pathlen = rtems_filesystem_dirname ( old );              
                                                                      
  if ( old_parent_pathlen == 0 )                                      
    rtems_filesystem_get_start_loc( old, &i, &old_parent_loc );       
  else {                                                              
    result = rtems_filesystem_evaluate_path( old, old_parent_pathlen, 
 80064d4:	b8 20 58 00 	mv r11,r1                                      
 80064d8:	37 8d 00 34 	addi r13,sp,52                                 
 80064dc:	b9 80 08 00 	mv r1,r12                                      
 80064e0:	b9 60 10 00 	mv r2,r11                                      
 80064e4:	34 03 00 02 	mvi r3,2                                       
 80064e8:	b9 a0 20 00 	mv r4,r13                                      
 80064ec:	34 05 00 00 	mvi r5,0                                       
 80064f0:	fb ff f8 83 	calli 80046fc <rtems_filesystem_evaluate_path> 
                                             RTEMS_LIBIO_PERMS_WRITE, 
                                             &old_parent_loc,         
                                             false );                 
    if ( result != 0 )                                                
      return -1;                                                      
 80064f4:	34 0f ff ff 	mvi r15,-1                                     
  else {                                                              
    result = rtems_filesystem_evaluate_path( old, old_parent_pathlen, 
                                             RTEMS_LIBIO_PERMS_WRITE, 
                                             &old_parent_loc,         
                                             false );                 
    if ( result != 0 )                                                
 80064f8:	5c 20 ff d9 	bne r1,r0,800645c <_rename_r+0x140>            <== NEVER TAKEN
      return -1;                                                      
                                                                      
    free_old_parentloc = true;                                        
 80064fc:	34 10 00 01 	mvi r16,1                                      
 8006500:	e3 ff ff 9b 	bi 800636c <_rename_r+0x50>                    
                                                                      
  rtems_filesystem_get_start_loc( new, &i, &new_parent_loc );         
                                                                      
  result = (*new_parent_loc.ops->evalformake_h)( &new[i], &new_parent_loc, &name );
  if ( result != 0 ) {                                                
    rtems_filesystem_freenode( &new_parent_loc );                     
 8006504:	b9 60 08 00 	mv r1,r11                                      
 8006508:	fb ff f9 62 	calli 8004a90 <rtems_filesystem_freenode>      
    if ( free_old_parentloc )                                         
 800650c:	46 00 00 03 	be r16,r0,8006518 <_rename_r+0x1fc>            <== NEVER TAKEN
      rtems_filesystem_freenode( &old_parent_loc );                   
 8006510:	b9 a0 08 00 	mv r1,r13                                      
 8006514:	fb ff f9 5f 	calli 8004a90 <rtems_filesystem_freenode>      
    rtems_filesystem_freenode( &old_loc );                            
 8006518:	b9 80 08 00 	mv r1,r12                                      
 800651c:	fb ff f9 5d 	calli 8004a90 <rtems_filesystem_freenode>      
    return -1;                                                        
 8006520:	34 0f ff ff 	mvi r15,-1                                     
 8006524:	e3 ff ff ce 	bi 800645c <_rename_r+0x140>                   
                                                                      

08003308 <adjtime>: int adjtime( struct timeval *delta, struct timeval *olddelta ) {
 8003308:	37 9c ff e8 	addi sp,sp,-24                                 
 800330c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003310:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003314:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003318:	5b 9d 00 04 	sw (sp+4),ra                                   
 800331c:	b8 20 58 00 	mv r11,r1                                      
 8003320:	b8 40 60 00 	mv r12,r2                                      
  long   adjustment;                                                  
                                                                      
  /*                                                                  
   * Simple validations                                               
   */                                                                 
  if ( !delta )                                                       
 8003324:	44 20 00 06 	be r1,r0,800333c <adjtime+0x34>                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
 8003328:	78 03 08 01 	mvhi r3,0x801                                  
 800332c:	38 63 e6 bc 	ori r3,r3,0xe6bc                               
 8003330:	28 22 00 04 	lw r2,(r1+4)                                   
 8003334:	28 61 00 00 	lw r1,(r3+0)                                   
 8003338:	50 22 00 0b 	bgeu r1,r2,8003364 <adjtime+0x5c>              
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 800333c:	f8 00 2a ac 	calli 800ddec <__errno>                        
 8003340:	34 02 00 16 	mvi r2,22                                      
 8003344:	58 22 00 00 	sw (r1+0),r2                                   
 8003348:	34 01 ff ff 	mvi r1,-1                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
    *olddelta = *delta;                                               
                                                                      
  return 0;                                                           
}                                                                     
 800334c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003350:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003354:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003358:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800335c:	37 9c 00 18 	addi sp,sp,24                                  
 8003360:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( olddelta ) {                                                   
 8003364:	45 80 00 04 	be r12,r0,8003374 <adjtime+0x6c>               
    olddelta->tv_sec  = 0;                                            
    olddelta->tv_usec = 0;                                            
 8003368:	59 80 00 04 	sw (r12+4),r0                                  
 800336c:	29 62 00 04 	lw r2,(r11+4)                                  
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( olddelta ) {                                                   
    olddelta->tv_sec  = 0;                                            
 8003370:	59 80 00 00 	sw (r12+0),r0                                  
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
 8003374:	29 63 00 00 	lw r3,(r11+0)                                  
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
 8003378:	78 01 08 02 	mvhi r1,0x802                                  
 800337c:	38 21 00 f4 	ori r1,r1,0xf4                                 
    olddelta->tv_sec  = 0;                                            
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
 8003380:	b4 63 20 00 	add r4,r3,r3                                   
 8003384:	b4 84 20 00 	add r4,r4,r4                                   
 8003388:	b4 84 20 00 	add r4,r4,r4                                   
 800338c:	b4 84 28 00 	add r5,r4,r4                                   
 8003390:	b4 a5 28 00 	add r5,r5,r5                                   
 8003394:	b4 a5 28 00 	add r5,r5,r5                                   
 8003398:	b4 a5 28 00 	add r5,r5,r5                                   
 800339c:	b4 a5 28 00 	add r5,r5,r5                                   
 80033a0:	c8 a4 28 00 	sub r5,r5,r4                                   
 80033a4:	b4 a5 20 00 	add r4,r5,r5                                   
 80033a8:	b4 84 20 00 	add r4,r4,r4                                   
 80033ac:	b4 84 20 00 	add r4,r4,r4                                   
 80033b0:	b4 84 20 00 	add r4,r4,r4                                   
 80033b4:	b4 84 20 00 	add r4,r4,r4                                   
 80033b8:	b4 84 20 00 	add r4,r4,r4                                   
 80033bc:	c8 85 20 00 	sub r4,r4,r5                                   
 80033c0:	b4 83 18 00 	add r3,r4,r3                                   
 80033c4:	b4 63 18 00 	add r3,r3,r3                                   
 80033c8:	b4 63 18 00 	add r3,r3,r3                                   
 80033cc:	b4 63 18 00 	add r3,r3,r3                                   
 80033d0:	b4 63 18 00 	add r3,r3,r3                                   
 80033d4:	b4 63 18 00 	add r3,r3,r3                                   
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
 80033d8:	28 24 00 0c 	lw r4,(r1+12)                                  
    olddelta->tv_sec  = 0;                                            
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
 80033dc:	b4 63 18 00 	add r3,r3,r3                                   
  adjustment += delta->tv_usec;                                       
 80033e0:	b4 43 18 00 	add r3,r2,r3                                   
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
    return 0;                                                         
 80033e4:	34 01 00 00 	mvi r1,0                                       
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
 80033e8:	54 83 ff d9 	bgu r4,r3,800334c <adjtime+0x44>               
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80033ec:	78 01 08 02 	mvhi r1,0x802                                  
 80033f0:	38 21 0a 00 	ori r1,r1,0xa00                                
 80033f4:	28 22 00 00 	lw r2,(r1+0)                                   
 80033f8:	34 42 00 01 	addi r2,r2,1                                   
 80033fc:	58 22 00 00 	sw (r1+0),r2                                   
   * This prevents context switches while we are adjusting the TOD    
   */                                                                 
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
 8003400:	37 8d 00 14 	addi r13,sp,20                                 
 8003404:	b9 a0 08 00 	mv r1,r13                                      
 8003408:	f8 00 05 82 	calli 8004a10 <_TOD_Get>                       
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 800340c:	29 63 00 04 	lw r3,(r11+4)                                  
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 8003410:	78 04 08 01 	mvhi r4,0x801                                  
 8003414:	38 84 e8 38 	ori r4,r4,0xe838                               
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003418:	b4 63 18 00 	add r3,r3,r3                                   
 800341c:	b4 63 18 00 	add r3,r3,r3                                   
 8003420:	b4 63 18 00 	add r3,r3,r3                                   
 8003424:	b4 63 10 00 	add r2,r3,r3                                   
 8003428:	b4 42 10 00 	add r2,r2,r2                                   
 800342c:	b4 62 18 00 	add r3,r3,r2                                   
 8003430:	b4 63 10 00 	add r2,r3,r3                                   
 8003434:	b4 42 10 00 	add r2,r2,r2                                   
 8003438:	b4 62 18 00 	add r3,r3,r2                                   
 800343c:	b4 63 10 00 	add r2,r3,r3                                   
 8003440:	b4 42 10 00 	add r2,r2,r2                                   
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
 8003444:	29 61 00 00 	lw r1,(r11+0)                                  
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003448:	b4 62 18 00 	add r3,r3,r2                                   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 800344c:	28 82 00 00 	lw r2,(r4+0)                                   
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
 8003450:	2b 84 00 14 	lw r4,(sp+20)                                  
 8003454:	b4 81 20 00 	add r4,r4,r1                                   
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003458:	2b 81 00 18 	lw r1,(sp+24)                                  
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
 800345c:	5b 84 00 14 	sw (sp+20),r4                                  
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003460:	b4 61 18 00 	add r3,r3,r1                                   
 8003464:	5b 83 00 18 	sw (sp+24),r3                                  
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 8003468:	50 43 00 09 	bgeu r2,r3,800348c <adjtime+0x184>             
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
 800346c:	78 01 08 01 	mvhi r1,0x801                                  
 8003470:	38 21 e8 3c 	ori r1,r1,0xe83c                               
 8003474:	28 25 00 00 	lw r5,(r1+0)                                   
 8003478:	b4 65 18 00 	add r3,r3,r5                                   
 *  At one point there was a static variable named adjustment         
 *  used by this implementation.  I don't see any reason for it       
 *  to be here based upon the GNU/Linux documentation.                
 */                                                                   
                                                                      
int  adjtime(                                                         
 800347c:	34 84 00 01 	addi r4,r4,1                                   
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 8003480:	54 62 ff fe 	bgu r3,r2,8003478 <adjtime+0x170>              <== NEVER TAKEN
 8003484:	5b 83 00 18 	sw (sp+24),r3                                  
 8003488:	5b 84 00 14 	sw (sp+20),r4                                  
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec++;                                                    
    }                                                                 
                                                                      
    /* if adjustment is too much negative */                          
    while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {       
 800348c:	78 04 08 01 	mvhi r4,0x801                                  
 8003490:	38 84 e8 3c 	ori r4,r4,0xe83c                               
 8003494:	28 82 00 00 	lw r2,(r4+0)                                   
 8003498:	54 62 00 0a 	bgu r3,r2,80034c0 <adjtime+0x1b8>              <== NEVER TAKEN
      ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;                       
 800349c:	78 01 08 01 	mvhi r1,0x801                                  
 80034a0:	38 21 e6 b8 	ori r1,r1,0xe6b8                               
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec++;                                                    
    }                                                                 
                                                                      
    /* if adjustment is too much negative */                          
    while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {       
 80034a4:	2b 84 00 14 	lw r4,(sp+20)                                  
      ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;                       
 80034a8:	28 25 00 00 	lw r5,(r1+0)                                   
 80034ac:	b4 65 18 00 	add r3,r3,r5                                   
 *  At one point there was a static variable named adjustment         
 *  used by this implementation.  I don't see any reason for it       
 *  to be here based upon the GNU/Linux documentation.                
 */                                                                   
                                                                      
int  adjtime(                                                         
 80034b0:	34 84 ff ff 	addi r4,r4,-1                                  
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec++;                                                    
    }                                                                 
                                                                      
    /* if adjustment is too much negative */                          
    while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {       
 80034b4:	50 43 ff fe 	bgeu r2,r3,80034ac <adjtime+0x1a4>             
 80034b8:	5b 83 00 18 	sw (sp+24),r3                                  
 80034bc:	5b 84 00 14 	sw (sp+20),r4                                  
      ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec--;                                                    
    }                                                                 
                                                                      
    _TOD_Set( &ts );                                                  
 80034c0:	b9 a0 08 00 	mv r1,r13                                      
 80034c4:	f8 00 05 85 	calli 8004ad8 <_TOD_Set>                       
                                                                      
  _Thread_Enable_dispatch();                                          
 80034c8:	f8 00 0c 34 	calli 8006598 <_Thread_Enable_dispatch>        
                                                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
    *olddelta = *delta;                                               
                                                                      
  return 0;                                                           
 80034cc:	34 01 00 00 	mvi r1,0                                       
    _TOD_Set( &ts );                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
 80034d0:	45 80 ff 9f 	be r12,r0,800334c <adjtime+0x44>               
    *olddelta = *delta;                                               
 80034d4:	29 62 00 00 	lw r2,(r11+0)                                  
 80034d8:	59 82 00 00 	sw (r12+0),r2                                  
 80034dc:	29 62 00 04 	lw r2,(r11+4)                                  
 80034e0:	59 82 00 04 	sw (r12+4),r2                                  
                                                                      
  return 0;                                                           
}                                                                     
 80034e4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80034e8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80034ec:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80034f0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80034f4:	37 9c 00 18 	addi sp,sp,24                                  
 80034f8:	c3 a0 00 00 	ret                                            
                                                                      

08003d6c <aio_cancel>: * operation(s) cannot be canceled */ int aio_cancel(int fildes, struct aiocb *aiocbp) {
 8003d6c:	37 9c ff ec 	addi sp,sp,-20                                 
 8003d70:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003d74:	5b 8c 00 10 	sw (sp+16),r12                                 
 8003d78:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003d7c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003d80:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
 8003d84:	78 0b 08 01 	mvhi r11,0x801                                 
 8003d88:	39 6b 88 68 	ori r11,r11,0x8868                             
 *                          operation(s) cannot be canceled           
 */                                                                   
                                                                      
                                                                      
int aio_cancel(int fildes, struct aiocb  *aiocbp)                     
{                                                                     
 8003d8c:	b8 20 68 00 	mv r13,r1                                      
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
 8003d90:	b9 60 08 00 	mv r1,r11                                      
 *                          operation(s) cannot be canceled           
 */                                                                   
                                                                      
                                                                      
int aio_cancel(int fildes, struct aiocb  *aiocbp)                     
{                                                                     
 8003d94:	b8 40 60 00 	mv r12,r2                                      
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
 8003d98:	f8 00 05 1f 	calli 8005214 <pthread_mutex_lock>             
                                                                      
  if (fcntl (fildes, F_GETFD) < 0) {                                  
 8003d9c:	b9 a0 08 00 	mv r1,r13                                      
 8003da0:	34 02 00 01 	mvi r2,1                                       
 8003da4:	f8 00 1f 73 	calli 800bb70 <fcntl>                          
 8003da8:	4c 20 00 08 	bge r1,r0,8003dc8 <aio_cancel+0x5c>            
    pthread_mutex_unlock(&aio_request_queue.mutex);                   
 8003dac:	b9 60 08 00 	mv r1,r11                                      
 8003db0:	f8 00 05 49 	calli 80052d4 <pthread_mutex_unlock>           
    rtems_set_errno_and_return_minus_one (EBADF);                     
 8003db4:	f8 00 30 5a 	calli 800ff1c <__errno>                        
 8003db8:	34 02 00 09 	mvi r2,9                                       
 8003dbc:	58 22 00 00 	sw (r1+0),r2                                   
 8003dc0:	34 0c ff ff 	mvi r12,-1                                     
 8003dc4:	e0 00 00 16 	bi 8003e1c <aio_cancel+0xb0>                   
  }                                                                   
                                                                      
  /* if aiocbp is NULL remove all request for given file descriptor */
  if (aiocbp == NULL) {                                               
 8003dc8:	45 80 00 40 	be r12,r0,8003ec8 <aio_cancel+0x15c>           
    pthread_mutex_unlock (&aio_request_queue.mutex);                  
    return AIO_CANCELED;                                              
  } else {                                                            
    AIO_printf ("Cancel request\n");                                  
                                                                      
    if (aiocbp->aio_fildes != fildes) {                               
 8003dcc:	29 8e 00 00 	lw r14,(r12+0)                                 
 8003dd0:	5d cd 00 37 	bne r14,r13,8003eac <aio_cancel+0x140>         
      pthread_mutex_unlock (&aio_request_queue.mutex);                
      rtems_set_errno_and_return_minus_one (EINVAL);                  
    }                                                                 
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
 8003dd4:	78 01 08 01 	mvhi r1,0x801                                  
 8003dd8:	38 21 88 b0 	ori r1,r1,0x88b0                               
 8003ddc:	b9 c0 10 00 	mv r2,r14                                      
 8003de0:	34 03 00 00 	mvi r3,0                                       
 8003de4:	f8 00 00 e0 	calli 8004164 <rtems_aio_search_fd>            
 8003de8:	b8 20 68 00 	mv r13,r1                                      
    if (r_chain == NULL) {                                            
 8003dec:	44 20 00 14 	be r1,r0,8003e3c <aio_cancel+0xd0>             
        return AIO_ALLDONE;                                           
      }                                                               
    }                                                                 
      AIO_printf ("Request on [WQ]\n");                               
                                                                      
      pthread_mutex_lock (&r_chain->mutex);                           
 8003df0:	34 2e 00 1c 	addi r14,r1,28                                 
 8003df4:	b9 c0 08 00 	mv r1,r14                                      
 8003df8:	f8 00 05 07 	calli 8005214 <pthread_mutex_lock>             
      result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);        
 8003dfc:	b9 80 10 00 	mv r2,r12                                      
 8003e00:	35 a1 00 08 	addi r1,r13,8                                  
 8003e04:	f8 00 02 10 	calli 8004644 <rtems_aio_remove_req>           
 8003e08:	b8 20 60 00 	mv r12,r1                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
 8003e0c:	b9 c0 08 00 	mv r1,r14                                      
 8003e10:	f8 00 05 31 	calli 80052d4 <pthread_mutex_unlock>           
      pthread_mutex_unlock (&aio_request_queue.mutex);                
 8003e14:	b9 60 08 00 	mv r1,r11                                      
 8003e18:	f8 00 05 2f 	calli 80052d4 <pthread_mutex_unlock>           
      return result;                                                  
  }                                                                   
  return AIO_ALLDONE;                                                 
}                                                                     
 8003e1c:	b9 80 08 00 	mv r1,r12                                      
 8003e20:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003e24:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8003e28:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8003e2c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8003e30:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8003e34:	37 9c 00 14 	addi sp,sp,20                                  
 8003e38:	c3 a0 00 00 	ret                                            
      rtems_set_errno_and_return_minus_one (EINVAL);                  
    }                                                                 
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
    if (r_chain == NULL) {                                            
      if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {      
 8003e3c:	29 62 00 54 	lw r2,(r11+84)                                 
 8003e40:	78 01 08 01 	mvhi r1,0x801                                  
 8003e44:	38 21 88 c0 	ori r1,r1,0x88c0                               
 8003e48:	44 41 00 15 	be r2,r1,8003e9c <aio_cancel+0x130>            <== NEVER TAKEN
        r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
 8003e4c:	78 01 08 01 	mvhi r1,0x801                                  
 8003e50:	38 21 88 bc 	ori r1,r1,0x88bc                               
 8003e54:	b9 c0 10 00 	mv r2,r14                                      
 8003e58:	34 03 00 00 	mvi r3,0                                       
 8003e5c:	f8 00 00 c2 	calli 8004164 <rtems_aio_search_fd>            
        if (r_chain == NULL) {                                        
 8003e60:	44 20 00 13 	be r1,r0,8003eac <aio_cancel+0x140>            
          rtems_set_errno_and_return_minus_one (EINVAL);              
        }                                                             
                                                                      
        AIO_printf ("Request on [IQ]\n");                             
                                                                      
        result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);      
 8003e64:	b9 80 10 00 	mv r2,r12                                      
 8003e68:	34 21 00 08 	addi r1,r1,8                                   
 8003e6c:	f8 00 01 f6 	calli 8004644 <rtems_aio_remove_req>           
 8003e70:	b8 20 60 00 	mv r12,r1                                      
        pthread_mutex_unlock (&aio_request_queue.mutex);              
 8003e74:	b9 60 08 00 	mv r1,r11                                      
 8003e78:	f8 00 05 17 	calli 80052d4 <pthread_mutex_unlock>           
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_unlock (&aio_request_queue.mutex);                
      return result;                                                  
  }                                                                   
  return AIO_ALLDONE;                                                 
}                                                                     
 8003e7c:	b9 80 08 00 	mv r1,r12                                      
 8003e80:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003e84:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8003e88:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8003e8c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8003e90:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8003e94:	37 9c 00 14 	addi sp,sp,20                                  
 8003e98:	c3 a0 00 00 	ret                                            
                                                                      
        result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);      
        pthread_mutex_unlock (&aio_request_queue.mutex);              
        return result;                                                
      } else {                                                        
        pthread_mutex_unlock (&aio_request_queue.mutex);              
 8003e9c:	b9 60 08 00 	mv r1,r11                                      
 8003ea0:	f8 00 05 0d 	calli 80052d4 <pthread_mutex_unlock>           
        return AIO_ALLDONE;                                           
 8003ea4:	34 0c 00 02 	mvi r12,2                                      
 8003ea8:	e3 ff ff dd 	bi 8003e1c <aio_cancel+0xb0>                   
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
    if (r_chain == NULL) {                                            
      if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {      
        r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
        if (r_chain == NULL) {                                        
          pthread_mutex_unlock (&aio_request_queue.mutex);            
 8003eac:	b9 60 08 00 	mv r1,r11                                      
 8003eb0:	f8 00 05 09 	calli 80052d4 <pthread_mutex_unlock>           
          rtems_set_errno_and_return_minus_one (EINVAL);              
 8003eb4:	f8 00 30 1a 	calli 800ff1c <__errno>                        
 8003eb8:	34 02 00 16 	mvi r2,22                                      
 8003ebc:	58 22 00 00 	sw (r1+0),r2                                   
 8003ec0:	34 0c ff ff 	mvi r12,-1                                     
 8003ec4:	e3 ff ff d6 	bi 8003e1c <aio_cancel+0xb0>                   
                                                                      
  /* if aiocbp is NULL remove all request for given file descriptor */
  if (aiocbp == NULL) {                                               
    AIO_printf ("Cancel all requests\n");                             
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
 8003ec8:	78 01 08 01 	mvhi r1,0x801                                  
 8003ecc:	38 21 88 b0 	ori r1,r1,0x88b0                               
 8003ed0:	b9 a0 10 00 	mv r2,r13                                      
 8003ed4:	34 03 00 00 	mvi r3,0                                       
 8003ed8:	f8 00 00 a3 	calli 8004164 <rtems_aio_search_fd>            
 8003edc:	b8 20 70 00 	mv r14,r1                                      
    if (r_chain == NULL) {                                            
 8003ee0:	44 2c 00 0e 	be r1,r12,8003f18 <aio_cancel+0x1ac>           
      return AIO_ALLDONE;                                             
    }                                                                 
                                                                      
    AIO_printf ("Request chain on [WQ]\n");                           
                                                                      
    pthread_mutex_lock (&r_chain->mutex);                             
 8003ee4:	34 2c 00 1c 	addi r12,r1,28                                 
 8003ee8:	b9 80 08 00 	mv r1,r12                                      
 8003eec:	f8 00 04 ca 	calli 8005214 <pthread_mutex_lock>             
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 8003ef0:	b9 c0 08 00 	mv r1,r14                                      
 8003ef4:	f8 00 0b 00 	calli 8006af4 <_Chain_Extract>                 
    rtems_chain_extract (&r_chain->next_fd);                          
    rtems_aio_remove_fd (r_chain);                                    
 8003ef8:	b9 c0 08 00 	mv r1,r14                                      
 8003efc:	f8 00 01 b3 	calli 80045c8 <rtems_aio_remove_fd>            
    pthread_mutex_unlock (&r_chain->mutex);                           
 8003f00:	b9 80 08 00 	mv r1,r12                                      
 8003f04:	f8 00 04 f4 	calli 80052d4 <pthread_mutex_unlock>           
    pthread_mutex_unlock (&aio_request_queue.mutex);                  
 8003f08:	b9 60 08 00 	mv r1,r11                                      
 8003f0c:	f8 00 04 f2 	calli 80052d4 <pthread_mutex_unlock>           
    return AIO_CANCELED;                                              
 8003f10:	34 0c 00 00 	mvi r12,0                                      
 8003f14:	e3 ff ff c2 	bi 8003e1c <aio_cancel+0xb0>                   
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
    if (r_chain == NULL) {                                            
      AIO_printf ("Request chain not on [WQ]\n");                     
                                                                      
      if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {      
 8003f18:	29 62 00 54 	lw r2,(r11+84)                                 
 8003f1c:	78 01 08 01 	mvhi r1,0x801                                  
 8003f20:	38 21 88 c0 	ori r1,r1,0x88c0                               
 8003f24:	44 41 ff de 	be r2,r1,8003e9c <aio_cancel+0x130>            <== NEVER TAKEN
        r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
 8003f28:	78 01 08 01 	mvhi r1,0x801                                  
 8003f2c:	38 21 88 bc 	ori r1,r1,0x88bc                               
 8003f30:	b9 a0 10 00 	mv r2,r13                                      
 8003f34:	34 03 00 00 	mvi r3,0                                       
 8003f38:	f8 00 00 8b 	calli 8004164 <rtems_aio_search_fd>            
 8003f3c:	b8 20 60 00 	mv r12,r1                                      
        if (r_chain == NULL) {                                        
 8003f40:	44 2e ff d7 	be r1,r14,8003e9c <aio_cancel+0x130>           
 8003f44:	f8 00 0a ec 	calli 8006af4 <_Chain_Extract>                 
        }                                                             
                                                                      
        AIO_printf ("Request chain on [IQ]\n");                       
                                                                      
        rtems_chain_extract (&r_chain->next_fd);                      
        rtems_aio_remove_fd (r_chain);                                
 8003f48:	b9 80 08 00 	mv r1,r12                                      
        pthread_mutex_destroy (&r_chain->mutex);                      
 8003f4c:	35 8d 00 1c 	addi r13,r12,28                                
        }                                                             
                                                                      
        AIO_printf ("Request chain on [IQ]\n");                       
                                                                      
        rtems_chain_extract (&r_chain->next_fd);                      
        rtems_aio_remove_fd (r_chain);                                
 8003f50:	f8 00 01 9e 	calli 80045c8 <rtems_aio_remove_fd>            
        pthread_mutex_destroy (&r_chain->mutex);                      
 8003f54:	b9 a0 08 00 	mv r1,r13                                      
 8003f58:	f8 00 03 e7 	calli 8004ef4 <pthread_mutex_destroy>          
        pthread_cond_destroy (&r_chain->mutex);                       
 8003f5c:	b9 a0 08 00 	mv r1,r13                                      
 8003f60:	f8 00 02 d4 	calli 8004ab0 <pthread_cond_destroy>           
        free (r_chain);                                               
 8003f64:	b9 80 08 00 	mv r1,r12                                      
 8003f68:	fb ff f8 f0 	calli 8002328 <free>                           
                                                                      
        pthread_mutex_unlock (&aio_request_queue.mutex);              
 8003f6c:	b9 60 08 00 	mv r1,r11                                      
 8003f70:	f8 00 04 d9 	calli 80052d4 <pthread_mutex_unlock>           
        return AIO_CANCELED;                                          
 8003f74:	34 0c 00 00 	mvi r12,0                                      
 8003f78:	e3 ff ff a9 	bi 8003e1c <aio_cancel+0xb0>                   
                                                                      

08003f84 <aio_fsync>: int aio_fsync( int op, struct aiocb *aiocbp ) {
 8003f84:	37 9c ff f4 	addi sp,sp,-12                                 
 8003f88:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8003f8c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003f90:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003f94:	b8 40 58 00 	mv r11,r2                                      
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  if (op != O_SYNC)                                                   
 8003f98:	34 02 20 00 	mvi r2,8192                                    
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 8003f9c:	34 0c 00 16 	mvi r12,22                                     
)                                                                     
{                                                                     
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  if (op != O_SYNC)                                                   
 8003fa0:	5c 22 00 09 	bne r1,r2,8003fc4 <aio_fsync+0x40>             
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 8003fa4:	29 61 00 00 	lw r1,(r11+0)                                  
 8003fa8:	34 02 00 03 	mvi r2,3                                       
 8003fac:	f8 00 1e f1 	calli 800bb70 <fcntl>                          
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
 8003fb0:	20 21 00 03 	andi r1,r1,0x3                                 
 8003fb4:	34 21 ff ff 	addi r1,r1,-1                                  
 8003fb8:	34 02 00 01 	mvi r2,1                                       
 8003fbc:	50 41 00 0d 	bgeu r2,r1,8003ff0 <aio_fsync+0x6c>            <== NEVER TAKEN
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
 8003fc0:	34 0c 00 09 	mvi r12,9                                      
 8003fc4:	34 01 ff ff 	mvi r1,-1                                      
 8003fc8:	59 6c 00 2c 	sw (r11+44),r12                                
 8003fcc:	59 61 00 30 	sw (r11+48),r1                                 
 8003fd0:	f8 00 2f d3 	calli 800ff1c <__errno>                        
 8003fd4:	58 2c 00 00 	sw (r1+0),r12                                  
 8003fd8:	34 01 ff ff 	mvi r1,-1                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
                                                                      
}                                                                     
 8003fdc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003fe0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003fe4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003fe8:	37 9c 00 0c 	addi sp,sp,12                                  
 8003fec:	c3 a0 00 00 	ret                                            
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
 8003ff0:	34 01 00 18 	mvi r1,24                                      
 8003ff4:	fb ff fa a6 	calli 8002a8c <malloc>                         
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
 8003ff8:	34 0c 00 0b 	mvi r12,11                                     
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
 8003ffc:	44 20 ff f2 	be r1,r0,8003fc4 <aio_fsync+0x40>              <== NEVER TAKEN
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
 8004000:	34 03 00 03 	mvi r3,3                                       
 8004004:	59 63 00 28 	sw (r11+40),r3                                 
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
 8004008:	58 2b 00 14 	sw (r1+20),r11                                 
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
 800400c:	f8 00 01 b1 	calli 80046d0 <rtems_aio_enqueue>              
                                                                      
}                                                                     
 8004010:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004014:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004018:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800401c:	37 9c 00 0c 	addi sp,sp,12                                  
 8004020:	c3 a0 00 00 	ret                                            
                                                                      

080048e0 <aio_read>: * 0 - otherwise */ int aio_read (struct aiocb *aiocbp) {
 80048e0:	37 9c ff f4 	addi sp,sp,-12                                 
 80048e4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80048e8:	5b 8c 00 08 	sw (sp+8),r12                                  
 80048ec:	5b 9d 00 04 	sw (sp+4),ra                                   
 80048f0:	b8 20 58 00 	mv r11,r1                                      
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 80048f4:	28 21 00 00 	lw r1,(r1+0)                                   
 80048f8:	34 02 00 03 	mvi r2,3                                       
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
 80048fc:	34 0c 00 09 	mvi r12,9                                      
aio_read (struct aiocb *aiocbp)                                       
{                                                                     
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 8004900:	f8 00 1c 9c 	calli 800bb70 <fcntl>                          
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
 8004904:	20 21 00 03 	andi r1,r1,0x3                                 
 8004908:	7c 22 00 02 	cmpnei r2,r1,2                                 
 800490c:	7c 21 00 00 	cmpnei r1,r1,0                                 
 8004910:	a0 41 08 00 	and r1,r2,r1                                   
 8004914:	5c 20 00 06 	bne r1,r0,800492c <aio_read+0x4c>              
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
 8004918:	29 6c 00 10 	lw r12,(r11+16)                                
 800491c:	5d 81 00 03 	bne r12,r1,8004928 <aio_read+0x48>             
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  if (aiocbp->aio_offset < 0)                                         
 8004920:	29 61 00 04 	lw r1,(r11+4)                                  
 8004924:	4c 2c 00 09 	bge r1,r12,8004948 <aio_read+0x68>             
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 8004928:	34 0c 00 16 	mvi r12,22                                     
 800492c:	34 01 ff ff 	mvi r1,-1                                      
 8004930:	59 6c 00 2c 	sw (r11+44),r12                                
 8004934:	59 61 00 30 	sw (r11+48),r1                                 
 8004938:	f8 00 2d 79 	calli 800ff1c <__errno>                        
 800493c:	58 2c 00 00 	sw (r1+0),r12                                  
 8004940:	34 01 ff ff 	mvi r1,-1                                      
 8004944:	e0 00 00 08 	bi 8004964 <aio_read+0x84>                     
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
 8004948:	34 01 00 18 	mvi r1,24                                      
 800494c:	fb ff f8 50 	calli 8002a8c <malloc>                         
  if (req == NULL)                                                    
 8004950:	44 2c 00 0a 	be r1,r12,8004978 <aio_read+0x98>              <== NEVER TAKEN
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
 8004954:	34 03 00 01 	mvi r3,1                                       
 8004958:	59 63 00 28 	sw (r11+40),r3                                 
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
 800495c:	58 2b 00 14 	sw (r1+20),r11                                 
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
 8004960:	fb ff ff 5c 	calli 80046d0 <rtems_aio_enqueue>              
}                                                                     
 8004964:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004968:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800496c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004970:	37 9c 00 0c 	addi sp,sp,12                                  
 8004974:	c3 a0 00 00 	ret                                            
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
 8004978:	34 0c 00 0b 	mvi r12,11                                     <== NOT EXECUTED
 800497c:	e3 ff ff ec 	bi 800492c <aio_read+0x4c>                     <== NOT EXECUTED
                                                                      

08004988 <aio_write>: * 0 - otherwise */ int aio_write (struct aiocb *aiocbp) {
 8004988:	37 9c ff f4 	addi sp,sp,-12                                 
 800498c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8004990:	5b 8c 00 08 	sw (sp+8),r12                                  
 8004994:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004998:	b8 20 58 00 	mv r11,r1                                      
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 800499c:	28 21 00 00 	lw r1,(r1+0)                                   
 80049a0:	34 02 00 03 	mvi r2,3                                       
 80049a4:	f8 00 1c 73 	calli 800bb70 <fcntl>                          
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
 80049a8:	20 21 00 03 	andi r1,r1,0x3                                 
 80049ac:	34 21 ff ff 	addi r1,r1,-1                                  
 80049b0:	34 02 00 01 	mvi r2,1                                       
 80049b4:	50 41 00 09 	bgeu r2,r1,80049d8 <aio_write+0x50>            
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
 80049b8:	34 0c 00 09 	mvi r12,9                                      
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 80049bc:	34 01 ff ff 	mvi r1,-1                                      
 80049c0:	59 6c 00 2c 	sw (r11+44),r12                                
 80049c4:	59 61 00 30 	sw (r11+48),r1                                 
 80049c8:	f8 00 2d 55 	calli 800ff1c <__errno>                        
 80049cc:	58 2c 00 00 	sw (r1+0),r12                                  
 80049d0:	34 01 ff ff 	mvi r1,-1                                      
 80049d4:	e0 00 00 0f 	bi 8004a10 <aio_write+0x88>                    
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
 80049d8:	29 61 00 10 	lw r1,(r11+16)                                 
 80049dc:	5c 20 00 03 	bne r1,r0,80049e8 <aio_write+0x60>             
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  if (aiocbp->aio_offset < 0)                                         
 80049e0:	29 62 00 04 	lw r2,(r11+4)                                  
 80049e4:	4c 41 00 03 	bge r2,r1,80049f0 <aio_write+0x68>             
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 80049e8:	34 0c 00 16 	mvi r12,22                                     
 80049ec:	e3 ff ff f4 	bi 80049bc <aio_write+0x34>                    
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
 80049f0:	34 01 00 18 	mvi r1,24                                      
 80049f4:	fb ff f8 26 	calli 8002a8c <malloc>                         
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
 80049f8:	34 0c 00 0b 	mvi r12,11                                     
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
 80049fc:	44 20 ff f0 	be r1,r0,80049bc <aio_write+0x34>              <== NEVER TAKEN
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
 8004a00:	34 03 00 02 	mvi r3,2                                       
 8004a04:	59 63 00 28 	sw (r11+40),r3                                 
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
 8004a08:	58 2b 00 14 	sw (r1+20),r11                                 
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
                                                                      
  return rtems_aio_enqueue (req);                                     
 8004a0c:	fb ff ff 31 	calli 80046d0 <rtems_aio_enqueue>              
}                                                                     
 8004a10:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004a14:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004a18:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004a1c:	37 9c 00 0c 	addi sp,sp,12                                  
 8004a20:	c3 a0 00 00 	ret                                            
                                                                      

080014f8 <chroot>: #include <rtems/seterr.h> int chroot( const char *pathname ) {
 80014f8:	37 9c ff dc 	addi sp,sp,-36                                 
 80014fc:	5b 8b 00 10 	sw (sp+16),r11                                 
 8001500:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8001504:	5b 8d 00 08 	sw (sp+8),r13                                  
 8001508:	5b 9d 00 04 	sw (sp+4),ra                                   
  int                               result;                           
  rtems_filesystem_location_info_t  loc;                              
                                                                      
  /* an automatic call to new private env the first time */           
  if (rtems_current_user_env == &rtems_global_user_env) {             
 800150c:	78 0b 08 01 	mvhi r11,0x801                                 
 8001510:	39 6b 51 34 	ori r11,r11,0x5134                             
 8001514:	29 6d 00 00 	lw r13,(r11+0)                                 
 8001518:	78 02 08 01 	mvhi r2,0x801                                  
 800151c:	38 42 57 c0 	ori r2,r2,0x57c0                               
#include <rtems/seterr.h>                                             
                                                                      
int chroot(                                                           
  const char *pathname                                                
)                                                                     
{                                                                     
 8001520:	b8 20 60 00 	mv r12,r1                                      
  int                               result;                           
  rtems_filesystem_location_info_t  loc;                              
                                                                      
  /* an automatic call to new private env the first time */           
  if (rtems_current_user_env == &rtems_global_user_env) {             
 8001524:	45 a2 00 22 	be r13,r2,80015ac <chroot+0xb4>                
   rtems_libio_set_private_env(); /* try to set a new private env*/   
   if (rtems_current_user_env == &rtems_global_user_env) /* not ok */ 
    rtems_set_errno_and_return_minus_one( ENOTSUP );                  
  }                                                                   
                                                                      
  result = chdir(pathname);                                           
 8001528:	b9 80 08 00 	mv r1,r12                                      
 800152c:	f8 00 1d f9 	calli 8008d10 <chdir>                          
 8001530:	b8 20 60 00 	mv r12,r1                                      
  if (result) {                                                       
 8001534:	5c 20 00 26 	bne r1,r0,80015cc <chroot+0xd4>                
    rtems_set_errno_and_return_minus_one( errno );                    
  }                                                                   
                                                                      
  /* clone the new root location */                                   
  if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {           
 8001538:	78 01 08 01 	mvhi r1,0x801                                  
 800153c:	38 21 39 5c 	ori r1,r1,0x395c                               
 8001540:	34 02 00 01 	mvi r2,1                                       
 8001544:	34 03 00 00 	mvi r3,0                                       
 8001548:	37 84 00 14 	addi r4,sp,20                                  
 800154c:	34 05 00 00 	mvi r5,0                                       
 8001550:	f8 00 00 79 	calli 8001734 <rtems_filesystem_evaluate_path> 
 8001554:	5c 2c 00 1e 	bne r1,r12,80015cc <chroot+0xd4>               <== NEVER TAKEN
    /* our cwd has changed, though - but there is no easy way of return :-( */
    rtems_set_errno_and_return_minus_one( errno );                    
  }                                                                   
  rtems_filesystem_freenode(&rtems_filesystem_root);                  
 8001558:	29 61 00 00 	lw r1,(r11+0)                                  
 800155c:	34 21 00 18 	addi r1,r1,24                                  
 8001560:	f8 00 00 c3 	calli 800186c <rtems_filesystem_freenode>      
  rtems_filesystem_root = loc;                                        
 8001564:	29 61 00 00 	lw r1,(r11+0)                                  
 8001568:	2b 82 00 14 	lw r2,(sp+20)                                  
 800156c:	58 22 00 18 	sw (r1+24),r2                                  
 8001570:	2b 82 00 18 	lw r2,(sp+24)                                  
 8001574:	58 22 00 1c 	sw (r1+28),r2                                  
 8001578:	2b 82 00 1c 	lw r2,(sp+28)                                  
 800157c:	58 22 00 20 	sw (r1+32),r2                                  
 8001580:	2b 82 00 20 	lw r2,(sp+32)                                  
 8001584:	58 22 00 24 	sw (r1+36),r2                                  
 8001588:	2b 82 00 24 	lw r2,(sp+36)                                  
 800158c:	58 22 00 28 	sw (r1+40),r2                                  
                                                                      
  return 0;                                                           
 8001590:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8001594:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001598:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800159c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80015a0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80015a4:	37 9c 00 24 	addi sp,sp,36                                  
 80015a8:	c3 a0 00 00 	ret                                            
  int                               result;                           
  rtems_filesystem_location_info_t  loc;                              
                                                                      
  /* an automatic call to new private env the first time */           
  if (rtems_current_user_env == &rtems_global_user_env) {             
   rtems_libio_set_private_env(); /* try to set a new private env*/   
 80015ac:	f8 00 05 ee 	calli 8002d64 <rtems_libio_set_private_env>    
   if (rtems_current_user_env == &rtems_global_user_env) /* not ok */ 
 80015b0:	29 61 00 00 	lw r1,(r11+0)                                  
 80015b4:	5c 2d ff dd 	bne r1,r13,8001528 <chroot+0x30>               
    rtems_set_errno_and_return_minus_one( ENOTSUP );                  
 80015b8:	f8 00 2f 64 	calli 800d348 <__errno>                        
 80015bc:	34 02 00 86 	mvi r2,134                                     
 80015c0:	58 22 00 00 	sw (r1+0),r2                                   
 80015c4:	34 01 ff ff 	mvi r1,-1                                      
 80015c8:	e3 ff ff f3 	bi 8001594 <chroot+0x9c>                       
  }                                                                   
                                                                      
  /* clone the new root location */                                   
  if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {           
    /* our cwd has changed, though - but there is no easy way of return :-( */
    rtems_set_errno_and_return_minus_one( errno );                    
 80015cc:	f8 00 2f 5f 	calli 800d348 <__errno>                        
 80015d0:	b8 20 58 00 	mv r11,r1                                      
 80015d4:	f8 00 2f 5d 	calli 800d348 <__errno>                        
 80015d8:	28 22 00 00 	lw r2,(r1+0)                                   
 80015dc:	34 01 ff ff 	mvi r1,-1                                      
 80015e0:	59 62 00 00 	sw (r11+0),r2                                  
 80015e4:	e3 ff ff ec 	bi 8001594 <chroot+0x9c>                       
                                                                      

08003114 <clock_gettime>: int clock_gettime( clockid_t clock_id, struct timespec *tp ) {
 8003114:	37 9c ff fc 	addi sp,sp,-4                                  
 8003118:	5b 9d 00 04 	sw (sp+4),ra                                   
  if ( !tp )                                                          
 800311c:	44 40 00 09 	be r2,r0,8003140 <clock_gettime+0x2c>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
 8003120:	34 03 00 01 	mvi r3,1                                       
 8003124:	44 23 00 1b 	be r1,r3,8003190 <clock_gettime+0x7c>          
    _TOD_Get(tp);                                                     
    return 0;                                                         
  }                                                                   
#ifdef CLOCK_MONOTONIC                                                
  if ( clock_id == CLOCK_MONOTONIC ) {                                
 8003128:	34 03 00 04 	mvi r3,4                                       
 800312c:	44 23 00 13 	be r1,r3,8003178 <clock_gettime+0x64>          <== NEVER TAKEN
    return 0;                                                         
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_CPUTIME                                                 
  if ( clock_id == CLOCK_PROCESS_CPUTIME ) {                          
 8003130:	34 03 00 02 	mvi r3,2                                       
 8003134:	44 23 00 11 	be r1,r3,8003178 <clock_gettime+0x64>          
    return 0;                                                         
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_THREAD_CPUTIME                                          
  if ( clock_id == CLOCK_THREAD_CPUTIME )                             
 8003138:	34 02 00 03 	mvi r2,3                                       
 800313c:	44 22 00 08 	be r1,r2,800315c <clock_gettime+0x48>          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
 8003140:	f8 00 2c 2c 	calli 800e1f0 <__errno>                        
 8003144:	34 02 00 16 	mvi r2,22                                      
 8003148:	58 22 00 00 	sw (r1+0),r2                                   
 800314c:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
  return 0;                                                           
}                                                                     
 8003150:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003154:	37 9c 00 04 	addi sp,sp,4                                   
 8003158:	c3 a0 00 00 	ret                                            
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_THREAD_CPUTIME                                          
  if ( clock_id == CLOCK_THREAD_CPUTIME )                             
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
 800315c:	f8 00 2c 25 	calli 800e1f0 <__errno>                        
 8003160:	34 02 00 58 	mvi r2,88                                      
 8003164:	58 22 00 00 	sw (r1+0),r2                                   
 8003168:	34 01 ff ff 	mvi r1,-1                                      
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
 800316c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003170:	37 9c 00 04 	addi sp,sp,4                                   
 8003174:	c3 a0 00 00 	ret                                            
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_CPUTIME                                                 
  if ( clock_id == CLOCK_PROCESS_CPUTIME ) {                          
    _TOD_Get_uptime_as_timespec( tp );                                
 8003178:	b8 40 08 00 	mv r1,r2                                       
 800317c:	f8 00 07 5d 	calli 8004ef0 <_TOD_Get_uptime_as_timespec>    
    return 0;                                                         
 8003180:	34 01 00 00 	mvi r1,0                                       
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
 8003184:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003188:	37 9c 00 04 	addi sp,sp,4                                   
 800318c:	c3 a0 00 00 	ret                                            
{                                                                     
  if ( !tp )                                                          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
    _TOD_Get(tp);                                                     
 8003190:	b8 40 08 00 	mv r1,r2                                       
 8003194:	f8 00 07 34 	calli 8004e64 <_TOD_Get>                       
    return 0;                                                         
 8003198:	34 01 00 00 	mvi r1,0                                       
 800319c:	e3 ff ff ed 	bi 8003150 <clock_gettime+0x3c>                
                                                                      

080031a0 <clock_settime>: int clock_settime( clockid_t clock_id, const struct timespec *tp ) {
 80031a0:	37 9c ff fc 	addi sp,sp,-4                                  
 80031a4:	5b 9d 00 04 	sw (sp+4),ra                                   
  if ( !tp )                                                          
 80031a8:	44 40 00 07 	be r2,r0,80031c4 <clock_settime+0x24>          <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
 80031ac:	34 03 00 01 	mvi r3,1                                       
 80031b0:	44 23 00 0c 	be r1,r3,80031e0 <clock_settime+0x40>          
    _Thread_Disable_dispatch();                                       
      _TOD_Set( tp );                                                 
    _Thread_Enable_dispatch();                                        
  }                                                                   
#ifdef _POSIX_CPUTIME                                                 
  else if ( clock_id == CLOCK_PROCESS_CPUTIME )                       
 80031b4:	34 02 00 02 	mvi r2,2                                       
 80031b8:	44 22 00 1c 	be r1,r2,8003228 <clock_settime+0x88>          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME )                        
 80031bc:	34 02 00 03 	mvi r2,3                                       
 80031c0:	44 22 00 1a 	be r1,r2,8003228 <clock_settime+0x88>          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 80031c4:	f8 00 2c 0b 	calli 800e1f0 <__errno>                        
 80031c8:	34 02 00 16 	mvi r2,22                                      
 80031cc:	58 22 00 00 	sw (r1+0),r2                                   
 80031d0:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
  return 0;                                                           
}                                                                     
 80031d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80031d8:	37 9c 00 04 	addi sp,sp,4                                   
 80031dc:	c3 a0 00 00 	ret                                            
{                                                                     
  if ( !tp )                                                          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
    if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 )                 
 80031e0:	78 04 08 01 	mvhi r4,0x801                                  
 80031e4:	38 84 f2 e4 	ori r4,r4,0xf2e4                               
 80031e8:	28 43 00 00 	lw r3,(r2+0)                                   
 80031ec:	28 81 00 00 	lw r1,(r4+0)                                   
 80031f0:	54 61 00 02 	bgu r3,r1,80031f8 <clock_settime+0x58>         
 80031f4:	e3 ff ff f4 	bi 80031c4 <clock_settime+0x24>                
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80031f8:	78 01 08 02 	mvhi r1,0x802                                  
 80031fc:	38 21 19 18 	ori r1,r1,0x1918                               
 8003200:	28 23 00 00 	lw r3,(r1+0)                                   
 8003204:	34 63 00 01 	addi r3,r3,1                                   
 8003208:	58 23 00 00 	sw (r1+0),r3                                   
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    _Thread_Disable_dispatch();                                       
      _TOD_Set( tp );                                                 
 800320c:	b8 40 08 00 	mv r1,r2                                       
 8003210:	f8 00 07 55 	calli 8004f64 <_TOD_Set>                       
    _Thread_Enable_dispatch();                                        
 8003214:	f8 00 0e 04 	calli 8006a24 <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  return 0;                                                           
 8003218:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 800321c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003220:	37 9c 00 04 	addi sp,sp,4                                   
 8003224:	c3 a0 00 00 	ret                                            
  else if ( clock_id == CLOCK_PROCESS_CPUTIME )                       
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME )                        
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
 8003228:	f8 00 2b f2 	calli 800e1f0 <__errno>                        
 800322c:	34 02 00 58 	mvi r2,88                                      
 8003230:	58 22 00 00 	sw (r1+0),r2                                   
 8003234:	34 01 ff ff 	mvi r1,-1                                      
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  return 0;                                                           
}                                                                     
 8003238:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800323c:	37 9c 00 04 	addi sp,sp,4                                   
 8003240:	c3 a0 00 00 	ret                                            
                                                                      

080099a8 <devFS_evaluate_path>: const char *pathname, size_t pathnamelen, int flags, rtems_filesystem_location_info_t *pathloc ) {
 80099a8:	37 9c ff dc 	addi sp,sp,-36                                 
 80099ac:	5b 8b 00 24 	sw (sp+36),r11                                 
 80099b0:	5b 8c 00 20 	sw (sp+32),r12                                 
 80099b4:	5b 8d 00 1c 	sw (sp+28),r13                                 
 80099b8:	5b 8e 00 18 	sw (sp+24),r14                                 
 80099bc:	5b 8f 00 14 	sw (sp+20),r15                                 
 80099c0:	5b 90 00 10 	sw (sp+16),r16                                 
 80099c4:	5b 91 00 0c 	sw (sp+12),r17                                 
 80099c8:	5b 92 00 08 	sw (sp+8),r18                                  
 80099cc:	5b 9d 00 04 	sw (sp+4),ra                                   
  int                   i;                                            
  rtems_device_name_t  *device_name_table;                            
                                                                      
  /* see if 'flags' is valid */                                       
  if ( !rtems_libio_is_valid_perms( flags ) )                         
 80099d0:	34 05 ff f8 	mvi r5,-8                                      
 80099d4:	a0 65 18 00 	and r3,r3,r5                                   
  const char                        *pathname,                        
  size_t                             pathnamelen,                     
  int                                flags,                           
  rtems_filesystem_location_info_t  *pathloc                          
)                                                                     
{                                                                     
 80099d8:	b8 20 90 00 	mv r18,r1                                      
 80099dc:	b8 40 70 00 	mv r14,r2                                      
 80099e0:	b8 80 78 00 	mv r15,r4                                      
  int                   i;                                            
  rtems_device_name_t  *device_name_table;                            
                                                                      
  /* see if 'flags' is valid */                                       
  if ( !rtems_libio_is_valid_perms( flags ) )                         
 80099e4:	5c 60 00 39 	bne r3,r0,8009ac8 <devFS_evaluate_path+0x120>  <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EPERM );                    
                                                                      
  /* get the device name table */                                     
  device_name_table = (rtems_device_name_t *)pathloc->node_access;    
 80099e8:	28 90 00 00 	lw r16,(r4+0)                                  
  if (!device_name_table)                                             
 80099ec:	46 03 00 3c 	be r16,r3,8009adc <devFS_evaluate_path+0x134>  <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  for (i = 0; i < rtems_device_table_size; i++) {                     
 80099f0:	78 02 08 01 	mvhi r2,0x801                                  
 80099f4:	38 42 d0 14 	ori r2,r2,0xd014                               
 80099f8:	28 51 00 00 	lw r17,(r2+0)                                  
 80099fc:	34 05 00 00 	mvi r5,0                                       
 8009a00:	34 0b 00 00 	mvi r11,0                                      
 8009a04:	46 20 00 14 	be r17,r0,8009a54 <devFS_evaluate_path+0xac>   <== NEVER TAKEN
    if (!device_name_table[i].device_name)                            
 8009a08:	b4 a5 28 00 	add r5,r5,r5                                   
 8009a0c:	b4 a5 28 00 	add r5,r5,r5                                   
 8009a10:	b4 a5 30 00 	add r6,r5,r5                                   
 8009a14:	b4 c6 30 00 	add r6,r6,r6                                   
 8009a18:	b4 a6 28 00 	add r5,r5,r6                                   
 8009a1c:	b6 05 68 00 	add r13,r16,r5                                 
 8009a20:	29 ac 00 00 	lw r12,(r13+0)                                 
      continue;                                                       
                                                                      
    if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
 8009a24:	ba 40 08 00 	mv r1,r18                                      
 8009a28:	b9 c0 18 00 	mv r3,r14                                      
 8009a2c:	b9 80 10 00 	mv r2,r12                                      
  /* get the device name table */                                     
  device_name_table = (rtems_device_name_t *)pathloc->node_access;    
  if (!device_name_table)                                             
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  for (i = 0; i < rtems_device_table_size; i++) {                     
 8009a30:	35 6b 00 01 	addi r11,r11,1                                 
    if (!device_name_table[i].device_name)                            
 8009a34:	45 80 00 06 	be r12,r0,8009a4c <devFS_evaluate_path+0xa4>   
      continue;                                                       
                                                                      
    if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
 8009a38:	f8 00 13 0e 	calli 800e670 <strncmp>                        
      continue;                                                       
                                                                      
    if (device_name_table[i].device_name[pathnamelen] != '\0')        
 8009a3c:	b5 8e 60 00 	add r12,r12,r14                                
                                                                      
  for (i = 0; i < rtems_device_table_size; i++) {                     
    if (!device_name_table[i].device_name)                            
      continue;                                                       
                                                                      
    if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
 8009a40:	5c 20 00 03 	bne r1,r0,8009a4c <devFS_evaluate_path+0xa4>   
      continue;                                                       
                                                                      
    if (device_name_table[i].device_name[pathnamelen] != '\0')        
 8009a44:	41 82 00 00 	lbu r2,(r12+0)                                 
 8009a48:	44 41 00 08 	be r2,r1,8009a68 <devFS_evaluate_path+0xc0>    <== ALWAYS TAKEN
  /* get the device name table */                                     
  device_name_table = (rtems_device_name_t *)pathloc->node_access;    
  if (!device_name_table)                                             
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  for (i = 0; i < rtems_device_table_size; i++) {                     
 8009a4c:	b9 60 28 00 	mv r5,r11                                      
 8009a50:	56 2b ff ee 	bgu r17,r11,8009a08 <devFS_evaluate_path+0x60> 
    pathloc->mt_entry = rtems_filesystem_root.mt_entry;               
    return 0;                                                         
  }                                                                   
                                                                      
  /* no such file or directory */                                     
  rtems_set_errno_and_return_minus_one( ENOENT );                     
 8009a54:	f8 00 0e 72 	calli 800d41c <__errno>                        
 8009a58:	34 02 00 02 	mvi r2,2                                       
 8009a5c:	58 22 00 00 	sw (r1+0),r2                                   
 8009a60:	34 01 ff ff 	mvi r1,-1                                      
 8009a64:	e0 00 00 0e 	bi 8009a9c <devFS_evaluate_path+0xf4>          
                                                                      
    /* find the device, set proper values */                          
    pathloc->node_access = (void *)&device_name_table[i];             
    pathloc->handlers = &devFS_file_handlers;                         
    pathloc->ops = &devFS_ops;                                        
    pathloc->mt_entry = rtems_filesystem_root.mt_entry;               
 8009a68:	78 01 08 01 	mvhi r1,0x801                                  
 8009a6c:	38 21 d1 b4 	ori r1,r1,0xd1b4                               
 8009a70:	28 23 00 00 	lw r3,(r1+0)                                   
    if (device_name_table[i].device_name[pathnamelen] != '\0')        
      continue;                                                       
                                                                      
    /* find the device, set proper values */                          
    pathloc->node_access = (void *)&device_name_table[i];             
    pathloc->handlers = &devFS_file_handlers;                         
 8009a74:	78 02 08 01 	mvhi r2,0x801                                  
    pathloc->ops = &devFS_ops;                                        
 8009a78:	78 01 08 01 	mvhi r1,0x801                                  
    pathloc->mt_entry = rtems_filesystem_root.mt_entry;               
 8009a7c:	28 63 00 28 	lw r3,(r3+40)                                  
      continue;                                                       
                                                                      
    /* find the device, set proper values */                          
    pathloc->node_access = (void *)&device_name_table[i];             
    pathloc->handlers = &devFS_file_handlers;                         
    pathloc->ops = &devFS_ops;                                        
 8009a80:	38 21 d1 28 	ori r1,r1,0xd128                               
    if (device_name_table[i].device_name[pathnamelen] != '\0')        
      continue;                                                       
                                                                      
    /* find the device, set proper values */                          
    pathloc->node_access = (void *)&device_name_table[i];             
    pathloc->handlers = &devFS_file_handlers;                         
 8009a84:	38 42 d1 70 	ori r2,r2,0xd170                               
    pathloc->ops = &devFS_ops;                                        
 8009a88:	59 e1 00 0c 	sw (r15+12),r1                                 
                                                                      
    if (device_name_table[i].device_name[pathnamelen] != '\0')        
      continue;                                                       
                                                                      
    /* find the device, set proper values */                          
    pathloc->node_access = (void *)&device_name_table[i];             
 8009a8c:	59 ed 00 00 	sw (r15+0),r13                                 
    pathloc->handlers = &devFS_file_handlers;                         
 8009a90:	59 e2 00 08 	sw (r15+8),r2                                  
    pathloc->ops = &devFS_ops;                                        
    pathloc->mt_entry = rtems_filesystem_root.mt_entry;               
 8009a94:	59 e3 00 10 	sw (r15+16),r3                                 
    return 0;                                                         
 8009a98:	34 01 00 00 	mvi r1,0                                       
  }                                                                   
                                                                      
  /* no such file or directory */                                     
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 8009a9c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009aa0:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8009aa4:	2b 8c 00 20 	lw r12,(sp+32)                                 
 8009aa8:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8009aac:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8009ab0:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8009ab4:	2b 90 00 10 	lw r16,(sp+16)                                 
 8009ab8:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8009abc:	2b 92 00 08 	lw r18,(sp+8)                                  
 8009ac0:	37 9c 00 24 	addi sp,sp,36                                  
 8009ac4:	c3 a0 00 00 	ret                                            
  int                   i;                                            
  rtems_device_name_t  *device_name_table;                            
                                                                      
  /* see if 'flags' is valid */                                       
  if ( !rtems_libio_is_valid_perms( flags ) )                         
    rtems_set_errno_and_return_minus_one( EPERM );                    
 8009ac8:	f8 00 0e 55 	calli 800d41c <__errno>                        <== NOT EXECUTED
 8009acc:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8009ad0:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8009ad4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8009ad8:	e3 ff ff f1 	bi 8009a9c <devFS_evaluate_path+0xf4>          <== NOT EXECUTED
                                                                      
  /* get the device name table */                                     
  device_name_table = (rtems_device_name_t *)pathloc->node_access;    
  if (!device_name_table)                                             
    rtems_set_errno_and_return_minus_one( EFAULT );                   
 8009adc:	f8 00 0e 50 	calli 800d41c <__errno>                        
 8009ae0:	34 02 00 0e 	mvi r2,14                                      
 8009ae4:	58 22 00 00 	sw (r1+0),r2                                   
 8009ae8:	34 01 ff ff 	mvi r1,-1                                      
 8009aec:	e3 ff ff ec 	bi 8009a9c <devFS_evaluate_path+0xf4>          
                                                                      

08003bf0 <devFS_mknod>: const char *path, mode_t mode, dev_t dev, rtems_filesystem_location_info_t *pathloc ) {
 8003bf0:	37 9c ff dc 	addi sp,sp,-36                                 
 8003bf4:	5b 8b 00 24 	sw (sp+36),r11                                 
 8003bf8:	5b 8c 00 20 	sw (sp+32),r12                                 
 8003bfc:	5b 8d 00 1c 	sw (sp+28),r13                                 
 8003c00:	5b 8e 00 18 	sw (sp+24),r14                                 
 8003c04:	5b 8f 00 14 	sw (sp+20),r15                                 
 8003c08:	5b 90 00 10 	sw (sp+16),r16                                 
 8003c0c:	5b 91 00 0c 	sw (sp+12),r17                                 
 8003c10:	5b 92 00 08 	sw (sp+8),r18                                  
 8003c14:	5b 9d 00 04 	sw (sp+4),ra                                   
   * condition and do not create the '/dev' and the 'path'            
   * actually passed in is 'dev', not '/dev'. Just return 0 to        
   * indicate we are OK.                                              
   */                                                                 
                                                                      
  if ((path[0] == 'd') && (path[1] == 'e') &&                         
 8003c18:	40 26 00 00 	lbu r6,(r1+0)                                  
  const char                        *path,                            
  mode_t                             mode,                            
  dev_t                              dev,                             
  rtems_filesystem_location_info_t  *pathloc                          
)                                                                     
{                                                                     
 8003c1c:	b8 20 60 00 	mv r12,r1                                      
   * condition and do not create the '/dev' and the 'path'            
   * actually passed in is 'dev', not '/dev'. Just return 0 to        
   * indicate we are OK.                                              
   */                                                                 
                                                                      
  if ((path[0] == 'd') && (path[1] == 'e') &&                         
 8003c20:	34 01 00 64 	mvi r1,100                                     
  const char                        *path,                            
  mode_t                             mode,                            
  dev_t                              dev,                             
  rtems_filesystem_location_info_t  *pathloc                          
)                                                                     
{                                                                     
 8003c24:	b8 40 80 00 	mv r16,r2                                      
 8003c28:	b8 60 90 00 	mv r18,r3                                      
 8003c2c:	b8 80 88 00 	mv r17,r4                                      
   * condition and do not create the '/dev' and the 'path'            
   * actually passed in is 'dev', not '/dev'. Just return 0 to        
   * indicate we are OK.                                              
   */                                                                 
                                                                      
  if ((path[0] == 'd') && (path[1] == 'e') &&                         
 8003c30:	44 c1 00 45 	be r6,r1,8003d44 <devFS_mknod+0x154>           
      (path[2] == 'v') && (path[3] == '\0'))                          
      return 0;                                                       
                                                                      
  /* must be a character device or a block device */                  
  if (!S_ISBLK(mode) && !S_ISCHR(mode))                               
 8003c34:	22 01 f0 00 	andi r1,r16,0xf000                             
 8003c38:	7c 22 20 00 	cmpnei r2,r1,8192                              
 8003c3c:	7c 21 60 00 	cmpnei r1,r1,24576                             
 8003c40:	a0 41 08 00 	and r1,r2,r1                                   
 8003c44:	5c 20 00 4a 	bne r1,r0,8003d6c <devFS_mknod+0x17c>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  else                                                                
    rtems_filesystem_split_dev_t(dev, major, minor);                  
                                                                      
  /* Find an empty slot in device name table */                       
  device_name_table = (rtems_device_name_t *)pathloc->node_access;    
 8003c48:	28 ad 00 00 	lw r13,(r5+0)                                  
  if (!device_name_table)                                             
 8003c4c:	45 a1 00 52 	be r13,r1,8003d94 <devFS_mknod+0x1a4>          
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  for (slot = -1, i = 0; i < rtems_device_table_size; i++){           
 8003c50:	78 01 08 01 	mvhi r1,0x801                                  
 8003c54:	38 21 d0 14 	ori r1,r1,0xd014                               
 8003c58:	28 2e 00 00 	lw r14,(r1+0)                                  
 8003c5c:	34 05 00 00 	mvi r5,0                                       
 8003c60:	34 0f ff ff 	mvi r15,-1                                     
 8003c64:	34 0b 00 00 	mvi r11,0                                      
 8003c68:	45 c0 00 46 	be r14,r0,8003d80 <devFS_mknod+0x190>          
      if (device_name_table[i].device_name == NULL)                   
 8003c6c:	b4 a5 28 00 	add r5,r5,r5                                   
 8003c70:	b4 a5 28 00 	add r5,r5,r5                                   
 8003c74:	b4 a5 30 00 	add r6,r5,r5                                   
 8003c78:	b4 c6 30 00 	add r6,r6,r6                                   
 8003c7c:	b4 a6 28 00 	add r5,r5,r6                                   
 8003c80:	b5 a5 28 00 	add r5,r13,r5                                  
 8003c84:	28 a5 00 00 	lw r5,(r5+0)                                   
          slot = i;                                                   
      else                                                            
          if (strcmp(path, device_name_table[i].device_name) == 0)    
 8003c88:	b9 80 08 00 	mv r1,r12                                      
 8003c8c:	b8 a0 10 00 	mv r2,r5                                       
  device_name_table = (rtems_device_name_t *)pathloc->node_access;    
  if (!device_name_table)                                             
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  for (slot = -1, i = 0; i < rtems_device_table_size; i++){           
      if (device_name_table[i].device_name == NULL)                   
 8003c90:	44 a0 00 26 	be r5,r0,8003d28 <devFS_mknod+0x138>           
          slot = i;                                                   
      else                                                            
          if (strcmp(path, device_name_table[i].device_name) == 0)    
 8003c94:	f8 00 2a 18 	calli 800e4f4 <strcmp>                         
 8003c98:	44 20 00 26 	be r1,r0,8003d30 <devFS_mknod+0x140>           
  /* Find an empty slot in device name table */                       
  device_name_table = (rtems_device_name_t *)pathloc->node_access;    
  if (!device_name_table)                                             
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  for (slot = -1, i = 0; i < rtems_device_table_size; i++){           
 8003c9c:	35 6b 00 01 	addi r11,r11,1                                 
 8003ca0:	b9 60 28 00 	mv r5,r11                                      
 8003ca4:	55 cb ff f2 	bgu r14,r11,8003c6c <devFS_mknod+0x7c>         
      else                                                            
          if (strcmp(path, device_name_table[i].device_name) == 0)    
              rtems_set_errno_and_return_minus_one( EEXIST );         
  }                                                                   
                                                                      
  if (slot == -1)                                                     
 8003ca8:	34 01 ff ff 	mvi r1,-1                                      
 8003cac:	45 e1 00 35 	be r15,r1,8003d80 <devFS_mknod+0x190>          <== NEVER TAKEN
      rtems_set_errno_and_return_minus_one( ENOMEM );                 
                                                                      
  _ISR_Disable(level);                                                
 8003cb0:	90 00 58 00 	rcsr r11,IE                                    
 8003cb4:	34 01 ff fe 	mvi r1,-2                                      
 8003cb8:	a1 61 08 00 	and r1,r11,r1                                  
 8003cbc:	d0 01 00 00 	wcsr IE,r1                                     
  device_name_table[slot].device_name  = (char *)path;                
 8003cc0:	b5 ef 78 00 	add r15,r15,r15                                
 8003cc4:	b5 ef 78 00 	add r15,r15,r15                                
 8003cc8:	b5 ef 08 00 	add r1,r15,r15                                 
 8003ccc:	b4 21 08 00 	add r1,r1,r1                                   
 8003cd0:	b5 e1 78 00 	add r15,r15,r1                                 
 8003cd4:	b5 af 68 00 	add r13,r13,r15                                
 8003cd8:	59 ac 00 00 	sw (r13+0),r12                                 
  device_name_table[slot].device_name_length = strlen(path);          
 8003cdc:	b9 80 08 00 	mv r1,r12                                      
 8003ce0:	f8 00 2a 35 	calli 800e5b4 <strlen>                         
 8003ce4:	59 a1 00 04 	sw (r13+4),r1                                  
  device_name_table[slot].major = major;                              
 8003ce8:	59 b2 00 08 	sw (r13+8),r18                                 
  device_name_table[slot].minor = minor;                              
 8003cec:	59 b1 00 0c 	sw (r13+12),r17                                
  device_name_table[slot].mode  = mode;                               
 8003cf0:	59 b0 00 10 	sw (r13+16),r16                                
  _ISR_Enable(level);                                                 
 8003cf4:	d0 0b 00 00 	wcsr IE,r11                                    
                                                                      
  return 0;                                                           
 8003cf8:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003cfc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d00:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8003d04:	2b 8c 00 20 	lw r12,(sp+32)                                 
 8003d08:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8003d0c:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8003d10:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8003d14:	2b 90 00 10 	lw r16,(sp+16)                                 
 8003d18:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8003d1c:	2b 92 00 08 	lw r18,(sp+8)                                  
 8003d20:	37 9c 00 24 	addi sp,sp,36                                  
 8003d24:	c3 a0 00 00 	ret                                            
  device_name_table = (rtems_device_name_t *)pathloc->node_access;    
  if (!device_name_table)                                             
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  for (slot = -1, i = 0; i < rtems_device_table_size; i++){           
      if (device_name_table[i].device_name == NULL)                   
 8003d28:	b9 60 78 00 	mv r15,r11                                     
 8003d2c:	e3 ff ff dc 	bi 8003c9c <devFS_mknod+0xac>                  
          slot = i;                                                   
      else                                                            
          if (strcmp(path, device_name_table[i].device_name) == 0)    
              rtems_set_errno_and_return_minus_one( EEXIST );         
 8003d30:	f8 00 25 bb 	calli 800d41c <__errno>                        
 8003d34:	34 02 00 11 	mvi r2,17                                      
 8003d38:	58 22 00 00 	sw (r1+0),r2                                   
 8003d3c:	34 01 ff ff 	mvi r1,-1                                      
 8003d40:	e3 ff ff ef 	bi 8003cfc <devFS_mknod+0x10c>                 
   * condition and do not create the '/dev' and the 'path'            
   * actually passed in is 'dev', not '/dev'. Just return 0 to        
   * indicate we are OK.                                              
   */                                                                 
                                                                      
  if ((path[0] == 'd') && (path[1] == 'e') &&                         
 8003d44:	41 82 00 01 	lbu r2,(r12+1)                                 
 8003d48:	34 01 00 65 	mvi r1,101                                     
 8003d4c:	5c 41 ff ba 	bne r2,r1,8003c34 <devFS_mknod+0x44>           <== NEVER TAKEN
 8003d50:	41 82 00 02 	lbu r2,(r12+2)                                 
 8003d54:	34 01 00 76 	mvi r1,118                                     
 8003d58:	5c 41 ff b7 	bne r2,r1,8003c34 <devFS_mknod+0x44>           <== NEVER TAKEN
      (path[2] == 'v') && (path[3] == '\0'))                          
 8003d5c:	41 82 00 03 	lbu r2,(r12+3)                                 
      return 0;                                                       
 8003d60:	34 01 00 00 	mvi r1,0                                       
   * actually passed in is 'dev', not '/dev'. Just return 0 to        
   * indicate we are OK.                                              
   */                                                                 
                                                                      
  if ((path[0] == 'd') && (path[1] == 'e') &&                         
      (path[2] == 'v') && (path[3] == '\0'))                          
 8003d64:	5c 40 ff b4 	bne r2,r0,8003c34 <devFS_mknod+0x44>           
 8003d68:	e3 ff ff e5 	bi 8003cfc <devFS_mknod+0x10c>                 
      return 0;                                                       
                                                                      
  /* must be a character device or a block device */                  
  if (!S_ISBLK(mode) && !S_ISCHR(mode))                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8003d6c:	f8 00 25 ac 	calli 800d41c <__errno>                        
 8003d70:	34 02 00 16 	mvi r2,22                                      
 8003d74:	58 22 00 00 	sw (r1+0),r2                                   
 8003d78:	34 01 ff ff 	mvi r1,-1                                      
 8003d7c:	e3 ff ff e0 	bi 8003cfc <devFS_mknod+0x10c>                 
          if (strcmp(path, device_name_table[i].device_name) == 0)    
              rtems_set_errno_and_return_minus_one( EEXIST );         
  }                                                                   
                                                                      
  if (slot == -1)                                                     
      rtems_set_errno_and_return_minus_one( ENOMEM );                 
 8003d80:	f8 00 25 a7 	calli 800d41c <__errno>                        
 8003d84:	34 02 00 0c 	mvi r2,12                                      
 8003d88:	58 22 00 00 	sw (r1+0),r2                                   
 8003d8c:	34 01 ff ff 	mvi r1,-1                                      
 8003d90:	e3 ff ff db 	bi 8003cfc <devFS_mknod+0x10c>                 
    rtems_filesystem_split_dev_t(dev, major, minor);                  
                                                                      
  /* Find an empty slot in device name table */                       
  device_name_table = (rtems_device_name_t *)pathloc->node_access;    
  if (!device_name_table)                                             
    rtems_set_errno_and_return_minus_one( EFAULT );                   
 8003d94:	f8 00 25 a2 	calli 800d41c <__errno>                        
 8003d98:	34 02 00 0e 	mvi r2,14                                      
 8003d9c:	58 22 00 00 	sw (r1+0),r2                                   
 8003da0:	34 01 ff ff 	mvi r1,-1                                      
 8003da4:	e3 ff ff d6 	bi 8003cfc <devFS_mknod+0x10c>                 
                                                                      

08003584 <drainOutput>: /* * Drain output queue */ static void drainOutput (struct rtems_termios_tty *tty) {
 8003584:	37 9c ff f0 	addi sp,sp,-16                                 
 8003588:	5b 8b 00 10 	sw (sp+16),r11                                 
 800358c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003590:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003594:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003598:	b8 20 58 00 	mv r11,r1                                      
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {           
 800359c:	28 21 00 b4 	lw r1,(r1+180)                                 
 80035a0:	44 20 00 18 	be r1,r0,8003600 <drainOutput+0x7c>            
    rtems_interrupt_disable (level);                                  
 80035a4:	90 00 08 00 	rcsr r1,IE                                     
 80035a8:	34 02 ff fe 	mvi r2,-2                                      
 80035ac:	a0 22 10 00 	and r2,r1,r2                                   
 80035b0:	d0 02 00 00 	wcsr IE,r2                                     
    while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {              
 80035b4:	29 63 00 84 	lw r3,(r11+132)                                
 80035b8:	29 62 00 80 	lw r2,(r11+128)                                
 80035bc:	44 62 00 10 	be r3,r2,80035fc <drainOutput+0x78>            <== ALWAYS TAKEN
      tty->rawOutBufState = rob_wait;                                 
 80035c0:	34 0c 00 02 	mvi r12,2                                      <== NOT EXECUTED
      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);                              
      rtems_interrupt_disable (level);                                
 80035c4:	34 0d ff fe 	mvi r13,-2                                     <== NOT EXECUTED
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {           
    rtems_interrupt_disable (level);                                  
    while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {              
      tty->rawOutBufState = rob_wait;                                 
 80035c8:	59 6c 00 94 	sw (r11+148),r12                               <== NOT EXECUTED
      rtems_interrupt_enable (level);                                 
 80035cc:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
      sc = rtems_semaphore_obtain(                                    
 80035d0:	29 61 00 8c 	lw r1,(r11+140)                                <== NOT EXECUTED
 80035d4:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 80035d8:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 80035dc:	f8 00 0a e0 	calli 800615c <rtems_semaphore_obtain>         <== NOT EXECUTED
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
 80035e0:	5c 20 00 0e 	bne r1,r0,8003618 <drainOutput+0x94>           <== NOT EXECUTED
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
 80035e4:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 80035e8:	a0 2d 10 00 	and r2,r1,r13                                  <== NOT EXECUTED
 80035ec:	d0 02 00 00 	wcsr IE,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) {              
 80035f0:	29 63 00 84 	lw r3,(r11+132)                                <== NOT EXECUTED
 80035f4:	29 62 00 80 	lw r2,(r11+128)                                <== NOT EXECUTED
 80035f8:	5c 62 ff f4 	bne r3,r2,80035c8 <drainOutput+0x44>           <== NOT EXECUTED
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
    }                                                                 
    rtems_interrupt_enable (level);                                   
 80035fc:	d0 01 00 00 	wcsr IE,r1                                     
  }                                                                   
}                                                                     
 8003600:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003604:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003608:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800360c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003610:	37 9c 00 10 	addi sp,sp,16                                  
 8003614:	c3 a0 00 00 	ret                                            
      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);                              
 8003618:	f8 00 0d 32 	calli 8006ae0 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08004418 <echo>: /* * Echo a typed character */ static void echo (unsigned char c, struct rtems_termios_tty *tty) {
 8004418:	37 9c ff f4 	addi sp,sp,-12                                 
 800441c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004420:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004424:	b8 40 58 00 	mv r11,r2                                      
  if ((tty->termios.c_lflag & ECHOCTL) &&                             
 8004428:	28 42 00 3c 	lw r2,(r2+60)                                  
 800442c:	20 42 02 00 	andi r2,r2,0x200                               
 8004430:	44 40 00 0b 	be r2,r0,800445c <echo+0x44>                   <== NEVER TAKEN
       iscntrl(c) && (c != '\t') && (c != '\n')) {                    
 8004434:	78 02 08 02 	mvhi r2,0x802                                  
 8004438:	38 42 62 58 	ori r2,r2,0x6258                               
 800443c:	28 42 00 00 	lw r2,(r2+0)                                   
 8004440:	7c 23 00 09 	cmpnei r3,r1,9                                 
 8004444:	b4 41 10 00 	add r2,r2,r1                                   
 8004448:	40 42 00 01 	lbu r2,(r2+1)                                  
 800444c:	20 42 00 20 	andi r2,r2,0x20                                
 * Echo a typed character                                             
 */                                                                   
static void                                                           
echo (unsigned char c, struct rtems_termios_tty *tty)                 
{                                                                     
  if ((tty->termios.c_lflag & ECHOCTL) &&                             
 8004450:	7c 42 00 00 	cmpnei r2,r2,0                                 
       iscntrl(c) && (c != '\t') && (c != '\n')) {                    
 8004454:	a0 43 10 00 	and r2,r2,r3                                   
 8004458:	5c 40 00 07 	bne r2,r0,8004474 <echo+0x5c>                  
    echobuf[0] = '^';                                                 
    echobuf[1] = c ^ 0x40;                                            
    rtems_termios_puts (echobuf, 2, tty);                             
    tty->column += 2;                                                 
  } else {                                                            
    oproc (c, tty);                                                   
 800445c:	b9 60 10 00 	mv r2,r11                                      
 8004460:	fb ff ff 8c 	calli 8004290 <oproc>                          
  }                                                                   
}                                                                     
 8004464:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004468:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800446c:	37 9c 00 0c 	addi sp,sp,12                                  
 8004470:	c3 a0 00 00 	ret                                            
 */                                                                   
static void                                                           
echo (unsigned char c, struct rtems_termios_tty *tty)                 
{                                                                     
  if ((tty->termios.c_lflag & ECHOCTL) &&                             
       iscntrl(c) && (c != '\t') && (c != '\n')) {                    
 8004474:	34 02 00 0a 	mvi r2,10                                      
 8004478:	44 22 ff f9 	be r1,r2,800445c <echo+0x44>                   
    char echobuf[2];                                                  
                                                                      
    echobuf[0] = '^';                                                 
    echobuf[1] = c ^ 0x40;                                            
 800447c:	18 24 00 40 	xori r4,r1,0x40                                
{                                                                     
  if ((tty->termios.c_lflag & ECHOCTL) &&                             
       iscntrl(c) && (c != '\t') && (c != '\n')) {                    
    char echobuf[2];                                                  
                                                                      
    echobuf[0] = '^';                                                 
 8004480:	34 05 00 5e 	mvi r5,94                                      
    echobuf[1] = c ^ 0x40;                                            
    rtems_termios_puts (echobuf, 2, tty);                             
 8004484:	37 81 00 0c 	addi r1,sp,12                                  
 8004488:	34 02 00 02 	mvi r2,2                                       
 800448c:	b9 60 18 00 	mv r3,r11                                      
{                                                                     
  if ((tty->termios.c_lflag & ECHOCTL) &&                             
       iscntrl(c) && (c != '\t') && (c != '\n')) {                    
    char echobuf[2];                                                  
                                                                      
    echobuf[0] = '^';                                                 
 8004490:	33 85 00 0c 	sb (sp+12),r5                                  
    echobuf[1] = c ^ 0x40;                                            
 8004494:	33 84 00 0d 	sb (sp+13),r4                                  
    rtems_termios_puts (echobuf, 2, tty);                             
 8004498:	fb ff ff 25 	calli 800412c <rtems_termios_puts>             
    tty->column += 2;                                                 
 800449c:	29 61 00 28 	lw r1,(r11+40)                                 
 80044a0:	34 21 00 02 	addi r1,r1,2                                   
 80044a4:	59 61 00 28 	sw (r11+40),r1                                 
  } else {                                                            
    oproc (c, tty);                                                   
  }                                                                   
}                                                                     
 80044a8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80044ac:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80044b0:	37 9c 00 0c 	addi sp,sp,12                                  
 80044b4:	c3 a0 00 00 	ret                                            
                                                                      

080028b4 <endgrent>: void endgrent(void) {
 80028b4:	37 9c ff fc 	addi sp,sp,-4                                  
 80028b8:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (group_fp != NULL)                                               
 80028bc:	78 01 08 01 	mvhi r1,0x801                                  
 80028c0:	38 21 67 24 	ori r1,r1,0x6724                               
 80028c4:	28 21 00 00 	lw r1,(r1+0)                                   
 80028c8:	44 20 00 02 	be r1,r0,80028d0 <endgrent+0x1c>               <== NEVER TAKEN
    fclose(group_fp);                                                 
 80028cc:	f8 00 2e 21 	calli 800e150 <fclose>                         
}                                                                     
 80028d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80028d4:	37 9c 00 04 	addi sp,sp,4                                   
 80028d8:	c3 a0 00 00 	ret                                            
                                                                      

080026dc <endpwent>: void endpwent(void) {
 80026dc:	37 9c ff fc 	addi sp,sp,-4                                  
 80026e0:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (passwd_fp != NULL)                                              
 80026e4:	78 01 08 01 	mvhi r1,0x801                                  
 80026e8:	38 21 68 00 	ori r1,r1,0x6800                               
 80026ec:	28 21 00 00 	lw r1,(r1+0)                                   
 80026f0:	44 20 00 02 	be r1,r0,80026f8 <endpwent+0x1c>               <== NEVER TAKEN
    fclose(passwd_fp);                                                
 80026f4:	f8 00 2e 97 	calli 800e150 <fclose>                         
}                                                                     
 80026f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80026fc:	37 9c 00 04 	addi sp,sp,4                                   
 8002700:	c3 a0 00 00 	ret                                            
                                                                      

080044b8 <erase>: * 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) {
 80044b8:	37 9c ff e0 	addi sp,sp,-32                                 
 80044bc:	5b 8b 00 20 	sw (sp+32),r11                                 
 80044c0:	5b 8c 00 1c 	sw (sp+28),r12                                 
 80044c4:	5b 8d 00 18 	sw (sp+24),r13                                 
 80044c8:	5b 8e 00 14 	sw (sp+20),r14                                 
 80044cc:	5b 8f 00 10 	sw (sp+16),r15                                 
 80044d0:	5b 90 00 0c 	sw (sp+12),r16                                 
 80044d4:	5b 91 00 08 	sw (sp+8),r17                                  
 80044d8:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (tty->ccount == 0)                                               
 80044dc:	28 24 00 20 	lw r4,(r1+32)                                  
 * 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)                   
{                                                                     
 80044e0:	b8 20 58 00 	mv r11,r1                                      
 80044e4:	b8 40 68 00 	mv r13,r2                                      
  if (tty->ccount == 0)                                               
 80044e8:	44 80 00 27 	be r4,r0,8004584 <erase+0xcc>                  
    return;                                                           
  if (lineFlag) {                                                     
 80044ec:	5c 40 00 30 	bne r2,r0,80045ac <erase+0xf4>                 
        echo ('\n', tty);                                             
      return;                                                         
    }                                                                 
  }                                                                   
                                                                      
  while (tty->ccount) {                                               
 80044f0:	28 25 00 3c 	lw r5,(r1+60)                                  
 80044f4:	20 a2 00 08 	andi r2,r5,0x8                                 
          rtems_termios_puts ("\b", 1, tty);                          
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
 80044f8:	78 0f 08 02 	mvhi r15,0x802                                 
 80044fc:	78 11 08 02 	mvhi r17,0x802                                 
 8004500:	78 0e 08 02 	mvhi r14,0x802                                 
    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);                        
      } else if (c == '\t') {                                         
 8004504:	34 10 00 09 	mvi r16,9                                      
          rtems_termios_puts ("\b", 1, tty);                          
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
 8004508:	39 ef 62 58 	ori r15,r15,0x6258                             
 800450c:	3a 31 44 90 	ori r17,r17,0x4490                             
 8004510:	39 ce 44 8c 	ori r14,r14,0x448c                             
      return;                                                         
    }                                                                 
  }                                                                   
                                                                      
  while (tty->ccount) {                                               
    unsigned char c = tty->cbuf[--tty->ccount];                       
 8004514:	29 67 00 1c 	lw r7,(r11+28)                                 
 8004518:	34 84 ff ff 	addi r4,r4,-1                                  
 800451c:	59 64 00 20 	sw (r11+32),r4                                 
 8004520:	b4 e4 18 00 	add r3,r7,r4                                   
 8004524:	40 63 00 00 	lbu r3,(r3+0)                                  
                                                                      
    if (tty->termios.c_lflag & ECHO) {                                
 8004528:	44 40 00 0e 	be r2,r0,8004560 <erase+0xa8>                  <== NEVER TAKEN
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
 800452c:	5d a0 00 03 	bne r13,r0,8004538 <erase+0x80>                
 8004530:	20 a1 00 10 	andi r1,r5,0x10                                
 8004534:	44 2d 00 11 	be r1,r13,8004578 <erase+0xc0>                 <== NEVER TAKEN
        echo (tty->termios.c_cc[VERASE], tty);                        
      } else if (c == '\t') {                                         
 8004538:	44 70 00 45 	be r3,r16,800464c <erase+0x194>                
          rtems_termios_puts ("\b", 1, tty);                          
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
 800453c:	29 e2 00 00 	lw r2,(r15+0)                                  
 8004540:	34 6c 00 01 	addi r12,r3,1                                  
 8004544:	ba 20 08 00 	mv r1,r17                                      
 8004548:	b4 4c 10 00 	add r2,r2,r12                                  
 800454c:	40 42 00 00 	lbu r2,(r2+0)                                  
 8004550:	20 42 00 20 	andi r2,r2,0x20                                
 8004554:	44 40 00 36 	be r2,r0,800462c <erase+0x174>                 <== ALWAYS TAKEN
 8004558:	20 a5 02 00 	andi r5,r5,0x200                               <== NOT EXECUTED
 800455c:	5c a0 00 24 	bne r5,r0,80045ec <erase+0x134>                <== NOT EXECUTED
          if (tty->column)                                            
            tty->column--;                                            
        }                                                             
      }                                                               
    }                                                                 
    if (!lineFlag)                                                    
 8004560:	45 a0 00 09 	be r13,r0,8004584 <erase+0xcc>                 
        echo ('\n', tty);                                             
      return;                                                         
    }                                                                 
  }                                                                   
                                                                      
  while (tty->ccount) {                                               
 8004564:	29 64 00 20 	lw r4,(r11+32)                                 
 8004568:	44 80 00 07 	be r4,r0,8004584 <erase+0xcc>                  
    }                                                                 
    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);                                             
 800456c:	29 65 00 3c 	lw r5,(r11+60)                                 
 8004570:	20 a2 00 08 	andi r2,r5,0x8                                 
 8004574:	e3 ff ff e8 	bi 8004514 <erase+0x5c>                        
  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);                        
 8004578:	41 61 00 43 	lbu r1,(r11+67)                                <== NOT EXECUTED
 800457c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8004580:	fb ff ff a6 	calli 8004418 <echo>                           <== NOT EXECUTED
      }                                                               
    }                                                                 
    if (!lineFlag)                                                    
      break;                                                          
  }                                                                   
}                                                                     
 8004584:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004588:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800458c:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8004590:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8004594:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8004598:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800459c:	2b 90 00 0c 	lw r16,(sp+12)                                 
 80045a0:	2b 91 00 08 	lw r17,(sp+8)                                  
 80045a4:	37 9c 00 20 	addi sp,sp,32                                  
 80045a8:	c3 a0 00 00 	ret                                            
erase (struct rtems_termios_tty *tty, int lineFlag)                   
{                                                                     
  if (tty->ccount == 0)                                               
    return;                                                           
  if (lineFlag) {                                                     
    if (!(tty->termios.c_lflag & ECHO)) {                             
 80045ac:	28 25 00 3c 	lw r5,(r1+60)                                  
 80045b0:	20 a2 00 08 	andi r2,r5,0x8                                 
 80045b4:	44 40 00 48 	be r2,r0,80046d4 <erase+0x21c>                 <== NEVER TAKEN
      tty->ccount = 0;                                                
      return;                                                         
    }                                                                 
    if (!(tty->termios.c_lflag & ECHOE)) {                            
 80045b8:	20 ac 00 10 	andi r12,r5,0x10                               
 80045bc:	5d 80 ff cf 	bne r12,r0,80044f8 <erase+0x40>                <== ALWAYS TAKEN
      tty->ccount = 0;                                                
      echo (tty->termios.c_cc[VKILL], tty);                           
 80045c0:	40 21 00 44 	lbu r1,(r1+68)                                 <== NOT EXECUTED
    if (!(tty->termios.c_lflag & ECHO)) {                             
      tty->ccount = 0;                                                
      return;                                                         
    }                                                                 
    if (!(tty->termios.c_lflag & ECHOE)) {                            
      tty->ccount = 0;                                                
 80045c4:	59 60 00 20 	sw (r11+32),r0                                 <== NOT EXECUTED
      echo (tty->termios.c_cc[VKILL], tty);                           
 80045c8:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 80045cc:	fb ff ff 93 	calli 8004418 <echo>                           <== NOT EXECUTED
      if (tty->termios.c_lflag & ECHOK)                               
 80045d0:	29 61 00 3c 	lw r1,(r11+60)                                 <== NOT EXECUTED
 80045d4:	20 21 00 20 	andi r1,r1,0x20                                <== NOT EXECUTED
 80045d8:	44 2c ff eb 	be r1,r12,8004584 <erase+0xcc>                 <== NOT EXECUTED
        echo ('\n', tty);                                             
 80045dc:	34 01 00 0a 	mvi r1,10                                      <== NOT EXECUTED
 80045e0:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 80045e4:	fb ff ff 8d 	calli 8004418 <echo>                           <== NOT EXECUTED
 80045e8:	e3 ff ff e7 	bi 8004584 <erase+0xcc>                        <== NOT EXECUTED
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
          rtems_termios_puts ("\b \b", 3, tty);                       
 80045ec:	34 02 00 03 	mvi r2,3                                       <== NOT EXECUTED
 80045f0:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 80045f4:	fb ff fe ce 	calli 800412c <rtems_termios_puts>             <== NOT EXECUTED
          if (tty->column)                                            
 80045f8:	29 62 00 28 	lw r2,(r11+40)                                 <== NOT EXECUTED
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
          rtems_termios_puts ("\b \b", 3, tty);                       
 80045fc:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
          if (tty->column)                                            
 8004600:	44 40 00 03 	be r2,r0,800460c <erase+0x154>                 <== NOT EXECUTED
            tty->column--;                                            
 8004604:	34 42 ff ff 	addi r2,r2,-1                                  <== NOT EXECUTED
 8004608:	59 62 00 28 	sw (r11+40),r2                                 <== NOT EXECUTED
        }                                                             
        if (!iscntrl (c) || (tty->termios.c_lflag & ECHOCTL)) {       
 800460c:	29 e2 00 00 	lw r2,(r15+0)                                  <== NOT EXECUTED
 8004610:	b4 4c 60 00 	add r12,r2,r12                                 <== NOT EXECUTED
 8004614:	41 82 00 00 	lbu r2,(r12+0)                                 <== NOT EXECUTED
 8004618:	20 42 00 20 	andi r2,r2,0x20                                <== NOT EXECUTED
 800461c:	44 40 00 04 	be r2,r0,800462c <erase+0x174>                 <== NOT EXECUTED
 8004620:	29 62 00 3c 	lw r2,(r11+60)                                 <== NOT EXECUTED
 8004624:	20 42 02 00 	andi r2,r2,0x200                               <== NOT EXECUTED
 8004628:	44 40 ff ce 	be r2,r0,8004560 <erase+0xa8>                  <== NOT EXECUTED
          rtems_termios_puts ("\b \b", 3, tty);                       
 800462c:	34 02 00 03 	mvi r2,3                                       
 8004630:	b9 60 18 00 	mv r3,r11                                      
 8004634:	fb ff fe be 	calli 800412c <rtems_termios_puts>             
          if (tty->column)                                            
 8004638:	29 61 00 28 	lw r1,(r11+40)                                 
 800463c:	44 20 ff c9 	be r1,r0,8004560 <erase+0xa8>                  <== NEVER TAKEN
            tty->column--;                                            
 8004640:	34 21 ff ff 	addi r1,r1,-1                                  
 8004644:	59 61 00 28 	sw (r11+40),r1                                 
 8004648:	e3 ff ff c6 	bi 8004560 <erase+0xa8>                        
                                                                      
    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;                             
 800464c:	29 6c 00 2c 	lw r12,(r11+44)                                
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
 8004650:	44 80 00 0f 	be r4,r0,800468c <erase+0x1d4>                 
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
 8004654:	29 e1 00 00 	lw r1,(r15+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;                             
        int i = 0;                                                    
 8004658:	34 03 00 00 	mvi r3,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)                       
 800465c:	20 a5 02 00 	andi r5,r5,0x200                               
 * Erase a character or line                                          
 * 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)                   
 8004660:	b4 e3 10 00 	add r2,r7,r3                                   
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
          c = tty->cbuf[i++];                                         
 8004664:	40 46 00 00 	lbu r6,(r2+0)                                  
 8004668:	34 63 00 01 	addi r3,r3,1                                   
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
 800466c:	b4 26 10 00 	add r2,r1,r6                                   
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
 8004670:	44 d0 00 15 	be r6,r16,80046c4 <erase+0x20c>                
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
 8004674:	40 42 00 01 	lbu r2,(r2+1)                                  
 8004678:	20 42 00 20 	andi r2,r2,0x20                                
 800467c:	44 40 00 0f 	be r2,r0,80046b8 <erase+0x200>                 <== ALWAYS TAKEN
            if (tty->termios.c_lflag & ECHOCTL)                       
 8004680:	44 a0 00 02 	be r5,r0,8004688 <erase+0x1d0>                 <== NOT EXECUTED
              col += 2;                                               
 8004684:	35 8c 00 02 	addi r12,r12,2                                 <== NOT EXECUTED
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
 8004688:	5c 83 ff f6 	bne r4,r3,8004660 <erase+0x1a8>                <== NOT EXECUTED
        }                                                             
                                                                      
        /*                                                            
         * Back up over the tab                                       
         */                                                           
        while (tty->column > col) {                                   
 800468c:	29 61 00 28 	lw r1,(r11+40)                                 
 8004690:	4d 81 ff b4 	bge r12,r1,8004560 <erase+0xa8>                <== NEVER TAKEN
          rtems_termios_puts ("\b", 1, tty);                          
 8004694:	b9 60 18 00 	mv r3,r11                                      
 8004698:	b9 c0 08 00 	mv r1,r14                                      
 800469c:	34 02 00 01 	mvi r2,1                                       
 80046a0:	fb ff fe a3 	calli 800412c <rtems_termios_puts>             
          tty->column--;                                              
 80046a4:	29 63 00 28 	lw r3,(r11+40)                                 
 80046a8:	34 63 ff ff 	addi r3,r3,-1                                  
 80046ac:	59 63 00 28 	sw (r11+40),r3                                 
        }                                                             
                                                                      
        /*                                                            
         * Back up over the tab                                       
         */                                                           
        while (tty->column > col) {                                   
 80046b0:	48 6c ff f9 	bg r3,r12,8004694 <erase+0x1dc>                
 80046b4:	e3 ff ff ab 	bi 8004560 <erase+0xa8>                        
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
            if (tty->termios.c_lflag & ECHOCTL)                       
              col += 2;                                               
          } else {                                                    
            col++;                                                    
 80046b8:	35 8c 00 01 	addi r12,r12,1                                 
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
 80046bc:	5c 83 ff e9 	bne r4,r3,8004660 <erase+0x1a8>                
 80046c0:	e3 ff ff f3 	bi 800468c <erase+0x1d4>                       
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
 80046c4:	39 8c 00 07 	ori r12,r12,0x7                                
 80046c8:	35 8c 00 01 	addi r12,r12,1                                 
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
 80046cc:	5c 83 ff e5 	bne r4,r3,8004660 <erase+0x1a8>                <== ALWAYS TAKEN
 80046d0:	e3 ff ff ef 	bi 800468c <erase+0x1d4>                       <== NOT EXECUTED
{                                                                     
  if (tty->ccount == 0)                                               
    return;                                                           
  if (lineFlag) {                                                     
    if (!(tty->termios.c_lflag & ECHO)) {                             
      tty->ccount = 0;                                                
 80046d4:	58 20 00 20 	sw (r1+32),r0                                  <== NOT EXECUTED
      return;                                                         
 80046d8:	e3 ff ff ab 	bi 8004584 <erase+0xcc>                        <== NOT EXECUTED
                                                                      

08002018 <fcntl>: int fcntl( int fd, int cmd, ... ) {
 8002018:	37 9c ff d0 	addi sp,sp,-48                                 
 800201c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8002020:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8002024:	5b 8d 00 08 	sw (sp+8),r13                                  
 8002028:	5b 9d 00 04 	sw (sp+4),ra                                   
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
 800202c:	78 09 08 01 	mvhi r9,0x801                                  
 8002030:	39 29 60 10 	ori r9,r9,0x6010                               
 8002034:	29 29 00 00 	lw r9,(r9+0)                                   
int fcntl(                                                            
  int fd,                                                             
  int cmd,                                                            
  ...                                                                 
)                                                                     
{                                                                     
 8002038:	5b 85 00 24 	sw (sp+36),r5                                  
 800203c:	5b 82 00 18 	sw (sp+24),r2                                  
 8002040:	5b 83 00 1c 	sw (sp+28),r3                                  
 8002044:	5b 84 00 20 	sw (sp+32),r4                                  
 8002048:	5b 86 00 28 	sw (sp+40),r6                                  
 800204c:	5b 87 00 2c 	sw (sp+44),r7                                  
 8002050:	5b 88 00 30 	sw (sp+48),r8                                  
  int            ret;                                                 
  va_list        ap;                                                  
  va_start( ap, cmd );                                                
 8002054:	37 85 00 1c 	addi r5,sp,28                                  
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
 8002058:	55 21 00 06 	bgu r9,r1,8002070 <fcntl+0x58>                 
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open(iop);                                     
 800205c:	f8 00 30 3d 	calli 800e150 <__errno>                        
 8002060:	34 02 00 09 	mvi r2,9                                       
 8002064:	58 22 00 00 	sw (r1+0),r2                                   
 8002068:	34 0c ff ff 	mvi r12,-1                                     
 800206c:	e0 00 00 1b 	bi 80020d8 <fcntl+0xc0>                        
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 8002070:	b4 21 18 00 	add r3,r1,r1                                   
 8002074:	78 0c 08 01 	mvhi r12,0x801                                 
 8002078:	b4 63 18 00 	add r3,r3,r3                                   
 800207c:	39 8c 67 8c 	ori r12,r12,0x678c                             
 8002080:	b4 63 18 00 	add r3,r3,r3                                   
 8002084:	29 86 00 00 	lw r6,(r12+0)                                  
 8002088:	b4 63 18 00 	add r3,r3,r3                                   
 800208c:	b4 63 18 00 	add r3,r3,r3                                   
 8002090:	b4 63 18 00 	add r3,r3,r3                                   
 8002094:	b4 c3 58 00 	add r11,r6,r3                                  
  rtems_libio_check_is_open(iop);                                     
 8002098:	29 61 00 18 	lw r1,(r11+24)                                 
 800209c:	20 23 01 00 	andi r3,r1,0x100                               
 80020a0:	44 60 ff ef 	be r3,r0,800205c <fcntl+0x44>                  
                                                                      
  /*                                                                  
   *  This switch should contain all the cases from POSIX.            
   */                                                                 
                                                                      
  switch ( cmd ) {                                                    
 80020a4:	34 03 00 09 	mvi r3,9                                       
 80020a8:	54 43 00 58 	bgu r2,r3,8002208 <fcntl+0x1f0>                
 80020ac:	78 04 08 01 	mvhi r4,0x801                                  
 80020b0:	b4 42 18 00 	add r3,r2,r2                                   
 80020b4:	38 84 52 d0 	ori r4,r4,0x52d0                               
 80020b8:	b4 63 18 00 	add r3,r3,r3                                   
 80020bc:	b4 83 18 00 	add r3,r4,r3                                   
 80020c0:	28 63 00 00 	lw r3,(r3+0)                                   
 80020c4:	c0 60 00 00 	b r3                                           
      errno = ENOTSUP;                                                
      ret = -1;                                                       
      break;                                                          
                                                                      
    case F_GETOWN:       /*  for sockets. */                          
      errno = ENOTSUP;                                                
 80020c8:	f8 00 30 22 	calli 800e150 <__errno>                        
 80020cc:	34 02 00 86 	mvi r2,134                                     
 80020d0:	58 22 00 00 	sw (r1+0),r2                                   
                                                                      
  if (ret >= 0) {                                                     
    int err = (*iop->pathinfo.handlers->fcntl_h)( cmd, iop );         
    if (err) {                                                        
      errno = err;                                                    
      ret = -1;                                                       
 80020d4:	34 0c ff ff 	mvi r12,-1                                     
  va_list        ap;                                                  
  va_start( ap, cmd );                                                
  ret = vfcntl(fd,cmd,ap);                                            
  va_end(ap);                                                         
  return ret;                                                         
}                                                                     
 80020d8:	b9 80 08 00 	mv r1,r12                                      
 80020dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80020e0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80020e4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80020e8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80020ec:	37 9c 00 30 	addi sp,sp,48                                  
 80020f0:	c3 a0 00 00 	ret                                            
    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 ) );           
 80020f4:	28 a1 00 00 	lw r1,(r5+0)                                   
 80020f8:	5b 82 00 14 	sw (sp+20),r2                                  
  rtems_libio_t *iop;                                                 
  rtems_libio_t *diop;                                                
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
 80020fc:	34 0c 00 00 	mvi r12,0                                      
    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 ) );           
 8002100:	f8 00 01 bd 	calli 80027f4 <rtems_libio_fcntl_flags>        
                                                                      
      /*                                                              
       *  XXX If we are turning on append, should we seek to the end? 
       */                                                             
                                                                      
      iop->flags = (iop->flags & ~mask) | (flags & mask);             
 8002104:	29 64 00 18 	lw r4,(r11+24)                                 
 8002108:	34 03 fd fe 	mvi r3,-514                                    
 800210c:	20 21 02 01 	andi r1,r1,0x201                               
 8002110:	a0 64 18 00 	and r3,r3,r4                                   
 8002114:	2b 82 00 14 	lw r2,(sp+20)                                  
 8002118:	b8 23 08 00 	or r1,r1,r3                                    
 800211c:	59 61 00 18 	sw (r11+24),r1                                 
   *  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)( cmd, iop );         
 8002120:	29 63 00 24 	lw r3,(r11+36)                                 
 8002124:	b8 40 08 00 	mv r1,r2                                       
 8002128:	b9 60 10 00 	mv r2,r11                                      
 800212c:	28 63 00 30 	lw r3,(r3+48)                                  
 8002130:	d8 60 00 00 	call r3                                        
 8002134:	b8 20 58 00 	mv r11,r1                                      
    if (err) {                                                        
 8002138:	44 20 ff e8 	be r1,r0,80020d8 <fcntl+0xc0>                  <== ALWAYS TAKEN
      errno = err;                                                    
 800213c:	f8 00 30 05 	calli 800e150 <__errno>                        <== NOT EXECUTED
 8002140:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 8002144:	e3 ff ff e4 	bi 80020d4 <fcntl+0xbc>                        <== NOT EXECUTED
      else                                                            
        iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC;                     
      break;                                                          
                                                                      
    case F_GETFL:        /* more flags (cloexec) */                   
      ret = rtems_libio_to_fcntl_flags( iop->flags );                 
 8002148:	5b 82 00 14 	sw (sp+20),r2                                  
 800214c:	f8 00 01 c0 	calli 800284c <rtems_libio_to_fcntl_flags>     
 8002150:	b8 20 60 00 	mv r12,r1                                      
 8002154:	2b 82 00 14 	lw r2,(sp+20)                                  
  /*                                                                  
   *  If we got this far successfully, then we give the optional      
   *  filesystem specific handler a chance to process this.           
   */                                                                 
                                                                      
  if (ret >= 0) {                                                     
 8002158:	48 0c ff e0 	bg r0,r12,80020d8 <fcntl+0xc0>                 <== NEVER TAKEN
 800215c:	e3 ff ff f1 	bi 8002120 <fcntl+0x108>                       
       *  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 ) )                                        
 8002160:	28 a3 00 00 	lw r3,(r5+0)                                   
 8002164:	44 60 00 2d 	be r3,r0,8002218 <fcntl+0x200>                 
        iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;                      
 8002168:	38 21 08 00 	ori r1,r1,0x800                                
 800216c:	59 61 00 18 	sw (r11+24),r1                                 
  rtems_libio_t *iop;                                                 
  rtems_libio_t *diop;                                                
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
 8002170:	34 0c 00 00 	mvi r12,0                                      
 8002174:	e3 ff ff eb 	bi 8002120 <fcntl+0x108>                       
      diop->pathinfo   = iop->pathinfo;                               
      ret = (int) (diop - rtems_libio_iops);                          
      break;                                                          
                                                                      
    case F_GETFD:        /* get f_flags */                            
      ret = ((iop->flags & LIBIO_FLAGS_CLOSE_ON_EXEC) != 0);          
 8002178:	20 2c 08 00 	andi r12,r1,0x800                              
 800217c:	7d 8c 00 00 	cmpnei r12,r12,0                               
 8002180:	e3 ff ff e8 	bi 8002120 <fcntl+0x108>                       
   *  This switch should contain all the cases from POSIX.            
   */                                                                 
                                                                      
  switch ( cmd ) {                                                    
    case F_DUPFD:        /* dup */                                    
      fd2 = va_arg( ap, int );                                        
 8002184:	28 ad 00 00 	lw r13,(r5+0)                                  
      if ( fd2 )                                                      
 8002188:	45 a0 00 29 	be r13,r0,800222c <fcntl+0x214>                
        diop = rtems_libio_iop( fd2 );                                
 800218c:	34 0c 00 00 	mvi r12,0                                      
 8002190:	34 03 00 00 	mvi r3,0                                       
 8002194:	51 a9 00 09 	bgeu r13,r9,80021b8 <fcntl+0x1a0>              <== NEVER TAKEN
 8002198:	b5 ad 18 00 	add r3,r13,r13                                 
 800219c:	b4 63 18 00 	add r3,r3,r3                                   
 80021a0:	b4 63 18 00 	add r3,r3,r3                                   
 80021a4:	b4 63 18 00 	add r3,r3,r3                                   
 80021a8:	b4 63 18 00 	add r3,r3,r3                                   
 80021ac:	b4 63 18 00 	add r3,r3,r3                                   
 80021b0:	b4 c3 18 00 	add r3,r6,r3                                   
 80021b4:	b8 60 60 00 	mv r12,r3                                      
          break;                                                      
        }                                                             
      }                                                               
                                                                      
      diop->flags      = iop->flags;                                  
      diop->pathinfo   = iop->pathinfo;                               
 80021b8:	29 64 00 1c 	lw r4,(r11+28)                                 
      ret = (int) (diop - rtems_libio_iops);                          
 80021bc:	c9 86 60 00 	sub r12,r12,r6                                 
 80021c0:	15 8c 00 01 	sri r12,r12,1                                  
          break;                                                      
        }                                                             
      }                                                               
                                                                      
      diop->flags      = iop->flags;                                  
      diop->pathinfo   = iop->pathinfo;                               
 80021c4:	58 64 00 1c 	sw (r3+28),r4                                  
 80021c8:	29 64 00 20 	lw r4,(r11+32)                                 
          ret = -1;                                                   
          break;                                                      
        }                                                             
      }                                                               
                                                                      
      diop->flags      = iop->flags;                                  
 80021cc:	58 61 00 18 	sw (r3+24),r1                                  
      diop->pathinfo   = iop->pathinfo;                               
      ret = (int) (diop - rtems_libio_iops);                          
 80021d0:	15 8c 00 01 	sri r12,r12,1                                  
          break;                                                      
        }                                                             
      }                                                               
                                                                      
      diop->flags      = iop->flags;                                  
      diop->pathinfo   = iop->pathinfo;                               
 80021d4:	58 64 00 20 	sw (r3+32),r4                                  
 80021d8:	29 61 00 24 	lw r1,(r11+36)                                 
      ret = (int) (diop - rtems_libio_iops);                          
 80021dc:	15 8c 00 01 	sri r12,r12,1                                  
          break;                                                      
        }                                                             
      }                                                               
                                                                      
      diop->flags      = iop->flags;                                  
      diop->pathinfo   = iop->pathinfo;                               
 80021e0:	58 61 00 24 	sw (r3+36),r1                                  
 80021e4:	29 61 00 28 	lw r1,(r11+40)                                 
      ret = (int) (diop - rtems_libio_iops);                          
 80021e8:	15 8c 00 01 	sri r12,r12,1                                  
          break;                                                      
        }                                                             
      }                                                               
                                                                      
      diop->flags      = iop->flags;                                  
      diop->pathinfo   = iop->pathinfo;                               
 80021ec:	58 61 00 28 	sw (r3+40),r1                                  
 80021f0:	29 61 00 2c 	lw r1,(r11+44)                                 
      ret = (int) (diop - rtems_libio_iops);                          
 80021f4:	15 8c 00 01 	sri r12,r12,1                                  
 80021f8:	15 8c 00 01 	sri r12,r12,1                                  
          break;                                                      
        }                                                             
      }                                                               
                                                                      
      diop->flags      = iop->flags;                                  
      diop->pathinfo   = iop->pathinfo;                               
 80021fc:	58 61 00 2c 	sw (r3+44),r1                                  
  /*                                                                  
   *  If we got this far successfully, then we give the optional      
   *  filesystem specific handler a chance to process this.           
   */                                                                 
                                                                      
  if (ret >= 0) {                                                     
 8002200:	48 0c ff b6 	bg r0,r12,80020d8 <fcntl+0xc0>                 <== NEVER TAKEN
 8002204:	e3 ff ff c7 	bi 8002120 <fcntl+0x108>                       
      errno = ENOTSUP;                                                
      ret = -1;                                                       
      break;                                                          
                                                                      
    default:                                                          
      errno = EINVAL;                                                 
 8002208:	f8 00 2f d2 	calli 800e150 <__errno>                        
 800220c:	34 02 00 16 	mvi r2,22                                      
 8002210:	58 22 00 00 	sw (r1+0),r2                                   
 8002214:	e3 ff ff b0 	bi 80020d4 <fcntl+0xbc>                        
       */                                                             
                                                                      
      if ( va_arg( ap, int ) )                                        
        iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;                      
      else                                                            
        iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC;                     
 8002218:	34 03 f7 ff 	mvi r3,-2049                                   
 800221c:	a0 23 08 00 	and r1,r1,r3                                   
 8002220:	59 61 00 18 	sw (r11+24),r1                                 
  rtems_libio_t *iop;                                                 
  rtems_libio_t *diop;                                                
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
 8002224:	34 0c 00 00 	mvi r12,0                                      
 8002228:	e3 ff ff be 	bi 8002120 <fcntl+0x108>                       
      fd2 = va_arg( ap, int );                                        
      if ( fd2 )                                                      
        diop = rtems_libio_iop( fd2 );                                
      else {                                                          
        /* allocate a file control block */                           
        diop = rtems_libio_allocate();                                
 800222c:	5b 82 00 14 	sw (sp+20),r2                                  
 8002230:	f8 00 01 9c 	calli 80028a0 <rtems_libio_allocate>           
 8002234:	b8 20 18 00 	mv r3,r1                                       
        if ( diop == 0 ) {                                            
 8002238:	2b 82 00 14 	lw r2,(sp+20)                                  
 800223c:	44 2d ff a6 	be r1,r13,80020d4 <fcntl+0xbc>                 <== NEVER TAKEN
 8002240:	29 86 00 00 	lw r6,(r12+0)                                  
 8002244:	29 61 00 18 	lw r1,(r11+24)                                 
 8002248:	b8 60 60 00 	mv r12,r3                                      
 800224c:	e3 ff ff db 	bi 80021b8 <fcntl+0x1a0>                       
                                                                      

0800aa90 <fifo_open>: */ int fifo_open( pipe_control_t **pipep, rtems_libio_t *iop ) {
 800aa90:	37 9c ff d8 	addi sp,sp,-40                                 
 800aa94:	5b 8b 00 20 	sw (sp+32),r11                                 
 800aa98:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800aa9c:	5b 8d 00 18 	sw (sp+24),r13                                 
 800aaa0:	5b 8e 00 14 	sw (sp+20),r14                                 
 800aaa4:	5b 8f 00 10 	sw (sp+16),r15                                 
 800aaa8:	5b 90 00 0c 	sw (sp+12),r16                                 
 800aaac:	5b 91 00 08 	sw (sp+8),r17                                  
 800aab0:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
static rtems_status_code pipe_lock(void)                              
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
 800aab4:	78 0b 08 02 	mvhi r11,0x802                                 
 800aab8:	39 6b 47 3c 	ori r11,r11,0x473c                             
 800aabc:	29 6c 00 00 	lw r12,(r11+0)                                 
 */                                                                   
int fifo_open(                                                        
  pipe_control_t **pipep,                                             
  rtems_libio_t *iop                                                  
)                                                                     
{                                                                     
 800aac0:	b8 20 70 00 	mv r14,r1                                      
 800aac4:	b8 40 68 00 	mv r13,r2                                      
                                                                      
static rtems_status_code pipe_lock(void)                              
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
 800aac8:	45 80 00 2c 	be r12,r0,800ab78 <fifo_open+0xe8>             
                                                                      
    rtems_libio_unlock();                                             
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
    sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 800aacc:	b9 80 08 00 	mv r1,r12                                      
 800aad0:	34 02 00 00 	mvi r2,0                                       
 800aad4:	34 03 00 00 	mvi r3,0                                       
 800aad8:	fb ff ea b2 	calli 80055a0 <rtems_semaphore_obtain>         
)                                                                     
{                                                                     
  pipe_control_t *pipe;                                               
  int err = 0;                                                        
                                                                      
  err = pipe_lock();                                                  
 800aadc:	34 0c ff f4 	mvi r12,-12                                    
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
    sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
 800aae0:	5c 20 00 1b 	bne r1,r0,800ab4c <fifo_open+0xbc>             <== NEVER TAKEN
                                                                      
  err = pipe_lock();                                                  
  if (err)                                                            
    return err;                                                       
                                                                      
  pipe = *pipep;                                                      
 800aae4:	29 cb 00 00 	lw r11,(r14+0)                                 
  if (pipe == NULL) {                                                 
 800aae8:	45 61 00 80 	be r11,r1,800ace8 <fifo_open+0x258>            
    err = pipe_alloc(&pipe);                                          
    if (err)                                                          
      goto out;                                                       
  }                                                                   
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800aaec:	29 61 00 28 	lw r1,(r11+40)                                 
 800aaf0:	34 02 00 00 	mvi r2,0                                       
 800aaf4:	34 03 00 00 	mvi r3,0                                       
 800aaf8:	fb ff ea aa 	calli 80055a0 <rtems_semaphore_obtain>         
 800aafc:	7c 21 00 00 	cmpnei r1,r1,0                                 
    err = -EINTR;                                                     
                                                                      
  if (*pipep == NULL) {                                               
 800ab00:	29 c2 00 00 	lw r2,(r14+0)                                  
    err = pipe_alloc(&pipe);                                          
    if (err)                                                          
      goto out;                                                       
  }                                                                   
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800ab04:	c8 01 60 00 	sub r12,r0,r1                                  
 800ab08:	34 03 ff fc 	mvi r3,-4                                      
 800ab0c:	a1 83 60 00 	and r12,r12,r3                                 
    err = -EINTR;                                                     
                                                                      
  if (*pipep == NULL) {                                               
 800ab10:	44 40 00 cb 	be r2,r0,800ae3c <fifo_open+0x3ac>             
    else                                                              
      *pipep = pipe;                                                  
  }                                                                   
                                                                      
out:                                                                  
  pipe_unlock();                                                      
 800ab14:	fb ff ff 89 	calli 800a938 <pipe_unlock>                    
  pipe_control_t *pipe;                                               
  unsigned int prevCounter;                                           
  int err;                                                            
                                                                      
  err = pipe_new(pipep);                                              
  if (err)                                                            
 800ab18:	5d 80 00 0d 	bne r12,r0,800ab4c <fifo_open+0xbc>            <== NEVER TAKEN
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
 800ab1c:	29 a1 00 18 	lw r1,(r13+24)                                 
 800ab20:	34 02 00 04 	mvi r2,4                                       
  int err;                                                            
                                                                      
  err = pipe_new(pipep);                                              
  if (err)                                                            
    return err;                                                       
  pipe = *pipep;                                                      
 800ab24:	29 cb 00 00 	lw r11,(r14+0)                                 
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
 800ab28:	20 21 00 06 	andi r1,r1,0x6                                 
 800ab2c:	44 22 00 1f 	be r1,r2,800aba8 <fifo_open+0x118>             
 800ab30:	34 02 00 06 	mvi r2,6                                       
 800ab34:	44 22 00 5b 	be r1,r2,800aca0 <fifo_open+0x210>             
 800ab38:	34 02 00 02 	mvi r2,2                                       
 800ab3c:	44 22 00 3c 	be r1,r2,800ac2c <fifo_open+0x19c>             <== ALWAYS TAKEN
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
      break;                                                          
  }                                                                   
                                                                      
  PIPE_UNLOCK(pipe);                                                  
 800ab40:	29 61 00 28 	lw r1,(r11+40)                                 
  return 0;                                                           
 800ab44:	34 0c 00 00 	mvi r12,0                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
      break;                                                          
  }                                                                   
                                                                      
  PIPE_UNLOCK(pipe);                                                  
 800ab48:	fb ff ea f2 	calli 8005710 <rtems_semaphore_release>        
  return 0;                                                           
                                                                      
out_error:                                                            
  pipe_release(pipep, iop);                                           
  return err;                                                         
}                                                                     
 800ab4c:	b9 80 08 00 	mv r1,r12                                      
 800ab50:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ab54:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800ab58:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 800ab5c:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800ab60:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800ab64:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800ab68:	2b 90 00 0c 	lw r16,(sp+12)                                 
 800ab6c:	2b 91 00 08 	lw r17,(sp+8)                                  
 800ab70:	37 9c 00 28 	addi sp,sp,40                                  
 800ab74:	c3 a0 00 00 	ret                                            
rtems_status_code rtems_libio_set_private_env(void);                  
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;   
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 800ab78:	78 0f 08 02 	mvhi r15,0x802                                 
 800ab7c:	39 ef 47 b8 	ori r15,r15,0x47b8                             
 800ab80:	29 e1 00 00 	lw r1,(r15+0)                                  
 800ab84:	34 02 00 00 	mvi r2,0                                       
 800ab88:	34 03 00 00 	mvi r3,0                                       
 800ab8c:	fb ff ea 85 	calli 80055a0 <rtems_semaphore_obtain>         
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
    rtems_libio_lock();                                               
                                                                      
    if (pipe_semaphore == RTEMS_ID_NONE) {                            
 800ab90:	29 61 00 00 	lw r1,(r11+0)                                  
 800ab94:	44 2c 00 ae 	be r1,r12,800ae4c <fifo_open+0x3bc>            <== ALWAYS TAKEN
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 800ab98:	29 e1 00 00 	lw r1,(r15+0)                                  <== NOT EXECUTED
 800ab9c:	fb ff ea dd 	calli 8005710 <rtems_semaphore_release>        <== NOT EXECUTED
 800aba0:	29 6c 00 00 	lw r12,(r11+0)                                 <== NOT EXECUTED
 800aba4:	e3 ff ff ca 	bi 800aacc <fifo_open+0x3c>                    <== NOT EXECUTED
        } while (prevCounter == pipe->writerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
 800aba8:	29 63 00 24 	lw r3,(r11+36)                                 
                                                                      
      if (pipe->Writers ++ == 0)                                      
 800abac:	29 61 00 14 	lw r1,(r11+20)                                 
        } while (prevCounter == pipe->writerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
 800abb0:	34 63 00 01 	addi r3,r3,1                                   
                                                                      
      if (pipe->Writers ++ == 0)                                      
 800abb4:	34 22 00 01 	addi r2,r1,1                                   
        } while (prevCounter == pipe->writerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
 800abb8:	59 63 00 24 	sw (r11+36),r3                                 
                                                                      
      if (pipe->Writers ++ == 0)                                      
 800abbc:	59 62 00 14 	sw (r11+20),r2                                 
 800abc0:	44 20 00 ba 	be r1,r0,800aea8 <fifo_open+0x418>             <== ALWAYS TAKEN
        PIPE_WAKEUPREADERS(pipe);                                     
                                                                      
      if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {                 
 800abc4:	29 61 00 10 	lw r1,(r11+16)                                 
 800abc8:	5c 20 ff de 	bne r1,r0,800ab40 <fifo_open+0xb0>             
 800abcc:	29 a2 00 18 	lw r2,(r13+24)                                 
 800abd0:	20 42 00 01 	andi r2,r2,0x1                                 
 800abd4:	5c 41 00 c5 	bne r2,r1,800aee8 <fifo_open+0x458>            
        err = -ENXIO;                                                 
        goto out_error;                                               
      }                                                               
                                                                      
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
 800abd8:	29 6f 00 20 	lw r15,(r11+32)                                
 800abdc:	e0 00 00 06 	bi 800abf4 <fifo_open+0x164>                   
        err = -EINTR;                                                 
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_WRITEWAIT(pipe))                                 
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
 800abe0:	29 61 00 28 	lw r1,(r11+40)                                 
 800abe4:	fb ff ea 6f 	calli 80055a0 <rtems_semaphore_obtain>         
 800abe8:	5c 2c 00 0c 	bne r1,r12,800ac18 <fifo_open+0x188>           <== NEVER TAKEN
            goto out_error;                                           
        } while (prevCounter == pipe->readerCounter);                 
 800abec:	29 61 00 20 	lw r1,(r11+32)                                 
 800abf0:	5c 2f ff d4 	bne r1,r15,800ab40 <fifo_open+0xb0>            <== ALWAYS TAKEN
                                                                      
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
        err = -EINTR;                                                 
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
 800abf4:	29 61 00 28 	lw r1,(r11+40)                                 
 800abf8:	fb ff ea c6 	calli 8005710 <rtems_semaphore_release>        
          if (! PIPE_WRITEWAIT(pipe))                                 
 800abfc:	29 61 00 30 	lw r1,(r11+48)                                 
 800ac00:	34 02 00 00 	mvi r2,0                                       
 800ac04:	f8 00 08 4f 	calli 800cd40 <rtems_barrier_wait>             
 800ac08:	b8 20 60 00 	mv r12,r1                                      
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
 800ac0c:	34 02 00 00 	mvi r2,0                                       
 800ac10:	34 03 00 00 	mvi r3,0                                       
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
        err = -EINTR;                                                 
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_WRITEWAIT(pipe))                                 
 800ac14:	44 20 ff f3 	be r1,r0,800abe0 <fifo_open+0x150>             <== ALWAYS TAKEN
        goto out_error;                                               
      }                                                               
                                                                      
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
        err = -EINTR;                                                 
 800ac18:	34 0c ff fc 	mvi r12,-4                                     <== NOT EXECUTED
                                                                      
  PIPE_UNLOCK(pipe);                                                  
  return 0;                                                           
                                                                      
out_error:                                                            
  pipe_release(pipep, iop);                                           
 800ac1c:	b9 c0 08 00 	mv r1,r14                                      
 800ac20:	b9 a0 10 00 	mv r2,r13                                      
 800ac24:	fb ff ff 4e 	calli 800a95c <pipe_release>                   
  return err;                                                         
 800ac28:	e3 ff ff c9 	bi 800ab4c <fifo_open+0xbc>                    
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
 800ac2c:	29 63 00 20 	lw r3,(r11+32)                                 
      if (pipe->Readers ++ == 0)                                      
 800ac30:	29 61 00 10 	lw r1,(r11+16)                                 
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
 800ac34:	34 63 00 01 	addi r3,r3,1                                   
      if (pipe->Readers ++ == 0)                                      
 800ac38:	34 22 00 01 	addi r2,r1,1                                   
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
 800ac3c:	59 63 00 20 	sw (r11+32),r3                                 
      if (pipe->Readers ++ == 0)                                      
 800ac40:	59 62 00 10 	sw (r11+16),r2                                 
 800ac44:	44 20 00 91 	be r1,r0,800ae88 <fifo_open+0x3f8>             <== ALWAYS TAKEN
        PIPE_WAKEUPWRITERS(pipe);                                     
                                                                      
      if (pipe->Writers == 0) {                                       
 800ac48:	29 61 00 14 	lw r1,(r11+20)                                 
 800ac4c:	5c 20 ff bd 	bne r1,r0,800ab40 <fifo_open+0xb0>             
        /* Not an error */                                            
        if (LIBIO_NODELAY(iop))                                       
 800ac50:	29 a2 00 18 	lw r2,(r13+24)                                 
 800ac54:	20 42 00 01 	andi r2,r2,0x1                                 
 800ac58:	5c 41 ff ba 	bne r2,r1,800ab40 <fifo_open+0xb0>             
          break;                                                      
                                                                      
        prevCounter = pipe->writerCounter;                            
 800ac5c:	29 6f 00 24 	lw r15,(r11+36)                                
 800ac60:	e0 00 00 06 	bi 800ac78 <fifo_open+0x1e8>                   
        /* Wait until a writer opens the pipe */                      
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_READWAIT(pipe))                                  
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
 800ac64:	29 61 00 28 	lw r1,(r11+40)                                 
 800ac68:	fb ff ea 4e 	calli 80055a0 <rtems_semaphore_obtain>         
 800ac6c:	5c 2c ff eb 	bne r1,r12,800ac18 <fifo_open+0x188>           <== NEVER TAKEN
            goto out_error;                                           
        } while (prevCounter == pipe->writerCounter);                 
 800ac70:	29 61 00 24 	lw r1,(r11+36)                                 
 800ac74:	5c 2f ff b3 	bne r1,r15,800ab40 <fifo_open+0xb0>            <== ALWAYS TAKEN
                                                                      
        prevCounter = pipe->writerCounter;                            
        err = -EINTR;                                                 
        /* Wait until a writer opens the pipe */                      
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
 800ac78:	29 61 00 28 	lw r1,(r11+40)                                 
 800ac7c:	fb ff ea a5 	calli 8005710 <rtems_semaphore_release>        
          if (! PIPE_READWAIT(pipe))                                  
 800ac80:	29 61 00 2c 	lw r1,(r11+44)                                 
 800ac84:	34 02 00 00 	mvi r2,0                                       
 800ac88:	f8 00 08 2e 	calli 800cd40 <rtems_barrier_wait>             
 800ac8c:	b8 20 60 00 	mv r12,r1                                      
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
 800ac90:	34 02 00 00 	mvi r2,0                                       
 800ac94:	34 03 00 00 	mvi r3,0                                       
        prevCounter = pipe->writerCounter;                            
        err = -EINTR;                                                 
        /* Wait until a writer opens the pipe */                      
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_READWAIT(pipe))                                  
 800ac98:	44 20 ff f3 	be r1,r0,800ac64 <fifo_open+0x1d4>             <== ALWAYS TAKEN
 800ac9c:	e3 ff ff df 	bi 800ac18 <fifo_open+0x188>                   <== NOT EXECUTED
        } while (prevCounter == pipe->readerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
 800aca0:	29 63 00 20 	lw r3,(r11+32)                                 
      if (pipe->Readers ++ == 0)                                      
 800aca4:	29 61 00 10 	lw r1,(r11+16)                                 
        } while (prevCounter == pipe->readerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
 800aca8:	34 63 00 01 	addi r3,r3,1                                   
      if (pipe->Readers ++ == 0)                                      
 800acac:	34 22 00 01 	addi r2,r1,1                                   
        } while (prevCounter == pipe->readerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
 800acb0:	59 63 00 20 	sw (r11+32),r3                                 
      if (pipe->Readers ++ == 0)                                      
 800acb4:	59 62 00 10 	sw (r11+16),r2                                 
 800acb8:	44 20 00 78 	be r1,r0,800ae98 <fifo_open+0x408>             <== ALWAYS TAKEN
        PIPE_WAKEUPWRITERS(pipe);                                     
      pipe->writerCounter ++;                                         
 800acbc:	29 63 00 24 	lw r3,(r11+36)                                 
      if (pipe->Writers ++ == 0)                                      
 800acc0:	29 61 00 14 	lw r1,(r11+20)                                 
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
      pipe->writerCounter ++;                                         
 800acc4:	34 63 00 01 	addi r3,r3,1                                   
      if (pipe->Writers ++ == 0)                                      
 800acc8:	34 22 00 01 	addi r2,r1,1                                   
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
      pipe->writerCounter ++;                                         
 800accc:	59 63 00 24 	sw (r11+36),r3                                 
      if (pipe->Writers ++ == 0)                                      
 800acd0:	59 62 00 14 	sw (r11+20),r2                                 
 800acd4:	5c 20 ff 9b 	bne r1,r0,800ab40 <fifo_open+0xb0>             <== NEVER TAKEN
        PIPE_WAKEUPREADERS(pipe);                                     
 800acd8:	29 61 00 2c 	lw r1,(r11+44)                                 
 800acdc:	37 82 00 28 	addi r2,sp,40                                  
 800ace0:	f8 00 07 f7 	calli 800ccbc <rtems_barrier_release>          
 800ace4:	e3 ff ff 97 	bi 800ab40 <fifo_open+0xb0>                    
{                                                                     
  static char c = 'a';                                                
  pipe_control_t *pipe;                                               
  int err = -ENOMEM;                                                  
                                                                      
  pipe = malloc(sizeof(pipe_control_t));                              
 800ace8:	34 01 00 34 	mvi r1,52                                      
 800acec:	fb ff e4 8a 	calli 8003f14 <malloc>                         
 800acf0:	b8 20 58 00 	mv r11,r1                                      
 800acf4:	b8 20 88 00 	mv r17,r1                                      
  if (pipe == NULL)                                                   
 800acf8:	44 20 00 88 	be r1,r0,800af18 <fifo_open+0x488>             
    return err;                                                       
  memset(pipe, 0, sizeof(pipe_control_t));                            
 800acfc:	58 20 00 00 	sw (r1+0),r0                                   
 800ad00:	58 20 00 08 	sw (r1+8),r0                                   
 800ad04:	58 20 00 0c 	sw (r1+12),r0                                  
 800ad08:	58 20 00 10 	sw (r1+16),r0                                  
 800ad0c:	58 20 00 14 	sw (r1+20),r0                                  
 800ad10:	58 20 00 18 	sw (r1+24),r0                                  
 800ad14:	58 20 00 1c 	sw (r1+28),r0                                  
 800ad18:	58 20 00 20 	sw (r1+32),r0                                  
 800ad1c:	58 20 00 24 	sw (r1+36),r0                                  
 800ad20:	58 20 00 28 	sw (r1+40),r0                                  
 800ad24:	58 20 00 2c 	sw (r1+44),r0                                  
 800ad28:	58 20 00 30 	sw (r1+48),r0                                  
                                                                      
  pipe->Size = PIPE_BUF;                                              
 800ad2c:	34 01 02 00 	mvi r1,512                                     
 800ad30:	59 61 00 04 	sw (r11+4),r1                                  
  pipe->Buffer = malloc(pipe->Size);                                  
 800ad34:	fb ff e4 78 	calli 8003f14 <malloc>                         
 800ad38:	59 61 00 00 	sw (r11+0),r1                                  
  if (! pipe->Buffer)                                                 
 800ad3c:	44 20 00 75 	be r1,r0,800af10 <fifo_open+0x480>             <== NEVER TAKEN
    goto err_buf;                                                     
                                                                      
  err = -ENOMEM;                                                      
                                                                      
  if (rtems_barrier_create(                                           
        rtems_build_name ('P', 'I', 'r', c),                          
 800ad40:	78 0c 08 02 	mvhi r12,0x802                                 
  if (! pipe->Buffer)                                                 
    goto err_buf;                                                     
                                                                      
  err = -ENOMEM;                                                      
                                                                      
  if (rtems_barrier_create(                                           
 800ad44:	78 05 08 02 	mvhi r5,0x802                                  
 800ad48:	38 a5 2b 1c 	ori r5,r5,0x2b1c                               
        rtems_build_name ('P', 'I', 'r', c),                          
 800ad4c:	39 8c 41 54 	ori r12,r12,0x4154                             
 800ad50:	41 84 00 00 	lbu r4,(r12+0)                                 
  if (! pipe->Buffer)                                                 
    goto err_buf;                                                     
                                                                      
  err = -ENOMEM;                                                      
                                                                      
  if (rtems_barrier_create(                                           
 800ad54:	28 a1 00 00 	lw r1,(r5+0)                                   
 800ad58:	34 02 00 00 	mvi r2,0                                       
 800ad5c:	34 03 00 00 	mvi r3,0                                       
 800ad60:	b8 81 08 00 	or r1,r4,r1                                    
 800ad64:	35 64 00 2c 	addi r4,r11,44                                 
 800ad68:	f8 00 07 5e 	calli 800cae0 <rtems_barrier_create>           
 800ad6c:	b8 20 78 00 	mv r15,r1                                      
 800ad70:	5c 20 00 66 	bne r1,r0,800af08 <fifo_open+0x478>            
        rtems_build_name ('P', 'I', 'r', c),                          
        RTEMS_BARRIER_MANUAL_RELEASE, 0,                              
        &pipe->readBarrier) != RTEMS_SUCCESSFUL)                      
    goto err_rbar;                                                    
  if (rtems_barrier_create(                                           
 800ad74:	78 05 08 02 	mvhi r5,0x802                                  
 800ad78:	38 a5 2b 20 	ori r5,r5,0x2b20                               
        rtems_build_name ('P', 'I', 'w', c),                          
 800ad7c:	41 84 00 00 	lbu r4,(r12+0)                                 
  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(                                           
 800ad80:	28 a1 00 00 	lw r1,(r5+0)                                   
 800ad84:	34 02 00 00 	mvi r2,0                                       
 800ad88:	34 03 00 00 	mvi r3,0                                       
 800ad8c:	b8 81 08 00 	or r1,r4,r1                                    
 800ad90:	35 64 00 30 	addi r4,r11,48                                 
 800ad94:	f8 00 07 53 	calli 800cae0 <rtems_barrier_create>           
 800ad98:	b8 20 80 00 	mv r16,r1                                      
 800ad9c:	5c 2f 00 59 	bne r1,r15,800af00 <fifo_open+0x470>           
        rtems_build_name ('P', 'I', 'w', c),                          
        RTEMS_BARRIER_MANUAL_RELEASE, 0,                              
        &pipe->writeBarrier) != RTEMS_SUCCESSFUL)                     
    goto err_wbar;                                                    
  if (rtems_semaphore_create(                                         
 800ada0:	78 05 08 02 	mvhi r5,0x802                                  
 800ada4:	38 a5 2b 24 	ori r5,r5,0x2b24                               
        rtems_build_name ('P', 'I', 's', c), 1,                       
 800ada8:	41 84 00 00 	lbu r4,(r12+0)                                 
  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(                                         
 800adac:	28 a1 00 00 	lw r1,(r5+0)                                   
 800adb0:	34 02 00 01 	mvi r2,1                                       
 800adb4:	34 03 00 10 	mvi r3,16                                      
 800adb8:	b8 81 08 00 	or r1,r4,r1                                    
 800adbc:	35 65 00 28 	addi r5,r11,40                                 
 800adc0:	34 04 00 00 	mvi r4,0                                       
 800adc4:	fb ff e9 3c 	calli 80052b4 <rtems_semaphore_create>         
 800adc8:	5c 30 00 4c 	bne r1,r16,800aef8 <fifo_open+0x468>           
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Barrier_Control *)                                          
    _Objects_Get( &_Barrier_Information, id, location );              
 800adcc:	29 62 00 2c 	lw r2,(r11+44)                                 
 800add0:	78 0f 08 02 	mvhi r15,0x802                                 
 800add4:	39 ef 51 80 	ori r15,r15,0x5180                             
/* Set barriers to be interruptible by signals. */                    
static void pipe_interruptible(pipe_control_t *pipe)                  
{                                                                     
  Objects_Locations location;                                         
                                                                      
  _Barrier_Get(pipe->readBarrier, &location)->Barrier.Wait_queue.state
 800add8:	37 91 00 24 	addi r17,sp,36                                 
 800addc:	ba 20 18 00 	mv r3,r17                                      
 800ade0:	b9 e0 08 00 	mv r1,r15                                      
 800ade4:	fb ff f0 90 	calli 8007024 <_Objects_Get>                   
    |= STATES_INTERRUPTIBLE_BY_SIGNAL;                                
 800ade8:	28 22 00 4c 	lw r2,(r1+76)                                  
 800adec:	78 10 10 00 	mvhi r16,0x1000                                
 800adf0:	b8 50 10 00 	or r2,r2,r16                                   
 800adf4:	58 22 00 4c 	sw (r1+76),r2                                  
  _Thread_Enable_dispatch();                                          
 800adf8:	fb ff f4 3b 	calli 8007ee4 <_Thread_Enable_dispatch>        
 800adfc:	29 62 00 30 	lw r2,(r11+48)                                 
 800ae00:	ba 20 18 00 	mv r3,r17                                      
 800ae04:	b9 e0 08 00 	mv r1,r15                                      
 800ae08:	fb ff f0 87 	calli 8007024 <_Objects_Get>                   
  _Barrier_Get(pipe->writeBarrier, &location)->Barrier.Wait_queue.state
    |= STATES_INTERRUPTIBLE_BY_SIGNAL;                                
 800ae0c:	28 22 00 4c 	lw r2,(r1+76)                                  
 800ae10:	b8 50 80 00 	or r16,r2,r16                                  
 800ae14:	58 30 00 4c 	sw (r1+76),r16                                 
  _Thread_Enable_dispatch();                                          
 800ae18:	fb ff f4 33 	calli 8007ee4 <_Thread_Enable_dispatch>        
#ifdef RTEMS_POSIX_API                                                
  pipe_interruptible(pipe);                                           
#endif                                                                
                                                                      
  *pipep = pipe;                                                      
  if (c ++ == 'z')                                                    
 800ae1c:	41 81 00 00 	lbu r1,(r12+0)                                 
 800ae20:	34 22 00 01 	addi r2,r1,1                                   
 800ae24:	31 82 00 00 	sb (r12+0),r2                                  
 800ae28:	34 02 00 7a 	mvi r2,122                                     
 800ae2c:	5c 22 ff 30 	bne r1,r2,800aaec <fifo_open+0x5c>             
    c = 'a';                                                          
 800ae30:	34 01 00 61 	mvi r1,97                                      
 800ae34:	31 81 00 00 	sb (r12+0),r1                                  
 800ae38:	e3 ff ff 2d 	bi 800aaec <fifo_open+0x5c>                    
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    err = -EINTR;                                                     
                                                                      
  if (*pipep == NULL) {                                               
    if (err)                                                          
 800ae3c:	5d 82 00 1f 	bne r12,r2,800aeb8 <fifo_open+0x428>           <== NEVER TAKEN
      pipe_free(pipe);                                                
    else                                                              
      *pipep = pipe;                                                  
 800ae40:	59 cb 00 00 	sw (r14+0),r11                                 
  }                                                                   
                                                                      
out:                                                                  
  pipe_unlock();                                                      
 800ae44:	fb ff fe bd 	calli 800a938 <pipe_unlock>                    
 800ae48:	e3 ff ff 35 	bi 800ab1c <fifo_open+0x8c>                    
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
    rtems_libio_lock();                                               
                                                                      
    if (pipe_semaphore == RTEMS_ID_NONE) {                            
      sc = rtems_semaphore_create(                                    
 800ae4c:	78 02 08 02 	mvhi r2,0x802                                  
 800ae50:	38 42 2b 18 	ori r2,r2,0x2b18                               
 800ae54:	28 41 00 00 	lw r1,(r2+0)                                   
 800ae58:	34 03 00 54 	mvi r3,84                                      
 800ae5c:	34 02 00 01 	mvi r2,1                                       
 800ae60:	34 04 00 00 	mvi r4,0                                       
 800ae64:	b9 60 28 00 	mv r5,r11                                      
 800ae68:	fb ff e9 13 	calli 80052b4 <rtems_semaphore_create>         
 800ae6c:	b8 20 80 00 	mv r16,r1                                      
 800ae70:	29 e1 00 00 	lw r1,(r15+0)                                  
)                                                                     
{                                                                     
  pipe_control_t *pipe;                                               
  int err = 0;                                                        
                                                                      
  err = pipe_lock();                                                  
 800ae74:	34 0c ff f4 	mvi r12,-12                                    
 800ae78:	fb ff ea 26 	calli 8005710 <rtems_semaphore_release>        
    }                                                                 
                                                                      
    rtems_libio_unlock();                                             
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
 800ae7c:	5e 00 ff 34 	bne r16,r0,800ab4c <fifo_open+0xbc>            
 800ae80:	29 6c 00 00 	lw r12,(r11+0)                                 
 800ae84:	e3 ff ff 12 	bi 800aacc <fifo_open+0x3c>                    
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
 800ae88:	29 61 00 30 	lw r1,(r11+48)                                 
 800ae8c:	37 82 00 28 	addi r2,sp,40                                  
 800ae90:	f8 00 07 8b 	calli 800ccbc <rtems_barrier_release>          
 800ae94:	e3 ff ff 6d 	bi 800ac48 <fifo_open+0x1b8>                   
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
 800ae98:	29 61 00 30 	lw r1,(r11+48)                                 
 800ae9c:	37 82 00 28 	addi r2,sp,40                                  
 800aea0:	f8 00 07 87 	calli 800ccbc <rtems_barrier_release>          
 800aea4:	e3 ff ff 86 	bi 800acbc <fifo_open+0x22c>                   
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
                                                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
 800aea8:	29 61 00 2c 	lw r1,(r11+44)                                 
 800aeac:	37 82 00 28 	addi r2,sp,40                                  
 800aeb0:	f8 00 07 83 	calli 800ccbc <rtems_barrier_release>          
 800aeb4:	e3 ff ff 44 	bi 800abc4 <fifo_open+0x134>                   
/* Called with pipe_semaphore held. */                                
static inline void pipe_free(                                         
  pipe_control_t *pipe                                                
)                                                                     
{                                                                     
  rtems_barrier_delete(pipe->readBarrier);                            
 800aeb8:	29 61 00 2c 	lw r1,(r11+44)                                 <== NOT EXECUTED
 800aebc:	f8 00 07 4c 	calli 800cbec <rtems_barrier_delete>           <== NOT EXECUTED
  rtems_barrier_delete(pipe->writeBarrier);                           
 800aec0:	29 61 00 30 	lw r1,(r11+48)                                 <== NOT EXECUTED
 800aec4:	f8 00 07 4a 	calli 800cbec <rtems_barrier_delete>           <== NOT EXECUTED
  rtems_semaphore_delete(pipe->Semaphore);                            
 800aec8:	29 61 00 28 	lw r1,(r11+40)                                 <== NOT EXECUTED
 800aecc:	fb ff e9 7e 	calli 80054c4 <rtems_semaphore_delete>         <== NOT EXECUTED
  free(pipe->Buffer);                                                 
 800aed0:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 800aed4:	fb ff e1 9e 	calli 800354c <free>                           <== NOT EXECUTED
  free(pipe);                                                         
 800aed8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800aedc:	fb ff e1 9c 	calli 800354c <free>                           <== NOT EXECUTED
    else                                                              
      *pipep = pipe;                                                  
  }                                                                   
                                                                      
out:                                                                  
  pipe_unlock();                                                      
 800aee0:	fb ff fe 96 	calli 800a938 <pipe_unlock>                    <== NOT EXECUTED
 800aee4:	e3 ff ff 1a 	bi 800ab4c <fifo_open+0xbc>                    <== NOT EXECUTED
                                                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
                                                                      
      if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {                 
	PIPE_UNLOCK(pipe);                                                   
 800aee8:	29 61 00 28 	lw r1,(r11+40)                                 
        err = -ENXIO;                                                 
 800aeec:	34 0c ff fa 	mvi r12,-6                                     
                                                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
                                                                      
      if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {                 
	PIPE_UNLOCK(pipe);                                                   
 800aef0:	fb ff ea 08 	calli 8005710 <rtems_semaphore_release>        
        err = -ENXIO;                                                 
        goto out_error;                                               
 800aef4:	e3 ff ff 4a 	bi 800ac1c <fifo_open+0x18c>                   
  if (c ++ == 'z')                                                    
    c = 'a';                                                          
  return 0;                                                           
                                                                      
err_sem:                                                              
  rtems_barrier_delete(pipe->writeBarrier);                           
 800aef8:	29 61 00 30 	lw r1,(r11+48)                                 
 800aefc:	f8 00 07 3c 	calli 800cbec <rtems_barrier_delete>           
err_wbar:                                                             
  rtems_barrier_delete(pipe->readBarrier);                            
 800af00:	2a 21 00 2c 	lw r1,(r17+44)                                 
 800af04:	f8 00 07 3a 	calli 800cbec <rtems_barrier_delete>           
err_rbar:                                                             
  free(pipe->Buffer);                                                 
 800af08:	2a 21 00 00 	lw r1,(r17+0)                                  
 800af0c:	fb ff e1 90 	calli 800354c <free>                           
err_buf:                                                              
  free(pipe);                                                         
 800af10:	ba 20 08 00 	mv r1,r17                                      
 800af14:	fb ff e1 8e 	calli 800354c <free>                           
)                                                                     
{                                                                     
  pipe_control_t *pipe;                                               
  int err = 0;                                                        
                                                                      
  err = pipe_lock();                                                  
 800af18:	34 0c ff f4 	mvi r12,-12                                    
    else                                                              
      *pipep = pipe;                                                  
  }                                                                   
                                                                      
out:                                                                  
  pipe_unlock();                                                      
 800af1c:	fb ff fe 87 	calli 800a938 <pipe_unlock>                    
 800af20:	e3 ff ff 0b 	bi 800ab4c <fifo_open+0xbc>                    
                                                                      

08002308 <fpathconf>: long fpathconf( int fd, int name ) {
 8002308:	37 9c ff fc 	addi sp,sp,-4                                  
 800230c:	5b 9d 00 04 	sw (sp+4),ra                                   
  long                                    return_value;               
  rtems_libio_t                          *iop;                        
  rtems_filesystem_limits_and_options_t  *the_limits;                 
                                                                      
  rtems_libio_check_fd(fd);                                           
 8002310:	78 03 08 01 	mvhi r3,0x801                                  
 8002314:	38 63 60 10 	ori r3,r3,0x6010                               
 8002318:	28 63 00 00 	lw r3,(r3+0)                                   
 800231c:	54 61 00 06 	bgu r3,r1,8002334 <fpathconf+0x2c>             
  iop = rtems_libio_iop(fd);                                          
  rtems_libio_check_is_open(iop);                                     
 8002320:	f8 00 2f 8c 	calli 800e150 <__errno>                        
 8002324:	34 02 00 09 	mvi r2,9                                       
 8002328:	58 22 00 00 	sw (r1+0),r2                                   
 800232c:	34 01 ff ff 	mvi r1,-1                                      
 8002330:	e0 00 00 1b 	bi 800239c <fpathconf+0x94>                    
  long                                    return_value;               
  rtems_libio_t                          *iop;                        
  rtems_filesystem_limits_and_options_t  *the_limits;                 
                                                                      
  rtems_libio_check_fd(fd);                                           
  iop = rtems_libio_iop(fd);                                          
 8002334:	b4 21 08 00 	add r1,r1,r1                                   
 8002338:	78 03 08 01 	mvhi r3,0x801                                  
 800233c:	b4 21 08 00 	add r1,r1,r1                                   
 8002340:	38 63 67 8c 	ori r3,r3,0x678c                               
 8002344:	b4 21 08 00 	add r1,r1,r1                                   
 8002348:	28 63 00 00 	lw r3,(r3+0)                                   
 800234c:	b4 21 08 00 	add r1,r1,r1                                   
 8002350:	b4 21 08 00 	add r1,r1,r1                                   
 8002354:	b4 21 08 00 	add r1,r1,r1                                   
 8002358:	b4 61 08 00 	add r1,r3,r1                                   
  rtems_libio_check_is_open(iop);                                     
 800235c:	28 23 00 18 	lw r3,(r1+24)                                  
 8002360:	20 64 01 00 	andi r4,r3,0x100                               
 8002364:	44 80 ff ef 	be r4,r0,8002320 <fpathconf+0x18>              <== NEVER TAKEN
  rtems_libio_check_permissions(iop, LIBIO_FLAGS_READ);               
 8002368:	20 63 00 02 	andi r3,r3,0x2                                 
 800236c:	44 60 00 25 	be r3,r0,8002400 <fpathconf+0xf8>              
   *  Now process the information request.                            
   */                                                                 
                                                                      
  the_limits = &iop->pathinfo.mt_entry->pathconf_limits_and_options;  
                                                                      
  switch ( name ) {                                                   
 8002370:	34 03 00 0b 	mvi r3,11                                      
                                                                      
  /*                                                                  
   *  Now process the information request.                            
   */                                                                 
                                                                      
  the_limits = &iop->pathinfo.mt_entry->pathconf_limits_and_options;  
 8002374:	28 21 00 2c 	lw r1,(r1+44)                                  
                                                                      
  switch ( name ) {                                                   
 8002378:	54 43 00 22 	bgu r2,r3,8002400 <fpathconf+0xf8>             
 800237c:	78 03 08 01 	mvhi r3,0x801                                  
 8002380:	b4 42 10 00 	add r2,r2,r2                                   
 8002384:	38 63 52 f8 	ori r3,r3,0x52f8                               
 8002388:	b4 42 10 00 	add r2,r2,r2                                   
 800238c:	b4 62 10 00 	add r2,r3,r2                                   
 8002390:	28 42 00 00 	lw r2,(r2+0)                                   
 8002394:	c0 40 00 00 	b r2                                           
      break;                                                          
    case _PC_ASYNC_IO:                                                
      return_value = the_limits->posix_async_io;                      
      break;                                                          
    case _PC_PRIO_IO:                                                 
      return_value = the_limits->posix_prio_io;                       
 8002398:	28 21 00 5c 	lw r1,(r1+92)                                  
      rtems_set_errno_and_return_minus_one( EINVAL );                 
      break;                                                          
  }                                                                   
                                                                      
  return return_value;                                                
}                                                                     
 800239c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80023a0:	37 9c 00 04 	addi sp,sp,4                                   
 80023a4:	c3 a0 00 00 	ret                                            
      break;                                                          
    case _PC_VDISABLE:                                                
      return_value = the_limits->posix_vdisable;                      
      break;                                                          
    case _PC_ASYNC_IO:                                                
      return_value = the_limits->posix_async_io;                      
 80023a8:	28 21 00 50 	lw r1,(r1+80)                                  
      break;                                                          
 80023ac:	e3 ff ff fc 	bi 800239c <fpathconf+0x94>                    
      break;                                                          
    case _PC_NO_TRUNC:                                                
      return_value = the_limits->posix_no_trunc;                      
      break;                                                          
    case _PC_VDISABLE:                                                
      return_value = the_limits->posix_vdisable;                      
 80023b0:	28 21 00 64 	lw r1,(r1+100)                                 
      break;                                                          
 80023b4:	e3 ff ff fa 	bi 800239c <fpathconf+0x94>                    
      break;                                                          
    case _PC_CHOWN_RESTRICTED:                                        
      return_value = the_limits->posix_chown_restrictions;            
      break;                                                          
    case _PC_NO_TRUNC:                                                
      return_value = the_limits->posix_no_trunc;                      
 80023b8:	28 21 00 58 	lw r1,(r1+88)                                  
      break;                                                          
 80023bc:	e3 ff ff f8 	bi 800239c <fpathconf+0x94>                    
      break;                                                          
    case _PC_PIPE_BUF:                                                
      return_value = the_limits->pipe_buf;                            
      break;                                                          
    case _PC_CHOWN_RESTRICTED:                                        
      return_value = the_limits->posix_chown_restrictions;            
 80023c0:	28 21 00 54 	lw r1,(r1+84)                                  
      break;                                                          
 80023c4:	e3 ff ff f6 	bi 800239c <fpathconf+0x94>                    
      break;                                                          
    case _PC_PATH_MAX:                                                
      return_value = the_limits->path_max;                            
      break;                                                          
    case _PC_PIPE_BUF:                                                
      return_value = the_limits->pipe_buf;                            
 80023c8:	28 21 00 4c 	lw r1,(r1+76)                                  
      break;                                                          
 80023cc:	e3 ff ff f4 	bi 800239c <fpathconf+0x94>                    
      break;                                                          
    case _PC_NAME_MAX:                                                
      return_value = the_limits->name_max;                            
      break;                                                          
    case _PC_PATH_MAX:                                                
      return_value = the_limits->path_max;                            
 80023d0:	28 21 00 48 	lw r1,(r1+72)                                  
      break;                                                          
 80023d4:	e3 ff ff f2 	bi 800239c <fpathconf+0x94>                    
      break;                                                          
    case _PC_MAX_INPUT:                                               
      return_value = the_limits->max_input;                           
      break;                                                          
    case _PC_NAME_MAX:                                                
      return_value = the_limits->name_max;                            
 80023d8:	28 21 00 44 	lw r1,(r1+68)                                  
      break;                                                          
 80023dc:	e3 ff ff f0 	bi 800239c <fpathconf+0x94>                    
      break;                                                          
    case _PC_MAX_CANON:                                               
      return_value = the_limits->max_canon;                           
      break;                                                          
    case _PC_MAX_INPUT:                                               
      return_value = the_limits->max_input;                           
 80023e0:	28 21 00 40 	lw r1,(r1+64)                                  
      break;                                                          
 80023e4:	e3 ff ff ee 	bi 800239c <fpathconf+0x94>                    
  switch ( name ) {                                                   
    case _PC_LINK_MAX:                                                
      return_value = the_limits->link_max;                            
      break;                                                          
    case _PC_MAX_CANON:                                               
      return_value = the_limits->max_canon;                           
 80023e8:	28 21 00 3c 	lw r1,(r1+60)                                  
      break;                                                          
 80023ec:	e3 ff ff ec 	bi 800239c <fpathconf+0x94>                    
                                                                      
  the_limits = &iop->pathinfo.mt_entry->pathconf_limits_and_options;  
                                                                      
  switch ( name ) {                                                   
    case _PC_LINK_MAX:                                                
      return_value = the_limits->link_max;                            
 80023f0:	28 21 00 38 	lw r1,(r1+56)                                  
      break;                                                          
 80023f4:	e3 ff ff ea 	bi 800239c <fpathconf+0x94>                    
      break;                                                          
    case _PC_PRIO_IO:                                                 
      return_value = the_limits->posix_prio_io;                       
      break;                                                          
    case _PC_SYNC_IO:                                                 
      return_value = the_limits->posix_sync_io;                       
 80023f8:	28 21 00 60 	lw r1,(r1+96)                                  
      break;                                                          
 80023fc:	e3 ff ff e8 	bi 800239c <fpathconf+0x94>                    
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8002400:	f8 00 2f 54 	calli 800e150 <__errno>                        
 8002404:	34 02 00 16 	mvi r2,22                                      
 8002408:	58 22 00 00 	sw (r1+0),r2                                   
 800240c:	34 01 ff ff 	mvi r1,-1                                      
 8002410:	e3 ff ff e3 	bi 800239c <fpathconf+0x94>                    
                                                                      

080014a8 <free>: #include <stdlib.h> void free( void *ptr ) {
 80014a8:	37 9c ff f4 	addi sp,sp,-12                                 
 80014ac:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80014b0:	5b 8c 00 08 	sw (sp+8),r12                                  
 80014b4:	5b 9d 00 04 	sw (sp+4),ra                                   
  MSBUMP(free_calls, 1);                                              
 80014b8:	78 03 08 01 	mvhi r3,0x801                                  
 80014bc:	38 63 47 a8 	ori r3,r3,0x47a8                               
 80014c0:	28 62 00 0c 	lw r2,(r3+12)                                  
#include <stdlib.h>                                                   
                                                                      
void free(                                                            
  void *ptr                                                           
)                                                                     
{                                                                     
 80014c4:	b8 20 58 00 	mv r11,r1                                      
  MSBUMP(free_calls, 1);                                              
 80014c8:	34 41 00 01 	addi r1,r2,1                                   
 80014cc:	58 61 00 0c 	sw (r3+12),r1                                  
                                                                      
  if ( !ptr )                                                         
 80014d0:	45 60 00 1a 	be r11,r0,8001538 <free+0x90>                  
    return;                                                           
                                                                      
  /*                                                                  
   *  Do not attempt to free memory if in a critical section or ISR.  
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 80014d4:	78 01 08 01 	mvhi r1,0x801                                  
 80014d8:	38 21 4a 60 	ori r1,r1,0x4a60                               
 80014dc:	28 22 00 00 	lw r2,(r1+0)                                   
 80014e0:	34 01 00 03 	mvi r1,3                                       
 80014e4:	44 41 00 1a 	be r2,r1,800154c <free+0xa4>                   <== ALWAYS TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   *  If configured, update the statistics                            
   */                                                                 
  if ( rtems_malloc_statistics_helpers )                              
 80014e8:	78 01 08 01 	mvhi r1,0x801                                  
 80014ec:	38 21 46 c0 	ori r1,r1,0x46c0                               
 80014f0:	28 21 00 00 	lw r1,(r1+0)                                   
 80014f4:	44 20 00 04 	be r1,r0,8001504 <free+0x5c>                   
    (*rtems_malloc_statistics_helpers->at_free)(ptr);                 
 80014f8:	28 22 00 08 	lw r2,(r1+8)                                   
 80014fc:	b9 60 08 00 	mv r1,r11                                      
 8001500:	d8 40 00 00 	call r2                                        
                                                                      
  if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {            
 8001504:	78 0c 08 01 	mvhi r12,0x801                                 
 8001508:	39 8c 40 4c 	ori r12,r12,0x404c                             
 800150c:	29 81 00 00 	lw r1,(r12+0)                                  
 8001510:	b9 60 10 00 	mv r2,r11                                      
 8001514:	f8 00 0e 6d 	calli 8004ec8 <_Protected_heap_Free>           
 8001518:	5c 20 00 08 	bne r1,r0,8001538 <free+0x90>                  
    printk( "Program heap: free of bad pointer %p -- range %p - %p \n",
      ptr,                                                            
      RTEMS_Malloc_Heap->area_begin,                                  
 800151c:	29 82 00 00 	lw r2,(r12+0)                                  
   */                                                                 
  if ( rtems_malloc_statistics_helpers )                              
    (*rtems_malloc_statistics_helpers->at_free)(ptr);                 
                                                                      
  if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {            
    printk( "Program heap: free of bad pointer %p -- range %p - %p \n",
 8001520:	78 01 08 01 	mvhi r1,0x801                                  
 8001524:	38 21 34 9c 	ori r1,r1,0x349c                               
 8001528:	28 43 00 18 	lw r3,(r2+24)                                  
 800152c:	28 44 00 1c 	lw r4,(r2+28)                                  
 8001530:	b9 60 10 00 	mv r2,r11                                      
 8001534:	f8 00 04 10 	calli 8002574 <printk>                         
      RTEMS_Malloc_Heap->area_begin,                                  
      RTEMS_Malloc_Heap->area_end                                     
    );                                                                
  }                                                                   
                                                                      
}                                                                     
 8001538:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800153c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8001540:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8001544:	37 9c 00 0c 	addi sp,sp,12                                  
 8001548:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  Do not attempt to free memory if in a critical section or ISR.  
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
       !malloc_is_system_state_OK() ) {                               
 800154c:	f8 00 00 6b 	calli 80016f8 <malloc_is_system_state_OK>      
    return;                                                           
                                                                      
  /*                                                                  
   *  Do not attempt to free memory if in a critical section or ISR.  
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 8001550:	5c 20 ff e6 	bne r1,r0,80014e8 <free+0x40>                  
       !malloc_is_system_state_OK() ) {                               
      malloc_deferred_free(ptr);                                      
 8001554:	b9 60 08 00 	mv r1,r11                                      
 8001558:	f8 00 00 88 	calli 8001778 <malloc_deferred_free>           
      return;                                                         
 800155c:	e3 ff ff f7 	bi 8001538 <free+0x90>                         
                                                                      

08002d20 <free_user_env>: * NOTE: this must be called with * thread dispatching disabled! */ static void free_user_env(void *venv) {
 8002d20:	37 9c ff f8 	addi sp,sp,-8                                  
 8002d24:	5b 8b 00 08 	sw (sp+8),r11                                  
 8002d28:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_user_env_t *env = (rtems_user_env_t*) venv ;                  
                                                                      
  if (env != &rtems_global_user_env                                   
 8002d2c:	78 02 08 01 	mvhi r2,0x801                                  
 8002d30:	38 42 57 c0 	ori r2,r2,0x57c0                               
 * NOTE: this must be called with                                     
 *       thread dispatching disabled!                                 
 */                                                                   
static void                                                           
free_user_env(void *venv)                                             
{                                                                     
 8002d34:	b8 20 58 00 	mv r11,r1                                      
  rtems_user_env_t *env = (rtems_user_env_t*) venv ;                  
                                                                      
  if (env != &rtems_global_user_env                                   
 8002d38:	44 22 00 07 	be r1,r2,8002d54 <free_user_env+0x34>          <== NEVER TAKEN
  #ifdef HAVE_USERENV_REFCNT                                          
      && --env->refcnt <= 0                                           
  #endif                                                              
  ) {                                                                 
    rtems_filesystem_freenode( &env->current_directory);              
 8002d3c:	34 21 00 04 	addi r1,r1,4                                   
 8002d40:	fb ff fa cb 	calli 800186c <rtems_filesystem_freenode>      
    rtems_filesystem_freenode( &env->root_directory);                 
 8002d44:	35 61 00 18 	addi r1,r11,24                                 
 8002d48:	fb ff fa c9 	calli 800186c <rtems_filesystem_freenode>      
    free(env);                                                        
 8002d4c:	b9 60 08 00 	mv r1,r11                                      
 8002d50:	fb ff fa cf 	calli 800188c <free>                           
  }                                                                   
}                                                                     
 8002d54:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002d58:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8002d5c:	37 9c 00 08 	addi sp,sp,8                                   
 8002d60:	c3 a0 00 00 	ret                                            
                                                                      

08014068 <getdents>: int getdents( int dd_fd, char *dd_buf, int dd_len ) {
 8014068:	37 9c ff dc 	addi sp,sp,-36                                 
 801406c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8014070:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8014074:	5b 8d 00 08 	sw (sp+8),r13                                  
 8014078:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_filesystem_location_info_t  loc;                              
                                                                      
  /*                                                                  
   *  Get the file control block structure associated with the file descriptor
   */                                                                 
  iop = rtems_libio_iop( dd_fd );                                     
 801407c:	78 04 08 01 	mvhi r4,0x801                                  
 8014080:	38 84 70 10 	ori r4,r4,0x7010                               
 8014084:	28 84 00 00 	lw r4,(r4+0)                                   
int getdents(                                                         
  int   dd_fd,                                                        
  char *dd_buf,                                                       
  int   dd_len                                                        
)                                                                     
{                                                                     
 8014088:	b8 40 68 00 	mv r13,r2                                      
 801408c:	b8 60 60 00 	mv r12,r3                                      
  rtems_filesystem_location_info_t  loc;                              
                                                                      
  /*                                                                  
   *  Get the file control block structure associated with the file descriptor
   */                                                                 
  iop = rtems_libio_iop( dd_fd );                                     
 8014090:	34 0b 00 00 	mvi r11,0                                      
 8014094:	50 24 00 0b 	bgeu r1,r4,80140c0 <getdents+0x58>             <== NEVER TAKEN
 8014098:	b4 21 08 00 	add r1,r1,r1                                   
 801409c:	78 04 08 01 	mvhi r4,0x801                                  
 80140a0:	b4 21 08 00 	add r1,r1,r1                                   
 80140a4:	38 84 78 a8 	ori r4,r4,0x78a8                               
 80140a8:	b4 21 08 00 	add r1,r1,r1                                   
 80140ac:	b4 21 08 00 	add r1,r1,r1                                   
 80140b0:	28 8b 00 00 	lw r11,(r4+0)                                  
 80140b4:	b4 21 08 00 	add r1,r1,r1                                   
 80140b8:	b4 21 08 00 	add r1,r1,r1                                   
 80140bc:	b5 61 58 00 	add r11,r11,r1                                 
                                                                      
  /*                                                                  
   *  Make sure we are working on a directory                         
   */                                                                 
  loc = iop->pathinfo;                                                
 80140c0:	29 61 00 28 	lw r1,(r11+40)                                 
 80140c4:	29 66 00 1c 	lw r6,(r11+28)                                 
 80140c8:	29 65 00 20 	lw r5,(r11+32)                                 
 80140cc:	29 63 00 24 	lw r3,(r11+36)                                 
 80140d0:	29 62 00 2c 	lw r2,(r11+44)                                 
  if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
 80140d4:	28 24 00 10 	lw r4,(r1+16)                                  
  iop = rtems_libio_iop( dd_fd );                                     
                                                                      
  /*                                                                  
   *  Make sure we are working on a directory                         
   */                                                                 
  loc = iop->pathinfo;                                                
 80140d8:	5b 81 00 20 	sw (sp+32),r1                                  
 80140dc:	5b 86 00 14 	sw (sp+20),r6                                  
 80140e0:	5b 85 00 18 	sw (sp+24),r5                                  
 80140e4:	5b 83 00 1c 	sw (sp+28),r3                                  
 80140e8:	5b 82 00 24 	sw (sp+36),r2                                  
  if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
 80140ec:	37 81 00 14 	addi r1,sp,20                                  
 80140f0:	d8 80 00 00 	call r4                                        
 80140f4:	34 04 00 01 	mvi r4,1                                       
 80140f8:	5c 24 00 0d 	bne r1,r4,801412c <getdents+0xc4>              
                                                                      
  /*                                                                  
   *  Return the number of bytes that were actually transfered as a result
   *  of the read attempt.                                            
   */                                                                 
  return (*iop->pathinfo.handlers->read_h)( iop, dd_buf, dd_len  );   
 80140fc:	29 63 00 24 	lw r3,(r11+36)                                 
 8014100:	b9 60 08 00 	mv r1,r11                                      
 8014104:	b9 a0 10 00 	mv r2,r13                                      
 8014108:	28 64 00 08 	lw r4,(r3+8)                                   
 801410c:	b9 80 18 00 	mv r3,r12                                      
 8014110:	d8 80 00 00 	call r4                                        
}                                                                     
 8014114:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8014118:	2b 8b 00 10 	lw r11,(sp+16)                                 
 801411c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8014120:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8014124:	37 9c 00 24 	addi sp,sp,36                                  
 8014128:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Make sure we are working on a directory                         
   */                                                                 
  loc = iop->pathinfo;                                                
  if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
    rtems_set_errno_and_return_minus_one( ENOTDIR );                  
 801412c:	fb ff e6 c3 	calli 800dc38 <__errno>                        
 8014130:	34 02 00 14 	mvi r2,20                                      
 8014134:	58 22 00 00 	sw (r1+0),r2                                   
 8014138:	34 01 ff ff 	mvi r1,-1                                      
 801413c:	e3 ff ff f6 	bi 8014114 <getdents+0xac>                     
                                                                      

0800bda8 <imfs_dir_lseek>: rtems_off64_t imfs_dir_lseek( rtems_libio_t *iop, rtems_off64_t offset, int whence ) {
 800bda8:	37 9c ff f8 	addi sp,sp,-8                                  
 800bdac:	5b 8b 00 08 	sw (sp+8),r11                                  
 800bdb0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800bdb4:	b8 20 58 00 	mv r11,r1                                      
  switch( whence ) {                                                  
 800bdb8:	34 01 00 01 	mvi r1,1                                       
 800bdbc:	54 81 00 37 	bgu r4,r1,800be98 <imfs_dir_lseek+0xf0>        <== NEVER TAKEN
     case SEEK_SET:   /* absolute move from the start of the file */  
     case SEEK_CUR:   /* relative move */                             
        iop->offset = (iop->offset/sizeof(struct dirent)) *           
 800bdc0:	29 61 00 10 	lw r1,(r11+16)                                 
 800bdc4:	29 62 00 14 	lw r2,(r11+20)                                 
 800bdc8:	34 03 00 00 	mvi r3,0                                       
 800bdcc:	34 04 01 0c 	mvi r4,268                                     
 800bdd0:	f8 00 13 0e 	calli 8010a08 <__divdi3>                       
 800bdd4:	b8 20 18 00 	mv r3,r1                                       
 800bdd8:	b4 42 08 00 	add r1,r2,r2                                   
 800bddc:	f4 41 30 00 	cmpgu r6,r2,r1                                 
 800bde0:	b4 21 20 00 	add r4,r1,r1                                   
 800bde4:	b4 63 28 00 	add r5,r3,r3                                   
 800bde8:	b4 c5 28 00 	add r5,r6,r5                                   
 800bdec:	f4 24 30 00 	cmpgu r6,r1,r4                                 
 800bdf0:	b4 a5 28 00 	add r5,r5,r5                                   
 800bdf4:	b4 84 08 00 	add r1,r4,r4                                   
 800bdf8:	f4 81 20 00 	cmpgu r4,r4,r1                                 
 800bdfc:	b4 c5 30 00 	add r6,r6,r5                                   
 800be00:	b4 c6 30 00 	add r6,r6,r6                                   
 800be04:	b4 21 28 00 	add r5,r1,r1                                   
 800be08:	b4 86 38 00 	add r7,r4,r6                                   
 800be0c:	f4 25 30 00 	cmpgu r6,r1,r5                                 
 800be10:	b4 a2 20 00 	add r4,r5,r2                                   
 800be14:	b4 e7 38 00 	add r7,r7,r7                                   
 800be18:	f4 a4 28 00 	cmpgu r5,r5,r4                                 
 800be1c:	b4 c7 30 00 	add r6,r6,r7                                   
 800be20:	b4 84 08 00 	add r1,r4,r4                                   
 800be24:	b4 c3 30 00 	add r6,r6,r3                                   
 800be28:	b4 a6 30 00 	add r6,r5,r6                                   
 800be2c:	f4 81 20 00 	cmpgu r4,r4,r1                                 
 800be30:	b4 21 28 00 	add r5,r1,r1                                   
 800be34:	b4 c6 30 00 	add r6,r6,r6                                   
 800be38:	f4 25 08 00 	cmpgu r1,r1,r5                                 
 800be3c:	b4 86 20 00 	add r4,r4,r6                                   
 800be40:	c8 a2 10 00 	sub r2,r5,r2                                   
 800be44:	b4 84 20 00 	add r4,r4,r4                                   
 800be48:	b4 24 20 00 	add r4,r1,r4                                   
 800be4c:	f4 45 28 00 	cmpgu r5,r2,r5                                 
 800be50:	b4 42 08 00 	add r1,r2,r2                                   
 800be54:	c8 83 18 00 	sub r3,r4,r3                                   
 800be58:	f4 41 10 00 	cmpgu r2,r2,r1                                 
 800be5c:	c8 65 18 00 	sub r3,r3,r5                                   
 800be60:	b4 21 20 00 	add r4,r1,r1                                   
 800be64:	b4 63 18 00 	add r3,r3,r3                                   
 800be68:	f4 24 08 00 	cmpgu r1,r1,r4                                 
 800be6c:	b4 43 10 00 	add r2,r2,r3                                   
 800be70:	b4 42 10 00 	add r2,r2,r2                                   
 800be74:	b4 22 10 00 	add r2,r1,r2                                   
 800be78:	59 62 00 10 	sw (r11+16),r2                                 
 800be7c:	59 64 00 14 	sw (r11+20),r4                                 
      default:                                                        
        rtems_set_errno_and_return_minus_one( EINVAL );               
        break;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
 800be80:	34 01 00 00 	mvi r1,0                                       
 800be84:	34 02 00 00 	mvi r2,0                                       
}                                                                     
 800be88:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800be8c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800be90:	37 9c 00 08 	addi sp,sp,8                                   
 800be94:	c3 a0 00 00 	ret                                            
        break;                                                        
                                                                      
     case SEEK_END:   /* Movement past the end of the directory via lseek */
                      /* is not a permitted operation                     */
      default:                                                        
        rtems_set_errno_and_return_minus_one( EINVAL );               
 800be98:	f8 00 03 b9 	calli 800cd7c <__errno>                        
 800be9c:	34 02 00 16 	mvi r2,22                                      
 800bea0:	58 22 00 00 	sw (r1+0),r2                                   
 800bea4:	34 01 ff ff 	mvi r1,-1                                      
 800bea8:	34 02 ff ff 	mvi r2,-1                                      
 800beac:	e3 ff ff f7 	bi 800be88 <imfs_dir_lseek+0xe0>               
                                                                      

0800bc18 <imfs_dir_open>: IMFS_jnode_t *the_jnode; /* Is the node a directory ? */ the_jnode = (IMFS_jnode_t *) iop->pathinfo.node_access; if ( the_jnode->type != IMFS_DIRECTORY )
 800bc18:	28 23 00 1c 	lw r3,(r1+28)                                  
     return -1;      /* It wasn't a directory --> return error */     
 800bc1c:	34 02 ff ff 	mvi r2,-1                                      
  IMFS_jnode_t      *the_jnode;                                       
                                                                      
  /* Is the node a directory ? */                                     
  the_jnode = (IMFS_jnode_t *) iop->pathinfo.node_access;             
                                                                      
  if ( the_jnode->type != IMFS_DIRECTORY )                            
 800bc20:	28 64 00 4c 	lw r4,(r3+76)                                  
 800bc24:	34 03 00 01 	mvi r3,1                                       
 800bc28:	5c 83 00 04 	bne r4,r3,800bc38 <imfs_dir_open+0x20>         <== NEVER TAKEN
     return -1;      /* It wasn't a directory --> return error */     
                                                                      
  iop->offset = 0;                                                    
 800bc2c:	58 20 00 10 	sw (r1+16),r0                                  
 800bc30:	58 20 00 14 	sw (r1+20),r0                                  
  return 0;                                                           
 800bc34:	34 02 00 00 	mvi r2,0                                       
}                                                                     
 800bc38:	b8 40 08 00 	mv r1,r2                                       
 800bc3c:	c3 a0 00 00 	ret                                            
                                                                      

0800bc40 <imfs_dir_read>: ssize_t imfs_dir_read( rtems_libio_t *iop, void *buffer, size_t count ) {
 800bc40:	37 9c fe c0 	addi sp,sp,-320                                
 800bc44:	5b 8b 00 34 	sw (sp+52),r11                                 
 800bc48:	5b 8c 00 30 	sw (sp+48),r12                                 
 800bc4c:	5b 8d 00 2c 	sw (sp+44),r13                                 
 800bc50:	5b 8e 00 28 	sw (sp+40),r14                                 
 800bc54:	5b 8f 00 24 	sw (sp+36),r15                                 
 800bc58:	5b 90 00 20 	sw (sp+32),r16                                 
 800bc5c:	5b 91 00 1c 	sw (sp+28),r17                                 
 800bc60:	5b 92 00 18 	sw (sp+24),r18                                 
 800bc64:	5b 93 00 14 	sw (sp+20),r19                                 
 800bc68:	5b 94 00 10 	sw (sp+16),r20                                 
 800bc6c:	5b 95 00 0c 	sw (sp+12),r21                                 
 800bc70:	5b 96 00 08 	sw (sp+8),r22                                  
 800bc74:	5b 9d 00 04 	sw (sp+4),ra                                   
   int                  current_entry;                                
   int                  first_entry;                                  
   int                  last_entry;                                   
   struct dirent        tmp_dirent;                                   
                                                                      
   the_jnode = (IMFS_jnode_t *)iop->pathinfo.node_access;             
 800bc78:	28 31 00 1c 	lw r17,(r1+28)                                 
ssize_t imfs_dir_read(                                                
  rtems_libio_t  *iop,                                                
  void           *buffer,                                             
  size_t          count                                               
)                                                                     
{                                                                     
 800bc7c:	b8 20 68 00 	mv r13,r1                                      
 800bc80:	b8 40 98 00 	mv r19,r2                                      
                                                                      
  IMFS_create_orphan( the_jnode );                                    
  IMFS_check_node_remove( the_jnode );                                
                                                                      
  return 0;                                                           
}                                                                     
 800bc84:	2a 2c 00 50 	lw r12,(r17+80)                                
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800bc88:	36 31 00 54 	addi r17,r17,84                                
                                                                      
   the_jnode = (IMFS_jnode_t *)iop->pathinfo.node_access;             
   the_chain = &the_jnode->info.directory.Entries;                    
                                                                      
   if ( rtems_chain_is_empty( the_chain ) )                           
      return 0;                                                       
 800bc8c:	34 12 00 00 	mvi r18,0                                      
   struct dirent        tmp_dirent;                                   
                                                                      
   the_jnode = (IMFS_jnode_t *)iop->pathinfo.node_access;             
   the_chain = &the_jnode->info.directory.Entries;                    
                                                                      
   if ( rtems_chain_is_empty( the_chain ) )                           
 800bc90:	45 91 00 34 	be r12,r17,800bd60 <imfs_dir_read+0x120>       
                                                                      
   bytes_transferred = 0;                                             
   first_entry = iop->offset;                                         
   /* protect against using sizes that are not exact multiples of the */
   /* -dirent- size. These could result in unexpected results          */
   last_entry = first_entry + (count/sizeof(struct dirent)) * sizeof(struct dirent);
 800bc94:	b8 60 08 00 	mv r1,r3                                       
 800bc98:	34 02 01 0c 	mvi r2,268                                     
 800bc9c:	f8 00 1a 00 	calli 801249c <__udivsi3>                      
 800bca0:	b4 21 20 00 	add r4,r1,r1                                   
 800bca4:	b4 84 20 00 	add r4,r4,r4                                   
 800bca8:	b4 84 18 00 	add r3,r4,r4                                   
 800bcac:	b4 63 18 00 	add r3,r3,r3                                   
 800bcb0:	b4 63 18 00 	add r3,r3,r3                                   
 800bcb4:	b4 63 18 00 	add r3,r3,r3                                   
 800bcb8:	b4 83 78 00 	add r15,r4,r3                                  
                                                                      
   /* Move to the first of the desired directory entries */           
   the_node = rtems_chain_first( the_chain );                         
                                                                      
   bytes_transferred = 0;                                             
   first_entry = iop->offset;                                         
 800bcbc:	29 b0 00 14 	lw r16,(r13+20)                                
   /* protect against using sizes that are not exact multiples of the */
   /* -dirent- size. These could result in unexpected results          */
   last_entry = first_entry + (count/sizeof(struct dirent)) * sizeof(struct dirent);
 800bcc0:	c9 e1 78 00 	sub r15,r15,r1                                 
 800bcc4:	b5 ef 78 00 	add r15,r15,r15                                
 800bcc8:	b5 ef 78 00 	add r15,r15,r15                                
 800bccc:	b5 f0 78 00 	add r15,r15,r16                                
                                                                      
   /* The directory was not empty so try to move to the desired entry in chain*/
   for (                                                              
 800bcd0:	34 0b 00 00 	mvi r11,0                                      
 800bcd4:	34 0e 00 00 	mvi r14,0                                      
      }                                                               
                                                                      
      if( current_entry >= first_entry ) {                            
         /* Move the entry to the return buffer */                    
         tmp_dirent.d_off = current_entry;                            
         tmp_dirent.d_reclen = sizeof( struct dirent );               
 800bcd8:	34 16 01 0c 	mvi r22,268                                    
         the_jnode = (IMFS_jnode_t *) the_node;                       
         tmp_dirent.d_ino = the_jnode->st_ino;                        
         tmp_dirent.d_namlen = strlen( the_jnode->name );             
         strcpy( tmp_dirent.d_name, the_jnode->name );                
 800bcdc:	37 95 00 38 	addi r21,sp,56                                 
 800bce0:	37 94 00 44 	addi r20,sp,68                                 
   /* protect against using sizes that are not exact multiples of the */
   /* -dirent- size. These could result in unexpected results          */
   last_entry = first_entry + (count/sizeof(struct dirent)) * sizeof(struct dirent);
                                                                      
   /* The directory was not empty so try to move to the desired entry in chain*/
   for (                                                              
 800bce4:	49 e0 00 03 	bg r15,r0,800bcf0 <imfs_dir_read+0xb0>         <== ALWAYS TAKEN
 800bce8:	e0 00 00 1e 	bi 800bd60 <imfs_dir_read+0x120>               <== NOT EXECUTED
      current_entry = 0;                                              
      current_entry < last_entry;                                     
      current_entry = current_entry + sizeof(struct dirent) ){        
                                                                      
      if ( rtems_chain_is_tail( the_chain, the_node ) ){              
 800bcec:	45 91 00 1c 	be r12,r17,800bd5c <imfs_dir_read+0x11c>       
         /* entry in the read */                                      
         return bytes_transferred;  /* Indicate that there are no more */
                                    /* entries to return */           
      }                                                               
                                                                      
      if( current_entry >= first_entry ) {                            
 800bcf0:	4a 0b 00 18 	bg r16,r11,800bd50 <imfs_dir_read+0x110>       
         /* Move the entry to the return buffer */                    
         tmp_dirent.d_off = current_entry;                            
         tmp_dirent.d_reclen = sizeof( struct dirent );               
         the_jnode = (IMFS_jnode_t *) the_node;                       
         tmp_dirent.d_ino = the_jnode->st_ino;                        
 800bcf4:	29 82 00 38 	lw r2,(r12+56)                                 
         tmp_dirent.d_namlen = strlen( the_jnode->name );             
 800bcf8:	35 92 00 0c 	addi r18,r12,12                                
 800bcfc:	ba 40 08 00 	mv r1,r18                                      
      if( current_entry >= first_entry ) {                            
         /* Move the entry to the return buffer */                    
         tmp_dirent.d_off = current_entry;                            
         tmp_dirent.d_reclen = sizeof( struct dirent );               
         the_jnode = (IMFS_jnode_t *) the_node;                       
         tmp_dirent.d_ino = the_jnode->st_ino;                        
 800bd00:	5b 82 00 38 	sw (sp+56),r2                                  
                                    /* entries to return */           
      }                                                               
                                                                      
      if( current_entry >= first_entry ) {                            
         /* Move the entry to the return buffer */                    
         tmp_dirent.d_off = current_entry;                            
 800bd04:	5b 8b 00 3c 	sw (sp+60),r11                                 
         tmp_dirent.d_reclen = sizeof( struct dirent );               
 800bd08:	0f 96 00 40 	sh (sp+64),r22                                 
         the_jnode = (IMFS_jnode_t *) the_node;                       
         tmp_dirent.d_ino = the_jnode->st_ino;                        
         tmp_dirent.d_namlen = strlen( the_jnode->name );             
 800bd0c:	f8 00 08 bd 	calli 800e000 <strlen>                         
 800bd10:	0f 81 00 42 	sh (sp+66),r1                                  
         strcpy( tmp_dirent.d_name, the_jnode->name );                
 800bd14:	ba 40 10 00 	mv r2,r18                                      
 800bd18:	ba 80 08 00 	mv r1,r20                                      
 800bd1c:	f8 00 08 72 	calli 800dee4 <strcpy>                         
         memcpy(                                                      
 800bd20:	b6 6e 08 00 	add r1,r19,r14                                 
 800bd24:	34 03 01 0c 	mvi r3,268                                     
 800bd28:	ba a0 10 00 	mv r2,r21                                      
 800bd2c:	f8 00 06 ca 	calli 800d854 <memcpy>                         
            buffer + bytes_transferred,                               
            (void *)&tmp_dirent,                                      
            sizeof( struct dirent )                                   
         );                                                           
         iop->offset = iop->offset + sizeof(struct dirent);           
 800bd30:	29 a4 00 14 	lw r4,(r13+20)                                 
 800bd34:	29 a1 00 10 	lw r1,(r13+16)                                 
         bytes_transferred = bytes_transferred + sizeof( struct dirent );
 800bd38:	35 ce 01 0c 	addi r14,r14,268                               
         memcpy(                                                      
            buffer + bytes_transferred,                               
            (void *)&tmp_dirent,                                      
            sizeof( struct dirent )                                   
         );                                                           
         iop->offset = iop->offset + sizeof(struct dirent);           
 800bd3c:	34 83 01 0c 	addi r3,r4,268                                 
 800bd40:	f4 83 20 00 	cmpgu r4,r4,r3                                 
 800bd44:	59 a3 00 14 	sw (r13+20),r3                                 
 800bd48:	b4 81 18 00 	add r3,r4,r1                                   
 800bd4c:	59 a3 00 10 	sw (r13+16),r3                                 
 *  to the end of the 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.                                        
 */                                                                   
                                                                      
ssize_t imfs_dir_read(                                                
 800bd50:	35 6b 01 0c 	addi r11,r11,268                               
         );                                                           
         iop->offset = iop->offset + sizeof(struct dirent);           
         bytes_transferred = bytes_transferred + sizeof( struct dirent );
      }                                                               
                                                                      
      the_node = the_node->next;                                      
 800bd54:	29 8c 00 00 	lw r12,(r12+0)                                 
   /* protect against using sizes that are not exact multiples of the */
   /* -dirent- size. These could result in unexpected results          */
   last_entry = first_entry + (count/sizeof(struct dirent)) * sizeof(struct dirent);
                                                                      
   /* The directory was not empty so try to move to the desired entry in chain*/
   for (                                                              
 800bd58:	49 eb ff e5 	bg r15,r11,800bcec <imfs_dir_read+0xac>        
      current_entry = 0;                                              
      current_entry < last_entry;                                     
      current_entry = current_entry + sizeof(struct dirent) ){        
                                                                      
      if ( rtems_chain_is_tail( the_chain, the_node ) ){              
 800bd5c:	b9 c0 90 00 	mv r18,r14                                     
      the_node = the_node->next;                                      
   }                                                                  
                                                                      
   /* Success */                                                      
   return bytes_transferred;                                          
}                                                                     
 800bd60:	ba 40 08 00 	mv r1,r18                                      
 800bd64:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bd68:	2b 8b 00 34 	lw r11,(sp+52)                                 
 800bd6c:	2b 8c 00 30 	lw r12,(sp+48)                                 
 800bd70:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 800bd74:	2b 8e 00 28 	lw r14,(sp+40)                                 
 800bd78:	2b 8f 00 24 	lw r15,(sp+36)                                 
 800bd7c:	2b 90 00 20 	lw r16,(sp+32)                                 
 800bd80:	2b 91 00 1c 	lw r17,(sp+28)                                 
 800bd84:	2b 92 00 18 	lw r18,(sp+24)                                 
 800bd88:	2b 93 00 14 	lw r19,(sp+20)                                 
 800bd8c:	2b 94 00 10 	lw r20,(sp+16)                                 
 800bd90:	2b 95 00 0c 	lw r21,(sp+12)                                 
 800bd94:	2b 96 00 08 	lw r22,(sp+8)                                  
 800bd98:	37 9c 01 40 	addi sp,sp,320                                 
 800bd9c:	c3 a0 00 00 	ret                                            
                                                                      

0800bf38 <imfs_dir_rmnod>: int imfs_dir_rmnod( rtems_filesystem_location_info_t *parent_pathloc, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN */ ) {
 800bf38:	37 9c ff f8 	addi sp,sp,-8                                  
 800bf3c:	5b 8b 00 08 	sw (sp+8),r11                                  
 800bf40:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_jnode_t *the_jnode;                                            
                                                                      
  the_jnode = (IMFS_jnode_t *) pathloc->node_access;                  
 800bf44:	28 4b 00 00 	lw r11,(r2+0)                                  
                                                                      
  /*                                                                  
   * You cannot remove a node that still has children                 
   */                                                                 
                                                                      
  if ( ! rtems_chain_is_empty( &the_jnode->info.directory.Entries ) ) 
 800bf48:	29 63 00 50 	lw r3,(r11+80)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800bf4c:	35 61 00 54 	addi r1,r11,84                                 
 800bf50:	5c 61 00 17 	bne r3,r1,800bfac <imfs_dir_rmnod+0x74>        
                                                                      
  /*                                                                  
   * You cannot remove the file system root node.                     
   */                                                                 
                                                                      
  if ( pathloc->mt_entry->mt_fs_root.node_access == pathloc->node_access )
 800bf54:	28 41 00 10 	lw r1,(r2+16)                                  
 800bf58:	28 21 00 1c 	lw r1,(r1+28)                                  
 800bf5c:	45 61 00 0c 	be r11,r1,800bf8c <imfs_dir_rmnod+0x54>        
                                                                      
  /*                                                                  
   * You cannot remove a mountpoint.                                  
   */                                                                 
                                                                      
   if ( the_jnode->info.directory.mt_fs != NULL )                     
 800bf60:	29 61 00 5c 	lw r1,(r11+92)                                 
 800bf64:	5c 20 00 0a 	bne r1,r0,800bf8c <imfs_dir_rmnod+0x54>        <== NEVER TAKEN
     rtems_set_errno_and_return_minus_one( EBUSY );                   
                                                                      
  IMFS_create_orphan( the_jnode );                                    
 800bf68:	b9 60 08 00 	mv r1,r11                                      
 800bf6c:	fb ff f1 08 	calli 800838c <IMFS_create_orphan>             
  IMFS_check_node_remove( the_jnode );                                
 800bf70:	b9 60 08 00 	mv r1,r11                                      
 800bf74:	fb ff f1 1a 	calli 80083dc <IMFS_check_node_remove>         
                                                                      
  return 0;                                                           
 800bf78:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 800bf7c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bf80:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800bf84:	37 9c 00 08 	addi sp,sp,8                                   
 800bf88:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * You cannot remove a mountpoint.                                  
   */                                                                 
                                                                      
   if ( the_jnode->info.directory.mt_fs != NULL )                     
     rtems_set_errno_and_return_minus_one( EBUSY );                   
 800bf8c:	f8 00 03 7c 	calli 800cd7c <__errno>                        
 800bf90:	34 02 00 10 	mvi r2,16                                      
 800bf94:	58 22 00 00 	sw (r1+0),r2                                   
 800bf98:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
  IMFS_create_orphan( the_jnode );                                    
  IMFS_check_node_remove( the_jnode );                                
                                                                      
  return 0;                                                           
}                                                                     
 800bf9c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bfa0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800bfa4:	37 9c 00 08 	addi sp,sp,8                                   
 800bfa8:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * You cannot remove a node that still has children                 
   */                                                                 
                                                                      
  if ( ! rtems_chain_is_empty( &the_jnode->info.directory.Entries ) ) 
     rtems_set_errno_and_return_minus_one( ENOTEMPTY );               
 800bfac:	f8 00 03 74 	calli 800cd7c <__errno>                        
 800bfb0:	34 02 00 5a 	mvi r2,90                                      
 800bfb4:	58 22 00 00 	sw (r1+0),r2                                   
 800bfb8:	34 01 ff ff 	mvi r1,-1                                      
 800bfbc:	e3 ff ff f0 	bi 800bf7c <imfs_dir_rmnod+0x44>               
                                                                      

08002210 <init_etc_passwd_group>: /* * Initialize useable but dummy databases */ void init_etc_passwd_group(void) {
 8002210:	37 9c ff ec 	addi sp,sp,-20                                 
 8002214:	5b 8b 00 14 	sw (sp+20),r11                                 
 8002218:	5b 8c 00 10 	sw (sp+16),r12                                 
 800221c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8002220:	5b 8e 00 08 	sw (sp+8),r14                                  
 8002224:	5b 9d 00 04 	sw (sp+4),ra                                   
  FILE *fp;                                                           
  static char etc_passwd_initted = 0;                                 
                                                                      
  if (etc_passwd_initted)                                             
 8002228:	78 03 08 01 	mvhi r3,0x801                                  
 800222c:	38 63 68 e8 	ori r3,r3,0x68e8                               
 8002230:	40 6d 00 00 	lbu r13,(r3+0)                                 
 8002234:	45 a0 00 08 	be r13,r0,8002254 <init_etc_passwd_group+0x44> 
    fprintf( fp, "root:x:0:root\n"                                    
                 "rtems:x:1:rtems\n"                                  
                 "tty:x:2:tty\n" );                                   
    fclose(fp);                                                       
  }                                                                   
}                                                                     
 8002238:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800223c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8002240:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8002244:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8002248:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800224c:	37 9c 00 14 	addi sp,sp,20                                  
 8002250:	c3 a0 00 00 	ret                                            
  FILE *fp;                                                           
  static char etc_passwd_initted = 0;                                 
                                                                      
  if (etc_passwd_initted)                                             
    return;                                                           
  etc_passwd_initted = 1;                                             
 8002254:	34 04 00 01 	mvi r4,1                                       
  mkdir("/etc", 0777);                                                
 8002258:	78 01 08 01 	mvhi r1,0x801                                  
 800225c:	34 02 01 ff 	mvi r2,511                                     
  FILE *fp;                                                           
  static char etc_passwd_initted = 0;                                 
                                                                      
  if (etc_passwd_initted)                                             
    return;                                                           
  etc_passwd_initted = 1;                                             
 8002260:	30 64 00 00 	sb (r3+0),r4                                   
  mkdir("/etc", 0777);                                                
 8002264:	38 21 52 88 	ori r1,r1,0x5288                               
                                                                      
  /*                                                                  
   *  Initialize /etc/passwd                                          
   */                                                                 
  if ((fp = fopen("/etc/passwd", "r")) != NULL) {                     
 8002268:	78 0c 08 01 	mvhi r12,0x801                                 
 800226c:	78 0b 08 01 	mvhi r11,0x801                                 
  static char etc_passwd_initted = 0;                                 
                                                                      
  if (etc_passwd_initted)                                             
    return;                                                           
  etc_passwd_initted = 1;                                             
  mkdir("/etc", 0777);                                                
 8002270:	f8 00 02 b5 	calli 8002d44 <mkdir>                          
                                                                      
  /*                                                                  
   *  Initialize /etc/passwd                                          
   */                                                                 
  if ((fp = fopen("/etc/passwd", "r")) != NULL) {                     
 8002274:	39 8c 52 90 	ori r12,r12,0x5290                             
 8002278:	39 6b 52 9c 	ori r11,r11,0x529c                             
 800227c:	b9 80 08 00 	mv r1,r12                                      
 8002280:	b9 60 10 00 	mv r2,r11                                      
 8002284:	f8 00 31 e2 	calli 800ea0c <fopen>                          
 8002288:	b8 20 70 00 	mv r14,r1                                      
 800228c:	44 2d 00 20 	be r1,r13,800230c <init_etc_passwd_group+0xfc> 
  }                                                                   
  else if ((fp = fopen("/etc/passwd", "w")) != NULL) {                
    fprintf(fp, "root:*:0:0:root::/:/bin/sh\n"                        
                 "rtems:*:1:1:RTEMS Application::/:/bin/sh\n"         
                 "tty:!:2:2:tty owner::/:/bin/false\n" );             
    fclose(fp);                                                       
 8002290:	f8 00 2f b0 	calli 800e150 <fclose>                         
  }                                                                   
                                                                      
  /*                                                                  
   *  Initialize /etc/group                                           
   */                                                                 
  if ((fp = fopen("/etc/group", "r")) != NULL) {                      
 8002294:	78 0c 08 01 	mvhi r12,0x801                                 
 8002298:	39 8c 53 0c 	ori r12,r12,0x530c                             
 800229c:	b9 60 10 00 	mv r2,r11                                      
 80022a0:	b9 80 08 00 	mv r1,r12                                      
 80022a4:	f8 00 31 da 	calli 800ea0c <fopen>                          
 80022a8:	b8 20 58 00 	mv r11,r1                                      
 80022ac:	44 20 00 09 	be r1,r0,80022d0 <init_etc_passwd_group+0xc0>  
  }                                                                   
  else if ((fp = fopen("/etc/group", "w")) != NULL) {                 
    fprintf( fp, "root:x:0:root\n"                                    
                 "rtems:x:1:rtems\n"                                  
                 "tty:x:2:tty\n" );                                   
    fclose(fp);                                                       
 80022b0:	f8 00 2f a8 	calli 800e150 <fclose>                         
  }                                                                   
}                                                                     
 80022b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80022b8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80022bc:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80022c0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80022c4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80022c8:	37 9c 00 14 	addi sp,sp,20                                  
 80022cc:	c3 a0 00 00 	ret                                            
   *  Initialize /etc/group                                           
   */                                                                 
  if ((fp = fopen("/etc/group", "r")) != NULL) {                      
    fclose(fp);                                                       
  }                                                                   
  else if ((fp = fopen("/etc/group", "w")) != NULL) {                 
 80022d0:	78 02 08 01 	mvhi r2,0x801                                  
 80022d4:	b9 80 08 00 	mv r1,r12                                      
 80022d8:	38 42 52 a0 	ori r2,r2,0x52a0                               
 80022dc:	f8 00 31 cc 	calli 800ea0c <fopen>                          
 80022e0:	b8 20 60 00 	mv r12,r1                                      
 80022e4:	44 2b ff d5 	be r1,r11,8002238 <init_etc_passwd_group+0x28> <== NEVER TAKEN
    fprintf( fp, "root:x:0:root\n"                                    
 80022e8:	78 01 08 01 	mvhi r1,0x801                                  
 80022ec:	34 02 00 01 	mvi r2,1                                       
 80022f0:	34 03 00 2a 	mvi r3,42                                      
 80022f4:	b9 80 20 00 	mv r4,r12                                      
 80022f8:	38 21 53 18 	ori r1,r1,0x5318                               
 80022fc:	f8 00 33 ad 	calli 800f1b0 <fwrite>                         
                 "rtems:x:1:rtems\n"                                  
                 "tty:x:2:tty\n" );                                   
    fclose(fp);                                                       
 8002300:	b9 80 08 00 	mv r1,r12                                      
 8002304:	f8 00 2f 93 	calli 800e150 <fclose>                         
 8002308:	e3 ff ff eb 	bi 80022b4 <init_etc_passwd_group+0xa4>        
   *  Initialize /etc/passwd                                          
   */                                                                 
  if ((fp = fopen("/etc/passwd", "r")) != NULL) {                     
    fclose(fp);                                                       
  }                                                                   
  else if ((fp = fopen("/etc/passwd", "w")) != NULL) {                
 800230c:	78 02 08 01 	mvhi r2,0x801                                  
 8002310:	b9 80 08 00 	mv r1,r12                                      
 8002314:	38 42 52 a0 	ori r2,r2,0x52a0                               
 8002318:	f8 00 31 bd 	calli 800ea0c <fopen>                          
 800231c:	b8 20 60 00 	mv r12,r1                                      
 8002320:	44 2e ff dd 	be r1,r14,8002294 <init_etc_passwd_group+0x84> <== NEVER TAKEN
    fprintf(fp, "root:*:0:0:root::/:/bin/sh\n"                        
 8002324:	78 01 08 01 	mvhi r1,0x801                                  
 8002328:	38 21 52 a4 	ori r1,r1,0x52a4                               
 800232c:	34 02 00 01 	mvi r2,1                                       
 8002330:	34 03 00 66 	mvi r3,102                                     
 8002334:	b9 80 20 00 	mv r4,r12                                      
 8002338:	f8 00 33 9e 	calli 800f1b0 <fwrite>                         
                 "rtems:*:1:1:RTEMS Application::/:/bin/sh\n"         
                 "tty:!:2:2:tty owner::/:/bin/false\n" );             
    fclose(fp);                                                       
 800233c:	b9 80 08 00 	mv r1,r12                                      
 8002340:	e3 ff ff d4 	bi 8002290 <init_etc_passwd_group+0x80>        
                                                                      

080046dc <iproc>: /* * Process a single input character */ static int iproc (unsigned char c, struct rtems_termios_tty *tty) {
 80046dc:	37 9c ff f4 	addi sp,sp,-12                                 
 80046e0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80046e4:	5b 8c 00 08 	sw (sp+8),r12                                  
 80046e8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80046ec:	b8 40 60 00 	mv r12,r2                                      
  if (tty->termios.c_iflag & ISTRIP)                                  
 80046f0:	28 42 00 30 	lw r2,(r2+48)                                  
/*                                                                    
 * Process a single input character                                   
 */                                                                   
static int                                                            
iproc (unsigned char c, struct rtems_termios_tty *tty)                
{                                                                     
 80046f4:	b8 20 58 00 	mv r11,r1                                      
  if (tty->termios.c_iflag & ISTRIP)                                  
 80046f8:	20 41 00 20 	andi r1,r2,0x20                                
 80046fc:	44 20 00 02 	be r1,r0,8004704 <iproc+0x28>                  <== ALWAYS TAKEN
    c &= 0x7f;                                                        
 8004700:	21 6b 00 7f 	andi r11,r11,0x7f                              <== NOT EXECUTED
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
 8004704:	20 41 02 00 	andi r1,r2,0x200                               
 8004708:	44 20 00 0b 	be r1,r0,8004734 <iproc+0x58>                  
    c = tolower (c);                                                  
 800470c:	78 01 08 02 	mvhi r1,0x802                                  
 8004710:	38 21 62 58 	ori r1,r1,0x6258                               
 8004714:	28 23 00 00 	lw r3,(r1+0)                                   
 8004718:	b9 60 08 00 	mv r1,r11                                      
 800471c:	b4 6b 58 00 	add r11,r3,r11                                 
 8004720:	41 64 00 01 	lbu r4,(r11+1)                                 
 8004724:	34 03 00 01 	mvi r3,1                                       
 8004728:	20 84 00 03 	andi r4,r4,0x3                                 
 800472c:	44 83 00 40 	be r4,r3,800482c <iproc+0x150>                 
 8004730:	20 2b 00 ff 	andi r11,r1,0xff                               
                                                                      
  if (c == '\r') {                                                    
 8004734:	34 01 00 0d 	mvi r1,13                                      
 8004738:	45 61 00 19 	be r11,r1,800479c <iproc+0xc0>                 
    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)) {         
 800473c:	34 01 00 0a 	mvi r1,10                                      
 8004740:	45 61 00 37 	be r11,r1,800481c <iproc+0x140>                
    c = '\r';                                                         
  }                                                                   
                                                                      
  if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {               
 8004744:	5d 60 00 1c 	bne r11,r0,80047b4 <iproc+0xd8>                <== ALWAYS TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
 8004748:	78 01 08 02 	mvhi r1,0x802                                  
 800474c:	38 21 61 8c 	ori r1,r1,0x618c                               
 8004750:	28 23 00 00 	lw r3,(r1+0)                                   
 8004754:	29 82 00 20 	lw r2,(r12+32)                                 
    if (tty->termios.c_lflag & ECHO)                                  
      echo (c, tty);                                                  
    tty->cbuf[tty->ccount++] = c;                                     
  }                                                                   
  return 0;                                                           
 8004758:	34 01 00 00 	mvi r1,0                                       
  }                                                                   
                                                                      
  /*                                                                  
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
 800475c:	34 63 ff ff 	addi r3,r3,-1                                  
 8004760:	4c 43 00 0a 	bge r2,r3,8004788 <iproc+0xac>                 <== NEVER TAKEN
    if (tty->termios.c_lflag & ECHO)                                  
 8004764:	29 81 00 3c 	lw r1,(r12+60)                                 
 8004768:	20 21 00 08 	andi r1,r1,0x8                                 
 800476c:	5c 20 00 32 	bne r1,r0,8004834 <iproc+0x158>                <== ALWAYS TAKEN
      echo (c, tty);                                                  
    tty->cbuf[tty->ccount++] = c;                                     
 8004770:	29 84 00 1c 	lw r4,(r12+28)                                 
 8004774:	34 43 00 01 	addi r3,r2,1                                   
  }                                                                   
  return 0;                                                           
 8004778:	34 01 00 00 	mvi r1,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;                                     
 800477c:	b4 82 10 00 	add r2,r4,r2                                   
 8004780:	30 4b 00 00 	sb (r2+0),r11                                  
 8004784:	59 83 00 20 	sw (r12+32),r3                                 
  }                                                                   
  return 0;                                                           
}                                                                     
 8004788:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800478c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004790:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004794:	37 9c 00 0c 	addi sp,sp,12                                  
 8004798:	c3 a0 00 00 	ret                                            
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
    c = tolower (c);                                                  
                                                                      
  if (c == '\r') {                                                    
    if (tty->termios.c_iflag & IGNCR)                                 
 800479c:	20 43 00 80 	andi r3,r2,0x80                                
      return 0;                                                       
 80047a0:	34 01 00 00 	mvi r1,0                                       
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
    c = tolower (c);                                                  
                                                                      
  if (c == '\r') {                                                    
    if (tty->termios.c_iflag & IGNCR)                                 
 80047a4:	5c 60 ff f9 	bne r3,r0,8004788 <iproc+0xac>                 <== NEVER TAKEN
      return 0;                                                       
    if (tty->termios.c_iflag & ICRNL)                                 
 80047a8:	20 42 01 00 	andi r2,r2,0x100                               
 80047ac:	44 43 00 02 	be r2,r3,80047b4 <iproc+0xd8>                  <== NEVER TAKEN
      c = '\n';                                                       
 80047b0:	34 0b 00 0a 	mvi r11,10                                     
  } else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {         
    c = '\r';                                                         
  }                                                                   
                                                                      
  if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {               
 80047b4:	29 82 00 3c 	lw r2,(r12+60)                                 
 80047b8:	20 41 00 02 	andi r1,r2,0x2                                 
 80047bc:	44 20 ff e3 	be r1,r0,8004748 <iproc+0x6c>                  
    if (c == tty->termios.c_cc[VERASE]) {                             
 80047c0:	41 81 00 43 	lbu r1,(r12+67)                                
 80047c4:	44 2b 00 37 	be r1,r11,80048a0 <iproc+0x1c4>                
      erase (tty, 0);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VKILL]) {                         
 80047c8:	41 81 00 44 	lbu r1,(r12+68)                                
 80047cc:	44 2b 00 23 	be r1,r11,8004858 <iproc+0x17c>                
      erase (tty, 1);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VEOF]) {                          
 80047d0:	41 83 00 45 	lbu r3,(r12+69)                                
      return 1;                                                       
 80047d4:	34 01 00 01 	mvi r1,1                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VKILL]) {                         
      erase (tty, 1);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VEOF]) {                          
 80047d8:	44 6b ff ec 	be r3,r11,8004788 <iproc+0xac>                 <== NEVER TAKEN
      return 1;                                                       
    } else if (c == '\n') {                                           
 80047dc:	34 01 00 0a 	mvi r1,10                                      
 80047e0:	45 61 00 23 	be r11,r1,800486c <iproc+0x190>                
      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]) ||                      
 80047e4:	41 81 00 4c 	lbu r1,(r12+76)                                
 80047e8:	44 2b 00 03 	be r1,r11,80047f4 <iproc+0x118>                <== NEVER TAKEN
 80047ec:	41 81 00 51 	lbu r1,(r12+81)                                
 80047f0:	5c 2b ff d6 	bne r1,r11,8004748 <iproc+0x6c>                <== ALWAYS TAKEN
               (c == tty->termios.c_cc[VEOL2])) {                     
      if (tty->termios.c_lflag & ECHO)                                
 80047f4:	20 42 00 08 	andi r2,r2,0x8                                 <== NOT EXECUTED
 80047f8:	5c 40 00 14 	bne r2,r0,8004848 <iproc+0x16c>                <== NOT EXECUTED
        echo (c, tty);                                                
      tty->cbuf[tty->ccount++] = c;                                   
 80047fc:	29 83 00 20 	lw r3,(r12+32)                                 <== NOT EXECUTED
 8004800:	29 84 00 1c 	lw r4,(r12+28)                                 <== NOT EXECUTED
      return 1;                                                       
 8004804:	34 01 00 01 	mvi r1,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;                                   
 8004808:	34 62 00 01 	addi r2,r3,1                                   <== NOT EXECUTED
 800480c:	b4 83 18 00 	add r3,r4,r3                                   <== NOT EXECUTED
 8004810:	30 6b 00 00 	sb (r3+0),r11                                  <== NOT EXECUTED
 8004814:	59 82 00 20 	sw (r12+32),r2                                 <== NOT EXECUTED
      return 1;                                                       
 8004818:	e3 ff ff dc 	bi 8004788 <iproc+0xac>                        <== NOT EXECUTED
  if (c == '\r') {                                                    
    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)) {         
 800481c:	20 42 00 40 	andi r2,r2,0x40                                
 8004820:	44 40 ff e5 	be r2,r0,80047b4 <iproc+0xd8>                  <== ALWAYS TAKEN
    c = '\r';                                                         
 8004824:	34 0b 00 0d 	mvi r11,13                                     <== NOT EXECUTED
 8004828:	e3 ff ff e3 	bi 80047b4 <iproc+0xd8>                        <== NOT EXECUTED
{                                                                     
  if (tty->termios.c_iflag & ISTRIP)                                  
    c &= 0x7f;                                                        
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
    c = tolower (c);                                                  
 800482c:	34 21 00 20 	addi r1,r1,32                                  
 8004830:	e3 ff ff c0 	bi 8004730 <iproc+0x54>                        
  /*                                                                  
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
    if (tty->termios.c_lflag & ECHO)                                  
      echo (c, tty);                                                  
 8004834:	b9 80 10 00 	mv r2,r12                                      
 8004838:	b9 60 08 00 	mv r1,r11                                      
 800483c:	fb ff fe f7 	calli 8004418 <echo>                           
 8004840:	29 82 00 20 	lw r2,(r12+32)                                 
 8004844:	e3 ff ff cb 	bi 8004770 <iproc+0x94>                        
      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);                                                
 8004848:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800484c:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8004850:	fb ff fe f2 	calli 8004418 <echo>                           <== NOT EXECUTED
 8004854:	e3 ff ff ea 	bi 80047fc <iproc+0x120>                       <== 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);                                                 
 8004858:	b9 80 08 00 	mv r1,r12                                      
 800485c:	34 02 00 01 	mvi r2,1                                       
 8004860:	fb ff ff 16 	calli 80044b8 <erase>                          
      return 0;                                                       
 8004864:	34 01 00 00 	mvi r1,0                                       
 8004868:	e3 ff ff c8 	bi 8004788 <iproc+0xac>                        
    }                                                                 
    else if (c == tty->termios.c_cc[VEOF]) {                          
      return 1;                                                       
    } else if (c == '\n') {                                           
      if (tty->termios.c_lflag & (ECHO | ECHONL))                     
 800486c:	20 42 00 48 	andi r2,r2,0x48                                
 8004870:	44 40 00 03 	be r2,r0,800487c <iproc+0x1a0>                 <== NEVER TAKEN
        echo (c, tty);                                                
 8004874:	b9 80 10 00 	mv r2,r12                                      
 8004878:	fb ff fe e8 	calli 8004418 <echo>                           
      tty->cbuf[tty->ccount++] = c;                                   
 800487c:	29 82 00 20 	lw r2,(r12+32)                                 
 8004880:	29 83 00 1c 	lw r3,(r12+28)                                 
 8004884:	34 41 00 01 	addi r1,r2,1                                   
 8004888:	b4 62 10 00 	add r2,r3,r2                                   
 800488c:	34 03 00 0a 	mvi r3,10                                      
 8004890:	30 43 00 00 	sb (r2+0),r3                                   
 8004894:	59 81 00 20 	sw (r12+32),r1                                 
      return 1;                                                       
 8004898:	34 01 00 01 	mvi r1,1                                       
 800489c:	e3 ff ff bb 	bi 8004788 <iproc+0xac>                        
    c = '\r';                                                         
  }                                                                   
                                                                      
  if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {               
    if (c == tty->termios.c_cc[VERASE]) {                             
      erase (tty, 0);                                                 
 80048a0:	b9 80 08 00 	mv r1,r12                                      
 80048a4:	34 02 00 00 	mvi r2,0                                       
 80048a8:	fb ff ff 04 	calli 80044b8 <erase>                          
      return 0;                                                       
 80048ac:	34 01 00 00 	mvi r1,0                                       
 80048b0:	e3 ff ff b6 	bi 8004788 <iproc+0xac>                        
                                                                      

08026a60 <killinfo>: int killinfo( pid_t pid, int sig, const union sigval *value ) {
 8026a60:	37 9c ff d8 	addi sp,sp,-40                                 
 8026a64:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8026a68:	5b 8c 00 18 	sw (sp+24),r12                                 
 8026a6c:	5b 8d 00 14 	sw (sp+20),r13                                 
 8026a70:	5b 8e 00 10 	sw (sp+16),r14                                 
 8026a74:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8026a78:	5b 90 00 08 	sw (sp+8),r16                                  
 8026a7c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8026a80:	b8 20 58 00 	mv r11,r1                                      
 8026a84:	b8 40 60 00 	mv r12,r2                                      
 8026a88:	b8 60 70 00 	mv r14,r3                                      
  POSIX_signals_Siginfo_node  *psiginfo;                              
                                                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
  if ( pid != getpid() )                                              
 8026a8c:	fb ff fe e3 	calli 8026618 <getpid>                         
 8026a90:	5c 2b 00 a5 	bne r1,r11,8026d24 <killinfo+0x2c4>            
    rtems_set_errno_and_return_minus_one( ESRCH );                    
                                                                      
  /*                                                                  
   *  Validate the signal passed.                                     
   */                                                                 
  if ( !sig )                                                         
 8026a94:	45 80 00 04 	be r12,r0,8026aa4 <killinfo+0x44>              
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 8026a98:	35 82 ff ff 	addi r2,r12,-1                                 
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
 8026a9c:	34 01 00 1f 	mvi r1,31                                      
 8026aa0:	50 22 00 0e 	bgeu r1,r2,8026ad8 <killinfo+0x78>             
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8026aa4:	fb ff b4 cf 	calli 8013de0 <__errno>                        
 8026aa8:	34 02 00 16 	mvi r2,22                                      
 8026aac:	58 22 00 00 	sw (r1+0),r2                                   
 8026ab0:	34 01 ff ff 	mvi r1,-1                                      
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 8026ab4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8026ab8:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8026abc:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8026ac0:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8026ac4:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8026ac8:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8026acc:	2b 90 00 08 	lw r16,(sp+8)                                  
 8026ad0:	37 9c 00 28 	addi sp,sp,40                                  
 8026ad4:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  /*                                                                  
   *  If the signal is being ignored, then we are out of here.        
   */                                                                 
  if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN )          
 8026ad8:	b5 8c 80 00 	add r16,r12,r12                                
 8026adc:	b6 0c 08 00 	add r1,r16,r12                                 
 8026ae0:	78 0d 08 02 	mvhi r13,0x802                                 
 8026ae4:	b4 21 08 00 	add r1,r1,r1                                   
 8026ae8:	39 ad af 78 	ori r13,r13,0xaf78                             
 8026aec:	b4 21 08 00 	add r1,r1,r1                                   
 8026af0:	b5 a1 08 00 	add r1,r13,r1                                  
 8026af4:	28 23 00 08 	lw r3,(r1+8)                                   
 8026af8:	34 0f 00 01 	mvi r15,1                                      
    return 0;                                                         
 8026afc:	34 01 00 00 	mvi r1,0                                       
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  /*                                                                  
   *  If the signal is being ignored, then we are out of here.        
   */                                                                 
  if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN )          
 8026b00:	44 6f ff ed 	be r3,r15,8026ab4 <killinfo+0x54>              
  /*                                                                  
   *  P1003.1c/Draft 10, p. 33 says that certain signals should always
   *  be directed to the executing thread such as those caused by hardware
   *  faults.                                                         
   */                                                                 
  if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) )      
 8026b04:	65 83 00 04 	cmpei r3,r12,4                                 
 8026b08:	65 81 00 08 	cmpei r1,r12,8                                 
 8026b0c:	b8 61 08 00 	or r1,r3,r1                                    
 8026b10:	5c 20 00 3f 	bne r1,r0,8026c0c <killinfo+0x1ac>             
 8026b14:	34 01 00 0b 	mvi r1,11                                      
 8026b18:	45 81 00 3d 	be r12,r1,8026c0c <killinfo+0x1ac>             
                                                                      
static inline sigset_t signo_to_mask(                                 
  uint32_t sig                                                        
)                                                                     
{                                                                     
  return 1u << (sig - 1);                                             
 8026b1c:	34 01 00 01 	mvi r1,1                                       
 8026b20:	fb ff 6d 92 	calli 8002168 <__ashlsi3>                      
                                                                      
  /*                                                                  
   *  Build up a siginfo structure                                    
   */                                                                 
  siginfo = &siginfo_struct;                                          
  siginfo->si_signo = sig;                                            
 8026b24:	5b 8c 00 20 	sw (sp+32),r12                                 
  siginfo->si_code = SI_USER;                                         
 8026b28:	5b 8f 00 24 	sw (sp+36),r15                                 
 8026b2c:	b8 20 58 00 	mv r11,r1                                      
  if ( !value ) {                                                     
 8026b30:	45 c0 00 3b 	be r14,r0,8026c1c <killinfo+0x1bc>             
    siginfo->si_value.sival_int = 0;                                  
  } else {                                                            
    siginfo->si_value = *value;                                       
 8026b34:	29 c1 00 00 	lw r1,(r14+0)                                  
 8026b38:	5b 81 00 28 	sw (sp+40),r1                                  
 8026b3c:	78 01 08 02 	mvhi r1,0x802                                  
 8026b40:	38 21 aa 80 	ori r1,r1,0xaa80                               
 8026b44:	28 22 00 00 	lw r2,(r1+0)                                   
 8026b48:	34 42 00 01 	addi r2,r2,1                                   
 8026b4c:	58 22 00 00 	sw (r1+0),r2                                   
                                                                      
  /*                                                                  
   *  Is the currently executing thread interested?  If so then it will
   *  get it an execute it as soon as the dispatcher executes.        
   */                                                                 
  the_thread = _Thread_Executing;                                     
 8026b50:	78 01 08 02 	mvhi r1,0x802                                  
 8026b54:	38 21 af 2c 	ori r1,r1,0xaf2c                               
 8026b58:	28 21 00 0c 	lw r1,(r1+12)                                  
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
  if ( _POSIX_signals_Is_interested( api, mask ) ) {                  
 8026b5c:	28 22 01 20 	lw r2,(r1+288)                                 
 8026b60:	28 42 00 d0 	lw r2,(r2+208)                                 
 8026b64:	a4 40 10 00 	not r2,r2                                      
 8026b68:	a1 62 10 00 	and r2,r11,r2                                  
 8026b6c:	5c 40 00 18 	bne r2,r0,8026bcc <killinfo+0x16c>             
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 8026b70:	78 01 08 02 	mvhi r1,0x802                                  
 8026b74:	38 21 b1 04 	ori r1,r1,0xb104                               
 8026b78:	28 23 00 00 	lw r3,(r1+0)                                   
                                                                      
  /* XXX violation of visibility -- need to define thread queue support */
                                                                      
  the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;                 
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
 8026b7c:	78 04 08 02 	mvhi r4,0x802                                  
 8026b80:	38 84 b1 08 	ori r4,r4,0xb108                               
 8026b84:	44 64 00 28 	be r3,r4,8026c24 <killinfo+0x1c4>              
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 8026b88:	28 62 00 30 	lw r2,(r3+48)                                  
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
                                                                      
    the_thread = (Thread_Control *)the_node;                          
 8026b8c:	b8 60 08 00 	mv r1,r3                                       
    api = the_thread->API_Extensions[ THREAD_API_POSIX ];             
 8026b90:	28 65 01 20 	lw r5,(r3+288)                                 
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 8026b94:	a1 62 10 00 	and r2,r11,r2                                  
 8026b98:	44 40 00 09 	be r2,r0,8026bbc <killinfo+0x15c>              
 8026b9c:	e0 00 00 0c 	bi 8026bcc <killinfo+0x16c>                    
                                                                      
  the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;                 
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
 8026ba0:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
  /* XXX violation of visibility -- need to define thread queue support */
                                                                      
  the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;                 
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
 8026ba4:	44 64 00 20 	be r3,r4,8026c24 <killinfo+0x1c4>              <== ALWAYS TAKEN
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 8026ba8:	28 62 00 30 	lw r2,(r3+48)                                  <== NOT EXECUTED
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
                                                                      
    the_thread = (Thread_Control *)the_node;                          
    api = the_thread->API_Extensions[ THREAD_API_POSIX ];             
 8026bac:	28 65 01 20 	lw r5,(r3+288)                                 <== NOT EXECUTED
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
                                                                      
    the_thread = (Thread_Control *)the_node;                          
 8026bb0:	b8 60 08 00 	mv r1,r3                                       <== NOT EXECUTED
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 8026bb4:	a1 62 10 00 	and r2,r11,r2                                  <== NOT EXECUTED
 8026bb8:	5c 40 00 05 	bne r2,r0,8026bcc <killinfo+0x16c>             <== NOT EXECUTED
                                                                      
    /*                                                                
     * Is this thread is blocked waiting for another signal but has   
     * not blocked this one?                                          
     */                                                               
    if (~api->signals_blocked & mask)                                 
 8026bbc:	28 a5 00 d0 	lw r5,(r5+208)                                 
 8026bc0:	a4 a0 28 00 	not r5,r5                                      
 8026bc4:	a1 65 28 00 	and r5,r11,r5                                  
 8026bc8:	44 a2 ff f6 	be r5,r2,8026ba0 <killinfo+0x140>              
                                                                      
  /*                                                                  
   *  Returns true if the signal was synchronously given to a thread  
   *  blocked waiting for the signal.                                 
   */                                                                 
  if ( _POSIX_signals_Unblock_thread( the_thread, sig, siginfo ) ) {  
 8026bcc:	b9 80 10 00 	mv r2,r12                                      
 8026bd0:	37 83 00 20 	addi r3,sp,32                                  
 8026bd4:	f8 00 00 6a 	calli 8026d7c <_POSIX_signals_Unblock_thread>  
 8026bd8:	5c 20 00 0a 	bne r1,r0,8026c00 <killinfo+0x1a0>             
                                                                      
  /*                                                                  
   *  We may have woken up a thread but we definitely need to post the
   *  signal to the process wide information set.                     
   */                                                                 
  _POSIX_signals_Set_process_signals( mask );                         
 8026bdc:	b9 60 08 00 	mv r1,r11                                      
 8026be0:	f8 00 00 5c 	calli 8026d50 <_POSIX_signals_Set_process_signals>
                                                                      
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
 8026be4:	b6 0c 60 00 	add r12,r16,r12                                
 8026be8:	b5 8c 08 00 	add r1,r12,r12                                 
 8026bec:	b4 21 08 00 	add r1,r1,r1                                   
 8026bf0:	b5 a1 68 00 	add r13,r13,r1                                 
 8026bf4:	29 a2 00 00 	lw r2,(r13+0)                                  
 8026bf8:	34 01 00 02 	mvi r1,2                                       
 8026bfc:	44 41 00 38 	be r2,r1,8026cdc <killinfo+0x27c>              
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
 8026c00:	fb ff 97 f3 	calli 800cbcc <_Thread_Enable_dispatch>        
  return 0;                                                           
 8026c04:	34 01 00 00 	mvi r1,0                                       
 8026c08:	e3 ff ff ab 	bi 8026ab4 <killinfo+0x54>                     
   *  P1003.1c/Draft 10, p. 33 says that certain signals should always
   *  be directed to the executing thread such as those caused by hardware
   *  faults.                                                         
   */                                                                 
  if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) )      
      return pthread_kill( pthread_self(), sig );                     
 8026c0c:	f8 00 01 08 	calli 802702c <pthread_self>                   
 8026c10:	b9 80 10 00 	mv r2,r12                                      
 8026c14:	f8 00 00 bd 	calli 8026f08 <pthread_kill>                   
 8026c18:	e3 ff ff a7 	bi 8026ab4 <killinfo+0x54>                     
   */                                                                 
  siginfo = &siginfo_struct;                                          
  siginfo->si_signo = sig;                                            
  siginfo->si_code = SI_USER;                                         
  if ( !value ) {                                                     
    siginfo->si_value.sival_int = 0;                                  
 8026c1c:	5b 80 00 28 	sw (sp+40),r0                                  
 8026c20:	e3 ff ff c7 	bi 8026b3c <killinfo+0xdc>                     
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
 8026c24:	78 01 08 02 	mvhi r1,0x802                                  
 8026c28:	38 21 a0 f0 	ori r1,r1,0xa0f0                               
 8026c2c:	40 26 00 00 	lbu r6,(r1+0)                                  
 */                                                                   
                                                                      
#define _POSIX_signals_Is_interested( _api, _mask ) \                 
  ( ~(_api)->signals_blocked & (_mask) )                              
                                                                      
int killinfo(                                                         
 8026c30:	78 01 08 02 	mvhi r1,0x802                                  
 8026c34:	38 21 aa 1c 	ori r1,r1,0xaa1c                               
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
 8026c38:	78 08 08 02 	mvhi r8,0x802                                  
 */                                                                   
                                                                      
#define _POSIX_signals_Is_interested( _api, _mask ) \                 
  ( ~(_api)->signals_blocked & (_mask) )                              
                                                                      
int killinfo(                                                         
 8026c3c:	34 2a 00 10 	addi r10,r1,16                                 
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
 8026c40:	34 c6 00 01 	addi r6,r6,1                                   
 8026c44:	39 08 aa 24 	ori r8,r8,0xaa24                               
   *                                                                  
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
 8026c48:	34 01 00 00 	mvi r1,0                                       
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_interruptible_by_signal (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_INTERRUPTIBLE_BY_SIGNAL);              
 8026c4c:	78 0f 10 00 	mvhi r15,0x1000                                
  for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
                                                                      
    /*                                                                
     *  This can occur when no one is interested and an API is not configured.
     */                                                               
    if ( !_Objects_Information_table[ the_api ] )                     
 8026c50:	29 02 00 00 	lw r2,(r8+0)                                   
 8026c54:	44 40 00 1e 	be r2,r0,8026ccc <killinfo+0x26c>              <== NEVER TAKEN
      continue;                                                       
                                                                      
    the_info = _Objects_Information_table[ the_api ][ 1 ];            
 8026c58:	28 42 00 04 	lw r2,(r2+4)                                   
       */                                                             
      if ( !the_info )                                                
        continue;                                                     
    #endif                                                            
                                                                      
    maximum = the_info->maximum;                                      
 8026c5c:	2c 47 00 10 	lhu r7,(r2+16)                                 
    object_table = the_info->local_table;                             
 8026c60:	28 44 00 1c 	lw r4,(r2+28)                                  
                                                                      
    for ( index = 1 ; index <= maximum ; index++ ) {                  
 8026c64:	44 e0 00 1a 	be r7,r0,8026ccc <killinfo+0x26c>              
 8026c68:	34 03 00 01 	mvi r3,1                                       
      the_thread = (Thread_Control *) object_table[ index ];          
 8026c6c:	28 82 00 04 	lw r2,(r4+4)                                   
                                                                      
      if ( !the_thread )                                              
 8026c70:	44 40 00 14 	be r2,r0,8026cc0 <killinfo+0x260>              
                                                                      
      /*                                                              
       *  If this thread is of lower priority than the interested thread,
       *  go on to the next thread.                                   
       */                                                             
      if ( the_thread->current_priority > interested_priority )       
 8026c74:	28 45 00 14 	lw r5,(r2+20)                                  
 8026c78:	54 a6 00 12 	bgu r5,r6,8026cc0 <killinfo+0x260>             
      #if defined(RTEMS_DEBUG)                                        
        if ( !api )                                                   
          continue;                                                   
      #endif                                                          
                                                                      
      if ( !_POSIX_signals_Is_interested( api, mask ) )               
 8026c7c:	28 49 01 20 	lw r9,(r2+288)                                 
 8026c80:	29 29 00 d0 	lw r9,(r9+208)                                 
 8026c84:	a5 20 48 00 	not r9,r9                                      
 8026c88:	a1 69 48 00 	and r9,r11,r9                                  
 8026c8c:	45 20 00 0d 	be r9,r0,8026cc0 <killinfo+0x260>              
       *                                                              
       *  NOTE: We initialized interested_priority to PRIORITY_MAXIMUM + 1
       *        so we never have to worry about deferencing a NULL    
       *        interested thread.                                    
       */                                                             
      if ( the_thread->current_priority < interested_priority ) {     
 8026c90:	54 c5 00 0a 	bgu r6,r5,8026cb8 <killinfo+0x258>             
       *  and blocking interruptibutable by signal.                   
       *                                                              
       *  If the interested thread is ready, don't think about changing.
       */                                                             
                                                                      
      if ( interested && !_States_Is_ready( interested->current_state ) ) {
 8026c94:	44 20 00 0b 	be r1,r0,8026cc0 <killinfo+0x260>              <== NEVER TAKEN
 8026c98:	28 29 00 10 	lw r9,(r1+16)                                  
 8026c9c:	45 20 00 09 	be r9,r0,8026cc0 <killinfo+0x260>              <== NEVER TAKEN
        /* preferred ready over blocked */                            
        DEBUG_STEP("5");                                              
        if ( _States_Is_ready( the_thread->current_state ) ) {        
 8026ca0:	28 4e 00 10 	lw r14,(r2+16)                                 
 8026ca4:	45 c0 00 05 	be r14,r0,8026cb8 <killinfo+0x258>             
 8026ca8:	a1 2f 48 00 	and r9,r9,r15                                  
          continue;                                                   
        }                                                             
                                                                      
        DEBUG_STEP("6");                                              
        /* prefer blocked/interruptible over blocked/not interruptible */
        if ( !_States_Is_interruptible_by_signal(interested->current_state) ) {
 8026cac:	5d 20 00 05 	bne r9,r0,8026cc0 <killinfo+0x260>             
 8026cb0:	a1 cf 70 00 	and r14,r14,r15                                
          DEBUG_STEP("7");                                            
          if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) {
 8026cb4:	45 c9 00 03 	be r14,r9,8026cc0 <killinfo+0x260>             
       */                                                             
                                                                      
      if ( interested && !_States_Is_ready( interested->current_state ) ) {
        /* preferred ready over blocked */                            
        DEBUG_STEP("5");                                              
        if ( _States_Is_ready( the_thread->current_state ) ) {        
 8026cb8:	b8 a0 30 00 	mv r6,r5                                       
 8026cbc:	b8 40 08 00 	mv r1,r2                                       
    #endif                                                            
                                                                      
    maximum = the_info->maximum;                                      
    object_table = the_info->local_table;                             
                                                                      
    for ( index = 1 ; index <= maximum ; index++ ) {                  
 8026cc0:	34 63 00 01 	addi r3,r3,1                                   
 8026cc4:	34 84 00 04 	addi r4,r4,4                                   
 8026cc8:	50 e3 ff e9 	bgeu r7,r3,8026c6c <killinfo+0x20c>            
 8026ccc:	35 08 00 04 	addi r8,r8,4                                   
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
                                                                      
  for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
 8026cd0:	5d 0a ff e0 	bne r8,r10,8026c50 <killinfo+0x1f0>            
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( interested ) {                                                 
 8026cd4:	5c 20 ff be 	bne r1,r0,8026bcc <killinfo+0x16c>             
 8026cd8:	e3 ff ff c1 	bi 8026bdc <killinfo+0x17c>                    
  _POSIX_signals_Set_process_signals( mask );                         
                                                                      
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
                                                                      
    psiginfo = (POSIX_signals_Siginfo_node *)                         
               _Chain_Get( &_POSIX_signals_Inactive_siginfo );        
 8026cdc:	78 01 08 02 	mvhi r1,0x802                                  
 8026ce0:	38 21 b0 f8 	ori r1,r1,0xb0f8                               
 8026ce4:	fb ff 8e d7 	calli 800a840 <_Chain_Get>                     
 8026ce8:	b8 20 10 00 	mv r2,r1                                       
    if ( !psiginfo ) {                                                
 8026cec:	44 20 00 13 	be r1,r0,8026d38 <killinfo+0x2d8>              
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 8026cf0:	2b 83 00 20 	lw r3,(sp+32)                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 8026cf4:	b5 8c 60 00 	add r12,r12,r12                                
 8026cf8:	78 01 08 02 	mvhi r1,0x802                                  
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 8026cfc:	58 43 00 08 	sw (r2+8),r3                                   
 8026d00:	2b 83 00 24 	lw r3,(sp+36)                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 8026d04:	b5 8c 60 00 	add r12,r12,r12                                
 8026d08:	38 21 b1 70 	ori r1,r1,0xb170                               
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 8026d0c:	58 43 00 0c 	sw (r2+12),r3                                  
 8026d10:	2b 83 00 28 	lw r3,(sp+40)                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 8026d14:	b5 81 08 00 	add r1,r12,r1                                  
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 8026d18:	58 43 00 10 	sw (r2+16),r3                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 8026d1c:	fb ff 8e b3 	calli 800a7e8 <_Chain_Append>                  
 8026d20:	e3 ff ff b8 	bi 8026c00 <killinfo+0x1a0>                    
                                                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
  if ( pid != getpid() )                                              
    rtems_set_errno_and_return_minus_one( ESRCH );                    
 8026d24:	fb ff b4 2f 	calli 8013de0 <__errno>                        
 8026d28:	34 02 00 03 	mvi r2,3                                       
 8026d2c:	58 22 00 00 	sw (r1+0),r2                                   
 8026d30:	34 01 ff ff 	mvi r1,-1                                      
 8026d34:	e3 ff ff 60 	bi 8026ab4 <killinfo+0x54>                     
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
                                                                      
    psiginfo = (POSIX_signals_Siginfo_node *)                         
               _Chain_Get( &_POSIX_signals_Inactive_siginfo );        
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
 8026d38:	fb ff 97 a5 	calli 800cbcc <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
 8026d3c:	fb ff b4 29 	calli 8013de0 <__errno>                        
 8026d40:	34 02 00 0b 	mvi r2,11                                      
 8026d44:	58 22 00 00 	sw (r1+0),r2                                   
 8026d48:	34 01 ff ff 	mvi r1,-1                                      
 8026d4c:	e3 ff ff 5a 	bi 8026ab4 <killinfo+0x54>                     
                                                                      

08012860 <libc_wrapup>: extern void _wrapup_reent(struct _reent *); extern void _reclaim_reent(struct _reent *); void libc_wrapup(void) {
 8012860:	37 9c ff f4 	addi sp,sp,-12                                 
 8012864:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8012868:	5b 8c 00 08 	sw (sp+8),r12                                  
 801286c:	5b 9d 00 04 	sw (sp+4),ra                                   
  /*                                                                  
   *  In case RTEMS is already down, don't do this.  It could be      
   *  dangerous.                                                      
   */                                                                 
                                                                      
  if (!_System_state_Is_up(_System_state_Get()))                      
 8012870:	78 01 08 01 	mvhi r1,0x801                                  
 8012874:	38 21 4a 60 	ori r1,r1,0x4a60                               
 8012878:	28 22 00 00 	lw r2,(r1+0)                                   
 801287c:	34 01 00 03 	mvi r1,3                                       
 8012880:	44 41 00 06 	be r2,r1,8012898 <libc_wrapup+0x38>            <== ALWAYS TAKEN
   */                                                                 
                                                                      
  fclose (stdin);                                                     
  fclose (stdout);                                                    
  fclose (stderr);                                                    
}                                                                     
 8012884:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8012888:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 801288c:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 8012890:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8012894:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  /*                                                                  
   *  This was already done if the user called exit() directly .      
  _wrapup_reent(0);                                                   
   */                                                                 
                                                                      
  if (_REENT != _global_impure_ptr) {                                 
 8012898:	78 0b 08 01 	mvhi r11,0x801                                 
 801289c:	78 01 08 01 	mvhi r1,0x801                                  
 80128a0:	39 6b 41 e8 	ori r11,r11,0x41e8                             
 80128a4:	38 21 3b 5c 	ori r1,r1,0x3b5c                               
 80128a8:	29 62 00 00 	lw r2,(r11+0)                                  
 80128ac:	28 2c 00 00 	lw r12,(r1+0)                                  
 80128b0:	44 4c 00 05 	be r2,r12,80128c4 <libc_wrapup+0x64>           
      _wrapup_reent(_global_impure_ptr);                              
 80128b4:	b9 80 08 00 	mv r1,r12                                      
 80128b8:	f8 00 02 1c 	calli 8013128 <_wrapup_reent>                  
      /*  Don't reclaim this one, just in case we do printfs          
       *  on the way out to ROM.                                      
       */                                                             
      _reclaim_reent(&libc_global_reent);                             
#endif                                                                
      _REENT = _global_impure_ptr;                                    
 80128bc:	b9 80 10 00 	mv r2,r12                                      
 80128c0:	59 6c 00 00 	sw (r11+0),r12                                 
   *                                                                  
   * Should this be changed to do *all* file streams?                 
   *    _fwalk (_REENT, fclose);                                      
   */                                                                 
                                                                      
  fclose (stdin);                                                     
 80128c4:	28 41 00 04 	lw r1,(r2+4)                                   
 80128c8:	fb ff e9 8d 	calli 800cefc <fclose>                         
  fclose (stdout);                                                    
 80128cc:	29 61 00 00 	lw r1,(r11+0)                                  
 80128d0:	28 21 00 08 	lw r1,(r1+8)                                   
 80128d4:	fb ff e9 8a 	calli 800cefc <fclose>                         
  fclose (stderr);                                                    
 80128d8:	29 61 00 00 	lw r1,(r11+0)                                  
 80128dc:	28 21 00 0c 	lw r1,(r1+12)                                  
 80128e0:	fb ff e9 87 	calli 800cefc <fclose>                         
}                                                                     
 80128e4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80128e8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80128ec:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80128f0:	37 9c 00 0c 	addi sp,sp,12                                  
 80128f4:	c3 a0 00 00 	ret                                            
                                                                      

080018ac <malloc>: #include "malloc_p.h" void *malloc( size_t size ) {
 80018ac:	37 9c ff f4 	addi sp,sp,-12                                 
 80018b0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80018b4:	5b 8c 00 08 	sw (sp+8),r12                                  
 80018b8:	5b 9d 00 04 	sw (sp+4),ra                                   
  void        *return_this;                                           
                                                                      
  MSBUMP(malloc_calls, 1);                                            
 80018bc:	78 03 08 01 	mvhi r3,0x801                                  
 80018c0:	38 63 47 a8 	ori r3,r3,0x47a8                               
 80018c4:	28 62 00 04 	lw r2,(r3+4)                                   
#include "malloc_p.h"                                                 
                                                                      
void *malloc(                                                         
  size_t  size                                                        
)                                                                     
{                                                                     
 80018c8:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  /*                                                                  
   * Validate the parameters                                          
   */                                                                 
  if ( !size )                                                        
    return (void *) 0;                                                
 80018cc:	34 0b 00 00 	mvi r11,0                                      
  size_t  size                                                        
)                                                                     
{                                                                     
  void        *return_this;                                           
                                                                      
  MSBUMP(malloc_calls, 1);                                            
 80018d0:	34 41 00 01 	addi r1,r2,1                                   
 80018d4:	58 61 00 04 	sw (r3+4),r1                                   
                                                                      
  /*                                                                  
   *  If some free's have been deferred, then do them now.            
   */                                                                 
  malloc_deferred_frees_process();                                    
 80018d8:	fb ff ff 9a 	calli 8001740 <malloc_deferred_frees_process>  
                                                                      
  /*                                                                  
   * Validate the parameters                                          
   */                                                                 
  if ( !size )                                                        
 80018dc:	45 80 00 1d 	be r12,r0,8001950 <malloc+0xa4>                
    return (void *) 0;                                                
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 80018e0:	78 01 08 01 	mvhi r1,0x801                                  
 80018e4:	38 21 4a 60 	ori r1,r1,0x4a60                               
 80018e8:	28 22 00 00 	lw r2,(r1+0)                                   
 80018ec:	34 01 00 03 	mvi r1,3                                       
 80018f0:	44 41 00 28 	be r2,r1,8001990 <malloc+0xe4>                 
RTEMS_INLINE_ROUTINE void *_Protected_heap_Allocate(                  
  Heap_Control *heap,                                                 
  uintptr_t size                                                      
)                                                                     
{                                                                     
  return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
 80018f4:	78 01 08 01 	mvhi r1,0x801                                  
 80018f8:	38 21 40 4c 	ori r1,r1,0x404c                               
 80018fc:	28 21 00 00 	lw r1,(r1+0)                                   
 8001900:	b9 80 10 00 	mv r2,r12                                      
 8001904:	34 03 00 00 	mvi r3,0                                       
 8001908:	34 04 00 00 	mvi r4,0                                       
 800190c:	f8 00 0d 55 	calli 8004e60 <_Protected_heap_Allocate_aligned_with_boundary>
 8001910:	b8 20 58 00 	mv r11,r1                                      
   * If this fails then return a NULL pointer.                        
   */                                                                 
                                                                      
  return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );  
                                                                      
  if ( !return_this ) {                                               
 8001914:	44 20 00 15 	be r1,r0,8001968 <malloc+0xbc>                 
  }                                                                   
                                                                      
  /*                                                                  
   *  If the user wants us to dirty the allocated memory, then do it. 
   */                                                                 
  if ( rtems_malloc_dirty_helper )                                    
 8001918:	78 01 08 01 	mvhi r1,0x801                                  
 800191c:	38 21 46 c8 	ori r1,r1,0x46c8                               
 8001920:	28 23 00 00 	lw r3,(r1+0)                                   
 8001924:	44 60 00 04 	be r3,r0,8001934 <malloc+0x88>                 
    (*rtems_malloc_dirty_helper)( return_this, size );                
 8001928:	b9 60 08 00 	mv r1,r11                                      
 800192c:	b9 80 10 00 	mv r2,r12                                      
 8001930:	d8 60 00 00 	call r3                                        
                                                                      
  /*                                                                  
   *  If configured, update the statistics                            
   */                                                                 
  if ( rtems_malloc_statistics_helpers )                              
 8001934:	78 01 08 01 	mvhi r1,0x801                                  
 8001938:	38 21 46 c0 	ori r1,r1,0x46c0                               
 800193c:	28 21 00 00 	lw r1,(r1+0)                                   
 8001940:	44 20 00 04 	be r1,r0,8001950 <malloc+0xa4>                 
    (*rtems_malloc_statistics_helpers->at_malloc)(return_this);       
 8001944:	28 22 00 04 	lw r2,(r1+4)                                   
 8001948:	b9 60 08 00 	mv r1,r11                                      
 800194c:	d8 40 00 00 	call r2                                        
                                                                      
  return return_this;                                                 
}                                                                     
 8001950:	b9 60 08 00 	mv r1,r11                                      
 8001954:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001958:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800195c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8001960:	37 9c 00 0c 	addi sp,sp,12                                  
 8001964:	c3 a0 00 00 	ret                                            
   */                                                                 
                                                                      
  return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );  
                                                                      
  if ( !return_this ) {                                               
    if (rtems_malloc_sbrk_helpers)                                    
 8001968:	78 01 08 01 	mvhi r1,0x801                                  
 800196c:	38 21 46 c4 	ori r1,r1,0x46c4                               
 8001970:	28 21 00 00 	lw r1,(r1+0)                                   
 8001974:	44 2b 00 0a 	be r1,r11,800199c <malloc+0xf0>                
      return_this = (*rtems_malloc_sbrk_helpers->extend)( size );     
 8001978:	28 22 00 04 	lw r2,(r1+4)                                   
 800197c:	b9 80 08 00 	mv r1,r12                                      
 8001980:	d8 40 00 00 	call r2                                        
    if ( !return_this ) {                                             
 8001984:	44 20 00 06 	be r1,r0,800199c <malloc+0xf0>                 
 8001988:	b8 20 58 00 	mv r11,r1                                      
 800198c:	e3 ff ff e3 	bi 8001918 <malloc+0x6c>                       
                                                                      
  /*                                                                  
   *  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() )                                 
 8001990:	fb ff ff 5a 	calli 80016f8 <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()) &&                    
 8001994:	5c 20 ff d8 	bne r1,r0,80018f4 <malloc+0x48>                <== ALWAYS TAKEN
 8001998:	e3 ff ff ee 	bi 8001950 <malloc+0xa4>                       <== NOT EXECUTED
                                                                      
  if ( !return_this ) {                                               
    if (rtems_malloc_sbrk_helpers)                                    
      return_this = (*rtems_malloc_sbrk_helpers->extend)( size );     
    if ( !return_this ) {                                             
      errno = ENOMEM;                                                 
 800199c:	f8 00 2c f8 	calli 800cd7c <__errno>                        
 80019a0:	34 02 00 0c 	mvi r2,12                                      
 80019a4:	58 22 00 00 	sw (r1+0),r2                                   
      return (void *) 0;                                              
 80019a8:	e3 ff ff ea 	bi 8001950 <malloc+0xa4>                       
                                                                      

08001d54 <malloc_sbrk_extend_and_allocate>: } void *malloc_sbrk_extend_and_allocate( size_t size ) {
 8001d54:	37 9c ff ec 	addi sp,sp,-20                                 
 8001d58:	5b 8b 00 14 	sw (sp+20),r11                                 
 8001d5c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8001d60:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8001d64:	5b 8e 00 08 	sw (sp+8),r14                                  
 8001d68:	5b 9d 00 04 	sw (sp+4),ra                                   
   *  Round to the "requested sbrk amount" so hopefully we won't have 
   *  to grow again for a while.  This effectively does sbrk() calls  
   *  in "page" amounts.                                              
   */                                                                 
                                                                      
  sbrk_amount = RTEMS_Malloc_Sbrk_amount;                             
 8001d6c:	78 02 08 01 	mvhi r2,0x801                                  
 8001d70:	38 42 59 20 	ori r2,r2,0x5920                               
 8001d74:	28 4b 00 00 	lw r11,(r2+0)                                  
}                                                                     
                                                                      
void *malloc_sbrk_extend_and_allocate(                                
  size_t size                                                         
)                                                                     
{                                                                     
 8001d78:	b8 20 68 00 	mv r13,r1                                      
   */                                                                 
                                                                      
  sbrk_amount = RTEMS_Malloc_Sbrk_amount;                             
                                                                      
  if ( sbrk_amount == 0 )                                             
    return (void *) 0;                                                
 8001d7c:	34 0c 00 00 	mvi r12,0                                      
   *  in "page" amounts.                                              
   */                                                                 
                                                                      
  sbrk_amount = RTEMS_Malloc_Sbrk_amount;                             
                                                                      
  if ( sbrk_amount == 0 )                                             
 8001d80:	5d 60 00 09 	bne r11,r0,8001da4 <malloc_sbrk_extend_and_allocate+0x50><== ALWAYS TAKEN
                                                                      
  MSBUMP(space_available, the_size);                                  
                                                                      
  return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );  
  return return_this;                                                 
}                                                                     
 8001d84:	b9 80 08 00 	mv r1,r12                                      
 8001d88:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001d8c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8001d90:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8001d94:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8001d98:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8001d9c:	37 9c 00 14 	addi sp,sp,20                                  
 8001da0:	c3 a0 00 00 	ret                                            
  sbrk_amount = RTEMS_Malloc_Sbrk_amount;                             
                                                                      
  if ( sbrk_amount == 0 )                                             
    return (void *) 0;                                                
                                                                      
  the_size = ((size + sbrk_amount) / sbrk_amount * sbrk_amount);      
 8001da4:	b9 60 10 00 	mv r2,r11                                      
 8001da8:	b4 2b 08 00 	add r1,r1,r11                                  
 8001dac:	f8 00 43 40 	calli 8012aac <__udivsi3>                      
 8001db0:	b9 60 10 00 	mv r2,r11                                      
 8001db4:	f8 00 42 d9 	calli 8012918 <__mulsi3>                       
 8001db8:	b8 20 70 00 	mv r14,r1                                      
                                                                      
  starting_address = (void *) sbrk(the_size);                         
 8001dbc:	fb ff f9 c2 	calli 80004c4 <sbrk>                           
 8001dc0:	b8 20 10 00 	mv r2,r1                                       
  if ( starting_address == (void*) -1 )                               
 8001dc4:	34 01 ff ff 	mvi r1,-1                                      
 8001dc8:	44 41 ff ef 	be r2,r1,8001d84 <malloc_sbrk_extend_and_allocate+0x30>
    return (void *) 0;                                                
                                                                      
  if ( !_Protected_heap_Extend(                                       
 8001dcc:	78 0b 08 01 	mvhi r11,0x801                                 
 8001dd0:	39 6b 50 4c 	ori r11,r11,0x504c                             
 8001dd4:	29 61 00 00 	lw r1,(r11+0)                                  
 8001dd8:	b9 c0 18 00 	mv r3,r14                                      
 8001ddc:	f8 00 0d 0f 	calli 8005218 <_Protected_heap_Extend>         
 8001de0:	44 20 00 0d 	be r1,r0,8001e14 <malloc_sbrk_extend_and_allocate+0xc0>
    sbrk(-the_size);                                                  
    errno = ENOMEM;                                                   
    return (void *) 0;                                                
  }                                                                   
                                                                      
  MSBUMP(space_available, the_size);                                  
 8001de4:	78 05 08 01 	mvhi r5,0x801                                  
 8001de8:	38 a5 58 f0 	ori r5,r5,0x58f0                               
 8001dec:	28 a3 00 00 	lw r3,(r5+0)                                   
 8001df0:	29 61 00 00 	lw r1,(r11+0)                                  
 8001df4:	b9 a0 10 00 	mv r2,r13                                      
 8001df8:	b5 c3 70 00 	add r14,r14,r3                                 
 8001dfc:	34 04 00 00 	mvi r4,0                                       
 8001e00:	34 03 00 00 	mvi r3,0                                       
 8001e04:	58 ae 00 00 	sw (r5+0),r14                                  
 8001e08:	f8 00 0c ea 	calli 80051b0 <_Protected_heap_Allocate_aligned_with_boundary>
 8001e0c:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );  
  return return_this;                                                 
 8001e10:	e3 ff ff dd 	bi 8001d84 <malloc_sbrk_extend_and_allocate+0x30>
  if ( starting_address == (void*) -1 )                               
    return (void *) 0;                                                
                                                                      
  if ( !_Protected_heap_Extend(                                       
          RTEMS_Malloc_Heap, starting_address, the_size) ) {          
    sbrk(-the_size);                                                  
 8001e14:	c8 0e 08 00 	sub r1,r0,r14                                  
 8001e18:	fb ff f9 ab 	calli 80004c4 <sbrk>                           
    errno = ENOMEM;                                                   
 8001e1c:	f8 00 2d 9c 	calli 800d48c <__errno>                        
 8001e20:	34 02 00 0c 	mvi r2,12                                      
 8001e24:	58 22 00 00 	sw (r1+0),r2                                   
    return (void *) 0;                                                
 8001e28:	e3 ff ff d7 	bi 8001d84 <malloc_sbrk_extend_and_allocate+0x30>
                                                                      

0800b184 <memfile_free_blocks_in_table>: */ void memfile_free_blocks_in_table( block_p **block_table, int entries ) {
 800b184:	37 9c ff ec 	addi sp,sp,-20                                 
 800b188:	5b 8b 00 14 	sw (sp+20),r11                                 
 800b18c:	5b 8c 00 10 	sw (sp+16),r12                                 
 800b190:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800b194:	5b 8e 00 08 	sw (sp+8),r14                                  
 800b198:	5b 9d 00 04 	sw (sp+4),ra                                   
 800b19c:	b8 20 70 00 	mv r14,r1                                      
 800b1a0:	b8 40 68 00 	mv r13,r2                                      
  IMFS_assert( block_table );                                         
                                                                      
  /*                                                                  
   *  Now go through all the slots in the table and free the memory.  
   */                                                                 
  b = *block_table;                                                   
 800b1a4:	28 2b 00 00 	lw r11,(r1+0)                                  
                                                                      
  for ( i=0 ; i<entries ; i++ ) {                                     
 800b1a8:	4c 02 00 0b 	bge r0,r2,800b1d4 <memfile_free_blocks_in_table+0x50><== NEVER TAKEN
 800b1ac:	34 0c 00 00 	mvi r12,0                                      
    if ( b[i] ) {                                                     
 800b1b0:	29 63 00 00 	lw r3,(r11+0)                                  
  /*                                                                  
   *  Now go through all the slots in the table and free the memory.  
   */                                                                 
  b = *block_table;                                                   
                                                                      
  for ( i=0 ; i<entries ; i++ ) {                                     
 800b1b4:	35 8c 00 01 	addi r12,r12,1                                 
    if ( b[i] ) {                                                     
      memfile_free_block( b[i] );                                     
 800b1b8:	b8 60 08 00 	mv r1,r3                                       
   *  Now go through all the slots in the table and free the memory.  
   */                                                                 
  b = *block_table;                                                   
                                                                      
  for ( i=0 ; i<entries ; i++ ) {                                     
    if ( b[i] ) {                                                     
 800b1bc:	44 60 00 03 	be r3,r0,800b1c8 <memfile_free_blocks_in_table+0x44>
      memfile_free_block( b[i] );                                     
 800b1c0:	fb ff ff e6 	calli 800b158 <memfile_free_block>             
      b[i] = 0;                                                       
 800b1c4:	59 60 00 00 	sw (r11+0),r0                                  
  /*                                                                  
   *  Now go through all the slots in the table and free the memory.  
   */                                                                 
  b = *block_table;                                                   
                                                                      
  for ( i=0 ; i<entries ; i++ ) {                                     
 800b1c8:	35 6b 00 04 	addi r11,r11,4                                 
 800b1cc:	49 ac ff f9 	bg r13,r12,800b1b0 <memfile_free_blocks_in_table+0x2c>
 800b1d0:	29 cb 00 00 	lw r11,(r14+0)                                 
                                                                      
  /*                                                                  
   *  Now that all the blocks in the block table are free, we can     
   *  free the block table itself.                                    
   */                                                                 
  memfile_free_block( *block_table );                                 
 800b1d4:	b9 60 08 00 	mv r1,r11                                      
 800b1d8:	fb ff ff e0 	calli 800b158 <memfile_free_block>             
  *block_table = 0;                                                   
 800b1dc:	59 c0 00 00 	sw (r14+0),r0                                  
}                                                                     
 800b1e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b1e4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800b1e8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800b1ec:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800b1f0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800b1f4:	37 9c 00 14 	addi sp,sp,20                                  
 800b1f8:	c3 a0 00 00 	ret                                            
                                                                      

0800b824 <memfile_ftruncate>: */ int memfile_ftruncate( rtems_libio_t *iop, rtems_off64_t length ) {
 800b824:	37 9c ff f0 	addi sp,sp,-16                                 
 800b828:	5b 8b 00 08 	sw (sp+8),r11                                  
 800b82c:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_jnode_t   *the_jnode;                                          
                                                                      
  the_jnode = iop->pathinfo.node_access;                              
 800b830:	28 2b 00 1c 	lw r11,(r1+28)                                 
   *  POSIX 1003.1b does not specify what happens if you truncate a file
   *  and the new length is greater than the current size.  We treat this
   *  as an extend operation.                                         
   */                                                                 
                                                                      
  if ( length > the_jnode->info.file.size )                           
 800b834:	29 64 00 50 	lw r4,(r11+80)                                 
 800b838:	48 44 00 13 	bg r2,r4,800b884 <memfile_ftruncate+0x60>      <== NEVER TAKEN
 800b83c:	44 82 00 0f 	be r4,r2,800b878 <memfile_ftruncate+0x54>      <== ALWAYS TAKEN
  /*                                                                  
   *  The in-memory files do not currently reclaim memory until the file is
   *  deleted.  So we leave the previously allocated blocks in place for
   *  future use and just set the length.                             
   */                                                                 
  the_jnode->info.file.size = length;                                 
 800b840:	59 62 00 50 	sw (r11+80),r2                                 
 800b844:	59 63 00 54 	sw (r11+84),r3                                 
  iop->size = the_jnode->info.file.size;                              
 800b848:	58 22 00 08 	sw (r1+8),r2                                   
 800b84c:	58 23 00 0c 	sw (r1+12),r3                                  
                                                                      
  IMFS_update_atime( the_jnode );                                     
 800b850:	34 02 00 00 	mvi r2,0                                       
 800b854:	37 81 00 0c 	addi r1,sp,12                                  
 800b858:	fb ff d7 42 	calli 8001560 <gettimeofday>                   
 800b85c:	2b 82 00 0c 	lw r2,(sp+12)                                  
                                                                      
  return 0;                                                           
 800b860:	34 01 00 00 	mvi r1,0                                       
   *  future use and just set the length.                             
   */                                                                 
  the_jnode->info.file.size = length;                                 
  iop->size = the_jnode->info.file.size;                              
                                                                      
  IMFS_update_atime( the_jnode );                                     
 800b864:	59 62 00 40 	sw (r11+64),r2                                 
                                                                      
  return 0;                                                           
}                                                                     
 800b868:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b86c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800b870:	37 9c 00 10 	addi sp,sp,16                                  
 800b874:	c3 a0 00 00 	ret                                            
   *  POSIX 1003.1b does not specify what happens if you truncate a file
   *  and the new length is greater than the current size.  We treat this
   *  as an extend operation.                                         
   */                                                                 
                                                                      
  if ( length > the_jnode->info.file.size )                           
 800b878:	29 64 00 54 	lw r4,(r11+84)                                 
 800b87c:	54 64 00 02 	bgu r3,r4,800b884 <memfile_ftruncate+0x60>     
 800b880:	e3 ff ff f0 	bi 800b840 <memfile_ftruncate+0x1c>            
    return IMFS_memfile_extend( the_jnode, length );                  
 800b884:	b9 60 08 00 	mv r1,r11                                      
 800b888:	b8 60 10 00 	mv r2,r3                                       
 800b88c:	fb ff fe d3 	calli 800b3d8 <IMFS_memfile_extend>            
  iop->size = the_jnode->info.file.size;                              
                                                                      
  IMFS_update_atime( the_jnode );                                     
                                                                      
  return 0;                                                           
}                                                                     
 800b890:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b894:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800b898:	37 9c 00 10 	addi sp,sp,16                                  
 800b89c:	c3 a0 00 00 	ret                                            
                                                                      

0800b8a0 <memfile_lseek>: rtems_off64_t memfile_lseek( rtems_libio_t *iop, rtems_off64_t offset, int whence ) {
 800b8a0:	37 9c ff f4 	addi sp,sp,-12                                 
 800b8a4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800b8a8:	5b 8c 00 08 	sw (sp+8),r12                                  
 800b8ac:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_jnode_t   *the_jnode;                                          
                                                                      
  the_jnode = iop->pathinfo.node_access;                              
 800b8b0:	28 2c 00 1c 	lw r12,(r1+28)                                 
rtems_off64_t memfile_lseek(                                          
  rtems_libio_t   *iop,                                               
  rtems_off64_t    offset,                                            
  int              whence                                             
)                                                                     
{                                                                     
 800b8b4:	b8 20 58 00 	mv r11,r1                                      
  IMFS_jnode_t   *the_jnode;                                          
                                                                      
  the_jnode = iop->pathinfo.node_access;                              
                                                                      
  if (the_jnode->type == IMFS_LINEAR_FILE) {                          
 800b8b8:	34 01 00 06 	mvi r1,6                                       
 800b8bc:	29 82 00 4c 	lw r2,(r12+76)                                 
 800b8c0:	44 41 00 10 	be r2,r1,800b900 <memfile_lseek+0x60>          
    if (iop->offset > the_jnode->info.linearfile.size)                
      iop->offset = the_jnode->info.linearfile.size;                  
  }                                                                   
  else {  /* Must be a block file (IMFS_MEMORY_FILE). */              
    if (IMFS_memfile_extend( the_jnode, iop->offset ))                
 800b8c4:	29 62 00 14 	lw r2,(r11+20)                                 
 800b8c8:	b9 80 08 00 	mv r1,r12                                      
 800b8cc:	fb ff fe c3 	calli 800b3d8 <IMFS_memfile_extend>            
 800b8d0:	5c 20 00 1d 	bne r1,r0,800b944 <memfile_lseek+0xa4>         
      rtems_set_errno_and_return_minus_one( ENOSPC );                 
                                                                      
    iop->size = the_jnode->info.file.size;                            
 800b8d4:	29 83 00 50 	lw r3,(r12+80)                                 
 800b8d8:	29 61 00 10 	lw r1,(r11+16)                                 
 800b8dc:	29 62 00 14 	lw r2,(r11+20)                                 
 800b8e0:	59 63 00 08 	sw (r11+8),r3                                  
 800b8e4:	29 83 00 54 	lw r3,(r12+84)                                 
 800b8e8:	59 63 00 0c 	sw (r11+12),r3                                 
  }                                                                   
  return iop->offset;                                                 
}                                                                     
 800b8ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b8f0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800b8f4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800b8f8:	37 9c 00 0c 	addi sp,sp,12                                  
 800b8fc:	c3 a0 00 00 	ret                                            
  IMFS_jnode_t   *the_jnode;                                          
                                                                      
  the_jnode = iop->pathinfo.node_access;                              
                                                                      
  if (the_jnode->type == IMFS_LINEAR_FILE) {                          
    if (iop->offset > the_jnode->info.linearfile.size)                
 800b900:	29 61 00 10 	lw r1,(r11+16)                                 
 800b904:	29 83 00 50 	lw r3,(r12+80)                                 
 800b908:	29 62 00 14 	lw r2,(r11+20)                                 
 800b90c:	29 84 00 54 	lw r4,(r12+84)                                 
 800b910:	48 23 00 04 	bg r1,r3,800b920 <memfile_lseek+0x80>          <== NEVER TAKEN
 800b914:	5c 23 ff f6 	bne r1,r3,800b8ec <memfile_lseek+0x4c>         <== NEVER TAKEN
 800b918:	54 44 00 02 	bgu r2,r4,800b920 <memfile_lseek+0x80>         <== NEVER TAKEN
 800b91c:	e3 ff ff f4 	bi 800b8ec <memfile_lseek+0x4c>                
      iop->offset = the_jnode->info.linearfile.size;                  
 800b920:	b8 60 08 00 	mv r1,r3                                       <== NOT EXECUTED
 800b924:	b8 80 10 00 	mv r2,r4                                       <== NOT EXECUTED
 800b928:	59 63 00 10 	sw (r11+16),r3                                 <== NOT EXECUTED
 800b92c:	59 64 00 14 	sw (r11+20),r4                                 <== NOT EXECUTED
      rtems_set_errno_and_return_minus_one( ENOSPC );                 
                                                                      
    iop->size = the_jnode->info.file.size;                            
  }                                                                   
  return iop->offset;                                                 
}                                                                     
 800b930:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800b934:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 800b938:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 800b93c:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 800b940:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    if (iop->offset > the_jnode->info.linearfile.size)                
      iop->offset = the_jnode->info.linearfile.size;                  
  }                                                                   
  else {  /* Must be a block file (IMFS_MEMORY_FILE). */              
    if (IMFS_memfile_extend( the_jnode, iop->offset ))                
      rtems_set_errno_and_return_minus_one( ENOSPC );                 
 800b944:	f8 00 05 0e 	calli 800cd7c <__errno>                        
 800b948:	34 02 00 1c 	mvi r2,28                                      
 800b94c:	58 22 00 00 	sw (r1+0),r2                                   
 800b950:	34 01 ff ff 	mvi r1,-1                                      
 800b954:	34 02 ff ff 	mvi r2,-1                                      
 800b958:	e3 ff ff e5 	bi 800b8ec <memfile_lseek+0x4c>                
                                                                      

0800b754 <memfile_open>: rtems_libio_t *iop, const char *pathname, uint32_t flag, uint32_t mode ) {
 800b754:	37 9c ff f4 	addi sp,sp,-12                                 
 800b758:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800b75c:	5b 8c 00 08 	sw (sp+8),r12                                  
 800b760:	5b 9d 00 04 	sw (sp+4),ra                                   
 800b764:	b8 20 60 00 	mv r12,r1                                      
  the_jnode = iop->pathinfo.node_access;                              
                                                                      
  /*                                                                  
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))         
 800b768:	28 21 00 18 	lw r1,(r1+24)                                  
  uint32_t       mode                                                 
)                                                                     
{                                                                     
  IMFS_jnode_t  *the_jnode;                                           
                                                                      
  the_jnode = iop->pathinfo.node_access;                              
 800b76c:	29 8b 00 1c 	lw r11,(r12+28)                                
                                                                      
  /*                                                                  
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))         
 800b770:	20 22 02 04 	andi r2,r1,0x204                               
 800b774:	44 40 00 04 	be r2,r0,800b784 <memfile_open+0x30>           
   && (the_jnode->type == IMFS_LINEAR_FILE)) {                        
 800b778:	29 63 00 4c 	lw r3,(r11+76)                                 
 800b77c:	34 02 00 06 	mvi r2,6                                       
 800b780:	44 62 00 13 	be r3,r2,800b7cc <memfile_open+0x78>           <== NEVER TAKEN
    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))      
 800b784:	29 63 00 50 	lw r3,(r11+80)                                 
 800b788:	29 62 00 54 	lw r2,(r11+84)                                 
        return -1;                                                    
  }                                                                   
  if (iop->flags & LIBIO_FLAGS_APPEND)                                
 800b78c:	20 21 02 00 	andi r1,r1,0x200                               
 800b790:	5c 20 00 0a 	bne r1,r0,800b7b8 <memfile_open+0x64>          
    iop->offset = the_jnode->info.file.size;                          
                                                                      
  iop->size = the_jnode->info.file.size;                              
 800b794:	59 82 00 0c 	sw (r12+12),r2                                 
 800b798:	59 83 00 08 	sw (r12+8),r3                                  
  return 0;                                                           
 800b79c:	34 02 00 00 	mvi r2,0                                       
}                                                                     
 800b7a0:	b8 40 08 00 	mv r1,r2                                       
 800b7a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b7a8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800b7ac:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800b7b0:	37 9c 00 0c 	addi sp,sp,12                                  
 800b7b4:	c3 a0 00 00 	ret                                            
    if ((count != 0)                                                  
     && (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))      
        return -1;                                                    
  }                                                                   
  if (iop->flags & LIBIO_FLAGS_APPEND)                                
    iop->offset = the_jnode->info.file.size;                          
 800b7b8:	59 83 00 10 	sw (r12+16),r3                                 
 800b7bc:	59 82 00 14 	sw (r12+20),r2                                 
 800b7c0:	29 63 00 50 	lw r3,(r11+80)                                 
 800b7c4:	29 62 00 54 	lw r2,(r11+84)                                 
 800b7c8:	e3 ff ff f3 	bi 800b794 <memfile_open+0x40>                 
  /*                                                                  
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))         
   && (the_jnode->type == IMFS_LINEAR_FILE)) {                        
    uint32_t   count = the_jnode->info.linearfile.size;               
 800b7cc:	29 64 00 54 	lw r4,(r11+84)                                 <== NOT EXECUTED
    const unsigned char *buffer = the_jnode->info.linearfile.direct;  
                                                                      
    the_jnode->type = IMFS_MEMORY_FILE;                               
 800b7d0:	34 01 00 05 	mvi r1,5                                       <== NOT EXECUTED
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))         
   && (the_jnode->type == IMFS_LINEAR_FILE)) {                        
    uint32_t   count = the_jnode->info.linearfile.size;               
    const unsigned char *buffer = the_jnode->info.linearfile.direct;  
 800b7d4:	29 63 00 58 	lw r3,(r11+88)                                 <== NOT EXECUTED
                                                                      
    the_jnode->type = IMFS_MEMORY_FILE;                               
 800b7d8:	59 61 00 4c 	sw (r11+76),r1                                 <== NOT EXECUTED
    the_jnode->info.file.size            = 0;                         
 800b7dc:	59 60 00 50 	sw (r11+80),r0                                 <== NOT EXECUTED
 800b7e0:	59 60 00 54 	sw (r11+84),r0                                 <== NOT EXECUTED
    the_jnode->info.file.indirect        = 0;                         
 800b7e4:	59 60 00 58 	sw (r11+88),r0                                 <== NOT EXECUTED
    the_jnode->info.file.doubly_indirect = 0;                         
 800b7e8:	59 60 00 5c 	sw (r11+92),r0                                 <== NOT EXECUTED
    the_jnode->info.file.triply_indirect = 0;                         
 800b7ec:	59 60 00 60 	sw (r11+96),r0                                 <== NOT EXECUTED
    if ((count != 0)                                                  
 800b7f0:	5c 80 00 05 	bne r4,r0,800b804 <memfile_open+0xb0>          <== NOT EXECUTED
 800b7f4:	29 81 00 18 	lw r1,(r12+24)                                 <== NOT EXECUTED
 800b7f8:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 800b7fc:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 800b800:	e3 ff ff e3 	bi 800b78c <memfile_open+0x38>                 <== NOT EXECUTED
     && (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))      
 800b804:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 800b808:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800b80c:	fb ff ff 49 	calli 800b530 <IMFS_memfile_write>             <== NOT EXECUTED
 800b810:	34 03 ff ff 	mvi r3,-1                                      <== NOT EXECUTED
        return -1;                                                    
 800b814:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
    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))      
 800b818:	44 23 ff e2 	be r1,r3,800b7a0 <memfile_open+0x4c>           <== NOT EXECUTED
 800b81c:	29 81 00 18 	lw r1,(r12+24)                                 <== NOT EXECUTED
 800b820:	e3 ff ff d9 	bi 800b784 <memfile_open+0x30>                 <== NOT EXECUTED
                                                                      

080019d0 <mknod>: int mknod( const char *pathname, mode_t mode, dev_t dev ) {
 80019d0:	37 9c ff cc 	addi sp,sp,-52                                 
 80019d4:	5b 8b 00 14 	sw (sp+20),r11                                 
 80019d8:	5b 8c 00 10 	sw (sp+16),r12                                 
 80019dc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80019e0:	5b 8e 00 08 	sw (sp+8),r14                                  
 80019e4:	5b 9d 00 04 	sw (sp+4),ra                                   
  int                                 result;                         
                                                                      
  /*                                                                  
   * The file type is field within the mode. Check we have a sane mode set.
   */                                                                 
  switch (mode & S_IFMT)                                              
 80019e8:	34 06 40 00 	mvi r6,16384                                   
 80019ec:	20 45 f0 00 	andi r5,r2,0xf000                              
int mknod(                                                            
  const char *pathname,                                               
  mode_t      mode,                                                   
  dev_t       dev                                                     
)                                                                     
{                                                                     
 80019f0:	b8 40 68 00 	mv r13,r2                                      
 80019f4:	b8 20 58 00 	mv r11,r1                                      
 80019f8:	b8 60 70 00 	mv r14,r3                                      
  int                                 result;                         
                                                                      
  /*                                                                  
   * The file type is field within the mode. Check we have a sane mode set.
   */                                                                 
  switch (mode & S_IFMT)                                              
 80019fc:	44 a6 00 16 	be r5,r6,8001a54 <mknod+0x84>                  
 8001a00:	54 a6 00 11 	bgu r5,r6,8001a44 <mknod+0x74>                 
 8001a04:	34 01 10 00 	mvi r1,4096                                    
 8001a08:	44 a1 00 13 	be r5,r1,8001a54 <mknod+0x84>                  
 8001a0c:	34 01 20 00 	mvi r1,8192                                    
 8001a10:	44 a1 00 11 	be r5,r1,8001a54 <mknod+0x84>                  
    case S_IFBLK:                                                     
    case S_IFREG:                                                     
    case S_IFIFO:                                                     
      break;                                                          
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8001a14:	f8 00 2c da 	calli 800cd7c <__errno>                        
 8001a18:	34 02 00 16 	mvi r2,22                                      
 8001a1c:	58 22 00 00 	sw (r1+0),r2                                   
 8001a20:	34 0b ff ff 	mvi r11,-1                                     
  result =  (*temp_loc.ops->mknod_h)( name_start, mode, dev, &temp_loc );
                                                                      
  rtems_filesystem_freenode( &temp_loc );                             
                                                                      
  return result;                                                      
}                                                                     
 8001a24:	b9 60 08 00 	mv r1,r11                                      
 8001a28:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001a2c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8001a30:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8001a34:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8001a38:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8001a3c:	37 9c 00 34 	addi sp,sp,52                                  
 8001a40:	c3 a0 00 00 	ret                                            
  int                                 result;                         
                                                                      
  /*                                                                  
   * The file type is field within the mode. Check we have a sane mode set.
   */                                                                 
  switch (mode & S_IFMT)                                              
 8001a44:	34 01 60 00 	mvi r1,24576                                   
 8001a48:	44 a1 00 03 	be r5,r1,8001a54 <mknod+0x84>                  
 8001a4c:	34 21 20 00 	addi r1,r1,8192                                
 8001a50:	5c a1 ff f1 	bne r5,r1,8001a14 <mknod+0x44>                 <== NEVER TAKEN
      break;                                                          
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
  }                                                                   
                                                                      
  rtems_filesystem_get_start_loc( pathname, &i, &temp_loc );          
 8001a54:	37 8c 00 1c 	addi r12,sp,28                                 
 8001a58:	b9 60 08 00 	mv r1,r11                                      
 8001a5c:	37 82 00 34 	addi r2,sp,52                                  
 8001a60:	b9 80 18 00 	mv r3,r12                                      
 8001a64:	5b 84 00 18 	sw (sp+24),r4                                  
 8001a68:	f8 00 02 d2 	calli 80025b0 <rtems_filesystem_get_start_loc> 
                                                                      
  result = (*temp_loc.ops->evalformake_h)(                            
 8001a6c:	2b 81 00 28 	lw r1,(sp+40)                                  
 8001a70:	b9 80 10 00 	mv r2,r12                                      
 8001a74:	37 83 00 30 	addi r3,sp,48                                  
 8001a78:	28 25 00 04 	lw r5,(r1+4)                                   
 8001a7c:	2b 81 00 34 	lw r1,(sp+52)                                  
 8001a80:	b5 61 08 00 	add r1,r11,r1                                  
 8001a84:	d8 a0 00 00 	call r5                                        
    &pathname[i],                                                     
    &temp_loc,                                                        
    &name_start                                                       
  );                                                                  
  if ( result != 0 )                                                  
    return -1;                                                        
 8001a88:	34 0b ff ff 	mvi r11,-1                                     
  result = (*temp_loc.ops->evalformake_h)(                            
    &pathname[i],                                                     
    &temp_loc,                                                        
    &name_start                                                       
  );                                                                  
  if ( result != 0 )                                                  
 8001a8c:	2b 84 00 18 	lw r4,(sp+24)                                  
 8001a90:	5c 20 ff e5 	bne r1,r0,8001a24 <mknod+0x54>                 
    return -1;                                                        
                                                                      
  result =  (*temp_loc.ops->mknod_h)( name_start, mode, dev, &temp_loc );
 8001a94:	2b 83 00 28 	lw r3,(sp+40)                                  
 8001a98:	2b 81 00 30 	lw r1,(sp+48)                                  
 8001a9c:	b9 a0 10 00 	mv r2,r13                                      
 8001aa0:	28 66 00 14 	lw r6,(r3+20)                                  
 8001aa4:	b9 80 28 00 	mv r5,r12                                      
 8001aa8:	b9 c0 18 00 	mv r3,r14                                      
 8001aac:	d8 c0 00 00 	call r6                                        
 8001ab0:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  rtems_filesystem_freenode( &temp_loc );                             
 8001ab4:	b9 80 08 00 	mv r1,r12                                      
 8001ab8:	fb ff fe 74 	calli 8001488 <rtems_filesystem_freenode>      
                                                                      
  return result;                                                      
}                                                                     
 8001abc:	b9 60 08 00 	mv r1,r11                                      
 8001ac0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001ac4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8001ac8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8001acc:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8001ad0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8001ad4:	37 9c 00 34 	addi sp,sp,52                                  
 8001ad8:	c3 a0 00 00 	ret                                            
                                                                      

08001b94 <mount>: const char *target, const char *filesystemtype, rtems_filesystem_options_t options, const void *data ) {
 8001b94:	37 9c ff b0 	addi sp,sp,-80                                 
 8001b98:	5b 8b 00 3c 	sw (sp+60),r11                                 
 8001b9c:	5b 8c 00 38 	sw (sp+56),r12                                 
 8001ba0:	5b 8d 00 34 	sw (sp+52),r13                                 
 8001ba4:	5b 8e 00 30 	sw (sp+48),r14                                 
 8001ba8:	5b 8f 00 2c 	sw (sp+44),r15                                 
 8001bac:	5b 90 00 28 	sw (sp+40),r16                                 
 8001bb0:	5b 91 00 24 	sw (sp+36),r17                                 
 8001bb4:	5b 92 00 20 	sw (sp+32),r18                                 
 8001bb8:	5b 93 00 1c 	sw (sp+28),r19                                 
 8001bbc:	5b 94 00 18 	sw (sp+24),r20                                 
 8001bc0:	5b 95 00 14 	sw (sp+20),r21                                 
 8001bc4:	5b 96 00 10 	sw (sp+16),r22                                 
 8001bc8:	5b 97 00 0c 	sw (sp+12),r23                                 
 8001bcc:	5b 98 00 08 	sw (sp+8),r24                                  
 8001bd0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001bd4:	b8 20 78 00 	mv r15,r1                                      
                                                                      
  /*                                                                  
   *  Are the file system options valid?                              
   */                                                                 
                                                                      
  if ( options != RTEMS_FILESYSTEM_READ_ONLY &&                       
 8001bd8:	34 01 00 01 	mvi r1,1                                       
  const char                 *target,                                 
  const char                 *filesystemtype,                         
  rtems_filesystem_options_t options,                                 
  const void                 *data                                    
)                                                                     
{                                                                     
 8001bdc:	b8 80 b0 00 	mv r22,r4                                      
 8001be0:	b8 40 68 00 	mv r13,r2                                      
 8001be4:	b8 60 70 00 	mv r14,r3                                      
 8001be8:	b8 a0 c0 00 	mv r24,r5                                      
                                                                      
  /*                                                                  
   *  Are the file system options valid?                              
   */                                                                 
                                                                      
  if ( options != RTEMS_FILESYSTEM_READ_ONLY &&                       
 8001bec:	50 24 00 16 	bgeu r1,r4,8001c44 <mount+0xb0>                
  /*                                                                  
   *  Get mount handler                                               
   */                                                                 
  mount_h = rtems_filesystem_get_mount_handler( filesystemtype );     
  if ( !mount_h )                                                     
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8001bf0:	f8 00 2c 63 	calli 800cd7c <__errno>                        
 8001bf4:	34 02 00 16 	mvi r2,22                                      
 8001bf8:	58 22 00 00 	sw (r1+0),r2                                   
 8001bfc:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
  if ( loc_to_free )                                                  
    rtems_filesystem_freenode( loc_to_free );                         
                                                                      
  return -1;                                                          
}                                                                     
 8001c00:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001c04:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 8001c08:	2b 8c 00 38 	lw r12,(sp+56)                                 
 8001c0c:	2b 8d 00 34 	lw r13,(sp+52)                                 
 8001c10:	2b 8e 00 30 	lw r14,(sp+48)                                 
 8001c14:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 8001c18:	2b 90 00 28 	lw r16,(sp+40)                                 
 8001c1c:	2b 91 00 24 	lw r17,(sp+36)                                 
 8001c20:	2b 92 00 20 	lw r18,(sp+32)                                 
 8001c24:	2b 93 00 1c 	lw r19,(sp+28)                                 
 8001c28:	2b 94 00 18 	lw r20,(sp+24)                                 
 8001c2c:	2b 95 00 14 	lw r21,(sp+20)                                 
 8001c30:	2b 96 00 10 	lw r22,(sp+16)                                 
 8001c34:	2b 97 00 0c 	lw r23,(sp+12)                                 
 8001c38:	2b 98 00 08 	lw r24,(sp+8)                                  
 8001c3c:	37 9c 00 50 	addi sp,sp,80                                  
 8001c40:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  /*                                                                  
   *  Get mount handler                                               
   */                                                                 
  mount_h = rtems_filesystem_get_mount_handler( filesystemtype );     
 8001c44:	b8 60 08 00 	mv r1,r3                                       
 8001c48:	f8 00 1b f6 	calli 8008c20 <rtems_filesystem_get_mount_handler>
 8001c4c:	b8 20 b8 00 	mv r23,r1                                      
  if ( !mount_h )                                                     
 8001c50:	44 20 ff e8 	be r1,r0,8001bf0 <mount+0x5c>                  <== NEVER TAKEN
{                                                                     
  rtems_filesystem_fsmount_me_t mount_h = NULL;                       
  rtems_filesystem_location_info_t      loc;                          
  rtems_filesystem_mount_table_entry_t *mt_entry = NULL;              
  rtems_filesystem_location_info_t     *loc_to_free = NULL;           
  bool has_target = target != NULL;                                   
 8001c54:	7d b0 00 00 	cmpnei r16,r13,0                               
  const char *target_or_null,                                         
  const char *filesystemtype,                                         
  size_t *target_length_ptr                                           
)                                                                     
{                                                                     
  const char *target = target_or_null != NULL ? target_or_null : "/"; 
 8001c58:	46 00 00 8e 	be r16,r0,8001e90 <mount+0x2fc>                
 * 	4) The mount point exists with the proper permissions to allow mounting
 *	5) The selected mount point already has a file system mounted to it
 *                                                                    
 */                                                                   
                                                                      
int mount(                                                            
 8001c5c:	b9 a0 08 00 	mv r1,r13                                      
 8001c60:	f8 00 30 e8 	calli 800e000 <strlen>                         
 8001c64:	b8 20 a0 00 	mv r20,r1                                      
 8001c68:	34 33 00 01 	addi r19,r1,1                                  
 8001c6c:	b9 a0 a8 00 	mv r21,r13                                     
  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;          
 8001c70:	b9 c0 08 00 	mv r1,r14                                      
 8001c74:	f8 00 30 e3 	calli 800e000 <strlen>                         
 8001c78:	34 31 00 01 	addi r17,r1,1                                  
  size_t source_size = source_or_null != NULL ?                       
    strlen( source_or_null ) + 1 : 0;                                 
 8001c7c:	34 0c 00 00 	mvi r12,0                                      
 8001c80:	45 e0 00 04 	be r15,r0,8001c90 <mount+0xfc>                 
 8001c84:	b9 e0 08 00 	mv r1,r15                                      
 8001c88:	f8 00 30 de 	calli 800e000 <strlen>                         
 8001c8c:	34 2c 00 01 	addi r12,r1,1                                  
  size_t target_size = strlen( target ) + 1;                          
  size_t size = sizeof( rtems_filesystem_mount_table_entry_t )        
    + filesystemtype_size + source_size + target_size;                
 8001c90:	36 63 00 74 	addi r3,r19,116                                
 8001c94:	b4 71 18 00 	add r3,r3,r17                                  
  rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size ); 
 8001c98:	34 01 00 01 	mvi r1,1                                       
 8001c9c:	b4 6c 10 00 	add r2,r3,r12                                  
 8001ca0:	fb ff fd 6a 	calli 8001248 <calloc>                         
 8001ca4:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  if ( mt_entry != NULL ) {                                           
 8001ca8:	44 20 00 75 	be r1,r0,8001e7c <mount+0x2e8>                 <== NEVER TAKEN
    char *str = (char *) mt_entry + sizeof( *mt_entry );              
 8001cac:	34 32 00 74 	addi r18,r1,116                                
                                                                      
    memcpy( str, filesystemtype, filesystemtype_size );               
 8001cb0:	b9 c0 10 00 	mv r2,r14                                      
 8001cb4:	ba 20 18 00 	mv r3,r17                                      
 8001cb8:	ba 40 08 00 	mv r1,r18                                      
 8001cbc:	f8 00 2e e6 	calli 800d854 <memcpy>                         
    mt_entry->type = str;                                             
    str += filesystemtype_size;                                       
 8001cc0:	b6 51 88 00 	add r17,r18,r17                                
                                                                      
    memcpy( str, source_or_null, source_size );                       
 8001cc4:	b9 80 18 00 	mv r3,r12                                      
 8001cc8:	b9 e0 10 00 	mv r2,r15                                      
 8001ccc:	ba 20 08 00 	mv r1,r17                                      
    mt_entry->dev = str;                                              
    str += source_size;                                               
 8001cd0:	b6 2c 60 00 	add r12,r17,r12                                
                                                                      
  if ( mt_entry != NULL ) {                                           
    char *str = (char *) mt_entry + sizeof( *mt_entry );              
                                                                      
    memcpy( str, filesystemtype, filesystemtype_size );               
    mt_entry->type = str;                                             
 8001cd4:	59 72 00 6c 	sw (r11+108),r18                               
    str += filesystemtype_size;                                       
                                                                      
    memcpy( str, source_or_null, source_size );                       
 8001cd8:	f8 00 2e df 	calli 800d854 <memcpy>                         
    mt_entry->dev = str;                                              
    str += source_size;                                               
                                                                      
    memcpy( str, target, target_size );                               
 8001cdc:	ba 60 18 00 	mv r3,r19                                      
 8001ce0:	b9 80 08 00 	mv r1,r12                                      
 8001ce4:	ba a0 10 00 	mv r2,r21                                      
    memcpy( str, filesystemtype, filesystemtype_size );               
    mt_entry->type = str;                                             
    str += filesystemtype_size;                                       
                                                                      
    memcpy( str, source_or_null, source_size );                       
    mt_entry->dev = str;                                              
 8001ce8:	59 71 00 70 	sw (r11+112),r17                               
    str += source_size;                                               
                                                                      
    memcpy( str, target, target_size );                               
 8001cec:	f8 00 2e da 	calli 800d854 <memcpy>                         
  if ( !mt_entry )                                                    
    rtems_set_errno_and_return_minus_one( ENOMEM );                   
                                                                      
  mt_entry->mt_fs_root.mt_entry = mt_entry;                           
  mt_entry->options = options;                                        
  mt_entry->pathconf_limits_and_options = rtems_filesystem_default_pathconf;
 8001cf0:	34 01 00 05 	mvi r1,5                                       
 8001cf4:	59 61 00 38 	sw (r11+56),r1                                 
 8001cf8:	34 01 00 80 	mvi r1,128                                     
 8001cfc:	59 61 00 3c 	sw (r11+60),r1                                 
 8001d00:	34 01 00 07 	mvi r1,7                                       
 8001d04:	34 03 00 ff 	mvi r3,255                                     
 8001d08:	34 0e 00 01 	mvi r14,1                                      
 8001d0c:	59 61 00 40 	sw (r11+64),r1                                 
 8001d10:	34 01 04 00 	mvi r1,1024                                    
    memcpy( str, source_or_null, source_size );                       
    mt_entry->dev = str;                                              
    str += source_size;                                               
                                                                      
    memcpy( str, target, target_size );                               
    mt_entry->target = str;                                           
 8001d14:	59 6c 00 68 	sw (r11+104),r12                               
    &target_length                                                    
  );                                                                  
  if ( !mt_entry )                                                    
    rtems_set_errno_and_return_minus_one( ENOMEM );                   
                                                                      
  mt_entry->mt_fs_root.mt_entry = mt_entry;                           
 8001d18:	59 6b 00 2c 	sw (r11+44),r11                                
  mt_entry->options = options;                                        
 8001d1c:	59 76 00 30 	sw (r11+48),r22                                
  mt_entry->pathconf_limits_and_options = rtems_filesystem_default_pathconf;
 8001d20:	59 63 00 44 	sw (r11+68),r3                                 
 8001d24:	59 63 00 48 	sw (r11+72),r3                                 
 8001d28:	59 61 00 4c 	sw (r11+76),r1                                 
 8001d2c:	59 60 00 50 	sw (r11+80),r0                                 
 8001d30:	59 60 00 54 	sw (r11+84),r0                                 
 8001d34:	59 6e 00 58 	sw (r11+88),r14                                
 8001d38:	59 60 00 5c 	sw (r11+92),r0                                 
 8001d3c:	59 60 00 60 	sw (r11+96),r0                                 
 8001d40:	59 60 00 64 	sw (r11+100),r0                                
  /*                                                                  
   *  The mount_point should be a directory with read/write/execute   
   *  permissions in the existing tree.                               
   */                                                                 
                                                                      
  if ( has_target ) {                                                 
 8001d44:	5e 00 00 28 	bne r16,r0,8001de4 <mount+0x250>               
    stop = (*routine)( mt_entry, routine_arg );                       
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  return stop;                                                        
}                                                                     
 8001d48:	78 03 08 01 	mvhi r3,0x801                                  
 8001d4c:	38 63 41 40 	ori r3,r3,0x4140                               
    }                                                                 
  } else {                                                            
    /*                                                                
     * Do we already have a base file system ?                        
     */                                                               
    if ( !rtems_chain_is_empty( &mount_chain ) ) {                    
 8001d50:	28 61 00 00 	lw r1,(r3+0)                                   
 8001d54:	78 03 08 01 	mvhi r3,0x801                                  
 8001d58:	38 63 41 44 	ori r3,r3,0x4144                               
)                                                                     
{                                                                     
  rtems_filesystem_fsmount_me_t mount_h = NULL;                       
  rtems_filesystem_location_info_t      loc;                          
  rtems_filesystem_mount_table_entry_t *mt_entry = NULL;              
  rtems_filesystem_location_info_t     *loc_to_free = NULL;           
 8001d5c:	34 0c 00 00 	mvi r12,0                                      
    }                                                                 
  } else {                                                            
    /*                                                                
     * Do we already have a base file system ?                        
     */                                                               
    if ( !rtems_chain_is_empty( &mount_chain ) ) {                    
 8001d60:	5c 23 00 51 	bne r1,r3,8001ea4 <mount+0x310>                <== NEVER TAKEN
     *  mt_point_node.node_access will be left to null to indicate that this
     *  is the root of the entire file system.                        
     */                                                               
  }                                                                   
                                                                      
  if ( (*mount_h)( mt_entry, data ) ) {                               
 8001d64:	b9 60 08 00 	mv r1,r11                                      
 8001d68:	bb 00 10 00 	mv r2,r24                                      
 8001d6c:	da e0 00 00 	call r23                                       
 8001d70:	5c 20 00 54 	bne r1,r0,8001ec0 <mount+0x32c>                
rtems_status_code rtems_libio_set_private_env(void);                  
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;   
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8001d74:	78 0c 08 01 	mvhi r12,0x801                                 
 8001d78:	39 8c 47 94 	ori r12,r12,0x4794                             
 8001d7c:	29 81 00 00 	lw r1,(r12+0)                                  
 8001d80:	34 03 00 00 	mvi r3,0                                       
 8001d84:	34 02 00 00 	mvi r2,0                                       
 8001d88:	f8 00 03 de 	calli 8002d00 <rtems_semaphore_obtain>         
 8001d8c:	78 01 08 01 	mvhi r1,0x801                                  
 8001d90:	38 21 41 40 	ori r1,r1,0x4140                               
 8001d94:	b9 60 10 00 	mv r2,r11                                      
 8001d98:	f8 00 06 cf 	calli 80038d4 <_Chain_Append>                  
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 8001d9c:	29 81 00 00 	lw r1,(r12+0)                                  
 8001da0:	f8 00 04 34 	calli 8002e70 <rtems_semaphore_release>        
  rtems_libio_unlock();                                               
                                                                      
  if ( !has_target )                                                  
    rtems_filesystem_root = mt_entry->mt_fs_root;                     
                                                                      
  return 0;                                                           
 8001da4:	34 01 00 00 	mvi r1,0                                       
   */                                                                 
  rtems_libio_lock();                                                 
  rtems_chain_append( &mount_chain, &mt_entry->Node );                
  rtems_libio_unlock();                                               
                                                                      
  if ( !has_target )                                                  
 8001da8:	5e 01 ff 96 	bne r16,r1,8001c00 <mount+0x6c>                
    rtems_filesystem_root = mt_entry->mt_fs_root;                     
 8001dac:	78 02 08 01 	mvhi r2,0x801                                  
 8001db0:	38 42 41 4c 	ori r2,r2,0x414c                               
 8001db4:	28 42 00 00 	lw r2,(r2+0)                                   
 8001db8:	29 67 00 1c 	lw r7,(r11+28)                                 
 8001dbc:	29 66 00 20 	lw r6,(r11+32)                                 
 8001dc0:	29 65 00 24 	lw r5,(r11+36)                                 
 8001dc4:	29 64 00 28 	lw r4,(r11+40)                                 
 8001dc8:	29 63 00 2c 	lw r3,(r11+44)                                 
 8001dcc:	58 47 00 18 	sw (r2+24),r7                                  
 8001dd0:	58 46 00 1c 	sw (r2+28),r6                                  
 8001dd4:	58 45 00 20 	sw (r2+32),r5                                  
 8001dd8:	58 44 00 24 	sw (r2+36),r4                                  
 8001ddc:	58 43 00 28 	sw (r2+40),r3                                  
 8001de0:	e3 ff ff 88 	bi 8001c00 <mount+0x6c>                        
   *  The mount_point should be a directory with read/write/execute   
   *  permissions in the existing tree.                               
   */                                                                 
                                                                      
  if ( has_target ) {                                                 
    if ( rtems_filesystem_evaluate_path(                              
 8001de4:	37 8c 00 40 	addi r12,sp,64                                 
 8001de8:	ba 80 10 00 	mv r2,r20                                      
 8001dec:	b9 a0 08 00 	mv r1,r13                                      
 8001df0:	34 03 00 07 	mvi r3,7                                       
 8001df4:	b9 80 20 00 	mv r4,r12                                      
 8001df8:	34 05 00 01 	mvi r5,1                                       
 8001dfc:	fb ff fd 55 	calli 8001350 <rtems_filesystem_evaluate_path> 
 8001e00:	34 02 ff ff 	mvi r2,-1                                      
 8001e04:	44 22 00 2b 	be r1,r2,8001eb0 <mount+0x31c>                 <== NEVER TAKEN
                                                                      
    /*                                                                
     *  Test to see if it is a directory                              
     */                                                               
                                                                      
    if ( loc.ops->node_type_h( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
 8001e08:	2b 82 00 4c 	lw r2,(sp+76)                                  
 8001e0c:	b9 80 08 00 	mv r1,r12                                      
 8001e10:	28 42 00 10 	lw r2,(r2+16)                                  
 8001e14:	d8 40 00 00 	call r2                                        
 8001e18:	5c 2e 00 33 	bne r1,r14,8001ee4 <mount+0x350>               
                                                                      
    /*                                                                
     *  You can only mount one file system onto a single mount point. 
     */                                                               
                                                                      
    if ( rtems_filesystem_mount_iterate( is_node_fs_root, loc.node_access ) ) {
 8001e1c:	2b 82 00 40 	lw r2,(sp+64)                                  
 8001e20:	78 01 08 00 	mvhi r1,0x800                                  
 8001e24:	38 21 1a dc 	ori r1,r1,0x1adc                               
 8001e28:	fb ff ff 30 	calli 8001ae8 <rtems_filesystem_mount_iterate> 
 8001e2c:	b8 20 68 00 	mv r13,r1                                      
 8001e30:	5c 20 00 31 	bne r1,r0,8001ef4 <mount+0x360>                
     *  traverse the tree.                                            
     */                                                               
                                                                      
    mt_entry->mt_point_node.node_access = loc.node_access;            
    mt_entry->mt_point_node.handlers = loc.handlers;                  
    mt_entry->mt_point_node.ops = loc.ops;                            
 8001e34:	2b 81 00 4c 	lw r1,(sp+76)                                  
     *  may have been allocated in loc should not be sent to freenode 
     *  until the system is unmounted.  It may be needed to correctly 
     *  traverse the tree.                                            
     */                                                               
                                                                      
    mt_entry->mt_point_node.node_access = loc.node_access;            
 8001e38:	2b 83 00 40 	lw r3,(sp+64)                                  
    /*                                                                
     *  This link to the parent is only done when we are dealing with system
     *  below the base file system                                    
     */                                                               
                                                                      
    if ( loc.ops->mount_h( mt_entry ) ) {                             
 8001e3c:	28 22 00 20 	lw r2,(r1+32)                                  
     *  may have been allocated in loc should not be sent to freenode 
     *  until the system is unmounted.  It may be needed to correctly 
     *  traverse the tree.                                            
     */                                                               
                                                                      
    mt_entry->mt_point_node.node_access = loc.node_access;            
 8001e40:	59 63 00 08 	sw (r11+8),r3                                  
    mt_entry->mt_point_node.handlers = loc.handlers;                  
    mt_entry->mt_point_node.ops = loc.ops;                            
 8001e44:	59 61 00 14 	sw (r11+20),r1                                 
     *  until the system is unmounted.  It may be needed to correctly 
     *  traverse the tree.                                            
     */                                                               
                                                                      
    mt_entry->mt_point_node.node_access = loc.node_access;            
    mt_entry->mt_point_node.handlers = loc.handlers;                  
 8001e48:	2b 83 00 48 	lw r3,(sp+72)                                  
    mt_entry->mt_point_node.ops = loc.ops;                            
    mt_entry->mt_point_node.mt_entry = loc.mt_entry;                  
 8001e4c:	2b 81 00 50 	lw r1,(sp+80)                                  
     *  until the system is unmounted.  It may be needed to correctly 
     *  traverse the tree.                                            
     */                                                               
                                                                      
    mt_entry->mt_point_node.node_access = loc.node_access;            
    mt_entry->mt_point_node.handlers = loc.handlers;                  
 8001e50:	59 63 00 10 	sw (r11+16),r3                                 
    mt_entry->mt_point_node.ops = loc.ops;                            
    mt_entry->mt_point_node.mt_entry = loc.mt_entry;                  
 8001e54:	59 61 00 18 	sw (r11+24),r1                                 
    /*                                                                
     *  This link to the parent is only done when we are dealing with system
     *  below the base file system                                    
     */                                                               
                                                                      
    if ( loc.ops->mount_h( mt_entry ) ) {                             
 8001e58:	b9 60 08 00 	mv r1,r11                                      
 8001e5c:	d8 40 00 00 	call r2                                        
 8001e60:	44 2d ff c1 	be r1,r13,8001d64 <mount+0x1d0>                <== ALWAYS TAKEN
                                                                      
  return 0;                                                           
                                                                      
cleanup_and_bail:                                                     
                                                                      
  free( mt_entry );                                                   
 8001e64:	b9 60 08 00 	mv r1,r11                                      
 8001e68:	fb ff fd 90 	calli 80014a8 <free>                           
                                                                      
  if ( loc_to_free )                                                  
    rtems_filesystem_freenode( loc_to_free );                         
 8001e6c:	b9 80 08 00 	mv r1,r12                                      
 8001e70:	fb ff fd 86 	calli 8001488 <rtems_filesystem_freenode>      
                                                                      
  return -1;                                                          
 8001e74:	34 01 ff ff 	mvi r1,-1                                      
 8001e78:	e3 ff ff 62 	bi 8001c00 <mount+0x6c>                        
    target,                                                           
    filesystemtype,                                                   
    &target_length                                                    
  );                                                                  
  if ( !mt_entry )                                                    
    rtems_set_errno_and_return_minus_one( ENOMEM );                   
 8001e7c:	f8 00 2b c0 	calli 800cd7c <__errno>                        <== NOT EXECUTED
 8001e80:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 8001e84:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8001e88:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8001e8c:	e3 ff ff 5d 	bi 8001c00 <mount+0x6c>                        <== NOT EXECUTED
  const char *target_or_null,                                         
  const char *filesystemtype,                                         
  size_t *target_length_ptr                                           
)                                                                     
{                                                                     
  const char *target = target_or_null != NULL ? target_or_null : "/"; 
 8001e90:	78 15 08 01 	mvhi r21,0x801                                 
 8001e94:	34 13 00 02 	mvi r19,2                                      
 8001e98:	34 14 00 01 	mvi r20,1                                      
 8001e9c:	3a b5 34 84 	ori r21,r21,0x3484                             
 8001ea0:	e3 ff ff 74 	bi 8001c70 <mount+0xdc>                        
  } else {                                                            
    /*                                                                
     * Do we already have a base file system ?                        
     */                                                               
    if ( !rtems_chain_is_empty( &mount_chain ) ) {                    
      errno = EINVAL;                                                 
 8001ea4:	f8 00 2b b6 	calli 800cd7c <__errno>                        <== NOT EXECUTED
 8001ea8:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 8001eac:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
                                                                      
  return 0;                                                           
                                                                      
cleanup_and_bail:                                                     
                                                                      
  free( mt_entry );                                                   
 8001eb0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8001eb4:	fb ff fd 7d 	calli 80014a8 <free>                           <== NOT EXECUTED
                                                                      
  if ( loc_to_free )                                                  
    rtems_filesystem_freenode( loc_to_free );                         
                                                                      
  return -1;                                                          
 8001eb8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8001ebc:	e3 ff ff 51 	bi 8001c00 <mount+0x6c>                        <== NOT EXECUTED
                                                                      
  if ( (*mount_h)( mt_entry, data ) ) {                               
    /*                                                                
     * Try to undo the mount operation                                
     */                                                               
    loc.ops->unmount_h( mt_entry );                                   
 8001ec0:	2b 82 00 4c 	lw r2,(sp+76)                                  
 8001ec4:	b9 60 08 00 	mv r1,r11                                      
 8001ec8:	28 42 00 28 	lw r2,(r2+40)                                  
 8001ecc:	d8 40 00 00 	call r2                                        
                                                                      
  return 0;                                                           
                                                                      
cleanup_and_bail:                                                     
                                                                      
  free( mt_entry );                                                   
 8001ed0:	b9 60 08 00 	mv r1,r11                                      
 8001ed4:	fb ff fd 75 	calli 80014a8 <free>                           
                                                                      
  if ( loc_to_free )                                                  
    rtems_filesystem_freenode( loc_to_free );                         
                                                                      
  return -1;                                                          
 8001ed8:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
cleanup_and_bail:                                                     
                                                                      
  free( mt_entry );                                                   
                                                                      
  if ( loc_to_free )                                                  
 8001edc:	45 80 ff 49 	be r12,r0,8001c00 <mount+0x6c>                 <== NEVER TAKEN
 8001ee0:	e3 ff ff e3 	bi 8001e6c <mount+0x2d8>                       
    /*                                                                
     *  Test to see if it is a directory                              
     */                                                               
                                                                      
    if ( loc.ops->node_type_h( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
      errno = ENOTDIR;                                                
 8001ee4:	f8 00 2b a6 	calli 800cd7c <__errno>                        
 8001ee8:	34 02 00 14 	mvi r2,20                                      
 8001eec:	58 22 00 00 	sw (r1+0),r2                                   
      goto cleanup_and_bail;                                          
 8001ef0:	e3 ff ff dd 	bi 8001e64 <mount+0x2d0>                       
    /*                                                                
     *  You can only mount one file system onto a single mount point. 
     */                                                               
                                                                      
    if ( rtems_filesystem_mount_iterate( is_node_fs_root, loc.node_access ) ) {
      errno = EBUSY;                                                  
 8001ef4:	f8 00 2b a2 	calli 800cd7c <__errno>                        
 8001ef8:	34 02 00 10 	mvi r2,16                                      
 8001efc:	58 22 00 00 	sw (r1+0),r2                                   
      goto cleanup_and_bail;                                          
 8001f00:	e3 ff ff d9 	bi 8001e64 <mount+0x2d0>                       
                                                                      

08002208 <mount_and_make_target_path>: const char *target, const char *filesystemtype, rtems_filesystem_options_t options, const void *data ) {
 8002208:	37 9c ff e8 	addi sp,sp,-24                                 
 800220c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8002210:	5b 8c 00 14 	sw (sp+20),r12                                 
 8002214:	5b 8d 00 10 	sw (sp+16),r13                                 
 8002218:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800221c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8002220:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002224:	b8 40 58 00 	mv r11,r2                                      
 8002228:	b8 20 78 00 	mv r15,r1                                      
 800222c:	b8 60 70 00 	mv r14,r3                                      
 8002230:	b8 80 68 00 	mv r13,r4                                      
 8002234:	b8 a0 60 00 	mv r12,r5                                      
  int rv = -1;                                                        
                                                                      
  if (target != NULL) {                                               
 8002238:	44 40 00 1b 	be r2,r0,80022a4 <mount_and_make_target_path+0x9c>
    rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);            
 800223c:	b8 40 08 00 	mv r1,r2                                       
 8002240:	34 02 01 ff 	mvi r2,511                                     
 8002244:	f8 00 02 d2 	calli 8002d8c <rtems_mkdir>                    
    if (rv == 0) {                                                    
 8002248:	44 20 00 09 	be r1,r0,800226c <mount_and_make_target_path+0x64><== ALWAYS TAKEN
  } else {                                                            
    errno = EINVAL;                                                   
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 800224c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002250:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8002254:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8002258:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800225c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8002260:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8002264:	37 9c 00 18 	addi sp,sp,24                                  
 8002268:	c3 a0 00 00 	ret                                            
  int rv = -1;                                                        
                                                                      
  if (target != NULL) {                                               
    rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);            
    if (rv == 0) {                                                    
      rv = mount(                                                     
 800226c:	b9 e0 08 00 	mv r1,r15                                      
 8002270:	b9 60 10 00 	mv r2,r11                                      
 8002274:	b9 c0 18 00 	mv r3,r14                                      
 8002278:	b9 a0 20 00 	mv r4,r13                                      
 800227c:	b9 80 28 00 	mv r5,r12                                      
 8002280:	f8 00 00 3c 	calli 8002370 <mount>                          
  } else {                                                            
    errno = EINVAL;                                                   
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8002284:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002288:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800228c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8002290:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8002294:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8002298:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800229c:	37 9c 00 18 	addi sp,sp,24                                  
 80022a0:	c3 a0 00 00 	ret                                            
        options,                                                      
        data                                                          
      );                                                              
    }                                                                 
  } else {                                                            
    errno = EINVAL;                                                   
 80022a4:	f8 00 2b 8a 	calli 800d0cc <__errno>                        
 80022a8:	34 02 00 16 	mvi r2,22                                      
 80022ac:	58 22 00 00 	sw (r1+0),r2                                   
  const char *filesystemtype,                                         
  rtems_filesystem_options_t options,                                 
  const void *data                                                    
)                                                                     
{                                                                     
  int rv = -1;                                                        
 80022b0:	34 01 ff ff 	mvi r1,-1                                      
 80022b4:	e3 ff ff e6 	bi 800224c <mount_and_make_target_path+0x44>   
                                                                      

08008e20 <mq_open>: int oflag, ... /* mode_t mode, */ /* struct mq_attr attr */ ) {
 8008e20:	37 9c ff b8 	addi sp,sp,-72                                 
 8008e24:	5b 8b 00 20 	sw (sp+32),r11                                 
 8008e28:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8008e2c:	5b 8d 00 18 	sw (sp+24),r13                                 
 8008e30:	5b 8e 00 14 	sw (sp+20),r14                                 
 8008e34:	5b 8f 00 10 	sw (sp+16),r15                                 
 8008e38:	5b 90 00 0c 	sw (sp+12),r16                                 
 8008e3c:	5b 91 00 08 	sw (sp+8),r17                                  
 8008e40:	5b 9d 00 04 	sw (sp+4),ra                                   
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 8008e44:	78 09 08 02 	mvhi r9,0x802                                  
 8008e48:	39 29 9e 18 	ori r9,r9,0x9e18                               
 8008e4c:	29 2a 00 00 	lw r10,(r9+0)                                  
 8008e50:	b8 20 80 00 	mv r16,r1                                      
 8008e54:	5b 82 00 30 	sw (sp+48),r2                                  
 8008e58:	35 4a 00 01 	addi r10,r10,1                                 
 8008e5c:	5b 83 00 34 	sw (sp+52),r3                                  
 8008e60:	5b 84 00 38 	sw (sp+56),r4                                  
 8008e64:	5b 85 00 3c 	sw (sp+60),r5                                  
 8008e68:	5b 86 00 40 	sw (sp+64),r6                                  
 8008e6c:	5b 87 00 44 	sw (sp+68),r7                                  
 8008e70:	5b 88 00 48 	sw (sp+72),r8                                  
 8008e74:	b8 40 68 00 	mv r13,r2                                      
 8008e78:	59 2a 00 00 	sw (r9+0),r10                                  
  POSIX_Message_queue_Control_fd *the_mq_fd;                          
  Objects_Locations               location;                           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 8008e7c:	20 4f 02 00 	andi r15,r2,0x200                              
  /* struct mq_attr  attr */                                          
)                                                                     
{                                                                     
  va_list                         arg;                                
  mode_t                          mode;                               
  struct mq_attr                 *attr = NULL;                        
 8008e80:	34 11 00 00 	mvi r17,0                                      
  POSIX_Message_queue_Control_fd *the_mq_fd;                          
  Objects_Locations               location;                           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 8008e84:	5d e0 00 38 	bne r15,r0,8008f64 <mq_open+0x144>             
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *                 
  _POSIX_Message_queue_Allocate_fd( void )                            
{                                                                     
  return (POSIX_Message_queue_Control_fd *)                           
    _Objects_Allocate( &_POSIX_Message_queue_Information_fds );       
 8008e88:	78 0c 08 02 	mvhi r12,0x802                                 
 8008e8c:	39 8c a2 58 	ori r12,r12,0xa258                             
 8008e90:	b9 80 08 00 	mv r1,r12                                      
 8008e94:	f8 00 0c 1e 	calli 800bf0c <_Objects_Allocate>              
 8008e98:	b8 20 58 00 	mv r11,r1                                      
    attr = (struct mq_attr *) va_arg( arg, struct mq_attr * );        
    va_end(arg);                                                      
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
 8008e9c:	44 20 00 39 	be r1,r0,8008f80 <mq_open+0x160>               <== NEVER TAKEN
    _Thread_Enable_dispatch();                                        
    rtems_set_errno_and_return_minus_one( ENFILE );                   
  }                                                                   
  the_mq_fd->oflag = oflag;                                           
 8008ea0:	58 2d 00 14 	sw (r1+20),r13                                 
                                                                      
  status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );       
 8008ea4:	37 82 00 2c 	addi r2,sp,44                                  
 8008ea8:	ba 00 08 00 	mv r1,r16                                      
 8008eac:	f8 00 1f cd 	calli 8010de0 <_POSIX_Message_queue_Name_to_id>
 8008eb0:	b8 20 70 00 	mv r14,r1                                      
   *  If the name to id translation worked, then the message queue exists
   *  and we can just return a pointer to the id.  Otherwise we may   
   *  need to check to see if this is a "message queue does not exist"
   *  or some other miscellaneous error on the name.                  
   */                                                                 
  if ( status ) {                                                     
 8008eb4:	5c 20 00 22 	bne r1,r0,8008f3c <mq_open+0x11c>              
                                                                      
  } else {                /* name -> ID translation succeeded */      
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
 8008eb8:	21 ad 0a 00 	andi r13,r13,0xa00                             
 8008ebc:	34 01 0a 00 	mvi r1,2560                                    
 8008ec0:	45 a1 00 36 	be r13,r1,8008f98 <mq_open+0x178>              
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Message_queue_Control *)                              
    _Objects_Get( &_POSIX_Message_queue_Information, id, location );  
 8008ec4:	2b 82 00 2c 	lw r2,(sp+44)                                  
 8008ec8:	78 01 08 02 	mvhi r1,0x802                                  
 8008ecc:	37 83 00 24 	addi r3,sp,36                                  
 8008ed0:	38 21 a0 cc 	ori r1,r1,0xa0cc                               
 8008ed4:	f8 00 0d 96 	calli 800c52c <_Objects_Get>                   
    /*                                                                
     * In this case we need to do an ID->pointer conversion to        
     * check the mode.                                                
     */                                                               
    the_mq = _POSIX_Message_queue_Get( the_mq_id, &location );        
    the_mq->open_count += 1;                                          
 8008ed8:	28 24 00 18 	lw r4,(r1+24)                                  
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8008edc:	2d 62 00 0a 	lhu r2,(r11+10)                                
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8008ee0:	29 83 00 1c 	lw r3,(r12+28)                                 
 8008ee4:	34 84 00 01 	addi r4,r4,1                                   
 8008ee8:	b4 42 10 00 	add r2,r2,r2                                   
 8008eec:	58 24 00 18 	sw (r1+24),r4                                  
 8008ef0:	b4 42 10 00 	add r2,r2,r2                                   
                                                                      
    /*                                                                
     * In this case we need to do an ID->pointer conversion to        
     * check the mode.                                                
     */                                                               
    the_mq = _POSIX_Message_queue_Get( the_mq_id, &location );        
 8008ef4:	5b 81 00 28 	sw (sp+40),r1                                  
    the_mq->open_count += 1;                                          
    the_mq_fd->Queue = the_mq;                                        
 8008ef8:	59 61 00 10 	sw (r11+16),r1                                 
 8008efc:	b4 62 10 00 	add r2,r3,r2                                   
 8008f00:	58 4b 00 00 	sw (r2+0),r11                                  
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
 8008f04:	59 60 00 0c 	sw (r11+12),r0                                 
    _Objects_Open_string(                                             
      &_POSIX_Message_queue_Information_fds,                          
      &the_mq_fd->Object,                                             
      NULL                                                            
    );                                                                
    _Thread_Enable_dispatch();                                        
 8008f08:	f8 00 11 89 	calli 800d52c <_Thread_Enable_dispatch>        
    _Thread_Enable_dispatch();                                        
 8008f0c:	f8 00 11 88 	calli 800d52c <_Thread_Enable_dispatch>        
    return (mqd_t)the_mq_fd->Object.id;                               
 8008f10:	29 61 00 08 	lw r1,(r11+8)                                  
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
 8008f14:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008f18:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8008f1c:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8008f20:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8008f24:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8008f28:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8008f2c:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8008f30:	2b 91 00 08 	lw r17,(sp+8)                                  
 8008f34:	37 9c 00 48 	addi sp,sp,72                                  
 8008f38:	c3 a0 00 00 	ret                                            
  if ( status ) {                                                     
    /*                                                                
     * Unless provided a valid name that did not already exist        
     * and we are willing to create then it is an error.              
     */                                                               
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
 8008f3c:	34 01 00 02 	mvi r1,2                                       
 8008f40:	45 c1 00 1f 	be r14,r1,8008fbc <mq_open+0x19c>              
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (              
  POSIX_Message_queue_Control_fd *the_mq_fd                           
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
 8008f44:	b9 80 08 00 	mv r1,r12                                      
 8008f48:	b9 60 10 00 	mv r2,r11                                      
 8008f4c:	f8 00 0c ff 	calli 800c348 <_Objects_Free>                  
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
 8008f50:	f8 00 11 77 	calli 800d52c <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( status, mqd_t );     
 8008f54:	f8 00 30 bc 	calli 8015244 <__errno>                        
 8008f58:	58 2e 00 00 	sw (r1+0),r14                                  
 8008f5c:	34 01 ff ff 	mvi r1,-1                                      
 8008f60:	e3 ff ff ed 	bi 8008f14 <mq_open+0xf4>                      
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *                 
  _POSIX_Message_queue_Allocate_fd( void )                            
{                                                                     
  return (POSIX_Message_queue_Control_fd *)                           
    _Objects_Allocate( &_POSIX_Message_queue_Information_fds );       
 8008f64:	78 0c 08 02 	mvhi r12,0x802                                 
 8008f68:	39 8c a2 58 	ori r12,r12,0xa258                             
 8008f6c:	b9 80 08 00 	mv r1,r12                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
    va_start(arg, oflag);                                             
    mode = (mode_t) va_arg( arg, unsigned int );                      
    attr = (struct mq_attr *) va_arg( arg, struct mq_attr * );        
 8008f70:	2b 91 00 38 	lw r17,(sp+56)                                 
 8008f74:	f8 00 0b e6 	calli 800bf0c <_Objects_Allocate>              
 8008f78:	b8 20 58 00 	mv r11,r1                                      
    va_end(arg);                                                      
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
 8008f7c:	5c 20 ff c9 	bne r1,r0,8008ea0 <mq_open+0x80>               
    _Thread_Enable_dispatch();                                        
 8008f80:	f8 00 11 6b 	calli 800d52c <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( ENFILE );                   
 8008f84:	f8 00 30 b0 	calli 8015244 <__errno>                        
 8008f88:	34 02 00 17 	mvi r2,23                                      
 8008f8c:	58 22 00 00 	sw (r1+0),r2                                   
 8008f90:	34 01 ff ff 	mvi r1,-1                                      
 8008f94:	e3 ff ff e0 	bi 8008f14 <mq_open+0xf4>                      
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (              
  POSIX_Message_queue_Control_fd *the_mq_fd                           
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
 8008f98:	b9 60 10 00 	mv r2,r11                                      
 8008f9c:	b9 80 08 00 	mv r1,r12                                      
 8008fa0:	f8 00 0c ea 	calli 800c348 <_Objects_Free>                  
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
 8008fa4:	f8 00 11 62 	calli 800d52c <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );     
 8008fa8:	f8 00 30 a7 	calli 8015244 <__errno>                        
 8008fac:	34 02 00 11 	mvi r2,17                                      
 8008fb0:	58 22 00 00 	sw (r1+0),r2                                   
 8008fb4:	34 01 ff ff 	mvi r1,-1                                      
 8008fb8:	e3 ff ff d7 	bi 8008f14 <mq_open+0xf4>                      
  if ( status ) {                                                     
    /*                                                                
     * Unless provided a valid name that did not already exist        
     * and we are willing to create then it is an error.              
     */                                                               
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
 8008fbc:	45 e0 ff e2 	be r15,r0,8008f44 <mq_open+0x124>              
                                                                      
  /*                                                                  
   *  At this point, the message queue does not exist and everything has been
   *  checked. We should go ahead and create a message queue.         
   */                                                                 
  status = _POSIX_Message_queue_Create_support(                       
 8008fc0:	34 02 00 01 	mvi r2,1                                       
 8008fc4:	ba 00 08 00 	mv r1,r16                                      
 8008fc8:	ba 20 18 00 	mv r3,r17                                      
 8008fcc:	37 84 00 28 	addi r4,sp,40                                  
 8008fd0:	f8 00 1f 16 	calli 8010c28 <_POSIX_Message_queue_Create_support>
  );                                                                  
                                                                      
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
  if ( status == -1 ) {                                               
 8008fd4:	34 02 ff ff 	mvi r2,-1                                      
 8008fd8:	44 22 00 0d 	be r1,r2,800900c <mq_open+0x1ec>               
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8008fdc:	2d 61 00 0a 	lhu r1,(r11+10)                                
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8008fe0:	29 82 00 1c 	lw r2,(r12+28)                                 
    _POSIX_Message_queue_Free_fd( the_mq_fd );                        
    _Thread_Enable_dispatch();                                        
    return (mqd_t) -1;                                                
  }                                                                   
                                                                      
  the_mq_fd->Queue = the_mq;                                          
 8008fe4:	2b 83 00 28 	lw r3,(sp+40)                                  
 8008fe8:	b4 21 08 00 	add r1,r1,r1                                   
 8008fec:	b4 21 08 00 	add r1,r1,r1                                   
 8008ff0:	b4 41 08 00 	add r1,r2,r1                                   
 8008ff4:	59 63 00 10 	sw (r11+16),r3                                 
 8008ff8:	58 2b 00 00 	sw (r1+0),r11                                  
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
 8008ffc:	59 60 00 0c 	sw (r11+12),r0                                 
    &_POSIX_Message_queue_Information_fds,                            
    &the_mq_fd->Object,                                               
    NULL                                                              
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 8009000:	f8 00 11 4b 	calli 800d52c <_Thread_Enable_dispatch>        
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
 8009004:	29 61 00 08 	lw r1,(r11+8)                                  
 8009008:	e3 ff ff c3 	bi 8008f14 <mq_open+0xf4>                      
 800900c:	b9 80 08 00 	mv r1,r12                                      
 8009010:	b9 60 10 00 	mv r2,r11                                      
 8009014:	f8 00 0c cd 	calli 800c348 <_Objects_Free>                  
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
  if ( status == -1 ) {                                               
    _POSIX_Message_queue_Free_fd( the_mq_fd );                        
    _Thread_Enable_dispatch();                                        
 8009018:	f8 00 11 45 	calli 800d52c <_Thread_Enable_dispatch>        
    return (mqd_t) -1;                                                
 800901c:	34 01 ff ff 	mvi r1,-1                                      
 8009020:	e3 ff ff bd 	bi 8008f14 <mq_open+0xf4>                      
                                                                      

08002170 <newlib_delete_hook>: void newlib_delete_hook( rtems_tcb *current_task, rtems_tcb *deleted_task ) {
 8002170:	37 9c ff f0 	addi sp,sp,-16                                 
 8002174:	5b 8b 00 10 	sw (sp+16),r11                                 
 8002178:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800217c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8002180:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002184:	b8 20 68 00 	mv r13,r1                                      
 8002188:	b8 40 58 00 	mv r11,r2                                      
                                                                      
  /*                                                                  
   * The reentrancy structure was allocated by newlib using malloc()  
   */                                                                 
                                                                      
  if (current_task == deleted_task) {                                 
 800218c:	44 22 00 1e 	be r1,r2,8002204 <newlib_delete_hook+0x94>     
    ptr = _REENT;                                                     
  } else {                                                            
    ptr = deleted_task->libc_reent;                                   
 8002190:	28 4c 01 18 	lw r12,(r2+280)                                
  }                                                                   
                                                                      
  if (ptr && ptr != _global_impure_ptr) {                             
 8002194:	45 80 00 0b 	be r12,r0,80021c0 <newlib_delete_hook+0x50>    <== NEVER TAKEN
 8002198:	78 02 08 01 	mvhi r2,0x801                                  
 800219c:	38 42 3b 5c 	ori r2,r2,0x3b5c                               
 80021a0:	28 41 00 00 	lw r1,(r2+0)                                   
 80021a4:	45 81 00 07 	be r12,r1,80021c0 <newlib_delete_hook+0x50>    
    _reclaim_reent(ptr);                                              
*/                                                                    
    /*                                                                
     *  Just in case there are some buffers lying around.             
     */                                                               
    _fwalk(ptr, newlib_free_buffers);                                 
 80021a8:	78 02 08 00 	mvhi r2,0x800                                  
 80021ac:	b9 80 08 00 	mv r1,r12                                      
 80021b0:	38 42 1f 08 	ori r2,r2,0x1f08                               
 80021b4:	f8 00 2d 40 	calli 800d6b4 <_fwalk>                         
#if REENT_MALLOCED                                                    
    free(ptr);                                                        
#else                                                                 
    _Workspace_Free(ptr);                                             
 80021b8:	b9 80 08 00 	mv r1,r12                                      
 80021bc:	f8 00 13 bf 	calli 80070b8 <_Workspace_Free>                
#endif                                                                
  }                                                                   
                                                                      
  deleted_task->libc_reent = NULL;                                    
 80021c0:	59 60 01 18 	sw (r11+280),r0                                
                                                                      
  /*                                                                  
   * Require the switch back to another task to install its own       
   */                                                                 
                                                                      
  if ( current_task == deleted_task ) {                               
 80021c4:	45 ab 00 07 	be r13,r11,80021e0 <newlib_delete_hook+0x70>   
    _REENT = 0;                                                       
  }                                                                   
}                                                                     
 80021c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80021cc:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80021d0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80021d4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80021d8:	37 9c 00 10 	addi sp,sp,16                                  
 80021dc:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * Require the switch back to another task to install its own       
   */                                                                 
                                                                      
  if ( current_task == deleted_task ) {                               
    _REENT = 0;                                                       
 80021e0:	78 01 08 01 	mvhi r1,0x801                                  
 80021e4:	38 21 41 e8 	ori r1,r1,0x41e8                               
 80021e8:	58 20 00 00 	sw (r1+0),r0                                   
  }                                                                   
}                                                                     
 80021ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80021f0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80021f4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80021f8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80021fc:	37 9c 00 10 	addi sp,sp,16                                  
 8002200:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * The reentrancy structure was allocated by newlib using malloc()  
   */                                                                 
                                                                      
  if (current_task == deleted_task) {                                 
    ptr = _REENT;                                                     
 8002204:	78 01 08 01 	mvhi r1,0x801                                  
 8002208:	38 21 41 e8 	ori r1,r1,0x41e8                               
 800220c:	28 2c 00 00 	lw r12,(r1+0)                                  
 8002210:	e3 ff ff e1 	bi 8002194 <newlib_delete_hook+0x24>           
                                                                      

08001f08 <newlib_free_buffers>: */ int newlib_free_buffers( FILE *fp ) {
 8001f08:	37 9c ff f8 	addi sp,sp,-8                                  
 8001f0c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8001f10:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001f14:	b8 20 58 00 	mv r11,r1                                      
  switch ( fileno(fp) ) {                                             
 8001f18:	f8 00 2c ae 	calli 800d1d0 <fileno>                         
 8001f1c:	34 02 00 02 	mvi r2,2                                       
 8001f20:	54 22 00 09 	bgu r1,r2,8001f44 <newlib_free_buffers+0x3c>   <== NEVER TAKEN
    case 0:                                                           
    case 1:                                                           
    case 2:                                                           
      if (fp->_flags & __SMBF) {                                      
 8001f24:	2d 61 00 0c 	lhu r1,(r11+12)                                
 8001f28:	20 21 00 80 	andi r1,r1,0x80                                
 8001f2c:	5c 20 00 0d 	bne r1,r0,8001f60 <newlib_free_buffers+0x58>   <== NEVER TAKEN
      break;                                                          
    default:                                                          
     fclose(fp);                                                      
  }                                                                   
  return 0;                                                           
}                                                                     
 8001f30:	34 01 00 00 	mvi r1,0                                       
 8001f34:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001f38:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8001f3c:	37 9c 00 08 	addi sp,sp,8                                   
 8001f40:	c3 a0 00 00 	ret                                            
        fp->_flags &= ~__SMBF;                                        
        fp->_bf._base = fp->_p = (unsigned char *) NULL;              
      }                                                               
      break;                                                          
    default:                                                          
     fclose(fp);                                                      
 8001f44:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8001f48:	f8 00 2b ed 	calli 800cefc <fclose>                         <== NOT EXECUTED
  }                                                                   
  return 0;                                                           
}                                                                     
 8001f4c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8001f50:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8001f54:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8001f58:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8001f5c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  switch ( fileno(fp) ) {                                             
    case 0:                                                           
    case 1:                                                           
    case 2:                                                           
      if (fp->_flags & __SMBF) {                                      
        free( fp->_bf._base );                                        
 8001f60:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8001f64:	fb ff fd 51 	calli 80014a8 <free>                           <== NOT EXECUTED
        fp->_flags &= ~__SMBF;                                        
 8001f68:	2d 61 00 0c 	lhu r1,(r11+12)                                <== NOT EXECUTED
        fp->_bf._base = fp->_p = (unsigned char *) NULL;              
 8001f6c:	59 60 00 00 	sw (r11+0),r0                                  <== NOT EXECUTED
 8001f70:	59 60 00 10 	sw (r11+16),r0                                 <== NOT EXECUTED
    case 0:                                                           
    case 1:                                                           
    case 2:                                                           
      if (fp->_flags & __SMBF) {                                      
        free( fp->_bf._base );                                        
        fp->_flags &= ~__SMBF;                                        
 8001f74:	20 21 ff 7f 	andi r1,r1,0xff7f                              <== NOT EXECUTED
 8001f78:	0d 61 00 0c 	sh (r11+12),r1                                 <== NOT EXECUTED
      break;                                                          
    default:                                                          
     fclose(fp);                                                      
  }                                                                   
  return 0;                                                           
}                                                                     
 8001f7c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8001f80:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8001f84:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8001f88:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8001f8c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080022a0 <open>: int open( const char *pathname, int flags, ... ) {
 80022a0:	37 9c ff ac 	addi sp,sp,-84                                 
 80022a4:	5b 8b 00 24 	sw (sp+36),r11                                 
 80022a8:	5b 8c 00 20 	sw (sp+32),r12                                 
 80022ac:	5b 8d 00 1c 	sw (sp+28),r13                                 
 80022b0:	5b 8e 00 18 	sw (sp+24),r14                                 
 80022b4:	5b 8f 00 14 	sw (sp+20),r15                                 
 80022b8:	5b 90 00 10 	sw (sp+16),r16                                 
 80022bc:	5b 91 00 0c 	sw (sp+12),r17                                 
 80022c0:	5b 92 00 08 	sw (sp+8),r18                                  
 80022c4:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   * Set the Evaluation flags                                         
   */                                                                 
  eval_flags = 0;                                                     
  status = flags + 1;                                                 
 80022c8:	34 49 00 01 	addi r9,r2,1                                   
  if ( ( status & _FREAD ) == _FREAD )                                
    eval_flags |= RTEMS_LIBIO_PERMS_READ;                             
 80022cc:	21 2c 00 01 	andi r12,r9,0x1                                
 80022d0:	b5 8c 60 00 	add r12,r12,r12                                
int open(                                                             
  const char   *pathname,                                             
  int           flags,                                                
  ...                                                                 
)                                                                     
{                                                                     
 80022d4:	5b 82 00 3c 	sw (sp+60),r2                                  
 80022d8:	5b 83 00 40 	sw (sp+64),r3                                  
 80022dc:	5b 84 00 44 	sw (sp+68),r4                                  
 80022e0:	5b 85 00 48 	sw (sp+72),r5                                  
 80022e4:	5b 86 00 4c 	sw (sp+76),r6                                  
 80022e8:	5b 87 00 50 	sw (sp+80),r7                                  
 80022ec:	5b 88 00 54 	sw (sp+84),r8                                  
   */                                                                 
  eval_flags = 0;                                                     
  status = flags + 1;                                                 
  if ( ( status & _FREAD ) == _FREAD )                                
    eval_flags |= RTEMS_LIBIO_PERMS_READ;                             
  if ( ( status & _FWRITE ) == _FWRITE )                              
 80022f0:	21 29 00 02 	andi r9,r9,0x2                                 
int open(                                                             
  const char   *pathname,                                             
  int           flags,                                                
  ...                                                                 
)                                                                     
{                                                                     
 80022f4:	b8 40 68 00 	mv r13,r2                                      
 80022f8:	b8 20 70 00 	mv r14,r1                                      
   * Set the Evaluation flags                                         
   */                                                                 
  eval_flags = 0;                                                     
  status = flags + 1;                                                 
  if ( ( status & _FREAD ) == _FREAD )                                
    eval_flags |= RTEMS_LIBIO_PERMS_READ;                             
 80022fc:	b5 8c 60 00 	add r12,r12,r12                                
  if ( ( status & _FWRITE ) == _FWRITE )                              
 8002300:	45 20 00 02 	be r9,r0,8002308 <open+0x68>                   
    eval_flags |= RTEMS_LIBIO_PERMS_WRITE;                            
 8002304:	39 8c 00 02 	ori r12,r12,0x2                                
                                                                      
  va_start(ap, flags);                                                
                                                                      
  mode = va_arg( ap, int );                                           
 8002308:	2b 91 00 40 	lw r17,(sp+64)                                 
   *             code does not require changes here since network file
   *             descriptors are obtained using socket(), not open(). 
   */                                                                 
                                                                      
  /* allocate a file control block */                                 
  iop = rtems_libio_allocate();                                       
 800230c:	f8 00 19 4b 	calli 8008838 <rtems_libio_allocate>           
 8002310:	b8 20 58 00 	mv r11,r1                                      
  if ( iop == 0 ) {                                                   
 8002314:	44 20 00 3c 	be r1,r0,8002404 <open+0x164>                  
  }                                                                   
                                                                      
  /*                                                                  
   *  See if the file exists.                                         
   */                                                                 
  status = rtems_filesystem_evaluate_path(                            
 8002318:	b9 c0 08 00 	mv r1,r14                                      
 800231c:	f8 00 2f 39 	calli 800e000 <strlen>                         
 8002320:	37 8f 00 28 	addi r15,sp,40                                 
 8002324:	b8 20 10 00 	mv r2,r1                                       
 8002328:	b9 80 18 00 	mv r3,r12                                      
 800232c:	b9 c0 08 00 	mv r1,r14                                      
 8002330:	b9 e0 20 00 	mv r4,r15                                      
 8002334:	34 05 00 01 	mvi r5,1                                       
 8002338:	fb ff fc 06 	calli 8001350 <rtems_filesystem_evaluate_path> 
    pathname, strlen( pathname ), eval_flags, &loc, true );           
                                                                      
  if ( status == -1 ) {                                               
 800233c:	34 02 ff ff 	mvi r2,-1                                      
 8002340:	44 22 00 46 	be r1,r2,8002458 <open+0x1b8>                  
    if ( status != 0 ) {   /* The file did not exist */               
      rc = EACCES;                                                    
      goto done;                                                      
    }                                                                 
                                                                      
  } else if ((flags & (O_EXCL|O_CREAT)) == (O_EXCL|O_CREAT)) {        
 8002344:	21 a2 0a 00 	andi r2,r13,0xa00                              
 8002348:	34 01 0a 00 	mvi r1,2560                                    
 800234c:	44 41 00 33 	be r2,r1,8002418 <open+0x178>                  <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Fill in the file control block based on the loc structure       
   *  returned by successful path evaluation.                         
   */                                                                 
  iop->flags     |= rtems_libio_fcntl_flags( flags );                 
 8002350:	b9 a0 08 00 	mv r1,r13                                      
 8002354:	29 6c 00 18 	lw r12,(r11+24)                                
 8002358:	f8 00 19 0d 	calli 800878c <rtems_libio_fcntl_flags>        
  iop->pathinfo   = loc;                                              
 800235c:	2b 82 00 30 	lw r2,(sp+48)                                  
                                                                      
  /*                                                                  
   *  Fill in the file control block based on the loc structure       
   *  returned by successful path evaluation.                         
   */                                                                 
  iop->flags     |= rtems_libio_fcntl_flags( flags );                 
 8002360:	b8 2c 08 00 	or r1,r1,r12                                   
  iop->pathinfo   = loc;                                              
                                                                      
  rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
 8002364:	b9 a0 18 00 	mv r3,r13                                      
 8002368:	28 45 00 00 	lw r5,(r2+0)                                   
                                                                      
  /*                                                                  
   *  Fill in the file control block based on the loc structure       
   *  returned by successful path evaluation.                         
   */                                                                 
  iop->flags     |= rtems_libio_fcntl_flags( flags );                 
 800236c:	59 61 00 18 	sw (r11+24),r1                                 
  iop->pathinfo   = loc;                                              
 8002370:	2b 81 00 28 	lw r1,(sp+40)                                  
 8002374:	59 62 00 24 	sw (r11+36),r2                                 
                                                                      
  rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
 8002378:	ba 20 20 00 	mv r4,r17                                      
  /*                                                                  
   *  Fill in the file control block based on the loc structure       
   *  returned by successful path evaluation.                         
   */                                                                 
  iop->flags     |= rtems_libio_fcntl_flags( flags );                 
  iop->pathinfo   = loc;                                              
 800237c:	59 61 00 1c 	sw (r11+28),r1                                 
 8002380:	2b 81 00 2c 	lw r1,(sp+44)                                  
                                                                      
  rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
 8002384:	b9 c0 10 00 	mv r2,r14                                      
  /*                                                                  
   *  Fill in the file control block based on the loc structure       
   *  returned by successful path evaluation.                         
   */                                                                 
  iop->flags     |= rtems_libio_fcntl_flags( flags );                 
  iop->pathinfo   = loc;                                              
 8002388:	59 61 00 20 	sw (r11+32),r1                                 
 800238c:	2b 81 00 34 	lw r1,(sp+52)                                  
 8002390:	59 61 00 28 	sw (r11+40),r1                                 
 8002394:	2b 81 00 38 	lw r1,(sp+56)                                  
 8002398:	59 61 00 2c 	sw (r11+44),r1                                 
                                                                      
  rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
 800239c:	b9 60 08 00 	mv r1,r11                                      
 80023a0:	d8 a0 00 00 	call r5                                        
  if ( rc ) {                                                         
 80023a4:	5c 20 00 26 	bne r1,r0,800243c <open+0x19c>                 
 80023a8:	78 0c 08 01 	mvhi r12,0x801                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  Optionally truncate the file.                                   
   */                                                                 
  if ( (flags & O_TRUNC) == O_TRUNC ) {                               
 80023ac:	21 ad 04 00 	andi r13,r13,0x400                             
 80023b0:	39 8c 47 8c 	ori r12,r12,0x478c                             
 80023b4:	5d a1 00 31 	bne r13,r1,8002478 <open+0x1d8>                
    if ( loc_to_free )                                                
      rtems_filesystem_freenode( loc_to_free );                       
    rtems_set_errno_and_return_minus_one( rc );                       
  }                                                                   
                                                                      
  return iop - rtems_libio_iops;                                      
 80023b8:	29 81 00 00 	lw r1,(r12+0)                                  
 80023bc:	c9 61 08 00 	sub r1,r11,r1                                  
 80023c0:	14 21 00 01 	sri r1,r1,1                                    
 80023c4:	14 21 00 01 	sri r1,r1,1                                    
 80023c8:	14 21 00 01 	sri r1,r1,1                                    
 80023cc:	14 21 00 01 	sri r1,r1,1                                    
 80023d0:	14 21 00 01 	sri r1,r1,1                                    
 80023d4:	14 21 00 01 	sri r1,r1,1                                    
}                                                                     
 80023d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80023dc:	2b 8b 00 24 	lw r11,(sp+36)                                 
 80023e0:	2b 8c 00 20 	lw r12,(sp+32)                                 
 80023e4:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 80023e8:	2b 8e 00 18 	lw r14,(sp+24)                                 
 80023ec:	2b 8f 00 14 	lw r15,(sp+20)                                 
 80023f0:	2b 90 00 10 	lw r16,(sp+16)                                 
 80023f4:	2b 91 00 0c 	lw r17,(sp+12)                                 
 80023f8:	2b 92 00 08 	lw r18,(sp+8)                                  
 80023fc:	37 9c 00 54 	addi sp,sp,84                                  
 8002400:	c3 a0 00 00 	ret                                            
   */                                                                 
                                                                      
  /* allocate a file control block */                                 
  iop = rtems_libio_allocate();                                       
  if ( iop == 0 ) {                                                   
    rc = ENFILE;                                                      
 8002404:	34 10 00 17 	mvi r16,23                                     
  if ( rc ) {                                                         
    if ( iop )                                                        
      rtems_libio_free( iop );                                        
    if ( loc_to_free )                                                
      rtems_filesystem_freenode( loc_to_free );                       
    rtems_set_errno_and_return_minus_one( rc );                       
 8002408:	f8 00 2a 5d 	calli 800cd7c <__errno>                        
 800240c:	58 30 00 00 	sw (r1+0),r16                                  
 8002410:	34 01 ff ff 	mvi r1,-1                                      
 8002414:	e3 ff ff f1 	bi 80023d8 <open+0x138>                        
    }                                                                 
                                                                      
  } else if ((flags & (O_EXCL|O_CREAT)) == (O_EXCL|O_CREAT)) {        
    /* We were trying to create a file that already exists */         
    rc = EEXIST;                                                      
    loc_to_free = &loc;                                               
 8002418:	b9 e0 90 00 	mv r18,r15                                     
      goto done;                                                      
    }                                                                 
                                                                      
  } else if ((flags & (O_EXCL|O_CREAT)) == (O_EXCL|O_CREAT)) {        
    /* We were trying to create a file that already exists */         
    rc = EEXIST;                                                      
 800241c:	34 10 00 11 	mvi r16,17                                     
   */                                                                 
done:                                                                 
  va_end(ap);                                                         
                                                                      
  if ( rc ) {                                                         
    if ( iop )                                                        
 8002420:	45 60 00 03 	be r11,r0,800242c <open+0x18c>                 
      rtems_libio_free( iop );                                        
 8002424:	b9 60 08 00 	mv r1,r11                                      
 8002428:	f8 00 19 3f 	calli 8008924 <rtems_libio_free>               
    if ( loc_to_free )                                                
 800242c:	46 40 ff f7 	be r18,r0,8002408 <open+0x168>                 
      rtems_filesystem_freenode( loc_to_free );                       
 8002430:	ba 40 08 00 	mv r1,r18                                      
 8002434:	fb ff fc 15 	calli 8001488 <rtems_filesystem_freenode>      
 8002438:	e3 ff ff f4 	bi 8002408 <open+0x168>                        
  iop->flags     |= rtems_libio_fcntl_flags( flags );                 
  iop->pathinfo   = loc;                                              
                                                                      
  rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
  if ( rc ) {                                                         
    rc = errno;                                                       
 800243c:	f8 00 2a 50 	calli 800cd7c <__errno>                        
 8002440:	28 30 00 00 	lw r16,(r1+0)                                  
    rc = EEXIST;                                                      
    loc_to_free = &loc;                                               
    goto done;                                                        
  }                                                                   
                                                                      
  loc_to_free = &loc;                                                 
 8002444:	b9 e0 90 00 	mv r18,r15                                     
 8002448:	78 0c 08 01 	mvhi r12,0x801                                 
 800244c:	39 8c 47 8c 	ori r12,r12,0x478c                             
   *  Single exit and clean up path.                                  
   */                                                                 
done:                                                                 
  va_end(ap);                                                         
                                                                      
  if ( rc ) {                                                         
 8002450:	46 00 ff da 	be r16,r0,80023b8 <open+0x118>                 <== NEVER TAKEN
 8002454:	e3 ff ff f3 	bi 8002420 <open+0x180>                        
   */                                                                 
  status = rtems_filesystem_evaluate_path(                            
    pathname, strlen( pathname ), eval_flags, &loc, true );           
                                                                      
  if ( status == -1 ) {                                               
    if ( errno != ENOENT ) {                                          
 8002458:	f8 00 2a 49 	calli 800cd7c <__errno>                        
 800245c:	28 22 00 00 	lw r2,(r1+0)                                   
 8002460:	34 01 00 02 	mvi r1,2                                       
 8002464:	44 41 00 20 	be r2,r1,80024e4 <open+0x244>                  
      rc = errno;                                                     
 8002468:	f8 00 2a 45 	calli 800cd7c <__errno>                        
 800246c:	28 30 00 00 	lw r16,(r1+0)                                  
  int                                 mode;                           
  int                                 rc;                             
  rtems_libio_t                      *iop = 0;                        
  int                                 status;                         
  rtems_filesystem_location_info_t    loc;                            
  rtems_filesystem_location_info_t   *loc_to_free = NULL;             
 8002470:	34 12 00 00 	mvi r18,0                                      
    pathname, strlen( pathname ), eval_flags, &loc, true );           
                                                                      
  if ( status == -1 ) {                                               
    if ( errno != ENOENT ) {                                          
      rc = errno;                                                     
      goto done;                                                      
 8002474:	e3 ff ff f5 	bi 8002448 <open+0x1a8>                        
                                                                      
  /*                                                                  
   *  Optionally truncate the file.                                   
   */                                                                 
  if ( (flags & O_TRUNC) == O_TRUNC ) {                               
    rc = ftruncate( iop - rtems_libio_iops, 0 );                      
 8002478:	29 81 00 00 	lw r1,(r12+0)                                  
 800247c:	34 02 00 00 	mvi r2,0                                       
 8002480:	c9 61 08 00 	sub r1,r11,r1                                  
 8002484:	14 21 00 01 	sri r1,r1,1                                    
 8002488:	14 21 00 01 	sri r1,r1,1                                    
 800248c:	14 21 00 01 	sri r1,r1,1                                    
 8002490:	14 21 00 01 	sri r1,r1,1                                    
 8002494:	14 21 00 01 	sri r1,r1,1                                    
 8002498:	14 21 00 01 	sri r1,r1,1                                    
 800249c:	f8 00 18 6b 	calli 8008648 <ftruncate>                      
 80024a0:	b8 20 80 00 	mv r16,r1                                      
    if ( rc ) {                                                       
 80024a4:	44 20 ff c5 	be r1,r0,80023b8 <open+0x118>                  
      if(errno) rc = errno;                                           
 80024a8:	f8 00 2a 35 	calli 800cd7c <__errno>                        
 80024ac:	28 21 00 00 	lw r1,(r1+0)                                   
 80024b0:	5c 20 00 1a 	bne r1,r0,8002518 <open+0x278>                 <== ALWAYS TAKEN
      close( iop - rtems_libio_iops );                                
 80024b4:	29 81 00 00 	lw r1,(r12+0)                                  
      /* those are released by close(): */                            
      iop = 0;                                                        
      loc_to_free = NULL;                                             
 80024b8:	34 12 00 00 	mvi r18,0                                      
   */                                                                 
  if ( (flags & O_TRUNC) == O_TRUNC ) {                               
    rc = ftruncate( iop - rtems_libio_iops, 0 );                      
    if ( rc ) {                                                       
      if(errno) rc = errno;                                           
      close( iop - rtems_libio_iops );                                
 80024bc:	c9 61 08 00 	sub r1,r11,r1                                  
 80024c0:	14 21 00 01 	sri r1,r1,1                                    
      /* those are released by close(): */                            
      iop = 0;                                                        
 80024c4:	34 0b 00 00 	mvi r11,0                                      
   */                                                                 
  if ( (flags & O_TRUNC) == O_TRUNC ) {                               
    rc = ftruncate( iop - rtems_libio_iops, 0 );                      
    if ( rc ) {                                                       
      if(errno) rc = errno;                                           
      close( iop - rtems_libio_iops );                                
 80024c8:	14 21 00 01 	sri r1,r1,1                                    
 80024cc:	14 21 00 01 	sri r1,r1,1                                    
 80024d0:	14 21 00 01 	sri r1,r1,1                                    
 80024d4:	14 21 00 01 	sri r1,r1,1                                    
 80024d8:	14 21 00 01 	sri r1,r1,1                                    
 80024dc:	f8 00 18 2b 	calli 8008588 <close>                          
 80024e0:	e3 ff ff da 	bi 8002448 <open+0x1a8>                        
      rc = errno;                                                     
      goto done;                                                      
    }                                                                 
                                                                      
    /* If the file does not exist and we are not trying to create it--> error */
    if ( !(flags & O_CREAT) ) {                                       
 80024e4:	21 a1 02 00 	andi r1,r13,0x200                              
  int                                 mode;                           
  int                                 rc;                             
  rtems_libio_t                      *iop = 0;                        
  int                                 status;                         
  rtems_filesystem_location_info_t    loc;                            
  rtems_filesystem_location_info_t   *loc_to_free = NULL;             
 80024e8:	34 12 00 00 	mvi r18,0                                      
      goto done;                                                      
    }                                                                 
                                                                      
    /* If the file does not exist and we are not trying to create it--> error */
    if ( !(flags & O_CREAT) ) {                                       
      rc = ENOENT;                                                    
 80024ec:	34 10 00 02 	mvi r16,2                                      
      rc = errno;                                                     
      goto done;                                                      
    }                                                                 
                                                                      
    /* If the file does not exist and we are not trying to create it--> error */
    if ( !(flags & O_CREAT) ) {                                       
 80024f0:	44 20 ff cc 	be r1,r0,8002420 <open+0x180>                  
      rc = ENOENT;                                                    
      goto done;                                                      
    }                                                                 
                                                                      
    /* Create the node for the new regular file */                    
    rc = mknod( pathname, S_IFREG | mode, 0LL );                      
 80024f4:	b9 c0 08 00 	mv r1,r14                                      
 80024f8:	3a 22 80 00 	ori r2,r17,0x8000                              
 80024fc:	34 03 00 00 	mvi r3,0                                       
 8002500:	34 04 00 00 	mvi r4,0                                       
 8002504:	fb ff fd 33 	calli 80019d0 <mknod>                          
    if ( rc ) {                                                       
 8002508:	44 20 00 07 	be r1,r0,8002524 <open+0x284>                  <== ALWAYS TAKEN
      rc = errno;                                                     
 800250c:	f8 00 2a 1c 	calli 800cd7c <__errno>                        <== NOT EXECUTED
 8002510:	28 30 00 00 	lw r16,(r1+0)                                  <== NOT EXECUTED
      goto done;                                                      
 8002514:	e3 ff ff cd 	bi 8002448 <open+0x1a8>                        <== NOT EXECUTED
   *  Optionally truncate the file.                                   
   */                                                                 
  if ( (flags & O_TRUNC) == O_TRUNC ) {                               
    rc = ftruncate( iop - rtems_libio_iops, 0 );                      
    if ( rc ) {                                                       
      if(errno) rc = errno;                                           
 8002518:	f8 00 2a 19 	calli 800cd7c <__errno>                        
 800251c:	28 30 00 00 	lw r16,(r1+0)                                  
 8002520:	e3 ff ff e5 	bi 80024b4 <open+0x214>                        
    /*                                                                
     * After we do the mknod(), we have to evaluate the path to get the
     * "loc" structure needed to actually have the file itself open.  
     * So we created it, and then we need to have "look it up."       
     */                                                               
    status = rtems_filesystem_evaluate_path(                          
 8002524:	b9 c0 08 00 	mv r1,r14                                      
 8002528:	f8 00 2e b6 	calli 800e000 <strlen>                         
 800252c:	b8 20 10 00 	mv r2,r1                                       
 8002530:	34 03 00 00 	mvi r3,0                                       
 8002534:	b9 c0 08 00 	mv r1,r14                                      
 8002538:	b9 e0 20 00 	mv r4,r15                                      
 800253c:	34 05 00 01 	mvi r5,1                                       
 8002540:	fb ff fb 84 	calli 8001350 <rtems_filesystem_evaluate_path> 
      pathname, strlen( pathname ), 0x0, &loc, true );                
    if ( status != 0 ) {   /* The file did not exist */               
      rc = EACCES;                                                    
 8002544:	34 10 00 0d 	mvi r16,13                                     
     * "loc" structure needed to actually have the file itself open.  
     * So we created it, and then we need to have "look it up."       
     */                                                               
    status = rtems_filesystem_evaluate_path(                          
      pathname, strlen( pathname ), 0x0, &loc, true );                
    if ( status != 0 ) {   /* The file did not exist */               
 8002548:	5e 41 ff b6 	bne r18,r1,8002420 <open+0x180>                <== NEVER TAKEN
 800254c:	e3 ff ff 81 	bi 8002350 <open+0xb0>                         
                                                                      

08002214 <open_dev_console>: /* * This is a replaceable stub which opens the console, if present. */ void open_dev_console(void) {
 8002214:	37 9c ff f4 	addi sp,sp,-12                                 
 8002218:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800221c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8002220:	5b 9d 00 04 	sw (sp+4),ra                                   
  int      stderr_fd;                                                 
                                                                      
  /*                                                                  
   * Attempt to open /dev/console.                                    
   */                                                                 
  if ((stdin_fd = open("/dev/console", O_RDONLY, 0)) == -1) {         
 8002224:	78 0b 08 01 	mvhi r11,0x801                                 
 8002228:	39 6b 34 14 	ori r11,r11,0x3414                             
 800222c:	b9 60 08 00 	mv r1,r11                                      
 8002230:	34 02 00 00 	mvi r2,0                                       
 8002234:	34 03 00 00 	mvi r3,0                                       
 8002238:	f8 00 00 1a 	calli 80022a0 <open>                           
 800223c:	34 0c ff ff 	mvi r12,-1                                     
 8002240:	44 2c 00 0b 	be r1,r12,800226c <open_dev_console+0x58>      
                                                                      
  /*                                                                  
   *  But if we find /dev/console once, we better find it twice more  
   *  or something is REALLY wrong.                                   
   */                                                                 
  if ((stdout_fd = open("/dev/console", O_WRONLY, 0)) == -1)          
 8002244:	b9 60 08 00 	mv r1,r11                                      
 8002248:	34 02 00 01 	mvi r2,1                                       
 800224c:	34 03 00 00 	mvi r3,0                                       
 8002250:	f8 00 00 14 	calli 80022a0 <open>                           
 8002254:	44 2c 00 0b 	be r1,r12,8002280 <open_dev_console+0x6c>      <== NEVER TAKEN
    rtems_fatal_error_occurred( 0x55544431 );  /* error STD1 */       
                                                                      
  if ((stderr_fd = open("/dev/console", O_WRONLY, 0)) == -1)          
 8002258:	b9 60 08 00 	mv r1,r11                                      
 800225c:	34 02 00 01 	mvi r2,1                                       
 8002260:	34 03 00 00 	mvi r3,0                                       
 8002264:	f8 00 00 0f 	calli 80022a0 <open>                           
 8002268:	44 2c 00 0a 	be r1,r12,8002290 <open_dev_console+0x7c>      <== NEVER TAKEN
    rtems_fatal_error_occurred( 0x55544432 );  /* error STD2 */       
}                                                                     
 800226c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002270:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8002274:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8002278:	37 9c 00 0c 	addi sp,sp,12                                  
 800227c:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  But if we find /dev/console once, we better find it twice more  
   *  or something is REALLY wrong.                                   
   */                                                                 
  if ((stdout_fd = open("/dev/console", O_WRONLY, 0)) == -1)          
    rtems_fatal_error_occurred( 0x55544431 );  /* error STD1 */       
 8002280:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 8002284:	38 42 35 0c 	ori r2,r2,0x350c                               <== NOT EXECUTED
 8002288:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 800228c:	f8 00 04 7b 	calli 8003478 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      
  if ((stderr_fd = open("/dev/console", O_WRONLY, 0)) == -1)          
    rtems_fatal_error_occurred( 0x55544432 );  /* error STD2 */       
 8002290:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 8002294:	38 42 35 10 	ori r2,r2,0x3510                               <== NOT EXECUTED
 8002298:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 800229c:	f8 00 04 77 	calli 8003478 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08004290 <oproc>: /* * Handle output processing */ static void oproc (unsigned char c, struct rtems_termios_tty *tty) {
 8004290:	37 9c ff f4 	addi sp,sp,-12                                 
 8004294:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004298:	5b 9d 00 04 	sw (sp+4),ra                                   
 800429c:	b8 40 58 00 	mv r11,r2                                      
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
 80042a0:	28 42 00 34 	lw r2,(r2+52)                                  
/*                                                                    
 * Handle output processing                                           
 */                                                                   
static void                                                           
oproc (unsigned char c, struct rtems_termios_tty *tty)                
{                                                                     
 80042a4:	33 81 00 0c 	sb (sp+12),r1                                  
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
 80042a8:	20 41 00 01 	andi r1,r2,0x1                                 
 80042ac:	44 20 00 0b 	be r1,r0,80042d8 <oproc+0x48>                  <== NEVER TAKEN
    switch (c) {                                                      
 80042b0:	43 81 00 0c 	lbu r1,(sp+12)                                 
 80042b4:	34 03 00 09 	mvi r3,9                                       
 80042b8:	44 23 00 39 	be r1,r3,800439c <oproc+0x10c>                 
 80042bc:	54 23 00 0f 	bgu r1,r3,80042f8 <oproc+0x68>                 <== ALWAYS TAKEN
 80042c0:	34 03 00 08 	mvi r3,8                                       <== NOT EXECUTED
 80042c4:	5c 23 00 11 	bne r1,r3,8004308 <oproc+0x78>                 <== NOT EXECUTED
      }                                                               
      tty->column += i;                                               
      break;                                                          
                                                                      
    case '\b':                                                        
      if (tty->column > 0)                                            
 80042c8:	29 61 00 28 	lw r1,(r11+40)                                 <== NOT EXECUTED
 80042cc:	4c 01 00 03 	bge r0,r1,80042d8 <oproc+0x48>                 <== NOT EXECUTED
        tty->column--;                                                
 80042d0:	34 21 ff ff 	addi r1,r1,-1                                  <== NOT EXECUTED
 80042d4:	59 61 00 28 	sw (r11+40),r1                                 <== NOT EXECUTED
      if (!iscntrl(c))                                                
        tty->column++;                                                
      break;                                                          
    }                                                                 
  }                                                                   
  rtems_termios_puts (&c, 1, tty);                                    
 80042d8:	37 81 00 0c 	addi r1,sp,12                                  
 80042dc:	34 02 00 01 	mvi r2,1                                       
 80042e0:	b9 60 18 00 	mv r3,r11                                      
 80042e4:	fb ff ff 92 	calli 800412c <rtems_termios_puts>             
}                                                                     
 80042e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80042ec:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80042f0:	37 9c 00 0c 	addi sp,sp,12                                  
 80042f4:	c3 a0 00 00 	ret                                            
oproc (unsigned char c, struct rtems_termios_tty *tty)                
{                                                                     
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
    switch (c) {                                                      
 80042f8:	34 03 00 0a 	mvi r3,10                                      
 80042fc:	44 23 00 10 	be r1,r3,800433c <oproc+0xac>                  
 8004300:	34 03 00 0d 	mvi r3,13                                      
 8004304:	44 23 00 1a 	be r1,r3,800436c <oproc+0xdc>                  <== NEVER TAKEN
      if (tty->column > 0)                                            
        tty->column--;                                                
      break;                                                          
                                                                      
    default:                                                          
      if (tty->termios.c_oflag & OLCUC)                               
 8004308:	20 42 00 02 	andi r2,r2,0x2                                 
 800430c:	5c 40 00 2e 	bne r2,r0,80043c4 <oproc+0x134>                <== NEVER TAKEN
 8004310:	78 02 08 02 	mvhi r2,0x802                                  
 8004314:	38 42 62 58 	ori r2,r2,0x6258                               
 8004318:	28 42 00 00 	lw r2,(r2+0)                                   
        c = toupper(c);                                               
      if (!iscntrl(c))                                                
 800431c:	b4 41 08 00 	add r1,r2,r1                                   
 8004320:	40 21 00 01 	lbu r1,(r1+1)                                  
 8004324:	20 21 00 20 	andi r1,r1,0x20                                
 8004328:	5c 20 ff ec 	bne r1,r0,80042d8 <oproc+0x48>                 <== NEVER TAKEN
        tty->column++;                                                
 800432c:	29 61 00 28 	lw r1,(r11+40)                                 
 8004330:	34 21 00 01 	addi r1,r1,1                                   
 8004334:	59 61 00 28 	sw (r11+40),r1                                 
 8004338:	e3 ff ff e8 	bi 80042d8 <oproc+0x48>                        
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
    switch (c) {                                                      
    case '\n':                                                        
      if (tty->termios.c_oflag & ONLRET)                              
 800433c:	20 41 00 20 	andi r1,r2,0x20                                
 8004340:	44 20 00 02 	be r1,r0,8004348 <oproc+0xb8>                  <== ALWAYS TAKEN
        tty->column = 0;                                              
 8004344:	59 60 00 28 	sw (r11+40),r0                                 <== NOT EXECUTED
      if (tty->termios.c_oflag & ONLCR) {                             
 8004348:	20 42 00 04 	andi r2,r2,0x4                                 
 800434c:	44 40 ff e3 	be r2,r0,80042d8 <oproc+0x48>                  <== NEVER TAKEN
        rtems_termios_puts ("\r", 1, tty);                            
 8004350:	78 01 08 02 	mvhi r1,0x802                                  
 8004354:	38 21 44 7c 	ori r1,r1,0x447c                               
 8004358:	34 02 00 01 	mvi r2,1                                       
 800435c:	b9 60 18 00 	mv r3,r11                                      
 8004360:	fb ff ff 73 	calli 800412c <rtems_termios_puts>             
        tty->column = 0;                                              
 8004364:	59 60 00 28 	sw (r11+40),r0                                 
 8004368:	e3 ff ff dc 	bi 80042d8 <oproc+0x48>                        
      }                                                               
      break;                                                          
                                                                      
    case '\r':                                                        
      if ((tty->termios.c_oflag & ONOCR) && (tty->column == 0))       
 800436c:	20 41 00 10 	andi r1,r2,0x10                                <== NOT EXECUTED
 8004370:	44 20 00 03 	be r1,r0,800437c <oproc+0xec>                  <== NOT EXECUTED
 8004374:	29 61 00 28 	lw r1,(r11+40)                                 <== NOT EXECUTED
 8004378:	44 20 ff dc 	be r1,r0,80042e8 <oproc+0x58>                  <== NOT EXECUTED
        return;                                                       
      if (tty->termios.c_oflag & OCRNL) {                             
 800437c:	20 41 00 08 	andi r1,r2,0x8                                 <== NOT EXECUTED
 8004380:	44 20 00 05 	be r1,r0,8004394 <oproc+0x104>                 <== NOT EXECUTED
        c = '\n';                                                     
 8004384:	34 01 00 0a 	mvi r1,10                                      <== NOT EXECUTED
 8004388:	33 81 00 0c 	sb (sp+12),r1                                  <== NOT EXECUTED
        if (tty->termios.c_oflag & ONLRET)                            
 800438c:	20 42 00 20 	andi r2,r2,0x20                                <== NOT EXECUTED
 8004390:	44 40 ff d2 	be r2,r0,80042d8 <oproc+0x48>                  <== NOT EXECUTED
          tty->column = 0;                                            
        break;                                                        
      }                                                               
      tty->column = 0;                                                
 8004394:	59 60 00 28 	sw (r11+40),r0                                 <== NOT EXECUTED
      break;                                                          
 8004398:	e3 ff ff d0 	bi 80042d8 <oproc+0x48>                        <== NOT EXECUTED
                                                                      
    case '\t':                                                        
      i = 8 - (tty->column & 7);                                      
 800439c:	29 61 00 28 	lw r1,(r11+40)                                 
 80043a0:	34 03 00 08 	mvi r3,8                                       
      if ((tty->termios.c_oflag & TABDLY) == XTABS) {                 
 80043a4:	20 44 18 00 	andi r4,r2,0x1800                              
      }                                                               
      tty->column = 0;                                                
      break;                                                          
                                                                      
    case '\t':                                                        
      i = 8 - (tty->column & 7);                                      
 80043a8:	20 22 00 07 	andi r2,r1,0x7                                 
 80043ac:	c8 62 10 00 	sub r2,r3,r2                                   
      if ((tty->termios.c_oflag & TABDLY) == XTABS) {                 
 80043b0:	34 03 18 00 	mvi r3,6144                                    
 80043b4:	44 83 00 12 	be r4,r3,80043fc <oproc+0x16c>                 <== ALWAYS TAKEN
        tty->column += i;                                             
        rtems_termios_puts ( "        ",  i, tty);                    
        return;                                                       
      }                                                               
      tty->column += i;                                               
 80043b8:	b4 41 08 00 	add r1,r2,r1                                   <== NOT EXECUTED
 80043bc:	59 61 00 28 	sw (r11+40),r1                                 <== NOT EXECUTED
      break;                                                          
 80043c0:	e3 ff ff c6 	bi 80042d8 <oproc+0x48>                        <== NOT EXECUTED
        tty->column--;                                                
      break;                                                          
                                                                      
    default:                                                          
      if (tty->termios.c_oflag & OLCUC)                               
        c = toupper(c);                                               
 80043c4:	78 02 08 02 	mvhi r2,0x802                                  <== NOT EXECUTED
 80043c8:	38 42 62 58 	ori r2,r2,0x6258                               <== NOT EXECUTED
 80043cc:	28 42 00 00 	lw r2,(r2+0)                                   <== NOT EXECUTED
 80043d0:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 80043d4:	b4 41 08 00 	add r1,r2,r1                                   <== NOT EXECUTED
 80043d8:	40 24 00 01 	lbu r4,(r1+1)                                  <== NOT EXECUTED
 80043dc:	34 01 00 02 	mvi r1,2                                       <== NOT EXECUTED
 80043e0:	20 84 00 03 	andi r4,r4,0x3                                 <== NOT EXECUTED
 80043e4:	44 81 00 04 	be r4,r1,80043f4 <oproc+0x164>                 <== NOT EXECUTED
 80043e8:	20 61 00 ff 	andi r1,r3,0xff                                <== NOT EXECUTED
 80043ec:	33 81 00 0c 	sb (sp+12),r1                                  <== NOT EXECUTED
 80043f0:	e3 ff ff cb 	bi 800431c <oproc+0x8c>                        <== NOT EXECUTED
 80043f4:	34 63 ff e0 	addi r3,r3,-32                                 <== NOT EXECUTED
 80043f8:	e3 ff ff fc 	bi 80043e8 <oproc+0x158>                       <== NOT EXECUTED
      break;                                                          
                                                                      
    case '\t':                                                        
      i = 8 - (tty->column & 7);                                      
      if ((tty->termios.c_oflag & TABDLY) == XTABS) {                 
        tty->column += i;                                             
 80043fc:	b4 41 08 00 	add r1,r2,r1                                   
 8004400:	59 61 00 28 	sw (r11+40),r1                                 
        rtems_termios_puts ( "        ",  i, tty);                    
 8004404:	78 01 08 02 	mvhi r1,0x802                                  
 8004408:	38 21 44 80 	ori r1,r1,0x4480                               
 800440c:	b9 60 18 00 	mv r3,r11                                      
 8004410:	fb ff ff 47 	calli 800412c <rtems_termios_puts>             
        return;                                                       
 8004414:	e3 ff ff b5 	bi 80042e8 <oproc+0x58>                        
                                                                      

0800998c <pipe_create>: * Called by pipe() to create an anonymous pipe. */ int pipe_create( int filsdes[2] ) {
 800998c:	37 9c ff d8 	addi sp,sp,-40                                 
 8009990:	5b 8b 00 18 	sw (sp+24),r11                                 
 8009994:	5b 8c 00 14 	sw (sp+20),r12                                 
 8009998:	5b 8d 00 10 	sw (sp+16),r13                                 
 800999c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80099a0:	5b 8f 00 08 	sw (sp+8),r15                                  
 80099a4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80099a8:	b8 20 68 00 	mv r13,r1                                      
  rtems_libio_t *iop;                                                 
  int err = 0;                                                        
                                                                      
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
 80099ac:	78 01 08 01 	mvhi r1,0x801                                  
 80099b0:	34 02 01 ff 	mvi r2,511                                     
 80099b4:	38 21 f2 6c 	ori r1,r1,0xf26c                               
 80099b8:	f8 00 07 02 	calli 800b5c0 <rtems_mkdir>                    
 80099bc:	b8 20 70 00 	mv r14,r1                                      
    return -1;                                                        
 80099c0:	34 0c ff ff 	mvi r12,-1                                     
)                                                                     
{                                                                     
  rtems_libio_t *iop;                                                 
  int err = 0;                                                        
                                                                      
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
 80099c4:	44 20 00 0a 	be r1,r0,80099ec <pipe_create+0x60>            <== ALWAYS TAKEN
  unlink(fifopath);                                                   
  }                                                                   
  if(err != 0)                                                        
    rtems_set_errno_and_return_minus_one(err);                        
  return 0;                                                           
}                                                                     
 80099c8:	b9 80 08 00 	mv r1,r12                                      
 80099cc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80099d0:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80099d4:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80099d8:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80099dc:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80099e0:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80099e4:	37 9c 00 28 	addi sp,sp,40                                  
 80099e8:	c3 a0 00 00 	ret                                            
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 80099ec:	78 07 08 01 	mvhi r7,0x801                                  
 80099f0:	38 e7 f2 7c 	ori r7,r7,0xf27c                               
 80099f4:	28 e6 00 00 	lw r6,(r7+0)                                   
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 80099f8:	78 04 08 02 	mvhi r4,0x802                                  
 80099fc:	38 84 07 3c 	ori r4,r4,0x73c                                
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009a00:	78 07 08 01 	mvhi r7,0x801                                  
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009a04:	2c 83 00 00 	lhu r3,(r4+0)                                  
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009a08:	38 e7 f2 80 	ori r7,r7,0xf280                               
 8009a0c:	5b 86 00 1c 	sw (sp+28),r6                                  
 8009a10:	28 e6 00 00 	lw r6,(r7+0)                                   
 8009a14:	37 8b 00 1c 	addi r11,sp,28                                 
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009a18:	34 65 00 01 	addi r5,r3,1                                   
 8009a1c:	78 02 08 01 	mvhi r2,0x801                                  
 8009a20:	38 42 f2 74 	ori r2,r2,0xf274                               
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009a24:	59 66 00 04 	sw (r11+4),r6                                  
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009a28:	0c 85 00 00 	sh (r4+0),r5                                   
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009a2c:	34 06 66 6f 	mvi r6,26223                                   
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009a30:	37 81 00 26 	addi r1,sp,38                                  
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009a34:	0d 66 00 08 	sh (r11+8),r6                                  
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009a38:	f8 00 18 77 	calli 800fc14 <sprintf>                        
                                                                      
  /* Try creating FIFO file until find an available file name */      
  while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {                    
 8009a3c:	b9 60 08 00 	mv r1,r11                                      
 8009a40:	34 02 01 80 	mvi r2,384                                     
 8009a44:	f8 00 05 fb 	calli 800b230 <mkfifo>                         
 8009a48:	b8 20 78 00 	mv r15,r1                                      
 8009a4c:	5c 2e 00 31 	bne r1,r14,8009b10 <pipe_create+0x184>         
    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);                 
 8009a50:	34 02 40 00 	mvi r2,16384                                   
 8009a54:	b9 60 08 00 	mv r1,r11                                      
 8009a58:	fb ff e8 62 	calli 8003be0 <open>                           
 8009a5c:	59 a1 00 00 	sw (r13+0),r1                                  
 8009a60:	b8 20 10 00 	mv r2,r1                                       
  if (filsdes[0] < 0) {                                               
 8009a64:	4c 2f 00 06 	bge r1,r15,8009a7c <pipe_create+0xf0>          
    err = errno;                                                      
 8009a68:	f8 00 14 f5 	calli 800ee3c <__errno>                        
 8009a6c:	28 2e 00 00 	lw r14,(r1+0)                                  
    /* 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);                                                 
 8009a70:	b9 60 08 00 	mv r1,r11                                      
 8009a74:	fb ff e9 86 	calli 800408c <unlink>                         
 8009a78:	e0 00 00 20 	bi 8009af8 <pipe_create+0x16c>                 
  }                                                                   
  else {                                                              
  /* Reset open file to blocking mode */                              
    iop = rtems_libio_iop(filsdes[0]);                                
 8009a7c:	78 01 08 02 	mvhi r1,0x802                                  
 8009a80:	38 21 00 10 	ori r1,r1,0x10                                 
 8009a84:	28 21 00 00 	lw r1,(r1+0)                                   
 8009a88:	34 03 00 00 	mvi r3,0                                       
 8009a8c:	50 41 00 0b 	bgeu r2,r1,8009ab8 <pipe_create+0x12c>         <== NEVER TAKEN
 8009a90:	b4 42 10 00 	add r2,r2,r2                                   
 8009a94:	78 01 08 02 	mvhi r1,0x802                                  
 8009a98:	b4 42 10 00 	add r2,r2,r2                                   
 8009a9c:	38 21 07 b4 	ori r1,r1,0x7b4                                
 8009aa0:	b4 42 10 00 	add r2,r2,r2                                   
 8009aa4:	b4 42 10 00 	add r2,r2,r2                                   
 8009aa8:	28 23 00 00 	lw r3,(r1+0)                                   
 8009aac:	b4 42 10 00 	add r2,r2,r2                                   
 8009ab0:	b4 42 10 00 	add r2,r2,r2                                   
 8009ab4:	b4 62 18 00 	add r3,r3,r2                                   
    iop->flags &= ~LIBIO_FLAGS_NO_DELAY;                              
 8009ab8:	28 64 00 18 	lw r4,(r3+24)                                  
 8009abc:	34 02 ff fe 	mvi r2,-2                                      
                                                                      
    filsdes[1] = open(fifopath, O_WRONLY);                            
 8009ac0:	b9 60 08 00 	mv r1,r11                                      
    unlink(fifopath);                                                 
  }                                                                   
  else {                                                              
  /* Reset open file to blocking mode */                              
    iop = rtems_libio_iop(filsdes[0]);                                
    iop->flags &= ~LIBIO_FLAGS_NO_DELAY;                              
 8009ac4:	a0 82 10 00 	and r2,r4,r2                                   
 8009ac8:	58 62 00 18 	sw (r3+24),r2                                  
                                                                      
    filsdes[1] = open(fifopath, O_WRONLY);                            
 8009acc:	34 02 00 01 	mvi r2,1                                       
 8009ad0:	fb ff e8 44 	calli 8003be0 <open>                           
 8009ad4:	59 a1 00 04 	sw (r13+4),r1                                  
int pipe_create(                                                      
  int filsdes[2]                                                      
)                                                                     
{                                                                     
  rtems_libio_t *iop;                                                 
  int err = 0;                                                        
 8009ad8:	34 0e 00 00 	mvi r14,0                                      
    iop = rtems_libio_iop(filsdes[0]);                                
    iop->flags &= ~LIBIO_FLAGS_NO_DELAY;                              
                                                                      
    filsdes[1] = open(fifopath, O_WRONLY);                            
                                                                      
    if (filsdes[1] < 0) {                                             
 8009adc:	4c 20 00 05 	bge r1,r0,8009af0 <pipe_create+0x164>          
    err = errno;                                                      
 8009ae0:	f8 00 14 d7 	calli 800ee3c <__errno>                        
 8009ae4:	28 2e 00 00 	lw r14,(r1+0)                                  
    close(filsdes[0]);                                                
 8009ae8:	29 a1 00 00 	lw r1,(r13+0)                                  
 8009aec:	fb ff e3 29 	calli 8002790 <close>                          
    }                                                                 
  unlink(fifopath);                                                   
 8009af0:	b9 60 08 00 	mv r1,r11                                      
 8009af4:	fb ff e9 66 	calli 800408c <unlink>                         
  }                                                                   
  if(err != 0)                                                        
    rtems_set_errno_and_return_minus_one(err);                        
  return 0;                                                           
 8009af8:	34 0c 00 00 	mvi r12,0                                      
    err = errno;                                                      
    close(filsdes[0]);                                                
    }                                                                 
  unlink(fifopath);                                                   
  }                                                                   
  if(err != 0)                                                        
 8009afc:	45 c0 ff b3 	be r14,r0,80099c8 <pipe_create+0x3c>           
    rtems_set_errno_and_return_minus_one(err);                        
 8009b00:	f8 00 14 cf 	calli 800ee3c <__errno>                        
 8009b04:	58 2e 00 00 	sw (r1+0),r14                                  
 8009b08:	34 0c ff ff 	mvi r12,-1                                     
 8009b0c:	e3 ff ff af 	bi 80099c8 <pipe_create+0x3c>                  
  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){                                             
 8009b10:	f8 00 14 cb 	calli 800ee3c <__errno>                        
 8009b14:	e3 ff ff ad 	bi 80099c8 <pipe_create+0x3c>                  
                                                                      

0800b348 <pipe_ioctl>: pipe_control_t *pipe, uint32_t cmd, void *buffer, rtems_libio_t *iop ) {
 800b348:	37 9c ff f4 	addi sp,sp,-12                                 
 800b34c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800b350:	5b 8c 00 08 	sw (sp+8),r12                                  
 800b354:	5b 9d 00 04 	sw (sp+4),ra                                   
 800b358:	b8 60 60 00 	mv r12,r3                                      
  if (cmd == FIONREAD) {                                              
 800b35c:	78 03 08 02 	mvhi r3,0x802                                  
 800b360:	38 63 2b 28 	ori r3,r3,0x2b28                               
  pipe_control_t *pipe,                                               
  uint32_t        cmd,                                                
  void           *buffer,                                             
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
 800b364:	b8 20 58 00 	mv r11,r1                                      
  if (cmd == FIONREAD) {                                              
 800b368:	28 61 00 00 	lw r1,(r3+0)                                   
    *(unsigned int *)buffer = pipe->Length;                           
    PIPE_UNLOCK(pipe);                                                
    return 0;                                                         
  }                                                                   
                                                                      
  return -EINVAL;                                                     
 800b36c:	34 04 ff ea 	mvi r4,-22                                     
  uint32_t        cmd,                                                
  void           *buffer,                                             
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
  if (cmd == FIONREAD) {                                              
 800b370:	44 41 00 07 	be r2,r1,800b38c <pipe_ioctl+0x44>             
    PIPE_UNLOCK(pipe);                                                
    return 0;                                                         
  }                                                                   
                                                                      
  return -EINVAL;                                                     
}                                                                     
 800b374:	b8 80 08 00 	mv r1,r4                                       
 800b378:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b37c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800b380:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800b384:	37 9c 00 0c 	addi sp,sp,12                                  
 800b388:	c3 a0 00 00 	ret                                            
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
  if (cmd == FIONREAD) {                                              
    if (buffer == NULL)                                               
      return -EFAULT;                                                 
 800b38c:	34 04 ff f2 	mvi r4,-14                                     
  void           *buffer,                                             
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
  if (cmd == FIONREAD) {                                              
    if (buffer == NULL)                                               
 800b390:	45 80 ff f9 	be r12,r0,800b374 <pipe_ioctl+0x2c>            
      return -EFAULT;                                                 
                                                                      
    if (! PIPE_LOCK(pipe))                                            
 800b394:	29 61 00 28 	lw r1,(r11+40)                                 
 800b398:	34 02 00 00 	mvi r2,0                                       
 800b39c:	34 03 00 00 	mvi r3,0                                       
 800b3a0:	fb ff e8 80 	calli 80055a0 <rtems_semaphore_obtain>         
      return -EINTR;                                                  
 800b3a4:	34 04 ff fc 	mvi r4,-4                                      
{                                                                     
  if (cmd == FIONREAD) {                                              
    if (buffer == NULL)                                               
      return -EFAULT;                                                 
                                                                      
    if (! PIPE_LOCK(pipe))                                            
 800b3a8:	5c 20 ff f3 	bne r1,r0,800b374 <pipe_ioctl+0x2c>            <== NEVER TAKEN
      return -EINTR;                                                  
                                                                      
    /* Return length of pipe */                                       
    *(unsigned int *)buffer = pipe->Length;                           
 800b3ac:	29 62 00 0c 	lw r2,(r11+12)                                 
    PIPE_UNLOCK(pipe);                                                
 800b3b0:	29 61 00 28 	lw r1,(r11+40)                                 
                                                                      
    if (! PIPE_LOCK(pipe))                                            
      return -EINTR;                                                  
                                                                      
    /* Return length of pipe */                                       
    *(unsigned int *)buffer = pipe->Length;                           
 800b3b4:	59 82 00 00 	sw (r12+0),r2                                  
    PIPE_UNLOCK(pipe);                                                
 800b3b8:	fb ff e8 d6 	calli 8005710 <rtems_semaphore_release>        
    return 0;                                                         
 800b3bc:	34 04 00 00 	mvi r4,0                                       
 800b3c0:	e3 ff ff ed 	bi 800b374 <pipe_ioctl+0x2c>                   
                                                                      

0800af24 <pipe_read>: pipe_control_t *pipe, void *buffer, size_t count, rtems_libio_t *iop ) {
 800af24:	37 9c ff d4 	addi sp,sp,-44                                 
 800af28:	5b 8b 00 28 	sw (sp+40),r11                                 
 800af2c:	5b 8c 00 24 	sw (sp+36),r12                                 
 800af30:	5b 8d 00 20 	sw (sp+32),r13                                 
 800af34:	5b 8e 00 1c 	sw (sp+28),r14                                 
 800af38:	5b 8f 00 18 	sw (sp+24),r15                                 
 800af3c:	5b 90 00 14 	sw (sp+20),r16                                 
 800af40:	5b 91 00 10 	sw (sp+16),r17                                 
 800af44:	5b 92 00 0c 	sw (sp+12),r18                                 
 800af48:	5b 93 00 08 	sw (sp+8),r19                                  
 800af4c:	5b 9d 00 04 	sw (sp+4),ra                                   
 800af50:	b8 20 58 00 	mv r11,r1                                      
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800af54:	28 21 00 28 	lw r1,(r1+40)                                  
  pipe_control_t *pipe,                                               
  void           *buffer,                                             
  size_t          count,                                              
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
 800af58:	b8 40 88 00 	mv r17,r2                                      
 800af5c:	b8 60 80 00 	mv r16,r3                                      
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800af60:	34 02 00 00 	mvi r2,0                                       
 800af64:	34 03 00 00 	mvi r3,0                                       
  pipe_control_t *pipe,                                               
  void           *buffer,                                             
  size_t          count,                                              
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
 800af68:	b8 80 68 00 	mv r13,r4                                      
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800af6c:	fb ff e9 8d 	calli 80055a0 <rtems_semaphore_obtain>         
    return -EINTR;                                                    
 800af70:	34 0c ff fc 	mvi r12,-4                                     
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800af74:	5c 20 00 24 	bne r1,r0,800b004 <pipe_read+0xe0>             <== NEVER TAKEN
    return -EINTR;                                                    
                                                                      
  while (read < count) {                                              
 800af78:	34 0e 00 00 	mvi r14,0                                      
 800af7c:	34 12 00 00 	mvi r18,0                                      
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
 800af80:	34 0f ff fc 	mvi r15,-4                                     
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    return -EINTR;                                                    
                                                                      
  while (read < count) {                                              
 800af84:	46 0e 00 41 	be r16,r14,800b088 <pipe_read+0x164>           <== NEVER TAKEN
    while (PIPE_EMPTY(pipe)) {                                        
 800af88:	29 65 00 0c 	lw r5,(r11+12)                                 
 800af8c:	5c a0 00 41 	bne r5,r0,800b090 <pipe_read+0x16c>            
      /* Not an error */                                              
      if (pipe->Writers == 0)                                         
 800af90:	29 64 00 14 	lw r4,(r11+20)                                 
 800af94:	44 85 00 3d 	be r4,r5,800b088 <pipe_read+0x164>             
        goto out_locked;                                              
                                                                      
      if (LIBIO_NODELAY(iop)) {                                       
 800af98:	29 ac 00 18 	lw r12,(r13+24)                                
 800af9c:	21 8c 00 01 	andi r12,r12,0x1                               
 800afa0:	5d 80 00 4f 	bne r12,r0,800b0dc <pipe_read+0x1b8>           
        ret = -EAGAIN;                                                
        goto out_locked;                                              
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
 800afa4:	29 64 00 18 	lw r4,(r11+24)                                 
      PIPE_UNLOCK(pipe);                                              
 800afa8:	29 61 00 28 	lw r1,(r11+40)                                 
        ret = -EAGAIN;                                                
        goto out_locked;                                              
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
 800afac:	34 84 00 01 	addi r4,r4,1                                   
 800afb0:	59 64 00 18 	sw (r11+24),r4                                 
      PIPE_UNLOCK(pipe);                                              
 800afb4:	fb ff e9 d7 	calli 8005710 <rtems_semaphore_release>        
      if (! PIPE_READWAIT(pipe))                                      
 800afb8:	29 61 00 2c 	lw r1,(r11+44)                                 
 800afbc:	34 02 00 00 	mvi r2,0                                       
 800afc0:	f8 00 07 60 	calli 800cd40 <rtems_barrier_wait>             
 800afc4:	fc 2c 60 00 	cmpne r12,r1,r12                               
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800afc8:	29 61 00 28 	lw r1,(r11+40)                                 
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
 800afcc:	c8 0c 60 00 	sub r12,r0,r12                                 
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800afd0:	34 02 00 00 	mvi r2,0                                       
 800afd4:	34 03 00 00 	mvi r3,0                                       
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
 800afd8:	a1 8f 60 00 	and r12,r12,r15                                
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800afdc:	fb ff e9 71 	calli 80055a0 <rtems_semaphore_obtain>         
 800afe0:	5c 20 00 41 	bne r1,r0,800b0e4 <pipe_read+0x1c0>            <== NEVER TAKEN
        /* WARN waitingReaders not restored! */                       
        ret = -EINTR;                                                 
        goto out_nolock;                                              
      }                                                               
      pipe->waitingReaders --;                                        
 800afe4:	29 64 00 18 	lw r4,(r11+24)                                 
 800afe8:	34 84 ff ff 	addi r4,r4,-1                                  
 800afec:	59 64 00 18 	sw (r11+24),r4                                 
      if (ret != 0)                                                   
 800aff0:	45 81 ff e6 	be r12,r1,800af88 <pipe_read+0x64>             <== ALWAYS TAKEN
      PIPE_WAKEUPWRITERS(pipe);                                       
    read += chunk;                                                    
  }                                                                   
                                                                      
out_locked:                                                           
  PIPE_UNLOCK(pipe);                                                  
 800aff4:	29 61 00 28 	lw r1,(r11+40)                                 
 800aff8:	fb ff e9 c6 	calli 8005710 <rtems_semaphore_release>        
                                                                      
out_nolock:                                                           
  if (read > 0)                                                       
 800affc:	4c 0e 00 02 	bge r0,r14,800b004 <pipe_read+0xe0>            
 800b000:	b9 c0 60 00 	mv r12,r14                                     
    return read;                                                      
  return ret;                                                         
}                                                                     
 800b004:	b9 80 08 00 	mv r1,r12                                      
 800b008:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b00c:	2b 8b 00 28 	lw r11,(sp+40)                                 
 800b010:	2b 8c 00 24 	lw r12,(sp+36)                                 
 800b014:	2b 8d 00 20 	lw r13,(sp+32)                                 
 800b018:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 800b01c:	2b 8f 00 18 	lw r15,(sp+24)                                 
 800b020:	2b 90 00 14 	lw r16,(sp+20)                                 
 800b024:	2b 91 00 10 	lw r17,(sp+16)                                 
 800b028:	2b 92 00 0c 	lw r18,(sp+12)                                 
 800b02c:	2b 93 00 08 	lw r19,(sp+8)                                  
 800b030:	37 9c 00 2c 	addi sp,sp,44                                  
 800b034:	c3 a0 00 00 	ret                                            
    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);       
 800b038:	29 64 00 00 	lw r4,(r11+0)                                  
 800b03c:	b6 32 08 00 	add r1,r17,r18                                 
 800b040:	b9 80 18 00 	mv r3,r12                                      
 800b044:	b4 82 10 00 	add r2,r4,r2                                   
 800b048:	f8 00 16 af 	calli 8010b04 <memcpy>                         
                                                                      
    pipe->Start += chunk;                                             
 800b04c:	29 61 00 08 	lw r1,(r11+8)                                  
    pipe->Start %= pipe->Size;                                        
 800b050:	29 62 00 04 	lw r2,(r11+4)                                  
 800b054:	b5 81 08 00 	add r1,r12,r1                                  
 800b058:	f8 00 58 3c 	calli 8021148 <__umodsi3>                      
    pipe->Length -= chunk;                                            
 800b05c:	29 62 00 0c 	lw r2,(r11+12)                                 
    }                                                                 
    else                                                              
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);       
                                                                      
    pipe->Start += chunk;                                             
    pipe->Start %= pipe->Size;                                        
 800b060:	59 61 00 08 	sw (r11+8),r1                                  
    pipe->Length -= chunk;                                            
 800b064:	c8 4c 08 00 	sub r1,r2,r12                                  
 800b068:	59 61 00 0c 	sw (r11+12),r1                                 
    /* For buffering optimization */                                  
    if (PIPE_EMPTY(pipe))                                             
 800b06c:	5c 20 00 02 	bne r1,r0,800b074 <pipe_read+0x150>            
      pipe->Start = 0;                                                
 800b070:	59 60 00 08 	sw (r11+8),r0                                  
                                                                      
    if (pipe->waitingWriters > 0)                                     
 800b074:	29 61 00 1c 	lw r1,(r11+28)                                 
 800b078:	5c 20 00 1e 	bne r1,r0,800b0f0 <pipe_read+0x1cc>            
      PIPE_WAKEUPWRITERS(pipe);                                       
    read += chunk;                                                    
 800b07c:	b5 cc 70 00 	add r14,r14,r12                                
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    return -EINTR;                                                    
                                                                      
  while (read < count) {                                              
 800b080:	b9 c0 90 00 	mv r18,r14                                     
 800b084:	56 0e ff c1 	bgu r16,r14,800af88 <pipe_read+0x64>           <== NEVER TAKEN
    while (PIPE_EMPTY(pipe)) {                                        
      /* Not an error */                                              
      if (pipe->Writers == 0)                                         
 800b088:	34 0c 00 00 	mvi r12,0                                      
 800b08c:	e3 ff ff da 	bi 800aff4 <pipe_read+0xd0>                    
      if (ret != 0)                                                   
        goto out_locked;                                              
    }                                                                 
                                                                      
    /* Read chunk bytes */                                            
    chunk = MIN(count - read,  pipe->Length);                         
 800b090:	ca 12 08 00 	sub r1,r16,r18                                 
 800b094:	b8 a0 60 00 	mv r12,r5                                      
 800b098:	50 25 00 02 	bgeu r1,r5,800b0a0 <pipe_read+0x17c>           
 800b09c:	b8 20 60 00 	mv r12,r1                                      
    chunk1 = pipe->Size - pipe->Start;                                
 800b0a0:	29 62 00 08 	lw r2,(r11+8)                                  
 800b0a4:	29 73 00 04 	lw r19,(r11+4)                                 
 800b0a8:	ca 62 98 00 	sub r19,r19,r2                                 
    if (chunk > chunk1) {                                             
 800b0ac:	4e 6c ff e3 	bge r19,r12,800b038 <pipe_read+0x114>          
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);      
 800b0b0:	29 64 00 00 	lw r4,(r11+0)                                  
 800b0b4:	ba 60 18 00 	mv r3,r19                                      
 800b0b8:	b6 32 08 00 	add r1,r17,r18                                 
 800b0bc:	b4 82 10 00 	add r2,r4,r2                                   
 800b0c0:	f8 00 16 91 	calli 8010b04 <memcpy>                         
      memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);   
 800b0c4:	29 62 00 00 	lw r2,(r11+0)                                  
 800b0c8:	b6 53 08 00 	add r1,r18,r19                                 
 800b0cc:	b6 21 08 00 	add r1,r17,r1                                  
 800b0d0:	c9 93 18 00 	sub r3,r12,r19                                 
 800b0d4:	f8 00 16 8c 	calli 8010b04 <memcpy>                         
 800b0d8:	e3 ff ff dd 	bi 800b04c <pipe_read+0x128>                   
      /* Not an error */                                              
      if (pipe->Writers == 0)                                         
        goto out_locked;                                              
                                                                      
      if (LIBIO_NODELAY(iop)) {                                       
        ret = -EAGAIN;                                                
 800b0dc:	34 0c ff f5 	mvi r12,-11                                    
 800b0e0:	e3 ff ff c5 	bi 800aff4 <pipe_read+0xd0>                    
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
        /* WARN waitingReaders not restored! */                       
        ret = -EINTR;                                                 
 800b0e4:	34 0c ff fc 	mvi r12,-4                                     <== NOT EXECUTED
                                                                      
out_locked:                                                           
  PIPE_UNLOCK(pipe);                                                  
                                                                      
out_nolock:                                                           
  if (read > 0)                                                       
 800b0e8:	4c 0e ff c7 	bge r0,r14,800b004 <pipe_read+0xe0>            <== NOT EXECUTED
 800b0ec:	e3 ff ff c5 	bi 800b000 <pipe_read+0xdc>                    <== NOT EXECUTED
    /* For buffering optimization */                                  
    if (PIPE_EMPTY(pipe))                                             
      pipe->Start = 0;                                                
                                                                      
    if (pipe->waitingWriters > 0)                                     
      PIPE_WAKEUPWRITERS(pipe);                                       
 800b0f0:	29 61 00 30 	lw r1,(r11+48)                                 
 800b0f4:	37 82 00 2c 	addi r2,sp,44                                  
 800b0f8:	f8 00 06 f1 	calli 800ccbc <rtems_barrier_release>          
 800b0fc:	e3 ff ff e0 	bi 800b07c <pipe_read+0x158>                   
                                                                      

0800a95c <pipe_release>: */ void pipe_release( pipe_control_t **pipep, rtems_libio_t *iop ) {
 800a95c:	37 9c ff ec 	addi sp,sp,-20                                 
 800a960:	5b 8b 00 10 	sw (sp+16),r11                                 
 800a964:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800a968:	5b 8d 00 08 	sw (sp+8),r13                                  
 800a96c:	5b 9d 00 04 	sw (sp+4),ra                                   
    /* WARN pipe not released! */                                     
    if (!PIPE_LOCK(pipe))                                             
      rtems_fatal_error_occurred(0xdeadbeef);                         
  #endif                                                              
                                                                      
  mode = LIBIO_ACCMODE(iop);                                          
 800a970:	28 4c 00 18 	lw r12,(r2+24)                                 
 */                                                                   
void pipe_release(                                                    
  pipe_control_t **pipep,                                             
  rtems_libio_t *iop                                                  
)                                                                     
{                                                                     
 800a974:	b8 20 68 00 	mv r13,r1                                      
  pipe_control_t *pipe = *pipep;                                      
 800a978:	28 2b 00 00 	lw r11,(r1+0)                                  
    if (!PIPE_LOCK(pipe))                                             
      rtems_fatal_error_occurred(0xdeadbeef);                         
  #endif                                                              
                                                                      
  mode = LIBIO_ACCMODE(iop);                                          
  if (mode & LIBIO_FLAGS_READ)                                        
 800a97c:	21 81 00 02 	andi r1,r12,0x2                                
    /* WARN pipe not released! */                                     
    if (!PIPE_LOCK(pipe))                                             
      rtems_fatal_error_occurred(0xdeadbeef);                         
  #endif                                                              
                                                                      
  mode = LIBIO_ACCMODE(iop);                                          
 800a980:	21 8c 00 06 	andi r12,r12,0x6                               
  if (mode & LIBIO_FLAGS_READ)                                        
 800a984:	44 20 00 04 	be r1,r0,800a994 <pipe_release+0x38>           
     pipe->Readers --;                                                
 800a988:	29 61 00 10 	lw r1,(r11+16)                                 
 800a98c:	34 21 ff ff 	addi r1,r1,-1                                  
 800a990:	59 61 00 10 	sw (r11+16),r1                                 
  if (mode & LIBIO_FLAGS_WRITE)                                       
 800a994:	21 81 00 04 	andi r1,r12,0x4                                
 800a998:	44 20 00 04 	be r1,r0,800a9a8 <pipe_release+0x4c>           
     pipe->Writers --;                                                
 800a99c:	29 61 00 14 	lw r1,(r11+20)                                 
 800a9a0:	34 21 ff ff 	addi r1,r1,-1                                  
 800a9a4:	59 61 00 14 	sw (r11+20),r1                                 
                                                                      
  PIPE_UNLOCK(pipe);                                                  
 800a9a8:	29 61 00 28 	lw r1,(r11+40)                                 
 800a9ac:	fb ff eb 59 	calli 8005710 <rtems_semaphore_release>        
                                                                      
  if (pipe->Readers == 0 && pipe->Writers == 0) {                     
 800a9b0:	29 62 00 10 	lw r2,(r11+16)                                 
 800a9b4:	5c 40 00 0c 	bne r2,r0,800a9e4 <pipe_release+0x88>          
 800a9b8:	29 61 00 14 	lw r1,(r11+20)                                 
 800a9bc:	44 22 00 23 	be r1,r2,800aa48 <pipe_release+0xec>           
      delfile = TRUE;                                                 
#endif                                                                
    pipe_free(pipe);                                                  
    *pipep = NULL;                                                    
  }                                                                   
  else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)           
 800a9c0:	7d 8c 00 04 	cmpnei r12,r12,4                               
 800a9c4:	5d 80 00 17 	bne r12,r0,800aa20 <pipe_release+0xc4>         <== ALWAYS TAKEN
    /* Notify waiting Writers that all their partners left */         
    PIPE_WAKEUPWRITERS(pipe);                                         
  else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)            
    PIPE_WAKEUPREADERS(pipe);                                         
                                                                      
  pipe_unlock();                                                      
 800a9c8:	fb ff ff dc 	calli 800a938 <pipe_unlock>                    <== NOT EXECUTED
  iop->flags &= ~LIBIO_FLAGS_OPEN;                                    
  if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))                     
    return;                                                           
#endif                                                                
                                                                      
}                                                                     
 800a9cc:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800a9d0:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 800a9d4:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 800a9d8:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 800a9dc:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 800a9e0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    *pipep = NULL;                                                    
  }                                                                   
  else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)           
    /* Notify waiting Writers that all their partners left */         
    PIPE_WAKEUPWRITERS(pipe);                                         
  else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)            
 800a9e4:	29 61 00 14 	lw r1,(r11+20)                                 
 800a9e8:	7d 8c 00 02 	cmpnei r12,r12,2                               
 800a9ec:	64 21 00 00 	cmpei r1,r1,0                                  
 800a9f0:	a0 2c 60 00 	and r12,r1,r12                                 
 800a9f4:	45 80 ff f5 	be r12,r0,800a9c8 <pipe_release+0x6c>          <== NEVER TAKEN
    PIPE_WAKEUPREADERS(pipe);                                         
 800a9f8:	29 61 00 2c 	lw r1,(r11+44)                                 
 800a9fc:	37 82 00 14 	addi r2,sp,20                                  
 800aa00:	f8 00 08 af 	calli 800ccbc <rtems_barrier_release>          
                                                                      
  pipe_unlock();                                                      
 800aa04:	fb ff ff cd 	calli 800a938 <pipe_unlock>                    
  iop->flags &= ~LIBIO_FLAGS_OPEN;                                    
  if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))                     
    return;                                                           
#endif                                                                
                                                                      
}                                                                     
 800aa08:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aa0c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800aa10:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800aa14:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800aa18:	37 9c 00 14 	addi sp,sp,20                                  
 800aa1c:	c3 a0 00 00 	ret                                            
    pipe_free(pipe);                                                  
    *pipep = NULL;                                                    
  }                                                                   
  else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)           
    /* Notify waiting Writers that all their partners left */         
    PIPE_WAKEUPWRITERS(pipe);                                         
 800aa20:	29 61 00 30 	lw r1,(r11+48)                                 
 800aa24:	37 82 00 14 	addi r2,sp,20                                  
 800aa28:	f8 00 08 a5 	calli 800ccbc <rtems_barrier_release>          
  else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)            
    PIPE_WAKEUPREADERS(pipe);                                         
                                                                      
  pipe_unlock();                                                      
 800aa2c:	fb ff ff c3 	calli 800a938 <pipe_unlock>                    
  iop->flags &= ~LIBIO_FLAGS_OPEN;                                    
  if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))                     
    return;                                                           
#endif                                                                
                                                                      
}                                                                     
 800aa30:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aa34:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800aa38:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800aa3c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800aa40:	37 9c 00 14 	addi sp,sp,20                                  
 800aa44:	c3 a0 00 00 	ret                                            
/* Called with pipe_semaphore held. */                                
static inline void pipe_free(                                         
  pipe_control_t *pipe                                                
)                                                                     
{                                                                     
  rtems_barrier_delete(pipe->readBarrier);                            
 800aa48:	29 61 00 2c 	lw r1,(r11+44)                                 
 800aa4c:	f8 00 08 68 	calli 800cbec <rtems_barrier_delete>           
  rtems_barrier_delete(pipe->writeBarrier);                           
 800aa50:	29 61 00 30 	lw r1,(r11+48)                                 
 800aa54:	f8 00 08 66 	calli 800cbec <rtems_barrier_delete>           
  rtems_semaphore_delete(pipe->Semaphore);                            
 800aa58:	29 61 00 28 	lw r1,(r11+40)                                 
 800aa5c:	fb ff ea 9a 	calli 80054c4 <rtems_semaphore_delete>         
  free(pipe->Buffer);                                                 
 800aa60:	29 61 00 00 	lw r1,(r11+0)                                  
 800aa64:	fb ff e2 ba 	calli 800354c <free>                           
  free(pipe);                                                         
 800aa68:	b9 60 08 00 	mv r1,r11                                      
 800aa6c:	fb ff e2 b8 	calli 800354c <free>                           
    /* To delete an anonymous pipe file when all users closed it */   
    if (pipe->Anonymous)                                              
      delfile = TRUE;                                                 
#endif                                                                
    pipe_free(pipe);                                                  
    *pipep = NULL;                                                    
 800aa70:	59 a0 00 00 	sw (r13+0),r0                                  
    /* Notify waiting Writers that all their partners left */         
    PIPE_WAKEUPWRITERS(pipe);                                         
  else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)            
    PIPE_WAKEUPREADERS(pipe);                                         
                                                                      
  pipe_unlock();                                                      
 800aa74:	fb ff ff b1 	calli 800a938 <pipe_unlock>                    
  iop->flags &= ~LIBIO_FLAGS_OPEN;                                    
  if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))                     
    return;                                                           
#endif                                                                
                                                                      
}                                                                     
 800aa78:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aa7c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800aa80:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800aa84:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800aa88:	37 9c 00 14 	addi sp,sp,20                                  
 800aa8c:	c3 a0 00 00 	ret                                            
                                                                      

0800b100 <pipe_write>: pipe_control_t *pipe, const void *buffer, size_t count, rtems_libio_t *iop ) {
 800b100:	37 9c ff d4 	addi sp,sp,-44                                 
 800b104:	5b 8b 00 24 	sw (sp+36),r11                                 
 800b108:	5b 8c 00 20 	sw (sp+32),r12                                 
 800b10c:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800b110:	5b 8e 00 18 	sw (sp+24),r14                                 
 800b114:	5b 8f 00 14 	sw (sp+20),r15                                 
 800b118:	5b 90 00 10 	sw (sp+16),r16                                 
 800b11c:	5b 91 00 0c 	sw (sp+12),r17                                 
 800b120:	5b 92 00 08 	sw (sp+8),r18                                  
 800b124:	5b 9d 00 04 	sw (sp+4),ra                                   
 800b128:	b8 20 58 00 	mv r11,r1                                      
 800b12c:	b8 60 60 00 	mv r12,r3                                      
 800b130:	b8 40 68 00 	mv r13,r2                                      
  int chunk, chunk1, written = 0, ret = 0;                            
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    return 0;                                                         
 800b134:	34 01 00 00 	mvi r1,0                                       
)                                                                     
{                                                                     
  int chunk, chunk1, written = 0, ret = 0;                            
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
 800b138:	5c 60 00 0c 	bne r3,r0,800b168 <pipe_write+0x68>            <== ALWAYS TAKEN
#endif                                                                
                                                                      
  if (written > 0)                                                    
    return written;                                                   
  return ret;                                                         
}                                                                     
 800b13c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b140:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800b144:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800b148:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800b14c:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800b150:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800b154:	2b 90 00 10 	lw r16,(sp+16)                                 
 800b158:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800b15c:	2b 92 00 08 	lw r18,(sp+8)                                  
 800b160:	37 9c 00 2c 	addi sp,sp,44                                  
 800b164:	c3 a0 00 00 	ret                                            
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    return 0;                                                         
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800b168:	29 61 00 28 	lw r1,(r11+40)                                 
 800b16c:	34 02 00 00 	mvi r2,0                                       
 800b170:	34 03 00 00 	mvi r3,0                                       
 800b174:	5b 84 00 28 	sw (sp+40),r4                                  
 800b178:	fb ff e9 0a 	calli 80055a0 <rtems_semaphore_obtain>         
 800b17c:	b8 20 10 00 	mv r2,r1                                       
 800b180:	2b 84 00 28 	lw r4,(sp+40)                                  
    return -EINTR;                                                    
 800b184:	34 01 ff fc 	mvi r1,-4                                      
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    return 0;                                                         
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800b188:	5c 40 ff ed 	bne r2,r0,800b13c <pipe_write+0x3c>            <== NEVER TAKEN
    return -EINTR;                                                    
                                                                      
  if (pipe->Readers == 0) {                                           
 800b18c:	29 61 00 10 	lw r1,(r11+16)                                 
 800b190:	44 22 00 55 	be r1,r2,800b2e4 <pipe_write+0x1e4>            
    ret = -EPIPE;                                                     
    goto out_locked;                                                  
  }                                                                   
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
 800b194:	29 6e 00 04 	lw r14,(r11+4)                                 
 800b198:	34 0f 00 01 	mvi r15,1                                      
 800b19c:	55 8e 00 02 	bgu r12,r14,800b1a4 <pipe_write+0xa4>          <== NEVER TAKEN
 800b1a0:	b9 80 78 00 	mv r15,r12                                     
 800b1a4:	34 12 00 00 	mvi r18,0                                      
 800b1a8:	34 10 00 00 	mvi r16,0                                      
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
 800b1ac:	34 11 ff fc 	mvi r17,-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) {                                
 800b1b0:	29 61 00 0c 	lw r1,(r11+12)                                 
 800b1b4:	c9 c1 18 00 	sub r3,r14,r1                                  
 800b1b8:	55 e3 00 23 	bgu r15,r3,800b244 <pipe_write+0x144>          
        ret = -EPIPE;                                                 
        goto out_locked;                                              
      }                                                               
    }                                                                 
                                                                      
    chunk = MIN(count - written, PIPE_SPACE(pipe));                   
 800b1bc:	c9 92 10 00 	sub r2,r12,r18                                 
 800b1c0:	b8 60 78 00 	mv r15,r3                                      
 800b1c4:	50 43 00 02 	bgeu r2,r3,800b1cc <pipe_write+0xcc>           
 800b1c8:	b8 40 78 00 	mv r15,r2                                      
    chunk1 = pipe->Size - PIPE_WSTART(pipe);                          
 800b1cc:	29 63 00 08 	lw r3,(r11+8)                                  
 800b1d0:	b9 c0 10 00 	mv r2,r14                                      
 800b1d4:	5b 84 00 28 	sw (sp+40),r4                                  
 800b1d8:	b4 23 08 00 	add r1,r1,r3                                   
 800b1dc:	f8 00 57 db 	calli 8021148 <__umodsi3>                      
 800b1e0:	c9 c1 70 00 	sub r14,r14,r1                                 
    if (chunk > chunk1) {                                             
 800b1e4:	2b 84 00 28 	lw r4,(sp+40)                                  
 800b1e8:	4d cf 00 4a 	bge r14,r15,800b310 <pipe_write+0x210>         
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
 800b1ec:	29 65 00 00 	lw r5,(r11+0)                                  
 800b1f0:	b5 b2 10 00 	add r2,r13,r18                                 
 800b1f4:	b9 c0 18 00 	mv r3,r14                                      
 800b1f8:	b4 a1 08 00 	add r1,r5,r1                                   
 800b1fc:	f8 00 16 42 	calli 8010b04 <memcpy>                         
      memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
 800b200:	29 61 00 00 	lw r1,(r11+0)                                  
 800b204:	b5 d2 10 00 	add r2,r14,r18                                 
 800b208:	b5 a2 10 00 	add r2,r13,r2                                  
 800b20c:	c9 ee 18 00 	sub r3,r15,r14                                 
 800b210:	f8 00 16 3d 	calli 8010b04 <memcpy>                         
 800b214:	2b 84 00 28 	lw r4,(sp+40)                                  
    }                                                                 
    else                                                              
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
                                                                      
    pipe->Length += chunk;                                            
 800b218:	29 61 00 0c 	lw r1,(r11+12)                                 
    if (pipe->waitingReaders > 0)                                     
 800b21c:	29 62 00 18 	lw r2,(r11+24)                                 
      memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
    }                                                                 
    else                                                              
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
                                                                      
    pipe->Length += chunk;                                            
 800b220:	b4 2f 08 00 	add r1,r1,r15                                  
 800b224:	59 61 00 0c 	sw (r11+12),r1                                 
    if (pipe->waitingReaders > 0)                                     
 800b228:	5c 40 00 42 	bne r2,r0,800b330 <pipe_write+0x230>           
      PIPE_WAKEUPREADERS(pipe);                                       
    written += chunk;                                                 
 800b22c:	b6 0f 80 00 	add r16,r16,r15                                
  }                                                                   
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
 800b230:	ba 00 90 00 	mv r18,r16                                     
 800b234:	52 0c 00 21 	bgeu r16,r12,800b2b8 <pipe_write+0x1b8>        <== ALWAYS TAKEN
 800b238:	29 6e 00 04 	lw r14,(r11+4)                                 <== NOT EXECUTED
    pipe->Length += chunk;                                            
    if (pipe->waitingReaders > 0)                                     
      PIPE_WAKEUPREADERS(pipe);                                       
    written += chunk;                                                 
    /* Write of more than PIPE_BUF bytes can be interleaved */        
    chunk = 1;                                                        
 800b23c:	34 0f 00 01 	mvi r15,1                                      <== NOT EXECUTED
 800b240:	e3 ff ff dc 	bi 800b1b0 <pipe_write+0xb0>                   <== NOT EXECUTED
  /* 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) {                                
      if (LIBIO_NODELAY(iop)) {                                       
 800b244:	28 8e 00 18 	lw r14,(r4+24)                                 
 800b248:	21 ce 00 01 	andi r14,r14,0x1                               
 800b24c:	5d c0 00 2d 	bne r14,r0,800b300 <pipe_write+0x200>          
        ret = -EAGAIN;                                                
        goto out_locked;                                              
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
 800b250:	29 63 00 1c 	lw r3,(r11+28)                                 
      PIPE_UNLOCK(pipe);                                              
 800b254:	29 61 00 28 	lw r1,(r11+40)                                 
        ret = -EAGAIN;                                                
        goto out_locked;                                              
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
 800b258:	34 63 00 01 	addi r3,r3,1                                   
 800b25c:	59 63 00 1c 	sw (r11+28),r3                                 
      PIPE_UNLOCK(pipe);                                              
 800b260:	5b 84 00 28 	sw (sp+40),r4                                  
 800b264:	fb ff e9 2b 	calli 8005710 <rtems_semaphore_release>        
      if (! PIPE_WRITEWAIT(pipe))                                     
 800b268:	29 61 00 30 	lw r1,(r11+48)                                 
 800b26c:	34 02 00 00 	mvi r2,0                                       
 800b270:	f8 00 06 b4 	calli 800cd40 <rtems_barrier_wait>             
 800b274:	fc 2e 70 00 	cmpne r14,r1,r14                               
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800b278:	29 61 00 28 	lw r1,(r11+40)                                 
 800b27c:	34 02 00 00 	mvi r2,0                                       
 800b280:	34 03 00 00 	mvi r3,0                                       
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
 800b284:	c8 0e 70 00 	sub r14,r0,r14                                 
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800b288:	fb ff e8 c6 	calli 80055a0 <rtems_semaphore_obtain>         
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
 800b28c:	a1 d1 70 00 	and r14,r14,r17                                
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800b290:	2b 84 00 28 	lw r4,(sp+40)                                  
 800b294:	5c 20 00 1d 	bne r1,r0,800b308 <pipe_write+0x208>           <== NEVER TAKEN
        /* WARN waitingWriters not restored! */                       
        ret = -EINTR;                                                 
        goto out_nolock;                                              
      }                                                               
      pipe->waitingWriters --;                                        
 800b298:	29 63 00 1c 	lw r3,(r11+28)                                 
 800b29c:	34 63 ff ff 	addi r3,r3,-1                                  
 800b2a0:	59 63 00 1c 	sw (r11+28),r3                                 
      if (ret != 0)                                                   
 800b2a4:	5d c1 00 06 	bne r14,r1,800b2bc <pipe_write+0x1bc>          <== NEVER TAKEN
        goto out_locked;                                              
                                                                      
      if (pipe->Readers == 0) {                                       
 800b2a8:	29 61 00 10 	lw r1,(r11+16)                                 
 800b2ac:	44 2e 00 0c 	be r1,r14,800b2dc <pipe_write+0x1dc>           <== NEVER TAKEN
 800b2b0:	29 6e 00 04 	lw r14,(r11+4)                                 
 800b2b4:	e3 ff ff bf 	bi 800b1b0 <pipe_write+0xb0>                   
  }                                                                   
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
 800b2b8:	34 0e 00 00 	mvi r14,0                                      
    /* Write of more than PIPE_BUF bytes can be interleaved */        
    chunk = 1;                                                        
  }                                                                   
                                                                      
out_locked:                                                           
  PIPE_UNLOCK(pipe);                                                  
 800b2bc:	29 61 00 28 	lw r1,(r11+40)                                 
 800b2c0:	fb ff e9 14 	calli 8005710 <rtems_semaphore_release>        
                                                                      
out_nolock:                                                           
#ifdef RTEMS_POSIX_API                                                
  /* Signal SIGPIPE */                                                
  if (ret == -EPIPE)                                                  
 800b2c4:	34 01 ff e0 	mvi r1,-32                                     
 800b2c8:	45 c1 00 0a 	be r14,r1,800b2f0 <pipe_write+0x1f0>           
    kill(getpid(), SIGPIPE);                                          
#endif                                                                
                                                                      
  if (written > 0)                                                    
 800b2cc:	b9 c0 08 00 	mv r1,r14                                      
 800b2d0:	4c 10 ff 9b 	bge r0,r16,800b13c <pipe_write+0x3c>           
 800b2d4:	ba 00 08 00 	mv r1,r16                                      
 800b2d8:	e3 ff ff 99 	bi 800b13c <pipe_write+0x3c>                   
      pipe->waitingWriters --;                                        
      if (ret != 0)                                                   
        goto out_locked;                                              
                                                                      
      if (pipe->Readers == 0) {                                       
        ret = -EPIPE;                                                 
 800b2dc:	34 0e ff e0 	mvi r14,-32                                    <== NOT EXECUTED
 800b2e0:	e3 ff ff f7 	bi 800b2bc <pipe_write+0x1bc>                  <== NOT EXECUTED
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    return -EINTR;                                                    
                                                                      
  if (pipe->Readers == 0) {                                           
    ret = -EPIPE;                                                     
 800b2e4:	34 0e ff e0 	mvi r14,-32                                    
  const void     *buffer,                                             
  size_t          count,                                              
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
  int chunk, chunk1, written = 0, ret = 0;                            
 800b2e8:	34 10 00 00 	mvi r16,0                                      
 800b2ec:	e3 ff ff f4 	bi 800b2bc <pipe_write+0x1bc>                  
                                                                      
out_nolock:                                                           
#ifdef RTEMS_POSIX_API                                                
  /* Signal SIGPIPE */                                                
  if (ret == -EPIPE)                                                  
    kill(getpid(), SIGPIPE);                                          
 800b2f0:	f8 00 02 a5 	calli 800bd84 <getpid>                         
 800b2f4:	34 02 00 0d 	mvi r2,13                                      
 800b2f8:	f8 00 03 a2 	calli 800c180 <kill>                           
 800b2fc:	e3 ff ff f4 	bi 800b2cc <pipe_write+0x1cc>                  
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
    while (PIPE_SPACE(pipe) < chunk) {                                
      if (LIBIO_NODELAY(iop)) {                                       
        ret = -EAGAIN;                                                
 800b300:	34 0e ff f5 	mvi r14,-11                                    
 800b304:	e3 ff ff ee 	bi 800b2bc <pipe_write+0x1bc>                  
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
        /* WARN waitingWriters not restored! */                       
        ret = -EINTR;                                                 
 800b308:	34 0e ff fc 	mvi r14,-4                                     <== NOT EXECUTED
 800b30c:	e3 ff ff f0 	bi 800b2cc <pipe_write+0x1cc>                  <== 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);
 800b310:	29 65 00 00 	lw r5,(r11+0)                                  
 800b314:	b5 b2 10 00 	add r2,r13,r18                                 
 800b318:	b9 e0 18 00 	mv r3,r15                                      
 800b31c:	b4 a1 08 00 	add r1,r5,r1                                   
 800b320:	5b 84 00 28 	sw (sp+40),r4                                  
 800b324:	f8 00 15 f8 	calli 8010b04 <memcpy>                         
 800b328:	2b 84 00 28 	lw r4,(sp+40)                                  
 800b32c:	e3 ff ff bb 	bi 800b218 <pipe_write+0x118>                  
                                                                      
    pipe->Length += chunk;                                            
    if (pipe->waitingReaders > 0)                                     
      PIPE_WAKEUPREADERS(pipe);                                       
 800b330:	29 61 00 2c 	lw r1,(r11+44)                                 
 800b334:	37 82 00 2c 	addi r2,sp,44                                  
 800b338:	5b 84 00 28 	sw (sp+40),r4                                  
 800b33c:	f8 00 06 60 	calli 800ccbc <rtems_barrier_release>          
 800b340:	2b 84 00 28 	lw r4,(sp+40)                                  
 800b344:	e3 ff ff ba 	bi 800b22c <pipe_write+0x12c>                  
                                                                      

08008590 <pthread_attr_setschedpolicy>: pthread_attr_t *attr, int policy ) { if ( !attr || !attr->is_initialized ) return EINVAL;
 8008590:	34 03 00 16 	mvi r3,22                                      
int pthread_attr_setschedpolicy(                                      
  pthread_attr_t  *attr,                                              
  int              policy                                             
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
 8008594:	44 20 00 09 	be r1,r0,80085b8 <pthread_attr_setschedpolicy+0x28>
 8008598:	28 24 00 00 	lw r4,(r1+0)                                   
 800859c:	44 80 00 07 	be r4,r0,80085b8 <pthread_attr_setschedpolicy+0x28>
    return EINVAL;                                                    
                                                                      
  switch ( policy ) {                                                 
 80085a0:	48 02 00 05 	bg r0,r2,80085b4 <pthread_attr_setschedpolicy+0x24>
 80085a4:	34 03 00 02 	mvi r3,2                                       
 80085a8:	4c 62 00 06 	bge r3,r2,80085c0 <pthread_attr_setschedpolicy+0x30>
 80085ac:	34 03 00 04 	mvi r3,4                                       
 80085b0:	44 43 00 04 	be r2,r3,80085c0 <pthread_attr_setschedpolicy+0x30><== ALWAYS TAKEN
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
      return 0;                                                       
                                                                      
    default:                                                          
      return ENOTSUP;                                                 
 80085b4:	34 03 00 86 	mvi r3,134                                     
  }                                                                   
}                                                                     
 80085b8:	b8 60 08 00 	mv r1,r3                                       
 80085bc:	c3 a0 00 00 	ret                                            
    case SCHED_OTHER:                                                 
    case SCHED_FIFO:                                                  
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
      return 0;                                                       
 80085c0:	34 03 00 00 	mvi r3,0                                       
  switch ( policy ) {                                                 
    case SCHED_OTHER:                                                 
    case SCHED_FIFO:                                                  
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
 80085c4:	58 22 00 14 	sw (r1+20),r2                                  
      return 0;                                                       
                                                                      
    default:                                                          
      return ENOTSUP;                                                 
  }                                                                   
}                                                                     
 80085c8:	b8 60 08 00 	mv r1,r3                                       
 80085cc:	c3 a0 00 00 	ret                                            
                                                                      

08003780 <pthread_barrier_init>: int pthread_barrier_init( pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count ) {
 8003780:	37 9c ff d8 	addi sp,sp,-40                                 
 8003784:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003788:	5b 8c 00 10 	sw (sp+16),r12                                 
 800378c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003790:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003794:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !barrier )                                                     
    return EINVAL;                                                    
 8003798:	34 04 00 16 	mvi r4,22                                      
int pthread_barrier_init(                                             
  pthread_barrier_t           *barrier,                               
  const pthread_barrierattr_t *attr,                                  
  unsigned int                 count                                  
)                                                                     
{                                                                     
 800379c:	b8 20 58 00 	mv r11,r1                                      
  const pthread_barrierattr_t   *the_attr;                            
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !barrier )                                                     
 80037a0:	44 20 00 08 	be r1,r0,80037c0 <pthread_barrier_init+0x40>   
    return EINVAL;                                                    
                                                                      
  if ( count == 0 )                                                   
 80037a4:	44 60 00 07 	be r3,r0,80037c0 <pthread_barrier_init+0x40>   
    return EINVAL;                                                    
                                                                      
  /*                                                                  
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
 80037a8:	44 40 00 34 	be r2,r0,8003878 <pthread_barrier_init+0xf8>   
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 80037ac:	28 41 00 00 	lw r1,(r2+0)                                   
    return EINVAL;                                                    
 80037b0:	34 04 00 16 	mvi r4,22                                      
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 80037b4:	44 20 00 03 	be r1,r0,80037c0 <pthread_barrier_init+0x40>   
    return EINVAL;                                                    
                                                                      
  switch ( the_attr->process_shared ) {                               
 80037b8:	28 4e 00 04 	lw r14,(r2+4)                                  
 80037bc:	45 c0 00 09 	be r14,r0,80037e0 <pthread_barrier_init+0x60>  <== ALWAYS TAKEN
   * Exit the critical section and return the user an operational barrier
   */                                                                 
  *barrier = the_barrier->Object.id;                                  
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 80037c0:	b8 80 08 00 	mv r1,r4                                       
 80037c4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80037c8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80037cc:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80037d0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80037d4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80037d8:	37 9c 00 28 	addi sp,sp,40                                  
 80037dc:	c3 a0 00 00 	ret                                            
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80037e0:	78 01 08 01 	mvhi r1,0x801                                  
 80037e4:	38 21 68 d8 	ori r1,r1,0x68d8                               
 80037e8:	28 22 00 00 	lw r2,(r1+0)                                   
  }                                                                   
                                                                      
  /*                                                                  
   * Convert from POSIX attributes to Core Barrier attributes         
   */                                                                 
  the_attributes.discipline    = CORE_BARRIER_AUTOMATIC_RELEASE;      
 80037ec:	5b 80 00 24 	sw (sp+36),r0                                  
  the_attributes.maximum_count = count;                               
 80037f0:	5b 83 00 28 	sw (sp+40),r3                                  
 80037f4:	34 42 00 01 	addi r2,r2,1                                   
 80037f8:	58 22 00 00 	sw (r1+0),r2                                   
 *  the inactive chain of free barrier control blocks.                
 */                                                                   
RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void )
{                                                                     
  return (POSIX_Barrier_Control *)                                    
    _Objects_Allocate( &_POSIX_Barrier_Information );                 
 80037fc:	78 0d 08 01 	mvhi r13,0x801                                 
 8003800:	39 ad 6c 0c 	ori r13,r13,0x6c0c                             
 8003804:	b9 a0 08 00 	mv r1,r13                                      
 8003808:	f8 00 08 41 	calli 800590c <_Objects_Allocate>              
 800380c:	b8 20 60 00 	mv r12,r1                                      
   */                                                                 
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_barrier = _POSIX_Barrier_Allocate();                            
                                                                      
  if ( !the_barrier ) {                                               
 8003810:	44 2e 00 17 	be r1,r14,800386c <pthread_barrier_init+0xec>  
    _Thread_Enable_dispatch();                                        
    return EAGAIN;                                                    
  }                                                                   
                                                                      
  _CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes ); 
 8003814:	37 82 00 24 	addi r2,sp,36                                  
 8003818:	34 21 00 10 	addi r1,r1,16                                  
 800381c:	f8 00 05 2a 	calli 8004cc4 <_CORE_barrier_Initialize>       
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 8003820:	29 82 00 08 	lw r2,(r12+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8003824:	29 a3 00 1c 	lw r3,(r13+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8003828:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 800382c:	b4 21 08 00 	add r1,r1,r1                                   
 8003830:	b4 21 08 00 	add r1,r1,r1                                   
 8003834:	b4 61 08 00 	add r1,r3,r1                                   
 8003838:	58 2c 00 00 	sw (r1+0),r12                                  
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 800383c:	59 80 00 0c 	sw (r12+12),r0                                 
  );                                                                  
                                                                      
  /*                                                                  
   * Exit the critical section and return the user an operational barrier
   */                                                                 
  *barrier = the_barrier->Object.id;                                  
 8003840:	59 62 00 00 	sw (r11+0),r2                                  
  _Thread_Enable_dispatch();                                          
 8003844:	f8 00 0d 1e 	calli 8006cbc <_Thread_Enable_dispatch>        
  return 0;                                                           
 8003848:	34 04 00 00 	mvi r4,0                                       
}                                                                     
 800384c:	b8 80 08 00 	mv r1,r4                                       
 8003850:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003854:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8003858:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800385c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8003860:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8003864:	37 9c 00 28 	addi sp,sp,40                                  
 8003868:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_barrier = _POSIX_Barrier_Allocate();                            
                                                                      
  if ( !the_barrier ) {                                               
    _Thread_Enable_dispatch();                                        
 800386c:	f8 00 0d 14 	calli 8006cbc <_Thread_Enable_dispatch>        
    return EAGAIN;                                                    
 8003870:	34 04 00 0b 	mvi r4,11                                      
 8003874:	e3 ff ff d3 	bi 80037c0 <pthread_barrier_init+0x40>         
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
    the_attr = attr;                                                  
  } else {                                                            
    (void) pthread_barrierattr_init( &my_attr );                      
 8003878:	37 8c 00 1c 	addi r12,sp,28                                 
 800387c:	b9 80 08 00 	mv r1,r12                                      
 8003880:	5b 83 00 18 	sw (sp+24),r3                                  
 8003884:	fb ff ff 7c 	calli 8003674 <pthread_barrierattr_init>       
    the_attr = &my_attr;                                              
 8003888:	b9 80 10 00 	mv r2,r12                                      
 800388c:	2b 83 00 18 	lw r3,(sp+24)                                  
 8003890:	e3 ff ff c7 	bi 80037ac <pthread_barrier_init+0x2c>         
                                                                      

08002f8c <pthread_cleanup_push>: void pthread_cleanup_push( void (*routine)( void * ), void *arg ) {
 8002f8c:	37 9c ff f4 	addi sp,sp,-12                                 
 8002f90:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8002f94:	5b 8c 00 08 	sw (sp+8),r12                                  
 8002f98:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002f9c:	b8 20 58 00 	mv r11,r1                                      
 8002fa0:	b8 40 60 00 	mv r12,r2                                      
  /*                                                                  
   *  The POSIX standard does not address what to do when the routine 
   *  is NULL.  It also does not address what happens when we cannot  
   *  allocate memory or anything else bad happens.                   
   */                                                                 
  if ( !routine )                                                     
 8002fa4:	44 20 00 14 	be r1,r0,8002ff4 <pthread_cleanup_push+0x68>   
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 8002fa8:	78 03 08 01 	mvhi r3,0x801                                  
 8002fac:	38 63 68 c0 	ori r3,r3,0x68c0                               
 8002fb0:	28 61 00 00 	lw r1,(r3+0)                                   
 8002fb4:	34 21 00 01 	addi r1,r1,1                                   
 8002fb8:	58 61 00 00 	sw (r3+0),r1                                   
    return;                                                           
                                                                      
  _Thread_Disable_dispatch();                                         
  handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
 8002fbc:	34 01 00 10 	mvi r1,16                                      
 8002fc0:	f8 00 12 a6 	calli 8007a58 <_Workspace_Allocate>            
 8002fc4:	b8 20 18 00 	mv r3,r1                                       
                                                                      
  if ( handler ) {                                                    
 8002fc8:	44 20 00 0a 	be r1,r0,8002ff0 <pthread_cleanup_push+0x64>   <== NEVER TAKEN
    thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
 8002fcc:	78 04 08 01 	mvhi r4,0x801                                  
 8002fd0:	38 84 6d 6c 	ori r4,r4,0x6d6c                               
 8002fd4:	28 81 00 0c 	lw r1,(r4+12)                                  
    handler_stack = &thread_support->Cancellation_Handlers;           
                                                                      
    handler->routine = routine;                                       
    handler->arg = arg;                                               
                                                                      
    _Chain_Append( handler_stack, &handler->Node );                   
 8002fd8:	b8 60 10 00 	mv r2,r3                                       
  handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
                                                                      
  if ( handler ) {                                                    
    thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
                                                                      
    handler_stack = &thread_support->Cancellation_Handlers;           
 8002fdc:	28 21 01 20 	lw r1,(r1+288)                                 
                                                                      
    handler->routine = routine;                                       
 8002fe0:	58 6b 00 08 	sw (r3+8),r11                                  
    handler->arg = arg;                                               
 8002fe4:	58 6c 00 0c 	sw (r3+12),r12                                 
                                                                      
    _Chain_Append( handler_stack, &handler->Node );                   
 8002fe8:	34 21 00 e4 	addi r1,r1,228                                 
 8002fec:	f8 00 05 26 	calli 8004484 <_Chain_Append>                  
  }                                                                   
  _Thread_Enable_dispatch();                                          
 8002ff0:	f8 00 0d 00 	calli 80063f0 <_Thread_Enable_dispatch>        
}                                                                     
 8002ff4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002ff8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8002ffc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003000:	37 9c 00 0c 	addi sp,sp,12                                  
 8003004:	c3 a0 00 00 	ret                                            
                                                                      

08004098 <pthread_cond_init>: int pthread_cond_init( pthread_cond_t *cond, const pthread_condattr_t *attr ) {
 8004098:	37 9c ff ec 	addi sp,sp,-20                                 
 800409c:	5b 8b 00 10 	sw (sp+16),r11                                 
 80040a0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80040a4:	5b 8d 00 08 	sw (sp+8),r13                                  
 80040a8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80040ac:	b8 20 68 00 	mv r13,r1                                      
  POSIX_Condition_variables_Control   *the_cond;                      
  const pthread_condattr_t            *the_attr;                      
                                                                      
  if ( attr ) the_attr = attr;                                        
 80040b0:	44 40 00 35 	be r2,r0,8004184 <pthread_cond_init+0xec>      
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
                                                                      
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
 80040b4:	28 44 00 04 	lw r4,(r2+4)                                   
 80040b8:	34 03 00 01 	mvi r3,1                                       
    return EINVAL;                                                    
 80040bc:	34 01 00 16 	mvi r1,22                                      
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
                                                                      
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
 80040c0:	44 83 00 03 	be r4,r3,80040cc <pthread_cond_init+0x34>      <== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  if ( !the_attr->is_initialized )                                    
 80040c4:	28 43 00 00 	lw r3,(r2+0)                                   
 80040c8:	5c 60 00 07 	bne r3,r0,80040e4 <pthread_cond_init+0x4c>     
  *cond = the_cond->Object.id;                                        
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return 0;                                                           
}                                                                     
 80040cc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80040d0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80040d4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80040d8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80040dc:	37 9c 00 14 	addi sp,sp,20                                  
 80040e0:	c3 a0 00 00 	ret                                            
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80040e4:	78 03 08 01 	mvhi r3,0x801                                  
 80040e8:	38 63 78 d8 	ori r3,r3,0x78d8                               
 80040ec:	28 61 00 00 	lw r1,(r3+0)                                   
 80040f0:	34 21 00 01 	addi r1,r1,1                                   
 80040f4:	58 61 00 00 	sw (r3+0),r1                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Condition_variables_Control                
  *_POSIX_Condition_variables_Allocate( void )                        
{                                                                     
  return (POSIX_Condition_variables_Control *)                        
    _Objects_Allocate( &_POSIX_Condition_variables_Information );     
 80040f8:	78 0c 08 01 	mvhi r12,0x801                                 
 80040fc:	39 8c 7c a4 	ori r12,r12,0x7ca4                             
 8004100:	b9 80 08 00 	mv r1,r12                                      
 8004104:	5b 82 00 14 	sw (sp+20),r2                                  
 8004108:	f8 00 09 e5 	calli 800689c <_Objects_Allocate>              
 800410c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_cond = _POSIX_Condition_variables_Allocate();                   
                                                                      
  if ( !the_cond ) {                                                  
 8004110:	2b 82 00 14 	lw r2,(sp+20)                                  
 8004114:	44 20 00 1f 	be r1,r0,8004190 <pthread_cond_init+0xf8>      
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
  _Thread_queue_Initialize(                                           
 8004118:	78 01 08 01 	mvhi r1,0x801                                  
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
 800411c:	28 45 00 04 	lw r5,(r2+4)                                   
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
  _Thread_queue_Initialize(                                           
 8004120:	38 21 62 68 	ori r1,r1,0x6268                               
 8004124:	28 23 00 00 	lw r3,(r1+0)                                   
 8004128:	34 04 00 74 	mvi r4,116                                     
 800412c:	35 61 00 18 	addi r1,r11,24                                 
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
 8004130:	59 65 00 10 	sw (r11+16),r5                                 
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
  _Thread_queue_Initialize(                                           
 8004134:	34 02 00 00 	mvi r2,0                                       
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
 8004138:	59 60 00 14 	sw (r11+20),r0                                 
                                                                      
  _Thread_queue_Initialize(                                           
 800413c:	f8 00 11 5d 	calli 80086b0 <_Thread_queue_Initialize>       
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 8004140:	29 61 00 08 	lw r1,(r11+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8004144:	29 83 00 1c 	lw r3,(r12+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8004148:	20 22 ff ff 	andi r2,r1,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 800414c:	b4 42 10 00 	add r2,r2,r2                                   
 8004150:	b4 42 10 00 	add r2,r2,r2                                   
 8004154:	b4 62 10 00 	add r2,r3,r2                                   
 8004158:	58 4b 00 00 	sw (r2+0),r11                                  
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 800415c:	59 60 00 0c 	sw (r11+12),r0                                 
    &_POSIX_Condition_variables_Information,                          
    &the_cond->Object,                                                
    0                                                                 
  );                                                                  
                                                                      
  *cond = the_cond->Object.id;                                        
 8004160:	59 a1 00 00 	sw (r13+0),r1                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 8004164:	f8 00 0f 28 	calli 8007e04 <_Thread_Enable_dispatch>        
                                                                      
  return 0;                                                           
 8004168:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 800416c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004170:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004174:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004178:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800417c:	37 9c 00 14 	addi sp,sp,20                                  
 8004180:	c3 a0 00 00 	ret                                            
{                                                                     
  POSIX_Condition_variables_Control   *the_cond;                      
  const pthread_condattr_t            *the_attr;                      
                                                                      
  if ( attr ) the_attr = attr;                                        
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
 8004184:	78 02 08 01 	mvhi r2,0x801                                  
 8004188:	38 42 62 60 	ori r2,r2,0x6260                               
 800418c:	e3 ff ff ca 	bi 80040b4 <pthread_cond_init+0x1c>            
  _Thread_Disable_dispatch();                                         
                                                                      
  the_cond = _POSIX_Condition_variables_Allocate();                   
                                                                      
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
 8004190:	f8 00 0f 1d 	calli 8007e04 <_Thread_Enable_dispatch>        
    return ENOMEM;                                                    
 8004194:	34 01 00 0c 	mvi r1,12                                      
 8004198:	e3 ff ff cd 	bi 80040cc <pthread_cond_init+0x34>            
                                                                      

08003ef4 <pthread_condattr_destroy>: int pthread_condattr_destroy( pthread_condattr_t *attr ) { if ( !attr || attr->is_initialized == false ) return EINVAL;
 8003ef4:	34 02 00 16 	mvi r2,22                                      
                                                                      
int pthread_condattr_destroy(                                         
  pthread_condattr_t *attr                                            
)                                                                     
{                                                                     
  if ( !attr || attr->is_initialized == false )                       
 8003ef8:	44 20 00 05 	be r1,r0,8003f0c <pthread_condattr_destroy+0x18>
 8003efc:	28 23 00 00 	lw r3,(r1+0)                                   
 8003f00:	44 60 00 03 	be r3,r0,8003f0c <pthread_condattr_destroy+0x18><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  attr->is_initialized = false;                                       
 8003f04:	58 20 00 00 	sw (r1+0),r0                                   
  return 0;                                                           
 8003f08:	34 02 00 00 	mvi r2,0                                       
}                                                                     
 8003f0c:	b8 40 08 00 	mv r1,r2                                       
 8003f10:	c3 a0 00 00 	ret                                            
                                                                      

08003414 <pthread_create>: pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)( void * ), void *arg ) {
 8003414:	37 9c ff a0 	addi sp,sp,-96                                 
 8003418:	5b 8b 00 3c 	sw (sp+60),r11                                 
 800341c:	5b 8c 00 38 	sw (sp+56),r12                                 
 8003420:	5b 8d 00 34 	sw (sp+52),r13                                 
 8003424:	5b 8e 00 30 	sw (sp+48),r14                                 
 8003428:	5b 8f 00 2c 	sw (sp+44),r15                                 
 800342c:	5b 90 00 28 	sw (sp+40),r16                                 
 8003430:	5b 91 00 24 	sw (sp+36),r17                                 
 8003434:	5b 92 00 20 	sw (sp+32),r18                                 
 8003438:	5b 93 00 1c 	sw (sp+28),r19                                 
 800343c:	5b 94 00 18 	sw (sp+24),r20                                 
 8003440:	5b 95 00 14 	sw (sp+20),r21                                 
 8003444:	5b 9d 00 10 	sw (sp+16),ra                                  
  struct sched_param                  schedparam;                     
  Objects_Name                        name;                           
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
    return EFAULT;                                                    
 8003448:	34 0c 00 0e 	mvi r12,14                                     
  pthread_t              *thread,                                     
  const pthread_attr_t   *attr,                                       
  void                 *(*start_routine)( void * ),                   
  void                   *arg                                         
)                                                                     
{                                                                     
 800344c:	b8 60 68 00 	mv r13,r3                                      
 8003450:	b8 20 78 00 	mv r15,r1                                      
 8003454:	b8 80 70 00 	mv r14,r4                                      
  int                                 schedpolicy = SCHED_RR;         
  struct sched_param                  schedparam;                     
  Objects_Name                        name;                           
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
 8003458:	44 60 00 13 	be r3,r0,80034a4 <pthread_create+0x90>         <== NEVER TAKEN
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
 800345c:	b8 40 58 00 	mv r11,r2                                      
 8003460:	44 40 00 66 	be r2,r0,80035f8 <pthread_create+0x1e4>        
                                                                      
  if ( !the_attr->is_initialized )                                    
 8003464:	29 61 00 00 	lw r1,(r11+0)                                  
    return EINVAL;                                                    
 8003468:	34 0c 00 16 	mvi r12,22                                     
  if ( !start_routine )                                               
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
                                                                      
  if ( !the_attr->is_initialized )                                    
 800346c:	44 20 00 0e 	be r1,r0,80034a4 <pthread_create+0x90>         
   *  stack space if it is allowed to allocate it itself.             
   *                                                                  
   *  NOTE: If the user provides the stack we will let it drop below  
   *        twice the minimum.                                        
   */                                                                 
  if ( the_attr->stackaddr && !_Stack_Is_enough(the_attr->stacksize) )
 8003470:	29 61 00 04 	lw r1,(r11+4)                                  
 8003474:	44 20 00 06 	be r1,r0,800348c <pthread_create+0x78>         
 8003478:	78 02 08 02 	mvhi r2,0x802                                  
 800347c:	38 42 01 10 	ori r2,r2,0x110                                
 8003480:	29 63 00 08 	lw r3,(r11+8)                                  
 8003484:	28 41 00 00 	lw r1,(r2+0)                                   
 8003488:	54 23 00 07 	bgu r1,r3,80034a4 <pthread_create+0x90>        
   *  If inheritsched is set to PTHREAD_INHERIT_SCHED, then this thread
   *  inherits scheduling attributes from the creating thread.   If it is
   *  PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
 800348c:	29 61 00 10 	lw r1,(r11+16)                                 
 8003490:	34 02 00 01 	mvi r2,1                                       
 8003494:	44 22 00 5c 	be r1,r2,8003604 <pthread_create+0x1f0>        
 8003498:	34 02 00 02 	mvi r2,2                                       
      schedpolicy = the_attr->schedpolicy;                            
      schedparam  = the_attr->schedparam;                             
      break;                                                          
                                                                      
    default:                                                          
      return EINVAL;                                                  
 800349c:	34 0c 00 16 	mvi r12,22                                     
   *  If inheritsched is set to PTHREAD_INHERIT_SCHED, then this thread
   *  inherits scheduling attributes from the creating thread.   If it is
   *  PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
 80034a0:	44 22 00 10 	be r1,r2,80034e0 <pthread_create+0xcc>         
   */                                                                 
  *thread = the_thread->Object.id;                                    
                                                                      
  _RTEMS_Unlock_allocator();                                          
  return 0;                                                           
}                                                                     
 80034a4:	b9 80 08 00 	mv r1,r12                                      
 80034a8:	2b 9d 00 10 	lw ra,(sp+16)                                  
 80034ac:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 80034b0:	2b 8c 00 38 	lw r12,(sp+56)                                 
 80034b4:	2b 8d 00 34 	lw r13,(sp+52)                                 
 80034b8:	2b 8e 00 30 	lw r14,(sp+48)                                 
 80034bc:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 80034c0:	2b 90 00 28 	lw r16,(sp+40)                                 
 80034c4:	2b 91 00 24 	lw r17,(sp+36)                                 
 80034c8:	2b 92 00 20 	lw r18,(sp+32)                                 
 80034cc:	2b 93 00 1c 	lw r19,(sp+28)                                 
 80034d0:	2b 94 00 18 	lw r20,(sp+24)                                 
 80034d4:	2b 95 00 14 	lw r21,(sp+20)                                 
 80034d8:	37 9c 00 60 	addi sp,sp,96                                  
 80034dc:	c3 a0 00 00 	ret                                            
      schedparam  = api->schedparam;                                  
      break;                                                          
                                                                      
    case PTHREAD_EXPLICIT_SCHED:                                      
      schedpolicy = the_attr->schedpolicy;                            
      schedparam  = the_attr->schedparam;                             
 80034e0:	29 67 00 18 	lw r7,(r11+24)                                 
 80034e4:	29 66 00 1c 	lw r6,(r11+28)                                 
 80034e8:	29 65 00 20 	lw r5,(r11+32)                                 
 80034ec:	29 64 00 24 	lw r4,(r11+36)                                 
 80034f0:	29 63 00 28 	lw r3,(r11+40)                                 
 80034f4:	29 62 00 2c 	lw r2,(r11+44)                                 
 80034f8:	29 61 00 30 	lw r1,(r11+48)                                 
      schedpolicy = api->schedpolicy;                                 
      schedparam  = api->schedparam;                                  
      break;                                                          
                                                                      
    case PTHREAD_EXPLICIT_SCHED:                                      
      schedpolicy = the_attr->schedpolicy;                            
 80034fc:	29 71 00 14 	lw r17,(r11+20)                                
      schedparam  = the_attr->schedparam;                             
 8003500:	5b 87 00 40 	sw (sp+64),r7                                  
 8003504:	5b 86 00 44 	sw (sp+68),r6                                  
 8003508:	5b 85 00 48 	sw (sp+72),r5                                  
 800350c:	5b 84 00 4c 	sw (sp+76),r4                                  
 8003510:	5b 83 00 50 	sw (sp+80),r3                                  
 8003514:	5b 82 00 54 	sw (sp+84),r2                                  
 8003518:	5b 81 00 58 	sw (sp+88),r1                                  
                                                                      
  /*                                                                  
   *  Check the contentionscope since rtems only supports PROCESS wide
   *  contention (i.e. no system wide contention).                    
   */                                                                 
  if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )           
 800351c:	29 70 00 0c 	lw r16,(r11+12)                                
    return ENOTSUP;                                                   
 8003520:	34 0c 00 86 	mvi r12,134                                    
                                                                      
  /*                                                                  
   *  Check the contentionscope since rtems only supports PROCESS wide
   *  contention (i.e. no system wide contention).                    
   */                                                                 
  if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )           
 8003524:	5e 00 ff e0 	bne r16,r0,80034a4 <pthread_create+0x90>       
    return ENOTSUP;                                                   
                                                                      
  /*                                                                  
   *  Interpret the scheduling parameters.                            
   */                                                                 
  if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )       
 8003528:	2b 81 00 40 	lw r1,(sp+64)                                  
    return EINVAL;                                                    
 800352c:	34 0c 00 16 	mvi r12,22                                     
    return ENOTSUP;                                                   
                                                                      
  /*                                                                  
   *  Interpret the scheduling parameters.                            
   */                                                                 
  if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )       
 8003530:	f8 00 1c ad 	calli 800a7e4 <_POSIX_Priority_Is_valid>       
 8003534:	44 30 ff dc 	be r1,r16,80034a4 <pthread_create+0x90>        <== NEVER TAKEN
                                                                      
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(        
  int priority                                                        
)                                                                     
{                                                                     
  return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
 8003538:	78 05 08 02 	mvhi r5,0x802                                  
 800353c:	38 a5 01 14 	ori r5,r5,0x114                                
  core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
                                                                      
  /*                                                                  
   *  Set the core scheduling policy information.                     
   */                                                                 
  rc = _POSIX_Thread_Translate_sched_param(                           
 8003540:	ba 20 08 00 	mv r1,r17                                      
 8003544:	37 82 00 40 	addi r2,sp,64                                  
 8003548:	37 83 00 60 	addi r3,sp,96                                  
 800354c:	37 84 00 5c 	addi r4,sp,92                                  
   *  Interpret the scheduling parameters.                            
   */                                                                 
  if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )       
    return EINVAL;                                                    
                                                                      
  core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
 8003550:	2b 94 00 40 	lw r20,(sp+64)                                 
 8003554:	40 b5 00 00 	lbu r21,(r5+0)                                 
                                                                      
  /*                                                                  
   *  Set the core scheduling policy information.                     
   */                                                                 
  rc = _POSIX_Thread_Translate_sched_param(                           
 8003558:	f8 00 1c ab 	calli 800a804 <_POSIX_Thread_Translate_sched_param>
 800355c:	b8 20 60 00 	mv r12,r1                                      
    schedpolicy,                                                      
    &schedparam,                                                      
    &budget_algorithm,                                                
    &budget_callout                                                   
  );                                                                  
  if ( rc )                                                           
 8003560:	5c 20 ff d1 	bne r1,r0,80034a4 <pthread_create+0x90>        
  #endif                                                              
                                                                      
  /*                                                                  
   *  Lock the allocator mutex for protection                         
   */                                                                 
  _RTEMS_Lock_allocator();                                            
 8003564:	78 12 08 02 	mvhi r18,0x802                                 
 8003568:	3a 52 09 68 	ori r18,r18,0x968                              
 800356c:	2a 41 00 00 	lw r1,(r18+0)                                  
 *  _POSIX_Threads_Allocate                                           
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void )  
{                                                                     
  return (Thread_Control *) _Objects_Allocate( &_POSIX_Threads_Information );
 8003570:	78 10 08 02 	mvhi r16,0x802                                 
 8003574:	3a 10 0a 7c 	ori r16,r16,0xa7c                              
 8003578:	f8 00 05 38 	calli 8004a58 <_API_Mutex_Lock>                
 800357c:	ba 00 08 00 	mv r1,r16                                      
 8003580:	f8 00 08 68 	calli 8005720 <_Objects_Allocate>              
 8003584:	b8 20 98 00 	mv r19,r1                                      
   *  Allocate the thread control block.                              
   *                                                                  
   *  NOTE:  Global threads are not currently supported.              
   */                                                                 
  the_thread = _POSIX_Threads_Allocate();                             
  if ( !the_thread ) {                                                
 8003588:	44 2c 00 18 	be r1,r12,80035e8 <pthread_create+0x1d4>       
                                                                      
static inline size_t _POSIX_Threads_Ensure_minimum_stack (            
  size_t size                                                         
)                                                                     
{                                                                     
  if ( size >= PTHREAD_MINIMUM_STACK_SIZE )                           
 800358c:	78 01 08 02 	mvhi r1,0x802                                  
 8003590:	38 21 01 10 	ori r1,r1,0x110                                
 8003594:	28 24 00 00 	lw r4,(r1+0)                                   
                                                                      
  /*                                                                  
   *  Initialize the core thread for this task.                       
   */                                                                 
  name.name_p = NULL;   /* posix threads don't have a name by default */
  status = _Thread_Initialize(                                        
 8003598:	29 61 00 08 	lw r1,(r11+8)                                  
 800359c:	29 63 00 04 	lw r3,(r11+4)                                  
                                                                      
static inline size_t _POSIX_Threads_Ensure_minimum_stack (            
  size_t size                                                         
)                                                                     
{                                                                     
  if ( size >= PTHREAD_MINIMUM_STACK_SIZE )                           
 80035a0:	b4 84 20 00 	add r4,r4,r4                                   
                                                                      
  /*                                                                  
   *  Initialize the core thread for this task.                       
   */                                                                 
  name.name_p = NULL;   /* posix threads don't have a name by default */
  status = _Thread_Initialize(                                        
 80035a4:	50 81 00 02 	bgeu r4,r1,80035ac <pthread_create+0x198>      
 80035a8:	b8 20 20 00 	mv r4,r1                                       
 80035ac:	2b 89 00 5c 	lw r9,(sp+92)                                  
 80035b0:	2b 88 00 60 	lw r8,(sp+96)                                  
 80035b4:	ba 00 08 00 	mv r1,r16                                      
 80035b8:	ba 60 10 00 	mv r2,r19                                      
 80035bc:	34 05 00 00 	mvi r5,0                                       
 80035c0:	ca b4 30 00 	sub r6,r21,r20                                 
 80035c4:	34 07 00 01 	mvi r7,1                                       
 80035c8:	5b 89 00 04 	sw (sp+4),r9                                   
 80035cc:	5b 80 00 08 	sw (sp+8),r0                                   
 80035d0:	5b 80 00 0c 	sw (sp+12),r0                                  
 80035d4:	f8 00 0d a2 	calli 8006c5c <_Thread_Initialize>             
    budget_callout,                                                   
    0,                    /* isr level */                             
    name                  /* posix threads don't have a name */       
  );                                                                  
                                                                      
  if ( !status ) {                                                    
 80035d8:	5c 20 00 1f 	bne r1,r0,8003654 <pthread_create+0x240>       <== ALWAYS TAKEN
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (                       
  Thread_Control *the_pthread                                         
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object ); 
 80035dc:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 80035e0:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 80035e4:	f8 00 09 52 	calli 8005b2c <_Objects_Free>                  <== NOT EXECUTED
    _POSIX_Threads_Free( the_thread );                                
    _RTEMS_Unlock_allocator();                                        
 80035e8:	2a 41 00 00 	lw r1,(r18+0)                                  
    return EAGAIN;                                                    
 80035ec:	34 0c 00 0b 	mvi r12,11                                     
    name                  /* posix threads don't have a name */       
  );                                                                  
                                                                      
  if ( !status ) {                                                    
    _POSIX_Threads_Free( the_thread );                                
    _RTEMS_Unlock_allocator();                                        
 80035f0:	f8 00 05 36 	calli 8004ac8 <_API_Mutex_Unlock>              
    return EAGAIN;                                                    
 80035f4:	e3 ff ff ac 	bi 80034a4 <pthread_create+0x90>               
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
 80035f8:	78 0b 08 01 	mvhi r11,0x801                                 
 80035fc:	39 6b e1 84 	ori r11,r11,0xe184                             
 8003600:	e3 ff ff 99 	bi 8003464 <pthread_create+0x50>               
   *  PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
    case PTHREAD_INHERIT_SCHED:                                       
      api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];    
 8003604:	78 01 08 02 	mvhi r1,0x802                                  
 8003608:	38 21 0d 74 	ori r1,r1,0xd74                                
 800360c:	28 21 00 0c 	lw r1,(r1+12)                                  
 8003610:	28 22 01 20 	lw r2,(r1+288)                                 
      schedpolicy = api->schedpolicy;                                 
      schedparam  = api->schedparam;                                  
 8003614:	28 48 00 88 	lw r8,(r2+136)                                 
 8003618:	28 47 00 8c 	lw r7,(r2+140)                                 
 800361c:	28 46 00 90 	lw r6,(r2+144)                                 
 8003620:	28 45 00 94 	lw r5,(r2+148)                                 
 8003624:	28 44 00 98 	lw r4,(r2+152)                                 
 8003628:	28 43 00 9c 	lw r3,(r2+156)                                 
 800362c:	28 41 00 a0 	lw r1,(r2+160)                                 
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
    case PTHREAD_INHERIT_SCHED:                                       
      api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];    
      schedpolicy = api->schedpolicy;                                 
 8003630:	28 51 00 84 	lw r17,(r2+132)                                
      schedparam  = api->schedparam;                                  
 8003634:	5b 88 00 40 	sw (sp+64),r8                                  
 8003638:	5b 87 00 44 	sw (sp+68),r7                                  
 800363c:	5b 86 00 48 	sw (sp+72),r6                                  
 8003640:	5b 85 00 4c 	sw (sp+76),r5                                  
 8003644:	5b 84 00 50 	sw (sp+80),r4                                  
 8003648:	5b 83 00 54 	sw (sp+84),r3                                  
 800364c:	5b 81 00 58 	sw (sp+88),r1                                  
      break;                                                          
 8003650:	e3 ff ff b3 	bi 800351c <pthread_create+0x108>              
  }                                                                   
                                                                      
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8003654:	2a 70 01 20 	lw r16,(r19+288)                               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003658:	29 63 00 00 	lw r3,(r11+0)                                  
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 800365c:	ba 60 08 00 	mv r1,r19                                      
 8003660:	34 02 00 01 	mvi r2,1                                       
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003664:	5a 03 00 00 	sw (r16+0),r3                                  
 8003668:	29 65 00 04 	lw r5,(r11+4)                                  
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 800366c:	b9 a0 18 00 	mv r3,r13                                      
 8003670:	b9 c0 20 00 	mv r4,r14                                      
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003674:	5a 05 00 04 	sw (r16+4),r5                                  
 8003678:	29 66 00 08 	lw r6,(r11+8)                                  
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 800367c:	34 05 00 00 	mvi r5,0                                       
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003680:	5a 06 00 08 	sw (r16+8),r6                                  
 8003684:	29 66 00 0c 	lw r6,(r11+12)                                 
 8003688:	5a 06 00 0c 	sw (r16+12),r6                                 
 800368c:	29 66 00 10 	lw r6,(r11+16)                                 
 8003690:	5a 06 00 10 	sw (r16+16),r6                                 
 8003694:	29 66 00 14 	lw r6,(r11+20)                                 
 8003698:	5a 06 00 14 	sw (r16+20),r6                                 
 800369c:	29 66 00 18 	lw r6,(r11+24)                                 
 80036a0:	5a 06 00 18 	sw (r16+24),r6                                 
 80036a4:	29 66 00 1c 	lw r6,(r11+28)                                 
 80036a8:	5a 06 00 1c 	sw (r16+28),r6                                 
 80036ac:	29 66 00 20 	lw r6,(r11+32)                                 
 80036b0:	5a 06 00 20 	sw (r16+32),r6                                 
 80036b4:	29 66 00 24 	lw r6,(r11+36)                                 
 80036b8:	5a 06 00 24 	sw (r16+36),r6                                 
 80036bc:	29 66 00 28 	lw r6,(r11+40)                                 
 80036c0:	5a 06 00 28 	sw (r16+40),r6                                 
 80036c4:	29 66 00 2c 	lw r6,(r11+44)                                 
 80036c8:	5a 06 00 2c 	sw (r16+44),r6                                 
 80036cc:	29 66 00 30 	lw r6,(r11+48)                                 
 80036d0:	5a 06 00 30 	sw (r16+48),r6                                 
 80036d4:	29 66 00 34 	lw r6,(r11+52)                                 
 80036d8:	5a 06 00 34 	sw (r16+52),r6                                 
 80036dc:	29 66 00 38 	lw r6,(r11+56)                                 
 80036e0:	5a 06 00 38 	sw (r16+56),r6                                 
 80036e4:	29 66 00 3c 	lw r6,(r11+60)                                 
 80036e8:	5a 06 00 3c 	sw (r16+60),r6                                 
  api->detachstate = the_attr->detachstate;                           
 80036ec:	29 66 00 3c 	lw r6,(r11+60)                                 
 80036f0:	5a 06 00 40 	sw (r16+64),r6                                 
  api->schedpolicy = schedpolicy;                                     
  api->schedparam  = schedparam;                                      
 80036f4:	2b 86 00 40 	lw r6,(sp+64)                                  
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
  api->detachstate = the_attr->detachstate;                           
  api->schedpolicy = schedpolicy;                                     
 80036f8:	5a 11 00 84 	sw (r16+132),r17                               
  api->schedparam  = schedparam;                                      
 80036fc:	5a 06 00 88 	sw (r16+136),r6                                
 8003700:	2b 86 00 44 	lw r6,(sp+68)                                  
 8003704:	5a 06 00 8c 	sw (r16+140),r6                                
 8003708:	2b 86 00 48 	lw r6,(sp+72)                                  
 800370c:	5a 06 00 90 	sw (r16+144),r6                                
 8003710:	2b 86 00 4c 	lw r6,(sp+76)                                  
 8003714:	5a 06 00 94 	sw (r16+148),r6                                
 8003718:	2b 86 00 50 	lw r6,(sp+80)                                  
 800371c:	5a 06 00 98 	sw (r16+152),r6                                
 8003720:	2b 86 00 54 	lw r6,(sp+84)                                  
 8003724:	5a 06 00 9c 	sw (r16+156),r6                                
 8003728:	2b 86 00 58 	lw r6,(sp+88)                                  
 800372c:	5a 06 00 a0 	sw (r16+160),r6                                
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 8003730:	f8 00 10 0a 	calli 8007758 <_Thread_Start>                  
      _RTEMS_Unlock_allocator();                                      
      return EINVAL;                                                  
    }                                                                 
  #endif                                                              
                                                                      
  if ( schedpolicy == SCHED_SPORADIC ) {                              
 8003734:	34 01 00 04 	mvi r1,4                                       
 8003738:	46 21 00 06 	be r17,r1,8003750 <pthread_create+0x33c>       
  }                                                                   
                                                                      
  /*                                                                  
   *  Return the id and indicate we successfully created the thread   
   */                                                                 
  *thread = the_thread->Object.id;                                    
 800373c:	2a 62 00 08 	lw r2,(r19+8)                                  
                                                                      
  _RTEMS_Unlock_allocator();                                          
 8003740:	2a 41 00 00 	lw r1,(r18+0)                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Return the id and indicate we successfully created the thread   
   */                                                                 
  *thread = the_thread->Object.id;                                    
 8003744:	59 e2 00 00 	sw (r15+0),r2                                  
                                                                      
  _RTEMS_Unlock_allocator();                                          
 8003748:	f8 00 04 e0 	calli 8004ac8 <_API_Mutex_Unlock>              
  return 0;                                                           
 800374c:	e3 ff ff 56 	bi 80034a4 <pthread_create+0x90>               
      return EINVAL;                                                  
    }                                                                 
  #endif                                                              
                                                                      
  if ( schedpolicy == SCHED_SPORADIC ) {                              
    _Watchdog_Insert_ticks(                                           
 8003750:	36 01 00 90 	addi r1,r16,144                                
 8003754:	f8 00 10 93 	calli 80079a0 <_Timespec_To_ticks>             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8003758:	5a 01 00 b4 	sw (r16+180),r1                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800375c:	78 01 08 02 	mvhi r1,0x802                                  
 8003760:	36 02 00 a8 	addi r2,r16,168                                
 8003764:	38 21 09 88 	ori r1,r1,0x988                                
 8003768:	f8 00 11 d9 	calli 8007ecc <_Watchdog_Insert>               
 800376c:	e3 ff ff f4 	bi 800373c <pthread_create+0x328>              
                                                                      

0800c6d4 <pthread_exit>: void pthread_exit( void *value_ptr ) {
 800c6d4:	37 9c ff fc 	addi sp,sp,-4                                  
 800c6d8:	5b 9d 00 04 	sw (sp+4),ra                                   
  _POSIX_Thread_Exit( _Thread_Executing, value_ptr );                 
 800c6dc:	78 03 08 01 	mvhi r3,0x801                                  
 800c6e0:	38 63 4d b4 	ori r3,r3,0x4db4                               
}                                                                     
                                                                      
void pthread_exit(                                                    
  void  *value_ptr                                                    
)                                                                     
{                                                                     
 800c6e4:	b8 20 10 00 	mv r2,r1                                       
  _POSIX_Thread_Exit( _Thread_Executing, value_ptr );                 
 800c6e8:	28 61 00 0c 	lw r1,(r3+12)                                  
 800c6ec:	fb ff ff d4 	calli 800c63c <_POSIX_Thread_Exit>             
}                                                                     
 800c6f0:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800c6f4:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 800c6f8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08026f08 <pthread_kill>: int pthread_kill( pthread_t thread, int sig ) {
 8026f08:	37 9c ff e4 	addi sp,sp,-28                                 
 8026f0c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8026f10:	5b 8c 00 14 	sw (sp+20),r12                                 
 8026f14:	5b 8d 00 10 	sw (sp+16),r13                                 
 8026f18:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8026f1c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8026f20:	5b 9d 00 04 	sw (sp+4),ra                                   
 8026f24:	b8 40 58 00 	mv r11,r2                                      
  POSIX_API_Control  *api;                                            
  Thread_Control     *the_thread;                                     
  Objects_Locations  location;                                        
                                                                      
  if ( !sig )                                                         
 8026f28:	44 40 00 04 	be r2,r0,8026f38 <pthread_kill+0x30>           
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 8026f2c:	34 4e ff ff 	addi r14,r2,-1                                 
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
 8026f30:	34 02 00 1f 	mvi r2,31                                      
 8026f34:	50 4e 00 0d 	bgeu r2,r14,8026f68 <pthread_kill+0x60>        
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8026f38:	fb ff b3 aa 	calli 8013de0 <__errno>                        
 8026f3c:	34 02 00 16 	mvi r2,22                                      
 8026f40:	58 22 00 00 	sw (r1+0),r2                                   
 8026f44:	34 01 ff ff 	mvi r1,-1                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( ESRCH );                      
}                                                                     
 8026f48:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8026f4c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8026f50:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8026f54:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8026f58:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8026f5c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8026f60:	37 9c 00 1c 	addi sp,sp,28                                  
 8026f64:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  the_thread = _Thread_Get( thread, &location );                      
 8026f68:	37 82 00 1c 	addi r2,sp,28                                  
 8026f6c:	fb ff 97 25 	calli 800cc00 <_Thread_Get>                    
 8026f70:	b8 20 60 00 	mv r12,r1                                      
  switch ( location ) {                                               
 8026f74:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8026f78:	44 20 00 06 	be r1,r0,8026f90 <pthread_kill+0x88>           <== ALWAYS TAKEN
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( ESRCH );                      
 8026f7c:	fb ff b3 99 	calli 8013de0 <__errno>                        <== NOT EXECUTED
 8026f80:	34 02 00 03 	mvi r2,3                                       <== NOT EXECUTED
 8026f84:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8026f88:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8026f8c:	e3 ff ff ef 	bi 8026f48 <pthread_kill+0x40>                 <== NOT EXECUTED
                                                                      
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
                                                                      
      if ( sig ) {                                                    
                                                                      
        if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {  
 8026f90:	b5 6b 18 00 	add r3,r11,r11                                 
 8026f94:	b4 6b 18 00 	add r3,r3,r11                                  
 8026f98:	78 04 08 02 	mvhi r4,0x802                                  
 8026f9c:	b4 63 18 00 	add r3,r3,r3                                   
 8026fa0:	38 84 af 78 	ori r4,r4,0xaf78                               
 8026fa4:	b4 63 18 00 	add r3,r3,r3                                   
 8026fa8:	b4 83 18 00 	add r3,r4,r3                                   
 8026fac:	28 61 00 08 	lw r1,(r3+8)                                   
 8026fb0:	34 0f 00 01 	mvi r15,1                                      
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  If sig == 0 then just validate arguments                    
       */                                                             
                                                                      
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
 8026fb4:	29 8d 01 20 	lw r13,(r12+288)                               
                                                                      
      if ( sig ) {                                                    
                                                                      
        if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {  
 8026fb8:	44 2f 00 11 	be r1,r15,8026ffc <pthread_kill+0xf4>          
                                                                      
static inline sigset_t signo_to_mask(                                 
  uint32_t sig                                                        
)                                                                     
{                                                                     
  return 1u << (sig - 1);                                             
 8026fbc:	b9 c0 10 00 	mv r2,r14                                      
 8026fc0:	34 01 00 01 	mvi r1,1                                       
 8026fc4:	fb ff 6c 69 	calli 8002168 <__ashlsi3>                      
          return 0;                                                   
        }                                                             
                                                                      
        /* XXX critical section */                                    
                                                                      
        api->signals_pending |= signo_to_mask( sig );                 
 8026fc8:	29 a4 00 d4 	lw r4,(r13+212)                                
                                                                      
        (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
 8026fcc:	b9 60 10 00 	mv r2,r11                                      
 8026fd0:	34 03 00 00 	mvi r3,0                                       
          return 0;                                                   
        }                                                             
                                                                      
        /* XXX critical section */                                    
                                                                      
        api->signals_pending |= signo_to_mask( sig );                 
 8026fd4:	b8 81 08 00 	or r1,r4,r1                                    
 8026fd8:	59 a1 00 d4 	sw (r13+212),r1                                
                                                                      
        (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
 8026fdc:	b9 80 08 00 	mv r1,r12                                      
 8026fe0:	fb ff ff 67 	calli 8026d7c <_POSIX_signals_Unblock_thread>  
                                                                      
        if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
 8026fe4:	78 02 08 02 	mvhi r2,0x802                                  
 8026fe8:	38 42 af 2c 	ori r2,r2,0xaf2c                               
 8026fec:	28 41 00 08 	lw r1,(r2+8)                                   
 8026ff0:	44 20 00 03 	be r1,r0,8026ffc <pthread_kill+0xf4>           
 8026ff4:	28 41 00 0c 	lw r1,(r2+12)                                  
 8026ff8:	45 81 00 0b 	be r12,r1,8027024 <pthread_kill+0x11c>         
	  _Thread_Dispatch_necessary = true;                                 
      }                                                               
      _Thread_Enable_dispatch();                                      
 8026ffc:	fb ff 96 f4 	calli 800cbcc <_Thread_Enable_dispatch>        
      return 0;                                                       
 8027000:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( ESRCH );                      
}                                                                     
 8027004:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8027008:	2b 8b 00 18 	lw r11,(sp+24)                                 
 802700c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8027010:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8027014:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8027018:	2b 8f 00 08 	lw r15,(sp+8)                                  
 802701c:	37 9c 00 1c 	addi sp,sp,28                                  
 8027020:	c3 a0 00 00 	ret                                            
        api->signals_pending |= signo_to_mask( sig );                 
                                                                      
        (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
                                                                      
        if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
	  _Thread_Dispatch_necessary = true;                                 
 8027024:	30 4f 00 18 	sb (r2+24),r15                                 
 8027028:	e3 ff ff f5 	bi 8026ffc <pthread_kill+0xf4>                 
                                                                      

08005980 <pthread_mutex_timedlock>: int pthread_mutex_timedlock( pthread_mutex_t *mutex, const struct timespec *abstime ) {
 8005980:	37 9c ff f0 	addi sp,sp,-16                                 
 8005984:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8005988:	5b 8c 00 08 	sw (sp+8),r12                                  
 800598c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005990:	b8 20 60 00 	mv r12,r1                                      
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
 8005994:	b8 40 08 00 	mv r1,r2                                       
 8005998:	37 82 00 10 	addi r2,sp,16                                  
 800599c:	f8 00 00 49 	calli 8005ac0 <_POSIX_Absolute_timeout_to_ticks>
 80059a0:	b8 20 58 00 	mv r11,r1                                      
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
 80059a4:	34 01 00 03 	mvi r1,3                                       
 80059a8:	45 61 00 15 	be r11,r1,80059fc <pthread_mutex_timedlock+0x7c>
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );   
 80059ac:	2b 83 00 10 	lw r3,(sp+16)                                  
 80059b0:	34 02 00 00 	mvi r2,0                                       
 80059b4:	b9 80 08 00 	mv r1,r12                                      
 80059b8:	fb ff ff 9f 	calli 8005834 <_POSIX_Mutex_Lock_support>      
   *  This service only gives us the option to block.  We used a polling
   *  attempt to lock if the abstime was not in the future.  If we did
   *  not obtain the mutex, then not look at the status immediately,  
   *  make sure the right reason is returned.                         
   */                                                                 
  if ( !do_wait && (lock_status == EBUSY) ) {                         
 80059bc:	34 02 00 10 	mvi r2,16                                      
 80059c0:	44 22 00 06 	be r1,r2,80059d8 <pthread_mutex_timedlock+0x58><== ALWAYS TAKEN
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 80059c4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80059c8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80059cc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80059d0:	37 9c 00 10 	addi sp,sp,16                                  
 80059d4:	c3 a0 00 00 	ret                                            
   *  attempt to lock if the abstime was not in the future.  If we did
   *  not obtain the mutex, then not look at the status immediately,  
   *  make sure the right reason is returned.                         
   */                                                                 
  if ( !do_wait && (lock_status == EBUSY) ) {                         
    if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                   
 80059d8:	45 60 00 12 	be r11,r0,8005a20 <pthread_mutex_timedlock+0xa0><== NEVER TAKEN
      return EINVAL;                                                  
    if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||               
 80059dc:	35 6b ff ff 	addi r11,r11,-1                                
 80059e0:	34 02 00 01 	mvi r2,1                                       
 80059e4:	50 4b 00 11 	bgeu r2,r11,8005a28 <pthread_mutex_timedlock+0xa8><== ALWAYS TAKEN
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 80059e8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80059ec:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 80059f0:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 80059f4:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 80059f8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );   
 80059fc:	2b 83 00 10 	lw r3,(sp+16)                                  
 8005a00:	b9 80 08 00 	mv r1,r12                                      
 8005a04:	34 02 00 01 	mvi r2,1                                       
 8005a08:	fb ff ff 8b 	calli 8005834 <_POSIX_Mutex_Lock_support>      
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 8005a0c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005a10:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8005a14:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8005a18:	37 9c 00 10 	addi sp,sp,16                                  
 8005a1c:	c3 a0 00 00 	ret                                            
   *  not obtain the mutex, then not look at the status immediately,  
   *  make sure the right reason is returned.                         
   */                                                                 
  if ( !do_wait && (lock_status == EBUSY) ) {                         
    if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                   
      return EINVAL;                                                  
 8005a20:	34 01 00 16 	mvi r1,22                                      <== NOT EXECUTED
 8005a24:	e3 ff ff e8 	bi 80059c4 <pthread_mutex_timedlock+0x44>      <== NOT EXECUTED
    if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||               
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
 8005a28:	34 01 00 74 	mvi r1,116                                     
 8005a2c:	e3 ff ff e6 	bi 80059c4 <pthread_mutex_timedlock+0x44>      
                                                                      

08002bb4 <pthread_mutexattr_gettype>: const pthread_mutexattr_t *attr, int *type ) { if ( !attr ) return EINVAL;
 8002bb4:	34 03 00 16 	mvi r3,22                                      
int pthread_mutexattr_gettype(                                        
  const pthread_mutexattr_t *attr,                                    
  int                       *type                                     
)                                                                     
{                                                                     
  if ( !attr )                                                        
 8002bb8:	44 20 00 07 	be r1,r0,8002bd4 <pthread_mutexattr_gettype+0x20>
    return EINVAL;                                                    
                                                                      
  if ( !attr->is_initialized )                                        
 8002bbc:	28 24 00 00 	lw r4,(r1+0)                                   
 8002bc0:	44 80 00 05 	be r4,r0,8002bd4 <pthread_mutexattr_gettype+0x20>
    return EINVAL;                                                    
                                                                      
  if ( !type )                                                        
 8002bc4:	44 40 00 04 	be r2,r0,8002bd4 <pthread_mutexattr_gettype+0x20><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  *type = attr->type;                                                 
 8002bc8:	28 21 00 10 	lw r1,(r1+16)                                  
  return 0;                                                           
 8002bcc:	34 03 00 00 	mvi r3,0                                       
    return EINVAL;                                                    
                                                                      
  if ( !type )                                                        
    return EINVAL;                                                    
                                                                      
  *type = attr->type;                                                 
 8002bd0:	58 41 00 00 	sw (r2+0),r1                                   
  return 0;                                                           
}                                                                     
 8002bd4:	b8 60 08 00 	mv r1,r3                                       
 8002bd8:	c3 a0 00 00 	ret                                            
                                                                      

08005468 <pthread_mutexattr_setpshared>: pthread_mutexattr_t *attr, int pshared ) { if ( !attr || !attr->is_initialized ) return EINVAL;
 8005468:	34 03 00 16 	mvi r3,22                                      
int pthread_mutexattr_setpshared(                                     
  pthread_mutexattr_t *attr,                                          
  int                  pshared                                        
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
 800546c:	44 20 00 07 	be r1,r0,8005488 <pthread_mutexattr_setpshared+0x20>
 8005470:	28 24 00 00 	lw r4,(r1+0)                                   
 8005474:	44 80 00 05 	be r4,r0,8005488 <pthread_mutexattr_setpshared+0x20>
    return EINVAL;                                                    
                                                                      
  switch ( pshared ) {                                                
 8005478:	34 04 00 01 	mvi r4,1                                       
 800547c:	54 44 00 03 	bgu r2,r4,8005488 <pthread_mutexattr_setpshared+0x20><== NEVER TAKEN
    case PTHREAD_PROCESS_SHARED:                                      
    case PTHREAD_PROCESS_PRIVATE:                                     
      attr->process_shared = pshared;                                 
 8005480:	58 22 00 04 	sw (r1+4),r2                                   
      return 0;                                                       
 8005484:	34 03 00 00 	mvi r3,0                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
}                                                                     
 8005488:	b8 60 08 00 	mv r1,r3                                       
 800548c:	c3 a0 00 00 	ret                                            
                                                                      

08002c28 <pthread_mutexattr_settype>: pthread_mutexattr_t *attr, int type ) { if ( !attr || !attr->is_initialized ) return EINVAL;
 8002c28:	34 03 00 16 	mvi r3,22                                      
int pthread_mutexattr_settype(                                        
  pthread_mutexattr_t *attr,                                          
  int                  type                                           
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
 8002c2c:	44 20 00 07 	be r1,r0,8002c48 <pthread_mutexattr_settype+0x20>
 8002c30:	28 24 00 00 	lw r4,(r1+0)                                   
 8002c34:	44 80 00 05 	be r4,r0,8002c48 <pthread_mutexattr_settype+0x20><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  switch ( type ) {                                                   
 8002c38:	34 04 00 03 	mvi r4,3                                       
 8002c3c:	54 44 00 03 	bgu r2,r4,8002c48 <pthread_mutexattr_settype+0x20>
    case PTHREAD_MUTEX_NORMAL:                                        
    case PTHREAD_MUTEX_RECURSIVE:                                     
    case PTHREAD_MUTEX_ERRORCHECK:                                    
    case PTHREAD_MUTEX_DEFAULT:                                       
      attr->type = type;                                              
 8002c40:	58 22 00 10 	sw (r1+16),r2                                  
      return 0;                                                       
 8002c44:	34 03 00 00 	mvi r3,0                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
}                                                                     
 8002c48:	b8 60 08 00 	mv r1,r3                                       
 8002c4c:	c3 a0 00 00 	ret                                            
                                                                      

08003c88 <pthread_once>: int pthread_once( pthread_once_t *once_control, void (*init_routine)(void) ) {
 8003c88:	37 9c ff ec 	addi sp,sp,-20                                 
 8003c8c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003c90:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003c94:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003c98:	5b 9d 00 04 	sw (sp+4),ra                                   
  if ( !once_control || !init_routine )                               
 8003c9c:	64 43 00 00 	cmpei r3,r2,0                                  
                                                                      
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
 8003ca0:	b8 40 60 00 	mv r12,r2                                      
  if ( !once_control || !init_routine )                               
 8003ca4:	64 22 00 00 	cmpei r2,r1,0                                  
                                                                      
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
 8003ca8:	b8 20 58 00 	mv r11,r1                                      
  if ( !once_control || !init_routine )                               
 8003cac:	b8 62 18 00 	or r3,r3,r2                                    
    return EINVAL;                                                    
 8003cb0:	34 01 00 16 	mvi r1,22                                      
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
  if ( !once_control || !init_routine )                               
 8003cb4:	5c 60 00 04 	bne r3,r0,8003cc4 <pthread_once+0x3c>          
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
 8003cb8:	29 6d 00 04 	lw r13,(r11+4)                                 
      once_control->init_executed = true;                             
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
  }                                                                   
  return 0;                                                           
 8003cbc:	34 01 00 00 	mvi r1,0                                       
)                                                                     
{                                                                     
  if ( !once_control || !init_routine )                               
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
 8003cc0:	45 a3 00 07 	be r13,r3,8003cdc <pthread_once+0x54>          
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
  }                                                                   
  return 0;                                                           
}                                                                     
 8003cc4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003cc8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003ccc:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003cd0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003cd4:	37 9c 00 14 	addi sp,sp,20                                  
 8003cd8:	c3 a0 00 00 	ret                                            
  if ( !once_control || !init_routine )                               
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
    rtems_mode saveMode;                                              
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
 8003cdc:	34 01 01 00 	mvi r1,256                                     
 8003ce0:	34 02 01 00 	mvi r2,256                                     
 8003ce4:	37 83 00 14 	addi r3,sp,20                                  
 8003ce8:	f8 00 01 ab 	calli 8004394 <rtems_task_mode>                
    if ( !once_control->init_executed ) {                             
 8003cec:	29 61 00 04 	lw r1,(r11+4)                                  
 8003cf0:	44 2d 00 0c 	be r1,r13,8003d20 <pthread_once+0x98>          <== ALWAYS TAKEN
      once_control->is_initialized = true;                            
      once_control->init_executed = true;                             
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
 8003cf4:	2b 81 00 14 	lw r1,(sp+20)                                  
 8003cf8:	34 02 01 00 	mvi r2,256                                     
 8003cfc:	37 83 00 14 	addi r3,sp,20                                  
 8003d00:	f8 00 01 a5 	calli 8004394 <rtems_task_mode>                
  }                                                                   
  return 0;                                                           
 8003d04:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003d08:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d0c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003d10:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003d14:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003d18:	37 9c 00 14 	addi sp,sp,20                                  
 8003d1c:	c3 a0 00 00 	ret                                            
                                                                      
  if ( !once_control->init_executed ) {                               
    rtems_mode saveMode;                                              
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
    if ( !once_control->init_executed ) {                             
      once_control->is_initialized = true;                            
 8003d20:	34 01 00 01 	mvi r1,1                                       
 8003d24:	59 61 00 00 	sw (r11+0),r1                                  
      once_control->init_executed = true;                             
 8003d28:	59 61 00 04 	sw (r11+4),r1                                  
      (*init_routine)();                                              
 8003d2c:	d9 80 00 00 	call r12                                       
 8003d30:	e3 ff ff f1 	bi 8003cf4 <pthread_once+0x6c>                 
                                                                      

08004558 <pthread_rwlock_init>: int pthread_rwlock_init( pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr ) {
 8004558:	37 9c ff e0 	addi sp,sp,-32                                 
 800455c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8004560:	5b 8c 00 10 	sw (sp+16),r12                                 
 8004564:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8004568:	5b 8e 00 08 	sw (sp+8),r14                                  
 800456c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004570:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !rwlock )                                                      
    return EINVAL;                                                    
 8004574:	34 01 00 16 	mvi r1,22                                      
  const pthread_rwlockattr_t  *the_attr;                              
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !rwlock )                                                      
 8004578:	45 60 00 07 	be r11,r0,8004594 <pthread_rwlock_init+0x3c>   
    return EINVAL;                                                    
                                                                      
  /*                                                                  
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
 800457c:	44 40 00 31 	be r2,r0,8004640 <pthread_rwlock_init+0xe8>    
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 8004580:	28 43 00 00 	lw r3,(r2+0)                                   
    return EINVAL;                                                    
 8004584:	34 01 00 16 	mvi r1,22                                      
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 8004588:	44 60 00 03 	be r3,r0,8004594 <pthread_rwlock_init+0x3c>    <== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  switch ( the_attr->process_shared ) {                               
 800458c:	28 4e 00 04 	lw r14,(r2+4)                                  
 8004590:	45 c0 00 08 	be r14,r0,80045b0 <pthread_rwlock_init+0x58>   <== ALWAYS TAKEN
                                                                      
  *rwlock = the_rwlock->Object.id;                                    
                                                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 8004594:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004598:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800459c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80045a0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80045a4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80045a8:	37 9c 00 20 	addi sp,sp,32                                  
 80045ac:	c3 a0 00 00 	ret                                            
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80045b0:	78 01 08 01 	mvhi r1,0x801                                  
 80045b4:	38 21 98 d8 	ori r1,r1,0x98d8                               
 80045b8:	28 22 00 00 	lw r2,(r1+0)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes(         
  CORE_RWLock_Attributes *the_attributes                              
)                                                                     
{                                                                     
  the_attributes->XXX = 0;                                            
 80045bc:	5b 80 00 20 	sw (sp+32),r0                                  
 80045c0:	34 42 00 01 	addi r2,r2,1                                   
 80045c4:	58 22 00 00 	sw (r1+0),r2                                   
 *  the inactive chain of free RWLock control blocks.                 
 */                                                                   
RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void )
{                                                                     
  return (POSIX_RWLock_Control *)                                     
    _Objects_Allocate( &_POSIX_RWLock_Information );                  
 80045c8:	78 0d 08 01 	mvhi r13,0x801                                 
 80045cc:	39 ad 9a 4c 	ori r13,r13,0x9a4c                             
 80045d0:	b9 a0 08 00 	mv r1,r13                                      
 80045d4:	f8 00 0a 12 	calli 8006e1c <_Objects_Allocate>              
 80045d8:	b8 20 60 00 	mv r12,r1                                      
   */                                                                 
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_rwlock = _POSIX_RWLock_Allocate();                              
                                                                      
  if ( !the_rwlock ) {                                                
 80045dc:	44 2e 00 16 	be r1,r14,8004634 <pthread_rwlock_init+0xdc>   
    _Thread_Enable_dispatch();                                        
    return EAGAIN;                                                    
  }                                                                   
                                                                      
  _CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes );    
 80045e0:	37 82 00 20 	addi r2,sp,32                                  
 80045e4:	34 21 00 10 	addi r1,r1,16                                  
 80045e8:	f8 00 07 27 	calli 8006284 <_CORE_RWLock_Initialize>        
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 80045ec:	29 82 00 08 	lw r2,(r12+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80045f0:	29 a3 00 1c 	lw r3,(r13+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 80045f4:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80045f8:	b4 21 08 00 	add r1,r1,r1                                   
 80045fc:	b4 21 08 00 	add r1,r1,r1                                   
 8004600:	b4 61 08 00 	add r1,r3,r1                                   
 8004604:	58 2c 00 00 	sw (r1+0),r12                                  
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 8004608:	59 80 00 0c 	sw (r12+12),r0                                 
    &_POSIX_RWLock_Information,                                       
    &the_rwlock->Object,                                              
    0                                                                 
  );                                                                  
                                                                      
  *rwlock = the_rwlock->Object.id;                                    
 800460c:	59 62 00 00 	sw (r11+0),r2                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 8004610:	f8 00 0e ef 	calli 80081cc <_Thread_Enable_dispatch>        
  return 0;                                                           
 8004614:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8004618:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800461c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004620:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004624:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004628:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800462c:	37 9c 00 20 	addi sp,sp,32                                  
 8004630:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_rwlock = _POSIX_RWLock_Allocate();                              
                                                                      
  if ( !the_rwlock ) {                                                
    _Thread_Enable_dispatch();                                        
 8004634:	f8 00 0e e6 	calli 80081cc <_Thread_Enable_dispatch>        
    return EAGAIN;                                                    
 8004638:	34 01 00 0b 	mvi r1,11                                      
 800463c:	e3 ff ff d6 	bi 8004594 <pthread_rwlock_init+0x3c>          
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
    the_attr = attr;                                                  
  } else {                                                            
    (void) pthread_rwlockattr_init( &default_attr );                  
 8004640:	37 8c 00 18 	addi r12,sp,24                                 
 8004644:	b9 80 08 00 	mv r1,r12                                      
 8004648:	f8 00 02 ee 	calli 8005200 <pthread_rwlockattr_init>        
    the_attr = &default_attr;                                         
 800464c:	b9 80 10 00 	mv r2,r12                                      
 8004650:	e3 ff ff cc 	bi 8004580 <pthread_rwlock_init+0x28>          
                                                                      

080046d8 <pthread_rwlock_timedrdlock>: int pthread_rwlock_timedrdlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) {
 80046d8:	37 9c ff e0 	addi sp,sp,-32                                 
 80046dc:	5b 8b 00 18 	sw (sp+24),r11                                 
 80046e0:	5b 8c 00 14 	sw (sp+20),r12                                 
 80046e4:	5b 8d 00 10 	sw (sp+16),r13                                 
 80046e8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80046ec:	5b 8f 00 08 	sw (sp+8),r15                                  
 80046f0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80046f4:	b8 20 58 00 	mv r11,r1                                      
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
    return EINVAL;                                                    
 80046f8:	34 0c 00 16 	mvi r12,22                                     
                                                                      
int pthread_rwlock_timedrdlock(                                       
  pthread_rwlock_t      *rwlock,                                      
  const struct timespec *abstime                                      
)                                                                     
{                                                                     
 80046fc:	b8 40 08 00 	mv r1,r2                                       
  Objects_Locations                            location;              
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
 8004700:	45 60 00 0c 	be r11,r0,8004730 <pthread_rwlock_timedrdlock+0x58>
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
 8004704:	37 82 00 1c 	addi r2,sp,28                                  
 8004708:	f8 00 1d 33 	calli 800bbd4 <_POSIX_Absolute_timeout_to_ticks>
 800470c:	78 03 08 01 	mvhi r3,0x801                                  
 8004710:	29 62 00 00 	lw r2,(r11+0)                                  
 8004714:	b8 20 70 00 	mv r14,r1                                      
 8004718:	b8 60 08 00 	mv r1,r3                                       
 800471c:	38 21 9a 4c 	ori r1,r1,0x9a4c                               
 8004720:	37 83 00 20 	addi r3,sp,32                                  
 8004724:	f8 00 0b 0f 	calli 8007360 <_Objects_Get>                   
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
 8004728:	2b 8d 00 20 	lw r13,(sp+32)                                 
 800472c:	45 a0 00 0a 	be r13,r0,8004754 <pthread_rwlock_timedrdlock+0x7c>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
 8004730:	b9 80 08 00 	mv r1,r12                                      
 8004734:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004738:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800473c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004740:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004744:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8004748:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800474c:	37 9c 00 20 	addi sp,sp,32                                  
 8004750:	c3 a0 00 00 	ret                                            
int	_EXFUN(pthread_rwlock_init,                                       
	(pthread_rwlock_t *__rwlock, _CONST pthread_rwlockattr_t *__attr));  
int	_EXFUN(pthread_rwlock_destroy, (pthread_rwlock_t *__rwlock));     
int	_EXFUN(pthread_rwlock_rdlock,(pthread_rwlock_t *__rwlock));       
int	_EXFUN(pthread_rwlock_tryrdlock,(pthread_rwlock_t *__rwlock));    
int	_EXFUN(pthread_rwlock_timedrdlock,                                
 8004754:	65 cf 00 03 	cmpei r15,r14,3                                
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_reading(                                
 8004758:	29 62 00 00 	lw r2,(r11+0)                                  
 800475c:	2b 84 00 1c 	lw r4,(sp+28)                                  
 8004760:	34 21 00 10 	addi r1,r1,16                                  
 8004764:	b9 e0 18 00 	mv r3,r15                                      
 8004768:	34 05 00 00 	mvi r5,0                                       
 800476c:	f8 00 06 d3 	calli 80062b8 <_CORE_RWLock_Obtain_for_reading>
	do_wait,                                                             
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
 8004770:	f8 00 0e 97 	calli 80081cc <_Thread_Enable_dispatch>        
      if ( !do_wait ) {                                               
 8004774:	5d ed 00 10 	bne r15,r13,80047b4 <pthread_rwlock_timedrdlock+0xdc>
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
 8004778:	78 01 08 01 	mvhi r1,0x801                                  
 800477c:	38 21 9d 84 	ori r1,r1,0x9d84                               
 8004780:	28 21 00 0c 	lw r1,(r1+12)                                  
 8004784:	34 02 00 02 	mvi r2,2                                       
 8004788:	28 21 00 34 	lw r1,(r1+52)                                  
 800478c:	44 22 00 04 	be r1,r2,800479c <pthread_rwlock_timedrdlock+0xc4>
	       status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                     
	    return ETIMEDOUT;                                                
        }                                                             
      }                                                               
                                                                      
      return _POSIX_RWLock_Translate_core_RWLock_return_code(         
 8004790:	f8 00 00 4a 	calli 80048b8 <_POSIX_RWLock_Translate_core_RWLock_return_code>
 8004794:	b8 20 60 00 	mv r12,r1                                      
 8004798:	e3 ff ff e6 	bi 8004730 <pthread_rwlock_timedrdlock+0x58>   
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                    
 800479c:	45 cf ff e5 	be r14,r15,8004730 <pthread_rwlock_timedrdlock+0x58><== NEVER TAKEN
	    return EINVAL;                                                   
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                
 80047a0:	35 ce ff ff 	addi r14,r14,-1                                
 80047a4:	34 02 00 01 	mvi r2,1                                       
	       status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                     
	    return ETIMEDOUT;                                                
 80047a8:	34 0c 00 74 	mvi r12,116                                    
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                    
	    return EINVAL;                                                   
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                
 80047ac:	50 4e ff e1 	bgeu r2,r14,8004730 <pthread_rwlock_timedrdlock+0x58><== ALWAYS TAKEN
 80047b0:	e3 ff ff f8 	bi 8004790 <pthread_rwlock_timedrdlock+0xb8>   <== NOT EXECUTED
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
 80047b4:	78 01 08 01 	mvhi r1,0x801                                  
 80047b8:	38 21 9d 84 	ori r1,r1,0x9d84                               
 80047bc:	28 21 00 0c 	lw r1,(r1+12)                                  
 80047c0:	28 21 00 34 	lw r1,(r1+52)                                  
 80047c4:	e3 ff ff f3 	bi 8004790 <pthread_rwlock_timedrdlock+0xb8>   
                                                                      

080047c8 <pthread_rwlock_timedwrlock>: int pthread_rwlock_timedwrlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) {
 80047c8:	37 9c ff e0 	addi sp,sp,-32                                 
 80047cc:	5b 8b 00 18 	sw (sp+24),r11                                 
 80047d0:	5b 8c 00 14 	sw (sp+20),r12                                 
 80047d4:	5b 8d 00 10 	sw (sp+16),r13                                 
 80047d8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80047dc:	5b 8f 00 08 	sw (sp+8),r15                                  
 80047e0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80047e4:	b8 20 58 00 	mv r11,r1                                      
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
    return EINVAL;                                                    
 80047e8:	34 0c 00 16 	mvi r12,22                                     
                                                                      
int pthread_rwlock_timedwrlock(                                       
  pthread_rwlock_t      *rwlock,                                      
  const struct timespec *abstime                                      
)                                                                     
{                                                                     
 80047ec:	b8 40 08 00 	mv r1,r2                                       
  Objects_Locations                            location;              
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
 80047f0:	45 60 00 0c 	be r11,r0,8004820 <pthread_rwlock_timedwrlock+0x58>
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
 80047f4:	37 82 00 1c 	addi r2,sp,28                                  
 80047f8:	f8 00 1c f7 	calli 800bbd4 <_POSIX_Absolute_timeout_to_ticks>
 80047fc:	78 03 08 01 	mvhi r3,0x801                                  
 8004800:	29 62 00 00 	lw r2,(r11+0)                                  
 8004804:	b8 20 70 00 	mv r14,r1                                      
 8004808:	b8 60 08 00 	mv r1,r3                                       
 800480c:	38 21 9a 4c 	ori r1,r1,0x9a4c                               
 8004810:	37 83 00 20 	addi r3,sp,32                                  
 8004814:	f8 00 0a d3 	calli 8007360 <_Objects_Get>                   
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
 8004818:	2b 8d 00 20 	lw r13,(sp+32)                                 
 800481c:	45 a0 00 0a 	be r13,r0,8004844 <pthread_rwlock_timedwrlock+0x7c>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
 8004820:	b9 80 08 00 	mv r1,r12                                      
 8004824:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004828:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800482c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004830:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004834:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8004838:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800483c:	37 9c 00 20 	addi sp,sp,32                                  
 8004840:	c3 a0 00 00 	ret                                            
        (pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime));
int	_EXFUN(pthread_rwlock_unlock,(pthread_rwlock_t *__rwlock));       
int	_EXFUN(pthread_rwlock_wrlock,(pthread_rwlock_t *__rwlock));       
int	_EXFUN(pthread_rwlock_trywrlock,(pthread_rwlock_t *__rwlock));    
int	_EXFUN(pthread_rwlock_timedwrlock,                                
 8004844:	65 cf 00 03 	cmpei r15,r14,3                                
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_writing(                                
 8004848:	29 62 00 00 	lw r2,(r11+0)                                  
 800484c:	2b 84 00 1c 	lw r4,(sp+28)                                  
 8004850:	34 21 00 10 	addi r1,r1,16                                  
 8004854:	b9 e0 18 00 	mv r3,r15                                      
 8004858:	34 05 00 00 	mvi r5,0                                       
 800485c:	f8 00 06 e3 	calli 80063e8 <_CORE_RWLock_Obtain_for_writing>
	do_wait,                                                             
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
 8004860:	f8 00 0e 5b 	calli 80081cc <_Thread_Enable_dispatch>        
      if ( !do_wait &&                                                
 8004864:	5d ed 00 10 	bne r15,r13,80048a4 <pthread_rwlock_timedwrlock+0xdc>
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
 8004868:	78 01 08 01 	mvhi r1,0x801                                  
 800486c:	38 21 9d 84 	ori r1,r1,0x9d84                               
 8004870:	28 21 00 0c 	lw r1,(r1+12)                                  
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
 8004874:	34 02 00 02 	mvi r2,2                                       
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
 8004878:	28 21 00 34 	lw r1,(r1+52)                                  
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
 800487c:	44 22 00 04 	be r1,r2,800488c <pthread_rwlock_timedwrlock+0xc4>
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
	     status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                       
	  return ETIMEDOUT;                                                  
      }                                                               
                                                                      
      return _POSIX_RWLock_Translate_core_RWLock_return_code(         
 8004880:	f8 00 00 0e 	calli 80048b8 <_POSIX_RWLock_Translate_core_RWLock_return_code>
 8004884:	b8 20 60 00 	mv r12,r1                                      
 8004888:	e3 ff ff e6 	bi 8004820 <pthread_rwlock_timedwrlock+0x58>   
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
	if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                      
 800488c:	45 cf ff e5 	be r14,r15,8004820 <pthread_rwlock_timedwrlock+0x58><== NEVER TAKEN
	  return EINVAL;                                                     
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
 8004890:	35 ce ff ff 	addi r14,r14,-1                                
 8004894:	34 02 00 01 	mvi r2,1                                       
	     status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                       
	  return ETIMEDOUT;                                                  
 8004898:	34 0c 00 74 	mvi r12,116                                    
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
	if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                      
	  return EINVAL;                                                     
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
 800489c:	50 4e ff e1 	bgeu r2,r14,8004820 <pthread_rwlock_timedwrlock+0x58><== ALWAYS TAKEN
 80048a0:	e3 ff ff f8 	bi 8004880 <pthread_rwlock_timedwrlock+0xb8>   <== NOT EXECUTED
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
 80048a4:	78 01 08 01 	mvhi r1,0x801                                  
 80048a8:	38 21 9d 84 	ori r1,r1,0x9d84                               
 80048ac:	28 21 00 0c 	lw r1,(r1+12)                                  
 80048b0:	28 21 00 34 	lw r1,(r1+52)                                  
 80048b4:	e3 ff ff f3 	bi 8004880 <pthread_rwlock_timedwrlock+0xb8>   
                                                                      

08005220 <pthread_rwlockattr_setpshared>: pthread_rwlockattr_t *attr, int pshared ) { if ( !attr ) return EINVAL;
 8005220:	34 03 00 16 	mvi r3,22                                      
int pthread_rwlockattr_setpshared(                                    
  pthread_rwlockattr_t *attr,                                         
  int                    pshared                                      
)                                                                     
{                                                                     
  if ( !attr )                                                        
 8005224:	44 20 00 07 	be r1,r0,8005240 <pthread_rwlockattr_setpshared+0x20>
    return EINVAL;                                                    
                                                                      
  if ( !attr->is_initialized )                                        
 8005228:	28 24 00 00 	lw r4,(r1+0)                                   
 800522c:	44 80 00 05 	be r4,r0,8005240 <pthread_rwlockattr_setpshared+0x20>
    return EINVAL;                                                    
                                                                      
  switch ( pshared ) {                                                
 8005230:	34 04 00 01 	mvi r4,1                                       
 8005234:	54 44 00 03 	bgu r2,r4,8005240 <pthread_rwlockattr_setpshared+0x20><== NEVER TAKEN
    case PTHREAD_PROCESS_SHARED:                                      
    case PTHREAD_PROCESS_PRIVATE:                                     
      attr->process_shared = pshared;                                 
 8005238:	58 22 00 04 	sw (r1+4),r2                                   
      return 0;                                                       
 800523c:	34 03 00 00 	mvi r3,0                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
}                                                                     
 8005240:	b8 60 08 00 	mv r1,r3                                       
 8005244:	c3 a0 00 00 	ret                                            
                                                                      

080064e0 <pthread_setschedparam>: int pthread_setschedparam( pthread_t thread, int policy, struct sched_param *param ) {
 80064e0:	37 9c ff dc 	addi sp,sp,-36                                 
 80064e4:	5b 8b 00 18 	sw (sp+24),r11                                 
 80064e8:	5b 8c 00 14 	sw (sp+20),r12                                 
 80064ec:	5b 8d 00 10 	sw (sp+16),r13                                 
 80064f0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80064f4:	5b 8f 00 08 	sw (sp+8),r15                                  
 80064f8:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Check all the parameters                                        
   */                                                                 
  if ( !param )                                                       
    return EINVAL;                                                    
 80064fc:	34 0c 00 16 	mvi r12,22                                     
int pthread_setschedparam(                                            
  pthread_t           thread,                                         
  int                 policy,                                         
  struct sched_param *param                                           
)                                                                     
{                                                                     
 8006500:	b8 60 58 00 	mv r11,r3                                      
 8006504:	b8 20 68 00 	mv r13,r1                                      
 8006508:	b8 40 70 00 	mv r14,r2                                      
  int                                  rc;                            
                                                                      
  /*                                                                  
   *  Check all the parameters                                        
   */                                                                 
  if ( !param )                                                       
 800650c:	44 60 00 08 	be r3,r0,800652c <pthread_setschedparam+0x4c>  
    return EINVAL;                                                    
                                                                      
  rc = _POSIX_Thread_Translate_sched_param(                           
 8006510:	b8 40 08 00 	mv r1,r2                                       
 8006514:	37 84 00 20 	addi r4,sp,32                                  
 8006518:	b8 60 10 00 	mv r2,r3                                       
 800651c:	37 83 00 24 	addi r3,sp,36                                  
 8006520:	f8 00 1b 11 	calli 800d164 <_POSIX_Thread_Translate_sched_param>
 8006524:	b8 20 60 00 	mv r12,r1                                      
    policy,                                                           
    param,                                                            
    &budget_algorithm,                                                
    &budget_callout                                                   
  );                                                                  
  if ( rc )                                                           
 8006528:	44 20 00 0a 	be r1,r0,8006550 <pthread_setschedparam+0x70>  
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return ESRCH;                                                       
}                                                                     
 800652c:	b9 80 08 00 	mv r1,r12                                      
 8006530:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006534:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8006538:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800653c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8006540:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8006544:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8006548:	37 9c 00 24 	addi sp,sp,36                                  
 800654c:	c3 a0 00 00 	ret                                            
    return rc;                                                        
                                                                      
  /*                                                                  
   *  Actually change the scheduling policy and parameters            
   */                                                                 
  the_thread = _Thread_Get( thread, &location );                      
 8006550:	b9 a0 08 00 	mv r1,r13                                      
 8006554:	37 82 00 1c 	addi r2,sp,28                                  
 8006558:	f8 00 0b 9a 	calli 80093c0 <_Thread_Get>                    
 800655c:	b8 20 78 00 	mv r15,r1                                      
  switch ( location ) {                                               
 8006560:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8006564:	44 2c 00 03 	be r1,r12,8006570 <pthread_setschedparam+0x90> 
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return ESRCH;                                                       
 8006568:	34 0c 00 03 	mvi r12,3                                      
 800656c:	e3 ff ff f0 	bi 800652c <pthread_setschedparam+0x4c>        
   */                                                                 
  the_thread = _Thread_Get( thread, &location );                      
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
 8006570:	29 ed 01 20 	lw r13,(r15+288)                               
                                                                      
      if ( api->schedpolicy == SCHED_SPORADIC )                       
 8006574:	34 01 00 04 	mvi r1,4                                       
 8006578:	29 a2 00 84 	lw r2,(r13+132)                                
 800657c:	44 41 00 31 	be r2,r1,8006640 <pthread_setschedparam+0x160> 
        (void) _Watchdog_Remove( &api->Sporadic_timer );              
                                                                      
      api->schedpolicy = policy;                                      
 8006580:	59 ae 00 84 	sw (r13+132),r14                               
      api->schedparam  = *param;                                      
 8006584:	29 62 00 00 	lw r2,(r11+0)                                  
 8006588:	59 a2 00 88 	sw (r13+136),r2                                
 800658c:	29 61 00 04 	lw r1,(r11+4)                                  
 8006590:	59 a1 00 8c 	sw (r13+140),r1                                
 8006594:	29 61 00 08 	lw r1,(r11+8)                                  
 8006598:	59 a1 00 90 	sw (r13+144),r1                                
 800659c:	29 61 00 0c 	lw r1,(r11+12)                                 
 80065a0:	59 a1 00 94 	sw (r13+148),r1                                
 80065a4:	29 61 00 10 	lw r1,(r11+16)                                 
 80065a8:	59 a1 00 98 	sw (r13+152),r1                                
 80065ac:	29 61 00 14 	lw r1,(r11+20)                                 
 80065b0:	59 a1 00 9c 	sw (r13+156),r1                                
 80065b4:	29 61 00 18 	lw r1,(r11+24)                                 
 80065b8:	59 a1 00 a0 	sw (r13+160),r1                                
      the_thread->budget_algorithm = budget_algorithm;                
 80065bc:	2b 81 00 24 	lw r1,(sp+36)                                  
 80065c0:	59 e1 00 7c 	sw (r15+124),r1                                
      the_thread->budget_callout   = budget_callout;                  
 80065c4:	2b 81 00 20 	lw r1,(sp+32)                                  
 80065c8:	59 e1 00 80 	sw (r15+128),r1                                
                                                                      
      switch ( api->schedpolicy ) {                                   
 80065cc:	48 0e 00 05 	bg r0,r14,80065e0 <pthread_setschedparam+0x100><== NEVER TAKEN
 80065d0:	34 01 00 02 	mvi r1,2                                       
 80065d4:	4c 2e 00 0d 	bge r1,r14,8006608 <pthread_setschedparam+0x128>
 80065d8:	34 01 00 04 	mvi r1,4                                       
 80065dc:	45 c1 00 03 	be r14,r1,80065e8 <pthread_setschedparam+0x108><== ALWAYS TAKEN
          _Watchdog_Remove( &api->Sporadic_timer );                   
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
 80065e0:	f8 00 0b 6b 	calli 800938c <_Thread_Enable_dispatch>        <== NOT EXECUTED
      return 0;                                                       
 80065e4:	e3 ff ff d2 	bi 800652c <pthread_setschedparam+0x4c>        <== NOT EXECUTED
             true                                                     
          );                                                          
          break;                                                      
                                                                      
        case SCHED_SPORADIC:                                          
          api->ss_high_priority = api->schedparam.sched_priority;     
 80065e8:	59 a2 00 a4 	sw (r13+164),r2                                
          _Watchdog_Remove( &api->Sporadic_timer );                   
 80065ec:	35 a1 00 a8 	addi r1,r13,168                                
 80065f0:	f8 00 11 02 	calli 800a9f8 <_Watchdog_Remove>               
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
 80065f4:	34 01 00 00 	mvi r1,0                                       
 80065f8:	b9 e0 10 00 	mv r2,r15                                      
 80065fc:	fb ff ff 68 	calli 800639c <_POSIX_Threads_Sporadic_budget_TSR>
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
 8006600:	f8 00 0b 63 	calli 800938c <_Thread_Enable_dispatch>        
 8006604:	e3 ff ff ca 	bi 800652c <pthread_setschedparam+0x4c>        
 8006608:	78 03 08 01 	mvhi r3,0x801                                  
 800660c:	38 63 a1 14 	ori r3,r3,0xa114                               
                                                                      
      switch ( api->schedpolicy ) {                                   
        case SCHED_OTHER:                                             
        case SCHED_FIFO:                                              
        case SCHED_RR:                                                
          the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;  
 8006610:	78 01 08 01 	mvhi r1,0x801                                  
 8006614:	38 21 a8 c0 	ori r1,r1,0xa8c0                               
 8006618:	40 63 00 00 	lbu r3,(r3+0)                                  
 800661c:	28 24 00 00 	lw r4,(r1+0)                                   
                                                                      
          the_thread->real_priority =                                 
            _POSIX_Priority_To_core( api->schedparam.sched_priority );
                                                                      
          _Thread_Change_priority(                                    
 8006620:	b9 e0 08 00 	mv r1,r15                                      
 8006624:	c8 62 10 00 	sub r2,r3,r2                                   
                                                                      
      switch ( api->schedpolicy ) {                                   
        case SCHED_OTHER:                                             
        case SCHED_FIFO:                                              
        case SCHED_RR:                                                
          the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;  
 8006628:	59 e4 00 78 	sw (r15+120),r4                                
                                                                      
          the_thread->real_priority =                                 
 800662c:	59 e2 00 18 	sw (r15+24),r2                                 
            _POSIX_Priority_To_core( api->schedparam.sched_priority );
                                                                      
          _Thread_Change_priority(                                    
 8006630:	34 03 00 01 	mvi r3,1                                       
 8006634:	f8 00 0a 21 	calli 8008eb8 <_Thread_Change_priority>        
          _Watchdog_Remove( &api->Sporadic_timer );                   
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
 8006638:	f8 00 0b 55 	calli 800938c <_Thread_Enable_dispatch>        
 800663c:	e3 ff ff bc 	bi 800652c <pthread_setschedparam+0x4c>        
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
                                                                      
      if ( api->schedpolicy == SCHED_SPORADIC )                       
        (void) _Watchdog_Remove( &api->Sporadic_timer );              
 8006640:	35 a1 00 a8 	addi r1,r13,168                                
 8006644:	f8 00 10 ed 	calli 800a9f8 <_Watchdog_Remove>               
 8006648:	e3 ff ff ce 	bi 8006580 <pthread_setschedparam+0xa0>        
                                                                      

08003950 <pthread_testcancel>: * * 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183 */ void pthread_testcancel( void ) {
 8003950:	37 9c ff f8 	addi sp,sp,-8                                  
 8003954:	5b 8b 00 08 	sw (sp+8),r11                                  
 8003958:	5b 9d 00 04 	sw (sp+4),ra                                   
   *  Don't even think about deleting a resource from an ISR.         
   *  Besides this request is supposed to be for _Thread_Executing    
   *  and the ISR context is not a thread.                            
   */                                                                 
                                                                      
  if ( _ISR_Is_in_progress() )                                        
 800395c:	78 0b 08 01 	mvhi r11,0x801                                 
 8003960:	39 6b 6d 6c 	ori r11,r11,0x6d6c                             
 8003964:	29 62 00 08 	lw r2,(r11+8)                                  
 8003968:	5c 40 00 10 	bne r2,r0,80039a8 <pthread_testcancel+0x58>    <== NEVER TAKEN
 800396c:	78 01 08 01 	mvhi r1,0x801                                  
 8003970:	38 21 68 c0 	ori r1,r1,0x68c0                               
 8003974:	28 24 00 00 	lw r4,(r1+0)                                   
    return;                                                           
                                                                      
  thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
 8003978:	29 63 00 0c 	lw r3,(r11+12)                                 
 800397c:	34 84 00 01 	addi r4,r4,1                                   
 8003980:	28 63 01 20 	lw r3,(r3+288)                                 
 8003984:	58 24 00 00 	sw (r1+0),r4                                   
                                                                      
  _Thread_Disable_dispatch();                                         
    if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
 8003988:	28 61 00 d8 	lw r1,(r3+216)                                 
 800398c:	5c 22 00 0b 	bne r1,r2,80039b8 <pthread_testcancel+0x68>    <== NEVER TAKEN
 8003990:	28 62 00 e0 	lw r2,(r3+224)                                 
 8003994:	44 41 00 09 	be r2,r1,80039b8 <pthread_testcancel+0x68>     
         thread_support->cancelation_requested )                      
      cancel = true;                                                  
  _Thread_Enable_dispatch();                                          
 8003998:	f8 00 0a 96 	calli 80063f0 <_Thread_Enable_dispatch>        
                                                                      
  if ( cancel )                                                       
    _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );        
 800399c:	29 61 00 0c 	lw r1,(r11+12)                                 
 80039a0:	34 02 ff ff 	mvi r2,-1                                      
 80039a4:	f8 00 1a 2e 	calli 800a25c <_POSIX_Thread_Exit>             
}                                                                     
 80039a8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80039ac:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 80039b0:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 80039b4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
  _Thread_Disable_dispatch();                                         
    if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
         thread_support->cancelation_requested )                      
      cancel = true;                                                  
  _Thread_Enable_dispatch();                                          
 80039b8:	f8 00 0a 8e 	calli 80063f0 <_Thread_Enable_dispatch>        
                                                                      
  if ( cancel )                                                       
    _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );        
}                                                                     
 80039bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80039c0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80039c4:	37 9c 00 08 	addi sp,sp,8                                   
 80039c8:	c3 a0 00 00 	ret                                            
                                                                      

08012914 <read>: ssize_t read( int fd, void *buffer, size_t count ) {
 8012914:	37 9c ff f4 	addi sp,sp,-12                                 
 8012918:	5b 8b 00 0c 	sw (sp+12),r11                                 
 801291c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8012920:	5b 9d 00 04 	sw (sp+4),ra                                   
  ssize_t      rc;                                                    
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
 8012924:	78 04 08 01 	mvhi r4,0x801                                  
 8012928:	38 84 40 10 	ori r4,r4,0x4010                               
 801292c:	28 84 00 00 	lw r4,(r4+0)                                   
 8012930:	54 81 00 06 	bgu r4,r1,8012948 <read+0x34>                  <== ALWAYS TAKEN
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
 8012934:	fb ff e9 12 	calli 800cd7c <__errno>                        
 8012938:	34 02 00 09 	mvi r2,9                                       
 801293c:	58 22 00 00 	sw (r1+0),r2                                   
 8012940:	34 0c ff ff 	mvi r12,-1                                     
 8012944:	e0 00 00 23 	bi 80129d0 <read+0xbc>                         
{                                                                     
  ssize_t      rc;                                                    
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 8012948:	b4 21 08 00 	add r1,r1,r1                                   
 801294c:	78 04 08 01 	mvhi r4,0x801                                  
 8012950:	b4 21 08 00 	add r1,r1,r1                                   
 8012954:	38 84 47 8c 	ori r4,r4,0x478c                               
 8012958:	b4 21 08 00 	add r1,r1,r1                                   
 801295c:	28 8b 00 00 	lw r11,(r4+0)                                  
 8012960:	b4 21 08 00 	add r1,r1,r1                                   
 8012964:	b4 21 08 00 	add r1,r1,r1                                   
 8012968:	b4 21 08 00 	add r1,r1,r1                                   
 801296c:	b5 61 58 00 	add r11,r11,r1                                 
  rtems_libio_check_is_open( iop );                                   
 8012970:	29 61 00 18 	lw r1,(r11+24)                                 
 8012974:	20 24 01 00 	andi r4,r1,0x100                               
 8012978:	44 80 ff ef 	be r4,r0,8012934 <read+0x20>                   
  rtems_libio_check_buffer( buffer );                                 
 801297c:	44 40 00 1b 	be r2,r0,80129e8 <read+0xd4>                   <== NEVER TAKEN
  rtems_libio_check_count( count );                                   
 8012980:	34 0c 00 00 	mvi r12,0                                      
 8012984:	44 60 00 13 	be r3,r0,80129d0 <read+0xbc>                   
  rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );             
 8012988:	20 21 00 02 	andi r1,r1,0x2                                 
 801298c:	44 20 00 17 	be r1,r0,80129e8 <read+0xd4>                   
                                                                      
  /*                                                                  
   *  Now process the read().                                         
   */                                                                 
  rc = (*iop->pathinfo.handlers->read_h)( iop, buffer, count );       
 8012990:	29 64 00 24 	lw r4,(r11+36)                                 
 8012994:	b9 60 08 00 	mv r1,r11                                      
 8012998:	28 84 00 08 	lw r4,(r4+8)                                   
 801299c:	d8 80 00 00 	call r4                                        
 80129a0:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( rc > 0 )                                                       
 80129a4:	4c 01 00 0b 	bge r0,r1,80129d0 <read+0xbc>                  
    iop->offset += rc;                                                
 80129a8:	34 02 00 1f 	mvi r2,31                                      
 80129ac:	fb ff fe 09 	calli 80121d0 <__ashrsi3>                      
 80129b0:	29 62 00 14 	lw r2,(r11+20)                                 
 80129b4:	29 64 00 10 	lw r4,(r11+16)                                 
 80129b8:	b5 82 10 00 	add r2,r12,r2                                  
 80129bc:	f5 82 18 00 	cmpgu r3,r12,r2                                
 80129c0:	b4 24 08 00 	add r1,r1,r4                                   
 80129c4:	b4 61 08 00 	add r1,r3,r1                                   
 80129c8:	59 61 00 10 	sw (r11+16),r1                                 
 80129cc:	59 62 00 14 	sw (r11+20),r2                                 
                                                                      
  return rc;                                                          
}                                                                     
 80129d0:	b9 80 08 00 	mv r1,r12                                      
 80129d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80129d8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80129dc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80129e0:	37 9c 00 0c 	addi sp,sp,12                                  
 80129e4:	c3 a0 00 00 	ret                                            
  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( iop, LIBIO_FLAGS_READ );             
 80129e8:	fb ff e8 e5 	calli 800cd7c <__errno>                        
 80129ec:	34 02 00 16 	mvi r2,22                                      
 80129f0:	58 22 00 00 	sw (r1+0),r2                                   
 80129f4:	34 0c ff ff 	mvi r12,-1                                     
 80129f8:	e3 ff ff f6 	bi 80129d0 <read+0xbc>                         
                                                                      

080051ec <readlink>: ssize_t readlink( const char *pathname, char *buf, size_t bufsize ) {
 80051ec:	37 9c ff d8 	addi sp,sp,-40                                 
 80051f0:	5b 8b 00 14 	sw (sp+20),r11                                 
 80051f4:	5b 8c 00 10 	sw (sp+16),r12                                 
 80051f8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80051fc:	5b 8e 00 08 	sw (sp+8),r14                                  
 8005200:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005204:	b8 40 68 00 	mv r13,r2                                      
 8005208:	b8 20 60 00 	mv r12,r1                                      
 800520c:	b8 60 70 00 	mv r14,r3                                      
  rtems_filesystem_location_info_t  loc;                              
  int                               result;                           
                                                                      
  if (!buf)                                                           
 8005210:	44 40 00 2b 	be r2,r0,80052bc <readlink+0xd0>               
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  result = rtems_filesystem_evaluate_path( pathname, strlen( pathname ),
 8005214:	f8 00 34 b7 	calli 80124f0 <strlen>                         
 8005218:	b8 20 20 00 	mv r4,r1                                       
 800521c:	37 8b 00 18 	addi r11,sp,24                                 
 8005220:	b9 80 08 00 	mv r1,r12                                      
 8005224:	b8 80 10 00 	mv r2,r4                                       
 8005228:	34 03 00 00 	mvi r3,0                                       
 800522c:	b9 60 20 00 	mv r4,r11                                      
 8005230:	34 05 00 00 	mvi r5,0                                       
 8005234:	fb ff fa 88 	calli 8003c54 <rtems_filesystem_evaluate_path> 
                                           0, &loc, false );          
  if ( result != 0 )                                                  
     return -1;                                                       
 8005238:	34 0c ff ff 	mvi r12,-1                                     
  if (!buf)                                                           
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  result = rtems_filesystem_evaluate_path( pathname, strlen( pathname ),
                                           0, &loc, false );          
  if ( result != 0 )                                                  
 800523c:	44 20 00 09 	be r1,r0,8005260 <readlink+0x74>               <== ALWAYS TAKEN
  result =  (*loc.ops->readlink_h)( &loc, buf, bufsize );             
                                                                      
  rtems_filesystem_freenode( &loc );                                  
                                                                      
  return result;                                                      
}                                                                     
 8005240:	b9 80 08 00 	mv r1,r12                                      
 8005244:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005248:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800524c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8005250:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8005254:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8005258:	37 9c 00 28 	addi sp,sp,40                                  
 800525c:	c3 a0 00 00 	ret                                            
  result = rtems_filesystem_evaluate_path( pathname, strlen( pathname ),
                                           0, &loc, false );          
  if ( result != 0 )                                                  
     return -1;                                                       
                                                                      
  if (  (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_SYM_LINK ){
 8005260:	2b 82 00 24 	lw r2,(sp+36)                                  
 8005264:	b9 60 08 00 	mv r1,r11                                      
 8005268:	28 42 00 10 	lw r2,(r2+16)                                  
 800526c:	d8 40 00 00 	call r2                                        
 8005270:	34 02 00 04 	mvi r2,4                                       
 8005274:	5c 22 00 1e 	bne r1,r2,80052ec <readlink+0x100>             
    rtems_filesystem_freenode( &loc );                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  result =  (*loc.ops->readlink_h)( &loc, buf, bufsize );             
 8005278:	2b 81 00 24 	lw r1,(sp+36)                                  
 800527c:	b9 a0 10 00 	mv r2,r13                                      
 8005280:	b9 c0 18 00 	mv r3,r14                                      
 8005284:	28 24 00 3c 	lw r4,(r1+60)                                  
 8005288:	b9 60 08 00 	mv r1,r11                                      
 800528c:	d8 80 00 00 	call r4                                        
 8005290:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  rtems_filesystem_freenode( &loc );                                  
 8005294:	b9 60 08 00 	mv r1,r11                                      
 8005298:	fb ff fa bd 	calli 8003d8c <rtems_filesystem_freenode>      
                                                                      
  return result;                                                      
}                                                                     
 800529c:	b9 80 08 00 	mv r1,r12                                      
 80052a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80052a4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80052a8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80052ac:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80052b0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80052b4:	37 9c 00 28 	addi sp,sp,40                                  
 80052b8:	c3 a0 00 00 	ret                                            
{                                                                     
  rtems_filesystem_location_info_t  loc;                              
  int                               result;                           
                                                                      
  if (!buf)                                                           
    rtems_set_errno_and_return_minus_one( EFAULT );                   
 80052bc:	f8 00 2d 03 	calli 80106c8 <__errno>                        
 80052c0:	34 02 00 0e 	mvi r2,14                                      
 80052c4:	34 0c ff ff 	mvi r12,-1                                     
 80052c8:	58 22 00 00 	sw (r1+0),r2                                   
  result =  (*loc.ops->readlink_h)( &loc, buf, bufsize );             
                                                                      
  rtems_filesystem_freenode( &loc );                                  
                                                                      
  return result;                                                      
}                                                                     
 80052cc:	b9 80 08 00 	mv r1,r12                                      
 80052d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80052d4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80052d8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80052dc:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80052e0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80052e4:	37 9c 00 28 	addi sp,sp,40                                  
 80052e8:	c3 a0 00 00 	ret                                            
                                           0, &loc, false );          
  if ( result != 0 )                                                  
     return -1;                                                       
                                                                      
  if (  (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_SYM_LINK ){
    rtems_filesystem_freenode( &loc );                                
 80052ec:	b9 60 08 00 	mv r1,r11                                      
 80052f0:	fb ff fa a7 	calli 8003d8c <rtems_filesystem_freenode>      
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 80052f4:	f8 00 2c f5 	calli 80106c8 <__errno>                        
 80052f8:	34 02 00 16 	mvi r2,22                                      
 80052fc:	58 22 00 00 	sw (r1+0),r2                                   
 8005300:	e3 ff ff d0 	bi 8005240 <readlink+0x54>                     
                                                                      

08003a28 <readv>: ssize_t readv( int fd, const struct iovec *iov, int iovcnt ) {
 8003a28:	37 9c ff e4 	addi sp,sp,-28                                 
 8003a2c:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8003a30:	5b 8c 00 18 	sw (sp+24),r12                                 
 8003a34:	5b 8d 00 14 	sw (sp+20),r13                                 
 8003a38:	5b 8e 00 10 	sw (sp+16),r14                                 
 8003a3c:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8003a40:	5b 90 00 08 	sw (sp+8),r16                                  
 8003a44:	5b 9d 00 04 	sw (sp+4),ra                                   
  int            v;                                                   
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
 8003a48:	78 04 08 01 	mvhi r4,0x801                                  
 8003a4c:	38 84 60 10 	ori r4,r4,0x6010                               
 8003a50:	28 84 00 00 	lw r4,(r4+0)                                   
ssize_t readv(                                                        
  int                 fd,                                             
  const struct iovec *iov,                                            
  int                 iovcnt                                          
)                                                                     
{                                                                     
 8003a54:	b8 60 60 00 	mv r12,r3                                      
  int            v;                                                   
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
 8003a58:	54 81 00 06 	bgu r4,r1,8003a70 <readv+0x48>                 
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
 8003a5c:	f8 00 29 40 	calli 800df5c <__errno>                        
 8003a60:	34 02 00 09 	mvi r2,9                                       
 8003a64:	58 22 00 00 	sw (r1+0),r2                                   
 8003a68:	34 0f ff ff 	mvi r15,-1                                     
 8003a6c:	e0 00 00 16 	bi 8003ac4 <readv+0x9c>                        
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 8003a70:	b4 21 08 00 	add r1,r1,r1                                   
 8003a74:	78 03 08 01 	mvhi r3,0x801                                  
 8003a78:	b4 21 08 00 	add r1,r1,r1                                   
 8003a7c:	38 63 67 8c 	ori r3,r3,0x678c                               
 8003a80:	b4 21 08 00 	add r1,r1,r1                                   
 8003a84:	28 6b 00 00 	lw r11,(r3+0)                                  
 8003a88:	b4 21 08 00 	add r1,r1,r1                                   
 8003a8c:	b4 21 08 00 	add r1,r1,r1                                   
 8003a90:	b4 21 08 00 	add r1,r1,r1                                   
 8003a94:	b5 61 58 00 	add r11,r11,r1                                 
  rtems_libio_check_is_open( iop );                                   
 8003a98:	29 61 00 18 	lw r1,(r11+24)                                 
 8003a9c:	20 23 01 00 	andi r3,r1,0x100                               
 8003aa0:	44 60 ff ef 	be r3,r0,8003a5c <readv+0x34>                  
  rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );             
 8003aa4:	20 21 00 02 	andi r1,r1,0x2                                 
 8003aa8:	44 20 00 03 	be r1,r0,8003ab4 <readv+0x8c>                  <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Argument validation on IO vector                                
   */                                                                 
  if ( !iov )                                                         
 8003aac:	44 40 00 02 	be r2,r0,8003ab4 <readv+0x8c>                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
 8003ab0:	49 80 00 0f 	bg r12,r0,8003aec <readv+0xc4>                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old )                                                
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8003ab4:	f8 00 29 2a 	calli 800df5c <__errno>                        
 8003ab8:	34 02 00 16 	mvi r2,22                                      
 8003abc:	58 22 00 00 	sw (r1+0),r2                                   
 8003ac0:	34 0f ff ff 	mvi r15,-1                                     
    if (bytes != iov[ v ].iov_len)                                    
      break;                                                          
  }                                                                   
                                                                      
  return total;                                                       
}                                                                     
 8003ac4:	b9 e0 08 00 	mv r1,r15                                      
 8003ac8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003acc:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8003ad0:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8003ad4:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8003ad8:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8003adc:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8003ae0:	2b 90 00 08 	lw r16,(sp+8)                                  
 8003ae4:	37 9c 00 1c 	addi sp,sp,28                                  
 8003ae8:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
 8003aec:	34 01 04 00 	mvi r1,1024                                    
 8003af0:	4c 2c 00 02 	bge r1,r12,8003af8 <readv+0xd0>                <== ALWAYS TAKEN
 8003af4:	e3 ff ff f0 	bi 8003ab4 <readv+0x8c>                        <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8003af8:	b8 40 70 00 	mv r14,r2                                      
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
 8003afc:	b8 40 20 00 	mv r4,r2                                       
 8003b00:	34 07 00 01 	mvi r7,1                                       
 8003b04:	34 05 00 00 	mvi r5,0                                       
 8003b08:	34 06 00 00 	mvi r6,0                                       
                                                                      
    /*                                                                
     *  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 )                                       
 8003b0c:	28 81 00 00 	lw r1,(r4+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++ ) {                           
 8003b10:	34 a5 00 01 	addi r5,r5,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 )                                       
 8003b14:	44 20 ff e8 	be r1,r0,8003ab4 <readv+0x8c>                  
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
 8003b18:	28 81 00 04 	lw r1,(r4+4)                                   
   *  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++ ) {                           
 8003b1c:	34 84 00 08 	addi r4,r4,8                                   
    total += iov[v].iov_len;                                          
    if ( total < old )                                                
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 8003b20:	64 23 00 00 	cmpei r3,r1,0                                  
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
 8003b24:	b4 c1 08 00 	add r1,r6,r1                                   
    if ( total < old )                                                
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 8003b28:	c8 03 18 00 	sub r3,r0,r3                                   
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old )                                                
 8003b2c:	4c 26 00 02 	bge r1,r6,8003b34 <readv+0x10c>                
 8003b30:	e3 ff ff e1 	bi 8003ab4 <readv+0x8c>                        
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 8003b34:	a0 e3 38 00 	and r7,r7,r3                                   
   *  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++ ) {                           
 8003b38:	49 85 00 1e 	bg r12,r5,8003bb0 <readv+0x188>                
   *  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 ) {                                          
    return 0;                                                         
 8003b3c:	34 0f 00 00 	mvi r15,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 ) {                                          
 8003b40:	5c e0 ff e1 	bne r7,r0,8003ac4 <readv+0x9c>                 
 8003b44:	34 10 00 00 	mvi r16,0                                      
                                                                      
  /*                                                                  
   *  Now process the readv().                                        
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    bytes = (*iop->pathinfo.handlers->read_h)(                        
 8003b48:	29 61 00 24 	lw r1,(r11+36)                                 
 8003b4c:	29 c2 00 00 	lw r2,(r14+0)                                  
 8003b50:	29 c3 00 04 	lw r3,(r14+4)                                  
 8003b54:	28 24 00 08 	lw r4,(r1+8)                                   
 8003b58:	b9 60 08 00 	mv r1,r11                                      
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the readv().                                        
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 8003b5c:	36 10 00 01 	addi r16,r16,1                                 
    bytes = (*iop->pathinfo.handlers->read_h)(                        
 8003b60:	d8 80 00 00 	call r4                                        
 8003b64:	b8 20 68 00 	mv r13,r1                                      
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
                                                                      
    if ( bytes > 0 ) {                                                
      iop->offset += bytes;                                           
 8003b68:	34 02 00 1f 	mvi r2,31                                      
      iop,                                                            
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
 8003b6c:	48 01 00 13 	bg r0,r1,8003bb8 <readv+0x190>                 <== NEVER TAKEN
      return -1;                                                      
                                                                      
    if ( bytes > 0 ) {                                                
 8003b70:	44 20 00 0b 	be r1,r0,8003b9c <readv+0x174>                 <== NEVER TAKEN
      iop->offset += bytes;                                           
 8003b74:	f8 00 3e be 	calli 801366c <__ashrsi3>                      
 8003b78:	29 62 00 14 	lw r2,(r11+20)                                 
 8003b7c:	29 64 00 10 	lw r4,(r11+16)                                 
      total       += bytes;                                           
 8003b80:	b5 ed 78 00 	add r15,r15,r13                                
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
                                                                      
    if ( bytes > 0 ) {                                                
      iop->offset += bytes;                                           
 8003b84:	b5 a2 10 00 	add r2,r13,r2                                  
 8003b88:	f5 a2 18 00 	cmpgu r3,r13,r2                                
 8003b8c:	b4 24 08 00 	add r1,r1,r4                                   
 8003b90:	b4 61 08 00 	add r1,r3,r1                                   
 8003b94:	59 61 00 10 	sw (r11+16),r1                                 
 8003b98:	59 62 00 14 	sw (r11+20),r2                                 
      total       += bytes;                                           
    }                                                                 
                                                                      
    if (bytes != iov[ v ].iov_len)                                    
 8003b9c:	29 c1 00 04 	lw r1,(r14+4)                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the readv().                                        
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 8003ba0:	35 ce 00 08 	addi r14,r14,8                                 
    if ( bytes > 0 ) {                                                
      iop->offset += bytes;                                           
      total       += bytes;                                           
    }                                                                 
                                                                      
    if (bytes != iov[ v ].iov_len)                                    
 8003ba4:	5d a1 ff c8 	bne r13,r1,8003ac4 <readv+0x9c>                <== NEVER TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the readv().                                        
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 8003ba8:	49 90 ff e8 	bg r12,r16,8003b48 <readv+0x120>               
 8003bac:	e3 ff ff c6 	bi 8003ac4 <readv+0x9c>                        
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
 8003bb0:	b8 20 30 00 	mv r6,r1                                       
 8003bb4:	e3 ff ff d6 	bi 8003b0c <readv+0xe4>                        
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
 8003bb8:	34 0f ff ff 	mvi r15,-1                                     <== NOT EXECUTED
 8003bbc:	e3 ff ff c2 	bi 8003ac4 <readv+0x9c>                        <== NOT EXECUTED
                                                                      

08012aa4 <realloc>: void *realloc( void *ptr, size_t size ) {
 8012aa4:	37 9c ff e4 	addi sp,sp,-28                                 
 8012aa8:	5b 8b 00 18 	sw (sp+24),r11                                 
 8012aac:	5b 8c 00 14 	sw (sp+20),r12                                 
 8012ab0:	5b 8d 00 10 	sw (sp+16),r13                                 
 8012ab4:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8012ab8:	5b 8f 00 08 	sw (sp+8),r15                                  
 8012abc:	5b 9d 00 04 	sw (sp+4),ra                                   
  uintptr_t old_size;                                                 
  char    *new_area;                                                  
                                                                      
  MSBUMP(realloc_calls, 1);                                           
 8012ac0:	78 0c 08 01 	mvhi r12,0x801                                 
 8012ac4:	39 8c 47 a8 	ori r12,r12,0x47a8                             
 8012ac8:	29 84 00 10 	lw r4,(r12+16)                                 
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
 8012acc:	78 03 08 01 	mvhi r3,0x801                                  
 8012ad0:	38 63 4a 60 	ori r3,r3,0x4a60                               
 8012ad4:	28 63 00 00 	lw r3,(r3+0)                                   
)                                                                     
{                                                                     
  uintptr_t old_size;                                                 
  char    *new_area;                                                  
                                                                      
  MSBUMP(realloc_calls, 1);                                           
 8012ad8:	34 84 00 01 	addi r4,r4,1                                   
                                                                      
void *realloc(                                                        
  void *ptr,                                                          
  size_t size                                                         
)                                                                     
{                                                                     
 8012adc:	b8 20 58 00 	mv r11,r1                                      
  uintptr_t old_size;                                                 
  char    *new_area;                                                  
                                                                      
  MSBUMP(realloc_calls, 1);                                           
 8012ae0:	59 84 00 10 	sw (r12+16),r4                                 
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
 8012ae4:	34 01 00 03 	mvi r1,3                                       
                                                                      
void *realloc(                                                        
  void *ptr,                                                          
  size_t size                                                         
)                                                                     
{                                                                     
 8012ae8:	b8 40 70 00 	mv r14,r2                                      
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
 8012aec:	44 61 00 22 	be r3,r1,8012b74 <realloc+0xd0>                <== ALWAYS TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   * Continue with realloc().                                         
   */                                                                 
  if ( !ptr )                                                         
 8012af0:	45 60 00 2d 	be r11,r0,8012ba4 <realloc+0x100>              
    return malloc( size );                                            
                                                                      
  if ( !size ) {                                                      
 8012af4:	45 c0 00 17 	be r14,r0,8012b50 <realloc+0xac>               <== NEVER TAKEN
    free( ptr );                                                      
    return (void *) 0;                                                
  }                                                                   
                                                                      
  if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
 8012af8:	78 0d 08 01 	mvhi r13,0x801                                 
 8012afc:	39 ad 40 4c 	ori r13,r13,0x404c                             
 8012b00:	29 a1 00 00 	lw r1,(r13+0)                                  
 8012b04:	b9 60 10 00 	mv r2,r11                                      
 8012b08:	37 83 00 1c 	addi r3,sp,28                                  
 8012b0c:	f8 00 00 76 	calli 8012ce4 <_Protected_heap_Get_block_size> 
 8012b10:	44 20 00 14 	be r1,r0,8012b60 <realloc+0xbc>                
  }                                                                   
                                                                      
  /*                                                                  
   *  Now resize it.                                                  
   */                                                                 
  if ( _Protected_heap_Resize_block( RTEMS_Malloc_Heap, ptr, size ) ) {
 8012b14:	29 a1 00 00 	lw r1,(r13+0)                                  
 8012b18:	b9 60 10 00 	mv r2,r11                                      
 8012b1c:	b9 c0 18 00 	mv r3,r14                                      
 8012b20:	f8 00 00 89 	calli 8012d44 <_Protected_heap_Resize_block>   
 8012b24:	b8 20 68 00 	mv r13,r1                                      
 8012b28:	44 20 00 23 	be r1,r0,8012bb4 <realloc+0x110>               
  memcpy( new_area, ptr, (size < old_size) ? size : old_size );       
  free( ptr );                                                        
                                                                      
  return new_area;                                                    
                                                                      
}                                                                     
 8012b2c:	b9 60 08 00 	mv r1,r11                                      
 8012b30:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8012b34:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8012b38:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8012b3c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8012b40:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8012b44:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8012b48:	37 9c 00 1c 	addi sp,sp,28                                  
 8012b4c:	c3 a0 00 00 	ret                                            
   */                                                                 
  if ( !ptr )                                                         
    return malloc( size );                                            
                                                                      
  if ( !size ) {                                                      
    free( ptr );                                                      
 8012b50:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8012b54:	fb ff ba 55 	calli 80014a8 <free>                           <== NOT EXECUTED
    return (void *) 0;                                                
 8012b58:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
 8012b5c:	e3 ff ff f4 	bi 8012b2c <realloc+0x88>                      <== NOT EXECUTED
  }                                                                   
                                                                      
  if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
    errno = EINVAL;                                                   
 8012b60:	fb ff e8 87 	calli 800cd7c <__errno>                        
 8012b64:	34 02 00 16 	mvi r2,22                                      
 8012b68:	58 22 00 00 	sw (r1+0),r2                                   
    return (void *) 0;                                                
 8012b6c:	34 0b 00 00 	mvi r11,0                                      
 8012b70:	e3 ff ff ef 	bi 8012b2c <realloc+0x88>                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
    if (_Thread_Dispatch_disable_level > 0)                           
 8012b74:	78 01 08 01 	mvhi r1,0x801                                  
 8012b78:	38 21 49 08 	ori r1,r1,0x4908                               
 8012b7c:	28 21 00 00 	lw r1,(r1+0)                                   
 8012b80:	44 20 00 03 	be r1,r0,8012b8c <realloc+0xe8>                <== ALWAYS TAKEN
  new_area = malloc( size );                                          
                                                                      
  MSBUMP(malloc_calls, (uint32_t) -1);   /* subtract off the malloc */
                                                                      
  if ( !new_area ) {                                                  
    return (void *) 0;                                                
 8012b84:	34 0b 00 00 	mvi r11,0                                      
 8012b88:	e3 ff ff e9 	bi 8012b2c <realloc+0x88>                      
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
    if (_Thread_Dispatch_disable_level > 0)                           
      return (void *) 0;                                              
                                                                      
    if (_ISR_Nest_level > 0)                                          
 8012b8c:	78 02 08 01 	mvhi r2,0x801                                  
 8012b90:	38 42 4d b4 	ori r2,r2,0x4db4                               
 8012b94:	28 42 00 08 	lw r2,(r2+8)                                   
 8012b98:	44 41 ff d6 	be r2,r1,8012af0 <realloc+0x4c>                <== ALWAYS TAKEN
  new_area = malloc( size );                                          
                                                                      
  MSBUMP(malloc_calls, (uint32_t) -1);   /* subtract off the malloc */
                                                                      
  if ( !new_area ) {                                                  
    return (void *) 0;                                                
 8012b9c:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
 8012ba0:	e3 ff ff e3 	bi 8012b2c <realloc+0x88>                      <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Continue with realloc().                                         
   */                                                                 
  if ( !ptr )                                                         
    return malloc( size );                                            
 8012ba4:	b9 c0 08 00 	mv r1,r14                                      
 8012ba8:	fb ff bb 41 	calli 80018ac <malloc>                         
 8012bac:	b8 20 58 00 	mv r11,r1                                      
 8012bb0:	e3 ff ff df 	bi 8012b2c <realloc+0x88>                      
   *  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 );                                          
 8012bb4:	b9 c0 08 00 	mv r1,r14                                      
 8012bb8:	fb ff bb 3d 	calli 80018ac <malloc>                         
 8012bbc:	b8 20 78 00 	mv r15,r1                                      
                                                                      
  MSBUMP(malloc_calls, (uint32_t) -1);   /* subtract off the malloc */
 8012bc0:	29 81 00 04 	lw r1,(r12+4)                                  
 8012bc4:	34 21 ff ff 	addi r1,r1,-1                                  
 8012bc8:	59 81 00 04 	sw (r12+4),r1                                  
                                                                      
  if ( !new_area ) {                                                  
 8012bcc:	45 ed ff ee 	be r15,r13,8012b84 <realloc+0xe0>              
    return (void *) 0;                                                
  }                                                                   
                                                                      
  memcpy( new_area, ptr, (size < old_size) ? size : old_size );       
 8012bd0:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8012bd4:	b9 c0 18 00 	mv r3,r14                                      
 8012bd8:	50 2e 00 02 	bgeu r1,r14,8012be0 <realloc+0x13c>            <== NEVER TAKEN
 8012bdc:	b8 20 18 00 	mv r3,r1                                       
 8012be0:	b9 60 10 00 	mv r2,r11                                      
 8012be4:	b9 e0 08 00 	mv r1,r15                                      
 8012be8:	fb ff eb 1b 	calli 800d854 <memcpy>                         
  free( ptr );                                                        
 8012bec:	b9 60 08 00 	mv r1,r11                                      
 8012bf0:	fb ff ba 2e 	calli 80014a8 <free>                           
                                                                      
  return new_area;                                                    
 8012bf4:	b9 e0 58 00 	mv r11,r15                                     
 8012bf8:	e3 ff ff cd 	bi 8012b2c <realloc+0x88>                      
                                                                      

08002b48 <rmdir>: #include <rtems/seterr.h> int rmdir( const char *pathname ) {
 8002b48:	37 9c ff bc 	addi sp,sp,-68                                 
 8002b4c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8002b50:	5b 8c 00 14 	sw (sp+20),r12                                 
 8002b54:	5b 8d 00 10 	sw (sp+16),r13                                 
 8002b58:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8002b5c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8002b60:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002b64:	b8 20 68 00 	mv r13,r1                                      
                                                                      
  /*                                                                  
   *  Get the parent node of the node we wish to remove. Find the parent path.
   */                                                                 
                                                                      
  parentpathlen = rtems_filesystem_dirname ( pathname );              
 8002b68:	fb ff fb 7b 	calli 8001954 <rtems_filesystem_dirname>       
                                                                      
  if ( parentpathlen == 0 )                                           
 8002b6c:	5c 20 00 4a 	bne r1,r0,8002c94 <rmdir+0x14c>                
    rtems_filesystem_get_start_loc( pathname, &i, &parentloc );       
 8002b70:	37 8c 00 30 	addi r12,sp,48                                 
 8002b74:	b9 a0 08 00 	mv r1,r13                                      
 8002b78:	37 82 00 44 	addi r2,sp,68                                  
 8002b7c:	b9 80 18 00 	mv r3,r12                                      
 8002b80:	f8 00 00 51 	calli 8002cc4 <rtems_filesystem_get_start_loc> 
 8002b84:	34 0b 00 00 	mvi r11,0                                      
  const char                       *name;                             
  rtems_filesystem_location_info_t  parentloc;                        
  rtems_filesystem_location_info_t  loc;                              
  int                               i;                                
  int                               result;                           
  bool                              free_parentloc = false;           
 8002b88:	34 0f 00 00 	mvi r15,0                                      
                                                                      
  /*                                                                  
   * Start from the parent to find the node that should be under it.  
   */                                                                 
                                                                      
  loc = parentloc;                                                    
 8002b8c:	2b 82 00 30 	lw r2,(sp+48)                                  
  name = pathname + parentpathlen;                                    
 8002b90:	b5 ab 58 00 	add r11,r13,r11                                
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
 8002b94:	b9 60 08 00 	mv r1,r11                                      
                                                                      
  /*                                                                  
   * Start from the parent to find the node that should be under it.  
   */                                                                 
                                                                      
  loc = parentloc;                                                    
 8002b98:	5b 82 00 1c 	sw (sp+28),r2                                  
 8002b9c:	2b 82 00 34 	lw r2,(sp+52)                                  
 8002ba0:	5b 82 00 20 	sw (sp+32),r2                                  
 8002ba4:	2b 82 00 38 	lw r2,(sp+56)                                  
 8002ba8:	5b 82 00 24 	sw (sp+36),r2                                  
 8002bac:	2b 82 00 3c 	lw r2,(sp+60)                                  
 8002bb0:	5b 82 00 28 	sw (sp+40),r2                                  
 8002bb4:	2b 82 00 40 	lw r2,(sp+64)                                  
 8002bb8:	5b 82 00 2c 	sw (sp+44),r2                                  
  name = pathname + parentpathlen;                                    
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
 8002bbc:	f8 00 2f 4a 	calli 800e8e4 <strlen>                         
 8002bc0:	b8 20 10 00 	mv r2,r1                                       
 8002bc4:	b9 60 08 00 	mv r1,r11                                      
 8002bc8:	fb ff fb 78 	calli 80019a8 <rtems_filesystem_prefix_separators>
 8002bcc:	b5 61 68 00 	add r13,r11,r1                                 
                                                                      
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
 8002bd0:	b9 a0 08 00 	mv r1,r13                                      
 8002bd4:	f8 00 2f 44 	calli 800e8e4 <strlen>                         
 8002bd8:	37 8b 00 1c 	addi r11,sp,28                                 
 8002bdc:	b8 20 10 00 	mv r2,r1                                       
 8002be0:	34 03 00 00 	mvi r3,0                                       
 8002be4:	b9 a0 08 00 	mv r1,r13                                      
 8002be8:	b9 60 20 00 	mv r4,r11                                      
 8002bec:	34 05 00 00 	mvi r5,0                                       
 8002bf0:	fb ff fb 1b 	calli 800185c <rtems_filesystem_evaluate_relative_path>
                                                    0, &loc, false ); 
  if ( result != 0 ) {                                                
 8002bf4:	5c 20 00 19 	bne r1,r0,8002c58 <rmdir+0x110>                
  }                                                                   
                                                                      
  /*                                                                  
   * Verify you can remove this node as a directory.                  
   */                                                                 
  if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
 8002bf8:	2b 82 00 28 	lw r2,(sp+40)                                  
 8002bfc:	b9 60 08 00 	mv r1,r11                                      
 8002c00:	28 42 00 10 	lw r2,(r2+16)                                  
 8002c04:	d8 40 00 00 	call r2                                        
 8002c08:	34 02 00 01 	mvi r2,1                                       
 8002c0c:	5c 22 00 18 	bne r1,r2,8002c6c <rmdir+0x124>                
                                                                      
  /*                                                                  
   * Use the filesystems rmnod to remove the node.                    
   */                                                                 
                                                                      
  result =  (*loc.handlers->rmnod_h)( &parentloc, &loc );             
 8002c10:	2b 83 00 24 	lw r3,(sp+36)                                  
 8002c14:	b9 80 08 00 	mv r1,r12                                      
 8002c18:	b9 60 10 00 	mv r2,r11                                      
 8002c1c:	28 63 00 34 	lw r3,(r3+52)                                  
 8002c20:	d8 60 00 00 	call r3                                        
 8002c24:	b8 20 70 00 	mv r14,r1                                      
                                                                      
  rtems_filesystem_freenode( &loc );                                  
 8002c28:	b9 60 08 00 	mv r1,r11                                      
 8002c2c:	fb ff fb 7d 	calli 8001a20 <rtems_filesystem_freenode>      
  if ( free_parentloc )                                               
 8002c30:	5d e0 00 0c 	bne r15,r0,8002c60 <rmdir+0x118>               
    rtems_filesystem_freenode( &parentloc );                          
                                                                      
  return result;                                                      
}                                                                     
 8002c34:	b9 c0 08 00 	mv r1,r14                                      
 8002c38:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002c3c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8002c40:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8002c44:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8002c48:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8002c4c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8002c50:	37 9c 00 44 	addi sp,sp,68                                  
 8002c54:	c3 a0 00 00 	ret                                            
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
                                                    0, &loc, false ); 
  if ( result != 0 ) {                                                
    if ( free_parentloc )                                             
      rtems_filesystem_freenode( &parentloc );                        
    return -1;                                                        
 8002c58:	34 0e ff ff 	mvi r14,-1                                     
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
                                                                      
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
                                                    0, &loc, false ); 
  if ( result != 0 ) {                                                
    if ( free_parentloc )                                             
 8002c5c:	45 e0 ff f6 	be r15,r0,8002c34 <rmdir+0xec>                 
                                                                      
  result =  (*loc.handlers->rmnod_h)( &parentloc, &loc );             
                                                                      
  rtems_filesystem_freenode( &loc );                                  
  if ( free_parentloc )                                               
    rtems_filesystem_freenode( &parentloc );                          
 8002c60:	b9 80 08 00 	mv r1,r12                                      
 8002c64:	fb ff fb 6f 	calli 8001a20 <rtems_filesystem_freenode>      
 8002c68:	e3 ff ff f3 	bi 8002c34 <rmdir+0xec>                        
                                                                      
  /*                                                                  
   * Verify you can remove this node as a directory.                  
   */                                                                 
  if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
    rtems_filesystem_freenode( &loc );                                
 8002c6c:	b9 60 08 00 	mv r1,r11                                      
 8002c70:	fb ff fb 6c 	calli 8001a20 <rtems_filesystem_freenode>      
    if ( free_parentloc )                                             
 8002c74:	45 e0 00 03 	be r15,r0,8002c80 <rmdir+0x138>                <== NEVER TAKEN
      rtems_filesystem_freenode( &parentloc );                        
 8002c78:	b9 80 08 00 	mv r1,r12                                      
 8002c7c:	fb ff fb 69 	calli 8001a20 <rtems_filesystem_freenode>      
    rtems_set_errno_and_return_minus_one( ENOTDIR );                  
 8002c80:	f8 00 2a b8 	calli 800d760 <__errno>                        
 8002c84:	34 02 00 14 	mvi r2,20                                      
 8002c88:	58 22 00 00 	sw (r1+0),r2                                   
 8002c8c:	34 0e ff ff 	mvi r14,-1                                     
 8002c90:	e3 ff ff e9 	bi 8002c34 <rmdir+0xec>                        
  parentpathlen = rtems_filesystem_dirname ( pathname );              
                                                                      
  if ( parentpathlen == 0 )                                           
    rtems_filesystem_get_start_loc( pathname, &i, &parentloc );       
  else {                                                              
    result = rtems_filesystem_evaluate_path(pathname, parentpathlen,  
 8002c94:	b8 20 58 00 	mv r11,r1                                      
 8002c98:	37 8c 00 30 	addi r12,sp,48                                 
 8002c9c:	b9 a0 08 00 	mv r1,r13                                      
 8002ca0:	b9 60 10 00 	mv r2,r11                                      
 8002ca4:	34 03 00 02 	mvi r3,2                                       
 8002ca8:	b9 80 20 00 	mv r4,r12                                      
 8002cac:	34 05 00 00 	mvi r5,0                                       
 8002cb0:	fb ff fb 0e 	calli 80018e8 <rtems_filesystem_evaluate_path> 
                                            RTEMS_LIBIO_PERMS_WRITE,  
                                            &parentloc,               
                                            false );                  
    if ( result != 0 )                                                
      return -1;                                                      
 8002cb4:	34 0e ff ff 	mvi r14,-1                                     
  else {                                                              
    result = rtems_filesystem_evaluate_path(pathname, parentpathlen,  
                                            RTEMS_LIBIO_PERMS_WRITE,  
                                            &parentloc,               
                                            false );                  
    if ( result != 0 )                                                
 8002cb8:	5c 20 ff df 	bne r1,r0,8002c34 <rmdir+0xec>                 <== NEVER TAKEN
      return -1;                                                      
                                                                      
    free_parentloc = true;                                            
 8002cbc:	34 0f 00 01 	mvi r15,1                                      
 8002cc0:	e3 ff ff b3 	bi 8002b8c <rmdir+0x44>                        
                                                                      

080046d0 <rtems_aio_enqueue>: * errno - otherwise */ int rtems_aio_enqueue (rtems_aio_request *req) {
 80046d0:	37 9c ff c4 	addi sp,sp,-60                                 
 80046d4:	5b 8b 00 18 	sw (sp+24),r11                                 
 80046d8:	5b 8c 00 14 	sw (sp+20),r12                                 
 80046dc:	5b 8d 00 10 	sw (sp+16),r13                                 
 80046e0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80046e4:	5b 8f 00 08 	sw (sp+8),r15                                  
 80046e8:	5b 9d 00 04 	sw (sp+4),ra                                   
  struct sched_param param;                                           
                                                                      
  /* The queue should be initialized */                               
  AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
                                                                      
  result = pthread_mutex_lock (&aio_request_queue.mutex);             
 80046ec:	78 0b 08 01 	mvhi r11,0x801                                 
 80046f0:	39 6b 88 68 	ori r11,r11,0x8868                             
 *         errno     - otherwise                                      
 */                                                                   
                                                                      
int                                                                   
rtems_aio_enqueue (rtems_aio_request *req)                            
{                                                                     
 80046f4:	b8 20 60 00 	mv r12,r1                                      
  struct sched_param param;                                           
                                                                      
  /* The queue should be initialized */                               
  AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
                                                                      
  result = pthread_mutex_lock (&aio_request_queue.mutex);             
 80046f8:	b9 60 08 00 	mv r1,r11                                      
 80046fc:	f8 00 02 c6 	calli 8005214 <pthread_mutex_lock>             
 8004700:	b8 20 68 00 	mv r13,r1                                      
  if (result != 0) {                                                  
 8004704:	5c 20 00 52 	bne r1,r0,800484c <rtems_aio_enqueue+0x17c>    <== NEVER TAKEN
    return result;                                                    
  }                                                                   
                                                                      
  /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
     we can use aio_reqprio to lower the priority of the request */   
  pthread_getschedparam (pthread_self(), &policy, ¶m);            
 8004708:	f8 00 05 a4 	calli 8005d98 <pthread_self>                   
 800470c:	37 82 00 38 	addi r2,sp,56                                  
 8004710:	37 83 00 1c 	addi r3,sp,28                                  
 8004714:	f8 00 04 57 	calli 8005870 <pthread_getschedparam>          
                                                                      
  req->caller_thread = pthread_self ();                               
 8004718:	f8 00 05 a0 	calli 8005d98 <pthread_self>                   
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
 800471c:	29 82 00 14 	lw r2,(r12+20)                                 
  req->policy = policy;                                               
  req->aiocbp->error_code = EINPROGRESS;                              
  req->aiocbp->return_value = 0;                                      
                                                                      
  if ((aio_request_queue.idle_threads == 0) &&                        
 8004720:	29 63 00 68 	lw r3,(r11+104)                                
  /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
     we can use aio_reqprio to lower the priority of the request */   
  pthread_getschedparam (pthread_self(), &policy, ¶m);            
                                                                      
  req->caller_thread = pthread_self ();                               
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
 8004724:	28 44 00 10 	lw r4,(r2+16)                                  
                                                                      
  /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
     we can use aio_reqprio to lower the priority of the request */   
  pthread_getschedparam (pthread_self(), &policy, ¶m);            
                                                                      
  req->caller_thread = pthread_self ();                               
 8004728:	59 81 00 10 	sw (r12+16),r1                                 
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
 800472c:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8004730:	c8 24 08 00 	sub r1,r1,r4                                   
 8004734:	59 81 00 0c 	sw (r12+12),r1                                 
  req->policy = policy;                                               
 8004738:	2b 81 00 38 	lw r1,(sp+56)                                  
 800473c:	59 81 00 08 	sw (r12+8),r1                                  
  req->aiocbp->error_code = EINPROGRESS;                              
 8004740:	34 01 00 77 	mvi r1,119                                     
 8004744:	58 41 00 2c 	sw (r2+44),r1                                  
  req->aiocbp->return_value = 0;                                      
 8004748:	58 40 00 30 	sw (r2+48),r0                                  
                                                                      
  if ((aio_request_queue.idle_threads == 0) &&                        
 800474c:	5c 6d 00 24 	bne r3,r13,80047dc <rtems_aio_enqueue+0x10c>   <== NEVER TAKEN
 8004750:	29 63 00 64 	lw r3,(r11+100)                                
 8004754:	34 01 00 04 	mvi r1,4                                       
 8004758:	48 61 00 21 	bg r3,r1,80047dc <rtems_aio_enqueue+0x10c>     
      aio_request_queue.active_threads < AIO_MAX_THREADS)             
    /* we still have empty places on the active_threads chain */      
    {                                                                 
      chain = &aio_request_queue.work_req;                            
      r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
 800475c:	28 42 00 00 	lw r2,(r2+0)                                   
 8004760:	78 01 08 01 	mvhi r1,0x801                                  
 8004764:	38 21 88 b0 	ori r1,r1,0x88b0                               
 8004768:	34 03 00 01 	mvi r3,1                                       
 800476c:	fb ff fe 7e 	calli 8004164 <rtems_aio_search_fd>            
                                                                      
      if (r_chain->new_fd == 1) {                                     
 8004770:	28 22 00 18 	lw r2,(r1+24)                                  
  if ((aio_request_queue.idle_threads == 0) &&                        
      aio_request_queue.active_threads < AIO_MAX_THREADS)             
    /* we still have empty places on the active_threads chain */      
    {                                                                 
      chain = &aio_request_queue.work_req;                            
      r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
 8004774:	b8 20 70 00 	mv r14,r1                                      
                                                                      
      if (r_chain->new_fd == 1) {                                     
 8004778:	34 01 00 01 	mvi r1,1                                       
 800477c:	5c 41 00 1f 	bne r2,r1,80047f8 <rtems_aio_enqueue+0x128>    
RTEMS_INLINE_ROUTINE void _Chain_Prepend(                             
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  _Chain_Insert(_Chain_Head(the_chain), the_node);                    
 8004780:	b9 80 10 00 	mv r2,r12                                      
 8004784:	35 c1 00 08 	addi r1,r14,8                                  
 8004788:	f8 00 08 f6 	calli 8006b60 <_Chain_Insert>                  
	rtems_chain_prepend (&r_chain->perfd, &req->next_prio);              
	r_chain->new_fd = 0;                                                 
	pthread_mutex_init (&r_chain->mutex, NULL);                          
 800478c:	34 02 00 00 	mvi r2,0                                       
      chain = &aio_request_queue.work_req;                            
      r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
                                                                      
      if (r_chain->new_fd == 1) {                                     
	rtems_chain_prepend (&r_chain->perfd, &req->next_prio);              
	r_chain->new_fd = 0;                                                 
 8004790:	59 c0 00 18 	sw (r14+24),r0                                 
	pthread_mutex_init (&r_chain->mutex, NULL);                          
 8004794:	35 c1 00 1c 	addi r1,r14,28                                 
 8004798:	f8 00 02 3e 	calli 8005090 <pthread_mutex_init>             
	pthread_cond_init (&r_chain->cond, NULL);                            
 800479c:	34 02 00 00 	mvi r2,0                                       
 80047a0:	35 c1 00 20 	addi r1,r14,32                                 
 80047a4:	f8 00 01 03 	calli 8004bb0 <pthread_cond_init>              
	                                                                     
	AIO_printf ("New thread \n");                                        
	result = pthread_create (&thid, &aio_request_queue.attr,             
 80047a8:	78 02 08 01 	mvhi r2,0x801                                  
 80047ac:	78 03 08 00 	mvhi r3,0x800                                  
 80047b0:	37 81 00 3c 	addi r1,sp,60                                  
 80047b4:	38 42 88 70 	ori r2,r2,0x8870                               
 80047b8:	38 63 42 a4 	ori r3,r3,0x42a4                               
 80047bc:	b9 c0 20 00 	mv r4,r14                                      
 80047c0:	f8 00 03 55 	calli 8005514 <pthread_create>                 
 80047c4:	b8 20 60 00 	mv r12,r1                                      
				 rtems_aio_handle, (void *) r_chain);                             
	if (result != 0) {                                                   
 80047c8:	5c 20 00 42 	bne r1,r0,80048d0 <rtems_aio_enqueue+0x200>    <== NEVER TAKEN
	  pthread_mutex_unlock (&aio_request_queue.mutex);                   
	  return result;                                                     
	}                                                                    
	++aio_request_queue.active_threads;                                  
 80047cc:	29 61 00 64 	lw r1,(r11+100)                                
 80047d0:	34 21 00 01 	addi r1,r1,1                                   
 80047d4:	59 61 00 64 	sw (r11+100),r1                                
 80047d8:	e0 00 00 12 	bi 8004820 <rtems_aio_enqueue+0x150>           
  else                                                                
    {                                                                 
      /* the maximum number of threads has been already created       
	 even though some of them might be idle.                             
	 The request belongs to one of the active fd chain */                
      r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,     
 80047dc:	28 42 00 00 	lw r2,(r2+0)                                   
 80047e0:	78 01 08 01 	mvhi r1,0x801                                  
 80047e4:	38 21 88 b0 	ori r1,r1,0x88b0                               
 80047e8:	34 03 00 00 	mvi r3,0                                       
 80047ec:	fb ff fe 5e 	calli 8004164 <rtems_aio_search_fd>            
 80047f0:	b8 20 70 00 	mv r14,r1                                      
				     req->aiocbp->aio_fildes, 0);                                 
      if (r_chain != NULL)                                            
 80047f4:	44 20 00 19 	be r1,r0,8004858 <rtems_aio_enqueue+0x188>     
	{                                                                    
	  pthread_mutex_lock (&r_chain->mutex);                              
 80047f8:	35 cf 00 1c 	addi r15,r14,28                                
 80047fc:	b9 e0 08 00 	mv r1,r15                                      
 8004800:	f8 00 02 85 	calli 8005214 <pthread_mutex_lock>             
	  rtems_aio_insert_prio (&r_chain->perfd, req);                      
 8004804:	35 c1 00 08 	addi r1,r14,8                                  
 8004808:	b9 80 10 00 	mv r2,r12                                      
 800480c:	fb ff ff 56 	calli 8004564 <rtems_aio_insert_prio>          
	  pthread_cond_signal (&r_chain->cond);                              
 8004810:	35 c1 00 20 	addi r1,r14,32                                 
 8004814:	f8 00 01 28 	calli 8004cb4 <pthread_cond_signal>            
	  pthread_mutex_unlock (&r_chain->mutex);                            
 8004818:	b9 e0 08 00 	mv r1,r15                                      
 800481c:	f8 00 02 ae 	calli 80052d4 <pthread_mutex_unlock>           
	if (aio_request_queue.idle_threads > 0)                              
	  pthread_cond_signal (&aio_request_queue.new_req);                  
      }                                                               
    }                                                                 
                                                                      
  pthread_mutex_unlock (&aio_request_queue.mutex);                    
 8004820:	b9 60 08 00 	mv r1,r11                                      
 8004824:	f8 00 02 ac 	calli 80052d4 <pthread_mutex_unlock>           
  return 0;                                                           
}                                                                     
 8004828:	b9 a0 08 00 	mv r1,r13                                      
 800482c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004830:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8004834:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004838:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800483c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8004840:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8004844:	37 9c 00 3c 	addi sp,sp,60                                  
 8004848:	c3 a0 00 00 	ret                                            
  /* The queue should be initialized */                               
  AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
                                                                      
  result = pthread_mutex_lock (&aio_request_queue.mutex);             
  if (result != 0) {                                                  
    free (req);                                                       
 800484c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8004850:	fb ff f6 b6 	calli 8002328 <free>                           <== NOT EXECUTED
    return result;                                                    
 8004854:	e3 ff ff f5 	bi 8004828 <rtems_aio_enqueue+0x158>           <== NOT EXECUTED
	                                                                     
	} else {                                                             
                                                                      
	/* or to the idle chain */                                           
	chain = &aio_request_queue.idle_req;                                 
	r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);   
 8004858:	29 82 00 14 	lw r2,(r12+20)                                 
 800485c:	78 01 08 01 	mvhi r1,0x801                                  
 8004860:	38 21 88 bc 	ori r1,r1,0x88bc                               
 8004864:	28 42 00 00 	lw r2,(r2+0)                                   
 8004868:	34 03 00 01 	mvi r3,1                                       
 800486c:	fb ff fe 3e 	calli 8004164 <rtems_aio_search_fd>            
                                                                      
	if (r_chain->new_fd == 1) {                                          
 8004870:	28 22 00 18 	lw r2,(r1+24)                                  
	                                                                     
	} else {                                                             
                                                                      
	/* or to the idle chain */                                           
	chain = &aio_request_queue.idle_req;                                 
	r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);   
 8004874:	b8 20 70 00 	mv r14,r1                                      
                                                                      
	if (r_chain->new_fd == 1) {                                          
 8004878:	34 01 00 01 	mvi r1,1                                       
 800487c:	44 41 00 0a 	be r2,r1,80048a4 <rtems_aio_enqueue+0x1d4>     
	  r_chain->new_fd = 0;                                               
	  pthread_mutex_init (&r_chain->mutex, NULL);                        
	  pthread_cond_init (&r_chain->cond, NULL);                          
	} else                                                               
	  /* just insert the request in the existing fd chain */             
	  rtems_aio_insert_prio (&r_chain->perfd, req);                      
 8004880:	35 c1 00 08 	addi r1,r14,8                                  
 8004884:	b9 80 10 00 	mv r2,r12                                      
 8004888:	fb ff ff 37 	calli 8004564 <rtems_aio_insert_prio>          
	if (aio_request_queue.idle_threads > 0)                              
 800488c:	29 61 00 68 	lw r1,(r11+104)                                
 8004890:	4c 01 ff e4 	bge r0,r1,8004820 <rtems_aio_enqueue+0x150>    <== ALWAYS TAKEN
	  pthread_cond_signal (&aio_request_queue.new_req);                  
 8004894:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 8004898:	38 21 88 6c 	ori r1,r1,0x886c                               <== NOT EXECUTED
 800489c:	f8 00 01 06 	calli 8004cb4 <pthread_cond_signal>            <== NOT EXECUTED
 80048a0:	e3 ff ff e0 	bi 8004820 <rtems_aio_enqueue+0x150>           <== NOT EXECUTED
 80048a4:	35 c1 00 08 	addi r1,r14,8                                  
 80048a8:	b9 80 10 00 	mv r2,r12                                      
 80048ac:	f8 00 08 ad 	calli 8006b60 <_Chain_Insert>                  
	  /* If this is a new fd chain we signal the idle threads that       
	     might be waiting for requests */                                
	  AIO_printf (" New chain on waiting queue \n ");                    
	  rtems_chain_prepend (&r_chain->perfd, &req->next_prio);            
	  r_chain->new_fd = 0;                                               
	  pthread_mutex_init (&r_chain->mutex, NULL);                        
 80048b0:	35 c1 00 1c 	addi r1,r14,28                                 
	if (r_chain->new_fd == 1) {                                          
	  /* If this is a new fd chain we signal the idle threads that       
	     might be waiting for requests */                                
	  AIO_printf (" New chain on waiting queue \n ");                    
	  rtems_chain_prepend (&r_chain->perfd, &req->next_prio);            
	  r_chain->new_fd = 0;                                               
 80048b4:	59 c0 00 18 	sw (r14+24),r0                                 
	  pthread_mutex_init (&r_chain->mutex, NULL);                        
 80048b8:	34 02 00 00 	mvi r2,0                                       
 80048bc:	f8 00 01 f5 	calli 8005090 <pthread_mutex_init>             
	  pthread_cond_init (&r_chain->cond, NULL);                          
 80048c0:	35 c1 00 20 	addi r1,r14,32                                 
 80048c4:	34 02 00 00 	mvi r2,0                                       
 80048c8:	f8 00 00 ba 	calli 8004bb0 <pthread_cond_init>              
 80048cc:	e3 ff ff f0 	bi 800488c <rtems_aio_enqueue+0x1bc>           
	                                                                     
	AIO_printf ("New thread \n");                                        
	result = pthread_create (&thid, &aio_request_queue.attr,             
				 rtems_aio_handle, (void *) r_chain);                             
	if (result != 0) {                                                   
	  pthread_mutex_unlock (&aio_request_queue.mutex);                   
 80048d0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80048d4:	f8 00 02 80 	calli 80052d4 <pthread_mutex_unlock>           <== NOT EXECUTED
	  return result;                                                     
 80048d8:	b9 80 68 00 	mv r13,r12                                     <== NOT EXECUTED
 80048dc:	e3 ff ff d3 	bi 8004828 <rtems_aio_enqueue+0x158>           <== NOT EXECUTED
                                                                      

080042a4 <rtems_aio_handle>: * NULL - if error */ static void * rtems_aio_handle (void *arg) {
 80042a4:	37 9c ff 9c 	addi sp,sp,-100                                
 80042a8:	5b 8b 00 3c 	sw (sp+60),r11                                 
 80042ac:	5b 8c 00 38 	sw (sp+56),r12                                 
 80042b0:	5b 8d 00 34 	sw (sp+52),r13                                 
 80042b4:	5b 8e 00 30 	sw (sp+48),r14                                 
 80042b8:	5b 8f 00 2c 	sw (sp+44),r15                                 
 80042bc:	5b 90 00 28 	sw (sp+40),r16                                 
 80042c0:	5b 91 00 24 	sw (sp+36),r17                                 
 80042c4:	5b 92 00 20 	sw (sp+32),r18                                 
 80042c8:	5b 93 00 1c 	sw (sp+28),r19                                 
 80042cc:	5b 94 00 18 	sw (sp+24),r20                                 
 80042d0:	5b 95 00 14 	sw (sp+20),r21                                 
 80042d4:	5b 96 00 10 	sw (sp+16),r22                                 
 80042d8:	5b 97 00 0c 	sw (sp+12),r23                                 
 80042dc:	5b 98 00 08 	sw (sp+8),r24                                  
 80042e0:	5b 9d 00 04 	sw (sp+4),ra                                   
      struct timespec timeout;                                        
                                                                      
      AIO_printf ("Chain is empty [WQ], wait for work\n");            
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
 80042e4:	78 14 08 01 	mvhi r20,0x801                                 
 80042e8:	3a 94 88 68 	ori r20,r20,0x8868                             
	    pthread_cond_destroy (&r_chain->cond);                           
	    free (r_chain);                                                  
	                                                                     
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
 80042ec:	78 15 08 01 	mvhi r21,0x801                                 
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 80042f0:	78 16 08 01 	mvhi r22,0x801                                 
 *        NULL       - if error                                       
 */                                                                   
                                                                      
static void *                                                         
rtems_aio_handle (void *arg)                                          
{                                                                     
 80042f4:	b8 20 68 00 	mv r13,r1                                      
 80042f8:	34 2e 00 1c 	addi r14,r1,28                                 
      struct timespec timeout;                                        
                                                                      
      AIO_printf ("Chain is empty [WQ], wait for work\n");            
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
 80042fc:	ba 80 90 00 	mv r18,r20                                     
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
 8004300:	37 97 00 5c 	addi r23,sp,92                                 
					   &aio_request_queue.mutex,                                     
					   &timeout);                                                    
                                                                      
	  /* If no requests were added to the chain we delete the fd chain from
	     the queue and start working with idle fd chains */              
	  if (result == ETIMEDOUT) {                                         
 8004304:	34 18 00 74 	mvi r24,116                                    
	    pthread_cond_destroy (&r_chain->cond);                           
	    free (r_chain);                                                  
	                                                                     
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
 8004308:	3a b5 88 c0 	ori r21,r21,0x88c0                             
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 800430c:	3a d6 88 6c 	ori r22,r22,0x886c                             
      node = rtems_chain_first (chain);                               
      req = (rtems_aio_request *) node;                               
                                                                      
      /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING      
	 discussion in rtems_aio_enqueue () */                               
      pthread_getschedparam (pthread_self(), &policy, ¶m);        
 8004310:	37 8f 00 40 	addi r15,sp,64                                 
                                                                      
      rtems_chain_extract (node);                                     
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
 8004314:	34 10 00 02 	mvi r16,2                                      
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
        req->aiocbp->return_value = -1;                               
 8004318:	34 11 ff ff 	mvi r17,-1                                     
                                                                      
      rtems_chain_extract (node);                                     
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
 800431c:	34 13 00 03 	mvi r19,3                                      
    /* acquire the mutex of the current fd chain.                     
       we don't need to lock the queue mutex since we can             
       add requests to idle fd chains or even active ones             
       if the working request has been extracted from the             
       chain */                                                       
    result = pthread_mutex_lock (&r_chain->mutex);                    
 8004320:	b9 c0 08 00 	mv r1,r14                                      
 8004324:	f8 00 03 bc 	calli 8005214 <pthread_mutex_lock>             
    if (result != 0)                                                  
 8004328:	5c 20 00 1f 	bne r1,r0,80043a4 <rtems_aio_handle+0x100>     <== NEVER TAKEN
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 800432c:	29 ab 00 08 	lw r11,(r13+8)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8004330:	35 a4 00 0c 	addi r4,r13,12                                 
                                                                      
    /* If the locked chain is not empty, take the first               
       request extract it, unlock the chain and process               
       the request, in this way the user can supply more              
       requests to this fd chain */                                   
    if (!rtems_chain_is_empty (chain)) {                              
 8004334:	45 64 00 44 	be r11,r4,8004444 <rtems_aio_handle+0x1a0>     
      node = rtems_chain_first (chain);                               
      req = (rtems_aio_request *) node;                               
                                                                      
      /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING      
	 discussion in rtems_aio_enqueue () */                               
      pthread_getschedparam (pthread_self(), &policy, ¶m);        
 8004338:	f8 00 06 98 	calli 8005d98 <pthread_self>                   
 800433c:	37 82 00 64 	addi r2,sp,100                                 
 8004340:	b9 e0 18 00 	mv r3,r15                                      
 8004344:	f8 00 05 4b 	calli 8005870 <pthread_getschedparam>          
      param.sched_priority = req->priority;                           
 8004348:	29 64 00 0c 	lw r4,(r11+12)                                 
 800434c:	5b 84 00 40 	sw (sp+64),r4                                  
      pthread_setschedparam (pthread_self(), req->policy, ¶m);    
 8004350:	f8 00 06 92 	calli 8005d98 <pthread_self>                   
 8004354:	29 62 00 08 	lw r2,(r11+8)                                  
 8004358:	b9 e0 18 00 	mv r3,r15                                      
 800435c:	f8 00 06 94 	calli 8005dac <pthread_setschedparam>          
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 8004360:	b9 60 08 00 	mv r1,r11                                      
 8004364:	f8 00 09 e4 	calli 8006af4 <_Chain_Extract>                 
                                                                      
      rtems_chain_extract (node);                                     
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
 8004368:	b9 c0 08 00 	mv r1,r14                                      
 800436c:	f8 00 03 da 	calli 80052d4 <pthread_mutex_unlock>           
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
 8004370:	29 6c 00 14 	lw r12,(r11+20)                                
 8004374:	29 84 00 28 	lw r4,(r12+40)                                 
 8004378:	44 90 00 2c 	be r4,r16,8004428 <rtems_aio_handle+0x184>     
 800437c:	44 93 00 27 	be r4,r19,8004418 <rtems_aio_handle+0x174>     <== NEVER TAKEN
 8004380:	34 05 00 01 	mvi r5,1                                       
 8004384:	44 85 00 1a 	be r4,r5,80043ec <rtems_aio_handle+0x148>      <== ALWAYS TAKEN
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
        req->aiocbp->return_value = -1;                               
 8004388:	59 91 00 30 	sw (r12+48),r17                                <== NOT EXECUTED
	req->aiocbp->error_code = errno;                                     
 800438c:	f8 00 2e e4 	calli 800ff1c <__errno>                        <== NOT EXECUTED
 8004390:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8004394:	59 81 00 2c 	sw (r12+44),r1                                 <== NOT EXECUTED
    /* acquire the mutex of the current fd chain.                     
       we don't need to lock the queue mutex since we can             
       add requests to idle fd chains or even active ones             
       if the working request has been extracted from the             
       chain */                                                       
    result = pthread_mutex_lock (&r_chain->mutex);                    
 8004398:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 800439c:	f8 00 03 9e 	calli 8005214 <pthread_mutex_lock>             <== NOT EXECUTED
    if (result != 0)                                                  
 80043a0:	44 20 ff e3 	be r1,r0,800432c <rtems_aio_handle+0x88>       <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80043a4:	34 01 00 00 	mvi r1,0                                       
 80043a8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80043ac:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 80043b0:	2b 8c 00 38 	lw r12,(sp+56)                                 
 80043b4:	2b 8d 00 34 	lw r13,(sp+52)                                 
 80043b8:	2b 8e 00 30 	lw r14,(sp+48)                                 
 80043bc:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 80043c0:	2b 90 00 28 	lw r16,(sp+40)                                 
 80043c4:	2b 91 00 24 	lw r17,(sp+36)                                 
 80043c8:	2b 92 00 20 	lw r18,(sp+32)                                 
 80043cc:	2b 93 00 1c 	lw r19,(sp+28)                                 
 80043d0:	2b 94 00 18 	lw r20,(sp+24)                                 
 80043d4:	2b 95 00 14 	lw r21,(sp+20)                                 
 80043d8:	2b 96 00 10 	lw r22,(sp+16)                                 
 80043dc:	2b 97 00 0c 	lw r23,(sp+12)                                 
 80043e0:	2b 98 00 08 	lw r24,(sp+8)                                  
 80043e4:	37 9c 00 64 	addi sp,sp,100                                 
 80043e8:	c3 a0 00 00 	ret                                            
      pthread_mutex_unlock (&r_chain->mutex);                         
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
      case LIO_READ:                                                  
	AIO_printf ("read\n");                                               
        result = pread (req->aiocbp->aio_fildes,                      
 80043ec:	29 84 00 04 	lw r4,(r12+4)                                  
 80043f0:	29 81 00 00 	lw r1,(r12+0)                                  
 80043f4:	29 82 00 08 	lw r2,(r12+8)                                  
 80043f8:	29 83 00 0c 	lw r3,(r12+12)                                 
 80043fc:	f8 00 32 77 	calli 8010dd8 <pread>                          
 8004400:	b8 20 20 00 	mv r4,r1                                       
      	break;                                                         
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
 8004404:	44 91 00 50 	be r4,r17,8004544 <rtems_aio_handle+0x2a0>     <== NEVER TAKEN
        req->aiocbp->return_value = -1;                               
	req->aiocbp->error_code = errno;                                     
      } else {                                                        
        req->aiocbp->return_value = result;                           
 8004408:	29 65 00 14 	lw r5,(r11+20)                                 
 800440c:	58 a4 00 30 	sw (r5+48),r4                                  
        req->aiocbp->error_code = 0;                                  
 8004410:	58 a0 00 2c 	sw (r5+44),r0                                  
 8004414:	e3 ff ff c3 	bi 8004320 <rtems_aio_handle+0x7c>             
                         req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
                                                                      
      case LIO_SYNC:                                                  
	AIO_printf ("sync\n");                                               
      	result = fsync (req->aiocbp->aio_fildes);                      
 8004418:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 800441c:	f8 00 1e 6c 	calli 800bdcc <fsync>                          <== NOT EXECUTED
 8004420:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
      	break;                                                         
 8004424:	e3 ff ff f8 	bi 8004404 <rtems_aio_handle+0x160>            <== NOT EXECUTED
                        req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
                                                                      
      case LIO_WRITE:                                                 
	AIO_printf ("write\n");                                              
        result = pwrite (req->aiocbp->aio_fildes,                     
 8004428:	29 84 00 04 	lw r4,(r12+4)                                  
 800442c:	29 81 00 00 	lw r1,(r12+0)                                  
 8004430:	29 82 00 08 	lw r2,(r12+8)                                  
 8004434:	29 83 00 0c 	lw r3,(r12+12)                                 
 8004438:	f8 00 32 ac 	calli 8010ee8 <pwrite>                         
 800443c:	b8 20 20 00 	mv r4,r1                                       
                         (void *) req->aiocbp->aio_buf,               
                         req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
 8004440:	e3 ff ff f1 	bi 8004404 <rtems_aio_handle+0x160>            
                                                                      
      struct timespec timeout;                                        
                                                                      
      AIO_printf ("Chain is empty [WQ], wait for work\n");            
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
 8004444:	b9 c0 08 00 	mv r1,r14                                      
 8004448:	f8 00 03 a3 	calli 80052d4 <pthread_mutex_unlock>           
      pthread_mutex_lock (&aio_request_queue.mutex);                  
 800444c:	ba 40 08 00 	mv r1,r18                                      
 8004450:	f8 00 03 71 	calli 8005214 <pthread_mutex_lock>             
                                                                      
      if (rtems_chain_is_empty (chain))                               
 8004454:	29 a1 00 08 	lw r1,(r13+8)                                  
 8004458:	45 61 00 04 	be r11,r1,8004468 <rtems_aio_handle+0x1c4>     <== ALWAYS TAKEN
	                                                                     
	  }                                                                  
	}                                                                    
      /* If there was a request added in the initial fd chain then release
	 the mutex and process it */                                         
      pthread_mutex_unlock (&aio_request_queue.mutex);                
 800445c:	ba 40 08 00 	mv r1,r18                                      
 8004460:	f8 00 03 9d 	calli 80052d4 <pthread_mutex_unlock>           
 8004464:	e3 ff ff af 	bi 8004320 <rtems_aio_handle+0x7c>             
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
 8004468:	ba e0 10 00 	mv r2,r23                                      
 800446c:	34 01 00 01 	mvi r1,1                                       
 8004470:	f8 00 01 6d 	calli 8004a24 <clock_gettime>                  
	  timeout.tv_sec += 3;                                               
 8004474:	2b 84 00 5c 	lw r4,(sp+92)                                  
	  timeout.tv_nsec = 0;                                               
	  result = pthread_cond_timedwait (&r_chain->cond,                   
 8004478:	35 ab 00 20 	addi r11,r13,32                                
 800447c:	b9 60 08 00 	mv r1,r11                                      
      pthread_mutex_lock (&aio_request_queue.mutex);                  
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
	  timeout.tv_sec += 3;                                               
 8004480:	34 84 00 03 	addi r4,r4,3                                   
	  timeout.tv_nsec = 0;                                               
	  result = pthread_cond_timedwait (&r_chain->cond,                   
 8004484:	ba 40 10 00 	mv r2,r18                                      
 8004488:	ba e0 18 00 	mv r3,r23                                      
      pthread_mutex_lock (&aio_request_queue.mutex);                  
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
	  timeout.tv_sec += 3;                                               
 800448c:	5b 84 00 5c 	sw (sp+92),r4                                  
	  timeout.tv_nsec = 0;                                               
 8004490:	5b 80 00 60 	sw (sp+96),r0                                  
	  result = pthread_cond_timedwait (&r_chain->cond,                   
 8004494:	f8 00 02 31 	calli 8004d58 <pthread_cond_timedwait>         
					   &aio_request_queue.mutex,                                     
					   &timeout);                                                    
                                                                      
	  /* If no requests were added to the chain we delete the fd chain from
	     the queue and start working with idle fd chains */              
	  if (result == ETIMEDOUT) {                                         
 8004498:	5c 38 ff f1 	bne r1,r24,800445c <rtems_aio_handle+0x1b8>    <== NEVER TAKEN
 800449c:	b9 a0 08 00 	mv r1,r13                                      
 80044a0:	f8 00 09 95 	calli 8006af4 <_Chain_Extract>                 
	    rtems_chain_extract (&r_chain->next_fd);                         
	    pthread_mutex_destroy (&r_chain->mutex);                         
 80044a4:	b9 c0 08 00 	mv r1,r14                                      
 80044a8:	f8 00 02 93 	calli 8004ef4 <pthread_mutex_destroy>          
	    pthread_cond_destroy (&r_chain->cond);                           
 80044ac:	b9 60 08 00 	mv r1,r11                                      
 80044b0:	f8 00 01 80 	calli 8004ab0 <pthread_cond_destroy>           
	    free (r_chain);                                                  
 80044b4:	b9 a0 08 00 	mv r1,r13                                      
 80044b8:	fb ff f7 9c 	calli 8002328 <free>                           
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80044bc:	2a 4d 00 54 	lw r13,(r18+84)                                
	    pthread_cond_destroy (&r_chain->cond);                           
	    free (r_chain);                                                  
	                                                                     
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
 80044c0:	45 b5 00 0d 	be r13,r21,80044f4 <rtems_aio_handle+0x250>    
	      }                                                              
	    }                                                                
	    /* Otherwise move this chain to the working chain and            
	       start the loop all over again */                              
	    AIO_printf ("Work on idle\n");                                   
	    --aio_request_queue.idle_threads;                                
 80044c4:	2a 83 00 68 	lw r3,(r20+104)                                
	    ++aio_request_queue.active_threads;                              
 80044c8:	2a 82 00 64 	lw r2,(r20+100)                                
 80044cc:	b9 a0 08 00 	mv r1,r13                                      
	      }                                                              
	    }                                                                
	    /* Otherwise move this chain to the working chain and            
	       start the loop all over again */                              
	    AIO_printf ("Work on idle\n");                                   
	    --aio_request_queue.idle_threads;                                
 80044d0:	34 63 ff ff 	addi r3,r3,-1                                  
	    ++aio_request_queue.active_threads;                              
 80044d4:	34 42 00 01 	addi r2,r2,1                                   
	      }                                                              
	    }                                                                
	    /* Otherwise move this chain to the working chain and            
	       start the loop all over again */                              
	    AIO_printf ("Work on idle\n");                                   
	    --aio_request_queue.idle_threads;                                
 80044d8:	5a 83 00 68 	sw (r20+104),r3                                
	    ++aio_request_queue.active_threads;                              
 80044dc:	5a 82 00 64 	sw (r20+100),r2                                
 80044e0:	f8 00 09 85 	calli 8006af4 <_Chain_Extract>                 
                                                                      
	    node = rtems_chain_first (&aio_request_queue.idle_req);          
	    rtems_chain_extract (node);                                      
                                                                      
	    r_chain = (rtems_aio_request_chain *) node;                      
	    rtems_aio_move_to_work (r_chain);                                
 80044e4:	b9 a0 08 00 	mv r1,r13                                      
 80044e8:	fb ff ff 57 	calli 8004244 <rtems_aio_move_to_work>         
 80044ec:	35 ae 00 1c 	addi r14,r13,28                                
 80044f0:	e3 ff ff db 	bi 800445c <rtems_aio_handle+0x1b8>            
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
 80044f4:	2a 44 00 68 	lw r4,(r18+104)                                
	      --aio_request_queue.active_threads;                            
 80044f8:	2a 43 00 64 	lw r3,(r18+100)                                
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
 80044fc:	ba e0 10 00 	mv r2,r23                                      
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
 8004500:	34 84 00 01 	addi r4,r4,1                                   
	      --aio_request_queue.active_threads;                            
 8004504:	34 63 ff ff 	addi r3,r3,-1                                  
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
 8004508:	5a 44 00 68 	sw (r18+104),r4                                
	      --aio_request_queue.active_threads;                            
 800450c:	5a 43 00 64 	sw (r18+100),r3                                
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
 8004510:	34 01 00 01 	mvi r1,1                                       
 8004514:	f8 00 01 44 	calli 8004a24 <clock_gettime>                  
	      timeout.tv_sec += 3;                                           
 8004518:	2b 84 00 5c 	lw r4,(sp+92)                                  
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 800451c:	ba c0 08 00 	mv r1,r22                                      
 8004520:	ba 40 10 00 	mv r2,r18                                      
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
 8004524:	34 84 00 03 	addi r4,r4,3                                   
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 8004528:	ba e0 18 00 	mv r3,r23                                      
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
 800452c:	5b 84 00 5c 	sw (sp+92),r4                                  
	      timeout.tv_nsec = 0;                                           
 8004530:	5b 80 00 60 	sw (sp+96),r0                                  
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 8004534:	f8 00 02 09 	calli 8004d58 <pthread_cond_timedwait>         
					       &aio_request_queue.mutex,                                 
					       &timeout);                                                
	                                                                     
	      /* If no new fd chain was added in the idle requests           
		 then this thread is finished */                                    
	      if (result == ETIMEDOUT) {                                     
 8004538:	44 38 00 05 	be r1,r24,800454c <rtems_aio_handle+0x2a8>     <== ALWAYS TAKEN
 800453c:	2a 4d 00 54 	lw r13,(r18+84)                                <== NOT EXECUTED
 8004540:	e3 ff ff e1 	bi 80044c4 <rtems_aio_handle+0x220>            <== NOT EXECUTED
      	break;                                                         
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
 8004544:	29 6c 00 14 	lw r12,(r11+20)                                <== NOT EXECUTED
 8004548:	e3 ff ff 90 	bi 8004388 <rtems_aio_handle+0xe4>             <== NOT EXECUTED
	                                                                     
	      /* If no new fd chain was added in the idle requests           
		 then this thread is finished */                                    
	      if (result == ETIMEDOUT) {                                     
		AIO_printf ("Etimeout\n");                                          
		--aio_request_queue.idle_threads;                                   
 800454c:	2a 42 00 68 	lw r2,(r18+104)                                
		pthread_mutex_unlock (&aio_request_queue.mutex);                    
 8004550:	ba 40 08 00 	mv r1,r18                                      
	                                                                     
	      /* If no new fd chain was added in the idle requests           
		 then this thread is finished */                                    
	      if (result == ETIMEDOUT) {                                     
		AIO_printf ("Etimeout\n");                                          
		--aio_request_queue.idle_threads;                                   
 8004554:	34 42 ff ff 	addi r2,r2,-1                                  
 8004558:	5a 42 00 68 	sw (r18+104),r2                                
		pthread_mutex_unlock (&aio_request_queue.mutex);                    
 800455c:	f8 00 03 5e 	calli 80052d4 <pthread_mutex_unlock>           
		return NULL;                                                        
 8004560:	e3 ff ff 91 	bi 80043a4 <rtems_aio_handle+0x100>            
                                                                      

08004024 <rtems_aio_init>: * 0 - if initialization succeeded */ int rtems_aio_init (void) {
 8004024:	37 9c ff f0 	addi sp,sp,-16                                 
 8004028:	5b 8b 00 10 	sw (sp+16),r11                                 
 800402c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8004030:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004034:	5b 9d 00 04 	sw (sp+4),ra                                   
  int result = 0;                                                     
                                                                      
  result = pthread_attr_init (&aio_request_queue.attr);               
 8004038:	78 0c 08 01 	mvhi r12,0x801                                 
 800403c:	39 8c 88 70 	ori r12,r12,0x8870                             
 8004040:	b9 80 08 00 	mv r1,r12                                      
 8004044:	f8 00 04 f3 	calli 8005410 <pthread_attr_init>              
 8004048:	b8 20 68 00 	mv r13,r1                                      
  if (result != 0)                                                    
 800404c:	44 20 00 08 	be r1,r0,800406c <rtems_aio_init+0x48>         <== ALWAYS TAKEN
  aio_request_queue.active_threads = 0;                               
  aio_request_queue.idle_threads = 0;                                 
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
                                                                      
  return result;                                                      
}                                                                     
 8004050:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8004054:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8004058:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 800405c:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8004060:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 8004064:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 8004068:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
  result = pthread_attr_init (&aio_request_queue.attr);               
  if (result != 0)                                                    
    return result;                                                    
                                                                      
  result =                                                            
 800406c:	b9 80 08 00 	mv r1,r12                                      
 8004070:	34 02 00 00 	mvi r2,0                                       
 8004074:	f8 00 05 1e 	calli 80054ec <pthread_attr_setdetachstate>    
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
 8004078:	5c 2d 00 26 	bne r1,r13,8004110 <rtems_aio_init+0xec>       <== NEVER TAKEN
    pthread_attr_destroy (&aio_request_queue.attr);                   
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
 800407c:	78 0b 08 01 	mvhi r11,0x801                                 
 8004080:	39 6b 88 68 	ori r11,r11,0x8868                             
 8004084:	b9 60 08 00 	mv r1,r11                                      
 8004088:	34 02 00 00 	mvi r2,0                                       
 800408c:	f8 00 04 01 	calli 8005090 <pthread_mutex_init>             
  if (result != 0)                                                    
 8004090:	5c 20 00 28 	bne r1,r0,8004130 <rtems_aio_init+0x10c>       <== NEVER TAKEN
    pthread_attr_destroy (&aio_request_queue.attr);                   
                                                                      
                                                                      
  result = pthread_cond_init (&aio_request_queue.new_req, NULL);      
 8004094:	78 01 08 01 	mvhi r1,0x801                                  
 8004098:	38 21 88 6c 	ori r1,r1,0x886c                               
 800409c:	34 02 00 00 	mvi r2,0                                       
 80040a0:	f8 00 02 c4 	calli 8004bb0 <pthread_cond_init>              
 80040a4:	b8 20 68 00 	mv r13,r1                                      
  if (result != 0) {                                                  
 80040a8:	5c 20 00 2a 	bne r1,r0,8004150 <rtems_aio_init+0x12c>       <== NEVER TAKEN
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 80040ac:	78 01 08 01 	mvhi r1,0x801                                  
 80040b0:	38 21 88 bc 	ori r1,r1,0x88bc                               
 80040b4:	59 61 00 5c 	sw (r11+92),r1                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80040b8:	78 04 08 01 	mvhi r4,0x801                                  
  rtems_chain_initialize_empty (&aio_request_queue.work_req);         
  rtems_chain_initialize_empty (&aio_request_queue.idle_req);         
                                                                      
  aio_request_queue.active_threads = 0;                               
  aio_request_queue.idle_threads = 0;                                 
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
 80040bc:	38 01 b0 0b 	mvu r1,0xb00b                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 80040c0:	78 03 08 01 	mvhi r3,0x801                                  
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80040c4:	78 02 08 01 	mvhi r2,0x801                                  
 80040c8:	38 84 88 b4 	ori r4,r4,0x88b4                               
  head->previous = NULL;                                              
  tail->previous = head;                                              
 80040cc:	38 63 88 b0 	ori r3,r3,0x88b0                               
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80040d0:	38 42 88 c0 	ori r2,r2,0x88c0                               
 80040d4:	59 61 00 60 	sw (r11+96),r1                                 
                                                                      
  return result;                                                      
}                                                                     
 80040d8:	b9 a0 08 00 	mv r1,r13                                      
 80040dc:	59 64 00 48 	sw (r11+72),r4                                 
  head->previous = NULL;                                              
 80040e0:	59 60 00 4c 	sw (r11+76),r0                                 
  tail->previous = head;                                              
 80040e4:	59 63 00 50 	sw (r11+80),r3                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 80040e8:	59 62 00 54 	sw (r11+84),r2                                 
  head->previous = NULL;                                              
 80040ec:	59 60 00 58 	sw (r11+88),r0                                 
  }                                                                   
                                                                      
  rtems_chain_initialize_empty (&aio_request_queue.work_req);         
  rtems_chain_initialize_empty (&aio_request_queue.idle_req);         
                                                                      
  aio_request_queue.active_threads = 0;                               
 80040f0:	59 60 00 64 	sw (r11+100),r0                                
  aio_request_queue.idle_threads = 0;                                 
 80040f4:	59 60 00 68 	sw (r11+104),r0                                
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
                                                                      
  return result;                                                      
}                                                                     
 80040f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80040fc:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004100:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004104:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004108:	37 9c 00 10 	addi sp,sp,16                                  
 800410c:	c3 a0 00 00 	ret                                            
                                                                      
  result =                                                            
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
    pthread_attr_destroy (&aio_request_queue.attr);                   
 8004110:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
 8004114:	78 0b 08 01 	mvhi r11,0x801                                 <== NOT EXECUTED
                                                                      
  result =                                                            
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
    pthread_attr_destroy (&aio_request_queue.attr);                   
 8004118:	f8 00 04 b6 	calli 80053f0 <pthread_attr_destroy>           <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
 800411c:	39 6b 88 68 	ori r11,r11,0x8868                             <== NOT EXECUTED
 8004120:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004124:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8004128:	f8 00 03 da 	calli 8005090 <pthread_mutex_init>             <== NOT EXECUTED
  if (result != 0)                                                    
 800412c:	44 20 ff da 	be r1,r0,8004094 <rtems_aio_init+0x70>         <== NOT EXECUTED
    pthread_attr_destroy (&aio_request_queue.attr);                   
 8004130:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8004134:	f8 00 04 af 	calli 80053f0 <pthread_attr_destroy>           <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_cond_init (&aio_request_queue.new_req, NULL);      
 8004138:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 800413c:	38 21 88 6c 	ori r1,r1,0x886c                               <== NOT EXECUTED
 8004140:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8004144:	f8 00 02 9b 	calli 8004bb0 <pthread_cond_init>              <== NOT EXECUTED
 8004148:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
  if (result != 0) {                                                  
 800414c:	44 20 ff d8 	be r1,r0,80040ac <rtems_aio_init+0x88>         <== NOT EXECUTED
    pthread_mutex_destroy (&aio_request_queue.mutex);                 
 8004150:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004154:	f8 00 03 68 	calli 8004ef4 <pthread_mutex_destroy>          <== NOT EXECUTED
    pthread_attr_destroy (&aio_request_queue.attr);                   
 8004158:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800415c:	f8 00 04 a5 	calli 80053f0 <pthread_attr_destroy>           <== NOT EXECUTED
 8004160:	e3 ff ff d3 	bi 80040ac <rtems_aio_init+0x88>               <== NOT EXECUTED
                                                                      

08004564 <rtems_aio_insert_prio>: * NONE */ void rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req) {
 8004564:	37 9c ff fc 	addi sp,sp,-4                                  
 8004568:	5b 9d 00 04 	sw (sp+4),ra                                   
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 800456c:	28 24 00 00 	lw r4,(r1+0)                                   
 8004570:	34 26 00 04 	addi r6,r1,4                                   
 *        NONE                                                        
 */                                                                   
                                                                      
void                                                                  
rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req)
{                                                                     
 8004574:	b8 40 38 00 	mv r7,r2                                       
  rtems_chain_node *node;                                             
                                                                      
  AIO_printf ("FD exists \n");                                        
  node = rtems_chain_first (chain);                                   
                                                                      
  if (rtems_chain_is_empty (chain)) {                                 
 8004578:	44 86 00 10 	be r4,r6,80045b8 <rtems_aio_insert_prio+0x54>  <== NEVER TAKEN
    rtems_chain_prepend (chain, &req->next_prio);                     
  } else {                                                            
    AIO_printf ("Add by priority \n");                                
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
 800457c:	28 41 00 14 	lw r1,(r2+20)                                  
  if (rtems_chain_is_empty (chain)) {                                 
    AIO_printf ("First in chain \n");                                 
    rtems_chain_prepend (chain, &req->next_prio);                     
  } else {                                                            
    AIO_printf ("Add by priority \n");                                
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
 8004580:	28 82 00 14 	lw r2,(r4+20)                                  
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
 8004584:	b8 80 18 00 	mv r3,r4                                       
 8004588:	28 21 00 10 	lw r1,(r1+16)                                  
 800458c:	28 42 00 10 	lw r2,(r2+16)                                  
 8004590:	4c 41 00 08 	bge r2,r1,80045b0 <rtems_aio_insert_prio+0x4c> <== ALWAYS TAKEN
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 8004594:	28 83 00 00 	lw r3,(r4+0)                                   <== NOT EXECUTED
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
           !rtems_chain_is_tail (chain, node)) {                      
      node = rtems_chain_next (node);                                 
      prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;       
 8004598:	28 65 00 14 	lw r5,(r3+20)                                  <== NOT EXECUTED
    rtems_chain_prepend (chain, &req->next_prio);                     
  } else {                                                            
    AIO_printf ("Add by priority \n");                                
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
 800459c:	b8 60 20 00 	mv r4,r3                                       <== NOT EXECUTED
 80045a0:	28 a5 00 10 	lw r5,(r5+16)                                  <== NOT EXECUTED
 80045a4:	4c a1 00 03 	bge r5,r1,80045b0 <rtems_aio_insert_prio+0x4c> <== NOT EXECUTED
 80045a8:	5c 66 ff fb 	bne r3,r6,8004594 <rtems_aio_insert_prio+0x30> <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80045ac:	b8 c0 18 00 	mv r3,r6                                       <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void rtems_chain_insert(                         
  rtems_chain_node *after_node,                                       
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Insert( after_node, the_node );                              
 80045b0:	28 61 00 04 	lw r1,(r3+4)                                   
 80045b4:	b8 e0 10 00 	mv r2,r7                                       
 80045b8:	f8 00 09 6a 	calli 8006b60 <_Chain_Insert>                  
    }                                                                 
                                                                      
    rtems_chain_insert (node->previous, &req->next_prio);             
                                                                      
  }                                                                   
}                                                                     
 80045bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80045c0:	37 9c 00 04 	addi sp,sp,4                                   
 80045c4:	c3 a0 00 00 	ret                                            
                                                                      

08004244 <rtems_aio_move_to_work>: * NONE */ void rtems_aio_move_to_work (rtems_aio_request_chain *r_chain) {
 8004244:	37 9c ff fc 	addi sp,sp,-4                                  
 8004248:	5b 9d 00 04 	sw (sp+4),ra                                   
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 800424c:	78 02 08 01 	mvhi r2,0x801                                  
 8004250:	38 42 88 68 	ori r2,r2,0x8868                               
 8004254:	28 44 00 48 	lw r4,(r2+72)                                  
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
 8004258:	28 26 00 14 	lw r6,(r1+20)                                  
 *        NONE                                                        
 */                                                                   
                                                                      
void                                                                  
rtems_aio_move_to_work (rtems_aio_request_chain *r_chain)             
{                                                                     
 800425c:	b8 20 10 00 	mv r2,r1                                       
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
 8004260:	28 81 00 14 	lw r1,(r4+20)                                  
 8004264:	b8 80 18 00 	mv r3,r4                                       
 8004268:	4c 26 00 0a 	bge r1,r6,8004290 <rtems_aio_move_to_work+0x4c><== NEVER TAKEN
 800426c:	78 05 08 01 	mvhi r5,0x801                                  
 8004270:	38 a5 88 b4 	ori r5,r5,0x88b4                               
 8004274:	44 85 00 07 	be r4,r5,8004290 <rtems_aio_move_to_work+0x4c> <== NEVER TAKEN
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 8004278:	28 83 00 00 	lw r3,(r4+0)                                   
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
 800427c:	28 67 00 14 	lw r7,(r3+20)                                  
 8004280:	b8 60 20 00 	mv r4,r3                                       
 8004284:	4c e6 00 03 	bge r7,r6,8004290 <rtems_aio_move_to_work+0x4c>
 8004288:	5c 65 ff fc 	bne r3,r5,8004278 <rtems_aio_move_to_work+0x34><== ALWAYS TAKEN
 800428c:	b8 a0 18 00 	mv r3,r5                                       <== NOT EXECUTED
 8004290:	28 61 00 04 	lw r1,(r3+4)                                   
 8004294:	f8 00 0a 33 	calli 8006b60 <_Chain_Insert>                  
    node = rtems_chain_next (node);                                   
    temp = (rtems_aio_request_chain *) node;                          
  }                                                                   
                                                                      
  rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd);
}                                                                     
 8004298:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800429c:	37 9c 00 04 	addi sp,sp,4                                   
 80042a0:	c3 a0 00 00 	ret                                            
                                                                      

080045c8 <rtems_aio_remove_fd>: * Output parameters: * NONE */ void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain) {
 80045c8:	37 9c ff e8 	addi sp,sp,-24                                 
 80045cc:	5b 8b 00 18 	sw (sp+24),r11                                 
 80045d0:	5b 8c 00 14 	sw (sp+20),r12                                 
 80045d4:	5b 8d 00 10 	sw (sp+16),r13                                 
 80045d8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80045dc:	5b 8f 00 08 	sw (sp+8),r15                                  
 80045e0:	5b 9d 00 04 	sw (sp+4),ra                                   
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80045e4:	28 2b 00 08 	lw r11,(r1+8)                                  
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  Chain_Control *the_chain,                                           
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Tail(the_chain));                        
 80045e8:	34 2d 00 0c 	addi r13,r1,12                                 
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
 80045ec:	34 0f 00 8c 	mvi r15,140                                    
      req->aiocbp->return_value = -1;                                 
 80045f0:	34 0e ff ff 	mvi r14,-1                                     
  rtems_chain_control *chain;                                         
  rtems_chain_node *node;                                             
  chain = &r_chain->perfd;                                            
  node = rtems_chain_first (chain);                                   
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
 80045f4:	5d 6d 00 03 	bne r11,r13,8004600 <rtems_aio_remove_fd+0x38> <== ALWAYS TAKEN
 80045f8:	e0 00 00 0b 	bi 8004624 <rtems_aio_remove_fd+0x5c>          <== NOT EXECUTED
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
 80045fc:	b9 80 58 00 	mv r11,r12                                     
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 8004600:	b9 60 08 00 	mv r1,r11                                      
 8004604:	f8 00 09 3c 	calli 8006af4 <_Chain_Extract>                 
      req->aiocbp->error_code = ECANCELED;                            
 8004608:	29 62 00 14 	lw r2,(r11+20)                                 
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 800460c:	29 6c 00 00 	lw r12,(r11+0)                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
      req->aiocbp->return_value = -1;                                 
      free (req);                                                     
 8004610:	b9 60 08 00 	mv r1,r11                                      
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
 8004614:	58 4f 00 2c 	sw (r2+44),r15                                 
      req->aiocbp->return_value = -1;                                 
 8004618:	58 4e 00 30 	sw (r2+48),r14                                 
      free (req);                                                     
 800461c:	fb ff f7 43 	calli 8002328 <free>                           
  rtems_chain_control *chain;                                         
  rtems_chain_node *node;                                             
  chain = &r_chain->perfd;                                            
  node = rtems_chain_first (chain);                                   
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
 8004620:	5d 8d ff f7 	bne r12,r13,80045fc <rtems_aio_remove_fd+0x34> 
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
      req->aiocbp->return_value = -1;                                 
      free (req);                                                     
    }                                                                 
}                                                                     
 8004624:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004628:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800462c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004630:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004634:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8004638:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800463c:	37 9c 00 18 	addi sp,sp,24                                  
 8004640:	c3 a0 00 00 	ret                                            
                                                                      

08004644 <rtems_aio_remove_req>: * AIO_NOTCANCELED - if request was not canceled * AIO_CANCELED - if request was canceled */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) {
 8004644:	37 9c ff f8 	addi sp,sp,-8                                  
 8004648:	5b 8b 00 08 	sw (sp+8),r11                                  
 800464c:	5b 9d 00 04 	sw (sp+4),ra                                   
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 8004650:	28 23 00 00 	lw r3,(r1+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8004654:	34 25 00 04 	addi r5,r1,4                                   
 */                                                                   
                                                                      
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{                                                                     
  if (rtems_chain_is_empty (chain))                                   
    return AIO_ALLDONE;                                               
 8004658:	34 01 00 02 	mvi r1,2                                       
 *         AIO_CANCELED      - if request was canceled                
 */                                                                   
                                                                      
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{                                                                     
  if (rtems_chain_is_empty (chain))                                   
 800465c:	44 65 00 0b 	be r3,r5,8004688 <rtems_aio_remove_req+0x44>   
  rtems_chain_node *node = rtems_chain_first (chain);                 
  rtems_aio_request *current;                                         
                                                                      
  current = (rtems_aio_request *) node;                               
                                                                      
  while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
 8004660:	28 61 00 14 	lw r1,(r3+20)                                  
    return AIO_ALLDONE;                                               
                                                                      
  rtems_chain_node *node = rtems_chain_first (chain);                 
  rtems_aio_request *current;                                         
                                                                      
  current = (rtems_aio_request *) node;                               
 8004664:	b8 60 58 00 	mv r11,r3                                      
                                                                      
  while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
 8004668:	5c 22 00 05 	bne r1,r2,800467c <rtems_aio_remove_req+0x38>  <== NEVER TAKEN
 800466c:	e0 00 00 0b 	bi 8004698 <rtems_aio_remove_req+0x54>         
 8004670:	28 64 00 14 	lw r4,(r3+20)                                  <== NOT EXECUTED
    node = rtems_chain_next (node);                                   
    current = (rtems_aio_request *) node;                             
 8004674:	b8 60 58 00 	mv r11,r3                                      <== NOT EXECUTED
  rtems_chain_node *node = rtems_chain_first (chain);                 
  rtems_aio_request *current;                                         
                                                                      
  current = (rtems_aio_request *) node;                               
                                                                      
  while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
 8004678:	44 82 00 08 	be r4,r2,8004698 <rtems_aio_remove_req+0x54>   <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 800467c:	28 63 00 00 	lw r3,(r3+0)                                   <== NOT EXECUTED
  rtems_chain_node *node = rtems_chain_first (chain);                 
  rtems_aio_request *current;                                         
                                                                      
  current = (rtems_aio_request *) node;                               
                                                                      
  while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
 8004680:	5c 65 ff fc 	bne r3,r5,8004670 <rtems_aio_remove_req+0x2c>  <== NOT EXECUTED
    node = rtems_chain_next (node);                                   
    current = (rtems_aio_request *) node;                             
  }                                                                   
                                                                      
  if (rtems_chain_is_tail (chain, node))                              
    return AIO_NOTCANCELED;                                           
 8004684:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
      current->aiocbp->return_value = -1;                             
      free (current);                                                 
    }                                                                 
                                                                      
  return AIO_CANCELED;                                                
}                                                                     
 8004688:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800468c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004690:	37 9c 00 08 	addi sp,sp,8                                   
 8004694:	c3 a0 00 00 	ret                                            
  rtems_chain_node *node = rtems_chain_first (chain);                 
  rtems_aio_request *current;                                         
                                                                      
  current = (rtems_aio_request *) node;                               
                                                                      
  while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
 8004698:	b9 60 08 00 	mv r1,r11                                      
 800469c:	f8 00 09 16 	calli 8006af4 <_Chain_Extract>                 
  if (rtems_chain_is_tail (chain, node))                              
    return AIO_NOTCANCELED;                                           
  else                                                                
    {                                                                 
      rtems_chain_extract (node);                                     
      current->aiocbp->error_code = ECANCELED;                        
 80046a0:	29 61 00 14 	lw r1,(r11+20)                                 
 80046a4:	34 02 00 8c 	mvi r2,140                                     
 80046a8:	58 22 00 2c 	sw (r1+44),r2                                  
      current->aiocbp->return_value = -1;                             
 80046ac:	34 02 ff ff 	mvi r2,-1                                      
 80046b0:	58 22 00 30 	sw (r1+48),r2                                  
      free (current);                                                 
 80046b4:	b9 60 08 00 	mv r1,r11                                      
 80046b8:	fb ff f7 1c 	calli 8002328 <free>                           
    }                                                                 
                                                                      
  return AIO_CANCELED;                                                
 80046bc:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 80046c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80046c4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80046c8:	37 9c 00 08 	addi sp,sp,8                                   
 80046cc:	c3 a0 00 00 	ret                                            
                                                                      

0800c050 <rtems_assoc_local_by_remote_bitfield>: uint32_t rtems_assoc_local_by_remote_bitfield( const rtems_assoc_t *ap, uint32_t remote_value ) {
 800c050:	37 9c ff e8 	addi sp,sp,-24                                 
 800c054:	5b 8b 00 18 	sw (sp+24),r11                                 
 800c058:	5b 8c 00 14 	sw (sp+20),r12                                 
 800c05c:	5b 8d 00 10 	sw (sp+16),r13                                 
 800c060:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800c064:	5b 8f 00 08 	sw (sp+8),r15                                  
 800c068:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c06c:	34 0c 00 20 	mvi r12,32                                     
 800c070:	b8 20 78 00 	mv r15,r1                                      
 800c074:	b8 40 68 00 	mv r13,r2                                      
  uint32_t   b;                                                       
  uint32_t   local_value = 0;                                         
 800c078:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  for (b = 1; b; b <<= 1) {                                           
 800c07c:	34 0b 00 01 	mvi r11,1                                      
 800c080:	e0 00 00 03 	bi 800c08c <rtems_assoc_local_by_remote_bitfield+0x3c>
 800c084:	b5 6b 58 00 	add r11,r11,r11                                
 800c088:	45 80 00 0a 	be r12,r0,800c0b0 <rtems_assoc_local_by_remote_bitfield+0x60>
    if (b & remote_value)                                             
 800c08c:	a1 6d 18 00 	and r3,r11,r13                                 
)                                                                     
{                                                                     
  uint32_t   b;                                                       
  uint32_t   local_value = 0;                                         
                                                                      
  for (b = 1; b; b <<= 1) {                                           
 800c090:	35 8c ff ff 	addi r12,r12,-1                                
    if (b & remote_value)                                             
 800c094:	44 60 ff fc 	be r3,r0,800c084 <rtems_assoc_local_by_remote_bitfield+0x34>
      local_value |= rtems_assoc_local_by_remote(ap, b);              
 800c098:	b9 60 10 00 	mv r2,r11                                      
 800c09c:	b9 e0 08 00 	mv r1,r15                                      
 800c0a0:	f8 00 00 0d 	calli 800c0d4 <rtems_assoc_local_by_remote>    
 800c0a4:	b9 c1 70 00 	or r14,r14,r1                                  
)                                                                     
{                                                                     
  uint32_t   b;                                                       
  uint32_t   local_value = 0;                                         
                                                                      
  for (b = 1; b; b <<= 1) {                                           
 800c0a8:	b5 6b 58 00 	add r11,r11,r11                                
 800c0ac:	5d 80 ff f8 	bne r12,r0,800c08c <rtems_assoc_local_by_remote_bitfield+0x3c><== ALWAYS TAKEN
    if (b & remote_value)                                             
      local_value |= rtems_assoc_local_by_remote(ap, b);              
  }                                                                   
                                                                      
  return local_value;                                                 
}                                                                     
 800c0b0:	b9 c0 08 00 	mv r1,r14                                      
 800c0b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c0b8:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800c0bc:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800c0c0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800c0c4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800c0c8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800c0cc:	37 9c 00 18 	addi sp,sp,24                                  
 800c0d0:	c3 a0 00 00 	ret                                            
                                                                      

0800f764 <rtems_assoc_ptr_by_local>: const rtems_assoc_t *rtems_assoc_ptr_by_local( const rtems_assoc_t *ap, uint32_t local_value ) {
 800f764:	37 9c ff f4 	addi sp,sp,-12                                 
 800f768:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800f76c:	5b 8c 00 08 	sw (sp+8),r12                                  
 800f770:	5b 9d 00 04 	sw (sp+4),ra                                   
 800f774:	b8 20 58 00 	mv r11,r1                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 800f778:	28 21 00 00 	lw r1,(r1+0)                                   
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_local(                        
  const rtems_assoc_t *ap,                                            
  uint32_t             local_value                                    
)                                                                     
{                                                                     
 800f77c:	b8 40 60 00 	mv r12,r2                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 800f780:	44 20 00 1f 	be r1,r0,800f7fc <rtems_assoc_ptr_by_local+0x98><== NEVER TAKEN
 800f784:	78 02 08 02 	mvhi r2,0x802                                  
 800f788:	38 42 85 50 	ori r2,r2,0x8550                               
 800f78c:	f8 00 16 f7 	calli 8015368 <strcmp>                         
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;                                
 800f790:	34 02 00 00 	mvi r2,0                                       
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 800f794:	5c 20 00 0b 	bne r1,r0,800f7c0 <rtems_assoc_ptr_by_local+0x5c>
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 800f798:	29 63 00 0c 	lw r3,(r11+12)                                 
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
 800f79c:	35 61 00 0c 	addi r1,r11,12                                 
                                                                      
  for ( ; ap->name; ap++)                                             
 800f7a0:	44 62 00 0a 	be r3,r2,800f7c8 <rtems_assoc_ptr_by_local+0x64><== NEVER TAKEN
 800f7a4:	b9 60 10 00 	mv r2,r11                                      
 800f7a8:	b8 20 58 00 	mv r11,r1                                      
    if (ap->local_value == local_value)                               
 800f7ac:	29 61 00 04 	lw r1,(r11+4)                                  
 800f7b0:	44 2c 00 06 	be r1,r12,800f7c8 <rtems_assoc_ptr_by_local+0x64><== NEVER TAKEN
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 800f7b4:	35 6b 00 0c 	addi r11,r11,12                                
 800f7b8:	29 61 00 00 	lw r1,(r11+0)                                  
 800f7bc:	44 20 00 09 	be r1,r0,800f7e0 <rtems_assoc_ptr_by_local+0x7c>
    if (ap->local_value == local_value)                               
 800f7c0:	29 61 00 04 	lw r1,(r11+4)                                  
 800f7c4:	5c 2c ff fc 	bne r1,r12,800f7b4 <rtems_assoc_ptr_by_local+0x50>
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 800f7c8:	b9 60 08 00 	mv r1,r11                                      
 800f7cc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800f7d0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800f7d4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800f7d8:	37 9c 00 0c 	addi sp,sp,12                                  
 800f7dc:	c3 a0 00 00 	ret                                            
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 800f7e0:	b8 40 58 00 	mv r11,r2                                      
    if (ap->local_value == local_value)                               
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 800f7e4:	b9 60 08 00 	mv r1,r11                                      
 800f7e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800f7ec:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800f7f0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800f7f4:	37 9c 00 0c 	addi sp,sp,12                                  
 800f7f8:	c3 a0 00 00 	ret                                            
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;                                
 800f7fc:	34 0b 00 00 	mvi r11,0                                      
  for ( ; ap->name; ap++)                                             
    if (ap->local_value == local_value)                               
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 800f800:	b9 60 08 00 	mv r1,r11                                      
 800f804:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800f808:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800f80c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800f810:	37 9c 00 0c 	addi sp,sp,12                                  
 800f814:	c3 a0 00 00 	ret                                            
                                                                      

08002050 <rtems_assoc_ptr_by_name>: const rtems_assoc_t *rtems_assoc_ptr_by_name( const rtems_assoc_t *ap, const char *name ) {
 8002050:	37 9c ff ec 	addi sp,sp,-20                                 
 8002054:	5b 8b 00 14 	sw (sp+20),r11                                 
 8002058:	5b 8c 00 10 	sw (sp+16),r12                                 
 800205c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8002060:	5b 8e 00 08 	sw (sp+8),r14                                  
 8002064:	5b 9d 00 04 	sw (sp+4),ra                                   
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 8002068:	28 2b 00 00 	lw r11,(r1+0)                                  
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
  const rtems_assoc_t *ap,                                            
  const char          *name                                           
)                                                                     
{                                                                     
 800206c:	b8 20 60 00 	mv r12,r1                                      
 8002070:	b8 40 68 00 	mv r13,r2                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 8002074:	45 60 00 28 	be r11,r0,8002114 <rtems_assoc_ptr_by_name+0xc4>
 8002078:	78 02 08 01 	mvhi r2,0x801                                  
 800207c:	b9 60 08 00 	mv r1,r11                                      
 8002080:	38 42 48 30 	ori r2,r2,0x4830                               
 8002084:	f8 00 33 0a 	calli 800ecac <strcmp>                         
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
  const rtems_assoc_t *ap,                                            
  const char          *name                                           
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
 8002088:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 800208c:	5c 20 00 0d 	bne r1,r0,80020c0 <rtems_assoc_ptr_by_name+0x70>
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 8002090:	29 8b 00 0c 	lw r11,(r12+12)                                
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
 8002094:	35 81 00 0c 	addi r1,r12,12                                 
                                                                      
  for ( ; ap->name; ap++)                                             
 8002098:	45 6e 00 0e 	be r11,r14,80020d0 <rtems_assoc_ptr_by_name+0x80><== NEVER TAKEN
 800209c:	b9 80 70 00 	mv r14,r12                                     
    if (strcmp(ap->name, name) == 0)                                  
 80020a0:	b9 a0 10 00 	mv r2,r13                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 80020a4:	b8 20 60 00 	mv r12,r1                                      
    if (strcmp(ap->name, name) == 0)                                  
 80020a8:	b9 60 08 00 	mv r1,r11                                      
 80020ac:	f8 00 33 00 	calli 800ecac <strcmp>                         
 80020b0:	44 20 00 08 	be r1,r0,80020d0 <rtems_assoc_ptr_by_name+0x80><== NEVER TAKEN
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 80020b4:	35 8c 00 0c 	addi r12,r12,12                                
 80020b8:	29 8b 00 00 	lw r11,(r12+0)                                 
 80020bc:	45 60 00 0d 	be r11,r0,80020f0 <rtems_assoc_ptr_by_name+0xa0>
    if (strcmp(ap->name, name) == 0)                                  
 80020c0:	b9 60 08 00 	mv r1,r11                                      
 80020c4:	b9 a0 10 00 	mv r2,r13                                      
 80020c8:	f8 00 32 f9 	calli 800ecac <strcmp>                         
 80020cc:	5c 20 ff fa 	bne r1,r0,80020b4 <rtems_assoc_ptr_by_name+0x64>
	return ap;                                                           
                                                                      
  return default_ap;                                                  
}                                                                     
 80020d0:	b9 80 08 00 	mv r1,r12                                      
 80020d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80020d8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80020dc:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80020e0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80020e4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80020e8:	37 9c 00 14 	addi sp,sp,20                                  
 80020ec:	c3 a0 00 00 	ret                                            
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 80020f0:	b9 c0 60 00 	mv r12,r14                                     
    if (strcmp(ap->name, name) == 0)                                  
	return ap;                                                           
                                                                      
  return default_ap;                                                  
}                                                                     
 80020f4:	b9 80 08 00 	mv r1,r12                                      
 80020f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80020fc:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8002100:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8002104:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8002108:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800210c:	37 9c 00 14 	addi sp,sp,20                                  
 8002110:	c3 a0 00 00 	ret                                            
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
  const rtems_assoc_t *ap,                                            
  const char          *name                                           
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
 8002114:	34 0c 00 00 	mvi r12,0                                      
  for ( ; ap->name; ap++)                                             
    if (strcmp(ap->name, name) == 0)                                  
	return ap;                                                           
                                                                      
  return default_ap;                                                  
}                                                                     
 8002118:	b9 80 08 00 	mv r1,r12                                      
 800211c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002120:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8002124:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8002128:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800212c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8002130:	37 9c 00 14 	addi sp,sp,20                                  
 8002134:	c3 a0 00 00 	ret                                            
                                                                      

0800c0fc <rtems_assoc_ptr_by_remote>: const rtems_assoc_t *rtems_assoc_ptr_by_remote( const rtems_assoc_t *ap, uint32_t remote_value ) {
 800c0fc:	37 9c ff f4 	addi sp,sp,-12                                 
 800c100:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800c104:	5b 8c 00 08 	sw (sp+8),r12                                  
 800c108:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c10c:	b8 20 58 00 	mv r11,r1                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 800c110:	28 21 00 00 	lw r1,(r1+0)                                   
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_remote(                       
  const rtems_assoc_t *ap,                                            
  uint32_t       remote_value                                         
)                                                                     
{                                                                     
 800c114:	b8 40 60 00 	mv r12,r2                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 800c118:	44 20 00 1f 	be r1,r0,800c194 <rtems_assoc_ptr_by_remote+0x98>
 800c11c:	78 02 08 01 	mvhi r2,0x801                                  
 800c120:	38 42 3a dc 	ori r2,r2,0x3adc                               
 800c124:	f8 00 07 40 	calli 800de24 <strcmp>                         
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;                                
 800c128:	34 02 00 00 	mvi r2,0                                       
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 800c12c:	5c 20 00 0b 	bne r1,r0,800c158 <rtems_assoc_ptr_by_remote+0x5c>
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 800c130:	29 63 00 0c 	lw r3,(r11+12)                                 
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
 800c134:	35 61 00 0c 	addi r1,r11,12                                 
                                                                      
  for ( ; ap->name; ap++)                                             
 800c138:	44 62 00 0a 	be r3,r2,800c160 <rtems_assoc_ptr_by_remote+0x64><== NEVER TAKEN
 800c13c:	b9 60 10 00 	mv r2,r11                                      
 800c140:	b8 20 58 00 	mv r11,r1                                      
    if (ap->remote_value == remote_value)                             
 800c144:	29 61 00 08 	lw r1,(r11+8)                                  
 800c148:	44 2c 00 06 	be r1,r12,800c160 <rtems_assoc_ptr_by_remote+0x64><== NEVER TAKEN
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 800c14c:	35 6b 00 0c 	addi r11,r11,12                                
 800c150:	29 61 00 00 	lw r1,(r11+0)                                  
 800c154:	44 20 00 09 	be r1,r0,800c178 <rtems_assoc_ptr_by_remote+0x7c>
    if (ap->remote_value == remote_value)                             
 800c158:	29 61 00 08 	lw r1,(r11+8)                                  
 800c15c:	5c 2c ff fc 	bne r1,r12,800c14c <rtems_assoc_ptr_by_remote+0x50>
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 800c160:	b9 60 08 00 	mv r1,r11                                      
 800c164:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c168:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800c16c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800c170:	37 9c 00 0c 	addi sp,sp,12                                  
 800c174:	c3 a0 00 00 	ret                                            
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 800c178:	b8 40 58 00 	mv r11,r2                                      
    if (ap->remote_value == remote_value)                             
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 800c17c:	b9 60 08 00 	mv r1,r11                                      
 800c180:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c184:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800c188:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800c18c:	37 9c 00 0c 	addi sp,sp,12                                  
 800c190:	c3 a0 00 00 	ret                                            
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;                                
 800c194:	34 0b 00 00 	mvi r11,0                                      
  for ( ; ap->name; ap++)                                             
    if (ap->remote_value == remote_value)                             
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 800c198:	b9 60 08 00 	mv r1,r11                                      
 800c19c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c1a0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800c1a4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800c1a8:	37 9c 00 0c 	addi sp,sp,12                                  
 800c1ac:	c3 a0 00 00 	ret                                            
                                                                      

080021ec <rtems_assoc_remote_by_local_bitfield>: uint32_t rtems_assoc_remote_by_local_bitfield( const rtems_assoc_t *ap, uint32_t local_value ) {
 80021ec:	37 9c ff e8 	addi sp,sp,-24                                 
 80021f0:	5b 8b 00 18 	sw (sp+24),r11                                 
 80021f4:	5b 8c 00 14 	sw (sp+20),r12                                 
 80021f8:	5b 8d 00 10 	sw (sp+16),r13                                 
 80021fc:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8002200:	5b 8f 00 08 	sw (sp+8),r15                                  
 8002204:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002208:	34 0c 00 20 	mvi r12,32                                     
 800220c:	b8 20 78 00 	mv r15,r1                                      
 8002210:	b8 40 68 00 	mv r13,r2                                      
  uint32_t   b;                                                       
  uint32_t   remote_value = 0;                                        
 8002214:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  for (b = 1; b; b <<= 1)                                             
 8002218:	34 0b 00 01 	mvi r11,1                                      
 800221c:	e0 00 00 03 	bi 8002228 <rtems_assoc_remote_by_local_bitfield+0x3c>
 8002220:	b5 6b 58 00 	add r11,r11,r11                                
 8002224:	45 80 00 0a 	be r12,r0,800224c <rtems_assoc_remote_by_local_bitfield+0x60>
    if (b & local_value)                                              
 8002228:	a1 6d 18 00 	and r3,r11,r13                                 
)                                                                     
{                                                                     
  uint32_t   b;                                                       
  uint32_t   remote_value = 0;                                        
                                                                      
  for (b = 1; b; b <<= 1)                                             
 800222c:	35 8c ff ff 	addi r12,r12,-1                                
    if (b & local_value)                                              
 8002230:	44 60 ff fc 	be r3,r0,8002220 <rtems_assoc_remote_by_local_bitfield+0x34>
      remote_value |= rtems_assoc_remote_by_local(ap, b);             
 8002234:	b9 60 10 00 	mv r2,r11                                      
 8002238:	b9 e0 08 00 	mv r1,r15                                      
 800223c:	f8 00 00 0d 	calli 8002270 <rtems_assoc_remote_by_local>    
 8002240:	b9 c1 70 00 	or r14,r14,r1                                  
)                                                                     
{                                                                     
  uint32_t   b;                                                       
  uint32_t   remote_value = 0;                                        
                                                                      
  for (b = 1; b; b <<= 1)                                             
 8002244:	b5 6b 58 00 	add r11,r11,r11                                
 8002248:	5d 80 ff f8 	bne r12,r0,8002228 <rtems_assoc_remote_by_local_bitfield+0x3c><== ALWAYS TAKEN
    if (b & local_value)                                              
      remote_value |= rtems_assoc_remote_by_local(ap, b);             
                                                                      
  return remote_value;                                                
}                                                                     
 800224c:	b9 c0 08 00 	mv r1,r14                                      
 8002250:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002254:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8002258:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800225c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8002260:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8002264:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8002268:	37 9c 00 18 	addi sp,sp,24                                  
 800226c:	c3 a0 00 00 	ret                                            
                                                                      

08000da4 <rtems_bsp_cmdline_get_param>: const char *rtems_bsp_cmdline_get_param( const char *name, char *value, size_t length ) {
 8000da4:	37 9c ff f0 	addi sp,sp,-16                                 
 8000da8:	5b 8b 00 08 	sw (sp+8),r11                                  
 8000dac:	5b 9d 00 04 	sw (sp+4),ra                                   
  const char *p;                                                      
                                                                      
  if ( !name )                                                        
    return NULL;                                                      
 8000db0:	34 0b 00 00 	mvi r11,0                                      
  size_t      length                                                  
)                                                                     
{                                                                     
  const char *p;                                                      
                                                                      
  if ( !name )                                                        
 8000db4:	5c 20 00 06 	bne r1,r0,8000dcc <rtems_bsp_cmdline_get_param+0x28>
    return NULL;                                                      
                                                                      
  copy_string( p, value, length );                                    
                                                                      
  return value;                                                       
}                                                                     
 8000db8:	b9 60 08 00 	mv r1,r11                                      
 8000dbc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000dc0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8000dc4:	37 9c 00 10 	addi sp,sp,16                                  
 8000dc8:	c3 a0 00 00 	ret                                            
  const char *p;                                                      
                                                                      
  if ( !name )                                                        
    return NULL;                                                      
                                                                      
  if ( !value )                                                       
 8000dcc:	44 40 ff fb 	be r2,r0,8000db8 <rtems_bsp_cmdline_get_param+0x14>
    return NULL;                                                      
                                                                      
  if ( !length )                                                      
 8000dd0:	44 60 ff fa 	be r3,r0,8000db8 <rtems_bsp_cmdline_get_param+0x14>
    return NULL;                                                      
                                                                      
  value[0] = '\0';                                                    
 8000dd4:	30 40 00 00 	sb (r2+0),r0                                   
                                                                      
  p = rtems_bsp_cmdline_get_param_raw( name );                        
 8000dd8:	5b 82 00 10 	sw (sp+16),r2                                  
 8000ddc:	5b 83 00 0c 	sw (sp+12),r3                                  
 8000de0:	f8 00 00 20 	calli 8000e60 <rtems_bsp_cmdline_get_param_raw>
                                                                      
  if ( !p )                                                           
 8000de4:	2b 82 00 10 	lw r2,(sp+16)                                  
 8000de8:	2b 83 00 0c 	lw r3,(sp+12)                                  
 8000dec:	44 20 ff f3 	be r1,r0,8000db8 <rtems_bsp_cmdline_get_param+0x14>
  int         i;                                                      
  int         quotes;                                                 
  const char *p = start;                                              
                                                                      
  quotes=0;                                                           
  for (i=0 ; *p && i<length-1; ) {                                    
 8000df0:	40 25 00 00 	lbu r5,(r1+0)                                  
 8000df4:	b8 40 58 00 	mv r11,r2                                      
 8000df8:	44 a0 ff f0 	be r5,r0,8000db8 <rtems_bsp_cmdline_get_param+0x14><== NEVER TAKEN
 8000dfc:	34 63 ff ff 	addi r3,r3,-1                                  
 8000e00:	44 60 ff ee 	be r3,r0,8000db8 <rtems_bsp_cmdline_get_param+0x14><== NEVER TAKEN
 8000e04:	34 07 00 00 	mvi r7,0                                       
 8000e08:	34 04 00 00 	mvi r4,0                                       
 8000e0c:	34 06 00 00 	mvi r6,0                                       
    if ( *p == '\"' ) {                                               
 8000e10:	34 09 00 22 	mvi r9,34                                      
      quotes++;                                                       
    } else if ( ((quotes % 2) == 0) && *p == ' ' )                    
 8000e14:	34 0a 00 20 	mvi r10,32                                     
 8000e18:	20 c8 00 01 	andi r8,r6,0x1                                 
  int         quotes;                                                 
  const char *p = start;                                              
                                                                      
  quotes=0;                                                           
  for (i=0 ; *p && i<length-1; ) {                                    
    if ( *p == '\"' ) {                                               
 8000e1c:	44 a9 00 0f 	be r5,r9,8000e58 <rtems_bsp_cmdline_get_param+0xb4>
      quotes++;                                                       
    } else if ( ((quotes % 2) == 0) && *p == ' ' )                    
 8000e20:	5d 00 00 02 	bne r8,r0,8000e28 <rtems_bsp_cmdline_get_param+0x84>
 8000e24:	44 aa 00 0b 	be r5,r10,8000e50 <rtems_bsp_cmdline_get_param+0xac>
      break;                                                          
    value[i++] = *p++;                                                
 8000e28:	34 84 00 01 	addi r4,r4,1                                   
 8000e2c:	b4 47 38 00 	add r7,r2,r7                                   
 8000e30:	30 e5 00 00 	sb (r7+0),r5                                   
    value[i] = '\0';                                                  
  }                                                                   
                                                                      
}                                                                     
                                                                      
const char *rtems_bsp_cmdline_get_param(                              
 8000e34:	b4 44 28 00 	add r5,r2,r4                                   
    if ( *p == '\"' ) {                                               
      quotes++;                                                       
    } else if ( ((quotes % 2) == 0) && *p == ' ' )                    
      break;                                                          
    value[i++] = *p++;                                                
    value[i] = '\0';                                                  
 8000e38:	30 a0 00 00 	sb (r5+0),r0                                   
  }                                                                   
                                                                      
}                                                                     
                                                                      
const char *rtems_bsp_cmdline_get_param(                              
 8000e3c:	b4 24 28 00 	add r5,r1,r4                                   
  int         i;                                                      
  int         quotes;                                                 
  const char *p = start;                                              
                                                                      
  quotes=0;                                                           
  for (i=0 ; *p && i<length-1; ) {                                    
 8000e40:	40 a5 00 00 	lbu r5,(r5+0)                                  
 8000e44:	b8 80 38 00 	mv r7,r4                                       
 8000e48:	44 a0 00 02 	be r5,r0,8000e50 <rtems_bsp_cmdline_get_param+0xac>
 8000e4c:	54 64 ff f3 	bgu r3,r4,8000e18 <rtems_bsp_cmdline_get_param+0x74>
 8000e50:	b8 40 58 00 	mv r11,r2                                      
 8000e54:	e3 ff ff d9 	bi 8000db8 <rtems_bsp_cmdline_get_param+0x14>  
    if ( *p == '\"' ) {                                               
      quotes++;                                                       
 8000e58:	34 c6 00 01 	addi r6,r6,1                                   
 8000e5c:	e3 ff ff f3 	bi 8000e28 <rtems_bsp_cmdline_get_param+0x84>  
                                                                      

08003c80 <rtems_chain_get_with_wait>: rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) {
 8003c80:	37 9c ff e4 	addi sp,sp,-28                                 
 8003c84:	5b 8b 00 18 	sw (sp+24),r11                                 
 8003c88:	5b 8c 00 14 	sw (sp+20),r12                                 
 8003c8c:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003c90:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003c94:	5b 8f 00 08 	sw (sp+8),r15                                  
 8003c98:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003c9c:	b8 20 70 00 	mv r14,r1                                      
 8003ca0:	b8 40 68 00 	mv r13,r2                                      
 8003ca4:	b8 60 60 00 	mv r12,r3                                      
 8003ca8:	b8 80 78 00 	mv r15,r4                                      
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
 8003cac:	b9 c0 08 00 	mv r1,r14                                      
 8003cb0:	f8 00 01 ad 	calli 8004364 <_Chain_Get>                     
 8003cb4:	b8 20 58 00 	mv r11,r1                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
 8003cb8:	34 02 00 00 	mvi r2,0                                       
 8003cbc:	b9 a0 08 00 	mv r1,r13                                      
 8003cc0:	b9 80 18 00 	mv r3,r12                                      
 8003cc4:	37 84 00 1c 	addi r4,sp,28                                  
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
 8003cc8:	5d 60 00 0e 	bne r11,r0,8003d00 <rtems_chain_get_with_wait+0x80>
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
 8003ccc:	fb ff fd 9e 	calli 8003344 <rtems_event_receive>            
 8003cd0:	b8 20 28 00 	mv r5,r1                                       
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
 8003cd4:	44 2b ff f6 	be r1,r11,8003cac <rtems_chain_get_with_wait+0x2c><== NEVER TAKEN
  }                                                                   
                                                                      
  *node_ptr = node;                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8003cd8:	b8 a0 08 00 	mv r1,r5                                       
      timeout,                                                        
      &out                                                            
    );                                                                
  }                                                                   
                                                                      
  *node_ptr = node;                                                   
 8003cdc:	59 eb 00 00 	sw (r15+0),r11                                 
                                                                      
  return sc;                                                          
}                                                                     
 8003ce0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003ce4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003ce8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003cec:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003cf0:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003cf4:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003cf8:	37 9c 00 1c 	addi sp,sp,28                                  
 8003cfc:	c3 a0 00 00 	ret                                            
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
 8003d00:	34 05 00 00 	mvi r5,0                                       
 8003d04:	e3 ff ff f5 	bi 8003cd8 <rtems_chain_get_with_wait+0x58>    
                                                                      

080103c0 <rtems_clock_set_nanoseconds_extension>: * error code - if unsuccessful */ rtems_status_code rtems_clock_set_nanoseconds_extension( rtems_nanoseconds_extension_routine routine ) {
 80103c0:	b8 20 18 00 	mv r3,r1                                       
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
 80103c4:	34 01 00 09 	mvi r1,9                                       
 */                                                                   
rtems_status_code rtems_clock_set_nanoseconds_extension(              
  rtems_nanoseconds_extension_routine routine                         
)                                                                     
{                                                                     
  if ( !routine )                                                     
 80103c8:	44 60 00 05 	be r3,r0,80103dc <rtems_clock_set_nanoseconds_extension+0x1c><== ALWAYS TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  _Watchdog_Nanoseconds_since_tick_handler = routine;                 
 80103cc:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 80103d0:	38 42 c1 6c 	ori r2,r2,0xc16c                               <== NOT EXECUTED
 80103d4:	58 43 00 00 	sw (r2+0),r3                                   <== NOT EXECUTED
  return RTEMS_SUCCESSFUL;                                            
 80103d8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
}                                                                     
 80103dc:	c3 a0 00 00 	ret                                            
                                                                      

08001944 <rtems_cpu_usage_report_with_plugin>: void rtems_cpu_usage_report_with_plugin( void *context, rtems_printk_plugin_t print ) {
 8001944:	37 9c ff 74 	addi sp,sp,-140                                
 8001948:	5b 8b 00 44 	sw (sp+68),r11                                 
 800194c:	5b 8c 00 40 	sw (sp+64),r12                                 
 8001950:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8001954:	5b 8e 00 38 	sw (sp+56),r14                                 
 8001958:	5b 8f 00 34 	sw (sp+52),r15                                 
 800195c:	5b 90 00 30 	sw (sp+48),r16                                 
 8001960:	5b 91 00 2c 	sw (sp+44),r17                                 
 8001964:	5b 92 00 28 	sw (sp+40),r18                                 
 8001968:	5b 93 00 24 	sw (sp+36),r19                                 
 800196c:	5b 94 00 20 	sw (sp+32),r20                                 
 8001970:	5b 95 00 1c 	sw (sp+28),r21                                 
 8001974:	5b 96 00 18 	sw (sp+24),r22                                 
 8001978:	5b 97 00 14 	sw (sp+20),r23                                 
 800197c:	5b 98 00 10 	sw (sp+16),r24                                 
 8001980:	5b 99 00 0c 	sw (sp+12),r25                                 
 8001984:	5b 9b 00 08 	sw (sp+8),fp                                   
 8001988:	5b 9d 00 04 	sw (sp+4),ra                                   
 800198c:	b8 40 88 00 	mv r17,r2                                      
 8001990:	b8 20 98 00 	mv r19,r1                                      
    Timestamp_Control  uptime, total, ran, uptime_at_last_reset;      
  #else                                                               
    uint32_t           total_units = 0;                               
  #endif                                                              
                                                                      
  if ( !print )                                                       
 8001994:	44 40 00 5e 	be r2,r0,8001b0c <rtems_cpu_usage_report_with_plugin+0x1c8><== NEVER TAKEN
   *  the number of "ticks" we gave credit for to give the user a rough
   *  guideline as to what each number means proportionally.          
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Set_to_zero( &total );                                 
    uptime_at_last_reset = CPU_usage_Uptime_at_last_reset;            
 8001998:	78 02 08 02 	mvhi r2,0x802                                  
 800199c:	38 42 32 60 	ori r2,r2,0x3260                               
 80019a0:	28 44 00 00 	lw r4,(r2+0)                                   
 80019a4:	28 43 00 04 	lw r3,(r2+4)                                   
        }                                                             
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  (*print)(                                                           
 80019a8:	78 02 08 01 	mvhi r2,0x801                                  
 80019ac:	38 42 f6 60 	ori r2,r2,0xf660                               
   *  When not using nanosecond CPU usage resolution, we have to count
   *  the number of "ticks" we gave credit for to give the user a rough
   *  guideline as to what each number means proportionally.          
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Set_to_zero( &total );                                 
 80019b0:	5b 80 00 78 	sw (sp+120),r0                                 
 80019b4:	5b 80 00 7c 	sw (sp+124),r0                                 
    uptime_at_last_reset = CPU_usage_Uptime_at_last_reset;            
 80019b8:	5b 84 00 68 	sw (sp+104),r4                                 
 80019bc:	5b 83 00 6c 	sw (sp+108),r3                                 
        }                                                             
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  (*print)(                                                           
 80019c0:	78 19 08 02 	mvhi r25,0x802                                 
        if ( !the_thread )                                            
          continue;                                                   
                                                                      
        rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
                                                                      
        (*print)(                                                     
 80019c4:	78 18 08 01 	mvhi r24,0x801                                 
          /*                                                          
           * If this is the currently executing thread, account for time
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
          if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
 80019c8:	78 12 08 02 	mvhi r18,0x802                                 
                                                                      
          /*                                                          
           * Print the information                                    
           */                                                         
                                                                      
          (*print)( context,                                          
 80019cc:	78 17 08 01 	mvhi r23,0x801                                 
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
          if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
            Timestamp_Control used;                                   
            Timestamp_Control last = _Thread_Time_of_last_context_switch;
 80019d0:	78 16 08 02 	mvhi r22,0x802                                 
        }                                                             
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  (*print)(                                                           
 80019d4:	da 20 00 00 	call r17                                       
 80019d8:	3b 39 2c c8 	ori r25,r25,0x2cc8                             
        the_thread = (Thread_Control *)information->local_table[ i ]; 
                                                                      
        if ( !the_thread )                                            
          continue;                                                   
                                                                      
        rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
 80019dc:	37 94 00 48 	addi r20,sp,72                                 
                                                                      
        (*print)(                                                     
 80019e0:	3b 18 f7 d4 	ori r24,r24,0xf7d4                             
          /*                                                          
           * If this is the currently executing thread, account for time
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
          if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
 80019e4:	3a 52 32 14 	ori r18,r18,0x3214                             
            _Timestamp_Subtract( &last, &uptime, &used );             
            _Timestamp_Add_to( &ran, &used );                         
          } else {                                                    
            _TOD_Get_uptime( &uptime );                               
          }                                                           
          _Timestamp_Subtract( &uptime_at_last_reset, &uptime, &total );
 80019e8:	37 95 00 78 	addi r21,sp,120                                
          _Timestamp_Divide( &ran, &total, &ival, &fval );            
 80019ec:	37 9b 00 88 	addi fp,sp,136                                 
                                                                      
          /*                                                          
           * Print the information                                    
           */                                                         
                                                                      
          (*print)( context,                                          
 80019f0:	3a f7 f7 e8 	ori r23,r23,0xf7e8                             
            Timestamp_Control last = _Thread_Time_of_last_context_switch;
            _TOD_Get_uptime( &uptime );                               
            _Timestamp_Subtract( &last, &uptime, &used );             
            _Timestamp_Add_to( &ran, &used );                         
          } else {                                                    
            _TOD_Get_uptime( &uptime );                               
 80019f4:	37 90 00 80 	addi r16,sp,128                                
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
          if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
            Timestamp_Control used;                                   
            Timestamp_Control last = _Thread_Time_of_last_context_switch;
 80019f8:	3a d6 2d d4 	ori r22,r22,0x2dd4                             
    #if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)             
      if ( !_Objects_Information_table[ api_index ] )                 
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
 80019fc:	2b 21 00 00 	lw r1,(r25+0)                                  
 8001a00:	28 2e 00 04 	lw r14,(r1+4)                                  
    if ( information ) {                                              
 8001a04:	45 c0 00 34 	be r14,r0,8001ad4 <rtems_cpu_usage_report_with_plugin+0x190><== NEVER TAKEN
      for ( i=1 ; i <= information->maximum ; i++ ) {                 
 8001a08:	2d c5 00 10 	lhu r5,(r14+16)                                
 8001a0c:	44 a0 00 32 	be r5,r0,8001ad4 <rtems_cpu_usage_report_with_plugin+0x190>
 8001a10:	34 0d 00 04 	mvi r13,4                                      
 8001a14:	34 0c 00 01 	mvi r12,1                                      
        the_thread = (Thread_Control *)information->local_table[ i ]; 
 8001a18:	29 c6 00 1c 	lw r6,(r14+28)                                 
                                                                      
        if ( !the_thread )                                            
          continue;                                                   
                                                                      
        rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
 8001a1c:	ba 80 18 00 	mv r3,r20                                      
 8001a20:	34 02 00 0d 	mvi r2,13                                      
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( information ) {                                              
      for ( i=1 ; i <= information->maximum ; i++ ) {                 
        the_thread = (Thread_Control *)information->local_table[ i ]; 
 8001a24:	b4 cd 30 00 	add r6,r6,r13                                  
 8001a28:	28 cb 00 00 	lw r11,(r6+0)                                  
 8001a2c:	37 8f 00 70 	addi r15,sp,112                                
                                                                      
        if ( !the_thread )                                            
 8001a30:	45 60 00 26 	be r11,r0,8001ac8 <rtems_cpu_usage_report_with_plugin+0x184><== NEVER TAKEN
          continue;                                                   
                                                                      
        rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
 8001a34:	29 61 00 08 	lw r1,(r11+8)                                  
 8001a38:	f8 00 0a dc 	calli 80045a8 <rtems_object_get_name>          
                                                                      
        (*print)(                                                     
 8001a3c:	29 63 00 08 	lw r3,(r11+8)                                  
 8001a40:	ba 80 20 00 	mv r4,r20                                      
 8001a44:	ba 60 08 00 	mv r1,r19                                      
 8001a48:	bb 00 10 00 	mv r2,r24                                      
 8001a4c:	da 20 00 00 	call r17                                       
          /*                                                          
           * If this is the currently executing thread, account for time
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
          if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
 8001a50:	2a 45 00 0c 	lw r5,(r18+12)                                 
        #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                    
          /*                                                          
           * If this is the currently executing thread, account for time
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
 8001a54:	29 67 00 84 	lw r7,(r11+132)                                
 8001a58:	29 64 00 88 	lw r4,(r11+136)                                
          if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
 8001a5c:	28 a6 00 08 	lw r6,(r5+8)                                   
 8001a60:	29 65 00 08 	lw r5,(r11+8)                                  
        #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                    
          /*                                                          
           * If this is the currently executing thread, account for time
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
 8001a64:	5b 87 00 70 	sw (sp+112),r7                                 
 8001a68:	5b 84 00 74 	sw (sp+116),r4                                 
            Timestamp_Control last = _Thread_Time_of_last_context_switch;
            _TOD_Get_uptime( &uptime );                               
            _Timestamp_Subtract( &last, &uptime, &used );             
            _Timestamp_Add_to( &ran, &used );                         
          } else {                                                    
            _TOD_Get_uptime( &uptime );                               
 8001a6c:	ba 00 08 00 	mv r1,r16                                      
          /*                                                          
           * If this is the currently executing thread, account for time
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
          if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
 8001a70:	44 c5 00 3a 	be r6,r5,8001b58 <rtems_cpu_usage_report_with_plugin+0x214>
            Timestamp_Control last = _Thread_Time_of_last_context_switch;
            _TOD_Get_uptime( &uptime );                               
            _Timestamp_Subtract( &last, &uptime, &used );             
            _Timestamp_Add_to( &ran, &used );                         
          } else {                                                    
            _TOD_Get_uptime( &uptime );                               
 8001a74:	f8 00 10 56 	calli 8005bcc <_TOD_Get_uptime>                
          }                                                           
          _Timestamp_Subtract( &uptime_at_last_reset, &uptime, &total );
 8001a78:	37 81 00 68 	addi r1,sp,104                                 
 8001a7c:	ba 00 10 00 	mv r2,r16                                      
 8001a80:	ba a0 18 00 	mv r3,r21                                      
 8001a84:	f8 00 1d 16 	calli 8008edc <_Timespec_Subtract>             
          _Timestamp_Divide( &ran, &total, &ival, &fval );            
 8001a88:	37 83 00 8c 	addi r3,sp,140                                 
 8001a8c:	bb 60 20 00 	mv r4,fp                                       
 8001a90:	b9 e0 08 00 	mv r1,r15                                      
 8001a94:	ba a0 10 00 	mv r2,r21                                      
 8001a98:	f8 00 1b 4a 	calli 80087c0 <_Timespec_Divide>               
                                                                      
          /*                                                          
           * Print the information                                    
           */                                                         
                                                                      
          (*print)( context,                                          
 8001a9c:	2b 81 00 74 	lw r1,(sp+116)                                 
 8001aa0:	34 02 03 e8 	mvi r2,1000                                    
 8001aa4:	f8 00 71 24 	calli 801df34 <__udivsi3>                      
 8001aa8:	2b 85 00 8c 	lw r5,(sp+140)                                 
 8001aac:	2b 83 00 70 	lw r3,(sp+112)                                 
 8001ab0:	2b 86 00 88 	lw r6,(sp+136)                                 
 8001ab4:	b8 20 20 00 	mv r4,r1                                       
 8001ab8:	ba e0 10 00 	mv r2,r23                                      
 8001abc:	ba 60 08 00 	mv r1,r19                                      
 8001ac0:	da 20 00 00 	call r17                                       
 8001ac4:	2d c5 00 10 	lhu r5,(r14+16)                                
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( information ) {                                              
      for ( i=1 ; i <= information->maximum ; i++ ) {                 
 8001ac8:	35 8c 00 01 	addi r12,r12,1                                 
 8001acc:	35 ad 00 04 	addi r13,r13,4                                 
 8001ad0:	50 ac ff d2 	bgeu r5,r12,8001a18 <rtems_cpu_usage_report_with_plugin+0xd4>
       " ID         | NAME                                   | TICKS         | PERCENT\n"
     #endif                                                           
     "------------+----------------------------------------+---------------+---------\n"
  );                                                                  
                                                                      
  for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
 8001ad4:	78 01 08 02 	mvhi r1,0x802                                  
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( information ) {                                              
      for ( i=1 ; i <= information->maximum ; i++ ) {                 
 8001ad8:	37 39 00 04 	addi r25,r25,4                                 
       " ID         | NAME                                   | TICKS         | PERCENT\n"
     #endif                                                           
     "------------+----------------------------------------+---------------+---------\n"
  );                                                                  
                                                                      
  for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
 8001adc:	38 21 2c d4 	ori r1,r1,0x2cd4                               
 8001ae0:	5f 21 ff c7 	bne r25,r1,80019fc <rtems_cpu_usage_report_with_plugin+0xb8>
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    (*print)(                                                         
 8001ae4:	2b 81 00 7c 	lw r1,(sp+124)                                 
 8001ae8:	34 02 03 e8 	mvi r2,1000                                    
 8001aec:	78 0b 08 01 	mvhi r11,0x801                                 
 8001af0:	f8 00 71 11 	calli 801df34 <__udivsi3>                      
 8001af4:	2b 83 00 78 	lw r3,(sp+120)                                 
 8001af8:	39 6b f8 00 	ori r11,r11,0xf800                             
 8001afc:	b8 20 20 00 	mv r4,r1                                       
 8001b00:	b9 60 10 00 	mv r2,r11                                      
 8001b04:	ba 60 08 00 	mv r1,r19                                      
 8001b08:	da 20 00 00 	call r17                                       
       "-------------------------------------------------------------------------------\n",
       _Watchdog_Ticks_since_boot - CPU_usage_Ticks_at_last_reset,    
       total_units                                                    
    );                                                                
  #endif                                                              
}                                                                     
 8001b0c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001b10:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8001b14:	2b 8c 00 40 	lw r12,(sp+64)                                 
 8001b18:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8001b1c:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8001b20:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8001b24:	2b 90 00 30 	lw r16,(sp+48)                                 
 8001b28:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8001b2c:	2b 92 00 28 	lw r18,(sp+40)                                 
 8001b30:	2b 93 00 24 	lw r19,(sp+36)                                 
 8001b34:	2b 94 00 20 	lw r20,(sp+32)                                 
 8001b38:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8001b3c:	2b 96 00 18 	lw r22,(sp+24)                                 
 8001b40:	2b 97 00 14 	lw r23,(sp+20)                                 
 8001b44:	2b 98 00 10 	lw r24,(sp+16)                                 
 8001b48:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8001b4c:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8001b50:	37 9c 00 8c 	addi sp,sp,140                                 
 8001b54:	c3 a0 00 00 	ret                                            
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
          if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
            Timestamp_Control used;                                   
            Timestamp_Control last = _Thread_Time_of_last_context_switch;
 8001b58:	2a c3 00 00 	lw r3,(r22+0)                                  
 8001b5c:	2a c2 00 04 	lw r2,(r22+4)                                  
            _TOD_Get_uptime( &uptime );                               
            _Timestamp_Subtract( &last, &uptime, &used );             
            _Timestamp_Add_to( &ran, &used );                         
 8001b60:	37 8f 00 70 	addi r15,sp,112                                
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
          if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
            Timestamp_Control used;                                   
            Timestamp_Control last = _Thread_Time_of_last_context_switch;
 8001b64:	5b 83 00 58 	sw (sp+88),r3                                  
 8001b68:	5b 82 00 5c 	sw (sp+92),r2                                  
            _TOD_Get_uptime( &uptime );                               
 8001b6c:	f8 00 10 18 	calli 8005bcc <_TOD_Get_uptime>                
            _Timestamp_Subtract( &last, &uptime, &used );             
 8001b70:	37 81 00 58 	addi r1,sp,88                                  
 8001b74:	ba 00 10 00 	mv r2,r16                                      
 8001b78:	37 83 00 60 	addi r3,sp,96                                  
 8001b7c:	f8 00 1c d8 	calli 8008edc <_Timespec_Subtract>             
            _Timestamp_Add_to( &ran, &used );                         
 8001b80:	b9 e0 08 00 	mv r1,r15                                      
 8001b84:	37 82 00 60 	addi r2,sp,96                                  
 8001b88:	f8 00 1a f7 	calli 8008764 <_Timespec_Add_to>               
 8001b8c:	e3 ff ff bb 	bi 8001a78 <rtems_cpu_usage_report_with_plugin+0x134>
                                                                      

0800cc38 <rtems_deviceio_errno>: [RTEMS_IO_ERROR] = EIO, [RTEMS_PROXY_BLOCKING] = EIO }; int rtems_deviceio_errno(rtems_status_code sc) {
 800cc38:	37 9c ff f8 	addi sp,sp,-8                                  
 800cc3c:	5b 8b 00 08 	sw (sp+8),r11                                  
 800cc40:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (sc == RTEMS_SUCCESSFUL) {                                       
    return 0;                                                         
 800cc44:	34 02 00 00 	mvi r2,0                                       
  [RTEMS_PROXY_BLOCKING]           = EIO                              
};                                                                    
                                                                      
int rtems_deviceio_errno(rtems_status_code sc)                        
{                                                                     
  if (sc == RTEMS_SUCCESSFUL) {                                       
 800cc48:	5c 20 00 06 	bne r1,r0,800cc60 <rtems_deviceio_errno+0x28>  
                                                                      
    errno = eno;                                                      
                                                                      
    return -1;                                                        
  }                                                                   
}                                                                     
 800cc4c:	b8 40 08 00 	mv r1,r2                                       
 800cc50:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800cc54:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800cc58:	37 9c 00 08 	addi sp,sp,8                                   
 800cc5c:	c3 a0 00 00 	ret                                            
  if (sc == RTEMS_SUCCESSFUL) {                                       
    return 0;                                                         
  } else {                                                            
    int eno = EINVAL;                                                 
                                                                      
    if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {                   
 800cc60:	34 02 00 1c 	mvi r2,28                                      
int rtems_deviceio_errno(rtems_status_code sc)                        
{                                                                     
  if (sc == RTEMS_SUCCESSFUL) {                                       
    return 0;                                                         
  } else {                                                            
    int eno = EINVAL;                                                 
 800cc64:	34 0b 00 16 	mvi r11,22                                     
                                                                      
    if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {                   
 800cc68:	54 22 00 07 	bgu r1,r2,800cc84 <rtems_deviceio_errno+0x4c>  <== NEVER TAKEN
      eno = status_code_to_errno [sc];                                
 800cc6c:	78 02 08 01 	mvhi r2,0x801                                  
 800cc70:	b4 21 08 00 	add r1,r1,r1                                   
 800cc74:	38 42 3a e8 	ori r2,r2,0x3ae8                               
 800cc78:	b4 21 08 00 	add r1,r1,r1                                   
 800cc7c:	b4 41 08 00 	add r1,r2,r1                                   
 800cc80:	28 2b 00 00 	lw r11,(r1+0)                                  
    }                                                                 
                                                                      
    errno = eno;                                                      
 800cc84:	f8 00 00 3e 	calli 800cd7c <__errno>                        
 800cc88:	58 2b 00 00 	sw (r1+0),r11                                  
                                                                      
    return -1;                                                        
 800cc8c:	34 02 ff ff 	mvi r2,-1                                      
 800cc90:	e3 ff ff ef 	bi 800cc4c <rtems_deviceio_errno+0x14>         
                                                                      

080013bc <rtems_filesystem_dirname>: int rtems_filesystem_dirname( const char *pathname ) {
 80013bc:	37 9c ff f4 	addi sp,sp,-12                                 
 80013c0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80013c4:	5b 8c 00 08 	sw (sp+8),r12                                  
 80013c8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80013cc:	b8 20 60 00 	mv r12,r1                                      
  int len = strlen( pathname );                                       
 80013d0:	f8 00 33 0c 	calli 800e000 <strlen>                         
 80013d4:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  while ( len ) {                                                     
 80013d8:	5c 20 00 03 	bne r1,r0,80013e4 <rtems_filesystem_dirname+0x28><== ALWAYS TAKEN
 80013dc:	e0 00 00 07 	bi 80013f8 <rtems_filesystem_dirname+0x3c>     <== NOT EXECUTED
 80013e0:	45 61 00 06 	be r11,r1,80013f8 <rtems_filesystem_dirname+0x3c>
    len--;                                                            
 80013e4:	35 6b ff ff 	addi r11,r11,-1                                
                                                  flags,              
                                                  pathloc,            
                                                  follow_link );      
}                                                                     
                                                                      
int rtems_filesystem_dirname(                                         
 80013e8:	b5 8b 10 00 	add r2,r12,r11                                 
{                                                                     
  int len = strlen( pathname );                                       
                                                                      
  while ( len ) {                                                     
    len--;                                                            
    if ( rtems_filesystem_is_separator( pathname[len] ) )             
 80013ec:	40 41 00 00 	lbu r1,(r2+0)                                  
 80013f0:	f8 00 04 a0 	calli 8002670 <rtems_filesystem_is_separator>  
 80013f4:	44 20 ff fb 	be r1,r0,80013e0 <rtems_filesystem_dirname+0x24>
      break;                                                          
  }                                                                   
                                                                      
  return len;                                                         
}                                                                     
 80013f8:	b9 60 08 00 	mv r1,r11                                      
 80013fc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001400:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8001404:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8001408:	37 9c 00 0c 	addi sp,sp,12                                  
 800140c:	c3 a0 00 00 	ret                                            
                                                                      

08008c20 <rtems_filesystem_get_mount_handler>: rtems_filesystem_fsmount_me_t rtems_filesystem_get_mount_handler( const char *type ) {
 8008c20:	37 9c ff f4 	addi sp,sp,-12                                 
 8008c24:	5b 9d 00 04 	sw (sp+4),ra                                   
  find_arg fa = {                                                     
 8008c28:	5b 81 00 08 	sw (sp+8),r1                                   
 8008c2c:	5b 80 00 0c 	sw (sp+12),r0                                  
    .type = type,                                                     
    .mount_h = NULL                                                   
  };                                                                  
                                                                      
  if ( type != NULL ) {                                               
 8008c30:	34 02 00 00 	mvi r2,0                                       
 8008c34:	44 20 00 06 	be r1,r0,8008c4c <rtems_filesystem_get_mount_handler+0x2c><== NEVER TAKEN
    rtems_filesystem_iterate( find_handler, &fa );                    
 8008c38:	78 01 08 00 	mvhi r1,0x800                                  
 8008c3c:	37 82 00 08 	addi r2,sp,8                                   
 8008c40:	38 21 8a ec 	ori r1,r1,0x8aec                               
 8008c44:	fb ff ff be 	calli 8008b3c <rtems_filesystem_iterate>       
 8008c48:	2b 82 00 0c 	lw r2,(sp+12)                                  
  }                                                                   
                                                                      
  return fa.mount_h;                                                  
}                                                                     
 8008c4c:	b8 40 08 00 	mv r1,r2                                       
 8008c50:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008c54:	37 9c 00 0c 	addi sp,sp,12                                  
 8008c58:	c3 a0 00 00 	ret                                            
                                                                      

080010ec <rtems_filesystem_initialize>: * configuration is a single instantiation of the IMFS or miniIMFS with * a single "/dev" directory in it. */ void rtems_filesystem_initialize( void ) {
 80010ec:	37 9c ff dc 	addi sp,sp,-36                                 
 80010f0:	5b 8b 00 10 	sw (sp+16),r11                                 
 80010f4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80010f8:	5b 8d 00 08 	sw (sp+8),r13                                  
 80010fc:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Set the default umask to "022".                                 
   */                                                                 
                                                                      
  rtems_filesystem_umask = 022;                                       
 8001100:	78 0b 08 01 	mvhi r11,0x801                                 
 8001104:	39 6b 41 4c 	ori r11,r11,0x414c                             
                                                                      
  /*                                                                  
   *  mount the first filesystem.                                     
   */                                                                 
  if ( rtems_filesystem_mount_table_size == 0 )                       
 8001108:	78 01 08 01 	mvhi r1,0x801                                  
                                                                      
  /*                                                                  
   *  Set the default umask to "022".                                 
   */                                                                 
                                                                      
  rtems_filesystem_umask = 022;                                       
 800110c:	29 63 00 00 	lw r3,(r11+0)                                  
                                                                      
  /*                                                                  
   *  mount the first filesystem.                                     
   */                                                                 
  if ( rtems_filesystem_mount_table_size == 0 )                       
 8001110:	38 21 33 30 	ori r1,r1,0x3330                               
 8001114:	28 21 00 00 	lw r1,(r1+0)                                   
                                                                      
  /*                                                                  
   *  Set the default umask to "022".                                 
   */                                                                 
                                                                      
  rtems_filesystem_umask = 022;                                       
 8001118:	34 02 00 12 	mvi r2,18                                      
 800111c:	58 62 00 2c 	sw (r3+44),r2                                  
                                                                      
  /*                                                                  
   *  mount the first filesystem.                                     
   */                                                                 
  if ( rtems_filesystem_mount_table_size == 0 )                       
 8001120:	44 20 00 3e 	be r1,r0,8001218 <rtems_filesystem_initialize+0x12c><== NEVER TAKEN
    rtems_fatal_error_occurred( 0xABCD0001 );                         
                                                                      
  mt = &rtems_filesystem_mount_table[0];                              
 8001124:	78 01 08 01 	mvhi r1,0x801                                  
 8001128:	38 21 40 18 	ori r1,r1,0x4018                               
 800112c:	28 24 00 00 	lw r4,(r1+0)                                   
                                                                      
  status = mount( mt->device, mt->mount_point, mt->type, mt->fsoptions, NULL );
 8001130:	34 05 00 00 	mvi r5,0                                       
 8001134:	28 82 00 0c 	lw r2,(r4+12)                                  
 8001138:	28 81 00 08 	lw r1,(r4+8)                                   
 800113c:	28 83 00 00 	lw r3,(r4+0)                                   
 8001140:	28 84 00 04 	lw r4,(r4+4)                                   
 8001144:	f8 00 02 94 	calli 8001b94 <mount>                          
  if ( status == -1 )                                                 
 8001148:	34 02 ff ff 	mvi r2,-1                                      
 800114c:	44 22 00 3b 	be r1,r2,8001238 <rtems_filesystem_initialize+0x14c><== NEVER TAKEN
    rtems_fatal_error_occurred( 0xABCD0002 );                         
                                                                      
  rtems_filesystem_link_counts = 0;                                   
 8001150:	29 61 00 00 	lw r1,(r11+0)                                  
   *       gonna hit performance.                                     
   *                                                                  
   *       Till Straumann, 10/25/2002                                 
   */                                                                 
  /* Clone the root pathloc */                                        
  rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);                 
 8001154:	78 0c 08 01 	mvhi r12,0x801                                 
 8001158:	39 8c 34 84 	ori r12,r12,0x3484                             
 800115c:	37 8d 00 14 	addi r13,sp,20                                 
 8001160:	34 02 00 01 	mvi r2,1                                       
 8001164:	34 03 00 00 	mvi r3,0                                       
 8001168:	b9 a0 20 00 	mv r4,r13                                      
 800116c:	34 05 00 00 	mvi r5,0                                       
                                                                      
  status = mount( mt->device, mt->mount_point, mt->type, mt->fsoptions, NULL );
  if ( status == -1 )                                                 
    rtems_fatal_error_occurred( 0xABCD0002 );                         
                                                                      
  rtems_filesystem_link_counts = 0;                                   
 8001170:	0c 20 00 30 	sh (r1+48),r0                                  
   *       gonna hit performance.                                     
   *                                                                  
   *       Till Straumann, 10/25/2002                                 
   */                                                                 
  /* Clone the root pathloc */                                        
  rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);                 
 8001174:	b9 80 08 00 	mv r1,r12                                      
 8001178:	f8 00 00 76 	calli 8001350 <rtems_filesystem_evaluate_path> 
  rtems_filesystem_root        = loc;                                 
 800117c:	29 61 00 00 	lw r1,(r11+0)                                  
 8001180:	2b 83 00 14 	lw r3,(sp+20)                                  
  /* One more clone for the current node */                           
  rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);                 
 8001184:	34 02 00 01 	mvi r2,1                                       
 8001188:	b9 a0 20 00 	mv r4,r13                                      
   *                                                                  
   *       Till Straumann, 10/25/2002                                 
   */                                                                 
  /* Clone the root pathloc */                                        
  rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);                 
  rtems_filesystem_root        = loc;                                 
 800118c:	58 23 00 18 	sw (r1+24),r3                                  
 8001190:	2b 83 00 18 	lw r3,(sp+24)                                  
  /* One more clone for the current node */                           
  rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);                 
 8001194:	34 05 00 00 	mvi r5,0                                       
   *                                                                  
   *       Till Straumann, 10/25/2002                                 
   */                                                                 
  /* Clone the root pathloc */                                        
  rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);                 
  rtems_filesystem_root        = loc;                                 
 8001198:	58 23 00 1c 	sw (r1+28),r3                                  
 800119c:	2b 83 00 1c 	lw r3,(sp+28)                                  
 80011a0:	58 23 00 20 	sw (r1+32),r3                                  
 80011a4:	2b 83 00 20 	lw r3,(sp+32)                                  
 80011a8:	58 23 00 24 	sw (r1+36),r3                                  
 80011ac:	2b 83 00 24 	lw r3,(sp+36)                                  
 80011b0:	58 23 00 28 	sw (r1+40),r3                                  
  /* One more clone for the current node */                           
  rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);                 
 80011b4:	b9 80 08 00 	mv r1,r12                                      
 80011b8:	34 03 00 00 	mvi r3,0                                       
 80011bc:	f8 00 00 65 	calli 8001350 <rtems_filesystem_evaluate_path> 
  rtems_filesystem_current     = loc;                                 
 80011c0:	29 61 00 00 	lw r1,(r11+0)                                  
 80011c4:	2b 82 00 14 	lw r2,(sp+20)                                  
 80011c8:	58 22 00 04 	sw (r1+4),r2                                   
 80011cc:	2b 82 00 18 	lw r2,(sp+24)                                  
 80011d0:	58 22 00 08 	sw (r1+8),r2                                   
 80011d4:	2b 82 00 1c 	lw r2,(sp+28)                                  
 80011d8:	58 22 00 0c 	sw (r1+12),r2                                  
 80011dc:	2b 82 00 20 	lw r2,(sp+32)                                  
 80011e0:	58 22 00 10 	sw (r1+16),r2                                  
 80011e4:	2b 82 00 24 	lw r2,(sp+36)                                  
 80011e8:	58 22 00 14 	sw (r1+20),r2                                  
   *                                                                  
   *  NOTE: UNIX root is 755 and owned by root/root (0/0).  It is actually
   *        created that way by the IMFS.                             
   */                                                                 
                                                                      
  status = mkdir( "/dev", 0777);                                      
 80011ec:	78 01 08 01 	mvhi r1,0x801                                  
 80011f0:	38 21 34 88 	ori r1,r1,0x3488                               
 80011f4:	34 02 01 ff 	mvi r2,511                                     
 80011f8:	f8 00 01 ed 	calli 80019ac <mkdir>                          
  if ( status != 0 )                                                  
 80011fc:	5c 20 00 0b 	bne r1,r0,8001228 <rtems_filesystem_initialize+0x13c><== NEVER TAKEN
   *  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.        
   */                                                                 
}                                                                     
 8001200:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001204:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8001208:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800120c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8001210:	37 9c 00 24 	addi sp,sp,36                                  
 8001214:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  mount the first filesystem.                                     
   */                                                                 
  if ( rtems_filesystem_mount_table_size == 0 )                       
    rtems_fatal_error_occurred( 0xABCD0001 );                         
 8001218:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 800121c:	38 42 34 90 	ori r2,r2,0x3490                               <== NOT EXECUTED
 8001220:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 8001224:	f8 00 08 95 	calli 8003478 <rtems_fatal_error_occurred>     <== NOT EXECUTED
   *        created that way by the IMFS.                             
   */                                                                 
                                                                      
  status = mkdir( "/dev", 0777);                                      
  if ( status != 0 )                                                  
    rtems_fatal_error_occurred( 0xABCD0003 );                         
 8001228:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 800122c:	38 42 34 98 	ori r2,r2,0x3498                               <== NOT EXECUTED
 8001230:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 8001234:	f8 00 08 91 	calli 8003478 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      
  mt = &rtems_filesystem_mount_table[0];                              
                                                                      
  status = mount( mt->device, mt->mount_point, mt->type, mt->fsoptions, NULL );
  if ( status == -1 )                                                 
    rtems_fatal_error_occurred( 0xABCD0002 );                         
 8001238:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 800123c:	38 42 34 94 	ori r2,r2,0x3494                               <== NOT EXECUTED
 8001240:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 8001244:	f8 00 08 8d 	calli 8003478 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08008b3c <rtems_filesystem_iterate>: bool rtems_filesystem_iterate( rtems_per_filesystem_routine routine, void *routine_arg ) {
 8008b3c:	37 9c ff e4 	addi sp,sp,-28                                 
 8008b40:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8008b44:	5b 8c 00 18 	sw (sp+24),r12                                 
 8008b48:	5b 8d 00 14 	sw (sp+20),r13                                 
 8008b4c:	5b 8e 00 10 	sw (sp+16),r14                                 
 8008b50:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8008b54:	5b 90 00 08 	sw (sp+8),r16                                  
 8008b58:	5b 9d 00 04 	sw (sp+4),ra                                   
  const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
                                                                      
  while ( table_entry->type && !stop ) {                              
 8008b5c:	78 0b 08 01 	mvhi r11,0x801                                 
 8008b60:	39 6b 33 10 	ori r11,r11,0x3310                             
 8008b64:	29 63 00 00 	lw r3,(r11+0)                                  
                                                                      
bool rtems_filesystem_iterate(                                        
  rtems_per_filesystem_routine routine,                               
  void *routine_arg                                                   
)                                                                     
{                                                                     
 8008b68:	b8 20 68 00 	mv r13,r1                                      
 8008b6c:	b8 40 70 00 	mv r14,r2                                      
  const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
                                                                      
  while ( table_entry->type && !stop ) {                              
 8008b70:	5c 60 00 03 	bne r3,r0,8008b7c <rtems_filesystem_iterate+0x40><== ALWAYS TAKEN
 8008b74:	e0 00 00 0a 	bi 8008b9c <rtems_filesystem_iterate+0x60>     <== NOT EXECUTED
 8008b78:	5c 20 00 20 	bne r1,r0,8008bf8 <rtems_filesystem_iterate+0xbc>
    stop = (*routine)( table_entry, routine_arg );                    
 8008b7c:	b9 60 08 00 	mv r1,r11                                      
 8008b80:	b9 c0 10 00 	mv r2,r14                                      
 8008b84:	d9 a0 00 00 	call r13                                       
    ++table_entry;                                                    
 8008b88:	35 6b 00 08 	addi r11,r11,8                                 
{                                                                     
  const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
                                                                      
  while ( table_entry->type && !stop ) {                              
 8008b8c:	29 63 00 00 	lw r3,(r11+0)                                  
    stop = (*routine)( table_entry, routine_arg );                    
 8008b90:	b8 20 60 00 	mv r12,r1                                      
{                                                                     
  const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
                                                                      
  while ( table_entry->type && !stop ) {                              
 8008b94:	5c 60 ff f9 	bne r3,r0,8008b78 <rtems_filesystem_iterate+0x3c>
    stop = (*routine)( table_entry, routine_arg );                    
    ++table_entry;                                                    
  }                                                                   
                                                                      
  if ( !stop ) {                                                      
 8008b98:	5c 23 00 18 	bne r1,r3,8008bf8 <rtems_filesystem_iterate+0xbc>
rtems_status_code rtems_libio_set_private_env(void);                  
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;   
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8008b9c:	78 10 08 01 	mvhi r16,0x801                                 
 8008ba0:	3a 10 47 94 	ori r16,r16,0x4794                             
 8008ba4:	2a 01 00 00 	lw r1,(r16+0)                                  
 8008ba8:	34 02 00 00 	mvi r2,0                                       
 8008bac:	34 03 00 00 	mvi r3,0                                       
 8008bb0:	fb ff e8 54 	calli 8002d00 <rtems_semaphore_obtain>         
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 8008bb4:	78 01 08 01 	mvhi r1,0x801                                  
 8008bb8:	38 21 41 54 	ori r1,r1,0x4154                               
 8008bbc:	28 2b 00 00 	lw r11,(r1+0)                                  
    ++table_entry;                                                    
  }                                                                   
                                                                      
  if ( !stop ) {                                                      
    rtems_libio_lock();                                               
    for (                                                             
 8008bc0:	78 0f 08 01 	mvhi r15,0x801                                 
 8008bc4:	39 ef 41 58 	ori r15,r15,0x4158                             
 8008bc8:	34 0c 00 00 	mvi r12,0                                      
 8008bcc:	5d 6f 00 03 	bne r11,r15,8008bd8 <rtems_filesystem_iterate+0x9c>
 8008bd0:	e0 00 00 08 	bi 8008bf0 <rtems_filesystem_iterate+0xb4>     
      node = rtems_chain_first( &filesystem_chain );                  
      !rtems_chain_is_tail( &filesystem_chain, node ) && !stop;       
 8008bd4:	5c 20 00 07 	bne r1,r0,8008bf0 <rtems_filesystem_iterate+0xb4><== NEVER TAKEN
      node = rtems_chain_next( node )                                 
    ) {                                                               
      const filesystem_node *fsn = (filesystem_node *) node;          
                                                                      
      stop = (*routine)( &fsn->entry, routine_arg );                  
 8008bd8:	35 61 00 08 	addi r1,r11,8                                  
 8008bdc:	b9 c0 10 00 	mv r2,r14                                      
 8008be0:	d9 a0 00 00 	call r13                                       
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 8008be4:	29 6b 00 00 	lw r11,(r11+0)                                 
      !rtems_chain_is_tail( &filesystem_chain, node ) && !stop;       
      node = rtems_chain_next( node )                                 
    ) {                                                               
      const filesystem_node *fsn = (filesystem_node *) node;          
                                                                      
      stop = (*routine)( &fsn->entry, routine_arg );                  
 8008be8:	b8 20 60 00 	mv r12,r1                                      
    ++table_entry;                                                    
  }                                                                   
                                                                      
  if ( !stop ) {                                                      
    rtems_libio_lock();                                               
    for (                                                             
 8008bec:	5d 6f ff fa 	bne r11,r15,8008bd4 <rtems_filesystem_iterate+0x98>
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 8008bf0:	2a 01 00 00 	lw r1,(r16+0)                                  
 8008bf4:	fb ff e8 9f 	calli 8002e70 <rtems_semaphore_release>        
    }                                                                 
    rtems_libio_unlock();                                             
  }                                                                   
                                                                      
  return stop;                                                        
}                                                                     
 8008bf8:	b9 80 08 00 	mv r1,r12                                      
 8008bfc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008c00:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8008c04:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8008c08:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8008c0c:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8008c10:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8008c14:	2b 90 00 08 	lw r16,(sp+8)                                  
 8008c18:	37 9c 00 1c 	addi sp,sp,28                                  
 8008c1c:	c3 a0 00 00 	ret                                            
                                                                      

08001ae8 <rtems_filesystem_mount_iterate>: bool rtems_filesystem_mount_iterate( rtems_per_filesystem_mount_routine routine, void *routine_arg ) {
 8001ae8:	37 9c ff e4 	addi sp,sp,-28                                 
 8001aec:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8001af0:	5b 8c 00 18 	sw (sp+24),r12                                 
 8001af4:	5b 8d 00 14 	sw (sp+20),r13                                 
 8001af8:	5b 8e 00 10 	sw (sp+16),r14                                 
 8001afc:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8001b00:	5b 90 00 08 	sw (sp+8),r16                                  
 8001b04:	5b 9d 00 04 	sw (sp+4),ra                                   
rtems_status_code rtems_libio_set_private_env(void);                  
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;   
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8001b08:	78 10 08 01 	mvhi r16,0x801                                 
 8001b0c:	3a 10 47 94 	ori r16,r16,0x4794                             
 8001b10:	b8 20 70 00 	mv r14,r1                                      
 8001b14:	2a 01 00 00 	lw r1,(r16+0)                                  
 8001b18:	b8 40 78 00 	mv r15,r2                                      
 8001b1c:	34 03 00 00 	mvi r3,0                                       
 8001b20:	34 02 00 00 	mvi r2,0                                       
 8001b24:	f8 00 04 77 	calli 8002d00 <rtems_semaphore_obtain>         
    stop = (*routine)( mt_entry, routine_arg );                       
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  return stop;                                                        
}                                                                     
 8001b28:	78 01 08 01 	mvhi r1,0x801                                  
 8001b2c:	38 21 41 40 	ori r1,r1,0x4140                               
 8001b30:	28 2b 00 00 	lw r11,(r1+0)                                  
{                                                                     
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
                                                                      
  rtems_libio_lock();                                                 
  for (                                                               
 8001b34:	78 0c 08 01 	mvhi r12,0x801                                 
 8001b38:	39 8c 41 44 	ori r12,r12,0x4144                             
  rtems_per_filesystem_mount_routine routine,                         
  void *routine_arg                                                   
)                                                                     
{                                                                     
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
 8001b3c:	34 0d 00 00 	mvi r13,0                                      
                                                                      
  rtems_libio_lock();                                                 
  for (                                                               
 8001b40:	5d 6c 00 03 	bne r11,r12,8001b4c <rtems_filesystem_mount_iterate+0x64><== ALWAYS TAKEN
 8001b44:	e0 00 00 08 	bi 8001b64 <rtems_filesystem_mount_iterate+0x7c><== NOT EXECUTED
    node = rtems_chain_first( &mount_chain );                         
    !rtems_chain_is_tail( &mount_chain, node ) && !stop;              
 8001b48:	5c 20 00 07 	bne r1,r0,8001b64 <rtems_filesystem_mount_iterate+0x7c><== NEVER TAKEN
    node = rtems_chain_next( node )                                   
  ) {                                                                 
    const rtems_filesystem_mount_table_entry_t *mt_entry =            
      (rtems_filesystem_mount_table_entry_t *) node;                  
                                                                      
    stop = (*routine)( mt_entry, routine_arg );                       
 8001b4c:	b9 60 08 00 	mv r1,r11                                      
 8001b50:	b9 e0 10 00 	mv r2,r15                                      
 8001b54:	d9 c0 00 00 	call r14                                       
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  return stop;                                                        
}                                                                     
 8001b58:	29 6b 00 00 	lw r11,(r11+0)                                 
    node = rtems_chain_next( node )                                   
  ) {                                                                 
    const rtems_filesystem_mount_table_entry_t *mt_entry =            
      (rtems_filesystem_mount_table_entry_t *) node;                  
                                                                      
    stop = (*routine)( mt_entry, routine_arg );                       
 8001b5c:	b8 20 68 00 	mv r13,r1                                      
{                                                                     
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
                                                                      
  rtems_libio_lock();                                                 
  for (                                                               
 8001b60:	5d 6c ff fa 	bne r11,r12,8001b48 <rtems_filesystem_mount_iterate+0x60>
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 8001b64:	2a 01 00 00 	lw r1,(r16+0)                                  
 8001b68:	f8 00 04 c2 	calli 8002e70 <rtems_semaphore_release>        
    stop = (*routine)( mt_entry, routine_arg );                       
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  return stop;                                                        
}                                                                     
 8001b6c:	b9 a0 08 00 	mv r1,r13                                      
 8001b70:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001b74:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8001b78:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8001b7c:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8001b80:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8001b84:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8001b88:	2b 90 00 08 	lw r16,(sp+8)                                  
 8001b8c:	37 9c 00 1c 	addi sp,sp,28                                  
 8001b90:	c3 a0 00 00 	ret                                            
                                                                      

08001410 <rtems_filesystem_prefix_separators>: int rtems_filesystem_prefix_separators( const char *pathname, int pathnamelen ) {
 8001410:	37 9c ff f0 	addi sp,sp,-16                                 
 8001414:	5b 8b 00 10 	sw (sp+16),r11                                 
 8001418:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800141c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8001420:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001424:	b8 20 68 00 	mv r13,r1                                      
  /*                                                                  
   * Eat any separators at start of the path.                         
   */                                                                 
  int stripped = 0;                                                   
  while ( *pathname && pathnamelen && rtems_filesystem_is_separator( *pathname ) )
 8001428:	40 21 00 00 	lbu r1,(r1+0)                                  
 800142c:	7c 43 00 00 	cmpnei r3,r2,0                                 
                                                                      
int rtems_filesystem_prefix_separators(                               
  const char  *pathname,                                              
  int          pathnamelen                                            
)                                                                     
{                                                                     
 8001430:	b8 40 60 00 	mv r12,r2                                      
  /*                                                                  
   * Eat any separators at start of the path.                         
   */                                                                 
  int stripped = 0;                                                   
  while ( *pathname && pathnamelen && rtems_filesystem_is_separator( *pathname ) )
 8001434:	7c 22 00 00 	cmpnei r2,r1,0                                 
 8001438:	34 0b 00 00 	mvi r11,0                                      
 800143c:	a0 62 10 00 	and r2,r3,r2                                   
 8001440:	5c 40 00 09 	bne r2,r0,8001464 <rtems_filesystem_prefix_separators+0x54><== ALWAYS TAKEN
 8001444:	e0 00 00 0a 	bi 800146c <rtems_filesystem_prefix_separators+0x5c><== NOT EXECUTED
  {                                                                   
    pathname++;                                                       
    pathnamelen--;                                                    
    stripped++;                                                       
 8001448:	35 6b 00 01 	addi r11,r11,1                                 
  }                                                                   
                                                                      
  return len;                                                         
}                                                                     
                                                                      
int rtems_filesystem_prefix_separators(                               
 800144c:	b5 ab 18 00 	add r3,r13,r11                                 
{                                                                     
  /*                                                                  
   * Eat any separators at start of the path.                         
   */                                                                 
  int stripped = 0;                                                   
  while ( *pathname && pathnamelen && rtems_filesystem_is_separator( *pathname ) )
 8001450:	40 61 00 00 	lbu r1,(r3+0)                                  
 8001454:	fd 8b 20 00 	cmpne r4,r12,r11                               
 8001458:	7c 23 00 00 	cmpnei r3,r1,0                                 
 800145c:	a0 83 18 00 	and r3,r4,r3                                   
 8001460:	44 60 00 03 	be r3,r0,800146c <rtems_filesystem_prefix_separators+0x5c><== NEVER TAKEN
 8001464:	f8 00 04 83 	calli 8002670 <rtems_filesystem_is_separator>  
 8001468:	5c 20 ff f8 	bne r1,r0,8001448 <rtems_filesystem_prefix_separators+0x38>
    pathname++;                                                       
    pathnamelen--;                                                    
    stripped++;                                                       
  }                                                                   
  return stripped;                                                    
}                                                                     
 800146c:	b9 60 08 00 	mv r1,r11                                      
 8001470:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001474:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8001478:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800147c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8001480:	37 9c 00 10 	addi sp,sp,16                                  
 8001484:	c3 a0 00 00 	ret                                            
                                                                      

08008d6c <rtems_filesystem_unregister>: int rtems_filesystem_unregister( const char *type ) {
 8008d6c:	37 9c ff ec 	addi sp,sp,-20                                 
 8008d70:	5b 8b 00 14 	sw (sp+20),r11                                 
 8008d74:	5b 8c 00 10 	sw (sp+16),r12                                 
 8008d78:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8008d7c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8008d80:	5b 9d 00 04 	sw (sp+4),ra                                   
 8008d84:	b8 20 68 00 	mv r13,r1                                      
  rtems_chain_node *node = NULL;                                      
                                                                      
  if ( type == NULL ) {                                               
 8008d88:	44 20 00 2f 	be r1,r0,8008e44 <rtems_filesystem_unregister+0xd8>
rtems_status_code rtems_libio_set_private_env(void);                  
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;   
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8008d8c:	78 0e 08 01 	mvhi r14,0x801                                 
 8008d90:	39 ce 47 94 	ori r14,r14,0x4794                             
 8008d94:	29 c1 00 00 	lw r1,(r14+0)                                  
 8008d98:	34 02 00 00 	mvi r2,0                                       
 8008d9c:	34 03 00 00 	mvi r3,0                                       
 8008da0:	fb ff e7 d8 	calli 8002d00 <rtems_semaphore_obtain>         
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 8008da4:	78 01 08 01 	mvhi r1,0x801                                  
 8008da8:	38 21 41 54 	ori r1,r1,0x4154                               
 8008dac:	28 2b 00 00 	lw r11,(r1+0)                                  
  if ( type == NULL ) {                                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  rtems_libio_lock();                                                 
  for (                                                               
 8008db0:	78 0c 08 01 	mvhi r12,0x801                                 
 8008db4:	39 8c 41 58 	ori r12,r12,0x4158                             
 8008db8:	5d 6c 00 04 	bne r11,r12,8008dc8 <rtems_filesystem_unregister+0x5c>
 8008dbc:	e0 00 00 15 	bi 8008e10 <rtems_filesystem_unregister+0xa4>  
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 8008dc0:	29 6b 00 00 	lw r11,(r11+0)                                 
  if ( type == NULL ) {                                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  rtems_libio_lock();                                                 
  for (                                                               
 8008dc4:	45 6c 00 13 	be r11,r12,8008e10 <rtems_filesystem_unregister+0xa4><== ALWAYS TAKEN
    !rtems_chain_is_tail( &filesystem_chain, node );                  
    node = rtems_chain_next( node )                                   
  ) {                                                                 
    filesystem_node *fsn = (filesystem_node *) node;                  
                                                                      
    if ( strcmp( fsn->entry.type, type ) == 0 ) {                     
 8008dc8:	29 61 00 08 	lw r1,(r11+8)                                  
 8008dcc:	b9 a0 10 00 	mv r2,r13                                      
 8008dd0:	f8 00 14 15 	calli 800de24 <strcmp>                         
 8008dd4:	5c 20 ff fb 	bne r1,r0,8008dc0 <rtems_filesystem_unregister+0x54>
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 8008dd8:	b9 60 08 00 	mv r1,r11                                      
 8008ddc:	fb ff ea ca 	calli 8003904 <_Chain_Extract>                 
      rtems_chain_extract( node );                                    
      free( fsn );                                                    
 8008de0:	b9 60 08 00 	mv r1,r11                                      
 8008de4:	fb ff e1 b1 	calli 80014a8 <free>                           
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 8008de8:	29 c1 00 00 	lw r1,(r14+0)                                  
 8008dec:	fb ff e8 21 	calli 8002e70 <rtems_semaphore_release>        
      rtems_libio_unlock();                                           
                                                                      
      return 0;                                                       
 8008df0:	34 01 00 00 	mvi r1,0                                       
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 8008df4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008df8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8008dfc:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8008e00:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8008e04:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8008e08:	37 9c 00 14 	addi sp,sp,20                                  
 8008e0c:	c3 a0 00 00 	ret                                            
 8008e10:	29 c1 00 00 	lw r1,(r14+0)                                  
 8008e14:	fb ff e8 17 	calli 8002e70 <rtems_semaphore_release>        
      return 0;                                                       
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
 8008e18:	f8 00 0f d9 	calli 800cd7c <__errno>                        
 8008e1c:	34 02 00 02 	mvi r2,2                                       
 8008e20:	58 22 00 00 	sw (r1+0),r2                                   
 8008e24:	34 01 ff ff 	mvi r1,-1                                      
}                                                                     
 8008e28:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008e2c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8008e30:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8008e34:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8008e38:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8008e3c:	37 9c 00 14 	addi sp,sp,20                                  
 8008e40:	c3 a0 00 00 	ret                                            
)                                                                     
{                                                                     
  rtems_chain_node *node = NULL;                                      
                                                                      
  if ( type == NULL ) {                                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8008e44:	f8 00 0f ce 	calli 800cd7c <__errno>                        
 8008e48:	34 02 00 16 	mvi r2,22                                      
 8008e4c:	58 22 00 00 	sw (r1+0),r2                                   
 8008e50:	34 01 ff ff 	mvi r1,-1                                      
 8008e54:	e3 ff ff f5 	bi 8008e28 <rtems_filesystem_unregister+0xbc>  
                                                                      

08002124 <rtems_gxx_key_create>: int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *)) {
 8002124:	37 9c ff f0 	addi sp,sp,-16                                 
 8002128:	5b 8b 00 10 	sw (sp+16),r11                                 
 800212c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8002130:	5b 8d 00 08 	sw (sp+8),r13                                  
 8002134:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002138:	b8 20 68 00 	mv r13,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 ) );
 800213c:	34 01 00 08 	mvi r1,8                                       
  }                                                                   
  return 0;                                                           
}                                                                     
                                                                      
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
{                                                                     
 8002140:	b8 40 60 00 	mv r12,r2                                      
   * 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 ) );
 8002144:	f8 00 01 54 	calli 8002694 <malloc>                         
 8002148:	b8 20 58 00 	mv r11,r1                                      
  *key = new_key;                                                     
 800214c:	59 a1 00 00 	sw (r13+0),r1                                  
      "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 );
 8002150:	b9 60 10 00 	mv r2,r11                                      
 8002154:	34 01 00 00 	mvi r1,0                                       
 8002158:	b9 80 18 00 	mv r3,r12                                      
   * 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 ) );
  *key = new_key;                                                     
  new_key->val  = NULL;                                               
 800215c:	59 60 00 00 	sw (r11+0),r0                                  
  new_key->dtor = dtor;                                               
 8002160:	59 6c 00 04 	sw (r11+4),r12                                 
      "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 );
 8002164:	f8 00 07 f8 	calli 8004144 <rtems_task_variable_add>        
  if ( status == RTEMS_SUCCESSFUL )                                   
    return 0;                                                         
 8002168:	34 02 00 00 	mvi r2,0                                       
    );                                                                
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
  if ( status == RTEMS_SUCCESSFUL )                                   
 800216c:	5c 20 00 08 	bne r1,r0,800218c <rtems_gxx_key_create+0x68>  <== NEVER TAKEN
    return 0;                                                         
                                                                      
  free( new_key );                                                    
  return -1;                                                          
}                                                                     
 8002170:	b8 40 08 00 	mv r1,r2                                       
 8002174:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002178:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800217c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8002180:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8002184:	37 9c 00 10 	addi sp,sp,16                                  
 8002188:	c3 a0 00 00 	ret                                            
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
  if ( status == RTEMS_SUCCESSFUL )                                   
    return 0;                                                         
                                                                      
  free( new_key );                                                    
 800218c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8002190:	fb ff ff 5c 	calli 8001f00 <free>                           <== NOT EXECUTED
  return -1;                                                          
 8002194:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8002198:	e3 ff ff f6 	bi 8002170 <rtems_gxx_key_create+0x4c>         <== NOT EXECUTED
                                                                      

080021a8 <rtems_gxx_key_delete>: int rtems_gxx_key_delete (__gthread_key_t key) {
 80021a8:	37 9c ff f8 	addi sp,sp,-8                                  
 80021ac:	5b 8b 00 08 	sw (sp+8),r11                                  
 80021b0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80021b4:	b8 20 58 00 	mv r11,r1                                      
  #ifdef DEBUG_GXX_WRAPPERS                                           
    printk( "gxx_wrappers: delete key=%x\n", key );                   
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_delete( RTEMS_SELF, (void **)key );    
 80021b8:	b8 20 10 00 	mv r2,r1                                       
 80021bc:	34 01 00 00 	mvi r1,0                                       
 80021c0:	f8 00 08 20 	calli 8004240 <rtems_task_variable_delete>     
  if ( status == RTEMS_SUCCESSFUL ) {                                 
 80021c4:	5c 20 00 04 	bne r1,r0,80021d4 <rtems_gxx_key_delete+0x2c>  <== NEVER TAKEN
    /* Hmm - hopefully all tasks using this key have gone away... */  
    if ( key ) free( *(void **)key );                                 
 80021c8:	45 61 00 03 	be r11,r1,80021d4 <rtems_gxx_key_delete+0x2c>  <== NEVER TAKEN
 80021cc:	29 61 00 00 	lw r1,(r11+0)                                  
 80021d0:	fb ff ff 4c 	calli 8001f00 <free>                           
    return 0;                                                         
  }                                                                   
  key = NULL;                                                         
  return 0;                                                           
}                                                                     
 80021d4:	34 01 00 00 	mvi r1,0                                       
 80021d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80021dc:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80021e0:	37 9c 00 08 	addi sp,sp,8                                   
 80021e4:	c3 a0 00 00 	ret                                            
                                                                      

08002068 <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)) {
 8002068:	37 9c ff ec 	addi sp,sp,-20                                 
 800206c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8002070:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8002074:	5b 8d 00 08 	sw (sp+8),r13                                  
 8002078:	5b 9d 00 04 	sw (sp+4),ra                                   
  #ifdef DEBUG_GXX_WRAPPERS                                           
    printk( "gxx_wrappers: once=%x, func=%x\n", *once, func );        
  #endif                                                              
                                                                      
  if ( *(volatile __gthread_once_t *)once == 0 ) {                    
 800207c:	28 2c 00 00 	lw r12,(r1+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))       
{                                                                     
 8002080:	b8 20 58 00 	mv r11,r1                                      
 8002084:	b8 40 68 00 	mv r13,r2                                      
  #ifdef DEBUG_GXX_WRAPPERS                                           
    printk( "gxx_wrappers: once=%x, func=%x\n", *once, func );        
  #endif                                                              
                                                                      
  if ( *(volatile __gthread_once_t *)once == 0 ) {                    
 8002088:	45 80 00 08 	be r12,r0,80020a8 <rtems_gxx_once+0x40>        
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
    if ( o == 0 )                                                     
      (*func)();                                                      
  }                                                                   
  return 0;                                                           
}                                                                     
 800208c:	34 01 00 00 	mvi r1,0                                       
 8002090:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002094:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8002098:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800209c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80020a0:	37 9c 00 14 	addi sp,sp,20                                  
 80020a4:	c3 a0 00 00 	ret                                            
                                                                      
  if ( *(volatile __gthread_once_t *)once == 0 ) {                    
    rtems_mode saveMode;                                              
    __gthread_once_t o;                                               
                                                                      
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
 80020a8:	34 01 01 00 	mvi r1,256                                     
 80020ac:	34 02 01 00 	mvi r2,256                                     
 80020b0:	37 83 00 14 	addi r3,sp,20                                  
 80020b4:	f8 00 07 86 	calli 8003ecc <rtems_task_mode>                
    if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {            
 80020b8:	29 61 00 00 	lw r1,(r11+0)                                  
 80020bc:	5c 2c 00 0f 	bne r1,r12,80020f8 <rtems_gxx_once+0x90>       <== NEVER TAKEN
      *(volatile __gthread_once_t *)once = 1;                         
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
 80020c0:	2b 81 00 14 	lw r1,(sp+20)                                  
    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;                         
 80020c4:	34 04 00 01 	mvi r4,1                                       
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
 80020c8:	34 02 01 00 	mvi r2,256                                     
 80020cc:	37 83 00 14 	addi r3,sp,20                                  
    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;                         
 80020d0:	59 64 00 00 	sw (r11+0),r4                                  
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
 80020d4:	f8 00 07 7e 	calli 8003ecc <rtems_task_mode>                
    if ( o == 0 )                                                     
      (*func)();                                                      
 80020d8:	d9 a0 00 00 	call r13                                       
  }                                                                   
  return 0;                                                           
}                                                                     
 80020dc:	34 01 00 00 	mvi r1,0                                       
 80020e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80020e4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80020e8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80020ec:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80020f0:	37 9c 00 14 	addi sp,sp,20                                  
 80020f4:	c3 a0 00 00 	ret                                            
                                                                      
    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);         
 80020f8:	2b 81 00 14 	lw r1,(sp+20)                                  <== NOT EXECUTED
 80020fc:	34 02 01 00 	mvi r2,256                                     <== NOT EXECUTED
 8002100:	37 83 00 14 	addi r3,sp,20                                  <== NOT EXECUTED
 8002104:	f8 00 07 72 	calli 8003ecc <rtems_task_mode>                <== NOT EXECUTED
    if ( o == 0 )                                                     
      (*func)();                                                      
  }                                                                   
  return 0;                                                           
}                                                                     
 8002108:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800210c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8002110:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 8002114:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8002118:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 800211c:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 8002120:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08002260 <rtems_gxx_setspecific>: #endif return p; } int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr) {
 8002260:	37 9c ff f4 	addi sp,sp,-12                                 
 8002264:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8002268:	5b 8c 00 08 	sw (sp+8),r12                                  
 800226c:	5b 9d 00 04 	sw (sp+4),ra                                   
      rtems_task_self()                                               
      );                                                              
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)key, key->dtor );
 8002270:	28 23 00 04 	lw r3,(r1+4)                                   
  #endif                                                              
  return p;                                                           
}                                                                     
                                                                      
int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr)       
{                                                                     
 8002274:	b8 20 58 00 	mv r11,r1                                      
 8002278:	b8 40 60 00 	mv r12,r2                                      
      rtems_task_self()                                               
      );                                                              
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)key, key->dtor );
 800227c:	34 01 00 00 	mvi r1,0                                       
 8002280:	b9 60 10 00 	mv r2,r11                                      
 8002284:	f8 00 07 b0 	calli 8004144 <rtems_task_variable_add>        
  if ( status == RTEMS_SUCCESSFUL ) {                                 
    /* now let's set the proper value */                              
    key->val =  (void *)ptr;                                          
    return 0;                                                         
  }                                                                   
  return -1;                                                          
 8002288:	34 03 ff ff 	mvi r3,-1                                      
      );                                                              
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)key, key->dtor );
  if ( status == RTEMS_SUCCESSFUL ) {                                 
 800228c:	5c 20 00 03 	bne r1,r0,8002298 <rtems_gxx_setspecific+0x38> <== NEVER TAKEN
    /* now let's set the proper value */                              
    key->val =  (void *)ptr;                                          
 8002290:	59 6c 00 00 	sw (r11+0),r12                                 
    return 0;                                                         
 8002294:	34 03 00 00 	mvi r3,0                                       
  }                                                                   
  return -1;                                                          
}                                                                     
 8002298:	b8 60 08 00 	mv r1,r3                                       
 800229c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80022a0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80022a4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80022a8:	37 9c 00 0c 	addi sp,sp,12                                  
 80022ac:	c3 a0 00 00 	ret                                            
                                                                      

08007164 <rtems_heap_allocate_aligned_with_boundary>: void *rtems_heap_allocate_aligned_with_boundary( size_t size, uintptr_t alignment, uintptr_t boundary ) {
 8007164:	37 9c ff f0 	addi sp,sp,-16                                 
 8007168:	5b 8b 00 10 	sw (sp+16),r11                                 
 800716c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8007170:	5b 8d 00 08 	sw (sp+8),r13                                  
 8007174:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (                                                                
 8007178:	78 04 08 02 	mvhi r4,0x802                                  
 800717c:	38 84 73 80 	ori r4,r4,0x7380                               
 8007180:	28 86 00 00 	lw r6,(r4+0)                                   
 8007184:	34 05 00 03 	mvi r5,3                                       
void *rtems_heap_allocate_aligned_with_boundary(                      
  size_t size,                                                        
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
 8007188:	b8 20 68 00 	mv r13,r1                                      
 800718c:	b8 40 60 00 	mv r12,r2                                      
 8007190:	b8 60 58 00 	mv r11,r3                                      
  if (                                                                
 8007194:	44 c5 00 11 	be r6,r5,80071d8 <rtems_heap_allocate_aligned_with_boundary+0x74><== ALWAYS TAKEN
      && !malloc_is_system_state_OK()                                 
  ) {                                                                 
    return NULL;                                                      
  }                                                                   
                                                                      
  malloc_deferred_frees_process();                                    
 8007198:	fb ff fa a9 	calli 8005c3c <malloc_deferred_frees_process>  
                                                                      
  /* FIXME: Statistics, boundary checks */                            
                                                                      
  return _Protected_heap_Allocate_aligned_with_boundary(              
 800719c:	78 05 08 02 	mvhi r5,0x802                                  
 80071a0:	38 a5 60 4c 	ori r5,r5,0x604c                               
 80071a4:	28 a1 00 00 	lw r1,(r5+0)                                   
 80071a8:	b9 a0 10 00 	mv r2,r13                                      
 80071ac:	b9 80 18 00 	mv r3,r12                                      
 80071b0:	b9 60 20 00 	mv r4,r11                                      
 80071b4:	f8 00 0e ce 	calli 800acec <_Protected_heap_Allocate_aligned_with_boundary>
 80071b8:	b8 20 28 00 	mv r5,r1                                       
    RTEMS_Malloc_Heap,                                                
    size,                                                             
    alignment,                                                        
    boundary                                                          
  );                                                                  
}                                                                     
 80071bc:	b8 a0 08 00 	mv r1,r5                                       
 80071c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80071c4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80071c8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80071cc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80071d0:	37 9c 00 10 	addi sp,sp,16                                  
 80071d4:	c3 a0 00 00 	ret                                            
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
  if (                                                                
    _System_state_Is_up( _System_state_Get() )                        
      && !malloc_is_system_state_OK()                                 
 80071d8:	fb ff fa 87 	calli 8005bf4 <malloc_is_system_state_OK>      
  ) {                                                                 
    return NULL;                                                      
 80071dc:	34 05 00 00 	mvi r5,0                                       
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
  if (                                                                
    _System_state_Is_up( _System_state_Get() )                        
      && !malloc_is_system_state_OK()                                 
 80071e0:	5c 20 ff ee 	bne r1,r0,8007198 <rtems_heap_allocate_aligned_with_boundary+0x34>
 80071e4:	e3 ff ff f6 	bi 80071bc <rtems_heap_allocate_aligned_with_boundary+0x58>
                                                                      

08004988 <rtems_io_register_driver>: rtems_status_code rtems_io_register_driver( rtems_device_major_number major, const rtems_driver_address_table *driver_table, rtems_device_major_number *registered_major ) {
 8004988:	37 9c ff f8 	addi sp,sp,-8                                  
 800498c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004990:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
 8004994:	78 04 08 01 	mvhi r4,0x801                                  
 8004998:	38 84 ae 3c 	ori r4,r4,0xae3c                               
 800499c:	28 85 00 08 	lw r5,(r4+8)                                   
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
 80049a0:	78 04 08 01 	mvhi r4,0x801                                  
 80049a4:	38 84 b2 a8 	ori r4,r4,0xb2a8                               
rtems_status_code rtems_io_register_driver(                           
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
 80049a8:	b8 20 58 00 	mv r11,r1                                      
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
 80049ac:	28 86 00 00 	lw r6,(r4+0)                                   
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
 80049b0:	34 01 00 12 	mvi r1,18                                      
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
 80049b4:	5c a0 00 33 	bne r5,r0,8004a80 <rtems_io_register_driver+0xf8>
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( registered_major == NULL )                                     
    return RTEMS_INVALID_ADDRESS;                                     
 80049b8:	34 01 00 09 	mvi r1,9                                       
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( registered_major == NULL )                                     
 80049bc:	44 65 00 31 	be r3,r5,8004a80 <rtems_io_register_driver+0xf8>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  /* Set it to an invalid value */                                    
  *registered_major = major_limit;                                    
 80049c0:	58 66 00 00 	sw (r3+0),r6                                   
                                                                      
  if ( driver_table == NULL )                                         
 80049c4:	44 40 00 2f 	be r2,r0,8004a80 <rtems_io_register_driver+0xf8>
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 80049c8:	28 45 00 00 	lw r5,(r2+0)                                   
 80049cc:	44 a0 00 42 	be r5,r0,8004ad4 <rtems_io_register_driver+0x14c>
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( major >= major_limit )                                         
    return RTEMS_INVALID_NUMBER;                                      
 80049d0:	34 01 00 0a 	mvi r1,10                                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( major >= major_limit )                                         
 80049d4:	51 66 00 2b 	bgeu r11,r6,8004a80 <rtems_io_register_driver+0xf8>
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80049d8:	78 01 08 01 	mvhi r1,0x801                                  
 80049dc:	38 21 a9 90 	ori r1,r1,0xa990                               
 80049e0:	28 25 00 00 	lw r5,(r1+0)                                   
 80049e4:	34 a5 00 01 	addi r5,r5,1                                   
 80049e8:	58 25 00 00 	sw (r1+0),r5                                   
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( major == 0 ) {                                                 
 80049ec:	5d 60 00 29 	bne r11,r0,8004a90 <rtems_io_register_driver+0x108>
                                                                      
static rtems_status_code rtems_io_obtain_major_number(                
  rtems_device_major_number *major                                    
)                                                                     
{                                                                     
  rtems_device_major_number n = _IO_Number_of_drivers;                
 80049f0:	28 85 00 00 	lw r5,(r4+0)                                   
  rtems_device_major_number m = 0;                                    
                                                                      
  /* major is error checked by caller */                              
                                                                      
  for ( m = 0; m < n; ++m ) {                                         
 80049f4:	44 ab 00 3e 	be r5,r11,8004aec <rtems_io_register_driver+0x164><== NEVER TAKEN
 80049f8:	78 06 08 01 	mvhi r6,0x801                                  
 80049fc:	38 c6 b2 ac 	ori r6,r6,0xb2ac                               
 8004a00:	28 c1 00 00 	lw r1,(r6+0)                                   
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8004a04:	28 24 00 00 	lw r4,(r1+0)                                   
 8004a08:	44 80 00 36 	be r4,r0,8004ae0 <rtems_io_register_driver+0x158>
  rtems_device_major_number n = _IO_Number_of_drivers;                
  rtems_device_major_number m = 0;                                    
                                                                      
  /* major is error checked by caller */                              
                                                                      
  for ( m = 0; m < n; ++m ) {                                         
 8004a0c:	35 6b 00 01 	addi r11,r11,1                                 
 8004a10:	34 21 00 18 	addi r1,r1,24                                  
 8004a14:	54 ab ff fc 	bgu r5,r11,8004a04 <rtems_io_register_driver+0x7c>
    if ( rtems_io_is_empty_table( table ) )                           
      break;                                                          
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
 8004a18:	58 6b 00 00 	sw (r3+0),r11                                  
                                                                      
  if ( m != n )                                                       
 8004a1c:	44 ab 00 35 	be r5,r11,8004af0 <rtems_io_register_driver+0x168>
 8004a20:	b5 6b 08 00 	add r1,r11,r11                                 
 8004a24:	b4 2b 08 00 	add r1,r1,r11                                  
 8004a28:	b4 21 08 00 	add r1,r1,r1                                   
 8004a2c:	b4 21 08 00 	add r1,r1,r1                                   
 8004a30:	b4 21 08 00 	add r1,r1,r1                                   
    }                                                                 
                                                                      
    *registered_major = major;                                        
  }                                                                   
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
 8004a34:	28 c3 00 00 	lw r3,(r6+0)                                   
 8004a38:	28 44 00 00 	lw r4,(r2+0)                                   
 8004a3c:	b4 61 08 00 	add r1,r3,r1                                   
 8004a40:	58 24 00 00 	sw (r1+0),r4                                   
 8004a44:	28 43 00 04 	lw r3,(r2+4)                                   
 8004a48:	58 23 00 04 	sw (r1+4),r3                                   
 8004a4c:	28 43 00 08 	lw r3,(r2+8)                                   
 8004a50:	58 23 00 08 	sw (r1+8),r3                                   
 8004a54:	28 43 00 0c 	lw r3,(r2+12)                                  
 8004a58:	58 23 00 0c 	sw (r1+12),r3                                  
 8004a5c:	28 43 00 10 	lw r3,(r2+16)                                  
 8004a60:	58 23 00 10 	sw (r1+16),r3                                  
 8004a64:	28 42 00 14 	lw r2,(r2+20)                                  
 8004a68:	58 22 00 14 	sw (r1+20),r2                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 8004a6c:	f8 00 08 e3 	calli 8006df8 <_Thread_Enable_dispatch>        
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
 8004a70:	b9 60 08 00 	mv r1,r11                                      
 8004a74:	34 02 00 00 	mvi r2,0                                       
 8004a78:	34 03 00 00 	mvi r3,0                                       
 8004a7c:	f8 00 28 aa 	calli 800ed24 <rtems_io_initialize>            
}                                                                     
 8004a80:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004a84:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004a88:	37 9c 00 08 	addi sp,sp,8                                   
 8004a8c:	c3 a0 00 00 	ret                                            
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
    }                                                                 
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
 8004a90:	b5 6b 08 00 	add r1,r11,r11                                 
 8004a94:	78 06 08 01 	mvhi r6,0x801                                  
 8004a98:	b4 2b 08 00 	add r1,r1,r11                                  
 8004a9c:	38 c6 b2 ac 	ori r6,r6,0xb2ac                               
 8004aa0:	b4 21 08 00 	add r1,r1,r1                                   
 8004aa4:	28 c5 00 00 	lw r5,(r6+0)                                   
 8004aa8:	b4 21 08 00 	add r1,r1,r1                                   
 8004aac:	b4 21 08 00 	add r1,r1,r1                                   
 8004ab0:	b4 a1 28 00 	add r5,r5,r1                                   
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8004ab4:	28 a4 00 00 	lw r4,(r5+0)                                   
 8004ab8:	44 80 00 11 	be r4,r0,8004afc <rtems_io_register_driver+0x174>
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
                                                                      
    if ( !rtems_io_is_empty_table( table ) ) {                        
      _Thread_Enable_dispatch();                                      
 8004abc:	f8 00 08 cf 	calli 8006df8 <_Thread_Enable_dispatch>        
      return RTEMS_RESOURCE_IN_USE;                                   
 8004ac0:	34 01 00 0c 	mvi r1,12                                      
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
}                                                                     
 8004ac4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004ac8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004acc:	37 9c 00 08 	addi sp,sp,8                                   
 8004ad0:	c3 a0 00 00 	ret                                            
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8004ad4:	28 47 00 04 	lw r7,(r2+4)                                   
 8004ad8:	5c e5 ff be 	bne r7,r5,80049d0 <rtems_io_register_driver+0x48>
 8004adc:	e3 ff ff e9 	bi 8004a80 <rtems_io_register_driver+0xf8>     
 8004ae0:	28 27 00 04 	lw r7,(r1+4)                                   
 8004ae4:	5c e4 ff ca 	bne r7,r4,8004a0c <rtems_io_register_driver+0x84>
 8004ae8:	e3 ff ff cc 	bi 8004a18 <rtems_io_register_driver+0x90>     
    if ( rtems_io_is_empty_table( table ) )                           
      break;                                                          
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
 8004aec:	58 60 00 00 	sw (r3+0),r0                                   <== NOT EXECUTED
                                                                      
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
 8004af0:	f8 00 08 c2 	calli 8006df8 <_Thread_Enable_dispatch>        
  *major = m;                                                         
                                                                      
  if ( m != n )                                                       
    return RTEMS_SUCCESSFUL;                                          
                                                                      
  return RTEMS_TOO_MANY;                                              
 8004af4:	34 01 00 05 	mvi r1,5                                       
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
 8004af8:	e3 ff ff e2 	bi 8004a80 <rtems_io_register_driver+0xf8>     
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8004afc:	28 a5 00 04 	lw r5,(r5+4)                                   
 8004b00:	5c a4 ff ef 	bne r5,r4,8004abc <rtems_io_register_driver+0x134>
    if ( !rtems_io_is_empty_table( table ) ) {                        
      _Thread_Enable_dispatch();                                      
      return RTEMS_RESOURCE_IN_USE;                                   
    }                                                                 
                                                                      
    *registered_major = major;                                        
 8004b04:	58 6b 00 00 	sw (r3+0),r11                                  
 8004b08:	e3 ff ff cb 	bi 8004a34 <rtems_io_register_driver+0xac>     
                                                                      

08004b0c <rtems_io_unregister_driver>: */ rtems_status_code rtems_io_unregister_driver( rtems_device_major_number major ) {
 8004b0c:	37 9c ff fc 	addi sp,sp,-4                                  
 8004b10:	5b 9d 00 04 	sw (sp+4),ra                                   
  if ( rtems_interrupt_is_in_progress() )                             
 8004b14:	78 02 08 01 	mvhi r2,0x801                                  
 8004b18:	38 42 ae 3c 	ori r2,r2,0xae3c                               
 8004b1c:	28 43 00 08 	lw r3,(r2+8)                                   
    return RTEMS_CALLED_FROM_ISR;                                     
 8004b20:	34 02 00 12 	mvi r2,18                                      
                                                                      
rtems_status_code rtems_io_unregister_driver(                         
  rtems_device_major_number major                                     
)                                                                     
{                                                                     
  if ( rtems_interrupt_is_in_progress() )                             
 8004b24:	5c 60 00 19 	bne r3,r0,8004b88 <rtems_io_unregister_driver+0x7c><== NEVER TAKEN
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( major < _IO_Number_of_drivers ) {                              
 8004b28:	78 02 08 01 	mvhi r2,0x801                                  
 8004b2c:	38 42 b2 a8 	ori r2,r2,0xb2a8                               
 8004b30:	28 43 00 00 	lw r3,(r2+0)                                   
    _Thread_Enable_dispatch();                                        
                                                                      
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  return RTEMS_UNSATISFIED;                                           
 8004b34:	34 02 00 0d 	mvi r2,13                                      
)                                                                     
{                                                                     
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( major < _IO_Number_of_drivers ) {                              
 8004b38:	50 23 00 14 	bgeu r1,r3,8004b88 <rtems_io_unregister_driver+0x7c><== NEVER TAKEN
 8004b3c:	78 02 08 01 	mvhi r2,0x801                                  
 8004b40:	38 42 a9 90 	ori r2,r2,0xa990                               
 8004b44:	28 43 00 00 	lw r3,(r2+0)                                   
 8004b48:	34 63 00 01 	addi r3,r3,1                                   
 8004b4c:	58 43 00 00 	sw (r2+0),r3                                   
    _Thread_Disable_dispatch();                                       
    memset(                                                           
 8004b50:	78 02 08 01 	mvhi r2,0x801                                  
      &_IO_Driver_address_table[major],                               
 8004b54:	b4 21 18 00 	add r3,r1,r1                                   
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( major < _IO_Number_of_drivers ) {                              
    _Thread_Disable_dispatch();                                       
    memset(                                                           
 8004b58:	38 42 b2 ac 	ori r2,r2,0xb2ac                               
      &_IO_Driver_address_table[major],                               
 8004b5c:	b4 61 08 00 	add r1,r3,r1                                   
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( major < _IO_Number_of_drivers ) {                              
    _Thread_Disable_dispatch();                                       
    memset(                                                           
 8004b60:	28 44 00 00 	lw r4,(r2+0)                                   
      &_IO_Driver_address_table[major],                               
 8004b64:	b4 21 08 00 	add r1,r1,r1                                   
 8004b68:	b4 21 08 00 	add r1,r1,r1                                   
 8004b6c:	b4 21 08 00 	add r1,r1,r1                                   
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( major < _IO_Number_of_drivers ) {                              
    _Thread_Disable_dispatch();                                       
    memset(                                                           
 8004b70:	34 02 00 00 	mvi r2,0                                       
 8004b74:	34 03 00 18 	mvi r3,24                                      
 8004b78:	b4 81 08 00 	add r1,r4,r1                                   
 8004b7c:	f8 00 37 9e 	calli 80129f4 <memset>                         
      &_IO_Driver_address_table[major],                               
      0,                                                              
      sizeof( rtems_driver_address_table )                            
    );                                                                
    _Thread_Enable_dispatch();                                        
 8004b80:	f8 00 08 9e 	calli 8006df8 <_Thread_Enable_dispatch>        
                                                                      
    return RTEMS_SUCCESSFUL;                                          
 8004b84:	34 02 00 00 	mvi r2,0                                       
  }                                                                   
                                                                      
  return RTEMS_UNSATISFIED;                                           
}                                                                     
 8004b88:	b8 40 08 00 	mv r1,r2                                       
 8004b8c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004b90:	37 9c 00 04 	addi sp,sp,4                                   
 8004b94:	c3 a0 00 00 	ret                                            
                                                                      

080063bc <rtems_iterate_over_all_threads>: #include <rtems/system.h> #include <rtems/score/thread.h> void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) {
 80063bc:	37 9c ff e4 	addi sp,sp,-28                                 
 80063c0:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80063c4:	5b 8c 00 18 	sw (sp+24),r12                                 
 80063c8:	5b 8d 00 14 	sw (sp+20),r13                                 
 80063cc:	5b 8e 00 10 	sw (sp+16),r14                                 
 80063d0:	5b 8f 00 0c 	sw (sp+12),r15                                 
 80063d4:	5b 90 00 08 	sw (sp+8),r16                                  
 80063d8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80063dc:	b8 20 78 00 	mv r15,r1                                      
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
 80063e0:	44 20 00 19 	be r1,r0,8006444 <rtems_iterate_over_all_threads+0x88><== NEVER TAKEN
#endif                                                                
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
 80063e4:	78 01 08 02 	mvhi r1,0x802                                  
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
 80063e8:	78 0e 08 02 	mvhi r14,0x802                                 
#endif                                                                
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
 80063ec:	38 21 2c c4 	ori r1,r1,0x2cc4                               
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
 80063f0:	39 ce 2c c8 	ori r14,r14,0x2cc8                             
#endif                                                                
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
 80063f4:	34 30 00 10 	addi r16,r1,16                                 
    #if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)             
      if ( !_Objects_Information_table[ api_index ] )                 
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
 80063f8:	29 c1 00 00 	lw r1,(r14+0)                                  
 80063fc:	28 2d 00 04 	lw r13,(r1+4)                                  
    if ( !information )                                               
 8006400:	45 a0 00 0f 	be r13,r0,800643c <rtems_iterate_over_all_threads+0x80>
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 8006404:	2d a3 00 10 	lhu r3,(r13+16)                                
 8006408:	44 60 00 0d 	be r3,r0,800643c <rtems_iterate_over_all_threads+0x80>
 800640c:	34 0c 00 04 	mvi r12,4                                      
 8006410:	34 0b 00 01 	mvi r11,1                                      
      the_thread = (Thread_Control *)information->local_table[ i ];   
 8006414:	29 a2 00 1c 	lw r2,(r13+28)                                 
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 8006418:	35 6b 00 01 	addi r11,r11,1                                 
      the_thread = (Thread_Control *)information->local_table[ i ];   
 800641c:	b4 4c 10 00 	add r2,r2,r12                                  
 8006420:	28 42 00 00 	lw r2,(r2+0)                                   
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 8006424:	35 8c 00 04 	addi r12,r12,4                                 
      the_thread = (Thread_Control *)information->local_table[ i ];   
                                                                      
      if ( !the_thread )                                              
	continue;                                                            
                                                                      
      (*routine)(the_thread);                                         
 8006428:	b8 40 08 00 	mv r1,r2                                       
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
      the_thread = (Thread_Control *)information->local_table[ i ];   
                                                                      
      if ( !the_thread )                                              
 800642c:	44 40 00 03 	be r2,r0,8006438 <rtems_iterate_over_all_threads+0x7c>
	continue;                                                            
                                                                      
      (*routine)(the_thread);                                         
 8006430:	d9 e0 00 00 	call r15                                       
 8006434:	2d a3 00 10 	lhu r3,(r13+16)                                
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 8006438:	50 6b ff f7 	bgeu r3,r11,8006414 <rtems_iterate_over_all_threads+0x58>
 800643c:	35 ce 00 04 	addi r14,r14,4                                 
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
    return;                                                           
                                                                      
  for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
 8006440:	5d d0 ff ee 	bne r14,r16,80063f8 <rtems_iterate_over_all_threads+0x3c>
                                                                      
      (*routine)(the_thread);                                         
    }                                                                 
  }                                                                   
                                                                      
}                                                                     
 8006444:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006448:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800644c:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8006450:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8006454:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8006458:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800645c:	2b 90 00 08 	lw r16,(sp+8)                                  
 8006460:	37 9c 00 1c 	addi sp,sp,28                                  
 8006464:	c3 a0 00 00 	ret                                            
                                                                      

08008924 <rtems_libio_free>: */ void rtems_libio_free( rtems_libio_t *iop ) {
 8008924:	37 9c ff f4 	addi sp,sp,-12                                 
 8008928:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800892c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8008930:	5b 9d 00 04 	sw (sp+4),ra                                   
rtems_status_code rtems_libio_set_private_env(void);                  
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;   
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8008934:	78 0c 08 01 	mvhi r12,0x801                                 
 8008938:	39 8c 47 94 	ori r12,r12,0x4794                             
 800893c:	b8 20 58 00 	mv r11,r1                                      
 8008940:	29 81 00 00 	lw r1,(r12+0)                                  
 8008944:	34 02 00 00 	mvi r2,0                                       
 8008948:	34 03 00 00 	mvi r3,0                                       
 800894c:	fb ff e8 ed 	calli 8002d00 <rtems_semaphore_obtain>         
  rtems_libio_lock();                                                 
                                                                      
    if (iop->sem)                                                     
 8008950:	29 61 00 30 	lw r1,(r11+48)                                 
 8008954:	44 20 00 02 	be r1,r0,800895c <rtems_libio_free+0x38>       <== NEVER TAKEN
      rtems_semaphore_delete(iop->sem);                               
 8008958:	f8 00 04 4b 	calli 8009a84 <rtems_semaphore_delete>         
                                                                      
    iop->flags &= ~LIBIO_FLAGS_OPEN;                                  
    iop->data1 = rtems_libio_iop_freelist;                            
 800895c:	78 02 08 01 	mvhi r2,0x801                                  
  rtems_libio_lock();                                                 
                                                                      
    if (iop->sem)                                                     
      rtems_semaphore_delete(iop->sem);                               
                                                                      
    iop->flags &= ~LIBIO_FLAGS_OPEN;                                  
 8008960:	29 65 00 18 	lw r5,(r11+24)                                 
    iop->data1 = rtems_libio_iop_freelist;                            
 8008964:	38 42 47 90 	ori r2,r2,0x4790                               
 8008968:	28 44 00 00 	lw r4,(r2+0)                                   
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 800896c:	29 81 00 00 	lw r1,(r12+0)                                  
  rtems_libio_lock();                                                 
                                                                      
    if (iop->sem)                                                     
      rtems_semaphore_delete(iop->sem);                               
                                                                      
    iop->flags &= ~LIBIO_FLAGS_OPEN;                                  
 8008970:	34 03 fe ff 	mvi r3,-257                                    
 8008974:	a0 a3 18 00 	and r3,r5,r3                                   
 8008978:	59 63 00 18 	sw (r11+24),r3                                 
    iop->data1 = rtems_libio_iop_freelist;                            
 800897c:	59 64 00 38 	sw (r11+56),r4                                 
    rtems_libio_iop_freelist = iop;                                   
 8008980:	58 4b 00 00 	sw (r2+0),r11                                  
 8008984:	fb ff e9 3b 	calli 8002e70 <rtems_semaphore_release>        
                                                                      
  rtems_libio_unlock();                                               
}                                                                     
 8008988:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800898c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8008990:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8008994:	37 9c 00 0c 	addi sp,sp,12                                  
 8008998:	c3 a0 00 00 	ret                                            
                                                                      

08001610 <rtems_libio_init>: * * Called by BSP startup code to initialize the libio subsystem. */ void rtems_libio_init( void ) {
 8001610:	37 9c ff f8 	addi sp,sp,-8                                  
 8001614:	5b 8b 00 08 	sw (sp+8),r11                                  
 8001618:	5b 9d 00 04 	sw (sp+4),ra                                   
    rtems_status_code rc;                                             
    uint32_t i;                                                       
    rtems_libio_t *iop;                                               
                                                                      
    if (rtems_libio_number_iops > 0)                                  
 800161c:	78 01 08 01 	mvhi r1,0x801                                  
 8001620:	38 21 40 10 	ori r1,r1,0x4010                               
 8001624:	28 2b 00 00 	lw r11,(r1+0)                                  
 8001628:	45 60 00 1d 	be r11,r0,800169c <rtems_libio_init+0x8c>      <== NEVER TAKEN
    {                                                                 
        rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
 800162c:	34 02 00 40 	mvi r2,64                                      
 8001630:	b9 60 08 00 	mv r1,r11                                      
 8001634:	fb ff ff 05 	calli 8001248 <calloc>                         
 8001638:	78 02 08 01 	mvhi r2,0x801                                  
 800163c:	38 42 47 8c 	ori r2,r2,0x478c                               
 8001640:	58 41 00 00 	sw (r2+0),r1                                   
 8001644:	b8 20 18 00 	mv r3,r1                                       
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
 8001648:	44 20 00 2a 	be r1,r0,80016f0 <rtems_libio_init+0xe0>       
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
                                                                      
        iop = rtems_libio_iop_freelist = rtems_libio_iops;            
 800164c:	78 02 08 01 	mvhi r2,0x801                                  
 8001650:	38 42 47 90 	ori r2,r2,0x4790                               
 8001654:	58 41 00 00 	sw (r2+0),r1                                   
        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)  
 8001658:	34 02 00 01 	mvi r2,1                                       
 800165c:	50 4b 00 0f 	bgeu r2,r11,8001698 <rtems_libio_init+0x88>    <== NEVER TAKEN
 *  rtems_libio_init                                                  
 *                                                                    
 *  Called by BSP startup code to initialize the libio subsystem.     
 */                                                                   
                                                                      
void rtems_libio_init( void )                                         
 8001660:	34 22 00 40 	addi r2,r1,64                                  
 8001664:	34 03 00 01 	mvi r3,1                                       
        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++)  
          iop->data1 = iop + 1;                                       
 8001668:	58 42 ff f8 	sw (r2+-8),r2                                  
 800166c:	34 63 00 01 	addi r3,r3,1                                   
 8001670:	34 42 00 40 	addi r2,r2,64                                  
                                                    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++)  
 8001674:	5c 6b ff fd 	bne r3,r11,8001668 <rtems_libio_init+0x58>     
 *  rtems_libio_init                                                  
 *                                                                    
 *  Called by BSP startup code to initialize the libio subsystem.     
 */                                                                   
                                                                      
void rtems_libio_init( void )                                         
 8001678:	34 63 ff ff 	addi r3,r3,-1                                  
 800167c:	b4 63 18 00 	add r3,r3,r3                                   
 8001680:	b4 63 18 00 	add r3,r3,r3                                   
 8001684:	b4 63 18 00 	add r3,r3,r3                                   
 8001688:	b4 63 18 00 	add r3,r3,r3                                   
 800168c:	b4 63 18 00 	add r3,r3,r3                                   
 8001690:	b4 63 18 00 	add r3,r3,r3                                   
                                                    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++)  
 8001694:	b4 23 18 00 	add r3,r1,r3                                   
          iop->data1 = iop + 1;                                       
        iop->data1 = NULL;                                            
 8001698:	58 60 00 38 	sw (r3+56),r0                                  
  /*                                                                  
   *  Create the binary semaphore used to provide mutual exclusion    
   *  on the IOP Table.                                               
   */                                                                 
                                                                      
  rc = rtems_semaphore_create(                                        
 800169c:	78 02 08 01 	mvhi r2,0x801                                  
 80016a0:	38 42 34 d4 	ori r2,r2,0x34d4                               
 80016a4:	28 41 00 00 	lw r1,(r2+0)                                   
 80016a8:	78 05 08 01 	mvhi r5,0x801                                  
 80016ac:	34 03 00 54 	mvi r3,84                                      
 80016b0:	34 02 00 01 	mvi r2,1                                       
 80016b4:	34 04 00 00 	mvi r4,0                                       
 80016b8:	38 a5 47 94 	ori r5,r5,0x4794                               
 80016bc:	f8 00 05 0d 	calli 8002af0 <rtems_semaphore_create>         
 80016c0:	b8 20 18 00 	mv r3,r1                                       
    1,                                                                
    RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY, 
    RTEMS_NO_PRIORITY,                                                
    &rtems_libio_semaphore                                            
  );                                                                  
  if ( rc != RTEMS_SUCCESSFUL )                                       
 80016c4:	5c 20 00 0a 	bne r1,r0,80016ec <rtems_libio_init+0xdc>      <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Initialize the base file system infrastructure.                 
   */                                                                 
                                                                      
  if (rtems_fs_init_helper)                                           
 80016c8:	78 02 08 01 	mvhi r2,0x801                                  
 80016cc:	38 42 40 0c 	ori r2,r2,0x400c                               
 80016d0:	28 41 00 00 	lw r1,(r2+0)                                   
 80016d4:	44 23 00 02 	be r1,r3,80016dc <rtems_libio_init+0xcc>       <== NEVER TAKEN
     (* rtems_fs_init_helper)();                                      
 80016d8:	d8 20 00 00 	call r1                                        
}                                                                     
 80016dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80016e0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80016e4:	37 9c 00 08 	addi sp,sp,8                                   
 80016e8:	c3 a0 00 00 	ret                                            
    RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY, 
    RTEMS_NO_PRIORITY,                                                
    &rtems_libio_semaphore                                            
  );                                                                  
  if ( rc != RTEMS_SUCCESSFUL )                                       
    rtems_fatal_error_occurred( rc );                                 
 80016ec:	f8 00 07 63 	calli 8003478 <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);              
 80016f0:	34 01 00 1a 	mvi r1,26                                      
 80016f4:	f8 00 07 61 	calli 8003478 <rtems_fatal_error_occurred>     
                                                                      

08008a44 <rtems_libio_is_file_open>: */ int rtems_libio_is_file_open( void *node_access ) {
 8008a44:	37 9c ff f0 	addi sp,sp,-16                                 
 8008a48:	5b 8b 00 10 	sw (sp+16),r11                                 
 8008a4c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8008a50:	5b 8d 00 08 	sw (sp+8),r13                                  
 8008a54:	5b 9d 00 04 	sw (sp+4),ra                                   
rtems_status_code rtems_libio_set_private_env(void);                  
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;   
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8008a58:	78 0c 08 01 	mvhi r12,0x801                                 
 8008a5c:	39 8c 47 94 	ori r12,r12,0x4794                             
 8008a60:	b8 20 58 00 	mv r11,r1                                      
 8008a64:	29 81 00 00 	lw r1,(r12+0)                                  
 8008a68:	34 02 00 00 	mvi r2,0                                       
 8008a6c:	34 03 00 00 	mvi r3,0                                       
 8008a70:	fb ff e8 a4 	calli 8002d00 <rtems_semaphore_obtain>         
                                                                      
  /*                                                                  
   *  Look for any active file descriptor entry.                      
   */                                                                 
                                                                      
 for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
 8008a74:	78 01 08 01 	mvhi r1,0x801                                  
 8008a78:	38 21 40 10 	ori r1,r1,0x4010                               
 8008a7c:	28 25 00 00 	lw r5,(r1+0)                                   
 8008a80:	78 01 08 01 	mvhi r1,0x801                                  
 8008a84:	38 21 47 8c 	ori r1,r1,0x478c                               
 8008a88:	28 22 00 00 	lw r2,(r1+0)                                   
int rtems_libio_is_file_open(                                         
  void         *node_access                                           
)                                                                     
{                                                                     
  rtems_libio_t     *iop;                                             
  int                result=0;                                        
 8008a8c:	34 0d 00 00 	mvi r13,0                                      
                                                                      
  /*                                                                  
   *  Look for any active file descriptor entry.                      
   */                                                                 
                                                                      
 for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
 8008a90:	44 a0 00 0c 	be r5,r0,8008ac0 <rtems_libio_is_file_open+0x7c><== NEVER TAKEN
 8008a94:	34 03 00 00 	mvi r3,0                                       
    if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {                       
 8008a98:	28 44 00 18 	lw r4,(r2+24)                                  
                                                                      
  /*                                                                  
   *  Look for any active file descriptor entry.                      
   */                                                                 
                                                                      
 for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
 8008a9c:	34 63 00 01 	addi r3,r3,1                                   
    if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {                       
 8008aa0:	20 84 01 00 	andi r4,r4,0x100                               
 8008aa4:	44 80 00 03 	be r4,r0,8008ab0 <rtems_libio_is_file_open+0x6c>
       /*                                                             
        *  Check if this node is under the file system that we        
        *  are trying to dismount.                                    
        */                                                            
                                                                      
       if ( iop->pathinfo.node_access == node_access ) {              
 8008aa8:	28 41 00 1c 	lw r1,(r2+28)                                  
 8008aac:	44 2b 00 0e 	be r1,r11,8008ae4 <rtems_libio_is_file_open+0xa0>
                                                                      
  /*                                                                  
   *  Look for any active file descriptor entry.                      
   */                                                                 
                                                                      
 for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
 8008ab0:	50 65 00 03 	bgeu r3,r5,8008abc <rtems_libio_is_file_open+0x78>
 8008ab4:	34 42 00 40 	addi r2,r2,64                                  
 8008ab8:	e3 ff ff f8 	bi 8008a98 <rtems_libio_is_file_open+0x54>     
int rtems_libio_is_file_open(                                         
  void         *node_access                                           
)                                                                     
{                                                                     
  rtems_libio_t     *iop;                                             
  int                result=0;                                        
 8008abc:	34 0d 00 00 	mvi r13,0                                      
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 8008ac0:	29 81 00 00 	lw r1,(r12+0)                                  
 8008ac4:	fb ff e8 eb 	calli 8002e70 <rtems_semaphore_release>        
  }                                                                   
                                                                      
  rtems_libio_unlock();                                               
                                                                      
  return result;                                                      
}                                                                     
 8008ac8:	b9 a0 08 00 	mv r1,r13                                      
 8008acc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008ad0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8008ad4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8008ad8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8008adc:	37 9c 00 10 	addi sp,sp,16                                  
 8008ae0:	c3 a0 00 00 	ret                                            
        *  Check if this node is under the file system that we        
        *  are trying to dismount.                                    
        */                                                            
                                                                      
       if ( iop->pathinfo.node_access == node_access ) {              
          result = 1;                                                 
 8008ae4:	34 0d 00 01 	mvi r13,1                                      
 8008ae8:	e3 ff ff f6 	bi 8008ac0 <rtems_libio_is_file_open+0x7c>     
                                                                      

0800899c <rtems_libio_is_open_files_in_fs>: */ int rtems_libio_is_open_files_in_fs( rtems_filesystem_mount_table_entry_t * fs_mt_entry ) {
 800899c:	37 9c ff f0 	addi sp,sp,-16                                 
 80089a0:	5b 8b 00 10 	sw (sp+16),r11                                 
 80089a4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80089a8:	5b 8d 00 08 	sw (sp+8),r13                                  
 80089ac:	5b 9d 00 04 	sw (sp+4),ra                                   
rtems_status_code rtems_libio_set_private_env(void);                  
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;   
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 80089b0:	78 0c 08 01 	mvhi r12,0x801                                 
 80089b4:	39 8c 47 94 	ori r12,r12,0x4794                             
 80089b8:	b8 20 58 00 	mv r11,r1                                      
 80089bc:	29 81 00 00 	lw r1,(r12+0)                                  
 80089c0:	34 02 00 00 	mvi r2,0                                       
 80089c4:	34 03 00 00 	mvi r3,0                                       
 80089c8:	fb ff e8 ce 	calli 8002d00 <rtems_semaphore_obtain>         
                                                                      
  /*                                                                  
   *  Look for any active file descriptor entry.                      
   */                                                                 
                                                                      
  for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
 80089cc:	78 01 08 01 	mvhi r1,0x801                                  
 80089d0:	38 21 40 10 	ori r1,r1,0x4010                               
 80089d4:	28 25 00 00 	lw r5,(r1+0)                                   
 80089d8:	78 01 08 01 	mvhi r1,0x801                                  
 80089dc:	38 21 47 8c 	ori r1,r1,0x478c                               
 80089e0:	28 22 00 00 	lw r2,(r1+0)                                   
int rtems_libio_is_open_files_in_fs(                                  
  rtems_filesystem_mount_table_entry_t * fs_mt_entry                  
)                                                                     
{                                                                     
  rtems_libio_t     *iop;                                             
  int                result = 0;                                      
 80089e4:	34 0d 00 00 	mvi r13,0                                      
                                                                      
  /*                                                                  
   *  Look for any active file descriptor entry.                      
   */                                                                 
                                                                      
  for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
 80089e8:	44 a0 00 0c 	be r5,r0,8008a18 <rtems_libio_is_open_files_in_fs+0x7c><== NEVER TAKEN
 80089ec:	34 03 00 00 	mvi r3,0                                       
                                                                      
    if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {                       
 80089f0:	28 44 00 18 	lw r4,(r2+24)                                  
                                                                      
  /*                                                                  
   *  Look for any active file descriptor entry.                      
   */                                                                 
                                                                      
  for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
 80089f4:	34 63 00 01 	addi r3,r3,1                                   
                                                                      
    if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {                       
 80089f8:	20 84 01 00 	andi r4,r4,0x100                               
 80089fc:	44 80 00 03 	be r4,r0,8008a08 <rtems_libio_is_open_files_in_fs+0x6c>
       /*                                                             
        *  Check if this node is under the file system that we        
        *  are trying to dismount.                                    
        */                                                            
                                                                      
       if ( iop->pathinfo.mt_entry == fs_mt_entry ) {                 
 8008a00:	28 41 00 2c 	lw r1,(r2+44)                                  
 8008a04:	44 2b 00 0e 	be r1,r11,8008a3c <rtems_libio_is_open_files_in_fs+0xa0>
                                                                      
  /*                                                                  
   *  Look for any active file descriptor entry.                      
   */                                                                 
                                                                      
  for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
 8008a08:	50 65 00 03 	bgeu r3,r5,8008a14 <rtems_libio_is_open_files_in_fs+0x78>
 8008a0c:	34 42 00 40 	addi r2,r2,64                                  
 8008a10:	e3 ff ff f8 	bi 80089f0 <rtems_libio_is_open_files_in_fs+0x54>
int rtems_libio_is_open_files_in_fs(                                  
  rtems_filesystem_mount_table_entry_t * fs_mt_entry                  
)                                                                     
{                                                                     
  rtems_libio_t     *iop;                                             
  int                result = 0;                                      
 8008a14:	34 0d 00 00 	mvi r13,0                                      
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 8008a18:	29 81 00 00 	lw r1,(r12+0)                                  
 8008a1c:	fb ff e9 15 	calli 8002e70 <rtems_semaphore_release>        
  }                                                                   
                                                                      
  rtems_libio_unlock();                                               
                                                                      
  return result;                                                      
}                                                                     
 8008a20:	b9 a0 08 00 	mv r1,r13                                      
 8008a24:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008a28:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8008a2c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8008a30:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8008a34:	37 9c 00 10 	addi sp,sp,16                                  
 8008a38:	c3 a0 00 00 	ret                                            
        *  Check if this node is under the file system that we        
        *  are trying to dismount.                                    
        */                                                            
                                                                      
       if ( iop->pathinfo.mt_entry == fs_mt_entry ) {                 
          result = 1;                                                 
 8008a3c:	34 0d 00 01 	mvi r13,1                                      
 8008a40:	e3 ff ff f6 	bi 8008a18 <rtems_libio_is_open_files_in_fs+0x7c>
                                                                      

08002d64 <rtems_libio_set_private_env>: rtems_status_code rtems_libio_set_private_env(void) {
 8002d64:	37 9c ff b8 	addi sp,sp,-72                                 
 8002d68:	5b 8b 00 20 	sw (sp+32),r11                                 
 8002d6c:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8002d70:	5b 8d 00 18 	sw (sp+24),r13                                 
 8002d74:	5b 8e 00 14 	sw (sp+20),r14                                 
 8002d78:	5b 8f 00 10 	sw (sp+16),r15                                 
 8002d7c:	5b 90 00 0c 	sw (sp+12),r16                                 
 8002d80:	5b 91 00 08 	sw (sp+8),r17                                  
 8002d84:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_filesystem_location_info_t root_loc;                          
  rtems_filesystem_location_info_t current_loc;                       
  rtems_user_env_t *new_env = NULL;                                   
  int rv = 0;                                                         
                                                                      
  rv = rtems_filesystem_evaluate_path("/", 1, 0, &root_loc, 0);       
 8002d88:	78 0b 08 01 	mvhi r11,0x801                                 
}                                                                     
                                                                      
rtems_status_code rtems_libio_set_private_env(void)                   
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_id task_id = rtems_task_self();                               
 8002d8c:	f8 00 03 73 	calli 8003b58 <rtems_task_self>                
  rtems_filesystem_location_info_t root_loc;                          
  rtems_filesystem_location_info_t current_loc;                       
  rtems_user_env_t *new_env = NULL;                                   
  int rv = 0;                                                         
                                                                      
  rv = rtems_filesystem_evaluate_path("/", 1, 0, &root_loc, 0);       
 8002d90:	39 6b 39 44 	ori r11,r11,0x3944                             
 8002d94:	37 8d 00 38 	addi r13,sp,56                                 
 8002d98:	34 02 00 01 	mvi r2,1                                       
}                                                                     
                                                                      
rtems_status_code rtems_libio_set_private_env(void)                   
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_id task_id = rtems_task_self();                               
 8002d9c:	b8 20 78 00 	mv r15,r1                                      
  rtems_filesystem_location_info_t root_loc;                          
  rtems_filesystem_location_info_t current_loc;                       
  rtems_user_env_t *new_env = NULL;                                   
  int rv = 0;                                                         
                                                                      
  rv = rtems_filesystem_evaluate_path("/", 1, 0, &root_loc, 0);       
 8002da0:	34 03 00 00 	mvi r3,0                                       
 8002da4:	b9 60 08 00 	mv r1,r11                                      
 8002da8:	b9 a0 20 00 	mv r4,r13                                      
 8002dac:	34 05 00 00 	mvi r5,0                                       
 8002db0:	fb ff fa 61 	calli 8001734 <rtems_filesystem_evaluate_path> 
 8002db4:	b8 20 60 00 	mv r12,r1                                      
                                                                      
error_1:                                                              
  rtems_filesystem_freenode(&root_loc);                               
                                                                      
error_0:                                                              
  return RTEMS_NO_MEMORY;                                             
 8002db8:	34 02 00 1a 	mvi r2,26                                      
  rtems_filesystem_location_info_t current_loc;                       
  rtems_user_env_t *new_env = NULL;                                   
  int rv = 0;                                                         
                                                                      
  rv = rtems_filesystem_evaluate_path("/", 1, 0, &root_loc, 0);       
  if (rv != 0)                                                        
 8002dbc:	44 20 00 0c 	be r1,r0,8002dec <rtems_libio_set_private_env+0x88><== ALWAYS TAKEN
error_1:                                                              
  rtems_filesystem_freenode(&root_loc);                               
                                                                      
error_0:                                                              
  return RTEMS_NO_MEMORY;                                             
}                                                                     
 8002dc0:	b8 40 08 00 	mv r1,r2                                       
 8002dc4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002dc8:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8002dcc:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8002dd0:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8002dd4:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8002dd8:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8002ddc:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8002de0:	2b 91 00 08 	lw r17,(sp+8)                                  
 8002de4:	37 9c 00 48 	addi sp,sp,72                                  
 8002de8:	c3 a0 00 00 	ret                                            
                                                                      
  rv = rtems_filesystem_evaluate_path("/", 1, 0, &root_loc, 0);       
  if (rv != 0)                                                        
    goto error_0;                                                     
                                                                      
  rv = rtems_filesystem_evaluate_path("/", 1, 0, ¤t_loc, 0);    
 8002dec:	37 90 00 24 	addi r16,sp,36                                 
 8002df0:	b9 60 08 00 	mv r1,r11                                      
 8002df4:	34 02 00 01 	mvi r2,1                                       
 8002df8:	34 03 00 00 	mvi r3,0                                       
 8002dfc:	ba 00 20 00 	mv r4,r16                                      
 8002e00:	34 05 00 00 	mvi r5,0                                       
 8002e04:	fb ff fa 4c 	calli 8001734 <rtems_filesystem_evaluate_path> 
  if (rv != 0)                                                        
 8002e08:	5c 2c 00 53 	bne r1,r12,8002f54 <rtems_libio_set_private_env+0x1f0><== NEVER TAKEN
   * Bharath: I'm not sure if the check can be reduced to             
   * if( rtems_current_user_env->task_id != task_id ) {               
   */                                                                 
                                                                      
  if (                                                                
    rtems_current_user_env == &rtems_global_user_env                  
 8002e0c:	78 0e 08 01 	mvhi r14,0x801                                 
 8002e10:	39 ce 51 34 	ori r14,r14,0x5134                             
 8002e14:	29 cb 00 00 	lw r11,(r14+0)                                 
  /*                                                                  
   * Bharath: I'm not sure if the check can be reduced to             
   * if( rtems_current_user_env->task_id != task_id ) {               
   */                                                                 
                                                                      
  if (                                                                
 8002e18:	78 0c 08 01 	mvhi r12,0x801                                 
 8002e1c:	39 8c 57 c0 	ori r12,r12,0x57c0                             
 8002e20:	45 6c 00 03 	be r11,r12,8002e2c <rtems_libio_set_private_env+0xc8>
    rtems_current_user_env == &rtems_global_user_env                  
      || rtems_current_user_env->task_id != task_id                   
 8002e24:	29 61 00 00 	lw r1,(r11+0)                                  
 8002e28:	44 2f 00 0c 	be r1,r15,8002e58 <rtems_libio_set_private_env+0xf4>
  ) {                                                                 
    new_env = malloc(sizeof(rtems_user_env_t));                       
 8002e2c:	34 01 00 48 	mvi r1,72                                      
 8002e30:	fb ff fc 7b 	calli 800201c <malloc>                         
 8002e34:	b8 20 58 00 	mv r11,r1                                      
    if (new_env == NULL)                                              
 8002e38:	44 20 00 45 	be r1,r0,8002f4c <rtems_libio_set_private_env+0x1e8>
                                                                      
    #ifdef HAVE_USERENV_REFCNT                                        
      new_env->refcnt = 1;                                            
    #endif                                                            
                                                                      
    sc = rtems_task_variable_add(                                     
 8002e3c:	78 03 08 00 	mvhi r3,0x800                                  
 8002e40:	34 01 00 00 	mvi r1,0                                       
 8002e44:	b9 c0 10 00 	mv r2,r14                                      
 8002e48:	38 63 2d 20 	ori r3,r3,0x2d20                               
 8002e4c:	f8 00 03 75 	calli 8003c20 <rtems_task_variable_add>        
      RTEMS_SELF,                                                     
      (void*)&rtems_current_user_env,                                 
      (void(*)(void *))free_user_env                                  
    );                                                                
    if (sc != RTEMS_SUCCESSFUL)                                       
 8002e50:	5c 20 00 3d 	bne r1,r0,8002f44 <rtems_libio_set_private_env+0x1e0>
      goto error_3;                                                   
                                                                      
    rtems_current_user_env = new_env;                                 
 8002e54:	59 cb 00 00 	sw (r14+0),r11                                 
  }                                                                   
                                                                      
  /* Inherit the global values */                                     
  *rtems_current_user_env = rtems_global_user_env;                    
 8002e58:	29 81 00 00 	lw r1,(r12+0)                                  
   * be freed when deleting the environment.                          
   */                                                                 
  rtems_filesystem_root = root_loc;                                   
  rtems_filesystem_current = current_loc;                             
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8002e5c:	34 02 00 00 	mvi r2,0                                       
                                                                      
    rtems_current_user_env = new_env;                                 
  }                                                                   
                                                                      
  /* Inherit the global values */                                     
  *rtems_current_user_env = rtems_global_user_env;                    
 8002e60:	59 61 00 00 	sw (r11+0),r1                                  
 8002e64:	29 81 00 04 	lw r1,(r12+4)                                  
 8002e68:	59 61 00 04 	sw (r11+4),r1                                  
 8002e6c:	29 81 00 08 	lw r1,(r12+8)                                  
 8002e70:	59 61 00 08 	sw (r11+8),r1                                  
 8002e74:	29 81 00 0c 	lw r1,(r12+12)                                 
 8002e78:	59 61 00 0c 	sw (r11+12),r1                                 
 8002e7c:	29 81 00 10 	lw r1,(r12+16)                                 
 8002e80:	59 61 00 10 	sw (r11+16),r1                                 
 8002e84:	29 81 00 14 	lw r1,(r12+20)                                 
 8002e88:	59 61 00 14 	sw (r11+20),r1                                 
 8002e8c:	29 81 00 18 	lw r1,(r12+24)                                 
 8002e90:	59 61 00 18 	sw (r11+24),r1                                 
 8002e94:	29 81 00 1c 	lw r1,(r12+28)                                 
 8002e98:	59 61 00 1c 	sw (r11+28),r1                                 
 8002e9c:	29 81 00 20 	lw r1,(r12+32)                                 
 8002ea0:	59 61 00 20 	sw (r11+32),r1                                 
 8002ea4:	29 81 00 24 	lw r1,(r12+36)                                 
 8002ea8:	59 61 00 24 	sw (r11+36),r1                                 
 8002eac:	29 81 00 28 	lw r1,(r12+40)                                 
 8002eb0:	59 61 00 28 	sw (r11+40),r1                                 
 8002eb4:	29 81 00 2c 	lw r1,(r12+44)                                 
 8002eb8:	59 61 00 2c 	sw (r11+44),r1                                 
 8002ebc:	29 81 00 30 	lw r1,(r12+48)                                 
 8002ec0:	59 61 00 30 	sw (r11+48),r1                                 
 8002ec4:	29 81 00 34 	lw r1,(r12+52)                                 
 8002ec8:	59 61 00 34 	sw (r11+52),r1                                 
 8002ecc:	29 81 00 38 	lw r1,(r12+56)                                 
 8002ed0:	59 61 00 38 	sw (r11+56),r1                                 
 8002ed4:	29 81 00 3c 	lw r1,(r12+60)                                 
 8002ed8:	59 61 00 3c 	sw (r11+60),r1                                 
 8002edc:	29 81 00 40 	lw r1,(r12+64)                                 
 8002ee0:	59 61 00 40 	sw (r11+64),r1                                 
 8002ee4:	29 81 00 44 	lw r1,(r12+68)                                 
                                                                      
  rtems_current_user_env->task_id = task_id;                          
 8002ee8:	59 6f 00 00 	sw (r11+0),r15                                 
                                                                      
    rtems_current_user_env = new_env;                                 
  }                                                                   
                                                                      
  /* Inherit the global values */                                     
  *rtems_current_user_env = rtems_global_user_env;                    
 8002eec:	59 61 00 44 	sw (r11+68),r1                                 
   * Clone the pathlocs. In contrast to most other code we must _not_ free the
   * original locs because what we are trying to do here is forking off clones.
   * The reason is a pathloc can be allocated by the file system and needs to
   * be freed when deleting the environment.                          
   */                                                                 
  rtems_filesystem_root = root_loc;                                   
 8002ef0:	2b 81 00 38 	lw r1,(sp+56)                                  
 8002ef4:	59 61 00 18 	sw (r11+24),r1                                 
 8002ef8:	2b 81 00 3c 	lw r1,(sp+60)                                  
 8002efc:	59 61 00 1c 	sw (r11+28),r1                                 
 8002f00:	2b 81 00 40 	lw r1,(sp+64)                                  
 8002f04:	59 61 00 20 	sw (r11+32),r1                                 
 8002f08:	2b 81 00 44 	lw r1,(sp+68)                                  
 8002f0c:	59 61 00 24 	sw (r11+36),r1                                 
 8002f10:	2b 81 00 48 	lw r1,(sp+72)                                  
 8002f14:	59 61 00 28 	sw (r11+40),r1                                 
  rtems_filesystem_current = current_loc;                             
 8002f18:	2b 81 00 24 	lw r1,(sp+36)                                  
 8002f1c:	59 61 00 04 	sw (r11+4),r1                                  
 8002f20:	2b 81 00 28 	lw r1,(sp+40)                                  
 8002f24:	59 61 00 08 	sw (r11+8),r1                                  
 8002f28:	2b 81 00 2c 	lw r1,(sp+44)                                  
 8002f2c:	59 61 00 0c 	sw (r11+12),r1                                 
 8002f30:	2b 81 00 30 	lw r1,(sp+48)                                  
 8002f34:	59 61 00 10 	sw (r11+16),r1                                 
 8002f38:	2b 81 00 34 	lw r1,(sp+52)                                  
 8002f3c:	59 61 00 14 	sw (r11+20),r1                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8002f40:	e3 ff ff a0 	bi 8002dc0 <rtems_libio_set_private_env+0x5c>  
                                                                      
error_3:                                                              
  free(new_env);                                                      
 8002f44:	b9 60 08 00 	mv r1,r11                                      
 8002f48:	fb ff fa 51 	calli 800188c <free>                           
                                                                      
error_2:                                                              
  rtems_filesystem_freenode(¤t_loc);                            
 8002f4c:	ba 00 08 00 	mv r1,r16                                      
 8002f50:	fb ff fa 47 	calli 800186c <rtems_filesystem_freenode>      
                                                                      
error_1:                                                              
  rtems_filesystem_freenode(&root_loc);                               
 8002f54:	b9 a0 08 00 	mv r1,r13                                      
 8002f58:	fb ff fa 45 	calli 800186c <rtems_filesystem_freenode>      
                                                                      
error_0:                                                              
  return RTEMS_NO_MEMORY;                                             
 8002f5c:	34 02 00 1a 	mvi r2,26                                      
 8002f60:	e3 ff ff 98 	bi 8002dc0 <rtems_libio_set_private_env+0x5c>  
                                                                      

08002f64 <rtems_libio_share_private_env>: * b) mutex access to rtems_filesystem_current, rtems_filesytem_root * while changing any of those (chdir(), chroot()). */ rtems_status_code rtems_libio_share_private_env(rtems_id task_id) {
 8002f64:	37 9c ff e8 	addi sp,sp,-24                                 
 8002f68:	5b 8b 00 14 	sw (sp+20),r11                                 
 8002f6c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8002f70:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8002f74:	5b 8e 00 08 	sw (sp+8),r14                                  
 8002f78:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002f7c:	b8 20 68 00 	mv r13,r1                                      
  rtems_id           current_task_id;                                 
                                                                      
  /*                                                                  
   * get current task id                                              
   */                                                                 
  current_task_id = rtems_task_self();                                
 8002f80:	f8 00 02 f6 	calli 8003b58 <rtems_task_self>                
 8002f84:	b8 20 70 00 	mv r14,r1                                      
   * If this was an attempt to share the task with self,              
   * if somebody wanted to do it... Lets tell them, its shared        
   */                                                                 
                                                                      
  if( task_id == current_task_id )                                    
    return RTEMS_SUCCESSFUL;                                          
 8002f88:	34 0b 00 00 	mvi r11,0                                      
  /*                                                                  
   * If this was an attempt to share the task with self,              
   * if somebody wanted to do it... Lets tell them, its shared        
   */                                                                 
                                                                      
  if( task_id == current_task_id )                                    
 8002f8c:	45 a1 00 0e 	be r13,r1,8002fc4 <rtems_libio_share_private_env+0x60><== NEVER TAKEN
    return RTEMS_SUCCESSFUL;                                          
  /*                                                                  
   * Try to get the requested user environment                        
   */                                                                 
  sc = rtems_task_variable_get(                                       
 8002f90:	78 0c 08 01 	mvhi r12,0x801                                 
 8002f94:	39 8c 51 34 	ori r12,r12,0x5134                             
 8002f98:	b9 a0 08 00 	mv r1,r13                                      
 8002f9c:	b9 80 10 00 	mv r2,r12                                      
 8002fa0:	37 83 00 18 	addi r3,sp,24                                  
 8002fa4:	f8 00 03 5e 	calli 8003d1c <rtems_task_variable_get>        
 8002fa8:	b8 20 58 00 	mv r11,r1                                      
	 (void*)&shared_user_env );                                          
                                                                      
  /*                                                                  
   * If it was not successful, return the error code                  
   */                                                                 
    if (sc != RTEMS_SUCCESSFUL)                                       
 8002fac:	5c 20 00 06 	bne r1,r0,8002fc4 <rtems_libio_share_private_env+0x60>
     * If we have a current environment in place, we need to          
     * free it, since we will be sharing the variable with the        
     * shared_user_env                                                
     */                                                               
                                                                      
  if (rtems_current_user_env->task_id==current_task_id) {             
 8002fb0:	29 81 00 00 	lw r1,(r12+0)                                  
 8002fb4:	28 22 00 00 	lw r2,(r1+0)                                   
 8002fb8:	44 4e 00 0b 	be r2,r14,8002fe4 <rtems_libio_share_private_env+0x80>
    rtems_user_env_t  *tmp = rtems_current_user_env;                  
    free_user_env( tmp );                                             
  }                                                                   
                                                                      
  /* the current_user_env is the same pointer that remote env */      
  rtems_current_user_env = shared_user_env;                           
 8002fbc:	2b 81 00 18 	lw r1,(sp+24)                                  
 8002fc0:	59 81 00 00 	sw (r12+0),r1                                  
#ifdef HAVE_USERENV_REFCNT                                            
  rtems_current_user_env->refcnt++;                                   
#endif                                                                
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8002fc4:	b9 60 08 00 	mv r1,r11                                      
 8002fc8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002fcc:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8002fd0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8002fd4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8002fd8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8002fdc:	37 9c 00 18 	addi sp,sp,24                                  
 8002fe0:	c3 a0 00 00 	ret                                            
     * shared_user_env                                                
     */                                                               
                                                                      
  if (rtems_current_user_env->task_id==current_task_id) {             
    rtems_user_env_t  *tmp = rtems_current_user_env;                  
    free_user_env( tmp );                                             
 8002fe4:	fb ff ff 4f 	calli 8002d20 <free_user_env>                  
 8002fe8:	e3 ff ff f5 	bi 8002fbc <rtems_libio_share_private_env+0x58>
                                                                      

080087e4 <rtems_libio_to_fcntl_flags>: uint32_t flags ) { uint32_t fcntl_flags = 0; if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
 80087e4:	20 24 00 06 	andi r4,r1,0x6                                 
 80087e8:	34 03 00 06 	mvi r3,6                                       
    fcntl_flags |= O_RDWR;                                            
 80087ec:	34 02 00 02 	mvi r2,2                                       
  uint32_t   flags                                                    
)                                                                     
{                                                                     
  uint32_t   fcntl_flags = 0;                                         
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
 80087f0:	44 83 00 04 	be r4,r3,8008800 <rtems_libio_to_fcntl_flags+0x1c>
    fcntl_flags |= O_RDWR;                                            
  } else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {       
 80087f4:	20 23 00 02 	andi r3,r1,0x2                                 
    fcntl_flags |= O_RDONLY;                                          
 80087f8:	34 02 00 00 	mvi r2,0                                       
{                                                                     
  uint32_t   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) {       
 80087fc:	44 60 00 0c 	be r3,r0,800882c <rtems_libio_to_fcntl_flags+0x48><== NEVER TAKEN
    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 ) {     
 8008800:	20 23 00 01 	andi r3,r1,0x1                                 
 8008804:	44 60 00 02 	be r3,r0,800880c <rtems_libio_to_fcntl_flags+0x28>
    fcntl_flags |= O_NONBLOCK;                                        
 8008808:	38 42 40 00 	ori r2,r2,0x4000                               
  }                                                                   
                                                                      
  if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {         
 800880c:	20 23 02 00 	andi r3,r1,0x200                               
 8008810:	44 60 00 02 	be r3,r0,8008818 <rtems_libio_to_fcntl_flags+0x34>
    fcntl_flags |= O_APPEND;                                          
 8008814:	38 42 00 08 	ori r2,r2,0x8                                  
  }                                                                   
                                                                      
  if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) {         
 8008818:	20 21 04 00 	andi r1,r1,0x400                               
 800881c:	44 20 00 02 	be r1,r0,8008824 <rtems_libio_to_fcntl_flags+0x40>
    fcntl_flags |= O_CREAT;                                           
 8008820:	38 42 02 00 	ori r2,r2,0x200                                
  }                                                                   
                                                                      
  return fcntl_flags;                                                 
}                                                                     
 8008824:	b8 40 08 00 	mv r1,r2                                       
 8008828:	c3 a0 00 00 	ret                                            
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
    fcntl_flags |= O_RDWR;                                            
  } else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {       
    fcntl_flags |= O_RDONLY;                                          
  } else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) {     
 800882c:	20 22 00 04 	andi r2,r1,0x4                                 <== NOT EXECUTED
)                                                                     
{                                                                     
  uint32_t   fcntl_flags = 0;                                         
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
    fcntl_flags |= O_RDWR;                                            
 8008830:	7c 42 00 00 	cmpnei r2,r2,0                                 <== NOT EXECUTED
 8008834:	e3 ff ff f3 	bi 8008800 <rtems_libio_to_fcntl_flags+0x1c>   <== NOT EXECUTED
                                                                      

0800616c <rtems_malloc_statistics_at_free>: * size and thus we skip updating the statistics. */ static void rtems_malloc_statistics_at_free( void *pointer ) {
 800616c:	37 9c ff f8 	addi sp,sp,-8                                  
 8006170:	5b 9d 00 04 	sw (sp+4),ra                                   
  uintptr_t size;                                                     
                                                                      
  if (_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &size) ) {
 8006174:	78 03 08 02 	mvhi r3,0x802                                  
 8006178:	38 63 60 4c 	ori r3,r3,0x604c                               
 *  size and thus we skip updating the statistics.                    
 */                                                                   
static void rtems_malloc_statistics_at_free(                          
  void *pointer                                                       
)                                                                     
{                                                                     
 800617c:	b8 20 10 00 	mv r2,r1                                       
  uintptr_t size;                                                     
                                                                      
  if (_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &size) ) {
 8006180:	28 61 00 00 	lw r1,(r3+0)                                   
 8006184:	37 83 00 08 	addi r3,sp,8                                   
 8006188:	f8 00 13 22 	calli 800ae10 <_Protected_heap_Get_block_size> 
 800618c:	44 20 00 0b 	be r1,r0,80061b8 <rtems_malloc_statistics_at_free+0x4c><== NEVER TAKEN
    MSBUMP(lifetime_freed, size);                                     
 8006190:	78 01 08 02 	mvhi r1,0x802                                  
 8006194:	38 21 70 c8 	ori r1,r1,0x70c8                               
 8006198:	2b 83 00 08 	lw r3,(sp+8)                                   
 800619c:	28 22 00 2c 	lw r2,(r1+44)                                  
 80061a0:	28 24 00 28 	lw r4,(r1+40)                                  
 80061a4:	b4 62 10 00 	add r2,r3,r2                                   
 80061a8:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 80061ac:	58 22 00 2c 	sw (r1+44),r2                                  
 80061b0:	b4 64 10 00 	add r2,r3,r4                                   
 80061b4:	58 22 00 28 	sw (r1+40),r2                                  
  }                                                                   
}                                                                     
 80061b8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80061bc:	37 9c 00 08 	addi sp,sp,8                                   
 80061c0:	c3 a0 00 00 	ret                                            
                                                                      

080061c4 <rtems_malloc_statistics_at_malloc>: } static void rtems_malloc_statistics_at_malloc( void *pointer ) {
 80061c4:	37 9c ff f8 	addi sp,sp,-8                                  
 80061c8:	5b 9d 00 04 	sw (sp+4),ra                                   
  uintptr_t actual_size = 0;                                          
 80061cc:	5b 80 00 08 	sw (sp+8),r0                                   
}                                                                     
                                                                      
static void rtems_malloc_statistics_at_malloc(                        
  void *pointer                                                       
)                                                                     
{                                                                     
 80061d0:	b8 20 10 00 	mv r2,r1                                       
  uintptr_t actual_size = 0;                                          
  uint32_t current_depth;                                             
  rtems_malloc_statistics_t *s = &rtems_malloc_statistics;            
                                                                      
  if ( !pointer )                                                     
 80061d4:	44 20 00 15 	be r1,r0,8006228 <rtems_malloc_statistics_at_malloc+0x64><== NEVER TAKEN
    return;                                                           
                                                                      
  _Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
 80061d8:	78 03 08 02 	mvhi r3,0x802                                  
 80061dc:	38 63 60 4c 	ori r3,r3,0x604c                               
 80061e0:	28 61 00 00 	lw r1,(r3+0)                                   
 80061e4:	37 83 00 08 	addi r3,sp,8                                   
 80061e8:	f8 00 13 0a 	calli 800ae10 <_Protected_heap_Get_block_size> 
                                                                      
  MSBUMP(lifetime_allocated, actual_size);                            
 80061ec:	78 01 08 02 	mvhi r1,0x802                                  
 80061f0:	38 21 70 c8 	ori r1,r1,0x70c8                               
 80061f4:	2b 83 00 08 	lw r3,(sp+8)                                   
 80061f8:	28 22 00 24 	lw r2,(r1+36)                                  
 80061fc:	28 26 00 20 	lw r6,(r1+32)                                  
                                                                      
  current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
 8006200:	28 25 00 2c 	lw r5,(r1+44)                                  
  if ( !pointer )                                                     
    return;                                                           
                                                                      
  _Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
                                                                      
  MSBUMP(lifetime_allocated, actual_size);                            
 8006204:	b4 62 10 00 	add r2,r3,r2                                   
 8006208:	f4 62 18 00 	cmpgu r3,r3,r2                                 
                                                                      
  current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
  if (current_depth > s->max_depth)                                   
 800620c:	28 24 00 18 	lw r4,(r1+24)                                  
  if ( !pointer )                                                     
    return;                                                           
                                                                      
  _Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
                                                                      
  MSBUMP(lifetime_allocated, actual_size);                            
 8006210:	b4 66 18 00 	add r3,r3,r6                                   
 8006214:	58 22 00 24 	sw (r1+36),r2                                  
 8006218:	58 23 00 20 	sw (r1+32),r3                                  
                                                                      
  current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
 800621c:	c8 45 10 00 	sub r2,r2,r5                                   
  if (current_depth > s->max_depth)                                   
 8006220:	50 82 00 02 	bgeu r4,r2,8006228 <rtems_malloc_statistics_at_malloc+0x64>
      s->max_depth = current_depth;                                   
 8006224:	58 22 00 18 	sw (r1+24),r2                                  
}                                                                     
 8006228:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800622c:	37 9c 00 08 	addi sp,sp,8                                   
 8006230:	c3 a0 00 00 	ret                                            
                                                                      

0800d444 <rtems_memalign>: int rtems_memalign( void **pointer, size_t alignment, size_t size ) {
 800d444:	37 9c ff ec 	addi sp,sp,-20                                 
 800d448:	5b 8b 00 14 	sw (sp+20),r11                                 
 800d44c:	5b 8c 00 10 	sw (sp+16),r12                                 
 800d450:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800d454:	5b 8e 00 08 	sw (sp+8),r14                                  
 800d458:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Parameter error checks                                          
   */                                                                 
  if ( !pointer )                                                     
    return EINVAL;                                                    
 800d45c:	34 0c 00 16 	mvi r12,22                                     
int rtems_memalign(                                                   
  void   **pointer,                                                   
  size_t   alignment,                                                 
  size_t   size                                                       
)                                                                     
{                                                                     
 800d460:	b8 20 58 00 	mv r11,r1                                      
 800d464:	b8 40 68 00 	mv r13,r2                                      
 800d468:	b8 60 70 00 	mv r14,r3                                      
  void *return_this;                                                  
                                                                      
  /*                                                                  
   *  Parameter error checks                                          
   */                                                                 
  if ( !pointer )                                                     
 800d46c:	44 20 00 1b 	be r1,r0,800d4d8 <rtems_memalign+0x94>         
  *pointer = NULL;                                                    
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 800d470:	78 01 08 01 	mvhi r1,0x801                                  
 800d474:	38 21 aa e8 	ori r1,r1,0xaae8                               
 800d478:	28 22 00 00 	lw r2,(r1+0)                                   
   *  Parameter error checks                                          
   */                                                                 
  if ( !pointer )                                                     
    return EINVAL;                                                    
                                                                      
  *pointer = NULL;                                                    
 800d47c:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 800d480:	34 01 00 03 	mvi r1,3                                       
 800d484:	44 41 00 1d 	be r2,r1,800d4f8 <rtems_memalign+0xb4>         <== ALWAYS TAKEN
    return EINVAL;                                                    
                                                                      
  /*                                                                  
   *  If some free's have been deferred, then do them now.            
   */                                                                 
  malloc_deferred_frees_process();                                    
 800d488:	fb ff d5 61 	calli 8002a0c <malloc_deferred_frees_process>  
  Heap_Control *heap,                                                 
  uintptr_t size,                                                     
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return                                                              
 800d48c:	78 01 08 01 	mvhi r1,0x801                                  
 800d490:	38 21 a0 4c 	ori r1,r1,0xa04c                               
 800d494:	28 21 00 00 	lw r1,(r1+0)                                   
 800d498:	b9 a0 18 00 	mv r3,r13                                      
 800d49c:	b9 c0 10 00 	mv r2,r14                                      
 800d4a0:	34 04 00 00 	mvi r4,0                                       
 800d4a4:	fb ff e3 55 	calli 80061f8 <_Protected_heap_Allocate_aligned_with_boundary>
 800d4a8:	b8 20 68 00 	mv r13,r1                                      
    RTEMS_Malloc_Heap,                                                
    size,                                                             
    alignment                                                         
  );                                                                  
  if ( !return_this )                                                 
    return ENOMEM;                                                    
 800d4ac:	34 0c 00 0c 	mvi r12,12                                     
  return_this = _Protected_heap_Allocate_aligned(                     
    RTEMS_Malloc_Heap,                                                
    size,                                                             
    alignment                                                         
  );                                                                  
  if ( !return_this )                                                 
 800d4b0:	44 20 00 0a 	be r1,r0,800d4d8 <rtems_memalign+0x94>         
    return ENOMEM;                                                    
                                                                      
  /*                                                                  
   *  If configured, update the more involved statistics              
   */                                                                 
  if ( rtems_malloc_statistics_helpers )                              
 800d4b4:	78 02 08 01 	mvhi r2,0x801                                  
 800d4b8:	38 42 a6 f0 	ori r2,r2,0xa6f0                               
 800d4bc:	28 41 00 00 	lw r1,(r2+0)                                   
 800d4c0:	44 20 00 04 	be r1,r0,800d4d0 <rtems_memalign+0x8c>         
    (*rtems_malloc_statistics_helpers->at_malloc)(pointer);           
 800d4c4:	28 22 00 04 	lw r2,(r1+4)                                   
 800d4c8:	b9 60 08 00 	mv r1,r11                                      
 800d4cc:	d8 40 00 00 	call r2                                        
                                                                      
  *pointer = return_this;                                             
 800d4d0:	59 6d 00 00 	sw (r11+0),r13                                 
  return 0;                                                           
 800d4d4:	34 0c 00 00 	mvi r12,0                                      
}                                                                     
 800d4d8:	b9 80 08 00 	mv r1,r12                                      
 800d4dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800d4e0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800d4e4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800d4e8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800d4ec:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800d4f0:	37 9c 00 14 	addi sp,sp,20                                  
 800d4f4:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  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() )                                 
 800d4f8:	fb ff d5 33 	calli 80029c4 <malloc_is_system_state_OK>      
  *pointer = NULL;                                                    
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 800d4fc:	5c 20 ff e3 	bne r1,r0,800d488 <rtems_memalign+0x44>        <== ALWAYS TAKEN
 800d500:	e3 ff ff f6 	bi 800d4d8 <rtems_memalign+0x94>               <== NOT EXECUTED
                                                                      

0800d6f4 <rtems_message_queue_create>: uint32_t count, size_t max_message_size, rtems_attribute attribute_set, rtems_id *id ) {
 800d6f4:	37 9c ff e0 	addi sp,sp,-32                                 
 800d6f8:	5b 8b 00 14 	sw (sp+20),r11                                 
 800d6fc:	5b 8c 00 10 	sw (sp+16),r12                                 
 800d700:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800d704:	5b 8e 00 08 	sw (sp+8),r14                                  
 800d708:	5b 9d 00 04 	sw (sp+4),ra                                   
 800d70c:	b8 20 58 00 	mv r11,r1                                      
 800d710:	b8 40 60 00 	mv r12,r2                                      
 800d714:	b8 60 68 00 	mv r13,r3                                      
#if defined(RTEMS_MULTIPROCESSING)                                    
  bool                            is_global;                          
#endif                                                                
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
 800d718:	34 01 00 03 	mvi r1,3                                       
  CORE_message_queue_Attributes   the_msgq_attributes;                
#if defined(RTEMS_MULTIPROCESSING)                                    
  bool                            is_global;                          
#endif                                                                
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
 800d71c:	45 60 00 07 	be r11,r0,800d738 <rtems_message_queue_create+0x44>
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !id )                                                          
    return RTEMS_INVALID_ADDRESS;                                     
 800d720:	34 01 00 09 	mvi r1,9                                       
#endif                                                                
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !id )                                                          
 800d724:	44 a0 00 05 	be r5,r0,800d738 <rtems_message_queue_create+0x44>
       !_System_state_Is_multiprocessing )                            
    return RTEMS_MP_NOT_CONFIGURED;                                   
#endif                                                                
                                                                      
  if ( count == 0 )                                                   
      return RTEMS_INVALID_NUMBER;                                    
 800d728:	34 01 00 0a 	mvi r1,10                                      
  if ( (is_global = _Attributes_Is_global( attribute_set ) ) &&       
       !_System_state_Is_multiprocessing )                            
    return RTEMS_MP_NOT_CONFIGURED;                                   
#endif                                                                
                                                                      
  if ( count == 0 )                                                   
 800d72c:	44 40 00 03 	be r2,r0,800d738 <rtems_message_queue_create+0x44>
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  if ( max_message_size == 0 )                                        
      return RTEMS_INVALID_SIZE;                                      
 800d730:	34 01 00 08 	mvi r1,8                                       
#endif                                                                
                                                                      
  if ( count == 0 )                                                   
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  if ( max_message_size == 0 )                                        
 800d734:	5c 60 00 08 	bne r3,r0,800d754 <rtems_message_queue_create+0x60>
    );                                                                
#endif                                                                
                                                                      
  _Thread_Enable_dispatch();                                          
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 800d738:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800d73c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800d740:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800d744:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800d748:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800d74c:	37 9c 00 20 	addi sp,sp,32                                  
 800d750:	c3 a0 00 00 	ret                                            
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 800d754:	78 01 08 02 	mvhi r1,0x802                                  
 800d758:	38 21 aa a0 	ori r1,r1,0xaaa0                               
 800d75c:	28 22 00 00 	lw r2,(r1+0)                                   
 800d760:	34 42 00 01 	addi r2,r2,1                                   
 800d764:	58 22 00 00 	sw (r1+0),r2                                   
#endif                                                                
#endif                                                                
                                                                      
  _Thread_Disable_dispatch();              /* protects object pointer */
                                                                      
  the_message_queue = _Message_queue_Allocate();                      
 800d768:	5b 84 00 1c 	sw (sp+28),r4                                  
 800d76c:	5b 85 00 18 	sw (sp+24),r5                                  
 800d770:	f8 00 1f 1d 	calli 80153e4 <_Message_queue_Allocate>        
 800d774:	b8 20 70 00 	mv r14,r1                                      
                                                                      
  if ( !the_message_queue ) {                                         
 800d778:	2b 84 00 1c 	lw r4,(sp+28)                                  
 800d77c:	2b 85 00 18 	lw r5,(sp+24)                                  
 800d780:	44 20 00 25 	be r1,r0,800d814 <rtems_message_queue_create+0x120><== NEVER TAKEN
    _Thread_Enable_dispatch();                                        
    return RTEMS_TOO_MANY;                                            
  }                                                                   
#endif                                                                
                                                                      
  the_message_queue->attribute_set = attribute_set;                   
 800d784:	58 24 00 10 	sw (r1+16),r4                                  
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Attributes_Is_priority(                    
  rtems_attribute attribute_set                                       
)                                                                     
{                                                                     
   return ( attribute_set & RTEMS_PRIORITY ) ? true : false;          
 800d788:	20 84 00 04 	andi r4,r4,0x4                                 
                                                                      
  if (_Attributes_Is_priority( attribute_set ) )                      
 800d78c:	44 80 00 12 	be r4,r0,800d7d4 <rtems_message_queue_create+0xe0>
    the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
 800d790:	34 01 00 01 	mvi r1,1                                       
 800d794:	5b 81 00 20 	sw (sp+32),r1                                  
  else                                                                
    the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
                                                                      
  if ( ! _CORE_message_queue_Initialize(                              
 800d798:	35 c1 00 14 	addi r1,r14,20                                 
 800d79c:	37 82 00 20 	addi r2,sp,32                                  
 800d7a0:	b9 80 18 00 	mv r3,r12                                      
 800d7a4:	b9 a0 20 00 	mv r4,r13                                      
 800d7a8:	5b 85 00 18 	sw (sp+24),r5                                  
 800d7ac:	f8 00 05 7a 	calli 800ed94 <_CORE_message_queue_Initialize> 
 800d7b0:	2b 85 00 18 	lw r5,(sp+24)                                  
 800d7b4:	5c 20 00 0a 	bne r1,r0,800d7dc <rtems_message_queue_create+0xe8>
 */                                                                   
RTEMS_INLINE_ROUTINE void _Message_queue_Free (                       
  Message_queue_Control *the_message_queue                            
)                                                                     
{                                                                     
  _Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
 800d7b8:	78 01 08 02 	mvhi r1,0x802                                  
 800d7bc:	38 21 b3 3c 	ori r1,r1,0xb33c                               
 800d7c0:	b9 c0 10 00 	mv r2,r14                                      
 800d7c4:	f8 00 0a 67 	calli 8010160 <_Objects_Free>                  
        _Objects_MP_Close(                                            
          &_Message_queue_Information, the_message_queue->Object.id); 
#endif                                                                
                                                                      
    _Message_queue_Free( the_message_queue );                         
    _Thread_Enable_dispatch();                                        
 800d7c8:	f8 00 0f 36 	calli 80114a0 <_Thread_Enable_dispatch>        
    return RTEMS_UNSATISFIED;                                         
 800d7cc:	34 01 00 0d 	mvi r1,13                                      
 800d7d0:	e3 ff ff da 	bi 800d738 <rtems_message_queue_create+0x44>   
  the_message_queue->attribute_set = attribute_set;                   
                                                                      
  if (_Attributes_Is_priority( attribute_set ) )                      
    the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
  else                                                                
    the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
 800d7d4:	5b 80 00 20 	sw (sp+32),r0                                  
 800d7d8:	e3 ff ff f0 	bi 800d798 <rtems_message_queue_create+0xa4>   
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 800d7dc:	29 c2 00 08 	lw r2,(r14+8)                                  
    );                                                                
#endif                                                                
                                                                      
  _Thread_Enable_dispatch();                                          
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 800d7e0:	78 01 08 02 	mvhi r1,0x802                                  
 800d7e4:	38 21 b3 3c 	ori r1,r1,0xb33c                               
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 800d7e8:	28 23 00 1c 	lw r3,(r1+28)                                  
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 800d7ec:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 800d7f0:	b4 21 08 00 	add r1,r1,r1                                   
 800d7f4:	b4 21 08 00 	add r1,r1,r1                                   
 800d7f8:	b4 61 08 00 	add r1,r3,r1                                   
 800d7fc:	58 2e 00 00 	sw (r1+0),r14                                  
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  the_object->name = name;                                            
 800d800:	59 cb 00 0c 	sw (r14+12),r11                                
    &_Message_queue_Information,                                      
    &the_message_queue->Object,                                       
    (Objects_Name) name                                               
  );                                                                  
                                                                      
  *id = the_message_queue->Object.id;                                 
 800d804:	58 a2 00 00 	sw (r5+0),r2                                   
      name,                                                           
      0                                                               
    );                                                                
#endif                                                                
                                                                      
  _Thread_Enable_dispatch();                                          
 800d808:	f8 00 0f 26 	calli 80114a0 <_Thread_Enable_dispatch>        
  return RTEMS_SUCCESSFUL;                                            
 800d80c:	34 01 00 00 	mvi r1,0                                       
 800d810:	e3 ff ff ca 	bi 800d738 <rtems_message_queue_create+0x44>   
  _Thread_Disable_dispatch();              /* protects object pointer */
                                                                      
  the_message_queue = _Message_queue_Allocate();                      
                                                                      
  if ( !the_message_queue ) {                                         
    _Thread_Enable_dispatch();                                        
 800d814:	f8 00 0f 23 	calli 80114a0 <_Thread_Enable_dispatch>        
    return RTEMS_TOO_MANY;                                            
 800d818:	34 01 00 05 	mvi r1,5                                       
 800d81c:	e3 ff ff c7 	bi 800d738 <rtems_message_queue_create+0x44>   
                                                                      

0800b5c0 <rtems_mkdir>: return (retval); } int rtems_mkdir(const char *path, mode_t mode) {
 800b5c0:	37 9c ff 84 	addi sp,sp,-124                                
 800b5c4:	5b 8b 00 34 	sw (sp+52),r11                                 
 800b5c8:	5b 8c 00 30 	sw (sp+48),r12                                 
 800b5cc:	5b 8d 00 2c 	sw (sp+44),r13                                 
 800b5d0:	5b 8e 00 28 	sw (sp+40),r14                                 
 800b5d4:	5b 8f 00 24 	sw (sp+36),r15                                 
 800b5d8:	5b 90 00 20 	sw (sp+32),r16                                 
 800b5dc:	5b 91 00 1c 	sw (sp+28),r17                                 
 800b5e0:	5b 92 00 18 	sw (sp+24),r18                                 
 800b5e4:	5b 93 00 14 	sw (sp+20),r19                                 
 800b5e8:	5b 94 00 10 	sw (sp+16),r20                                 
 800b5ec:	5b 95 00 0c 	sw (sp+12),r21                                 
 800b5f0:	5b 96 00 08 	sw (sp+8),r22                                  
 800b5f4:	5b 9d 00 04 	sw (sp+4),ra                                   
 800b5f8:	b8 40 88 00 	mv r17,r2                                      
  int success = 0;                                                    
  char *dup_path = strdup(path);                                      
 800b5fc:	f8 00 12 8e 	calli 8010034 <strdup>                         
 800b600:	b8 20 68 00 	mv r13,r1                                      
  if (dup_path != NULL) {                                             
    success = build(dup_path, mode);                                  
    free(dup_path);                                                   
  }                                                                   
                                                                      
  return success != 0 ? 0 : -1;                                       
 800b604:	34 01 ff ff 	mvi r1,-1                                      
rtems_mkdir(const char *path, mode_t mode)                            
{                                                                     
  int success = 0;                                                    
  char *dup_path = strdup(path);                                      
                                                                      
  if (dup_path != NULL) {                                             
 800b608:	45 a0 00 31 	be r13,r0,800b6cc <rtems_mkdir+0x10c>          <== NEVER TAKEN
  char *p;                                                            
                                                                      
  p = path;                                                           
  oumask = 0;                                                         
  retval = 1;                                                         
  if (p[0] == '/')    /* Skip leading '/'. */                         
 800b60c:	41 a3 00 00 	lbu r3,(r13+0)                                 
 800b610:	34 01 00 2f 	mvi r1,47                                      
 800b614:	b9 a0 58 00 	mv r11,r13                                     
 800b618:	44 61 00 4d 	be r3,r1,800b74c <rtems_mkdir+0x18c>           
 800b61c:	34 0e 00 00 	mvi r14,0                                      
 800b620:	34 04 00 01 	mvi r4,1                                       
        retval = 0;                                                   
        break;                                                        
      }                                                               
    }                                                                 
    if (!last)                                                        
        *p = '/';                                                     
 800b624:	34 10 00 2f 	mvi r16,47                                     
      first = 0;                                                      
    }                                                                 
    if (last)                                                         
      (void)umask(oumask);                                            
    if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
      if (errno == EEXIST || errno == EISDIR) {                       
 800b628:	34 13 00 11 	mvi r19,17                                     
        if (stat(path, &sb) < 0) {                                    
 800b62c:	37 94 00 38 	addi r20,sp,56                                 
          retval = 0;                                                 
          break;                                                      
        } else if (!S_ISDIR(sb.st_mode)) {                            
 800b630:	34 15 40 00 	mvi r21,16384                                  
      first = 0;                                                      
    }                                                                 
    if (last)                                                         
      (void)umask(oumask);                                            
    if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
      if (errno == EEXIST || errno == EISDIR) {                       
 800b634:	34 16 00 15 	mvi r22,21                                     
       *                                                              
       * We change the user's umask and then restore it,              
       * instead of doing chmod's.                                    
       */                                                             
      oumask = umask(0);                                              
      numask = oumask & ~(S_IWUSR | S_IXUSR);                         
 800b638:	34 12 ff 3f 	mvi r18,-193                                   
  if (p[0] == '/')    /* Skip leading '/'. */                         
    ++p;                                                              
  for (first = 1, last = 0; !last ; ++p) {                            
    if (p[0] == '\0')                                                 
      last = 1;                                                       
    else if (p[0] != '/')                                             
 800b63c:	34 0f 00 2f 	mvi r15,47                                     
  oumask = 0;                                                         
  retval = 1;                                                         
  if (p[0] == '/')    /* Skip leading '/'. */                         
    ++p;                                                              
  for (first = 1, last = 0; !last ; ++p) {                            
    if (p[0] == '\0')                                                 
 800b640:	44 60 00 05 	be r3,r0,800b654 <rtems_mkdir+0x94>            <== NEVER TAKEN
      last = 1;                                                       
    else if (p[0] != '/')                                             
 800b644:	44 6f 00 3e 	be r3,r15,800b73c <rtems_mkdir+0x17c>          
  p = path;                                                           
  oumask = 0;                                                         
  retval = 1;                                                         
  if (p[0] == '/')    /* Skip leading '/'. */                         
    ++p;                                                              
  for (first = 1, last = 0; !last ; ++p) {                            
 800b648:	35 6b 00 01 	addi r11,r11,1                                 
 800b64c:	41 63 00 00 	lbu r3,(r11+0)                                 
    if (p[0] == '\0')                                                 
 800b650:	5c 60 ff fd 	bne r3,r0,800b644 <rtems_mkdir+0x84>           
      last = 1;                                                       
    else if (p[0] != '/')                                             
      continue;                                                       
    *p = '\0';                                                        
 800b654:	31 60 00 00 	sb (r11+0),r0                                  
 800b658:	34 0c 00 01 	mvi r12,1                                      
    if (!last && p[1] == '\0')                                        
      last = 1;                                                       
    if (first) {                                                      
 800b65c:	5c 80 00 32 	bne r4,r0,800b724 <rtems_mkdir+0x164>          
      (void)umask(numask);                                            
      first = 0;                                                      
    }                                                                 
    if (last)                                                         
      (void)umask(oumask);                                            
    if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
 800b660:	34 02 01 ff 	mvi r2,511                                     
      oumask = umask(0);                                              
      numask = oumask & ~(S_IWUSR | S_IXUSR);                         
      (void)umask(numask);                                            
      first = 0;                                                      
    }                                                                 
    if (last)                                                         
 800b664:	5d 80 00 2c 	bne r12,r0,800b714 <rtems_mkdir+0x154>         
      (void)umask(oumask);                                            
    if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
 800b668:	b9 a0 08 00 	mv r1,r13                                      
 800b66c:	fb ff df 20 	calli 80032ec <mkdir>                          
 800b670:	4c 20 00 11 	bge r1,r0,800b6b4 <rtems_mkdir+0xf4>           
      if (errno == EEXIST || errno == EISDIR) {                       
 800b674:	f8 00 0d f2 	calli 800ee3c <__errno>                        
 800b678:	28 21 00 00 	lw r1,(r1+0)                                   
 800b67c:	44 33 00 04 	be r1,r19,800b68c <rtems_mkdir+0xcc>           
 800b680:	f8 00 0d ef 	calli 800ee3c <__errno>                        
 800b684:	28 21 00 00 	lw r1,(r1+0)                                   
 800b688:	5c 36 00 45 	bne r1,r22,800b79c <rtems_mkdir+0x1dc>         <== ALWAYS TAKEN
        if (stat(path, &sb) < 0) {                                    
 800b68c:	b9 a0 08 00 	mv r1,r13                                      
 800b690:	ba 80 10 00 	mv r2,r20                                      
 800b694:	f8 00 00 44 	calli 800b7a4 <stat>                           
 800b698:	48 01 00 41 	bg r0,r1,800b79c <rtems_mkdir+0x1dc>           <== NEVER TAKEN
          retval = 0;                                                 
          break;                                                      
        } else if (!S_ISDIR(sb.st_mode)) {                            
 800b69c:	2b 81 00 44 	lw r1,(sp+68)                                  
 800b6a0:	20 21 f0 00 	andi r1,r1,0xf000                              
 800b6a4:	5c 35 00 2d 	bne r1,r21,800b758 <rtems_mkdir+0x198>         
          else                                                        
            errno = ENOTDIR;                                          
          retval = 0;                                                 
          break;                                                      
        }                                                             
        if (last)                                                     
 800b6a8:	45 80 00 18 	be r12,r0,800b708 <rtems_mkdir+0x148>          
          retval = 2;                                                 
 800b6ac:	34 0b 00 02 	mvi r11,2                                      
 800b6b0:	e0 00 00 03 	bi 800b6bc <rtems_mkdir+0xfc>                  
      } else {                                                        
        retval = 0;                                                   
        break;                                                        
      }                                                               
    }                                                                 
    if (!last)                                                        
 800b6b4:	45 80 00 15 	be r12,r0,800b708 <rtems_mkdir+0x148>          
 800b6b8:	34 0b 00 01 	mvi r11,1                                      
  int success = 0;                                                    
  char *dup_path = strdup(path);                                      
                                                                      
  if (dup_path != NULL) {                                             
    success = build(dup_path, mode);                                  
    free(dup_path);                                                   
 800b6bc:	b9 a0 08 00 	mv r1,r13                                      
 800b6c0:	fb ff dc dd 	calli 8002a34 <free>                           
  }                                                                   
                                                                      
  return success != 0 ? 0 : -1;                                       
 800b6c4:	34 01 00 00 	mvi r1,0                                       
 800b6c8:	45 60 00 33 	be r11,r0,800b794 <rtems_mkdir+0x1d4>          <== NEVER TAKEN
}                                                                     
 800b6cc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b6d0:	2b 8b 00 34 	lw r11,(sp+52)                                 
 800b6d4:	2b 8c 00 30 	lw r12,(sp+48)                                 
 800b6d8:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 800b6dc:	2b 8e 00 28 	lw r14,(sp+40)                                 
 800b6e0:	2b 8f 00 24 	lw r15,(sp+36)                                 
 800b6e4:	2b 90 00 20 	lw r16,(sp+32)                                 
 800b6e8:	2b 91 00 1c 	lw r17,(sp+28)                                 
 800b6ec:	2b 92 00 18 	lw r18,(sp+24)                                 
 800b6f0:	2b 93 00 14 	lw r19,(sp+20)                                 
 800b6f4:	2b 94 00 10 	lw r20,(sp+16)                                 
 800b6f8:	2b 95 00 0c 	lw r21,(sp+12)                                 
 800b6fc:	2b 96 00 08 	lw r22,(sp+8)                                  
 800b700:	37 9c 00 7c 	addi sp,sp,124                                 
 800b704:	c3 a0 00 00 	ret                                            
        retval = 0;                                                   
        break;                                                        
      }                                                               
    }                                                                 
    if (!last)                                                        
        *p = '/';                                                     
 800b708:	31 70 00 00 	sb (r11+0),r16                                 
 800b70c:	34 04 00 00 	mvi r4,0                                       
 800b710:	e3 ff ff ce 	bi 800b648 <rtems_mkdir+0x88>                  
      numask = oumask & ~(S_IWUSR | S_IXUSR);                         
      (void)umask(numask);                                            
      first = 0;                                                      
    }                                                                 
    if (last)                                                         
      (void)umask(oumask);                                            
 800b714:	b9 c0 08 00 	mv r1,r14                                      
 800b718:	f8 00 00 5b 	calli 800b884 <umask>                          
    if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
 800b71c:	ba 20 10 00 	mv r2,r17                                      
 800b720:	e3 ff ff d2 	bi 800b668 <rtems_mkdir+0xa8>                  
       *    mkdir [-m mode] dir                                       
       *                                                              
       * We change the user's umask and then restore it,              
       * instead of doing chmod's.                                    
       */                                                             
      oumask = umask(0);                                              
 800b724:	34 01 00 00 	mvi r1,0                                       
 800b728:	f8 00 00 57 	calli 800b884 <umask>                          
 800b72c:	b8 20 70 00 	mv r14,r1                                      
      numask = oumask & ~(S_IWUSR | S_IXUSR);                         
      (void)umask(numask);                                            
 800b730:	a0 32 08 00 	and r1,r1,r18                                  
 800b734:	f8 00 00 54 	calli 800b884 <umask>                          
 800b738:	e3 ff ff ca 	bi 800b660 <rtems_mkdir+0xa0>                  
    if (p[0] == '\0')                                                 
      last = 1;                                                       
    else if (p[0] != '/')                                             
      continue;                                                       
    *p = '\0';                                                        
    if (!last && p[1] == '\0')                                        
 800b73c:	41 6c 00 01 	lbu r12,(r11+1)                                
  for (first = 1, last = 0; !last ; ++p) {                            
    if (p[0] == '\0')                                                 
      last = 1;                                                       
    else if (p[0] != '/')                                             
      continue;                                                       
    *p = '\0';                                                        
 800b740:	31 60 00 00 	sb (r11+0),r0                                  
    if (!last && p[1] == '\0')                                        
 800b744:	65 8c 00 00 	cmpei r12,r12,0                                
 800b748:	e3 ff ff c5 	bi 800b65c <rtems_mkdir+0x9c>                  
                                                                      
  p = path;                                                           
  oumask = 0;                                                         
  retval = 1;                                                         
  if (p[0] == '/')    /* Skip leading '/'. */                         
    ++p;                                                              
 800b74c:	41 a3 00 01 	lbu r3,(r13+1)                                 
 800b750:	35 ab 00 01 	addi r11,r13,1                                 
 800b754:	e3 ff ff b2 	bi 800b61c <rtems_mkdir+0x5c>                  
      if (errno == EEXIST || errno == EISDIR) {                       
        if (stat(path, &sb) < 0) {                                    
          retval = 0;                                                 
          break;                                                      
        } else if (!S_ISDIR(sb.st_mode)) {                            
          if (last)                                                   
 800b758:	45 80 00 08 	be r12,r0,800b778 <rtems_mkdir+0x1b8>          
            errno = EEXIST;                                           
 800b75c:	f8 00 0d b8 	calli 800ee3c <__errno>                        
 800b760:	34 02 00 11 	mvi r2,17                                      
 800b764:	58 22 00 00 	sw (r1+0),r2                                   
  int success = 0;                                                    
  char *dup_path = strdup(path);                                      
                                                                      
  if (dup_path != NULL) {                                             
    success = build(dup_path, mode);                                  
    free(dup_path);                                                   
 800b768:	b9 a0 08 00 	mv r1,r13                                      
 800b76c:	fb ff dc b2 	calli 8002a34 <free>                           
  }                                                                   
                                                                      
  return success != 0 ? 0 : -1;                                       
 800b770:	34 01 ff ff 	mvi r1,-1                                      
 800b774:	e3 ff ff d6 	bi 800b6cc <rtems_mkdir+0x10c>                 
          break;                                                      
        } else if (!S_ISDIR(sb.st_mode)) {                            
          if (last)                                                   
            errno = EEXIST;                                           
          else                                                        
            errno = ENOTDIR;                                          
 800b778:	f8 00 0d b1 	calli 800ee3c <__errno>                        
 800b77c:	34 02 00 14 	mvi r2,20                                      
 800b780:	58 22 00 00 	sw (r1+0),r2                                   
    }                                                                 
    if (!last)                                                        
        *p = '/';                                                     
  }                                                                   
  if (!first && !last)                                                
    (void)umask(oumask);                                              
 800b784:	b9 c0 08 00 	mv r1,r14                                      
 800b788:	f8 00 00 3f 	calli 800b884 <umask>                          
  int success = 0;                                                    
  char *dup_path = strdup(path);                                      
                                                                      
  if (dup_path != NULL) {                                             
    success = build(dup_path, mode);                                  
    free(dup_path);                                                   
 800b78c:	b9 a0 08 00 	mv r1,r13                                      
 800b790:	fb ff dc a9 	calli 8002a34 <free>                           
  }                                                                   
                                                                      
  return success != 0 ? 0 : -1;                                       
 800b794:	34 01 ff ff 	mvi r1,-1                                      
 800b798:	e3 ff ff cd 	bi 800b6cc <rtems_mkdir+0x10c>                 
      }                                                               
    }                                                                 
    if (!last)                                                        
        *p = '/';                                                     
  }                                                                   
  if (!first && !last)                                                
 800b79c:	45 80 ff fa 	be r12,r0,800b784 <rtems_mkdir+0x1c4>          <== NEVER TAKEN
 800b7a0:	e3 ff ff fb 	bi 800b78c <rtems_mkdir+0x1cc>                 
                                                                      

08004f2c <rtems_object_get_class_information>: rtems_status_code rtems_object_get_class_information( int the_api, int the_class, rtems_object_api_class_information *info ) {
 8004f2c:	37 9c ff f8 	addi sp,sp,-8                                  
 8004f30:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004f34:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004f38:	b8 60 58 00 	mv r11,r3                                      
                                                                      
  /*                                                                  
   * Validate parameters and look up information structure.           
   */                                                                 
  if ( !info )                                                        
    return RTEMS_INVALID_ADDRESS;                                     
 8004f3c:	34 03 00 09 	mvi r3,9                                       
  int                  i;                                             
                                                                      
  /*                                                                  
   * Validate parameters and look up information structure.           
   */                                                                 
  if ( !info )                                                        
 8004f40:	45 60 00 1e 	be r11,r0,8004fb8 <rtems_object_get_class_information+0x8c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  obj_info = _Objects_Get_information( the_api, the_class );          
 8004f44:	20 42 ff ff 	andi r2,r2,0xffff                              
 8004f48:	f8 00 07 c0 	calli 8006e48 <_Objects_Get_information>       
 8004f4c:	b8 20 10 00 	mv r2,r1                                       
  if ( !obj_info )                                                    
    return RTEMS_INVALID_NUMBER;                                      
 8004f50:	34 03 00 0a 	mvi r3,10                                      
   */                                                                 
  if ( !info )                                                        
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  obj_info = _Objects_Get_information( the_api, the_class );          
  if ( !obj_info )                                                    
 8004f54:	44 20 00 19 	be r1,r0,8004fb8 <rtems_object_get_class_information+0x8c>
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
 8004f58:	28 24 00 08 	lw r4,(r1+8)                                   
  info->maximum_id  = obj_info->maximum_id;                           
 8004f5c:	28 23 00 0c 	lw r3,(r1+12)                                  
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
 8004f60:	2c 46 00 10 	lhu r6,(r2+16)                                 
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
 8004f64:	40 21 00 12 	lbu r1,(r1+18)                                 
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
 8004f68:	59 64 00 00 	sw (r11+0),r4                                  
  info->maximum_id  = obj_info->maximum_id;                           
 8004f6c:	59 63 00 04 	sw (r11+4),r3                                  
  info->auto_extend = obj_info->auto_extend;                          
 8004f70:	31 61 00 0c 	sb (r11+12),r1                                 
  info->maximum     = obj_info->maximum;                              
 8004f74:	59 66 00 08 	sw (r11+8),r6                                  
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
 8004f78:	34 04 00 00 	mvi r4,0                                       
 8004f7c:	44 c0 00 0d 	be r6,r0,8004fb0 <rtems_object_get_class_information+0x84><== NEVER TAKEN
 8004f80:	28 43 00 1c 	lw r3,(r2+28)                                  
 8004f84:	34 01 00 01 	mvi r1,1                                       
 8004f88:	34 02 00 01 	mvi r2,1                                       
    if ( !obj_info->local_table[i] )                                  
 8004f8c:	b4 21 08 00 	add r1,r1,r1                                   
 8004f90:	b4 21 08 00 	add r1,r1,r1                                   
 8004f94:	b4 61 08 00 	add r1,r3,r1                                   
 8004f98:	28 25 00 00 	lw r5,(r1+0)                                   
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
 8004f9c:	34 42 00 01 	addi r2,r2,1                                   
 8004fa0:	b8 40 08 00 	mv r1,r2                                       
    if ( !obj_info->local_table[i] )                                  
      unallocated++;                                                  
 8004fa4:	64 a5 00 00 	cmpei r5,r5,0                                  
 8004fa8:	b4 85 20 00 	add r4,r4,r5                                   
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
 8004fac:	50 c2 ff f8 	bgeu r6,r2,8004f8c <rtems_object_get_class_information+0x60>
    if ( !obj_info->local_table[i] )                                  
      unallocated++;                                                  
                                                                      
  info->unallocated = unallocated;                                    
 8004fb0:	59 64 00 10 	sw (r11+16),r4                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8004fb4:	34 03 00 00 	mvi r3,0                                       
}                                                                     
 8004fb8:	b8 60 08 00 	mv r1,r3                                       
 8004fbc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004fc0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004fc4:	37 9c 00 08 	addi sp,sp,8                                   
 8004fc8:	c3 a0 00 00 	ret                                            
                                                                      

08011480 <rtems_partition_create>: uint32_t length, uint32_t buffer_size, rtems_attribute attribute_set, rtems_id *id ) {
 8011480:	37 9c ff d8 	addi sp,sp,-40                                 
 8011484:	5b 8b 00 18 	sw (sp+24),r11                                 
 8011488:	5b 8c 00 14 	sw (sp+20),r12                                 
 801148c:	5b 8d 00 10 	sw (sp+16),r13                                 
 8011490:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8011494:	5b 8f 00 08 	sw (sp+8),r15                                  
 8011498:	5b 9d 00 04 	sw (sp+4),ra                                   
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
 801149c:	34 07 00 03 	mvi r7,3                                       
  uint32_t         length,                                            
  uint32_t         buffer_size,                                       
  rtems_attribute  attribute_set,                                     
  rtems_id        *id                                                 
)                                                                     
{                                                                     
 80114a0:	b8 20 60 00 	mv r12,r1                                      
 80114a4:	b8 40 58 00 	mv r11,r2                                      
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
 80114a8:	44 20 00 3e 	be r1,r0,80115a0 <rtems_partition_create+0x120>
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !starting_address )                                            
    return RTEMS_INVALID_ADDRESS;                                     
 80114ac:	34 07 00 09 	mvi r7,9                                       
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !starting_address )                                            
 80114b0:	44 40 00 3c 	be r2,r0,80115a0 <rtems_partition_create+0x120>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !id )                                                          
 80114b4:	44 c0 00 3b 	be r6,r0,80115a0 <rtems_partition_create+0x120><== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
 80114b8:	64 82 00 00 	cmpei r2,r4,0                                  
 80114bc:	64 61 00 00 	cmpei r1,r3,0                                  
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
 80114c0:	34 07 00 08 	mvi r7,8                                       
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !id )                                                          
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
 80114c4:	b8 41 08 00 	or r1,r2,r1                                    
 80114c8:	5c 20 00 36 	bne r1,r0,80115a0 <rtems_partition_create+0x120>
 80114cc:	54 83 00 35 	bgu r4,r3,80115a0 <rtems_partition_create+0x120>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned (         
   uint32_t   buffer_size                                             
)                                                                     
{                                                                     
  return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0);              
 80114d0:	20 81 00 07 	andi r1,r4,0x7                                 
 80114d4:	5c 20 00 33 	bne r1,r0,80115a0 <rtems_partition_create+0x120>
)                                                                     
{                                                                     
#if (CPU_ALIGNMENT == 0)                                              
    return true;                                                      
#else                                                                 
    return (((uintptr_t)address % CPU_ALIGNMENT) == 0);               
 80114d8:	21 6f 00 07 	andi r15,r11,0x7                               
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
                                                                      
  if ( !_Addresses_Is_aligned( starting_address ) )                   
     return RTEMS_INVALID_ADDRESS;                                    
 80114dc:	34 07 00 09 	mvi r7,9                                       
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
                                                                      
  if ( !_Addresses_Is_aligned( starting_address ) )                   
 80114e0:	5d e1 00 30 	bne r15,r1,80115a0 <rtems_partition_create+0x120>
 80114e4:	78 01 08 04 	mvhi r1,0x804                                  
 80114e8:	38 21 0d 10 	ori r1,r1,0xd10                                
 80114ec:	28 22 00 00 	lw r2,(r1+0)                                   
 80114f0:	34 42 00 01 	addi r2,r2,1                                   
 80114f4:	58 22 00 00 	sw (r1+0),r2                                   
 *  This function allocates a partition control block from            
 *  the inactive chain of free partition control blocks.              
 */                                                                   
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Allocate ( void )  
{                                                                     
  return (Partition_Control *) _Objects_Allocate( &_Partition_Information );
 80114f8:	78 0e 08 04 	mvhi r14,0x804                                 
 80114fc:	39 ce 0b 68 	ori r14,r14,0xb68                              
 8011500:	b9 c0 08 00 	mv r1,r14                                      
 8011504:	5b 83 00 28 	sw (sp+40),r3                                  
 8011508:	5b 84 00 20 	sw (sp+32),r4                                  
 801150c:	5b 85 00 24 	sw (sp+36),r5                                  
 8011510:	5b 86 00 1c 	sw (sp+28),r6                                  
 8011514:	f8 00 16 ef 	calli 80170d0 <_Objects_Allocate>              
 8011518:	b8 20 68 00 	mv r13,r1                                      
                                                                      
  _Thread_Disable_dispatch();               /* prevents deletion */   
                                                                      
  the_partition = _Partition_Allocate();                              
                                                                      
  if ( !the_partition ) {                                             
 801151c:	2b 83 00 28 	lw r3,(sp+40)                                  
 8011520:	2b 84 00 20 	lw r4,(sp+32)                                  
 8011524:	2b 85 00 24 	lw r5,(sp+36)                                  
 8011528:	2b 86 00 1c 	lw r6,(sp+28)                                  
 801152c:	44 2f 00 26 	be r1,r15,80115c4 <rtems_partition_create+0x144>
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
 8011530:	58 25 00 1c 	sw (r1+28),r5                                  
    return RTEMS_TOO_MANY;                                            
  }                                                                   
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
  the_partition->length                = length;                      
 8011534:	58 23 00 14 	sw (r1+20),r3                                  
  the_partition->buffer_size           = buffer_size;                 
 8011538:	58 24 00 18 	sw (r1+24),r4                                  
    _Thread_Enable_dispatch();                                        
    return RTEMS_TOO_MANY;                                            
  }                                                                   
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
 801153c:	58 2b 00 10 	sw (r1+16),r11                                 
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
 8011540:	58 20 00 20 	sw (r1+32),r0                                  
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
                        length / buffer_size, buffer_size );          
 8011544:	b8 80 10 00 	mv r2,r4                                       
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
 8011548:	34 2f 00 24 	addi r15,r1,36                                 
                        length / buffer_size, buffer_size );          
 801154c:	b8 60 08 00 	mv r1,r3                                       
 8011550:	5b 86 00 1c 	sw (sp+28),r6                                  
 8011554:	5b 84 00 20 	sw (sp+32),r4                                  
 8011558:	f8 00 81 4d 	calli 8031a8c <__udivsi3>                      
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
 801155c:	2b 84 00 20 	lw r4,(sp+32)                                  
                        length / buffer_size, buffer_size );          
 8011560:	b8 20 18 00 	mv r3,r1                                       
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
 8011564:	b9 60 10 00 	mv r2,r11                                      
 8011568:	b9 e0 08 00 	mv r1,r15                                      
 801156c:	f8 00 0f 98 	calli 80153cc <_Chain_Initialize>              
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 8011570:	29 a2 00 08 	lw r2,(r13+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8011574:	29 c3 00 1c 	lw r3,(r14+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8011578:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 801157c:	b4 21 08 00 	add r1,r1,r1                                   
 8011580:	b4 21 08 00 	add r1,r1,r1                                   
 8011584:	b4 61 08 00 	add r1,r3,r1                                   
 8011588:	58 2d 00 00 	sw (r1+0),r13                                  
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  the_object->name = name;                                            
 801158c:	59 ac 00 0c 	sw (r13+12),r12                                
    &_Partition_Information,                                          
    &the_partition->Object,                                           
    (Objects_Name) name                                               
  );                                                                  
                                                                      
  *id = the_partition->Object.id;                                     
 8011590:	2b 86 00 1c 	lw r6,(sp+28)                                  
 8011594:	58 c2 00 00 	sw (r6+0),r2                                   
      name,                                                           
      0                  /* Not used */                               
    );                                                                
#endif                                                                
                                                                      
  _Thread_Enable_dispatch();                                          
 8011598:	f8 00 1c 9e 	calli 8018810 <_Thread_Enable_dispatch>        
  return RTEMS_SUCCESSFUL;                                            
 801159c:	34 07 00 00 	mvi r7,0                                       
}                                                                     
 80115a0:	b8 e0 08 00 	mv r1,r7                                       
 80115a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80115a8:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80115ac:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80115b0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80115b4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80115b8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80115bc:	37 9c 00 28 	addi sp,sp,40                                  
 80115c0:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();               /* prevents deletion */   
                                                                      
  the_partition = _Partition_Allocate();                              
                                                                      
  if ( !the_partition ) {                                             
    _Thread_Enable_dispatch();                                        
 80115c4:	f8 00 1c 93 	calli 8018810 <_Thread_Enable_dispatch>        
    return RTEMS_TOO_MANY;                                            
 80115c8:	34 07 00 05 	mvi r7,5                                       
 80115cc:	e3 ff ff f5 	bi 80115a0 <rtems_partition_create+0x120>      
                                                                      

08000900 <rtems_print_buffer>: void rtems_print_buffer( const unsigned char *buffer, int length ) {
 8000900:	37 9c ff 50 	addi sp,sp,-176                                
 8000904:	5b 8b 00 38 	sw (sp+56),r11                                 
 8000908:	5b 8c 00 34 	sw (sp+52),r12                                 
 800090c:	5b 8d 00 30 	sw (sp+48),r13                                 
 8000910:	5b 8e 00 2c 	sw (sp+44),r14                                 
 8000914:	5b 8f 00 28 	sw (sp+40),r15                                 
 8000918:	5b 90 00 24 	sw (sp+36),r16                                 
 800091c:	5b 91 00 20 	sw (sp+32),r17                                 
 8000920:	5b 92 00 1c 	sw (sp+28),r18                                 
 8000924:	5b 93 00 18 	sw (sp+24),r19                                 
 8000928:	5b 94 00 14 	sw (sp+20),r20                                 
 800092c:	5b 95 00 10 	sw (sp+16),r21                                 
 8000930:	5b 96 00 0c 	sw (sp+12),r22                                 
 8000934:	5b 97 00 08 	sw (sp+8),r23                                  
 8000938:	5b 9d 00 04 	sw (sp+4),ra                                   
 800093c:	b8 40 a8 00 	mv r21,r2                                      
 8000940:	b8 20 b0 00 	mv r22,r1                                      
                                                                      
  int i, mod, max;                                                    
                                                                      
  if ( !length ) return;                                              
 8000944:	44 40 00 41 	be r2,r0,8000a48 <rtems_print_buffer+0x148>    
                                                                      
  mod = length % 16;                                                  
 8000948:	b8 40 08 00 	mv r1,r2                                       
 800094c:	34 02 00 1f 	mvi r2,31                                      
 8000950:	f8 00 6c 4a 	calli 801ba78 <__ashrsi3>                      
 8000954:	9a a1 98 00 	xor r19,r21,r1                                 
 8000958:	ca 61 98 00 	sub r19,r19,r1                                 
 800095c:	22 73 00 0f 	andi r19,r19,0xf                               
 8000960:	9a 61 98 00 	xor r19,r19,r1                                 
 8000964:	ca 61 98 00 	sub r19,r19,r1                                 
                                                                      
  max = length - mod;                                                 
 8000968:	ca b3 a8 00 	sub r21,r21,r19                                
                                                                      
  for ( i=0 ; i<max ; i+=16 )                                         
 800096c:	4c 15 00 36 	bge r0,r21,8000a44 <rtems_print_buffer+0x144>  
 8000970:	78 0f 08 01 	mvhi r15,0x801                                 
 8000974:	78 0d 08 01 	mvhi r13,0x801                                 
 8000978:	78 0e 08 01 	mvhi r14,0x801                                 
 800097c:	34 12 00 00 	mvi r18,0                                      
 8000980:	37 8b 00 3c 	addi r11,sp,60                                 
 8000984:	39 ef cd 28 	ori r15,r15,0xcd28                             
 8000988:	39 ad e2 10 	ori r13,r13,0xe210                             
 800098c:	39 ce cd 30 	ori r14,r14,0xcd30                             
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000990:	34 11 00 10 	mvi r17,16                                     
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
 8000994:	34 14 00 7c 	mvi r20,124                                    
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, " " );                                       
                                                                      
  strcat( line_buffer, "|\n" );                                       
 8000998:	34 17 00 0a 	mvi r23,10                                     
static inline void Dump_Line(                                         
  const unsigned char *buffer,                                        
  int                  length                                         
);                                                                    
                                                                      
void rtems_print_buffer(                                              
 800099c:	b6 d2 80 00 	add r16,r22,r18                                
{                                                                     
                                                                      
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
 80009a0:	33 80 00 3c 	sb (sp+60),r0                                  
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 80009a4:	34 0c 00 00 	mvi r12,0                                      
static inline void Dump_Line(                                         
  const unsigned char *buffer,                                        
  int                  length                                         
);                                                                    
                                                                      
void rtems_print_buffer(                                              
 80009a8:	b6 0c 10 00 	add r2,r16,r12                                 
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
 80009ac:	40 44 00 00 	lbu r4,(r2+0)                                  
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 80009b0:	35 8c 00 01 	addi r12,r12,1                                 
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
 80009b4:	b9 60 08 00 	mv r1,r11                                      
 80009b8:	b9 e0 10 00 	mv r2,r15                                      
 80009bc:	b9 60 18 00 	mv r3,r11                                      
 80009c0:	f8 00 34 c1 	calli 800dcc4 <sprintf>                        
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 80009c4:	5d 91 ff f9 	bne r12,r17,80009a8 <rtems_print_buffer+0xa8>  
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
 80009c8:	b9 60 08 00 	mv r1,r11                                      
 80009cc:	f8 00 35 e9 	calli 800e170 <strlen>                         
 80009d0:	b5 61 10 00 	add r2,r11,r1                                  
 80009d4:	30 54 00 00 	sb (r2+0),r20                                  
 80009d8:	30 40 00 01 	sb (r2+1),r0                                   
  for( i=0 ; i<length ; i++ )                                         
 80009dc:	34 0c 00 00 	mvi r12,0                                      
static inline void Dump_Line(                                         
  const unsigned char *buffer,                                        
  int                  length                                         
);                                                                    
                                                                      
void rtems_print_buffer(                                              
 80009e0:	b6 0c 10 00 	add r2,r16,r12                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 80009e4:	40 45 00 00 	lbu r5,(r2+0)                                  
 80009e8:	29 a3 00 00 	lw r3,(r13+0)                                  
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
 80009ec:	b9 60 08 00 	mv r1,r11                                      
 80009f0:	b9 c0 10 00 	mv r2,r14                                      
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 80009f4:	b4 65 18 00 	add r3,r3,r5                                   
 80009f8:	40 66 00 01 	lbu r6,(r3+1)                                  
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
 80009fc:	35 8c 00 01 	addi r12,r12,1                                 
    sprintf( line_buffer, "%s%c", line_buffer,                        
 8000a00:	b9 60 18 00 	mv r3,r11                                      
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 8000a04:	20 c6 00 97 	andi r6,r6,0x97                                
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
 8000a08:	34 04 00 2e 	mvi r4,46                                      
 8000a0c:	44 c0 00 02 	be r6,r0,8000a14 <rtems_print_buffer+0x114>    
 8000a10:	b8 a0 20 00 	mv r4,r5                                       
 8000a14:	f8 00 34 ac 	calli 800dcc4 <sprintf>                        
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
 8000a18:	5d 91 ff f2 	bne r12,r17,80009e0 <rtems_print_buffer+0xe0>  
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, " " );                                       
                                                                      
  strcat( line_buffer, "|\n" );                                       
 8000a1c:	b9 60 08 00 	mv r1,r11                                      
 8000a20:	f8 00 35 d4 	calli 800e170 <strlen>                         
 8000a24:	b5 61 10 00 	add r2,r11,r1                                  
                                                                      
  mod = length % 16;                                                  
                                                                      
  max = length - mod;                                                 
                                                                      
  for ( i=0 ; i<max ; i+=16 )                                         
 8000a28:	36 52 00 10 	addi r18,r18,16                                
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, " " );                                       
                                                                      
  strcat( line_buffer, "|\n" );                                       
 8000a2c:	30 54 00 00 	sb (r2+0),r20                                  
 8000a30:	30 57 00 01 	sb (r2+1),r23                                  
 8000a34:	30 40 00 02 	sb (r2+2),r0                                   
                                                                      
  printk( line_buffer );                                              
 8000a38:	b9 60 08 00 	mv r1,r11                                      
 8000a3c:	f8 00 07 8f 	calli 8002878 <printk>                         
                                                                      
  mod = length % 16;                                                  
                                                                      
  max = length - mod;                                                 
                                                                      
  for ( i=0 ; i<max ; i+=16 )                                         
 8000a40:	4a b2 ff d7 	bg r21,r18,800099c <rtems_print_buffer+0x9c>   
    Dump_Line( &buffer[ i ], 16 );                                    
                                                                      
  if ( mod )                                                          
 8000a44:	5e 60 00 11 	bne r19,r0,8000a88 <rtems_print_buffer+0x188>  
    Dump_Line( &buffer[ max ], mod );                                 
}                                                                     
 8000a48:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000a4c:	2b 8b 00 38 	lw r11,(sp+56)                                 
 8000a50:	2b 8c 00 34 	lw r12,(sp+52)                                 
 8000a54:	2b 8d 00 30 	lw r13,(sp+48)                                 
 8000a58:	2b 8e 00 2c 	lw r14,(sp+44)                                 
 8000a5c:	2b 8f 00 28 	lw r15,(sp+40)                                 
 8000a60:	2b 90 00 24 	lw r16,(sp+36)                                 
 8000a64:	2b 91 00 20 	lw r17,(sp+32)                                 
 8000a68:	2b 92 00 1c 	lw r18,(sp+28)                                 
 8000a6c:	2b 93 00 18 	lw r19,(sp+24)                                 
 8000a70:	2b 94 00 14 	lw r20,(sp+20)                                 
 8000a74:	2b 95 00 10 	lw r21,(sp+16)                                 
 8000a78:	2b 96 00 0c 	lw r22,(sp+12)                                 
 8000a7c:	2b 97 00 08 	lw r23,(sp+8)                                  
 8000a80:	37 9c 00 b0 	addi sp,sp,176                                 
 8000a84:	c3 a0 00 00 	ret                                            
{                                                                     
                                                                      
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
 8000a88:	33 80 00 3c 	sb (sp+60),r0                                  
                                                                      
  for ( i=0 ; i<max ; i+=16 )                                         
    Dump_Line( &buffer[ i ], 16 );                                    
                                                                      
  if ( mod )                                                          
    Dump_Line( &buffer[ max ], mod );                                 
 8000a8c:	b6 d5 a8 00 	add r21,r22,r21                                
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000a90:	4a 60 00 2a 	bg r19,r0,8000b38 <rtems_print_buffer+0x238>   
 8000a94:	34 0c 00 00 	mvi r12,0                                      
 8000a98:	37 8b 00 3c 	addi r11,sp,60                                 
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
 8000a9c:	34 0d 00 20 	mvi r13,32                                     
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000aa0:	34 0e 00 0f 	mvi r14,15                                     
    strcat( line_buffer, "   " );                                     
 8000aa4:	b9 60 08 00 	mv r1,r11                                      
 8000aa8:	f8 00 35 b2 	calli 800e170 <strlen>                         
 8000aac:	b5 61 08 00 	add r1,r11,r1                                  
 8000ab0:	30 2d 00 00 	sb (r1+0),r13                                  
 8000ab4:	30 2d 00 01 	sb (r1+1),r13                                  
 8000ab8:	30 2d 00 02 	sb (r1+2),r13                                  
 8000abc:	30 20 00 03 	sb (r1+3),r0                                   
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000ac0:	35 8c 00 01 	addi r12,r12,1                                 
 8000ac4:	4d cc ff f8 	bge r14,r12,8000aa4 <rtems_print_buffer+0x1a4> 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
 8000ac8:	b9 60 08 00 	mv r1,r11                                      
 8000acc:	f8 00 35 a9 	calli 800e170 <strlen>                         
 8000ad0:	b5 61 08 00 	add r1,r11,r1                                  
 8000ad4:	34 02 00 7c 	mvi r2,124                                     
 8000ad8:	30 22 00 00 	sb (r1+0),r2                                   
 8000adc:	30 20 00 01 	sb (r1+1),r0                                   
  for( i=0 ; i<length ; i++ )                                         
 8000ae0:	4a 60 00 2b 	bg r19,r0,8000b8c <rtems_print_buffer+0x28c>   
 8000ae4:	34 13 00 00 	mvi r19,0                                      
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, " " );                                       
 8000ae8:	34 0d 00 20 	mvi r13,32                                     
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000aec:	34 0c 00 0f 	mvi r12,15                                     
    strcat( line_buffer, " " );                                       
 8000af0:	b9 60 08 00 	mv r1,r11                                      
 8000af4:	f8 00 35 9f 	calli 800e170 <strlen>                         
 8000af8:	b5 61 08 00 	add r1,r11,r1                                  
 8000afc:	30 2d 00 00 	sb (r1+0),r13                                  
 8000b00:	30 20 00 01 	sb (r1+1),r0                                   
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000b04:	36 73 00 01 	addi r19,r19,1                                 
 8000b08:	4d 93 ff fa 	bge r12,r19,8000af0 <rtems_print_buffer+0x1f0> 
    strcat( line_buffer, " " );                                       
                                                                      
  strcat( line_buffer, "|\n" );                                       
 8000b0c:	b9 60 08 00 	mv r1,r11                                      
 8000b10:	f8 00 35 98 	calli 800e170 <strlen>                         
 8000b14:	b5 61 08 00 	add r1,r11,r1                                  
 8000b18:	34 02 00 7c 	mvi r2,124                                     
 8000b1c:	30 22 00 00 	sb (r1+0),r2                                   
 8000b20:	34 02 00 0a 	mvi r2,10                                      
 8000b24:	30 22 00 01 	sb (r1+1),r2                                   
 8000b28:	30 20 00 02 	sb (r1+2),r0                                   
                                                                      
  printk( line_buffer );                                              
 8000b2c:	b9 60 08 00 	mv r1,r11                                      
 8000b30:	f8 00 07 52 	calli 8002878 <printk>                         
 8000b34:	e3 ff ff c5 	bi 8000a48 <rtems_print_buffer+0x148>          
 8000b38:	78 0f 08 01 	mvhi r15,0x801                                 
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000b3c:	34 0c 00 00 	mvi r12,0                                      
 8000b40:	37 8b 00 3c 	addi r11,sp,60                                 
 8000b44:	39 ef cd 28 	ori r15,r15,0xcd28                             
static inline void Dump_Line(                                         
  const unsigned char *buffer,                                        
  int                  length                                         
);                                                                    
                                                                      
void rtems_print_buffer(                                              
 8000b48:	b6 ac 08 00 	add r1,r21,r12                                 
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
 8000b4c:	40 24 00 00 	lbu r4,(r1+0)                                  
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000b50:	35 8c 00 01 	addi r12,r12,1                                 
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
 8000b54:	b9 60 08 00 	mv r1,r11                                      
 8000b58:	b9 e0 10 00 	mv r2,r15                                      
 8000b5c:	b9 60 18 00 	mv r3,r11                                      
 8000b60:	f8 00 34 59 	calli 800dcc4 <sprintf>                        
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000b64:	4a 6c ff f9 	bg r19,r12,8000b48 <rtems_print_buffer+0x248>  
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000b68:	34 01 00 0f 	mvi r1,15                                      
 8000b6c:	ba 60 60 00 	mv r12,r19                                     
 8000b70:	4c 33 ff cb 	bge r1,r19,8000a9c <rtems_print_buffer+0x19c>  <== ALWAYS TAKEN
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
 8000b74:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8000b78:	f8 00 35 7e 	calli 800e170 <strlen>                         <== NOT EXECUTED
 8000b7c:	b5 61 08 00 	add r1,r11,r1                                  <== NOT EXECUTED
 8000b80:	34 02 00 7c 	mvi r2,124                                     <== NOT EXECUTED
 8000b84:	30 22 00 00 	sb (r1+0),r2                                   <== NOT EXECUTED
 8000b88:	30 20 00 01 	sb (r1+1),r0                                   <== NOT EXECUTED
 8000b8c:	78 0d 08 01 	mvhi r13,0x801                                 
 8000b90:	78 0e 08 01 	mvhi r14,0x801                                 
  for( i=0 ; i<length ; i++ )                                         
 8000b94:	34 0c 00 00 	mvi r12,0                                      
 8000b98:	39 ad e2 10 	ori r13,r13,0xe210                             
 8000b9c:	39 ce cd 30 	ori r14,r14,0xcd30                             
static inline void Dump_Line(                                         
  const unsigned char *buffer,                                        
  int                  length                                         
);                                                                    
                                                                      
void rtems_print_buffer(                                              
 8000ba0:	b6 ac 08 00 	add r1,r21,r12                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 8000ba4:	40 25 00 00 	lbu r5,(r1+0)                                  
 8000ba8:	29 a3 00 00 	lw r3,(r13+0)                                  
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
 8000bac:	b9 60 08 00 	mv r1,r11                                      
 8000bb0:	b9 c0 10 00 	mv r2,r14                                      
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 8000bb4:	b4 65 18 00 	add r3,r3,r5                                   
 8000bb8:	40 66 00 01 	lbu r6,(r3+1)                                  
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
 8000bbc:	35 8c 00 01 	addi r12,r12,1                                 
    sprintf( line_buffer, "%s%c", line_buffer,                        
 8000bc0:	b9 60 18 00 	mv r3,r11                                      
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 8000bc4:	20 c6 00 97 	andi r6,r6,0x97                                
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
 8000bc8:	34 04 00 2e 	mvi r4,46                                      
 8000bcc:	44 c0 00 02 	be r6,r0,8000bd4 <rtems_print_buffer+0x2d4>    
 8000bd0:	b8 a0 20 00 	mv r4,r5                                       
 8000bd4:	f8 00 34 3c 	calli 800dcc4 <sprintf>                        
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
 8000bd8:	4a 6c ff f2 	bg r19,r12,8000ba0 <rtems_print_buffer+0x2a0>  
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000bdc:	34 01 00 0f 	mvi r1,15                                      
 8000be0:	4c 33 ff c2 	bge r1,r19,8000ae8 <rtems_print_buffer+0x1e8>  <== ALWAYS TAKEN
 8000be4:	e3 ff ff ca 	bi 8000b0c <rtems_print_buffer+0x20c>          <== NOT EXECUTED
                                                                      

08004318 <rtems_rate_monotonic_period>: rtems_status_code rtems_rate_monotonic_period( rtems_id id, rtems_interval length ) {
 8004318:	37 9c ff e0 	addi sp,sp,-32                                 
 800431c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8004320:	5b 8c 00 14 	sw (sp+20),r12                                 
 8004324:	5b 8d 00 10 	sw (sp+16),r13                                 
 8004328:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800432c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8004330:	5b 9d 00 04 	sw (sp+4),ra                                   
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Rate_monotonic_Control *)                                   
    _Objects_Get( &_Rate_monotonic_Information, id, location );       
 8004334:	78 03 08 02 	mvhi r3,0x802                                  
 8004338:	b8 20 68 00 	mv r13,r1                                      
 800433c:	b8 60 08 00 	mv r1,r3                                       
 8004340:	b8 40 70 00 	mv r14,r2                                      
 8004344:	38 21 19 00 	ori r1,r1,0x1900                               
 8004348:	b9 a0 10 00 	mv r2,r13                                      
 800434c:	37 83 00 20 	addi r3,sp,32                                  
 8004350:	f8 00 0a 88 	calli 8006d70 <_Objects_Get>                   
 8004354:	b8 20 58 00 	mv r11,r1                                      
  rtems_rate_monotonic_period_states   local_state;                   
  ISR_Level                            level;                         
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
                                                                      
  switch ( location ) {                                               
 8004358:	2b 81 00 20 	lw r1,(sp+32)                                  
 800435c:	44 20 00 0a 	be r1,r0,8004384 <rtems_rate_monotonic_period+0x6c>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8004360:	34 01 00 04 	mvi r1,4                                       
}                                                                     
 8004364:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004368:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800436c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004370:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004374:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8004378:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800437c:	37 9c 00 20 	addi sp,sp,32                                  
 8004380:	c3 a0 00 00 	ret                                            
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
 8004384:	78 0c 08 02 	mvhi r12,0x802                                 
 8004388:	39 8c 1e d4 	ori r12,r12,0x1ed4                             
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
                                                                      
  switch ( location ) {                                               
    case OBJECTS_LOCAL:                                               
      if ( !_Thread_Is_executing( the_period->owner ) ) {             
 800438c:	29 62 00 40 	lw r2,(r11+64)                                 
 8004390:	29 81 00 0c 	lw r1,(r12+12)                                 
 8004394:	44 41 00 0b 	be r2,r1,80043c0 <rtems_rate_monotonic_period+0xa8>
        _Thread_Enable_dispatch();                                    
 8004398:	f8 00 0e 52 	calli 8007ce0 <_Thread_Enable_dispatch>        
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
 800439c:	34 01 00 17 	mvi r1,23                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80043a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80043a4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80043a8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80043ac:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80043b0:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80043b4:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80043b8:	37 9c 00 20 	addi sp,sp,32                                  
 80043bc:	c3 a0 00 00 	ret                                            
      if ( !_Thread_Is_executing( the_period->owner ) ) {             
        _Thread_Enable_dispatch();                                    
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
      }                                                               
                                                                      
      if ( length == RTEMS_PERIOD_STATUS ) {                          
 80043c0:	5d c0 00 0f 	bne r14,r0,80043fc <rtems_rate_monotonic_period+0xe4>
        switch ( the_period->state ) {                                
 80043c4:	29 62 00 38 	lw r2,(r11+56)                                 
 80043c8:	34 03 00 04 	mvi r3,4                                       
 80043cc:	34 01 00 00 	mvi r1,0                                       
 80043d0:	54 43 00 07 	bgu r2,r3,80043ec <rtems_rate_monotonic_period+0xd4><== NEVER TAKEN
 80043d4:	78 01 08 01 	mvhi r1,0x801                                  
 80043d8:	b4 42 10 00 	add r2,r2,r2                                   
 80043dc:	38 21 f4 18 	ori r1,r1,0xf418                               
 80043e0:	b4 42 10 00 	add r2,r2,r2                                   
 80043e4:	b4 22 10 00 	add r2,r1,r2                                   
 80043e8:	28 41 00 00 	lw r1,(r2+0)                                   
        );                                                            
                                                                      
        the_period->next_length = length;                             
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
 80043ec:	5b 81 00 1c 	sw (sp+28),r1                                  
 80043f0:	f8 00 0e 3c 	calli 8007ce0 <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 80043f4:	2b 81 00 1c 	lw r1,(sp+28)                                  
 80043f8:	e3 ff ff db 	bi 8004364 <rtems_rate_monotonic_period+0x4c>  
        }                                                             
        _Thread_Enable_dispatch();                                    
        return( return_value );                                       
      }                                                               
                                                                      
      _ISR_Disable( level );                                          
 80043fc:	90 00 78 00 	rcsr r15,IE                                    
 8004400:	34 01 ff fe 	mvi r1,-2                                      
 8004404:	a1 e1 08 00 	and r1,r15,r1                                  
 8004408:	d0 01 00 00 	wcsr IE,r1                                     
      if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {           
 800440c:	29 62 00 38 	lw r2,(r11+56)                                 
 8004410:	44 40 00 15 	be r2,r0,8004464 <rtems_rate_monotonic_period+0x14c>
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {             
 8004414:	34 01 00 02 	mvi r1,2                                       
 8004418:	44 41 00 26 	be r2,r1,80044b0 <rtems_rate_monotonic_period+0x198>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 800441c:	34 01 00 04 	mvi r1,4                                       
                                                                      
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {            
 8004420:	5c 41 ff d1 	bne r2,r1,8004364 <rtems_rate_monotonic_period+0x4c><== NEVER TAKEN
        /*                                                            
         *  Update statistics from the concluding period              
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
 8004424:	b9 60 08 00 	mv r1,r11                                      
 8004428:	fb ff ff 72 	calli 80041f0 <_Rate_monotonic_Update_statistics>
                                                                      
        _ISR_Enable( level );                                         
 800442c:	d0 0f 00 00 	wcsr IE,r15                                    
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
 8004430:	34 03 00 02 	mvi r3,2                                       
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8004434:	78 01 08 02 	mvhi r1,0x802                                  
 8004438:	38 21 1a e8 	ori r1,r1,0x1ae8                               
 800443c:	35 62 00 10 	addi r2,r11,16                                 
 8004440:	59 63 00 38 	sw (r11+56),r3                                 
        the_period->next_length = length;                             
 8004444:	59 6e 00 3c 	sw (r11+60),r14                                
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8004448:	59 6e 00 1c 	sw (r11+28),r14                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800444c:	f8 00 13 66 	calli 80091e4 <_Watchdog_Insert>               
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
        return RTEMS_TIMEOUT;                                         
 8004450:	34 01 00 06 	mvi r1,6                                       
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
        the_period->next_length = length;                             
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
 8004454:	5b 81 00 1c 	sw (sp+28),r1                                  
 8004458:	f8 00 0e 22 	calli 8007ce0 <_Thread_Enable_dispatch>        
        return RTEMS_TIMEOUT;                                         
 800445c:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8004460:	e3 ff ff c1 	bi 8004364 <rtems_rate_monotonic_period+0x4c>  
        return( return_value );                                       
      }                                                               
                                                                      
      _ISR_Disable( level );                                          
      if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {           
        _ISR_Enable( level );                                         
 8004464:	d0 0f 00 00 	wcsr IE,r15                                    
                                                                      
        /*                                                            
         *  Baseline statistics information for the beginning of a period.
         */                                                           
        _Rate_monotonic_Initiate_statistics( the_period );            
 8004468:	b9 60 08 00 	mv r1,r11                                      
 800446c:	fb ff ff 36 	calli 8004144 <_Rate_monotonic_Initiate_statistics>
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 8004470:	78 03 08 00 	mvhi r3,0x800                                  
 8004474:	38 63 48 a8 	ori r3,r3,0x48a8                               
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
 8004478:	34 04 00 02 	mvi r4,2                                       
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800447c:	78 01 08 02 	mvhi r1,0x802                                  
 8004480:	38 21 1a e8 	ori r1,r1,0x1ae8                               
 8004484:	35 62 00 10 	addi r2,r11,16                                 
 8004488:	59 64 00 38 	sw (r11+56),r4                                 
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 800448c:	59 60 00 18 	sw (r11+24),r0                                 
  the_watchdog->routine   = routine;                                  
 8004490:	59 63 00 2c 	sw (r11+44),r3                                 
  the_watchdog->id        = id;                                       
 8004494:	59 6d 00 30 	sw (r11+48),r13                                
  the_watchdog->user_data = user_data;                                
 8004498:	59 60 00 34 	sw (r11+52),r0                                 
          _Rate_monotonic_Timeout,                                    
          id,                                                         
          NULL                                                        
        );                                                            
                                                                      
        the_period->next_length = length;                             
 800449c:	59 6e 00 3c 	sw (r11+60),r14                                
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 80044a0:	59 6e 00 1c 	sw (r11+28),r14                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 80044a4:	f8 00 13 50 	calli 80091e4 <_Watchdog_Insert>               
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
 80044a8:	34 01 00 00 	mvi r1,0                                       
 80044ac:	e3 ff ff d0 	bi 80043ec <rtems_rate_monotonic_period+0xd4>  
                                                                      
      if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {             
        /*                                                            
         *  Update statistics from the concluding period.             
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
 80044b0:	b9 60 08 00 	mv r1,r11                                      
 80044b4:	fb ff ff 4f 	calli 80041f0 <_Rate_monotonic_Update_statistics>
        /*                                                            
         *  This tells the _Rate_monotonic_Timeout that this task is  
         *  in the process of blocking on the period and that we      
         *  may be changing the length of the next period.            
         */                                                           
        the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;         
 80044b8:	34 01 00 01 	mvi r1,1                                       
 80044bc:	59 61 00 38 	sw (r11+56),r1                                 
        the_period->next_length = length;                             
 80044c0:	59 6e 00 3c 	sw (r11+60),r14                                
                                                                      
        _ISR_Enable( level );                                         
 80044c4:	d0 0f 00 00 	wcsr IE,r15                                    
                                                                      
        _Thread_Executing->Wait.id = the_period->Object.id;           
 80044c8:	29 83 00 0c 	lw r3,(r12+12)                                 
 80044cc:	29 64 00 08 	lw r4,(r11+8)                                  
        _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
 80044d0:	34 02 40 00 	mvi r2,16384                                   
 80044d4:	b8 60 08 00 	mv r1,r3                                       
        the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;         
        the_period->next_length = length;                             
                                                                      
        _ISR_Enable( level );                                         
                                                                      
        _Thread_Executing->Wait.id = the_period->Object.id;           
 80044d8:	58 64 00 20 	sw (r3+32),r4                                  
        _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
 80044dc:	f8 00 10 93 	calli 8008728 <_Thread_Set_state>              
                                                                      
        /*                                                            
         *  Did the watchdog timer expire while we were actually blocking
         *  on it?                                                    
         */                                                           
        _ISR_Disable( level );                                        
 80044e0:	90 00 08 00 	rcsr r1,IE                                     
 80044e4:	34 02 ff fe 	mvi r2,-2                                      
 80044e8:	a0 22 10 00 	and r2,r1,r2                                   
 80044ec:	d0 02 00 00 	wcsr IE,r2                                     
          local_state = the_period->state;                            
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
 80044f0:	34 03 00 02 	mvi r3,2                                       
        /*                                                            
         *  Did the watchdog timer expire while we were actually blocking
         *  on it?                                                    
         */                                                           
        _ISR_Disable( level );                                        
          local_state = the_period->state;                            
 80044f4:	29 62 00 38 	lw r2,(r11+56)                                 
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
 80044f8:	59 63 00 38 	sw (r11+56),r3                                 
        _ISR_Enable( level );                                         
 80044fc:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
        /*                                                            
         *  If it did, then we want to unblock ourself and continue as
         *  if nothing happen.  The period was reset in the timeout routine.
         */                                                           
        if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )   
 8004500:	34 01 00 03 	mvi r1,3                                       
 8004504:	44 41 00 04 	be r2,r1,8004514 <rtems_rate_monotonic_period+0x1fc><== NEVER TAKEN
          _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
                                                                      
        _Thread_Enable_dispatch();                                    
 8004508:	f8 00 0d f6 	calli 8007ce0 <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 800450c:	34 01 00 00 	mvi r1,0                                       
 8004510:	e3 ff ff 95 	bi 8004364 <rtems_rate_monotonic_period+0x4c>  
        /*                                                            
         *  If it did, then we want to unblock ourself and continue as
         *  if nothing happen.  The period was reset in the timeout routine.
         */                                                           
        if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )   
          _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
 8004514:	29 81 00 0c 	lw r1,(r12+12)                                 <== NOT EXECUTED
 8004518:	34 02 40 00 	mvi r2,16384                                   <== NOT EXECUTED
 800451c:	f8 00 0d 18 	calli 800797c <_Thread_Clear_state>            <== NOT EXECUTED
 8004520:	e3 ff ff fa 	bi 8004508 <rtems_rate_monotonic_period+0x1f0> <== NOT EXECUTED
                                                                      

08004524 <rtems_rate_monotonic_report_statistics_with_plugin>: */ void rtems_rate_monotonic_report_statistics_with_plugin( void *context, rtems_printk_plugin_t print ) {
 8004524:	37 9c ff 5c 	addi sp,sp,-164                                
 8004528:	5b 8b 00 44 	sw (sp+68),r11                                 
 800452c:	5b 8c 00 40 	sw (sp+64),r12                                 
 8004530:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8004534:	5b 8e 00 38 	sw (sp+56),r14                                 
 8004538:	5b 8f 00 34 	sw (sp+52),r15                                 
 800453c:	5b 90 00 30 	sw (sp+48),r16                                 
 8004540:	5b 91 00 2c 	sw (sp+44),r17                                 
 8004544:	5b 92 00 28 	sw (sp+40),r18                                 
 8004548:	5b 93 00 24 	sw (sp+36),r19                                 
 800454c:	5b 94 00 20 	sw (sp+32),r20                                 
 8004550:	5b 95 00 1c 	sw (sp+28),r21                                 
 8004554:	5b 96 00 18 	sw (sp+24),r22                                 
 8004558:	5b 97 00 14 	sw (sp+20),r23                                 
 800455c:	5b 98 00 10 	sw (sp+16),r24                                 
 8004560:	5b 99 00 0c 	sw (sp+12),r25                                 
 8004564:	5b 9b 00 08 	sw (sp+8),fp                                   
 8004568:	5b 9d 00 04 	sw (sp+4),ra                                   
 800456c:	b8 40 68 00 	mv r13,r2                                      
 8004570:	b8 20 78 00 	mv r15,r1                                      
  rtems_id                               id;                          
  rtems_rate_monotonic_period_statistics the_stats;                   
  rtems_rate_monotonic_period_status     the_status;                  
  char                                   name[5];                     
                                                                      
  if ( !print )                                                       
 8004574:	44 40 00 2f 	be r2,r0,8004630 <rtems_rate_monotonic_report_statistics_with_plugin+0x10c><== NEVER TAKEN
    return;                                                           
                                                                      
  (*print)( context, "Period information by period\n" );              
 8004578:	78 02 08 01 	mvhi r2,0x801                                  
 800457c:	38 42 f4 2c 	ori r2,r2,0xf42c                               
 8004580:	d9 a0 00 00 	call r13                                       
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    (*print)( context, "--- CPU times are in seconds ---\n" );        
 8004584:	78 02 08 01 	mvhi r2,0x801                                  
 8004588:	38 42 f4 4c 	ori r2,r2,0xf44c                               
 800458c:	b9 e0 08 00 	mv r1,r15                                      
 8004590:	d9 a0 00 00 	call r13                                       
    (*print)( context, "--- Wall times are in seconds ---\n" );       
 8004594:	78 02 08 01 	mvhi r2,0x801                                  
 8004598:	38 42 f4 70 	ori r2,r2,0xf470                               
 800459c:	b9 e0 08 00 	mv r1,r15                                      
 80045a0:	d9 a0 00 00 	call r13                                       
  Be sure to test the various cases.                                  
  (*print)( context,"\                                                
1234567890123456789012345678901234567890123456789012345678901234567890123456789\
\n");                                                                 
*/                                                                    
  (*print)( context, "   ID     OWNER COUNT MISSED     "              
 80045a4:	78 02 08 01 	mvhi r2,0x801                                  
 80045a8:	38 42 f4 94 	ori r2,r2,0xf494                               
 80045ac:	b9 e0 08 00 	mv r1,r15                                      
 80045b0:	d9 a0 00 00 	call r13                                       
       #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                     
          "          "                                                
       #endif                                                         
          "   WALL TIME\n"                                            
  );                                                                  
  (*print)( context, "                               "                
 80045b4:	78 02 08 01 	mvhi r2,0x801                                  
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
 80045b8:	78 0c 08 02 	mvhi r12,0x802                                 
       #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                     
          "          "                                                
       #endif                                                         
          "   WALL TIME\n"                                            
  );                                                                  
  (*print)( context, "                               "                
 80045bc:	b9 e0 08 00 	mv r1,r15                                      
 80045c0:	38 42 f4 e0 	ori r2,r2,0xf4e0                               
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
 80045c4:	39 8c 19 00 	ori r12,r12,0x1900                             
       #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                     
          "          "                                                
       #endif                                                         
          "   WALL TIME\n"                                            
  );                                                                  
  (*print)( context, "                               "                
 80045c8:	d9 a0 00 00 	call r13                                       
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
 80045cc:	29 81 00 0c 	lw r1,(r12+12)                                 
 80045d0:	29 8b 00 08 	lw r11,(r12+8)                                 
 80045d4:	55 61 00 17 	bgu r11,r1,8004630 <rtems_rate_monotonic_report_statistics_with_plugin+0x10c><== NEVER TAKEN
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
 80045d8:	78 12 08 01 	mvhi r18,0x801                                 
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
      (*print)( context,                                              
 80045dc:	78 15 08 01 	mvhi r21,0x801                                 
      struct timespec *min_wall = &the_stats.min_wall_time;           
      struct timespec *max_wall = &the_stats.max_wall_time;           
      struct timespec *total_wall = &the_stats.total_wall_time;       
                                                                      
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
      (*print)( context,                                              
 80045e0:	78 14 08 01 	mvhi r20,0x801                                 
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
 80045e4:	78 11 08 01 	mvhi r17,0x801                                 
 80045e8:	37 90 00 48 	addi r16,sp,72                                 
    #if defined(RTEMS_DEBUG)                                          
      status = rtems_rate_monotonic_get_status( id, &the_status );    
      if ( status != RTEMS_SUCCESSFUL )                               
        continue;                                                     
    #else                                                             
      (void) rtems_rate_monotonic_get_status( id, &the_status );      
 80045ec:	37 98 00 80 	addi r24,sp,128                                
    #endif                                                            
                                                                      
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
 80045f0:	37 93 00 a0 	addi r19,sp,160                                
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
 80045f4:	3a 52 f5 2c 	ori r18,r18,0xf52c                             
    {                                                                 
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      struct timespec  cpu_average;                                   
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
 80045f8:	37 97 00 60 	addi r23,sp,96                                 
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
 80045fc:	37 96 00 98 	addi r22,sp,152                                
      (*print)( context,                                              
 8004600:	3a b5 f5 44 	ori r21,r21,0xf544                             
    {                                                                 
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      struct timespec  wall_average;                                  
      struct timespec *min_wall = &the_stats.min_wall_time;           
      struct timespec *max_wall = &the_stats.max_wall_time;           
      struct timespec *total_wall = &the_stats.total_wall_time;       
 8004604:	37 9b 00 78 	addi fp,sp,120                                 
                                                                      
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
      (*print)( context,                                              
 8004608:	3a 94 f5 64 	ori r20,r20,0xf564                             
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
 800460c:	3a 31 ea 70 	ori r17,r17,0xea70                             
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
        id <= _Rate_monotonic_Information.maximum_id ;                
        id++ ) {                                                      
    status = rtems_rate_monotonic_get_statistics( id, &the_stats );   
 8004610:	b9 60 08 00 	mv r1,r11                                      
 8004614:	ba 00 10 00 	mv r2,r16                                      
 8004618:	f8 00 1e 86 	calli 800c030 <rtems_rate_monotonic_get_statistics>
 800461c:	b8 20 70 00 	mv r14,r1                                      
    if ( status != RTEMS_SUCCESSFUL )                                 
 8004620:	44 20 00 17 	be r1,r0,800467c <rtems_rate_monotonic_report_statistics_with_plugin+0x158>
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
 8004624:	29 85 00 0c 	lw r5,(r12+12)                                 
        id <= _Rate_monotonic_Information.maximum_id ;                
        id++ ) {                                                      
 8004628:	35 6b 00 01 	addi r11,r11,1                                 
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
 800462c:	50 ab ff f9 	bgeu r5,r11,8004610 <rtems_rate_monotonic_report_statistics_with_plugin+0xec>
        the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall
      );                                                              
    #endif                                                            
    }                                                                 
  }                                                                   
}                                                                     
 8004630:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004634:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8004638:	2b 8c 00 40 	lw r12,(sp+64)                                 
 800463c:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8004640:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8004644:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8004648:	2b 90 00 30 	lw r16,(sp+48)                                 
 800464c:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8004650:	2b 92 00 28 	lw r18,(sp+40)                                 
 8004654:	2b 93 00 24 	lw r19,(sp+36)                                 
 8004658:	2b 94 00 20 	lw r20,(sp+32)                                 
 800465c:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8004660:	2b 96 00 18 	lw r22,(sp+24)                                 
 8004664:	2b 97 00 14 	lw r23,(sp+20)                                 
 8004668:	2b 98 00 10 	lw r24,(sp+16)                                 
 800466c:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8004670:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8004674:	37 9c 00 a4 	addi sp,sp,164                                 
 8004678:	c3 a0 00 00 	ret                                            
    #if defined(RTEMS_DEBUG)                                          
      status = rtems_rate_monotonic_get_status( id, &the_status );    
      if ( status != RTEMS_SUCCESSFUL )                               
        continue;                                                     
    #else                                                             
      (void) rtems_rate_monotonic_get_status( id, &the_status );      
 800467c:	bb 00 10 00 	mv r2,r24                                      
 8004680:	b9 60 08 00 	mv r1,r11                                      
 8004684:	f8 00 1e ab 	calli 800c130 <rtems_rate_monotonic_get_status>
    #endif                                                            
                                                                      
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
 8004688:	2b 81 00 80 	lw r1,(sp+128)                                 
 800468c:	ba 60 18 00 	mv r3,r19                                      
 8004690:	34 02 00 05 	mvi r2,5                                       
 8004694:	f8 00 00 ba 	calli 800497c <rtems_object_get_name>          
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
 8004698:	2b 85 00 48 	lw r5,(sp+72)                                  
 800469c:	2b 86 00 4c 	lw r6,(sp+76)                                  
 80046a0:	ba 40 10 00 	mv r2,r18                                      
 80046a4:	b9 60 18 00 	mv r3,r11                                      
 80046a8:	b9 e0 08 00 	mv r1,r15                                      
 80046ac:	ba 60 20 00 	mv r4,r19                                      
 80046b0:	d9 a0 00 00 	call r13                                       
    );                                                                
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
 80046b4:	2b 85 00 48 	lw r5,(sp+72)                                  
      struct timespec  cpu_average;                                   
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
 80046b8:	ba c0 18 00 	mv r3,r22                                      
 80046bc:	ba e0 08 00 	mv r1,r23                                      
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
 80046c0:	ba 20 10 00 	mv r2,r17                                      
    );                                                                
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
 80046c4:	5c ae 00 04 	bne r5,r14,80046d4 <rtems_rate_monotonic_report_statistics_with_plugin+0x1b0>
      (*print)( context, "\n" );                                      
 80046c8:	b9 e0 08 00 	mv r1,r15                                      
 80046cc:	d9 a0 00 00 	call r13                                       
      continue;                                                       
 80046d0:	e3 ff ff d5 	bi 8004624 <rtems_rate_monotonic_report_statistics_with_plugin+0x100>
      struct timespec  cpu_average;                                   
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
 80046d4:	b8 a0 10 00 	mv r2,r5                                       
 80046d8:	f8 00 10 dc 	calli 8008a48 <_Timespec_Divide_by_integer>    
      (*print)( context,                                              
 80046dc:	2b 81 00 54 	lw r1,(sp+84)                                  
 80046e0:	34 02 03 e8 	mvi r2,1000                                    
 80046e4:	f8 00 63 ca 	calli 801d60c <__divsi3>                       
 80046e8:	b8 20 c8 00 	mv r25,r1                                      
 80046ec:	2b 81 00 5c 	lw r1,(sp+92)                                  
 80046f0:	34 02 03 e8 	mvi r2,1000                                    
 80046f4:	f8 00 63 c6 	calli 801d60c <__divsi3>                       
 80046f8:	b8 20 70 00 	mv r14,r1                                      
 80046fc:	2b 81 00 9c 	lw r1,(sp+156)                                 
 8004700:	34 02 03 e8 	mvi r2,1000                                    
 8004704:	f8 00 63 c2 	calli 801d60c <__divsi3>                       
 8004708:	2b 85 00 58 	lw r5,(sp+88)                                  
 800470c:	2b 87 00 98 	lw r7,(sp+152)                                 
 8004710:	2b 83 00 50 	lw r3,(sp+80)                                  
 8004714:	b8 20 40 00 	mv r8,r1                                       
 8004718:	bb 20 20 00 	mv r4,r25                                      
 800471c:	b9 c0 30 00 	mv r6,r14                                      
 8004720:	ba a0 10 00 	mv r2,r21                                      
 8004724:	b9 e0 08 00 	mv r1,r15                                      
 8004728:	d9 a0 00 00 	call r13                                       
      struct timespec  wall_average;                                  
      struct timespec *min_wall = &the_stats.min_wall_time;           
      struct timespec *max_wall = &the_stats.max_wall_time;           
      struct timespec *total_wall = &the_stats.total_wall_time;       
                                                                      
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
 800472c:	2b 82 00 48 	lw r2,(sp+72)                                  
 8004730:	ba c0 18 00 	mv r3,r22                                      
 8004734:	bb 60 08 00 	mv r1,fp                                       
 8004738:	f8 00 10 c4 	calli 8008a48 <_Timespec_Divide_by_integer>    
      (*print)( context,                                              
 800473c:	2b 81 00 6c 	lw r1,(sp+108)                                 
 8004740:	34 02 03 e8 	mvi r2,1000                                    
 8004744:	f8 00 63 b2 	calli 801d60c <__divsi3>                       
 8004748:	b8 20 c8 00 	mv r25,r1                                      
 800474c:	2b 81 00 74 	lw r1,(sp+116)                                 
 8004750:	34 02 03 e8 	mvi r2,1000                                    
 8004754:	f8 00 63 ae 	calli 801d60c <__divsi3>                       
 8004758:	b8 20 70 00 	mv r14,r1                                      
 800475c:	2b 81 00 9c 	lw r1,(sp+156)                                 
 8004760:	34 02 03 e8 	mvi r2,1000                                    
 8004764:	f8 00 63 aa 	calli 801d60c <__divsi3>                       
 8004768:	2b 83 00 68 	lw r3,(sp+104)                                 
 800476c:	2b 85 00 70 	lw r5,(sp+112)                                 
 8004770:	2b 87 00 98 	lw r7,(sp+152)                                 
 8004774:	b8 20 40 00 	mv r8,r1                                       
 8004778:	ba 80 10 00 	mv r2,r20                                      
 800477c:	b9 e0 08 00 	mv r1,r15                                      
 8004780:	bb 20 20 00 	mv r4,r25                                      
 8004784:	b9 c0 30 00 	mv r6,r14                                      
 8004788:	d9 a0 00 00 	call r13                                       
 800478c:	e3 ff ff a6 	bi 8004624 <rtems_rate_monotonic_report_statistics_with_plugin+0x100>
                                                                      

080047b4 <rtems_rate_monotonic_reset_all_statistics>: /* * rtems_rate_monotonic_reset_all_statistics */ void rtems_rate_monotonic_reset_all_statistics( void ) {
 80047b4:	37 9c ff f4 	addi sp,sp,-12                                 
 80047b8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80047bc:	5b 8c 00 08 	sw (sp+8),r12                                  
 80047c0:	5b 9d 00 04 	sw (sp+4),ra                                   
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80047c4:	78 01 08 02 	mvhi r1,0x802                                  
 80047c8:	38 21 1a 28 	ori r1,r1,0x1a28                               
 80047cc:	28 22 00 00 	lw r2,(r1+0)                                   
 80047d0:	34 42 00 01 	addi r2,r2,1                                   
 80047d4:	58 22 00 00 	sw (r1+0),r2                                   
                                                                      
    /*                                                                
     * Cycle through all possible ids and try to reset each one.  If it
     * is a period that is inactive, we just get an error back.  No big deal.
     */                                                               
    for ( id=_Rate_monotonic_Information.minimum_id ;                 
 80047d8:	78 0c 08 02 	mvhi r12,0x802                                 
 80047dc:	39 8c 19 00 	ori r12,r12,0x1900                             
 80047e0:	29 8b 00 08 	lw r11,(r12+8)                                 
 80047e4:	29 81 00 0c 	lw r1,(r12+12)                                 
 80047e8:	55 61 00 06 	bgu r11,r1,8004800 <rtems_rate_monotonic_reset_all_statistics+0x4c><== NEVER TAKEN
          id <= _Rate_monotonic_Information.maximum_id ;              
          id++ ) {                                                    
      (void) rtems_rate_monotonic_reset_statistics( id );             
 80047ec:	b9 60 08 00 	mv r1,r11                                      
 80047f0:	f8 00 00 0a 	calli 8004818 <rtems_rate_monotonic_reset_statistics>
                                                                      
    /*                                                                
     * Cycle through all possible ids and try to reset each one.  If it
     * is a period that is inactive, we just get an error back.  No big deal.
     */                                                               
    for ( id=_Rate_monotonic_Information.minimum_id ;                 
 80047f4:	29 81 00 0c 	lw r1,(r12+12)                                 
          id <= _Rate_monotonic_Information.maximum_id ;              
          id++ ) {                                                    
 80047f8:	35 6b 00 01 	addi r11,r11,1                                 
                                                                      
    /*                                                                
     * Cycle through all possible ids and try to reset each one.  If it
     * is a period that is inactive, we just get an error back.  No big deal.
     */                                                               
    for ( id=_Rate_monotonic_Information.minimum_id ;                 
 80047fc:	50 2b ff fc 	bgeu r1,r11,80047ec <rtems_rate_monotonic_reset_all_statistics+0x38>
    }                                                                 
                                                                      
  /*                                                                  
   *  Done so exit thread dispatching disabled critical section.      
   */                                                                 
  _Thread_Enable_dispatch();                                          
 8004800:	f8 00 0d 38 	calli 8007ce0 <_Thread_Enable_dispatch>        
}                                                                     
 8004804:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004808:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800480c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004810:	37 9c 00 0c 	addi sp,sp,12                                  
 8004814:	c3 a0 00 00 	ret                                            
                                                                      

08002af0 <rtems_semaphore_create>: uint32_t count, rtems_attribute attribute_set, rtems_task_priority priority_ceiling, rtems_id *id ) {
 8002af0:	37 9c ff c4 	addi sp,sp,-60                                 
 8002af4:	5b 8b 00 18 	sw (sp+24),r11                                 
 8002af8:	5b 8c 00 14 	sw (sp+20),r12                                 
 8002afc:	5b 8d 00 10 	sw (sp+16),r13                                 
 8002b00:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8002b04:	5b 8f 00 08 	sw (sp+8),r15                                  
 8002b08:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002b0c:	b8 20 60 00 	mv r12,r1                                      
 8002b10:	b8 40 58 00 	mv r11,r2                                      
  CORE_mutex_Attributes       the_mutex_attr;                         
  CORE_semaphore_Attributes   the_semaphore_attr;                     
  CORE_mutex_Status           mutex_status;                           
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
 8002b14:	34 01 00 03 	mvi r1,3                                       
  register Semaphore_Control *the_semaphore;                          
  CORE_mutex_Attributes       the_mutex_attr;                         
  CORE_semaphore_Attributes   the_semaphore_attr;                     
  CORE_mutex_Status           mutex_status;                           
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
 8002b18:	45 80 00 09 	be r12,r0,8002b3c <rtems_semaphore_create+0x4c>
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !id )                                                          
    return RTEMS_INVALID_ADDRESS;                                     
 8002b1c:	34 01 00 09 	mvi r1,9                                       
  CORE_mutex_Status           mutex_status;                           
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !id )                                                          
 8002b20:	44 a0 00 07 	be r5,r0,8002b3c <rtems_semaphore_create+0x4c> 
 *    id       - semaphore id                                         
 *    RTEMS_SUCCESSFUL - if successful                                
 *    error code - if unsuccessful                                    
 */                                                                   
                                                                      
rtems_status_code rtems_semaphore_create(                             
 8002b24:	20 62 00 c0 	andi r2,r3,0xc0                                
      return RTEMS_NOT_DEFINED;                                       
                                                                      
  } else                                                              
#endif                                                                
                                                                      
  if ( _Attributes_Is_inherit_priority( attribute_set ) ||            
 8002b28:	44 40 00 45 	be r2,r0,8002c3c <rtems_semaphore_create+0x14c>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Attributes_Is_binary_semaphore(            
  rtems_attribute attribute_set                                       
)                                                                     
{                                                                     
  return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE);
 8002b2c:	20 67 00 30 	andi r7,r3,0x30                                
              _Attributes_Is_priority_ceiling( attribute_set ) ) {    
                                                                      
    if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&       
 8002b30:	34 06 00 10 	mvi r6,16                                      
            _Attributes_Is_priority( attribute_set ) ) )              
      return RTEMS_NOT_DEFINED;                                       
 8002b34:	34 01 00 0b 	mvi r1,11                                      
#endif                                                                
                                                                      
  if ( _Attributes_Is_inherit_priority( attribute_set ) ||            
              _Attributes_Is_priority_ceiling( attribute_set ) ) {    
                                                                      
    if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&       
 8002b38:	44 e6 00 09 	be r7,r6,8002b5c <rtems_semaphore_create+0x6c> 
      0                          /* Not used */                       
    );                                                                
#endif                                                                
  _Thread_Enable_dispatch();                                          
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8002b3c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002b40:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8002b44:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8002b48:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8002b4c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8002b50:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8002b54:	37 9c 00 3c 	addi sp,sp,60                                  
 8002b58:	c3 a0 00 00 	ret                                            
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Attributes_Is_priority(                    
  rtems_attribute attribute_set                                       
)                                                                     
{                                                                     
   return ( attribute_set & RTEMS_PRIORITY ) ? true : false;          
 8002b5c:	20 66 00 04 	andi r6,r3,0x4                                 
#endif                                                                
                                                                      
  if ( _Attributes_Is_inherit_priority( attribute_set ) ||            
              _Attributes_Is_priority_ceiling( attribute_set ) ) {    
                                                                      
    if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&       
 8002b60:	44 c0 ff f7 	be r6,r0,8002b3c <rtems_semaphore_create+0x4c> 
            _Attributes_Is_priority( attribute_set ) ) )              
      return RTEMS_NOT_DEFINED;                                       
                                                                      
  }                                                                   
                                                                      
  if ( _Attributes_Is_inherit_priority( attribute_set ) &&            
 8002b64:	34 06 00 c0 	mvi r6,192                                     
 8002b68:	34 0f 00 10 	mvi r15,16                                     
 8002b6c:	44 46 ff f4 	be r2,r6,8002b3c <rtems_semaphore_create+0x4c> 
       _Attributes_Is_priority_ceiling( attribute_set ) )             
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) )
 8002b70:	34 02 00 01 	mvi r2,1                                       
    return RTEMS_INVALID_NUMBER;                                      
 8002b74:	34 01 00 0a 	mvi r1,10                                      
                                                                      
  if ( _Attributes_Is_inherit_priority( attribute_set ) &&            
       _Attributes_Is_priority_ceiling( attribute_set ) )             
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) )
 8002b78:	55 62 ff f1 	bgu r11,r2,8002b3c <rtems_semaphore_create+0x4c>
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 8002b7c:	78 01 08 01 	mvhi r1,0x801                                  
 8002b80:	38 21 49 08 	ori r1,r1,0x4908                               
 8002b84:	28 22 00 00 	lw r2,(r1+0)                                   
 8002b88:	34 42 00 01 	addi r2,r2,1                                   
 8002b8c:	58 22 00 00 	sw (r1+0),r2                                   
 *  This function allocates a semaphore control block from            
 *  the inactive chain of free semaphore control blocks.              
 */                                                                   
RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Allocate( void )   
{                                                                     
  return (Semaphore_Control *) _Objects_Allocate( &_Semaphore_Information );
 8002b90:	78 0e 08 01 	mvhi r14,0x801                                 
 8002b94:	39 ce 48 20 	ori r14,r14,0x4820                             
 8002b98:	b9 c0 08 00 	mv r1,r14                                      
 8002b9c:	5b 83 00 24 	sw (sp+36),r3                                  
 8002ba0:	5b 84 00 20 	sw (sp+32),r4                                  
 8002ba4:	5b 85 00 1c 	sw (sp+28),r5                                  
 8002ba8:	f8 00 06 52 	calli 80044f0 <_Objects_Allocate>              
 8002bac:	b8 20 68 00 	mv r13,r1                                      
                                                                      
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_semaphore = _Semaphore_Allocate();                              
                                                                      
  if ( !the_semaphore ) {                                             
 8002bb0:	2b 83 00 24 	lw r3,(sp+36)                                  
 8002bb4:	2b 84 00 20 	lw r4,(sp+32)                                  
 8002bb8:	2b 85 00 1c 	lw r5,(sp+28)                                  
 8002bbc:	44 20 00 36 	be r1,r0,8002c94 <rtems_semaphore_create+0x1a4>
    _Thread_Enable_dispatch();                                        
    return RTEMS_TOO_MANY;                                            
  }                                                                   
#endif                                                                
                                                                      
  the_semaphore->attribute_set = attribute_set;                       
 8002bc0:	58 23 00 10 	sw (r1+16),r3                                  
                                                                      
  /*                                                                  
   *  Initialize it as a counting semaphore.                          
   */                                                                 
  if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {         
 8002bc4:	45 e0 00 21 	be r15,r0,8002c48 <rtems_semaphore_create+0x158>
 8002bc8:	20 61 00 04 	andi r1,r3,0x4                                 
  } else {                                                            
    /*                                                                
     *  It is either simple binary semaphore or a more powerful mutex 
     *  style binary semaphore.  This is the mutex style.             
     */                                                               
    if ( _Attributes_Is_priority( attribute_set ) )                   
 8002bcc:	44 20 00 2e 	be r1,r0,8002c84 <rtems_semaphore_create+0x194>
      the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY;    
 8002bd0:	34 01 00 01 	mvi r1,1                                       
 8002bd4:	5b 81 00 30 	sw (sp+48),r1                                  
    else                                                              
      the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;        
                                                                      
    if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {         
 8002bd8:	34 01 00 10 	mvi r1,16                                      
 8002bdc:	45 e1 00 31 	be r15,r1,8002ca0 <rtems_semaphore_create+0x1b0>
          the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
          the_mutex_attr.only_owner_release = true;                   
        }                                                             
      }                                                               
    } else /* must be simple binary semaphore */ {                    
      the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS;
 8002be0:	34 01 00 02 	mvi r1,2                                       
 8002be4:	5b 81 00 28 	sw (sp+40),r1                                  
      the_mutex_attr.only_owner_release = false;                      
 8002be8:	33 80 00 2c 	sb (sp+44),r0                                  
    }                                                                 
                                                                      
    mutex_status = _CORE_mutex_Initialize(                            
 8002bec:	65 63 00 01 	cmpei r3,r11,1                                 
 8002bf0:	37 82 00 28 	addi r2,sp,40                                  
 8002bf4:	35 a1 00 14 	addi r1,r13,20                                 
 8002bf8:	5b 85 00 1c 	sw (sp+28),r5                                  
 8002bfc:	f8 00 03 5d 	calli 8003970 <_CORE_mutex_Initialize>         
      &the_semaphore->Core_control.mutex,                             
      &the_mutex_attr,                                                
      (count == 1) ? CORE_MUTEX_UNLOCKED : CORE_MUTEX_LOCKED          
    );                                                                
                                                                      
    if ( mutex_status == CORE_MUTEX_STATUS_CEILING_VIOLATED ) {       
 8002c00:	34 02 00 06 	mvi r2,6                                       
 8002c04:	2b 85 00 1c 	lw r5,(sp+28)                                  
 8002c08:	44 22 00 32 	be r1,r2,8002cd0 <rtems_semaphore_create+0x1e0><== NEVER TAKEN
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 8002c0c:	29 a2 00 08 	lw r2,(r13+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8002c10:	29 c3 00 1c 	lw r3,(r14+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8002c14:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8002c18:	b4 21 08 00 	add r1,r1,r1                                   
 8002c1c:	b4 21 08 00 	add r1,r1,r1                                   
 8002c20:	b4 61 08 00 	add r1,r3,r1                                   
 8002c24:	58 2d 00 00 	sw (r1+0),r13                                  
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  the_object->name = name;                                            
 8002c28:	59 ac 00 0c 	sw (r13+12),r12                                
    &_Semaphore_Information,                                          
    &the_semaphore->Object,                                           
    (Objects_Name) name                                               
  );                                                                  
                                                                      
  *id = the_semaphore->Object.id;                                     
 8002c2c:	58 a2 00 00 	sw (r5+0),r2                                   
      the_semaphore->Object.id,                                       
      name,                                                           
      0                          /* Not used */                       
    );                                                                
#endif                                                                
  _Thread_Enable_dispatch();                                          
 8002c30:	f8 00 0b 91 	calli 8005a74 <_Thread_Enable_dispatch>        
  return RTEMS_SUCCESSFUL;                                            
 8002c34:	34 01 00 00 	mvi r1,0                                       
 8002c38:	e3 ff ff c1 	bi 8002b3c <rtems_semaphore_create+0x4c>       
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Attributes_Is_counting_semaphore(          
  rtems_attribute attribute_set                                       
)                                                                     
{                                                                     
  return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE);
 8002c3c:	20 6f 00 30 	andi r15,r3,0x30                               
                                                                      
  if ( _Attributes_Is_inherit_priority( attribute_set ) &&            
       _Attributes_Is_priority_ceiling( attribute_set ) )             
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) )
 8002c40:	5d e2 ff cc 	bne r15,r2,8002b70 <rtems_semaphore_create+0x80>
 8002c44:	e3 ff ff ce 	bi 8002b7c <rtems_semaphore_create+0x8c>       
   */                                                                 
  if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {         
    /*                                                                
     *  This effectively disables limit checking.                     
     */                                                               
    the_semaphore_attr.maximum_count = 0xFFFFFFFF;                    
 8002c48:	34 01 ff ff 	mvi r1,-1                                      
 8002c4c:	5b 81 00 38 	sw (sp+56),r1                                  
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Attributes_Is_priority(                    
  rtems_attribute attribute_set                                       
)                                                                     
{                                                                     
   return ( attribute_set & RTEMS_PRIORITY ) ? true : false;          
 8002c50:	20 63 00 04 	andi r3,r3,0x4                                 
                                                                      
    if ( _Attributes_Is_priority( attribute_set ) )                   
 8002c54:	44 6f 00 0e 	be r3,r15,8002c8c <rtems_semaphore_create+0x19c>
      the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
 8002c58:	34 01 00 01 	mvi r1,1                                       
 8002c5c:	5b 81 00 3c 	sw (sp+60),r1                                  
     *  The following are just to make Purify happy.                  
     */                                                               
    the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
    the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM;               
                                                                      
    _CORE_semaphore_Initialize(                                       
 8002c60:	35 a1 00 14 	addi r1,r13,20                                 
 8002c64:	37 82 00 38 	addi r2,sp,56                                  
 8002c68:	b9 60 18 00 	mv r3,r11                                      
 8002c6c:	5b 85 00 1c 	sw (sp+28),r5                                  
      the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
                                                                      
    /*                                                                
     *  The following are just to make Purify happy.                  
     */                                                               
    the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
 8002c70:	5b 80 00 28 	sw (sp+40),r0                                  
    the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM;               
 8002c74:	5b 80 00 34 	sw (sp+52),r0                                  
                                                                      
    _CORE_semaphore_Initialize(                                       
 8002c78:	f8 00 04 1e 	calli 8003cf0 <_CORE_semaphore_Initialize>     
 8002c7c:	2b 85 00 1c 	lw r5,(sp+28)                                  
 8002c80:	e3 ff ff e3 	bi 8002c0c <rtems_semaphore_create+0x11c>      
     *  style binary semaphore.  This is the mutex style.             
     */                                                               
    if ( _Attributes_Is_priority( attribute_set ) )                   
      the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY;    
    else                                                              
      the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;        
 8002c84:	5b 80 00 30 	sw (sp+48),r0                                  
 8002c88:	e3 ff ff d4 	bi 8002bd8 <rtems_semaphore_create+0xe8>       
    the_semaphore_attr.maximum_count = 0xFFFFFFFF;                    
                                                                      
    if ( _Attributes_Is_priority( attribute_set ) )                   
      the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
    else                                                              
      the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
 8002c8c:	5b 80 00 3c 	sw (sp+60),r0                                  
 8002c90:	e3 ff ff f4 	bi 8002c60 <rtems_semaphore_create+0x170>      
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_semaphore = _Semaphore_Allocate();                              
                                                                      
  if ( !the_semaphore ) {                                             
    _Thread_Enable_dispatch();                                        
 8002c94:	f8 00 0b 78 	calli 8005a74 <_Thread_Enable_dispatch>        
    return RTEMS_TOO_MANY;                                            
 8002c98:	34 01 00 05 	mvi r1,5                                       
 8002c9c:	e3 ff ff a8 	bi 8002b3c <rtems_semaphore_create+0x4c>       
    if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {         
      the_mutex_attr.priority_ceiling      = priority_ceiling;        
      the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
      the_mutex_attr.only_owner_release    = false;                   
                                                                      
      if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
 8002ca0:	2b 81 00 30 	lw r1,(sp+48)                                  
      the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY;    
    else                                                              
      the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;        
                                                                      
    if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {         
      the_mutex_attr.priority_ceiling      = priority_ceiling;        
 8002ca4:	5b 84 00 34 	sw (sp+52),r4                                  
      the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
 8002ca8:	5b 80 00 28 	sw (sp+40),r0                                  
      the_mutex_attr.only_owner_release    = false;                   
 8002cac:	33 80 00 2c 	sb (sp+44),r0                                  
                                                                      
      if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
 8002cb0:	34 02 00 01 	mvi r2,1                                       
 8002cb4:	5c 22 ff ce 	bne r1,r2,8002bec <rtems_semaphore_create+0xfc>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Attributes_Is_inherit_priority(            
  rtems_attribute attribute_set                                       
)                                                                     
{                                                                     
   return ( attribute_set & RTEMS_INHERIT_PRIORITY ) ? true : false;  
 8002cb8:	20 62 00 40 	andi r2,r3,0x40                                
        if ( _Attributes_Is_inherit_priority( attribute_set ) ) {     
 8002cbc:	44 40 00 0b 	be r2,r0,8002ce8 <rtems_semaphore_create+0x1f8>
          the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
 8002cc0:	34 02 00 02 	mvi r2,2                                       
 8002cc4:	5b 82 00 30 	sw (sp+48),r2                                  
          the_mutex_attr.only_owner_release = true;                   
 8002cc8:	33 81 00 2c 	sb (sp+44),r1                                  
 8002ccc:	e3 ff ff c8 	bi 8002bec <rtems_semaphore_create+0xfc>       
 */                                                                   
RTEMS_INLINE_ROUTINE void _Semaphore_Free (                           
  Semaphore_Control *the_semaphore                                    
)                                                                     
{                                                                     
  _Objects_Free( &_Semaphore_Information, &the_semaphore->Object );   
 8002cd0:	b9 c0 08 00 	mv r1,r14                                      
 8002cd4:	b9 a0 10 00 	mv r2,r13                                      
 8002cd8:	f8 00 07 09 	calli 80048fc <_Objects_Free>                  
      (count == 1) ? CORE_MUTEX_UNLOCKED : CORE_MUTEX_LOCKED          
    );                                                                
                                                                      
    if ( mutex_status == CORE_MUTEX_STATUS_CEILING_VIOLATED ) {       
      _Semaphore_Free( the_semaphore );                               
      _Thread_Enable_dispatch();                                      
 8002cdc:	f8 00 0b 66 	calli 8005a74 <_Thread_Enable_dispatch>        
      return RTEMS_INVALID_PRIORITY;                                  
 8002ce0:	34 01 00 13 	mvi r1,19                                      
 8002ce4:	e3 ff ff 96 	bi 8002b3c <rtems_semaphore_create+0x4c>       
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Attributes_Is_priority_ceiling(            
  rtems_attribute attribute_set                                       
)                                                                     
{                                                                     
   return ( attribute_set & RTEMS_PRIORITY_CEILING ) ? true : false;  
 8002ce8:	20 63 00 80 	andi r3,r3,0x80                                
                                                                      
      if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
        if ( _Attributes_Is_inherit_priority( attribute_set ) ) {     
          the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
          the_mutex_attr.only_owner_release = true;                   
        } else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) {
 8002cec:	44 62 ff c0 	be r3,r2,8002bec <rtems_semaphore_create+0xfc> 
          the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
 8002cf0:	34 02 00 03 	mvi r2,3                                       
 8002cf4:	5b 82 00 30 	sw (sp+48),r2                                  
          the_mutex_attr.only_owner_release = true;                   
 8002cf8:	33 81 00 2c 	sb (sp+44),r1                                  
 8002cfc:	e3 ff ff bc 	bi 8002bec <rtems_semaphore_create+0xfc>       
                                                                      

08013068 <rtems_signal_send>: rtems_status_code rtems_signal_send( rtems_id id, rtems_signal_set signal_set ) {
 8013068:	37 9c ff f4 	addi sp,sp,-12                                 
 801306c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8013070:	5b 9d 00 04 	sw (sp+4),ra                                   
  Objects_Locations        location;                                  
  RTEMS_API_Control       *api;                                       
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
    return RTEMS_INVALID_NUMBER;                                      
 8013074:	34 03 00 0a 	mvi r3,10                                      
                                                                      
rtems_status_code rtems_signal_send(                                  
  rtems_id          id,                                               
  rtems_signal_set  signal_set                                        
)                                                                     
{                                                                     
 8013078:	b8 40 58 00 	mv r11,r2                                      
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
  RTEMS_API_Control       *api;                                       
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
 801307c:	5c 40 00 06 	bne r2,r0,8013094 <rtems_signal_send+0x2c>     
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8013080:	b8 60 08 00 	mv r1,r3                                       
 8013084:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8013088:	2b 8b 00 08 	lw r11,(sp+8)                                  
 801308c:	37 9c 00 0c 	addi sp,sp,12                                  
 8013090:	c3 a0 00 00 	ret                                            
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 8013094:	37 82 00 0c 	addi r2,sp,12                                  
 8013098:	f8 00 15 eb 	calli 8018844 <_Thread_Get>                    
  switch ( location ) {                                               
 801309c:	2b 83 00 0c 	lw r3,(sp+12)                                  
 80130a0:	44 60 00 07 	be r3,r0,80130bc <rtems_signal_send+0x54>      
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 80130a4:	34 03 00 04 	mvi r3,4                                       
}                                                                     
 80130a8:	b8 60 08 00 	mv r1,r3                                       
 80130ac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80130b0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80130b4:	37 9c 00 0c 	addi sp,sp,12                                  
 80130b8:	c3 a0 00 00 	ret                                            
                                                                      
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_RTEMS ];           
 80130bc:	28 22 01 1c 	lw r2,(r1+284)                                 
      asr = &api->Signal;                                             
                                                                      
      if ( ! _ASR_Is_null_handler( asr->handler ) ) {                 
 80130c0:	28 44 00 0c 	lw r4,(r2+12)                                  
 80130c4:	44 83 00 23 	be r4,r3,8013150 <rtems_signal_send+0xe8>      
        if ( asr->is_enabled ) {                                      
 80130c8:	40 43 00 08 	lbu r3,(r2+8)                                  
 80130cc:	44 60 00 12 	be r3,r0,8013114 <rtems_signal_send+0xac>      
  rtems_signal_set *signal_set                                        
)                                                                     
{                                                                     
  ISR_Level              _level;                                      
                                                                      
  _ISR_Disable( _level );                                             
 80130d0:	90 00 18 00 	rcsr r3,IE                                     
 80130d4:	34 04 ff fe 	mvi r4,-2                                      
 80130d8:	a0 64 20 00 	and r4,r3,r4                                   
 80130dc:	d0 04 00 00 	wcsr IE,r4                                     
    *signal_set |= signals;                                           
 80130e0:	28 44 00 14 	lw r4,(r2+20)                                  
 80130e4:	b8 8b 58 00 	or r11,r4,r11                                  
 80130e8:	58 4b 00 14 	sw (r2+20),r11                                 
  _ISR_Enable( _level );                                              
 80130ec:	d0 03 00 00 	wcsr IE,r3                                     
          _ASR_Post_signals( signal_set, &asr->signals_posted );      
                                                                      
          if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
 80130f0:	78 02 08 04 	mvhi r2,0x804                                  
 80130f4:	38 42 11 c4 	ori r2,r2,0x11c4                               
 80130f8:	28 43 00 08 	lw r3,(r2+8)                                   
 80130fc:	44 60 00 0e 	be r3,r0,8013134 <rtems_signal_send+0xcc>      
 8013100:	28 43 00 0c 	lw r3,(r2+12)                                  
 8013104:	5c 23 00 0c 	bne r1,r3,8013134 <rtems_signal_send+0xcc>     <== NEVER TAKEN
            _Thread_Dispatch_necessary = true;                        
 8013108:	34 01 00 01 	mvi r1,1                                       
 801310c:	30 41 00 18 	sb (r2+24),r1                                  
 8013110:	e0 00 00 09 	bi 8013134 <rtems_signal_send+0xcc>            
  rtems_signal_set *signal_set                                        
)                                                                     
{                                                                     
  ISR_Level              _level;                                      
                                                                      
  _ISR_Disable( _level );                                             
 8013114:	90 00 08 00 	rcsr r1,IE                                     
 8013118:	34 03 ff fe 	mvi r3,-2                                      
 801311c:	a0 23 18 00 	and r3,r1,r3                                   
 8013120:	d0 03 00 00 	wcsr IE,r3                                     
    *signal_set |= signals;                                           
 8013124:	28 43 00 18 	lw r3,(r2+24)                                  
 8013128:	b8 6b 58 00 	or r11,r3,r11                                  
 801312c:	58 4b 00 18 	sw (r2+24),r11                                 
  _ISR_Enable( _level );                                              
 8013130:	d0 01 00 00 	wcsr IE,r1                                     
        } else {                                                      
          _ASR_Post_signals( signal_set, &asr->signals_pending );     
        }                                                             
        _Thread_Enable_dispatch();                                    
 8013134:	f8 00 15 b7 	calli 8018810 <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 8013138:	34 03 00 00 	mvi r3,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 801313c:	b8 60 08 00 	mv r1,r3                                       
 8013140:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8013144:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8013148:	37 9c 00 0c 	addi sp,sp,12                                  
 801314c:	c3 a0 00 00 	ret                                            
          _ASR_Post_signals( signal_set, &asr->signals_pending );     
        }                                                             
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
      _Thread_Enable_dispatch();                                      
 8013150:	f8 00 15 b0 	calli 8018810 <_Thread_Enable_dispatch>        
      return RTEMS_NOT_DEFINED;                                       
 8013154:	34 03 00 0b 	mvi r3,11                                      
 8013158:	e3 ff ff ca 	bi 8013080 <rtems_signal_send+0x18>            
                                                                      

080013e4 <rtems_stack_checker_begin_extension>: Thread_Control *the_thread ) { Stack_check_Control *the_pattern; if ( the_thread->Object.id == 0 ) /* skip system tasks */
 80013e4:	28 22 00 08 	lw r2,(r1+8)                                   
 80013e8:	44 40 00 0c 	be r2,r0,8001418 <rtems_stack_checker_begin_extension+0x34><== NEVER TAKEN
    return;                                                           
                                                                      
  the_pattern = Stack_check_Get_pattern_area(&the_thread->Start.Initial_stack);
                                                                      
  *the_pattern = Stack_check_Pattern;                                 
 80013ec:	78 02 08 01 	mvhi r2,0x801                                  
 80013f0:	38 42 87 c0 	ori r2,r2,0x87c0                               
 80013f4:	28 43 00 00 	lw r3,(r2+0)                                   
 80013f8:	28 21 00 bc 	lw r1,(r1+188)                                 
 80013fc:	58 23 00 08 	sw (r1+8),r3                                   
 8001400:	28 43 00 04 	lw r3,(r2+4)                                   
 8001404:	58 23 00 0c 	sw (r1+12),r3                                  
 8001408:	28 43 00 08 	lw r3,(r2+8)                                   
 800140c:	58 23 00 10 	sw (r1+16),r3                                  
 8001410:	28 42 00 0c 	lw r2,(r2+12)                                  
 8001414:	58 22 00 14 	sw (r1+20),r2                                  
 8001418:	c3 a0 00 00 	ret                                            
                                                                      

080013a8 <rtems_stack_checker_create_extension>: */ bool rtems_stack_checker_create_extension( Thread_Control *running __attribute__((unused)), Thread_Control *the_thread ) {
 80013a8:	37 9c ff f8 	addi sp,sp,-8                                  
 80013ac:	5b 8b 00 08 	sw (sp+8),r11                                  
 80013b0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80013b4:	b8 40 58 00 	mv r11,r2                                      
  Stack_check_Initialize();                                           
 80013b8:	fb ff ff ce 	calli 80012f0 <Stack_check_Initialize>         
                                                                      
  if (the_thread)                                                     
 80013bc:	45 60 00 05 	be r11,r0,80013d0 <rtems_stack_checker_create_extension+0x28><== NEVER TAKEN
    Stack_check_Dope_stack(&the_thread->Start.Initial_stack);         
 80013c0:	29 61 00 bc 	lw r1,(r11+188)                                
 80013c4:	29 63 00 b8 	lw r3,(r11+184)                                
 80013c8:	34 02 00 a5 	mvi r2,165                                     
 80013cc:	f8 00 3d ec 	calli 8010b7c <memset>                         
                                                                      
  return true;                                                        
}                                                                     
 80013d0:	34 01 00 01 	mvi r1,1                                       
 80013d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80013d8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80013dc:	37 9c 00 08 	addi sp,sp,8                                   
 80013e0:	c3 a0 00 00 	ret                                            
                                                                      

08001558 <rtems_stack_checker_is_blown>: /* * Check if blown */ bool rtems_stack_checker_is_blown( void ) {
 8001558:	37 9c ff f0 	addi sp,sp,-16                                 
 800155c:	5b 9b 00 08 	sw (sp+8),fp                                   
 8001560:	34 1b 00 10 	mvi fp,16                                      
 8001564:	b7 7c d8 00 	add fp,fp,sp                                   
 8001568:	5b 8b 00 10 	sw (sp+16),r11                                 
 800156c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8001570:	5b 9d 00 04 	sw (sp+4),ra                                   
  Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack; 
 8001574:	78 0b 08 01 	mvhi r11,0x801                                 
 8001578:	39 6b 8e 28 	ori r11,r11,0x8e28                             
 800157c:	29 62 00 0c 	lw r2,(r11+12)                                 
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
      return false;                                                   
 8001580:	34 0c 00 00 	mvi r12,0                                      
)                                                                     
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
 8001584:	28 41 00 bc 	lw r1,(r2+188)                                 
 8001588:	54 3b 00 04 	bgu r1,fp,8001598 <rtems_stack_checker_is_blown+0x40><== NEVER TAKEN
      return false;                                                   
    }                                                                 
    if ( sp > (the_stack->area + the_stack->size) ) {                 
 800158c:	28 4c 00 b8 	lw r12,(r2+184)                                
}                                                                     
                                                                      
/*                                                                    
 *  Check if blown                                                    
 */                                                                   
bool rtems_stack_checker_is_blown( void )                             
 8001590:	b4 2c 60 00 	add r12,r1,r12                                 
 8001594:	f1 9b 60 00 	cmpgeu r12,r12,fp                              
                                                                      
  /*                                                                  
   * The stack checker must be initialized before the pattern is there
   * to check.                                                        
   */                                                                 
  if ( Stack_check_Initialized ) {                                    
 8001598:	78 02 08 01 	mvhi r2,0x801                                  
 800159c:	38 42 87 34 	ori r2,r2,0x8734                               
 80015a0:	28 43 00 00 	lw r3,(r2+0)                                   
 */                                                                   
bool rtems_stack_checker_is_blown( void )                             
{                                                                     
  Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack; 
  bool           sp_ok;                                               
  bool           pattern_ok = true;                                   
 80015a4:	34 02 00 01 	mvi r2,1                                       
                                                                      
  /*                                                                  
   * The stack checker must be initialized before the pattern is there
   * to check.                                                        
   */                                                                 
  if ( Stack_check_Initialized ) {                                    
 80015a8:	44 60 00 07 	be r3,r0,80015c4 <rtems_stack_checker_is_blown+0x6c><== NEVER TAKEN
    pattern_ok = (!memcmp(                                            
 80015ac:	78 02 08 01 	mvhi r2,0x801                                  
 80015b0:	38 42 87 c0 	ori r2,r2,0x87c0                               
 80015b4:	34 21 00 08 	addi r1,r1,8                                   
 80015b8:	34 03 00 10 	mvi r3,16                                      
 80015bc:	f8 00 3d 0e 	calli 80109f4 <memcmp>                         
 80015c0:	64 22 00 00 	cmpei r2,r1,0                                  
                                                                      
                                                                      
  /*                                                                  
   * Let's report as much as we can.                                  
   */                                                                 
  if ( !sp_ok || !pattern_ok ) {                                      
 80015c4:	45 80 00 09 	be r12,r0,80015e8 <rtems_stack_checker_is_blown+0x90><== NEVER TAKEN
 80015c8:	44 40 00 08 	be r2,r0,80015e8 <rtems_stack_checker_is_blown+0x90><== NEVER TAKEN
                                                                      
  /*                                                                  
   * The Stack Pointer and the Pattern Area are OK so return false.   
   */                                                                 
  return false;                                                       
}                                                                     
 80015cc:	34 01 00 00 	mvi r1,0                                       
 80015d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80015d4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80015d8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80015dc:	2b 9b 00 08 	lw fp,(sp+8)                                   
 80015e0:	37 9c 00 10 	addi sp,sp,16                                  
 80015e4:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   * Let's report as much as we can.                                  
   */                                                                 
  if ( !sp_ok || !pattern_ok ) {                                      
    Stack_check_report_blown_task( _Thread_Executing, pattern_ok );   
 80015e8:	29 61 00 0c 	lw r1,(r11+12)                                 <== NOT EXECUTED
 80015ec:	fb ff ff 8c 	calli 800141c <Stack_check_report_blown_task>  <== NOT EXECUTED
                                                                      

080015f0 <rtems_stack_checker_report_usage_with_plugin>: void rtems_stack_checker_report_usage_with_plugin( void *context, rtems_printk_plugin_t print ) {
 80015f0:	37 9c ff ec 	addi sp,sp,-20                                 
 80015f4:	5b 8b 00 14 	sw (sp+20),r11                                 
 80015f8:	5b 8c 00 10 	sw (sp+16),r12                                 
 80015fc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8001600:	5b 8e 00 08 	sw (sp+8),r14                                  
 8001604:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001608:	b8 40 58 00 	mv r11,r2                                      
 800160c:	b8 20 70 00 	mv r14,r1                                      
  if ( !print )                                                       
 8001610:	44 40 00 15 	be r2,r0,8001664 <rtems_stack_checker_report_usage_with_plugin+0x74><== NEVER TAKEN
    return;                                                           
                                                                      
  print_context = context;                                            
 8001614:	78 0d 08 01 	mvhi r13,0x801                                 
  print_handler = print;                                              
 8001618:	78 0c 08 01 	mvhi r12,0x801                                 
)                                                                     
{                                                                     
  if ( !print )                                                       
    return;                                                           
                                                                      
  print_context = context;                                            
 800161c:	39 ad 87 2c 	ori r13,r13,0x872c                             
  print_handler = print;                                              
 8001620:	39 8c 87 30 	ori r12,r12,0x8730                             
                                                                      
  (*print)( context, "Stack usage by thread\n");                      
 8001624:	78 02 08 01 	mvhi r2,0x801                                  
 8001628:	38 42 69 54 	ori r2,r2,0x6954                               
)                                                                     
{                                                                     
  if ( !print )                                                       
    return;                                                           
                                                                      
  print_context = context;                                            
 800162c:	59 a1 00 00 	sw (r13+0),r1                                  
  print_handler = print;                                              
 8001630:	59 8b 00 00 	sw (r12+0),r11                                 
                                                                      
  (*print)( context, "Stack usage by thread\n");                      
 8001634:	d9 60 00 00 	call r11                                       
  (*print)( context,                                                  
 8001638:	78 02 08 01 	mvhi r2,0x801                                  
 800163c:	38 42 69 6c 	ori r2,r2,0x696c                               
 8001640:	b9 c0 08 00 	mv r1,r14                                      
 8001644:	d9 60 00 00 	call r11                                       
"    ID      NAME    LOW          HIGH     CURRENT     AVAILABLE     USED\n"
  );                                                                  
                                                                      
  /* iterate over all threads and dump the usage */                   
  rtems_iterate_over_all_threads( Stack_check_Dump_threads_usage );   
 8001648:	78 01 08 00 	mvhi r1,0x800                                  
 800164c:	38 21 11 1c 	ori r1,r1,0x111c                               
 8001650:	f8 00 18 49 	calli 8007774 <rtems_iterate_over_all_threads> 
                                                                      
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    /* dump interrupt stack info if any */                            
    Stack_check_Dump_threads_usage((Thread_Control *) -1);            
 8001654:	34 01 ff ff 	mvi r1,-1                                      
 8001658:	fb ff fe b1 	calli 800111c <Stack_check_Dump_threads_usage> 
  #endif                                                              
                                                                      
  print_context = NULL;                                               
 800165c:	59 a0 00 00 	sw (r13+0),r0                                  
  print_handler = NULL;                                               
 8001660:	59 80 00 00 	sw (r12+0),r0                                  
}                                                                     
 8001664:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001668:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800166c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8001670:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8001674:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8001678:	37 9c 00 14 	addi sp,sp,20                                  
 800167c:	c3 a0 00 00 	ret                                            
                                                                      

080014d8 <rtems_stack_checker_switch_extension>: */ void rtems_stack_checker_switch_extension( Thread_Control *running __attribute__((unused)), Thread_Control *heir __attribute__((unused)) ) {
 80014d8:	37 9c ff f4 	addi sp,sp,-12                                 
 80014dc:	5b 9b 00 08 	sw (sp+8),fp                                   
 80014e0:	34 1b 00 0c 	mvi fp,12                                      
 80014e4:	b7 7c d8 00 	add fp,fp,sp                                   
 80014e8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80014ec:	5b 9d 00 04 	sw (sp+4),ra                                   
  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);                  
 80014f0:	28 22 00 bc 	lw r2,(r1+188)                                 
 */                                                                   
void rtems_stack_checker_switch_extension(                            
  Thread_Control *running __attribute__((unused)),                    
  Thread_Control *heir __attribute__((unused))                        
)                                                                     
{                                                                     
 80014f4:	b8 20 58 00 	mv r11,r1                                      
  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);                  
 80014f8:	34 41 00 08 	addi r1,r2,8                                   
)                                                                     
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
 80014fc:	54 5b 00 04 	bgu r2,fp,800150c <rtems_stack_checker_switch_extension+0x34><== NEVER TAKEN
      return false;                                                   
    }                                                                 
    if ( sp > (the_stack->area + the_stack->size) ) {                 
 8001500:	29 63 00 b8 	lw r3,(r11+184)                                
 8001504:	b4 43 10 00 	add r2,r2,r3                                   
 8001508:	50 5b 00 08 	bgeu r2,fp,8001528 <rtems_stack_checker_switch_extension+0x50>
  /*                                                                  
   *  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,                                     
 800150c:	78 02 08 01 	mvhi r2,0x801                                  
 8001510:	38 42 87 c0 	ori r2,r2,0x87c0                               
 8001514:	34 03 00 10 	mvi r3,16                                      
 8001518:	f8 00 3d 37 	calli 80109f4 <memcmp>                         
 800151c:	64 22 00 00 	cmpei r2,r1,0                                  
            (void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
                                                                      
  if ( !sp_ok || !pattern_ok ) {                                      
    Stack_check_report_blown_task( running, pattern_ok );             
 8001520:	b9 60 08 00 	mv r1,r11                                      
 8001524:	fb ff ff be 	calli 800141c <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,                                     
 8001528:	78 02 08 01 	mvhi r2,0x801                                  
 800152c:	38 42 87 c0 	ori r2,r2,0x87c0                               
 8001530:	34 03 00 10 	mvi r3,16                                      
 8001534:	f8 00 3d 30 	calli 80109f4 <memcmp>                         
            (void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
                                                                      
  if ( !sp_ok || !pattern_ok ) {                                      
 8001538:	5c 20 00 06 	bne r1,r0,8001550 <rtems_stack_checker_switch_extension+0x78>
    Stack_check_report_blown_task( running, pattern_ok );             
  }                                                                   
}                                                                     
 800153c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001540:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8001544:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8001548:	37 9c 00 0c 	addi sp,sp,12                                  
 800154c:	c3 a0 00 00 	ret                                            
  sp_ok = Stack_check_Frame_pointer_in_range( the_stack );            
                                                                      
  pattern_ok = (!memcmp( pattern,                                     
            (void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
                                                                      
  if ( !sp_ok || !pattern_ok ) {                                      
 8001550:	34 02 00 00 	mvi r2,0                                       
 8001554:	e3 ff ff f3 	bi 8001520 <rtems_stack_checker_switch_extension+0x48>
                                                                      

08009524 <rtems_string_to_double>: rtems_status_code rtems_string_to_double ( const char *s, double *n, char **endptr ) {
 8009524:	37 9c ff e0 	addi sp,sp,-32                                 
 8009528:	5b 8b 00 1c 	sw (sp+28),r11                                 
 800952c:	5b 8c 00 18 	sw (sp+24),r12                                 
 8009530:	5b 8d 00 14 	sw (sp+20),r13                                 
 8009534:	5b 8e 00 10 	sw (sp+16),r14                                 
 8009538:	5b 8f 00 0c 	sw (sp+12),r15                                 
 800953c:	5b 90 00 08 	sw (sp+8),r16                                  
 8009540:	5b 9d 00 04 	sw (sp+4),ra                                   
  double result;                                                      
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 8009544:	34 0c 00 09 	mvi r12,9                                      
rtems_status_code rtems_string_to_double (                            
  const char *s,                                                      
  double *n,                                                          
  char **endptr                                                       
)                                                                     
{                                                                     
 8009548:	b8 40 58 00 	mv r11,r2                                      
 800954c:	b8 20 78 00 	mv r15,r1                                      
 8009550:	b8 60 80 00 	mv r16,r3                                      
  double result;                                                      
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 8009554:	44 40 00 16 	be r2,r0,80095ac <rtems_string_to_double+0x88> 
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 8009558:	f8 00 11 7e 	calli 800db50 <__errno>                        
 800955c:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
 8009560:	59 60 00 00 	sw (r11+0),r0                                  
 8009564:	59 60 00 04 	sw (r11+4),r0                                  
                                                                      
  result = strtod( s, &end );                                         
 8009568:	b9 e0 08 00 	mv r1,r15                                      
 800956c:	37 82 00 20 	addi r2,sp,32                                  
 8009570:	f8 00 1c 83 	calli 801077c <strtod>                         
 8009574:	b8 20 70 00 	mv r14,r1                                      
 8009578:	b8 40 68 00 	mv r13,r2                                      
                                                                      
  if ( endptr )                                                       
 800957c:	46 00 00 2e 	be r16,r0,8009634 <rtems_string_to_double+0x110>
    *endptr = end;                                                    
 8009580:	2b 84 00 20 	lw r4,(sp+32)                                  
 8009584:	5a 04 00 00 	sw (r16+0),r4                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 8009588:	34 0c 00 0b 	mvi r12,11                                     
  result = strtod( s, &end );                                         
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 800958c:	45 e4 00 08 	be r15,r4,80095ac <rtems_string_to_double+0x88>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009590:	f8 00 11 70 	calli 800db50 <__errno>                        
 8009594:	28 22 00 00 	lw r2,(r1+0)                                   
 8009598:	34 01 00 22 	mvi r1,34                                      
 800959c:	44 41 00 0e 	be r2,r1,80095d4 <rtems_string_to_double+0xb0> 
    (( result == 0 ) || ( result == HUGE_VAL ) || ( result == -HUGE_VAL )))
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 80095a0:	59 6e 00 00 	sw (r11+0),r14                                 
 80095a4:	59 6d 00 04 	sw (r11+4),r13                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 80095a8:	34 0c 00 00 	mvi r12,0                                      
}                                                                     
 80095ac:	b9 80 08 00 	mv r1,r12                                      
 80095b0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80095b4:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80095b8:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80095bc:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80095c0:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80095c4:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80095c8:	2b 90 00 08 	lw r16,(sp+8)                                  
 80095cc:	37 9c 00 20 	addi sp,sp,32                                  
 80095d0:	c3 a0 00 00 	ret                                            
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 80095d4:	b9 c0 08 00 	mv r1,r14                                      
 80095d8:	b9 a0 10 00 	mv r2,r13                                      
 80095dc:	34 03 00 00 	mvi r3,0                                       
 80095e0:	34 04 00 00 	mvi r4,0                                       
 80095e4:	fb ff e6 44 	calli 8002ef4 <__eqdf2>                        
    (( result == 0 ) || ( result == HUGE_VAL ) || ( result == -HUGE_VAL )))
      return RTEMS_INVALID_NUMBER;                                    
 80095e8:	34 0c 00 0a 	mvi r12,10                                     
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 80095ec:	44 20 ff f0 	be r1,r0,80095ac <rtems_string_to_double+0x88> <== NEVER TAKEN
    (( result == 0 ) || ( result == HUGE_VAL ) || ( result == -HUGE_VAL )))
 80095f0:	78 01 08 02 	mvhi r1,0x802                                  
 80095f4:	38 21 17 74 	ori r1,r1,0x1774                               
 80095f8:	28 23 00 00 	lw r3,(r1+0)                                   
 80095fc:	b9 a0 10 00 	mv r2,r13                                      
 8009600:	b9 c0 08 00 	mv r1,r14                                      
 8009604:	34 04 ff ff 	mvi r4,-1                                      
 8009608:	f8 00 4b d5 	calli 801c55c <__gedf2>                        
 800960c:	48 20 ff e8 	bg r1,r0,80095ac <rtems_string_to_double+0x88> <== ALWAYS TAKEN
 8009610:	78 01 08 02 	mvhi r1,0x802                                  <== NOT EXECUTED
 8009614:	38 21 17 78 	ori r1,r1,0x1778                               <== NOT EXECUTED
 8009618:	28 23 00 00 	lw r3,(r1+0)                                   <== NOT EXECUTED
 800961c:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8009620:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8009624:	34 04 ff ff 	mvi r4,-1                                      <== NOT EXECUTED
 8009628:	f8 00 4c 36 	calli 801c700 <__ledf2>                        <== NOT EXECUTED
 800962c:	48 01 ff e0 	bg r0,r1,80095ac <rtems_string_to_double+0x88> <== NOT EXECUTED
 8009630:	e3 ff ff dc 	bi 80095a0 <rtems_string_to_double+0x7c>       <== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtod( s, &end );                                         
                                                                      
  if ( endptr )                                                       
 8009634:	2b 84 00 20 	lw r4,(sp+32)                                  
 8009638:	e3 ff ff d4 	bi 8009588 <rtems_string_to_double+0x64>       
                                                                      

0800963c <rtems_string_to_float>: rtems_status_code rtems_string_to_float ( const char *s, float *n, char **endptr ) {
 800963c:	37 9c ff e4 	addi sp,sp,-28                                 
 8009640:	5b 8b 00 18 	sw (sp+24),r11                                 
 8009644:	5b 8c 00 14 	sw (sp+20),r12                                 
 8009648:	5b 8d 00 10 	sw (sp+16),r13                                 
 800964c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8009650:	5b 8f 00 08 	sw (sp+8),r15                                  
 8009654:	5b 9d 00 04 	sw (sp+4),ra                                   
  float result;                                                       
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 8009658:	34 0b 00 09 	mvi r11,9                                      
rtems_status_code rtems_string_to_float (                             
  const char *s,                                                      
  float *n,                                                           
  char **endptr                                                       
)                                                                     
{                                                                     
 800965c:	b8 40 60 00 	mv r12,r2                                      
 8009660:	b8 20 70 00 	mv r14,r1                                      
 8009664:	b8 60 78 00 	mv r15,r3                                      
  float result;                                                       
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 8009668:	44 40 00 13 	be r2,r0,80096b4 <rtems_string_to_float+0x78>  
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 800966c:	f8 00 11 39 	calli 800db50 <__errno>                        
 8009670:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
 8009674:	59 80 00 00 	sw (r12+0),r0                                  
                                                                      
  result = strtof( s, &end );                                         
 8009678:	b9 c0 08 00 	mv r1,r14                                      
 800967c:	37 82 00 1c 	addi r2,sp,28                                  
 8009680:	f8 00 1c 4b 	calli 80107ac <strtof>                         
 8009684:	b8 20 68 00 	mv r13,r1                                      
                                                                      
  if ( endptr )                                                       
 8009688:	45 e0 00 26 	be r15,r0,8009720 <rtems_string_to_float+0xe4> 
    *endptr = end;                                                    
 800968c:	2b 82 00 1c 	lw r2,(sp+28)                                  
 8009690:	59 e2 00 00 	sw (r15+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 8009694:	34 0b 00 0b 	mvi r11,11                                     
  result = strtof( s, &end );                                         
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 8009698:	45 c2 00 07 	be r14,r2,80096b4 <rtems_string_to_float+0x78> 
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800969c:	f8 00 11 2d 	calli 800db50 <__errno>                        
 80096a0:	28 22 00 00 	lw r2,(r1+0)                                   
 80096a4:	34 01 00 22 	mvi r1,34                                      
 80096a8:	44 41 00 0c 	be r2,r1,80096d8 <rtems_string_to_float+0x9c>  
    (( result == 0 ) || ( result == HUGE_VALF ) || ( result == -HUGE_VALF )))
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 80096ac:	59 8d 00 00 	sw (r12+0),r13                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 80096b0:	34 0b 00 00 	mvi r11,0                                      
}                                                                     
 80096b4:	b9 60 08 00 	mv r1,r11                                      
 80096b8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80096bc:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80096c0:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80096c4:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80096c8:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80096cc:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80096d0:	37 9c 00 1c 	addi sp,sp,28                                  
 80096d4:	c3 a0 00 00 	ret                                            
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 80096d8:	b9 a0 08 00 	mv r1,r13                                      
 80096dc:	34 02 00 00 	mvi r2,0                                       
 80096e0:	fb ff e5 cd 	calli 8002e14 <__eqsf2>                        
    (( result == 0 ) || ( result == HUGE_VALF ) || ( result == -HUGE_VALF )))
      return RTEMS_INVALID_NUMBER;                                    
 80096e4:	34 0b 00 0a 	mvi r11,10                                     
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 80096e8:	44 20 ff f3 	be r1,r0,80096b4 <rtems_string_to_float+0x78>  <== NEVER TAKEN
    (( result == 0 ) || ( result == HUGE_VALF ) || ( result == -HUGE_VALF )))
 80096ec:	78 01 08 02 	mvhi r1,0x802                                  
 80096f0:	38 21 17 7c 	ori r1,r1,0x177c                               
 80096f4:	28 22 00 00 	lw r2,(r1+0)                                   
 80096f8:	b9 a0 08 00 	mv r1,r13                                      
 80096fc:	f8 00 45 4d 	calli 801ac30 <__gesf2>                        
 8009700:	48 20 ff ed 	bg r1,r0,80096b4 <rtems_string_to_float+0x78>  <== ALWAYS TAKEN
 8009704:	78 01 08 02 	mvhi r1,0x802                                  <== NOT EXECUTED
 8009708:	38 21 17 80 	ori r1,r1,0x1780                               <== NOT EXECUTED
 800970c:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
 8009710:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8009714:	f8 00 45 99 	calli 801ad78 <__lesf2>                        <== NOT EXECUTED
 8009718:	48 01 ff e7 	bg r0,r1,80096b4 <rtems_string_to_float+0x78>  <== NOT EXECUTED
 800971c:	e3 ff ff e4 	bi 80096ac <rtems_string_to_float+0x70>        <== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtof( s, &end );                                         
                                                                      
  if ( endptr )                                                       
 8009720:	2b 82 00 1c 	lw r2,(sp+28)                                  
 8009724:	e3 ff ff dc 	bi 8009694 <rtems_string_to_float+0x58>        
                                                                      

08009728 <rtems_string_to_int>: const char *s, int *n, char **endptr, int base ) {
 8009728:	37 9c ff e8 	addi sp,sp,-24                                 
 800972c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8009730:	5b 8c 00 10 	sw (sp+16),r12                                 
 8009734:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8009738:	5b 8e 00 08 	sw (sp+8),r14                                  
 800973c:	5b 9d 00 04 	sw (sp+4),ra                                   
  long result;                                                        
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 8009740:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  int *n,                                                             
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 8009744:	b8 40 58 00 	mv r11,r2                                      
 8009748:	b8 20 68 00 	mv r13,r1                                      
 800974c:	b8 60 70 00 	mv r14,r3                                      
 8009750:	b8 80 60 00 	mv r12,r4                                      
  long result;                                                        
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 8009754:	44 40 00 14 	be r2,r0,80097a4 <rtems_string_to_int+0x7c>    
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 8009758:	f8 00 10 fe 	calli 800db50 <__errno>                        
 800975c:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtol( s, &end, base );                                   
 8009760:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 8009764:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  result = strtol( s, &end, base );                                   
 8009768:	b9 a0 08 00 	mv r1,r13                                      
 800976c:	37 82 00 18 	addi r2,sp,24                                  
 8009770:	f8 00 1c c2 	calli 8010a78 <strtol>                         
 8009774:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( endptr )                                                       
 8009778:	45 c0 00 1e 	be r14,r0,80097f0 <rtems_string_to_int+0xc8>   
    *endptr = end;                                                    
 800977c:	2b 82 00 18 	lw r2,(sp+24)                                  
 8009780:	59 c2 00 00 	sw (r14+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 8009784:	34 05 00 0b 	mvi r5,11                                      
  result = strtol( s, &end, base );                                   
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 8009788:	45 a2 00 07 	be r13,r2,80097a4 <rtems_string_to_int+0x7c>   
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800978c:	f8 00 10 f1 	calli 800db50 <__errno>                        
 8009790:	28 22 00 00 	lw r2,(r1+0)                                   
 8009794:	34 01 00 22 	mvi r1,34                                      
 8009798:	44 41 00 0b 	be r2,r1,80097c4 <rtems_string_to_int+0x9c>    
    errno = ERANGE;                                                   
    return RTEMS_INVALID_NUMBER;                                      
  }                                                                   
#endif                                                                
                                                                      
  *n = result;                                                        
 800979c:	59 6c 00 00 	sw (r11+0),r12                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 80097a0:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 80097a4:	b8 a0 08 00 	mv r1,r5                                       
 80097a8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80097ac:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80097b0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80097b4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80097b8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80097bc:	37 9c 00 18 	addi sp,sp,24                                  
 80097c0:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 80097c4:	78 03 08 02 	mvhi r3,0x802                                  
 80097c8:	38 63 0f f0 	ori r3,r3,0xff0                                
 80097cc:	28 61 00 00 	lw r1,(r3+0)                                   
 80097d0:	65 82 00 00 	cmpei r2,r12,0                                 
      return RTEMS_INVALID_NUMBER;                                    
 80097d4:	34 05 00 0a 	mvi r5,10                                      
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 80097d8:	e5 81 08 00 	cmpe r1,r12,r1                                 
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 80097dc:	b8 22 08 00 	or r1,r1,r2                                    
 80097e0:	5c 20 ff f1 	bne r1,r0,80097a4 <rtems_string_to_int+0x7c>   <== ALWAYS TAKEN
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 80097e4:	78 01 80 00 	mvhi r1,0x8000                                 <== NOT EXECUTED
 80097e8:	5d 81 ff ed 	bne r12,r1,800979c <rtems_string_to_int+0x74>  <== NOT EXECUTED
 80097ec:	e3 ff ff ee 	bi 80097a4 <rtems_string_to_int+0x7c>          <== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtol( s, &end, base );                                   
                                                                      
  if ( endptr )                                                       
 80097f0:	2b 82 00 18 	lw r2,(sp+24)                                  
 80097f4:	e3 ff ff e4 	bi 8009784 <rtems_string_to_int+0x5c>          
                                                                      

080098f0 <rtems_string_to_long>: const char *s, long *n, char **endptr, int base ) {
 80098f0:	37 9c ff e8 	addi sp,sp,-24                                 
 80098f4:	5b 8b 00 14 	sw (sp+20),r11                                 
 80098f8:	5b 8c 00 10 	sw (sp+16),r12                                 
 80098fc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8009900:	5b 8e 00 08 	sw (sp+8),r14                                  
 8009904:	5b 9d 00 04 	sw (sp+4),ra                                   
  long result;                                                        
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 8009908:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  long *n,                                                            
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 800990c:	b8 40 58 00 	mv r11,r2                                      
 8009910:	b8 20 68 00 	mv r13,r1                                      
 8009914:	b8 60 70 00 	mv r14,r3                                      
 8009918:	b8 80 60 00 	mv r12,r4                                      
  long result;                                                        
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 800991c:	44 40 00 14 	be r2,r0,800996c <rtems_string_to_long+0x7c>   
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 8009920:	f8 00 10 8c 	calli 800db50 <__errno>                        
 8009924:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtol( s, &end, base );                                   
 8009928:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 800992c:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  result = strtol( s, &end, base );                                   
 8009930:	b9 a0 08 00 	mv r1,r13                                      
 8009934:	37 82 00 18 	addi r2,sp,24                                  
 8009938:	f8 00 1c 50 	calli 8010a78 <strtol>                         
 800993c:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( endptr )                                                       
 8009940:	45 c0 00 1e 	be r14,r0,80099b8 <rtems_string_to_long+0xc8>  
    *endptr = end;                                                    
 8009944:	2b 82 00 18 	lw r2,(sp+24)                                  
 8009948:	59 c2 00 00 	sw (r14+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 800994c:	34 05 00 0b 	mvi r5,11                                      
  result = strtol( s, &end, base );                                   
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 8009950:	45 a2 00 07 	be r13,r2,800996c <rtems_string_to_long+0x7c>  
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009954:	f8 00 10 7f 	calli 800db50 <__errno>                        
 8009958:	28 22 00 00 	lw r2,(r1+0)                                   
 800995c:	34 01 00 22 	mvi r1,34                                      
 8009960:	44 41 00 0b 	be r2,r1,800998c <rtems_string_to_long+0x9c>   
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 8009964:	59 6c 00 00 	sw (r11+0),r12                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8009968:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 800996c:	b8 a0 08 00 	mv r1,r5                                       
 8009970:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009974:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8009978:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800997c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8009980:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8009984:	37 9c 00 18 	addi sp,sp,24                                  
 8009988:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 800998c:	78 03 08 02 	mvhi r3,0x802                                  
 8009990:	38 63 0f f0 	ori r3,r3,0xff0                                
 8009994:	28 61 00 00 	lw r1,(r3+0)                                   
 8009998:	65 82 00 00 	cmpei r2,r12,0                                 
      return RTEMS_INVALID_NUMBER;                                    
 800999c:	34 05 00 0a 	mvi r5,10                                      
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 80099a0:	e5 81 08 00 	cmpe r1,r12,r1                                 
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 80099a4:	b8 22 08 00 	or r1,r1,r2                                    
 80099a8:	5c 20 ff f1 	bne r1,r0,800996c <rtems_string_to_long+0x7c>  
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 80099ac:	78 01 80 00 	mvhi r1,0x8000                                 
 80099b0:	5d 81 ff ed 	bne r12,r1,8009964 <rtems_string_to_long+0x74> <== NEVER TAKEN
 80099b4:	e3 ff ff ee 	bi 800996c <rtems_string_to_long+0x7c>         
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtol( s, &end, base );                                   
                                                                      
  if ( endptr )                                                       
 80099b8:	2b 82 00 18 	lw r2,(sp+24)                                  
 80099bc:	e3 ff ff e4 	bi 800994c <rtems_string_to_long+0x5c>         
                                                                      

080097f8 <rtems_string_to_long_long>: const char *s, long long *n, char **endptr, int base ) {
 80097f8:	37 9c ff e4 	addi sp,sp,-28                                 
 80097fc:	5b 8b 00 18 	sw (sp+24),r11                                 
 8009800:	5b 8c 00 14 	sw (sp+20),r12                                 
 8009804:	5b 8d 00 10 	sw (sp+16),r13                                 
 8009808:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800980c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8009810:	5b 9d 00 04 	sw (sp+4),ra                                   
  long long result;                                                   
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 8009814:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  long long *n,                                                       
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 8009818:	b8 40 58 00 	mv r11,r2                                      
 800981c:	b8 20 70 00 	mv r14,r1                                      
 8009820:	b8 60 78 00 	mv r15,r3                                      
 8009824:	b8 80 60 00 	mv r12,r4                                      
  long long result;                                                   
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 8009828:	44 40 00 17 	be r2,r0,8009884 <rtems_string_to_long_long+0x8c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 800982c:	f8 00 10 c9 	calli 800db50 <__errno>                        
 8009830:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtoll( s, &end, base );                                  
 8009834:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 8009838:	59 60 00 00 	sw (r11+0),r0                                  
 800983c:	59 60 00 04 	sw (r11+4),r0                                  
                                                                      
  result = strtoll( s, &end, base );                                  
 8009840:	b9 c0 08 00 	mv r1,r14                                      
 8009844:	37 82 00 1c 	addi r2,sp,28                                  
 8009848:	f8 00 1c 9a 	calli 8010ab0 <strtoll>                        
 800984c:	b8 20 60 00 	mv r12,r1                                      
 8009850:	b8 40 68 00 	mv r13,r2                                      
                                                                      
  if ( endptr )                                                       
 8009854:	45 e0 00 25 	be r15,r0,80098e8 <rtems_string_to_long_long+0xf0>
    *endptr = end;                                                    
 8009858:	2b 84 00 1c 	lw r4,(sp+28)                                  
 800985c:	59 e4 00 00 	sw (r15+0),r4                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 8009860:	34 05 00 0b 	mvi r5,11                                      
  result = strtoll( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 8009864:	45 c4 00 08 	be r14,r4,8009884 <rtems_string_to_long_long+0x8c>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009868:	f8 00 10 ba 	calli 800db50 <__errno>                        
 800986c:	28 22 00 00 	lw r2,(r1+0)                                   
 8009870:	34 01 00 22 	mvi r1,34                                      
 8009874:	44 41 00 0d 	be r2,r1,80098a8 <rtems_string_to_long_long+0xb0>
    (( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 8009878:	59 6c 00 00 	sw (r11+0),r12                                 
 800987c:	59 6d 00 04 	sw (r11+4),r13                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8009880:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 8009884:	b8 a0 08 00 	mv r1,r5                                       
 8009888:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800988c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8009890:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8009894:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8009898:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800989c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80098a0:	37 9c 00 1c 	addi sp,sp,28                                  
 80098a4:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
 80098a8:	78 04 08 02 	mvhi r4,0x802                                  
 80098ac:	38 84 0f f0 	ori r4,r4,0xff0                                
 80098b0:	28 82 00 00 	lw r2,(r4+0)                                   
 80098b4:	a5 a0 18 00 	not r3,r13                                     
 80098b8:	b9 8d 08 00 	or r1,r12,r13                                  
 80098bc:	99 82 10 00 	xor r2,r12,r2                                  
 80098c0:	b8 43 10 00 	or r2,r2,r3                                    
 80098c4:	64 42 00 00 	cmpei r2,r2,0                                  
 80098c8:	64 21 00 00 	cmpei r1,r1,0                                  
      return RTEMS_INVALID_NUMBER;                                    
 80098cc:	34 05 00 0a 	mvi r5,10                                      
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 80098d0:	b8 41 08 00 	or r1,r2,r1                                    
 80098d4:	5c 20 ff ec 	bne r1,r0,8009884 <rtems_string_to_long_long+0x8c>
    (( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
 80098d8:	78 01 80 00 	mvhi r1,0x8000                                 
 80098dc:	5d 81 ff e7 	bne r12,r1,8009878 <rtems_string_to_long_long+0x80><== NEVER TAKEN
 80098e0:	5d a0 ff e6 	bne r13,r0,8009878 <rtems_string_to_long_long+0x80><== NEVER TAKEN
 80098e4:	e3 ff ff e8 	bi 8009884 <rtems_string_to_long_long+0x8c>    
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoll( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
 80098e8:	2b 84 00 1c 	lw r4,(sp+28)                                  
 80098ec:	e3 ff ff dd 	bi 8009860 <rtems_string_to_long_long+0x68>    
                                                                      

080099dc <rtems_string_to_unsigned_char>: const char *s, unsigned char *n, char **endptr, int base ) {
 80099dc:	37 9c ff e8 	addi sp,sp,-24                                 
 80099e0:	5b 8b 00 14 	sw (sp+20),r11                                 
 80099e4:	5b 8c 00 10 	sw (sp+16),r12                                 
 80099e8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80099ec:	5b 8e 00 08 	sw (sp+8),r14                                  
 80099f0:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 80099f4:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  unsigned char *n,                                                   
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 80099f8:	b8 40 58 00 	mv r11,r2                                      
 80099fc:	b8 20 68 00 	mv r13,r1                                      
 8009a00:	b8 60 70 00 	mv r14,r3                                      
 8009a04:	b8 80 60 00 	mv r12,r4                                      
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 8009a08:	44 40 00 18 	be r2,r0,8009a68 <rtems_string_to_unsigned_char+0x8c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 8009a0c:	f8 00 10 51 	calli 800db50 <__errno>                        
 8009a10:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
 8009a14:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 8009a18:	31 60 00 00 	sb (r11+0),r0                                  
                                                                      
  result = strtoul( s, &end, base );                                  
 8009a1c:	b9 a0 08 00 	mv r1,r13                                      
 8009a20:	37 82 00 18 	addi r2,sp,24                                  
 8009a24:	f8 00 1d 8e 	calli 801105c <strtoul>                        
 8009a28:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( endptr )                                                       
 8009a2c:	45 c0 00 28 	be r14,r0,8009acc <rtems_string_to_unsigned_char+0xf0>
    *endptr = end;                                                    
 8009a30:	2b 82 00 18 	lw r2,(sp+24)                                  
 8009a34:	59 c2 00 00 	sw (r14+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 8009a38:	34 05 00 0b 	mvi r5,11                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 8009a3c:	45 a2 00 0b 	be r13,r2,8009a68 <rtems_string_to_unsigned_char+0x8c>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009a40:	f8 00 10 44 	calli 800db50 <__errno>                        
 8009a44:	28 22 00 00 	lw r2,(r1+0)                                   
 8009a48:	34 01 00 22 	mvi r1,34                                      
 8009a4c:	44 41 00 19 	be r2,r1,8009ab0 <rtems_string_to_unsigned_char+0xd4><== NEVER TAKEN
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
#if (UCHAR_MAX < ULONG_MAX)                                           
  if ( result > UCHAR_MAX ) {                                         
 8009a50:	34 01 00 ff 	mvi r1,255                                     
 8009a54:	50 2c 00 0d 	bgeu r1,r12,8009a88 <rtems_string_to_unsigned_char+0xac><== ALWAYS TAKEN
    errno = ERANGE;                                                   
 8009a58:	f8 00 10 3e 	calli 800db50 <__errno>                        <== NOT EXECUTED
 8009a5c:	34 02 00 22 	mvi r2,34                                      <== NOT EXECUTED
 8009a60:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    return RTEMS_INVALID_NUMBER;                                      
 8009a64:	34 05 00 0a 	mvi r5,10                                      <== NOT EXECUTED
#endif                                                                
                                                                      
  *n = result;                                                        
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8009a68:	b8 a0 08 00 	mv r1,r5                                       
 8009a6c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009a70:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8009a74:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8009a78:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8009a7c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8009a80:	37 9c 00 18 	addi sp,sp,24                                  
 8009a84:	c3 a0 00 00 	ret                                            
  }                                                                   
#endif                                                                
                                                                      
  *n = result;                                                        
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8009a88:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 8009a8c:	b8 a0 08 00 	mv r1,r5                                       
    errno = ERANGE;                                                   
    return RTEMS_INVALID_NUMBER;                                      
  }                                                                   
#endif                                                                
                                                                      
  *n = result;                                                        
 8009a90:	31 6c 00 00 	sb (r11+0),r12                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8009a94:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009a98:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8009a9c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8009aa0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8009aa4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8009aa8:	37 9c 00 18 	addi sp,sp,24                                  
 8009aac:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_MAX )))                     
 8009ab0:	35 82 ff ff 	addi r2,r12,-1                                 <== NOT EXECUTED
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009ab4:	34 01 ff fd 	mvi r1,-3                                      <== NOT EXECUTED
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
 8009ab8:	34 05 00 0a 	mvi r5,10                                      <== NOT EXECUTED
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009abc:	54 41 ff eb 	bgu r2,r1,8009a68 <rtems_string_to_unsigned_char+0x8c><== NOT EXECUTED
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
#if (UCHAR_MAX < ULONG_MAX)                                           
  if ( result > UCHAR_MAX ) {                                         
 8009ac0:	34 01 00 ff 	mvi r1,255                                     <== NOT EXECUTED
 8009ac4:	50 2c ff f1 	bgeu r1,r12,8009a88 <rtems_string_to_unsigned_char+0xac><== NOT EXECUTED
 8009ac8:	e3 ff ff e4 	bi 8009a58 <rtems_string_to_unsigned_char+0x7c><== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
 8009acc:	2b 82 00 18 	lw r2,(sp+24)                                  
 8009ad0:	e3 ff ff da 	bi 8009a38 <rtems_string_to_unsigned_char+0x5c>
                                                                      

08009ad4 <rtems_string_to_unsigned_int>: const char *s, unsigned int *n, char **endptr, int base ) {
 8009ad4:	37 9c ff e8 	addi sp,sp,-24                                 
 8009ad8:	5b 8b 00 14 	sw (sp+20),r11                                 
 8009adc:	5b 8c 00 10 	sw (sp+16),r12                                 
 8009ae0:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8009ae4:	5b 8e 00 08 	sw (sp+8),r14                                  
 8009ae8:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 8009aec:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  unsigned int *n,                                                    
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 8009af0:	b8 40 58 00 	mv r11,r2                                      
 8009af4:	b8 20 60 00 	mv r12,r1                                      
 8009af8:	b8 60 68 00 	mv r13,r3                                      
 8009afc:	b8 80 70 00 	mv r14,r4                                      
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 8009b00:	44 40 00 14 	be r2,r0,8009b50 <rtems_string_to_unsigned_int+0x7c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 8009b04:	f8 00 10 13 	calli 800db50 <__errno>                        
 8009b08:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
 8009b0c:	b9 c0 18 00 	mv r3,r14                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 8009b10:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  result = strtoul( s, &end, base );                                  
 8009b14:	b9 80 08 00 	mv r1,r12                                      
 8009b18:	37 82 00 18 	addi r2,sp,24                                  
 8009b1c:	f8 00 1d 50 	calli 801105c <strtoul>                        
 8009b20:	b8 20 70 00 	mv r14,r1                                      
                                                                      
  if ( endptr )                                                       
 8009b24:	45 a0 00 18 	be r13,r0,8009b84 <rtems_string_to_unsigned_int+0xb0>
    *endptr = end;                                                    
 8009b28:	2b 82 00 18 	lw r2,(sp+24)                                  
 8009b2c:	59 a2 00 00 	sw (r13+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 8009b30:	34 05 00 0b 	mvi r5,11                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 8009b34:	45 82 00 07 	be r12,r2,8009b50 <rtems_string_to_unsigned_int+0x7c>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009b38:	f8 00 10 06 	calli 800db50 <__errno>                        
 8009b3c:	28 22 00 00 	lw r2,(r1+0)                                   
 8009b40:	34 01 00 22 	mvi r1,34                                      
 8009b44:	44 41 00 0b 	be r2,r1,8009b70 <rtems_string_to_unsigned_int+0x9c>
    errno = ERANGE;                                                   
    return RTEMS_INVALID_NUMBER;                                      
  }                                                                   
#endif                                                                
                                                                      
  *n = result;                                                        
 8009b48:	59 6e 00 00 	sw (r11+0),r14                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8009b4c:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 8009b50:	b8 a0 08 00 	mv r1,r5                                       
 8009b54:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009b58:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8009b5c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8009b60:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8009b64:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8009b68:	37 9c 00 18 	addi sp,sp,24                                  
 8009b6c:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_MAX )))                     
 8009b70:	35 c2 ff ff 	addi r2,r14,-1                                 
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009b74:	34 01 ff fd 	mvi r1,-3                                      
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
 8009b78:	34 05 00 0a 	mvi r5,10                                      
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009b7c:	54 41 ff f5 	bgu r2,r1,8009b50 <rtems_string_to_unsigned_int+0x7c><== ALWAYS TAKEN
 8009b80:	e3 ff ff f2 	bi 8009b48 <rtems_string_to_unsigned_int+0x74> <== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
 8009b84:	2b 82 00 18 	lw r2,(sp+24)                                  
 8009b88:	e3 ff ff ea 	bi 8009b30 <rtems_string_to_unsigned_int+0x5c> 
                                                                      

08009c64 <rtems_string_to_unsigned_long>: const char *s, unsigned long *n, char **endptr, int base ) {
 8009c64:	37 9c ff e8 	addi sp,sp,-24                                 
 8009c68:	5b 8b 00 14 	sw (sp+20),r11                                 
 8009c6c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8009c70:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8009c74:	5b 8e 00 08 	sw (sp+8),r14                                  
 8009c78:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 8009c7c:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  unsigned long *n,                                                   
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 8009c80:	b8 40 58 00 	mv r11,r2                                      
 8009c84:	b8 20 60 00 	mv r12,r1                                      
 8009c88:	b8 60 68 00 	mv r13,r3                                      
 8009c8c:	b8 80 70 00 	mv r14,r4                                      
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 8009c90:	44 40 00 14 	be r2,r0,8009ce0 <rtems_string_to_unsigned_long+0x7c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 8009c94:	f8 00 0f af 	calli 800db50 <__errno>                        
 8009c98:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
 8009c9c:	b9 c0 18 00 	mv r3,r14                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 8009ca0:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  result = strtoul( s, &end, base );                                  
 8009ca4:	b9 80 08 00 	mv r1,r12                                      
 8009ca8:	37 82 00 18 	addi r2,sp,24                                  
 8009cac:	f8 00 1c ec 	calli 801105c <strtoul>                        
 8009cb0:	b8 20 70 00 	mv r14,r1                                      
                                                                      
  if ( endptr )                                                       
 8009cb4:	45 a0 00 18 	be r13,r0,8009d14 <rtems_string_to_unsigned_long+0xb0>
    *endptr = end;                                                    
 8009cb8:	2b 82 00 18 	lw r2,(sp+24)                                  
 8009cbc:	59 a2 00 00 	sw (r13+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 8009cc0:	34 05 00 0b 	mvi r5,11                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 8009cc4:	45 82 00 07 	be r12,r2,8009ce0 <rtems_string_to_unsigned_long+0x7c>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009cc8:	f8 00 0f a2 	calli 800db50 <__errno>                        
 8009ccc:	28 22 00 00 	lw r2,(r1+0)                                   
 8009cd0:	34 01 00 22 	mvi r1,34                                      
 8009cd4:	44 41 00 0b 	be r2,r1,8009d00 <rtems_string_to_unsigned_long+0x9c>
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 8009cd8:	59 6e 00 00 	sw (r11+0),r14                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8009cdc:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 8009ce0:	b8 a0 08 00 	mv r1,r5                                       
 8009ce4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009ce8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8009cec:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8009cf0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8009cf4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8009cf8:	37 9c 00 18 	addi sp,sp,24                                  
 8009cfc:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_MAX )))                     
 8009d00:	35 c2 ff ff 	addi r2,r14,-1                                 
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009d04:	34 01 ff fd 	mvi r1,-3                                      
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
 8009d08:	34 05 00 0a 	mvi r5,10                                      
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009d0c:	54 41 ff f5 	bgu r2,r1,8009ce0 <rtems_string_to_unsigned_long+0x7c><== ALWAYS TAKEN
 8009d10:	e3 ff ff f2 	bi 8009cd8 <rtems_string_to_unsigned_long+0x74><== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
 8009d14:	2b 82 00 18 	lw r2,(sp+24)                                  
 8009d18:	e3 ff ff ea 	bi 8009cc0 <rtems_string_to_unsigned_long+0x5c>
                                                                      

08009b8c <rtems_string_to_unsigned_long_long>: const char *s, unsigned long long *n, char **endptr, int base ) {
 8009b8c:	37 9c ff e4 	addi sp,sp,-28                                 
 8009b90:	5b 8b 00 18 	sw (sp+24),r11                                 
 8009b94:	5b 8c 00 14 	sw (sp+20),r12                                 
 8009b98:	5b 8d 00 10 	sw (sp+16),r13                                 
 8009b9c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8009ba0:	5b 8f 00 08 	sw (sp+8),r15                                  
 8009ba4:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned long long result;                                          
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 8009ba8:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  unsigned long long *n,                                              
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 8009bac:	b8 40 58 00 	mv r11,r2                                      
 8009bb0:	b8 20 68 00 	mv r13,r1                                      
 8009bb4:	b8 60 70 00 	mv r14,r3                                      
 8009bb8:	b8 80 60 00 	mv r12,r4                                      
  unsigned long long result;                                          
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 8009bbc:	44 40 00 17 	be r2,r0,8009c18 <rtems_string_to_unsigned_long_long+0x8c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 8009bc0:	f8 00 0f e4 	calli 800db50 <__errno>                        
 8009bc4:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtoull( s, &end, base );                                 
 8009bc8:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 8009bcc:	59 60 00 00 	sw (r11+0),r0                                  
 8009bd0:	59 60 00 04 	sw (r11+4),r0                                  
                                                                      
  result = strtoull( s, &end, base );                                 
 8009bd4:	b9 a0 08 00 	mv r1,r13                                      
 8009bd8:	37 82 00 1c 	addi r2,sp,28                                  
 8009bdc:	f8 00 1d 2e 	calli 8011094 <strtoull>                       
 8009be0:	b8 20 78 00 	mv r15,r1                                      
 8009be4:	b8 40 60 00 	mv r12,r2                                      
                                                                      
  if ( endptr )                                                       
 8009be8:	45 c0 00 1d 	be r14,r0,8009c5c <rtems_string_to_unsigned_long_long+0xd0>
    *endptr = end;                                                    
 8009bec:	2b 84 00 1c 	lw r4,(sp+28)                                  
 8009bf0:	59 c4 00 00 	sw (r14+0),r4                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 8009bf4:	34 05 00 0b 	mvi r5,11                                      
  result = strtoull( s, &end, base );                                 
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 8009bf8:	45 a4 00 08 	be r13,r4,8009c18 <rtems_string_to_unsigned_long_long+0x8c>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009bfc:	f8 00 0f d5 	calli 800db50 <__errno>                        
 8009c00:	28 22 00 00 	lw r2,(r1+0)                                   
 8009c04:	34 01 00 22 	mvi r1,34                                      
 8009c08:	44 41 00 0d 	be r2,r1,8009c3c <rtems_string_to_unsigned_long_long+0xb0>
    (( result == 0 ) || ( result == ULONG_LONG_MAX )))                
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 8009c0c:	59 6f 00 00 	sw (r11+0),r15                                 
 8009c10:	59 6c 00 04 	sw (r11+4),r12                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8009c14:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 8009c18:	b8 a0 08 00 	mv r1,r5                                       
 8009c1c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009c20:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8009c24:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8009c28:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8009c2c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8009c30:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8009c34:	37 9c 00 1c 	addi sp,sp,28                                  
 8009c38:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_LONG_MAX )))                
 8009c3c:	35 81 ff ff 	addi r1,r12,-1                                 
 8009c40:	f5 81 18 00 	cmpgu r3,r12,r1                                
 8009c44:	c8 0f 10 00 	sub r2,r0,r15                                  
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009c48:	5c 62 ff f1 	bne r3,r2,8009c0c <rtems_string_to_unsigned_long_long+0x80><== NEVER TAKEN
 8009c4c:	34 02 ff fd 	mvi r2,-3                                      
    (( result == 0 ) || ( result == ULONG_LONG_MAX )))                
      return RTEMS_INVALID_NUMBER;                                    
 8009c50:	34 05 00 0a 	mvi r5,10                                      
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8009c54:	54 22 ff f1 	bgu r1,r2,8009c18 <rtems_string_to_unsigned_long_long+0x8c><== ALWAYS TAKEN
 8009c58:	e3 ff ff ed 	bi 8009c0c <rtems_string_to_unsigned_long_long+0x80><== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoull( s, &end, base );                                 
                                                                      
  if ( endptr )                                                       
 8009c5c:	2b 84 00 1c 	lw r4,(sp+28)                                  
 8009c60:	e3 ff ff e5 	bi 8009bf4 <rtems_string_to_unsigned_long_long+0x68>
                                                                      

08000fb8 <rtems_tarfs_load>: int rtems_tarfs_load( char *mountpoint, uint8_t *tar_image, size_t tar_size ) {
 8000fb8:	37 9c fe 2c 	addi sp,sp,-468                                
 8000fbc:	5b 8b 00 44 	sw (sp+68),r11                                 
 8000fc0:	5b 8c 00 40 	sw (sp+64),r12                                 
 8000fc4:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8000fc8:	5b 8e 00 38 	sw (sp+56),r14                                 
 8000fcc:	5b 8f 00 34 	sw (sp+52),r15                                 
 8000fd0:	5b 90 00 30 	sw (sp+48),r16                                 
 8000fd4:	5b 91 00 2c 	sw (sp+44),r17                                 
 8000fd8:	5b 92 00 28 	sw (sp+40),r18                                 
 8000fdc:	5b 93 00 24 	sw (sp+36),r19                                 
 8000fe0:	5b 94 00 20 	sw (sp+32),r20                                 
 8000fe4:	5b 95 00 1c 	sw (sp+28),r21                                 
 8000fe8:	5b 96 00 18 	sw (sp+24),r22                                 
 8000fec:	5b 97 00 14 	sw (sp+20),r23                                 
 8000ff0:	5b 98 00 10 	sw (sp+16),r24                                 
 8000ff4:	5b 99 00 0c 	sw (sp+12),r25                                 
 8000ff8:	5b 9b 00 08 	sw (sp+8),fp                                   
 8000ffc:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001000:	b8 20 c8 00 	mv r25,r1                                      
 8001004:	b8 60 90 00 	mv r18,r3                                      
 8001008:	b8 40 88 00 	mv r17,r2                                      
   int                              offset;                           
   unsigned long                    nblocks;                          
   IMFS_jnode_t                    *node;                             
   int                              status;                           
                                                                      
   status = rtems_filesystem_evaluate_path(                           
 800100c:	f8 00 45 64 	calli 801259c <strlen>                         
 8001010:	b8 20 10 00 	mv r2,r1                                       
 8001014:	34 03 00 00 	mvi r3,0                                       
 8001018:	bb 20 08 00 	mv r1,r25                                      
 800101c:	37 84 01 c0 	addi r4,sp,448                                 
 8001020:	34 05 00 00 	mvi r5,0                                       
 8001024:	f8 00 03 56 	calli 8001d7c <rtems_filesystem_evaluate_path> 
 8001028:	b8 20 b8 00 	mv r23,r1                                      
      strlen(mountpoint),                                             
      0,                                                              
      &root_loc,                                                      
      0                                                               
   );                                                                 
   if (status != 0)                                                   
 800102c:	5c 20 00 4b 	bne r1,r0,8001158 <rtems_tarfs_load+0x1a0>     
     return -1;                                                       
                                                                      
   if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)    
 8001030:	2b 81 01 cc 	lw r1,(sp+460)                                 
 8001034:	78 03 08 02 	mvhi r3,0x802                                  
 8001038:	38 63 1b 54 	ori r3,r3,0x1b54                               
 800103c:	34 0b 00 00 	mvi r11,0                                      
 8001040:	5c 23 00 42 	bne r1,r3,8001148 <rtems_tarfs_load+0x190>     
    /*                                                                
     * Read a header.                                                 
     */                                                               
    hdr_ptr = (char *) &tar_image[offset];                            
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
 8001044:	78 10 08 02 	mvhi r16,0x802                                 
 8001048:	3a 10 1b 9c 	ori r16,r16,0x1b9c                             
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
 800104c:	37 8e 01 48 	addi r14,sp,328                                
     * 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) {                                        
 8001050:	34 14 00 35 	mvi r20,53                                     
     *        IMFS_create_node was ONLY passed a NULL when we created the
     *        root node.  We added a new IMFS_create_root_node() so this
     *        path no longer existed.  The result was simpler code which
     *        should not have this path.                              
     */                                                               
    else if (linkflag == REGTYPE) {                                   
 8001054:	34 18 00 30 	mvi r24,48                                     
     * - 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);                              
 8001058:	37 95 00 48 	addi r21,sp,72                                 
      if (full_filename[strlen(full_filename)-1] != '/')              
 800105c:	34 1b 00 2f 	mvi fp,47                                      
   /*                                                                 
    * Create an IMFS node structure pointing to tar image memory.     
    */                                                                
   offset = 0;                                                        
   while (1) {                                                        
    if (offset + 512 > tar_size)                                      
 8001060:	35 6c 02 00 	addi r12,r11,512                               
 8001064:	55 92 00 3e 	bgu r12,r18,800115c <rtems_tarfs_load+0x1a4>   <== NEVER TAKEN
      break;                                                          
                                                                      
    /*                                                                
     * Read a header.                                                 
     */                                                               
    hdr_ptr = (char *) &tar_image[offset];                            
 8001068:	b6 2b 58 00 	add r11,r17,r11                                
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
 800106c:	35 61 01 01 	addi r1,r11,257                                
 8001070:	ba 00 10 00 	mv r2,r16                                      
 8001074:	34 03 00 05 	mvi r3,5                                       
 8001078:	f8 00 45 78 	calli 8012658 <strncmp>                        
 800107c:	5c 20 00 38 	bne r1,r0,800115c <rtems_tarfs_load+0x1a4>     
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
 8001080:	34 03 00 63 	mvi r3,99                                      
 8001084:	b9 60 10 00 	mv r2,r11                                      
 8001088:	b9 c0 08 00 	mv r1,r14                                      
 800108c:	f8 00 45 c0 	calli 801278c <strncpy>                        
    filename[MAX_NAME_FIELD_SIZE] = '\0';                             
                                                                      
    linkflag   = hdr_ptr[156];                                        
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
 8001090:	34 02 00 08 	mvi r2,8                                       
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
    filename[MAX_NAME_FIELD_SIZE] = '\0';                             
 8001094:	33 80 01 ab 	sb (sp+427),r0                                 
                                                                      
    linkflag   = hdr_ptr[156];                                        
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
 8001098:	35 61 00 64 	addi r1,r11,100                                
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
    filename[MAX_NAME_FIELD_SIZE] = '\0';                             
                                                                      
    linkflag   = hdr_ptr[156];                                        
 800109c:	41 6d 00 9c 	lbu r13,(r11+156)                              
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
 80010a0:	f8 00 1b 64 	calli 8007e30 <_rtems_octal2ulong>             
    file_size  = _rtems_octal2ulong(&hdr_ptr[124], 12);               
 80010a4:	34 02 00 0c 	mvi r2,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);                
 80010a8:	b8 20 b0 00 	mv r22,r1                                      
    file_size  = _rtems_octal2ulong(&hdr_ptr[124], 12);               
 80010ac:	35 61 00 7c 	addi r1,r11,124                                
 80010b0:	f8 00 1b 60 	calli 8007e30 <_rtems_octal2ulong>             
 80010b4:	b8 20 98 00 	mv r19,r1                                      
    hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);                
 80010b8:	34 02 00 08 	mvi r2,8                                       
 80010bc:	35 61 00 94 	addi r1,r11,148                                
 80010c0:	f8 00 1b 5c 	calli 8007e30 <_rtems_octal2ulong>             
 80010c4:	b8 20 78 00 	mv r15,r1                                      
                                                                      
    if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)            
 80010c8:	b9 60 08 00 	mv r1,r11                                      
 80010cc:	f8 00 1c ad 	calli 8008380 <_rtems_tar_header_checksum>     
 80010d0:	5c 2f 00 23 	bne r1,r15,800115c <rtems_tarfs_load+0x1a4>    <== NEVER TAKEN
     * 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) {                                        
 80010d4:	45 b4 00 36 	be r13,r20,80011ac <rtems_tarfs_load+0x1f4>    
     *        IMFS_create_node was ONLY passed a NULL when we created the
     *        root node.  We added a new IMFS_create_root_node() so this
     *        path no longer existed.  The result was simpler code which
     *        should not have this path.                              
     */                                                               
    else if (linkflag == REGTYPE) {                                   
 80010d8:	45 b8 00 03 	be r13,r24,80010e4 <rtems_tarfs_load+0x12c>    
      0                                                               
   );                                                                 
   if (status != 0)                                                   
     return -1;                                                       
                                                                      
   if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)    
 80010dc:	b9 80 58 00 	mv r11,r12                                     
 80010e0:	e3 ff ff e0 	bi 8001060 <rtems_tarfs_load+0xa8>             
     *        should not have this path.                              
     */                                                               
    else if (linkflag == REGTYPE) {                                   
      const char  *name;                                              
                                                                      
      loc = root_loc;                                                 
 80010e4:	2b 84 01 c0 	lw r4,(sp+448)                                 
      if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {       
 80010e8:	b9 c0 08 00 	mv r1,r14                                      
 80010ec:	37 82 01 ac 	addi r2,sp,428                                 
     *        should not have this path.                              
     */                                                               
    else if (linkflag == REGTYPE) {                                   
      const char  *name;                                              
                                                                      
      loc = root_loc;                                                 
 80010f0:	5b 84 01 ac 	sw (sp+428),r4                                 
 80010f4:	2b 84 01 c4 	lw r4,(sp+452)                                 
      if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {       
 80010f8:	37 83 01 d4 	addi r3,sp,468                                 
     *        should not have this path.                              
     */                                                               
    else if (linkflag == REGTYPE) {                                   
      const char  *name;                                              
                                                                      
      loc = root_loc;                                                 
 80010fc:	5b 84 01 b0 	sw (sp+432),r4                                 
 8001100:	2b 84 01 c8 	lw r4,(sp+456)                                 
 8001104:	5b 84 01 b4 	sw (sp+436),r4                                 
 8001108:	2b 84 01 cc 	lw r4,(sp+460)                                 
 800110c:	5b 84 01 b8 	sw (sp+440),r4                                 
 8001110:	2b 84 01 d0 	lw r4,(sp+464)                                 
 8001114:	5b 84 01 bc 	sw (sp+444),r4                                 
      if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {       
 8001118:	f8 00 1f 35 	calli 8008dec <IMFS_evaluate_for_make>         
 800111c:	44 20 00 38 	be r1,r0,80011fc <rtems_tarfs_load+0x244>      <== ALWAYS TAKEN
        );                                                            
        node->info.linearfile.size   = file_size;                     
        node->info.linearfile.direct = &tar_image[offset];            
      }                                                               
                                                                      
      nblocks = (((file_size) + 511) & ~511) / 512;                   
 8001120:	34 03 fe 00 	mvi r3,-512                                    <== NOT EXECUTED
 8001124:	36 61 01 ff 	addi r1,r19,511                                <== NOT EXECUTED
 8001128:	34 02 00 09 	mvi r2,9                                       <== NOT EXECUTED
 800112c:	a0 23 08 00 	and r1,r1,r3                                   <== NOT EXECUTED
 8001130:	f8 00 75 11 	calli 801e574 <__lshrsi3>                      <== NOT EXECUTED
      offset += 512 * nblocks;                                        
 8001134:	34 02 00 09 	mvi r2,9                                       <== NOT EXECUTED
 8001138:	f8 00 74 c1 	calli 801e43c <__ashlsi3>                      <== NOT EXECUTED
 800113c:	b4 2c 60 00 	add r12,r1,r12                                 <== NOT EXECUTED
      0                                                               
   );                                                                 
   if (status != 0)                                                   
     return -1;                                                       
                                                                      
   if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)    
 8001140:	b9 80 58 00 	mv r11,r12                                     
 8001144:	e3 ff ff c7 	bi 8001060 <rtems_tarfs_load+0xa8>             
 8001148:	78 02 08 02 	mvhi r2,0x802                                  
 800114c:	38 42 23 bc 	ori r2,r2,0x23bc                               
 8001150:	ba e0 58 00 	mv r11,r23                                     
 8001154:	44 22 ff bc 	be r1,r2,8001044 <rtems_tarfs_load+0x8c>       <== NEVER TAKEN
     return -1;                                                       
 8001158:	34 17 ff ff 	mvi r23,-1                                     
      nblocks = (((file_size) + 511) & ~511) / 512;                   
      offset += 512 * nblocks;                                        
    }                                                                 
  }                                                                   
  return status;                                                      
}                                                                     
 800115c:	ba e0 08 00 	mv r1,r23                                      
 8001160:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001164:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8001168:	2b 8c 00 40 	lw r12,(sp+64)                                 
 800116c:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8001170:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8001174:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8001178:	2b 90 00 30 	lw r16,(sp+48)                                 
 800117c:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8001180:	2b 92 00 28 	lw r18,(sp+40)                                 
 8001184:	2b 93 00 24 	lw r19,(sp+36)                                 
 8001188:	2b 94 00 20 	lw r20,(sp+32)                                 
 800118c:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8001190:	2b 96 00 18 	lw r22,(sp+24)                                 
 8001194:	2b 97 00 14 	lw r23,(sp+20)                                 
 8001198:	2b 98 00 10 	lw r24,(sp+16)                                 
 800119c:	2b 99 00 0c 	lw r25,(sp+12)                                 
 80011a0:	2b 9b 00 08 	lw fp,(sp+8)                                   
 80011a4:	37 9c 01 d4 	addi sp,sp,468                                 
 80011a8:	c3 a0 00 00 	ret                                            
     * - 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);                              
 80011ac:	bb 20 10 00 	mv r2,r25                                      
 80011b0:	ba a0 08 00 	mv r1,r21                                      
 80011b4:	f8 00 43 c6 	calli 80120cc <strcpy>                         
      if (full_filename[strlen(full_filename)-1] != '/')              
 80011b8:	ba a0 08 00 	mv r1,r21                                      
 80011bc:	f8 00 44 f8 	calli 801259c <strlen>                         
 80011c0:	37 82 00 47 	addi r2,sp,71                                  
 80011c4:	b4 41 18 00 	add r3,r2,r1                                   
 80011c8:	40 63 00 00 	lbu r3,(r3+0)                                  
 80011cc:	44 7b 00 04 	be r3,fp,80011dc <rtems_tarfs_load+0x224>      <== ALWAYS TAKEN
        strcat(full_filename, "/");                                   
 80011d0:	b6 a1 08 00 	add r1,r21,r1                                  <== NOT EXECUTED
 80011d4:	30 3b 00 00 	sb (r1+0),fp                                   <== NOT EXECUTED
 80011d8:	30 20 00 01 	sb (r1+1),r0                                   <== NOT EXECUTED
      strcat(full_filename, filename);                                
 80011dc:	b9 c0 10 00 	mv r2,r14                                      
 80011e0:	ba a0 08 00 	mv r1,r21                                      
 80011e4:	f8 00 43 63 	calli 8011f70 <strcat>                         
      mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);              
 80011e8:	ba a0 08 00 	mv r1,r21                                      
 80011ec:	34 02 01 ff 	mvi r2,511                                     
 80011f0:	f8 00 05 bb 	calli 80028dc <mkdir>                          
      0                                                               
   );                                                                 
   if (status != 0)                                                   
     return -1;                                                       
                                                                      
   if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)    
 80011f4:	b9 80 58 00 	mv r11,r12                                     
 80011f8:	e3 ff ff 9a 	bi 8001060 <rtems_tarfs_load+0xa8>             
    else if (linkflag == REGTYPE) {                                   
      const char  *name;                                              
                                                                      
      loc = root_loc;                                                 
      if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {       
        node = IMFS_create_node(                                      
 80011fc:	2b 83 01 d4 	lw r3,(sp+468)                                 
          &loc,                                                       
          IMFS_LINEAR_FILE, (char *)name,                             
          (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,      
 8001200:	22 c4 01 ff 	andi r4,r22,0x1ff                              
    else if (linkflag == REGTYPE) {                                   
      const char  *name;                                              
                                                                      
      loc = root_loc;                                                 
      if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {       
        node = IMFS_create_node(                                      
 8001204:	38 84 80 00 	ori r4,r4,0x8000                               
 8001208:	34 05 00 00 	mvi r5,0                                       
 800120c:	34 02 00 06 	mvi r2,6                                       
 8001210:	37 81 01 ac 	addi r1,sp,428                                 
 8001214:	f8 00 1d 04 	calli 8008624 <IMFS_create_node>               
          IMFS_LINEAR_FILE, (char *)name,                             
          (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,      
          NULL                                                        
        );                                                            
        node->info.linearfile.size   = file_size;                     
        node->info.linearfile.direct = &tar_image[offset];            
 8001218:	b6 2c 10 00 	add r2,r17,r12                                 
 800121c:	58 22 00 58 	sw (r1+88),r2                                  
      }                                                               
                                                                      
      nblocks = (((file_size) + 511) & ~511) / 512;                   
 8001220:	34 03 fe 00 	mvi r3,-512                                    
          &loc,                                                       
          IMFS_LINEAR_FILE, (char *)name,                             
          (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,      
          NULL                                                        
        );                                                            
        node->info.linearfile.size   = file_size;                     
 8001224:	58 20 00 50 	sw (r1+80),r0                                  
 8001228:	58 33 00 54 	sw (r1+84),r19                                 
        node->info.linearfile.direct = &tar_image[offset];            
      }                                                               
                                                                      
      nblocks = (((file_size) + 511) & ~511) / 512;                   
 800122c:	36 61 01 ff 	addi r1,r19,511                                
 8001230:	34 02 00 09 	mvi r2,9                                       
 8001234:	a0 23 08 00 	and r1,r1,r3                                   
 8001238:	f8 00 74 cf 	calli 801e574 <__lshrsi3>                      
      offset += 512 * nblocks;                                        
 800123c:	34 02 00 09 	mvi r2,9                                       
 8001240:	f8 00 74 7f 	calli 801e43c <__ashlsi3>                      
 8001244:	b4 2c 60 00 	add r12,r1,r12                                 
 8001248:	e3 ff ff be 	bi 8001140 <rtems_tarfs_load+0x188>            
                                                                      

0800c6fc <rtems_task_mode>: rtems_status_code rtems_task_mode( rtems_mode mode_set, rtems_mode mask, rtems_mode *previous_mode_set ) {
 800c6fc:	37 9c ff dc 	addi sp,sp,-36                                 
 800c700:	5b 8b 00 24 	sw (sp+36),r11                                 
 800c704:	5b 8c 00 20 	sw (sp+32),r12                                 
 800c708:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800c70c:	5b 8e 00 18 	sw (sp+24),r14                                 
 800c710:	5b 8f 00 14 	sw (sp+20),r15                                 
 800c714:	5b 90 00 10 	sw (sp+16),r16                                 
 800c718:	5b 91 00 0c 	sw (sp+12),r17                                 
 800c71c:	5b 92 00 08 	sw (sp+8),r18                                  
 800c720:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c724:	b8 40 70 00 	mv r14,r2                                      
 800c728:	b8 60 88 00 	mv r17,r3                                      
 800c72c:	b8 20 80 00 	mv r16,r1                                      
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
 800c730:	34 02 00 09 	mvi r2,9                                       
  ASR_Information    *asr;                                            
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
 800c734:	44 60 00 46 	be r3,r0,800c84c <rtems_task_mode+0x150>       
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
 800c738:	78 0f 08 01 	mvhi r15,0x801                                 
 800c73c:	39 ef 4d b4 	ori r15,r15,0x4db4                             
 800c740:	29 eb 00 0c 	lw r11,(r15+12)                                
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
 800c744:	41 6d 00 74 	lbu r13,(r11+116)                              
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
 800c748:	29 61 00 7c 	lw r1,(r11+124)                                
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
 800c74c:	29 6c 01 1c 	lw r12,(r11+284)                               
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
 800c750:	65 ad 00 00 	cmpei r13,r13,0                                
 800c754:	b5 ad 20 00 	add r4,r13,r13                                 
 800c758:	b4 84 20 00 	add r4,r4,r4                                   
 800c75c:	b4 84 20 00 	add r4,r4,r4                                   
 800c760:	b4 84 20 00 	add r4,r4,r4                                   
 800c764:	b4 84 20 00 	add r4,r4,r4                                   
 800c768:	b4 84 20 00 	add r4,r4,r4                                   
 800c76c:	b4 84 20 00 	add r4,r4,r4                                   
 800c770:	b4 84 68 00 	add r13,r4,r4                                  
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
 800c774:	5c 20 00 42 	bne r1,r0,800c87c <rtems_task_mode+0x180>      
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
 800c778:	41 92 00 08 	lbu r18,(r12+8)                                
  old_mode |= _ISR_Get_level();                                       
 800c77c:	fb ff ea cc 	calli 80072ac <_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;           
 800c780:	66 52 00 00 	cmpei r18,r18,0                                
 800c784:	c8 12 90 00 	sub r18,r0,r18                                 
 800c788:	22 52 04 00 	andi r18,r18,0x400                             
 800c78c:	ba 41 08 00 	or r1,r18,r1                                   
  old_mode |= _ISR_Get_level();                                       
 800c790:	b8 2d 68 00 	or r13,r1,r13                                  
                                                                      
  *previous_mode_set = old_mode;                                      
 800c794:	5a 2d 00 00 	sw (r17+0),r13                                 
                                                                      
  /*                                                                  
   *  These are generic thread scheduling characteristics.            
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
 800c798:	21 c1 01 00 	andi r1,r14,0x100                              
 800c79c:	44 20 00 04 	be r1,r0,800c7ac <rtems_task_mode+0xb0>        
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Modes_Is_preempt (                         
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
   return (mode_set & RTEMS_PREEMPT_MASK) == RTEMS_PREEMPT;           
 800c7a0:	22 01 01 00 	andi r1,r16,0x100                              
    executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
 800c7a4:	64 21 00 00 	cmpei r1,r1,0                                  
 800c7a8:	31 61 00 74 	sb (r11+116),r1                                
                                                                      
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
 800c7ac:	21 c1 02 00 	andi r1,r14,0x200                              
 800c7b0:	44 20 00 09 	be r1,r0,800c7d4 <rtems_task_mode+0xd8>        
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Modes_Is_timeslice (                       
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  return (mode_set & RTEMS_TIMESLICE_MASK) == RTEMS_TIMESLICE;        
 800c7b4:	22 01 02 00 	andi r1,r16,0x200                              
    if ( _Modes_Is_timeslice(mode_set) ) {                            
 800c7b8:	44 20 00 3e 	be r1,r0,800c8b0 <rtems_task_mode+0x1b4>       
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
 800c7bc:	78 01 08 01 	mvhi r1,0x801                                  
 800c7c0:	38 21 48 a0 	ori r1,r1,0x48a0                               
 800c7c4:	28 22 00 00 	lw r2,(r1+0)                                   
  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;
 800c7c8:	34 01 00 01 	mvi r1,1                                       
 800c7cc:	59 61 00 7c 	sw (r11+124),r1                                
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
 800c7d0:	59 62 00 78 	sw (r11+120),r2                                
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
 800c7d4:	21 c1 00 01 	andi r1,r14,0x1                                
 800c7d8:	44 20 00 04 	be r1,r0,800c7e8 <rtems_task_mode+0xec>        
 */                                                                   
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (           
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  return ( mode_set & RTEMS_INTERRUPT_MASK );                         
 800c7dc:	22 01 00 01 	andi r1,r16,0x1                                
 */                                                                   
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (                
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );           
 800c7e0:	64 21 00 00 	cmpei r1,r1,0                                  
 800c7e4:	d0 01 00 00 	wcsr IE,r1                                     
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
 800c7e8:	21 ce 04 00 	andi r14,r14,0x400                             
                                                                      
  /*                                                                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
 800c7ec:	34 04 00 00 	mvi r4,0                                       
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
 800c7f0:	45 c0 00 11 	be r14,r0,800c834 <rtems_task_mode+0x138>      
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Modes_Is_asr_disabled (                    
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
   return (mode_set & RTEMS_ASR_MASK) == RTEMS_NO_ASR;                
 800c7f4:	22 10 04 00 	andi r16,r16,0x400                             
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
    if ( is_asr_enabled != asr->is_enabled ) {                        
 800c7f8:	41 81 00 08 	lbu r1,(r12+8)                                 
 *  Output:                                                           
 *    *previous_mode_set - previous mode set                          
 *     always return RTEMS_SUCCESSFUL;                                
 */                                                                   
                                                                      
rtems_status_code rtems_task_mode(                                    
 800c7fc:	66 10 00 00 	cmpei r16,r16,0                                
  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 ) {                        
 800c800:	44 30 00 0d 	be r1,r16,800c834 <rtems_task_mode+0x138>      
      asr->is_enabled = is_asr_enabled;                               
 800c804:	31 90 00 08 	sb (r12+8),r16                                 
)                                                                     
{                                                                     
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
 800c808:	90 00 08 00 	rcsr r1,IE                                     
 800c80c:	34 02 ff fe 	mvi r2,-2                                      
 800c810:	a0 22 10 00 	and r2,r1,r2                                   
 800c814:	d0 02 00 00 	wcsr IE,r2                                     
    _signals                     = information->signals_pending;      
 800c818:	29 83 00 18 	lw r3,(r12+24)                                 
    information->signals_pending = information->signals_posted;       
 800c81c:	29 82 00 14 	lw r2,(r12+20)                                 
    information->signals_posted  = _signals;                          
 800c820:	59 83 00 14 	sw (r12+20),r3                                 
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
    _signals                     = information->signals_pending;      
    information->signals_pending = information->signals_posted;       
 800c824:	59 82 00 18 	sw (r12+24),r2                                 
    information->signals_posted  = _signals;                          
  _ISR_Enable( _level );                                              
 800c828:	d0 01 00 00 	wcsr IE,r1                                     
      _ASR_Swap_signals( asr );                                       
      if ( _ASR_Are_signals_pending( asr ) ) {                        
 800c82c:	29 84 00 14 	lw r4,(r12+20)                                 
                                                                      
  /*                                                                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
 800c830:	7c 84 00 00 	cmpnei r4,r4,0                                 
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
 800c834:	78 01 08 01 	mvhi r1,0x801                                  
 800c838:	38 21 4a 60 	ori r1,r1,0x4a60                               
 800c83c:	28 23 00 00 	lw r3,(r1+0)                                   
 800c840:	34 01 00 03 	mvi r1,3                                       
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800c844:	34 02 00 00 	mvi r2,0                                       
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
 800c848:	44 61 00 0f 	be r3,r1,800c884 <rtems_task_mode+0x188>       
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 800c84c:	b8 40 08 00 	mv r1,r2                                       
 800c850:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c854:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800c858:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800c85c:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800c860:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800c864:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800c868:	2b 90 00 10 	lw r16,(sp+16)                                 
 800c86c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800c870:	2b 92 00 08 	lw r18,(sp+8)                                  
 800c874:	37 9c 00 24 	addi sp,sp,36                                  
 800c878:	c3 a0 00 00 	ret                                            
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
 800c87c:	39 ad 02 00 	ori r13,r13,0x200                              
 800c880:	e3 ff ff be 	bi 800c778 <rtems_task_mode+0x7c>              
  bool are_signals_pending                                            
)                                                                     
{                                                                     
  Thread_Control     *executing;                                      
                                                                      
  executing = _Thread_Executing;                                      
 800c884:	29 e1 00 0c 	lw r1,(r15+12)                                 
                                                                      
  if ( are_signals_pending ||                                         
 800c888:	5c 80 00 05 	bne r4,r0,800c89c <rtems_task_mode+0x1a0>      
 800c88c:	29 e3 00 10 	lw r3,(r15+16)                                 
 800c890:	44 23 ff ef 	be r1,r3,800c84c <rtems_task_mode+0x150>       
       (!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
 800c894:	40 21 00 74 	lbu r1,(r1+116)                                
 800c898:	44 20 ff ed 	be r1,r0,800c84c <rtems_task_mode+0x150>       <== NEVER TAKEN
    _Thread_Dispatch_necessary = true;                                
 800c89c:	34 01 00 01 	mvi r1,1                                       
 800c8a0:	31 e1 00 18 	sb (r15+24),r1                                 
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
 800c8a4:	fb ff e4 06 	calli 80058bc <_Thread_Dispatch>               
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800c8a8:	34 02 00 00 	mvi r2,0                                       
 800c8ac:	e3 ff ff e8 	bi 800c84c <rtems_task_mode+0x150>             
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
    if ( _Modes_Is_timeslice(mode_set) ) {                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
    } else                                                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; 
 800c8b0:	59 60 00 7c 	sw (r11+124),r0                                
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
 800c8b4:	21 c1 00 01 	andi r1,r14,0x1                                
 800c8b8:	44 20 ff cc 	be r1,r0,800c7e8 <rtems_task_mode+0xec>        
 800c8bc:	e3 ff ff c8 	bi 800c7dc <rtems_task_mode+0xe0>              
                                                                      

08008c08 <rtems_task_set_priority>: rtems_status_code rtems_task_set_priority( rtems_id id, rtems_task_priority new_priority, rtems_task_priority *old_priority ) {
 8008c08:	37 9c ff f0 	addi sp,sp,-16                                 
 8008c0c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8008c10:	5b 8c 00 08 	sw (sp+8),r12                                  
 8008c14:	5b 9d 00 04 	sw (sp+4),ra                                   
 8008c18:	b8 40 58 00 	mv r11,r2                                      
 8008c1c:	b8 60 60 00 	mv r12,r3                                      
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
 8008c20:	44 40 00 06 	be r2,r0,8008c38 <rtems_task_set_priority+0x30>
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (            
  rtems_task_priority the_priority                                    
)                                                                     
{                                                                     
  return (  ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&             
            ( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );             
 8008c24:	78 02 08 01 	mvhi r2,0x801                                  
 8008c28:	38 42 b0 f0 	ori r2,r2,0xb0f0                               
 8008c2c:	40 42 00 00 	lbu r2,(r2+0)                                  
       !_RTEMS_tasks_Priority_is_valid( new_priority ) )              
    return RTEMS_INVALID_PRIORITY;                                    
 8008c30:	34 04 00 13 	mvi r4,19                                      
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (            
  rtems_task_priority the_priority                                    
)                                                                     
{                                                                     
  return (  ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&             
 8008c34:	55 62 00 08 	bgu r11,r2,8008c54 <rtems_task_set_priority+0x4c>
                                                                      
  if ( !old_priority )                                                
    return RTEMS_INVALID_ADDRESS;                                     
 8008c38:	34 04 00 09 	mvi r4,9                                       
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
       !_RTEMS_tasks_Priority_is_valid( new_priority ) )              
    return RTEMS_INVALID_PRIORITY;                                    
                                                                      
  if ( !old_priority )                                                
 8008c3c:	45 80 00 06 	be r12,r0,8008c54 <rtems_task_set_priority+0x4c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 8008c40:	37 82 00 10 	addi r2,sp,16                                  
 8008c44:	f8 00 0b 1a 	calli 800b8ac <_Thread_Get>                    
  switch ( location ) {                                               
 8008c48:	2b 82 00 10 	lw r2,(sp+16)                                  
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8008c4c:	34 04 00 04 	mvi r4,4                                       
                                                                      
  if ( !old_priority )                                                
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
 8008c50:	44 40 00 07 	be r2,r0,8008c6c <rtems_task_set_priority+0x64>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8008c54:	b8 80 08 00 	mv r1,r4                                       
 8008c58:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008c5c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8008c60:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8008c64:	37 9c 00 10 	addi sp,sp,16                                  
 8008c68:	c3 a0 00 00 	ret                                            
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      /* XXX need helper to "convert" from core priority */           
      *old_priority = the_thread->current_priority;                   
 8008c6c:	28 23 00 14 	lw r3,(r1+20)                                  
 8008c70:	59 83 00 00 	sw (r12+0),r3                                  
      if ( new_priority != RTEMS_CURRENT_PRIORITY ) {                 
 8008c74:	45 62 00 09 	be r11,r2,8008c98 <rtems_task_set_priority+0x90>
        the_thread->real_priority = new_priority;                     
        if ( the_thread->resource_count == 0 ||                       
 8008c78:	28 22 00 1c 	lw r2,(r1+28)                                  
                                                                      
    case OBJECTS_LOCAL:                                               
      /* XXX need helper to "convert" from core priority */           
      *old_priority = the_thread->current_priority;                   
      if ( new_priority != RTEMS_CURRENT_PRIORITY ) {                 
        the_thread->real_priority = new_priority;                     
 8008c7c:	58 2b 00 18 	sw (r1+24),r11                                 
        if ( the_thread->resource_count == 0 ||                       
 8008c80:	44 40 00 03 	be r2,r0,8008c8c <rtems_task_set_priority+0x84>
 8008c84:	28 22 00 14 	lw r2,(r1+20)                                  
 8008c88:	51 62 00 04 	bgeu r11,r2,8008c98 <rtems_task_set_priority+0x90><== ALWAYS TAKEN
             the_thread->current_priority > new_priority )            
          _Thread_Change_priority( the_thread, new_priority, false ); 
 8008c8c:	b9 60 10 00 	mv r2,r11                                      
 8008c90:	34 03 00 00 	mvi r3,0                                       
 8008c94:	f8 00 09 a8 	calli 800b334 <_Thread_Change_priority>        
      }                                                               
      _Thread_Enable_dispatch();                                      
 8008c98:	f8 00 0a f8 	calli 800b878 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 8008c9c:	34 04 00 00 	mvi r4,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8008ca0:	b8 80 08 00 	mv r1,r4                                       
 8008ca4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008ca8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8008cac:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8008cb0:	37 9c 00 10 	addi sp,sp,16                                  
 8008cb4:	c3 a0 00 00 	ret                                            
                                                                      

08003274 <rtems_task_start>: rtems_status_code rtems_task_start( rtems_id id, rtems_task_entry entry_point, rtems_task_argument argument ) {
 8003274:	37 9c ff ec 	addi sp,sp,-20                                 
 8003278:	5b 8b 00 10 	sw (sp+16),r11                                 
 800327c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003280:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003284:	5b 9d 00 04 	sw (sp+4),ra                                   
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( entry_point == NULL )                                          
    return RTEMS_INVALID_ADDRESS;                                     
 8003288:	34 04 00 09 	mvi r4,9                                       
rtems_status_code rtems_task_start(                                   
  rtems_id         	id,                                               
  rtems_task_entry 	entry_point,                                      
  rtems_task_argument	argument                                        
)                                                                     
{                                                                     
 800328c:	b8 40 58 00 	mv r11,r2                                      
 8003290:	b8 60 68 00 	mv r13,r3                                      
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( entry_point == NULL )                                          
 8003294:	44 40 00 06 	be r2,r0,80032ac <rtems_task_start+0x38>       <== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 8003298:	37 82 00 14 	addi r2,sp,20                                  
 800329c:	f8 00 0a 03 	calli 8005aa8 <_Thread_Get>                    
  switch ( location ) {                                               
 80032a0:	2b 8c 00 14 	lw r12,(sp+20)                                 
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 80032a4:	34 04 00 04 	mvi r4,4                                       
                                                                      
  if ( entry_point == NULL )                                          
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
 80032a8:	45 80 00 08 	be r12,r0,80032c8 <rtems_task_start+0x54>      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80032ac:	b8 80 08 00 	mv r1,r4                                       
 80032b0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80032b4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80032b8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80032bc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80032c0:	37 9c 00 14 	addi sp,sp,20                                  
 80032c4:	c3 a0 00 00 	ret                                            
                                                                      
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( _Thread_Start(                                             
 80032c8:	34 02 00 00 	mvi r2,0                                       
 80032cc:	b9 60 18 00 	mv r3,r11                                      
 80032d0:	34 04 00 00 	mvi r4,0                                       
 80032d4:	b9 a0 28 00 	mv r5,r13                                      
 80032d8:	f8 00 0c fb 	calli 80066c4 <_Thread_Start>                  
 80032dc:	5c 2c 00 0a 	bne r1,r12,8003304 <rtems_task_start+0x90>     
             the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
      _Thread_Enable_dispatch();                                      
 80032e0:	f8 00 09 e5 	calli 8005a74 <_Thread_Enable_dispatch>        
      return RTEMS_INCORRECT_STATE;                                   
 80032e4:	34 04 00 0e 	mvi r4,14                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80032e8:	b8 80 08 00 	mv r1,r4                                       
 80032ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80032f0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80032f4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80032f8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80032fc:	37 9c 00 14 	addi sp,sp,20                                  
 8003300:	c3 a0 00 00 	ret                                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( _Thread_Start(                                             
             the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
        _Thread_Enable_dispatch();                                    
 8003304:	f8 00 09 dc 	calli 8005a74 <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 8003308:	34 04 00 00 	mvi r4,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 800330c:	b8 80 08 00 	mv r1,r4                                       
 8003310:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003314:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003318:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800331c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003320:	37 9c 00 14 	addi sp,sp,20                                  
 8003324:	c3 a0 00 00 	ret                                            
                                                                      

08004144 <rtems_task_variable_add>: rtems_status_code rtems_task_variable_add( rtems_id tid, void **ptr, void (*dtor)(void *) ) {
 8004144:	37 9c ff ec 	addi sp,sp,-20                                 
 8004148:	5b 8b 00 10 	sw (sp+16),r11                                 
 800414c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8004150:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004154:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004158:	b8 40 58 00 	mv r11,r2                                      
 800415c:	b8 60 68 00 	mv r13,r3                                      
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *new;                                   
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
 8004160:	34 02 00 09 	mvi r2,9                                       
{                                                                     
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *new;                                   
                                                                      
  if ( !ptr )                                                         
 8004164:	45 60 00 07 	be r11,r0,8004180 <rtems_task_variable_add+0x3c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
 8004168:	37 82 00 14 	addi r2,sp,20                                  
 800416c:	f8 00 0a 03 	calli 8006978 <_Thread_Get>                    
 8004170:	b8 20 60 00 	mv r12,r1                                      
  switch (location) {                                                 
 8004174:	2b 81 00 14 	lw r1,(sp+20)                                  
#endif                                                                
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
 8004178:	34 02 00 04 	mvi r2,4                                       
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
  switch (location) {                                                 
 800417c:	44 20 00 08 	be r1,r0,800419c <rtems_task_variable_add+0x58>
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8004180:	b8 40 08 00 	mv r1,r2                                       
 8004184:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004188:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800418c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004190:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004194:	37 9c 00 14 	addi sp,sp,20                                  
 8004198:	c3 a0 00 00 	ret                                            
                                                                      
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is already in this task's list.  
       */                                                             
      tvp = the_thread->task_variables;                               
 800419c:	29 84 01 28 	lw r4,(r12+296)                                
      while (tvp) {                                                   
 80041a0:	44 81 00 08 	be r4,r1,80041c0 <rtems_task_variable_add+0x7c>
        if (tvp->ptr == ptr) {                                        
 80041a4:	28 81 00 04 	lw r1,(r4+4)                                   
 80041a8:	5c 2b 00 04 	bne r1,r11,80041b8 <rtems_task_variable_add+0x74>
 80041ac:	e0 00 00 18 	bi 800420c <rtems_task_variable_add+0xc8>      
 80041b0:	28 82 00 04 	lw r2,(r4+4)                                   
 80041b4:	44 4b 00 16 	be r2,r11,800420c <rtems_task_variable_add+0xc8><== NEVER TAKEN
          tvp->dtor = dtor;                                           
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
 80041b8:	28 84 00 00 	lw r4,(r4+0)                                   
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is already in this task's list.  
       */                                                             
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
 80041bc:	5c 80 ff fd 	bne r4,r0,80041b0 <rtems_task_variable_add+0x6c>
                                                                      
      /*                                                              
       *  Now allocate memory for this task variable.                 
       */                                                             
      new = (rtems_task_variable_t *)                                 
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
 80041c0:	34 01 00 14 	mvi r1,20                                      
 80041c4:	f8 00 0f 4b 	calli 8007ef0 <_Workspace_Allocate>            
      if (new == NULL) {                                              
 80041c8:	44 20 00 1b 	be r1,r0,8004234 <rtems_task_variable_add+0xf0>
      }                                                               
      new->gval = *ptr;                                               
      new->ptr = ptr;                                                 
      new->dtor = dtor;                                               
                                                                      
      new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
 80041cc:	29 82 01 28 	lw r2,(r12+296)                                
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
      if (new == NULL) {                                              
        _Thread_Enable_dispatch();                                    
        return RTEMS_NO_MEMORY;                                       
      }                                                               
      new->gval = *ptr;                                               
 80041d0:	29 63 00 00 	lw r3,(r11+0)                                  
      new->ptr = ptr;                                                 
 80041d4:	58 2b 00 04 	sw (r1+4),r11                                  
      new->dtor = dtor;                                               
 80041d8:	58 2d 00 10 	sw (r1+16),r13                                 
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
      if (new == NULL) {                                              
        _Thread_Enable_dispatch();                                    
        return RTEMS_NO_MEMORY;                                       
      }                                                               
      new->gval = *ptr;                                               
 80041dc:	58 23 00 08 	sw (r1+8),r3                                   
      new->ptr = ptr;                                                 
      new->dtor = dtor;                                               
                                                                      
      new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
 80041e0:	58 22 00 00 	sw (r1+0),r2                                   
      the_thread->task_variables = new;                               
 80041e4:	59 81 01 28 	sw (r12+296),r1                                
      _Thread_Enable_dispatch();                                      
 80041e8:	f8 00 09 d7 	calli 8006944 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 80041ec:	34 02 00 00 	mvi r2,0                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80041f0:	b8 40 08 00 	mv r1,r2                                       
 80041f4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80041f8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80041fc:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004200:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004204:	37 9c 00 14 	addi sp,sp,20                                  
 8004208:	c3 a0 00 00 	ret                                            
       *  Figure out if the variable is already in this task's list.  
       */                                                             
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          tvp->dtor = dtor;                                           
 800420c:	58 8d 00 10 	sw (r4+16),r13                                 
          _Thread_Enable_dispatch();                                  
 8004210:	f8 00 09 cd 	calli 8006944 <_Thread_Enable_dispatch>        
          return RTEMS_SUCCESSFUL;                                    
 8004214:	34 02 00 00 	mvi r2,0                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8004218:	b8 40 08 00 	mv r1,r2                                       
 800421c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004220:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004224:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004228:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800422c:	37 9c 00 14 	addi sp,sp,20                                  
 8004230:	c3 a0 00 00 	ret                                            
       *  Now allocate memory for this task variable.                 
       */                                                             
      new = (rtems_task_variable_t *)                                 
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
      if (new == NULL) {                                              
        _Thread_Enable_dispatch();                                    
 8004234:	f8 00 09 c4 	calli 8006944 <_Thread_Enable_dispatch>        
        return RTEMS_NO_MEMORY;                                       
 8004238:	34 02 00 1a 	mvi r2,26                                      
 800423c:	e3 ff ff d1 	bi 8004180 <rtems_task_variable_add+0x3c>      
                                                                      

08004240 <rtems_task_variable_delete>: rtems_status_code rtems_task_variable_delete( rtems_id tid, void **ptr ) {
 8004240:	37 9c ff f4 	addi sp,sp,-12                                 
 8004244:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004248:	5b 9d 00 04 	sw (sp+4),ra                                   
 800424c:	b8 40 58 00 	mv r11,r2                                      
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *prev;                                  
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
 8004250:	34 02 00 09 	mvi r2,9                                       
{                                                                     
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *prev;                                  
                                                                      
  if ( !ptr )                                                         
 8004254:	45 60 00 06 	be r11,r0,800426c <rtems_task_variable_delete+0x2c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  prev = NULL;                                                        
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
 8004258:	37 82 00 0c 	addi r2,sp,12                                  
 800425c:	f8 00 09 c7 	calli 8006978 <_Thread_Get>                    
  switch (location) {                                                 
 8004260:	2b 82 00 0c 	lw r2,(sp+12)                                  
 8004264:	44 40 00 07 	be r2,r0,8004280 <rtems_task_variable_delete+0x40>
                                                                      
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8004268:	34 02 00 04 	mvi r2,4                                       
}                                                                     
 800426c:	b8 40 08 00 	mv r1,r2                                       
 8004270:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004274:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004278:	37 9c 00 0c 	addi sp,sp,12                                  
 800427c:	c3 a0 00 00 	ret                                            
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
  switch (location) {                                                 
                                                                      
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
 8004280:	28 24 01 28 	lw r4,(r1+296)                                 
      while (tvp) {                                                   
 8004284:	44 82 00 09 	be r4,r2,80042a8 <rtems_task_variable_delete+0x68>
        if (tvp->ptr == ptr) {                                        
 8004288:	28 82 00 04 	lw r2,(r4+4)                                   
 800428c:	5c 4b 00 05 	bne r2,r11,80042a0 <rtems_task_variable_delete+0x60>
 8004290:	e0 00 00 18 	bi 80042f0 <rtems_task_variable_delete+0xb0>   
 8004294:	28 62 00 04 	lw r2,(r3+4)                                   
 8004298:	44 4b 00 0b 	be r2,r11,80042c4 <rtems_task_variable_delete+0x84>
 800429c:	b8 60 20 00 	mv r4,r3                                       
          _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );  
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        prev = tvp;                                                   
        tvp = (rtems_task_variable_t *)tvp->next;                     
 80042a0:	28 83 00 00 	lw r3,(r4+0)                                   
  the_thread = _Thread_Get (tid, &location);                          
  switch (location) {                                                 
                                                                      
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
 80042a4:	5c 60 ff fc 	bne r3,r0,8004294 <rtems_task_variable_delete+0x54><== ALWAYS TAKEN
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        prev = tvp;                                                   
        tvp = (rtems_task_variable_t *)tvp->next;                     
      }                                                               
      _Thread_Enable_dispatch();                                      
 80042a8:	f8 00 09 a7 	calli 8006944 <_Thread_Enable_dispatch>        
      return RTEMS_INVALID_ADDRESS;                                   
 80042ac:	34 02 00 09 	mvi r2,9                                       
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80042b0:	b8 40 08 00 	mv r1,r2                                       
 80042b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80042b8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80042bc:	37 9c 00 0c 	addi sp,sp,12                                  
 80042c0:	c3 a0 00 00 	ret                                            
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          if (prev)                                                   
            prev->next = tvp->next;                                   
 80042c4:	28 62 00 00 	lw r2,(r3+0)                                   
 80042c8:	58 82 00 00 	sw (r4+0),r2                                   
          else                                                        
            the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
                                                                      
          _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );  
 80042cc:	b8 60 10 00 	mv r2,r3                                       
 80042d0:	f8 00 00 39 	calli 80043b4 <_RTEMS_Tasks_Invoke_task_variable_dtor>
          _Thread_Enable_dispatch();                                  
 80042d4:	f8 00 09 9c 	calli 8006944 <_Thread_Enable_dispatch>        
          return RTEMS_SUCCESSFUL;                                    
 80042d8:	34 02 00 00 	mvi r2,0                                       
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80042dc:	b8 40 08 00 	mv r1,r2                                       
 80042e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80042e4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80042e8:	37 9c 00 0c 	addi sp,sp,12                                  
 80042ec:	c3 a0 00 00 	ret                                            
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          if (prev)                                                   
            prev->next = tvp->next;                                   
          else                                                        
            the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
 80042f0:	28 82 00 00 	lw r2,(r4+0)                                   
 80042f4:	b8 80 18 00 	mv r3,r4                                       
 80042f8:	58 22 01 28 	sw (r1+296),r2                                 
 80042fc:	e3 ff ff f4 	bi 80042cc <rtems_task_variable_delete+0x8c>   
                                                                      

08004300 <rtems_task_variable_get>: rtems_status_code rtems_task_variable_get( rtems_id tid, void **ptr, void **result ) {
 8004300:	37 9c ff f0 	addi sp,sp,-16                                 
 8004304:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8004308:	5b 8c 00 08 	sw (sp+8),r12                                  
 800430c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004310:	b8 40 58 00 	mv r11,r2                                      
 8004314:	b8 60 60 00 	mv r12,r3                                      
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp;                                         
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
 8004318:	34 02 00 09 	mvi r2,9                                       
{                                                                     
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp;                                         
                                                                      
  if ( !ptr )                                                         
 800431c:	45 60 00 07 	be r11,r0,8004338 <rtems_task_variable_get+0x38>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !result )                                                      
 8004320:	44 60 00 06 	be r3,r0,8004338 <rtems_task_variable_get+0x38>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
 8004324:	37 82 00 10 	addi r2,sp,16                                  
 8004328:	f8 00 09 94 	calli 8006978 <_Thread_Get>                    
  switch (location) {                                                 
 800432c:	2b 82 00 10 	lw r2,(sp+16)                                  
 8004330:	44 40 00 08 	be r2,r0,8004350 <rtems_task_variable_get+0x50>
#endif                                                                
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
 8004334:	34 02 00 04 	mvi r2,4                                       
}                                                                     
 8004338:	b8 40 08 00 	mv r1,r2                                       
 800433c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004340:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004344:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004348:	37 9c 00 10 	addi sp,sp,16                                  
 800434c:	c3 a0 00 00 	ret                                            
                                                                      
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is in this task's list.          
       */                                                             
      tvp = the_thread->task_variables;                               
 8004350:	28 21 01 28 	lw r1,(r1+296)                                 
      while (tvp) {                                                   
 8004354:	5c 22 00 04 	bne r1,r2,8004364 <rtems_task_variable_get+0x64>
 8004358:	e0 00 00 0f 	bi 8004394 <rtems_task_variable_get+0x94>      
	   */                                                                
          *result = tvp->tval;                                        
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
 800435c:	28 21 00 00 	lw r1,(r1+0)                                   
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is in this task's list.          
       */                                                             
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
 8004360:	44 20 00 0d 	be r1,r0,8004394 <rtems_task_variable_get+0x94><== NEVER TAKEN
        if (tvp->ptr == ptr) {                                        
 8004364:	28 22 00 04 	lw r2,(r1+4)                                   
 8004368:	5c 4b ff fd 	bne r2,r11,800435c <rtems_task_variable_get+0x5c>
	  /*                                                                 
	   * Should this return the current (i.e not the                     
	   * saved) value if `tid' is the current task?                      
	   */                                                                
          *result = tvp->tval;                                        
 800436c:	28 21 00 0c 	lw r1,(r1+12)                                  
 8004370:	59 81 00 00 	sw (r12+0),r1                                  
          _Thread_Enable_dispatch();                                  
 8004374:	f8 00 09 74 	calli 8006944 <_Thread_Enable_dispatch>        
          return RTEMS_SUCCESSFUL;                                    
 8004378:	34 02 00 00 	mvi r2,0                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 800437c:	b8 40 08 00 	mv r1,r2                                       
 8004380:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004384:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004388:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800438c:	37 9c 00 10 	addi sp,sp,16                                  
 8004390:	c3 a0 00 00 	ret                                            
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
      }                                                               
      _Thread_Enable_dispatch();                                      
 8004394:	f8 00 09 6c 	calli 8006944 <_Thread_Enable_dispatch>        
      return RTEMS_INVALID_ADDRESS;                                   
 8004398:	34 02 00 09 	mvi r2,9                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 800439c:	b8 40 08 00 	mv r1,r2                                       
 80043a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80043a4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80043a8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80043ac:	37 9c 00 10 	addi sp,sp,16                                  
 80043b0:	c3 a0 00 00 	ret                                            
                                                                      

08004b28 <rtems_termios_baud_to_index>: case B134: baud_index = 4; break; case B150: baud_index = 5; break; case B200: baud_index = 6; break; case B300: baud_index = 7; break; case B600: baud_index = 8; break; case B1200: baud_index = 9; break;
 8004b28:	34 02 00 09 	mvi r2,9                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004b2c:	44 22 00 0b 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30>
 8004b30:	48 22 00 0c 	bg r1,r2,8004b60 <rtems_termios_baud_to_index+0x38>
    case B0:        baud_index =  0;  break;                          
    case B50:       baud_index =  1;  break;                          
    case B75:       baud_index =  2;  break;                          
    case B110:      baud_index =  3;  break;                          
    case B134:      baud_index =  4;  break;                          
 8004b34:	34 02 00 04 	mvi r2,4                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004b38:	44 22 00 08 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30>
 8004b3c:	48 22 00 22 	bg r1,r2,8004bc4 <rtems_termios_baud_to_index+0x9c>
    case B0:        baud_index =  0;  break;                          
    case B50:       baud_index =  1;  break;                          
 8004b40:	34 02 00 01 	mvi r2,1                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004b44:	44 22 00 05 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30>
 8004b48:	48 22 00 2a 	bg r1,r2,8004bf0 <rtems_termios_baud_to_index+0xc8>
    case B0:        baud_index =  0;  break;                          
 8004b4c:	34 02 00 00 	mvi r2,0                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004b50:	44 20 00 02 	be r1,r0,8004b58 <rtems_termios_baud_to_index+0x30>
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
    case B460800:   baud_index = 19;  break;                          
    default:        baud_index = -1;  break;                          
 8004b54:	34 02 ff ff 	mvi r2,-1                                      
  }                                                                   
                                                                      
  return baud_index;                                                  
}                                                                     
 8004b58:	b8 40 08 00 	mv r1,r2                                       
 8004b5c:	c3 a0 00 00 	ret                                            
    case B1200:     baud_index =  9;  break;                          
    case B1800:     baud_index = 10;  break;                          
    case B2400:     baud_index = 11;  break;                          
    case B4800:     baud_index = 12;  break;                          
    case B9600:     baud_index = 13;  break;                          
    case B19200:    baud_index = 14;  break;                          
 8004b60:	34 02 00 0e 	mvi r2,14                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004b64:	44 22 ff fd 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30>
 8004b68:	48 22 00 0c 	bg r1,r2,8004b98 <rtems_termios_baud_to_index+0x70>
    case B200:      baud_index =  6;  break;                          
    case B300:      baud_index =  7;  break;                          
    case B600:      baud_index =  8;  break;                          
    case B1200:     baud_index =  9;  break;                          
    case B1800:     baud_index = 10;  break;                          
    case B2400:     baud_index = 11;  break;                          
 8004b6c:	34 02 00 0b 	mvi r2,11                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004b70:	44 22 ff fa 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30>
 8004b74:	34 03 00 0b 	mvi r3,11                                      
    case B150:      baud_index =  5;  break;                          
    case B200:      baud_index =  6;  break;                          
    case B300:      baud_index =  7;  break;                          
    case B600:      baud_index =  8;  break;                          
    case B1200:     baud_index =  9;  break;                          
    case B1800:     baud_index = 10;  break;                          
 8004b78:	34 02 00 0a 	mvi r2,10                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004b7c:	48 61 ff f7 	bg r3,r1,8004b58 <rtems_termios_baud_to_index+0x30>
    case B300:      baud_index =  7;  break;                          
    case B600:      baud_index =  8;  break;                          
    case B1200:     baud_index =  9;  break;                          
    case B1800:     baud_index = 10;  break;                          
    case B2400:     baud_index = 11;  break;                          
    case B4800:     baud_index = 12;  break;                          
 8004b80:	34 02 00 0c 	mvi r2,12                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004b84:	44 22 ff f5 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30>
    case B600:      baud_index =  8;  break;                          
    case B1200:     baud_index =  9;  break;                          
    case B1800:     baud_index = 10;  break;                          
    case B2400:     baud_index = 11;  break;                          
    case B4800:     baud_index = 12;  break;                          
    case B9600:     baud_index = 13;  break;                          
 8004b88:	34 02 00 0d 	mvi r2,13                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004b8c:	44 22 ff f3 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30><== ALWAYS TAKEN
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
    case B460800:   baud_index = 19;  break;                          
    default:        baud_index = -1;  break;                          
 8004b90:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8004b94:	e3 ff ff f1 	bi 8004b58 <rtems_termios_baud_to_index+0x30>  <== NOT EXECUTED
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004b98:	34 03 10 02 	mvi r3,4098                                    
    case B4800:     baud_index = 12;  break;                          
    case B9600:     baud_index = 13;  break;                          
    case B19200:    baud_index = 14;  break;                          
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
 8004b9c:	34 02 00 11 	mvi r2,17                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004ba0:	44 23 ff ee 	be r1,r3,8004b58 <rtems_termios_baud_to_index+0x30>
 8004ba4:	48 23 00 18 	bg r1,r3,8004c04 <rtems_termios_baud_to_index+0xdc>
    case B1800:     baud_index = 10;  break;                          
    case B2400:     baud_index = 11;  break;                          
    case B4800:     baud_index = 12;  break;                          
    case B9600:     baud_index = 13;  break;                          
    case B19200:    baud_index = 14;  break;                          
    case B38400:    baud_index = 15;  break;                          
 8004ba8:	34 02 00 0f 	mvi r2,15                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004bac:	44 22 ff eb 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30>
 8004bb0:	34 03 10 01 	mvi r3,4097                                    
    case B2400:     baud_index = 11;  break;                          
    case B4800:     baud_index = 12;  break;                          
    case B9600:     baud_index = 13;  break;                          
    case B19200:    baud_index = 14;  break;                          
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
 8004bb4:	34 02 00 10 	mvi r2,16                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004bb8:	44 23 ff e8 	be r1,r3,8004b58 <rtems_termios_baud_to_index+0x30><== ALWAYS TAKEN
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
    case B460800:   baud_index = 19;  break;                          
    default:        baud_index = -1;  break;                          
 8004bbc:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8004bc0:	e3 ff ff e6 	bi 8004b58 <rtems_termios_baud_to_index+0x30>  <== NOT EXECUTED
    case B50:       baud_index =  1;  break;                          
    case B75:       baud_index =  2;  break;                          
    case B110:      baud_index =  3;  break;                          
    case B134:      baud_index =  4;  break;                          
    case B150:      baud_index =  5;  break;                          
    case B200:      baud_index =  6;  break;                          
 8004bc4:	34 02 00 06 	mvi r2,6                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004bc8:	44 22 ff e4 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30>
 8004bcc:	34 03 00 06 	mvi r3,6                                       
    case B0:        baud_index =  0;  break;                          
    case B50:       baud_index =  1;  break;                          
    case B75:       baud_index =  2;  break;                          
    case B110:      baud_index =  3;  break;                          
    case B134:      baud_index =  4;  break;                          
    case B150:      baud_index =  5;  break;                          
 8004bd0:	34 02 00 05 	mvi r2,5                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004bd4:	48 61 ff e1 	bg r3,r1,8004b58 <rtems_termios_baud_to_index+0x30>
    case B75:       baud_index =  2;  break;                          
    case B110:      baud_index =  3;  break;                          
    case B134:      baud_index =  4;  break;                          
    case B150:      baud_index =  5;  break;                          
    case B200:      baud_index =  6;  break;                          
    case B300:      baud_index =  7;  break;                          
 8004bd8:	34 02 00 07 	mvi r2,7                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004bdc:	44 22 ff df 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30>
    case B110:      baud_index =  3;  break;                          
    case B134:      baud_index =  4;  break;                          
    case B150:      baud_index =  5;  break;                          
    case B200:      baud_index =  6;  break;                          
    case B300:      baud_index =  7;  break;                          
    case B600:      baud_index =  8;  break;                          
 8004be0:	34 02 00 08 	mvi r2,8                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004be4:	44 22 ff dd 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30><== ALWAYS TAKEN
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
    case B460800:   baud_index = 19;  break;                          
    default:        baud_index = -1;  break;                          
 8004be8:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8004bec:	e3 ff ff db 	bi 8004b58 <rtems_termios_baud_to_index+0x30>  <== NOT EXECUTED
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
    case B0:        baud_index =  0;  break;                          
    case B50:       baud_index =  1;  break;                          
    case B75:       baud_index =  2;  break;                          
 8004bf0:	34 02 00 02 	mvi r2,2                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004bf4:	44 22 ff d9 	be r1,r2,8004b58 <rtems_termios_baud_to_index+0x30>
    case B0:        baud_index =  0;  break;                          
    case B50:       baud_index =  1;  break;                          
    case B75:       baud_index =  2;  break;                          
    case B110:      baud_index =  3;  break;                          
 8004bf8:	34 02 00 03 	mvi r2,3                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004bfc:	5c 22 ff d6 	bne r1,r2,8004b54 <rtems_termios_baud_to_index+0x2c><== NEVER TAKEN
 8004c00:	e3 ff ff d6 	bi 8004b58 <rtems_termios_baud_to_index+0x30>  
 8004c04:	34 03 10 03 	mvi r3,4099                                    
    case B9600:     baud_index = 13;  break;                          
    case B19200:    baud_index = 14;  break;                          
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
 8004c08:	34 02 00 12 	mvi r2,18                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c0c:	44 23 ff d3 	be r1,r3,8004b58 <rtems_termios_baud_to_index+0x30>
 8004c10:	34 03 10 04 	mvi r3,4100                                    
    case B19200:    baud_index = 14;  break;                          
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
    case B460800:   baud_index = 19;  break;                          
 8004c14:	34 02 00 13 	mvi r2,19                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c18:	5c 23 ff cf 	bne r1,r3,8004b54 <rtems_termios_baud_to_index+0x2c><== NEVER TAKEN
 8004c1c:	e3 ff ff cf 	bi 8004b58 <rtems_termios_baud_to_index+0x30>  
                                                                      

08003ab8 <rtems_termios_close>: } } rtems_status_code rtems_termios_close (void *arg) {
 8003ab8:	37 9c ff ec 	addi sp,sp,-20                                 
 8003abc:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003ac0:	5b 8c 00 10 	sw (sp+16),r12                                 
 8003ac4:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003ac8:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003acc:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain(                                        
 8003ad0:	78 0c 08 02 	mvhi r12,0x802                                 
 8003ad4:	39 8c 6d a8 	ori r12,r12,0x6da8                             
                                                                      
rtems_status_code                                                     
rtems_termios_close (void *arg)                                       
{                                                                     
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8003ad8:	28 24 00 00 	lw r4,(r1+0)                                   
  }                                                                   
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_termios_close (void *arg)                                       
{                                                                     
 8003adc:	b8 20 70 00 	mv r14,r1                                      
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain(                                        
 8003ae0:	29 81 00 00 	lw r1,(r12+0)                                  
 8003ae4:	34 02 00 00 	mvi r2,0                                       
 8003ae8:	34 03 00 00 	mvi r3,0                                       
                                                                      
rtems_status_code                                                     
rtems_termios_close (void *arg)                                       
{                                                                     
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8003aec:	28 8b 00 38 	lw r11,(r4+56)                                 
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain(                                        
 8003af0:	f8 00 09 9b 	calli 800615c <rtems_semaphore_obtain>         
    rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);            
  if (sc != RTEMS_SUCCESSFUL)                                         
 8003af4:	5c 20 00 65 	bne r1,r0,8003c88 <rtems_termios_close+0x1d0>  <== NEVER TAKEN
    rtems_fatal_error_occurred (sc);                                  
  if (--tty->refcount == 0) {                                         
 8003af8:	29 64 00 08 	lw r4,(r11+8)                                  
 8003afc:	34 84 ff ff 	addi r4,r4,-1                                  
 8003b00:	59 64 00 08 	sw (r11+8),r4                                  
 8003b04:	5c 81 00 31 	bne r4,r1,8003bc8 <rtems_termios_close+0x110>  <== NEVER TAKEN
    if (rtems_termios_linesw[tty->t_line].l_close != NULL) {          
 8003b08:	29 62 00 cc 	lw r2,(r11+204)                                
 8003b0c:	78 05 08 02 	mvhi r5,0x802                                  
 8003b10:	38 a5 67 a4 	ori r5,r5,0x67a4                               
 8003b14:	b4 42 10 00 	add r2,r2,r2                                   
 8003b18:	b4 42 10 00 	add r2,r2,r2                                   
 8003b1c:	b4 42 10 00 	add r2,r2,r2                                   
 8003b20:	b4 42 10 00 	add r2,r2,r2                                   
 8003b24:	b4 42 10 00 	add r2,r2,r2                                   
 8003b28:	b4 a2 10 00 	add r2,r5,r2                                   
 8003b2c:	28 4d 00 04 	lw r13,(r2+4)                                  
 8003b30:	45 a4 00 41 	be r13,r4,8003c34 <rtems_termios_close+0x17c>  
      /*                                                              
       * call discipline-specific close                               
       */                                                             
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
 8003b34:	b9 60 08 00 	mv r1,r11                                      
 8003b38:	d9 a0 00 00 	call r13                                       
      }                                                               
      drainOutput (tty);                                              
      rtems_semaphore_release (tty->osem);                            
    }                                                                 
                                                                      
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
 8003b3c:	29 62 00 b4 	lw r2,(r11+180)                                
 8003b40:	34 01 00 02 	mvi r1,2                                       
 8003b44:	44 41 00 48 	be r2,r1,8003c64 <rtems_termios_close+0x1ac>   <== NEVER TAKEN
        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)                                        
 8003b48:	29 64 00 9c 	lw r4,(r11+156)                                
 8003b4c:	44 80 00 05 	be r4,r0,8003b60 <rtems_termios_close+0xa8>    <== ALWAYS TAKEN
       (*tty->device.lastClose)(tty->major, tty->minor, arg);         
 8003b50:	29 61 00 0c 	lw r1,(r11+12)                                 <== NOT EXECUTED
 8003b54:	29 62 00 10 	lw r2,(r11+16)                                 <== NOT EXECUTED
 8003b58:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 8003b5c:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
    if (tty->forw == NULL) {                                          
 8003b60:	29 61 00 00 	lw r1,(r11+0)                                  
 8003b64:	44 20 00 2c 	be r1,r0,8003c14 <rtems_termios_close+0x15c>   <== ALWAYS TAKEN
      rtems_termios_ttyTail = tty->back;                              
      if ( rtems_termios_ttyTail != NULL ) {                          
        rtems_termios_ttyTail->forw = NULL;                           
      }                                                               
    } else {                                                          
      tty->forw->back = tty->back;                                    
 8003b68:	29 62 00 04 	lw r2,(r11+4)                                  <== NOT EXECUTED
 8003b6c:	58 22 00 04 	sw (r1+4),r2                                   <== NOT EXECUTED
 8003b70:	29 62 00 04 	lw r2,(r11+4)                                  <== NOT EXECUTED
    }                                                                 
                                                                      
    if (tty->back == NULL) {                                          
 8003b74:	44 40 00 22 	be r2,r0,8003bfc <rtems_termios_close+0x144>   <== NOT EXECUTED
      rtems_termios_ttyHead = tty->forw;                              
      if ( rtems_termios_ttyHead != NULL ) {                          
        rtems_termios_ttyHead->back = NULL;                           
      }                                                               
    } else {                                                          
      tty->back->forw = tty->forw;                                    
 8003b78:	58 41 00 00 	sw (r2+0),r1                                   <== NOT EXECUTED
    }                                                                 
                                                                      
    rtems_semaphore_delete (tty->isem);                               
 8003b7c:	29 61 00 14 	lw r1,(r11+20)                                 
 8003b80:	f8 00 09 40 	calli 8006080 <rtems_semaphore_delete>         
    rtems_semaphore_delete (tty->osem);                               
 8003b84:	29 61 00 18 	lw r1,(r11+24)                                 
 8003b88:	f8 00 09 3e 	calli 8006080 <rtems_semaphore_delete>         
    rtems_semaphore_delete (tty->rawOutBuf.Semaphore);                
 8003b8c:	29 61 00 8c 	lw r1,(r11+140)                                
 8003b90:	f8 00 09 3c 	calli 8006080 <rtems_semaphore_delete>         
    if ((tty->device.pollRead == NULL) ||                             
 8003b94:	29 61 00 a0 	lw r1,(r11+160)                                
 8003b98:	44 20 00 16 	be r1,r0,8003bf0 <rtems_termios_close+0x138>   
 8003b9c:	29 62 00 b4 	lw r2,(r11+180)                                
 8003ba0:	34 01 00 02 	mvi r1,2                                       
 8003ba4:	44 41 00 13 	be r2,r1,8003bf0 <rtems_termios_close+0x138>   
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN))    
      rtems_semaphore_delete (tty->rawInBuf.Semaphore);               
    free (tty->rawInBuf.theBuf);                                      
 8003ba8:	29 61 00 58 	lw r1,(r11+88)                                 
 8003bac:	fb ff f9 10 	calli 8001fec <free>                           
    free (tty->rawOutBuf.theBuf);                                     
 8003bb0:	29 61 00 7c 	lw r1,(r11+124)                                
 8003bb4:	fb ff f9 0e 	calli 8001fec <free>                           
    free (tty->cbuf);                                                 
 8003bb8:	29 61 00 1c 	lw r1,(r11+28)                                 
 8003bbc:	fb ff f9 0c 	calli 8001fec <free>                           
    free (tty);                                                       
 8003bc0:	b9 60 08 00 	mv r1,r11                                      
 8003bc4:	fb ff f9 0a 	calli 8001fec <free>                           
  }                                                                   
  rtems_semaphore_release (rtems_termios_ttyMutex);                   
 8003bc8:	29 81 00 00 	lw r1,(r12+0)                                  
 8003bcc:	f8 00 09 c0 	calli 80062cc <rtems_semaphore_release>        
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8003bd0:	34 01 00 00 	mvi r1,0                                       
 8003bd4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003bd8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8003bdc:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8003be0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8003be4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8003be8:	37 9c 00 14 	addi sp,sp,20                                  
 8003bec:	c3 a0 00 00 	ret                                            
    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);               
 8003bf0:	29 61 00 68 	lw r1,(r11+104)                                
 8003bf4:	f8 00 09 23 	calli 8006080 <rtems_semaphore_delete>         
 8003bf8:	e3 ff ff ec 	bi 8003ba8 <rtems_termios_close+0xf0>          
    } else {                                                          
      tty->forw->back = tty->back;                                    
    }                                                                 
                                                                      
    if (tty->back == NULL) {                                          
      rtems_termios_ttyHead = tty->forw;                              
 8003bfc:	78 02 08 02 	mvhi r2,0x802                                  
 8003c00:	38 42 6d b0 	ori r2,r2,0x6db0                               
 8003c04:	58 41 00 00 	sw (r2+0),r1                                   
      if ( rtems_termios_ttyHead != NULL ) {                          
 8003c08:	44 20 ff dd 	be r1,r0,8003b7c <rtems_termios_close+0xc4>    <== ALWAYS TAKEN
        rtems_termios_ttyHead->back = NULL;                           
 8003c0c:	58 20 00 04 	sw (r1+4),r0                                   <== NOT EXECUTED
 8003c10:	e3 ff ff db 	bi 8003b7c <rtems_termios_close+0xc4>          <== NOT EXECUTED
        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;                              
 8003c14:	29 62 00 04 	lw r2,(r11+4)                                  
 8003c18:	78 03 08 02 	mvhi r3,0x802                                  
 8003c1c:	38 63 6d ac 	ori r3,r3,0x6dac                               
 8003c20:	58 62 00 00 	sw (r3+0),r2                                   
      if ( rtems_termios_ttyTail != NULL ) {                          
 8003c24:	44 41 ff f6 	be r2,r1,8003bfc <rtems_termios_close+0x144>   <== ALWAYS TAKEN
        rtems_termios_ttyTail->forw = NULL;                           
 8003c28:	58 40 00 00 	sw (r2+0),r0                                   <== NOT EXECUTED
 8003c2c:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8003c30:	e3 ff ff d2 	bi 8003b78 <rtems_termios_close+0xc0>          <== 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);
 8003c34:	29 61 00 18 	lw r1,(r11+24)                                 
 8003c38:	34 02 00 00 	mvi r2,0                                       
 8003c3c:	34 03 00 00 	mvi r3,0                                       
 8003c40:	f8 00 09 47 	calli 800615c <rtems_semaphore_obtain>         
      if (sc != RTEMS_SUCCESSFUL) {                                   
 8003c44:	5d a1 00 11 	bne r13,r1,8003c88 <rtems_termios_close+0x1d0> <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
      }                                                               
      drainOutput (tty);                                              
 8003c48:	b9 60 08 00 	mv r1,r11                                      
 8003c4c:	fb ff fe 4e 	calli 8003584 <drainOutput>                    
      rtems_semaphore_release (tty->osem);                            
 8003c50:	29 61 00 18 	lw r1,(r11+24)                                 
 8003c54:	f8 00 09 9e 	calli 80062cc <rtems_semaphore_release>        
    }                                                                 
                                                                      
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
 8003c58:	29 62 00 b4 	lw r2,(r11+180)                                
 8003c5c:	34 01 00 02 	mvi r1,2                                       
 8003c60:	5c 41 ff ba 	bne r2,r1,8003b48 <rtems_termios_close+0x90>   
      /*                                                              
       * send "terminate" to I/O tasks                                
       */                                                             
      sc = rtems_event_send( tty->rxTaskId, TERMIOS_RX_TERMINATE_EVENT );
 8003c64:	29 61 00 c4 	lw r1,(r11+196)                                
 8003c68:	34 02 00 01 	mvi r2,1                                       
 8003c6c:	f8 00 07 d1 	calli 8005bb0 <rtems_event_send>               
 8003c70:	b8 20 68 00 	mv r13,r1                                      
      if (sc != RTEMS_SUCCESSFUL)                                     
 8003c74:	5c 20 00 05 	bne r1,r0,8003c88 <rtems_termios_close+0x1d0>  <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_event_send( tty->txTaskId, TERMIOS_TX_TERMINATE_EVENT );
 8003c78:	29 61 00 c8 	lw r1,(r11+200)                                
 8003c7c:	34 02 00 01 	mvi r2,1                                       
 8003c80:	f8 00 07 cc 	calli 8005bb0 <rtems_event_send>               
      if (sc != RTEMS_SUCCESSFUL)                                     
 8003c84:	44 2d ff b1 	be r1,r13,8003b48 <rtems_termios_close+0x90>   <== ALWAYS TAKEN
        rtems_fatal_error_occurred (sc);                              
 8003c88:	f8 00 0b 96 	calli 8006ae0 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

080054f0 <rtems_termios_dequeue_characters>: * for each transmitted character. * It returns number of characters left to transmit */ int rtems_termios_dequeue_characters (void *ttyp, int len) {
 80054f0:	37 9c ff f8 	addi sp,sp,-8                                  
 80054f4:	5b 8b 00 08 	sw (sp+8),r11                                  
 80054f8:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc;                                               
                                                                      
  /*                                                                  
   * sum up character count already sent                              
   */                                                                 
  tty->t_dqlen += len;                                                
 80054fc:	28 25 00 90 	lw r5,(r1+144)                                 
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
 8005500:	28 24 00 b4 	lw r4,(r1+180)                                 
  rtems_status_code sc;                                               
                                                                      
  /*                                                                  
   * sum up character count already sent                              
   */                                                                 
  tty->t_dqlen += len;                                                
 8005504:	b4 a2 10 00 	add r2,r5,r2                                   
 8005508:	58 22 00 90 	sw (r1+144),r2                                 
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
 800550c:	34 02 00 02 	mvi r2,2                                       
 8005510:	44 82 00 16 	be r4,r2,8005568 <rtems_termios_dequeue_characters+0x78>
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    return 0; /* nothing to output in IRQ... */                       
  }                                                                   
                                                                      
  if (tty->t_line == PPPDISC ) {                                      
 8005514:	28 23 00 cc 	lw r3,(r1+204)                                 
 8005518:	34 02 00 05 	mvi r2,5                                       
 800551c:	44 62 00 08 	be r3,r2,800553c <rtems_termios_dequeue_characters+0x4c>
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
    }                                                                 
    return 0; /* nothing to output in IRQ... */                       
  }                                                                   
                                                                      
  return rtems_termios_refill_transmitter(tty);                       
 8005520:	fb ff ff 39 	calli 8005204 <rtems_termios_refill_transmitter>
 8005524:	b8 20 58 00 	mv r11,r1                                      
}                                                                     
 8005528:	b9 60 08 00 	mv r1,r11                                      
 800552c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005530:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8005534:	37 9c 00 08 	addi sp,sp,8                                   
 8005538:	c3 a0 00 00 	ret                                            
                                                                      
  if (tty->t_line == PPPDISC ) {                                      
    /*                                                                
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
 800553c:	78 02 08 02 	mvhi r2,0x802                                  
 8005540:	38 42 67 a4 	ori r2,r2,0x67a4                               
 8005544:	28 42 00 b4 	lw r2,(r2+180)                                 
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
    }                                                                 
    return 0; /* nothing to output in IRQ... */                       
 8005548:	34 0b 00 00 	mvi r11,0                                      
                                                                      
  if (tty->t_line == PPPDISC ) {                                      
    /*                                                                
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
 800554c:	44 40 ff f7 	be r2,r0,8005528 <rtems_termios_dequeue_characters+0x38><== NEVER TAKEN
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
 8005550:	d8 40 00 00 	call r2                                        
    }                                                                 
    return 0; /* nothing to output in IRQ... */                       
  }                                                                   
                                                                      
  return rtems_termios_refill_transmitter(tty);                       
}                                                                     
 8005554:	b9 60 08 00 	mv r1,r11                                      
 8005558:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800555c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8005560:	37 9c 00 08 	addi sp,sp,8                                   
 8005564:	c3 a0 00 00 	ret                                            
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
    /*                                                                
     * send wake up to transmitter task                               
     */                                                               
    sc = rtems_event_send(tty->txTaskId, TERMIOS_TX_START_EVENT);     
 8005568:	28 21 00 c8 	lw r1,(r1+200)                                 
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    return 0; /* nothing to output in IRQ... */                       
 800556c:	34 0b 00 00 	mvi r11,0                                      
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
    /*                                                                
     * send wake up to transmitter task                               
     */                                                               
    sc = rtems_event_send(tty->txTaskId, TERMIOS_TX_START_EVENT);     
 8005570:	f8 00 01 90 	calli 8005bb0 <rtems_event_send>               
    if (sc != RTEMS_SUCCESSFUL)                                       
 8005574:	44 20 ff ed 	be r1,r0,8005528 <rtems_termios_dequeue_characters+0x38><== ALWAYS TAKEN
      rtems_fatal_error_occurred (sc);                                
 8005578:	f8 00 05 5a 	calli 8006ae0 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08004e14 <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, char *buf, int len) {
 8004e14:	37 9c ff bc 	addi sp,sp,-68                                 
 8004e18:	5b 8b 00 44 	sw (sp+68),r11                                 
 8004e1c:	5b 8c 00 40 	sw (sp+64),r12                                 
 8004e20:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8004e24:	5b 8e 00 38 	sw (sp+56),r14                                 
 8004e28:	5b 8f 00 34 	sw (sp+52),r15                                 
 8004e2c:	5b 90 00 30 	sw (sp+48),r16                                 
 8004e30:	5b 91 00 2c 	sw (sp+44),r17                                 
 8004e34:	5b 92 00 28 	sw (sp+40),r18                                 
 8004e38:	5b 93 00 24 	sw (sp+36),r19                                 
 8004e3c:	5b 94 00 20 	sw (sp+32),r20                                 
 8004e40:	5b 95 00 1c 	sw (sp+28),r21                                 
 8004e44:	5b 96 00 18 	sw (sp+24),r22                                 
 8004e48:	5b 97 00 14 	sw (sp+20),r23                                 
 8004e4c:	5b 98 00 10 	sw (sp+16),r24                                 
 8004e50:	5b 99 00 0c 	sw (sp+12),r25                                 
 8004e54:	5b 9b 00 08 	sw (sp+8),fp                                   
 8004e58:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004e5c:	b8 20 58 00 	mv r11,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) {             
 8004e60:	28 21 00 cc 	lw r1,(r1+204)                                 
 8004e64:	78 0e 08 02 	mvhi r14,0x802                                 
 8004e68:	39 ce 67 a4 	ori r14,r14,0x67a4                             
 8004e6c:	b4 21 08 00 	add r1,r1,r1                                   
 8004e70:	b4 21 08 00 	add r1,r1,r1                                   
 8004e74:	b4 21 08 00 	add r1,r1,r1                                   
 8004e78:	b4 21 08 00 	add r1,r1,r1                                   
 8004e7c:	b4 21 08 00 	add r1,r1,r1                                   
 8004e80:	b5 c1 08 00 	add r1,r14,r1                                  
 8004e84:	28 24 00 10 	lw r4,(r1+16)                                  
 *       device receive interrupt handler.                            
 * Returns the number of characters dropped because of overflow.      
 */                                                                   
int                                                                   
rtems_termios_enqueue_raw_characters (void *ttyp, char *buf, int len) 
{                                                                     
 8004e88:	b8 40 68 00 	mv r13,r2                                      
 8004e8c:	b8 60 78 00 	mv r15,r3                                      
  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) {             
 8004e90:	44 80 00 30 	be r4,r0,8004f50 <rtems_termios_enqueue_raw_characters+0x13c>
    while (len--) {                                                   
 8004e94:	44 60 00 11 	be r3,r0,8004ed8 <rtems_termios_enqueue_raw_characters+0xc4><== NEVER TAKEN
 8004e98:	34 0c 00 00 	mvi r12,0                                      
 8004e9c:	e0 00 00 09 	bi 8004ec0 <rtems_termios_enqueue_raw_characters+0xac>
 8004ea0:	29 64 00 cc 	lw r4,(r11+204)                                
 8004ea4:	b4 84 20 00 	add r4,r4,r4                                   
 8004ea8:	b4 84 20 00 	add r4,r4,r4                                   
 8004eac:	b4 84 20 00 	add r4,r4,r4                                   
 8004eb0:	b4 84 20 00 	add r4,r4,r4                                   
 8004eb4:	b4 84 20 00 	add r4,r4,r4                                   
 8004eb8:	b5 c4 20 00 	add r4,r14,r4                                  
 8004ebc:	28 84 00 10 	lw r4,(r4+16)                                  
 * NOTE: This routine runs in the context of the                      
 *       device receive interrupt handler.                            
 * Returns the number of characters dropped because of overflow.      
 */                                                                   
int                                                                   
rtems_termios_enqueue_raw_characters (void *ttyp, char *buf, int len) 
 8004ec0:	b5 ac 08 00 	add r1,r13,r12                                 
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
    while (len--) {                                                   
      c = *buf++;                                                     
      rtems_termios_linesw[tty->t_line].l_rint(c,tty);                
 8004ec4:	40 21 00 00 	lbu r1,(r1+0)                                  
 8004ec8:	35 8c 00 01 	addi r12,r12,1                                 
 8004ecc:	b9 60 10 00 	mv r2,r11                                      
 8004ed0:	d8 80 00 00 	call r4                                        
  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--) {                                                   
 8004ed4:	5d 8f ff f3 	bne r12,r15,8004ea0 <rtems_termios_enqueue_raw_characters+0x8c>
    }                                                                 
                                                                      
    /*                                                                
     * check to see if rcv wakeup callback was set                    
     */                                                               
    if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) { 
 8004ed8:	29 61 00 e4 	lw r1,(r11+228)                                
      (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);     
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
 8004edc:	34 10 00 00 	mvi r16,0                                      
    }                                                                 
                                                                      
    /*                                                                
     * check to see if rcv wakeup callback was set                    
     */                                                               
    if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) { 
 8004ee0:	5c 20 00 08 	bne r1,r0,8004f00 <rtems_termios_enqueue_raw_characters+0xec><== NEVER TAKEN
 8004ee4:	29 63 00 dc 	lw r3,(r11+220)                                
 8004ee8:	44 70 00 06 	be r3,r16,8004f00 <rtems_termios_enqueue_raw_characters+0xec>
      (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);     
 8004eec:	29 62 00 e0 	lw r2,(r11+224)                                
 8004ef0:	35 61 00 30 	addi r1,r11,48                                 
 8004ef4:	d8 60 00 00 	call r3                                        
      tty->tty_rcvwakeup = 1;                                         
 8004ef8:	34 01 00 01 	mvi r1,1                                       
 8004efc:	59 61 00 e4 	sw (r11+228),r1                                
  }                                                                   
                                                                      
  tty->rawInBufDropped += dropped;                                    
  rtems_semaphore_release (tty->rawInBuf.Semaphore);                  
  return dropped;                                                     
}                                                                     
 8004f00:	ba 00 08 00 	mv r1,r16                                      
 8004f04:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004f08:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8004f0c:	2b 8c 00 40 	lw r12,(sp+64)                                 
 8004f10:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8004f14:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8004f18:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8004f1c:	2b 90 00 30 	lw r16,(sp+48)                                 
 8004f20:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8004f24:	2b 92 00 28 	lw r18,(sp+40)                                 
 8004f28:	2b 93 00 24 	lw r19,(sp+36)                                 
 8004f2c:	2b 94 00 20 	lw r20,(sp+32)                                 
 8004f30:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8004f34:	2b 96 00 18 	lw r22,(sp+24)                                 
 8004f38:	2b 97 00 14 	lw r23,(sp+20)                                 
 8004f3c:	2b 98 00 10 	lw r24,(sp+16)                                 
 8004f40:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8004f44:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8004f48:	37 9c 00 44 	addi sp,sp,68                                  
 8004f4c:	c3 a0 00 00 	ret                                            
  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) {             
 8004f50:	34 12 00 00 	mvi r18,0                                      
 8004f54:	34 10 00 00 	mvi r16,0                                      
        flow_rcv = true;                                              
      }                                                               
    }                                                                 
    if (flow_rcv) {                                                   
      /* restart output according to FL_ORCVXOF flag */               
      if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {   
 8004f58:	34 14 00 20 	mvi r20,32                                     
        /* disable interrupts    */                                   
        rtems_interrupt_disable(level);                               
 8004f5c:	34 13 ff fe 	mvi r19,-2                                     
        tty->flow_ctrl &= ~FL_OSTOP;                                  
 8004f60:	34 15 ff df 	mvi r21,-33                                    
                                                                      
        /*                                                            
         * 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); 
 8004f64:	35 77 00 30 	addi r23,r11,48                                
      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))                
 8004f68:	34 16 04 00 	mvi r22,1024                                   
            /*    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) ) {
 8004f6c:	34 19 01 00 	mvi r25,256                                    
          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,                          
 8004f70:	35 7b 00 4a 	addi fp,r11,74                                 
        flow_rcv = true;                                              
      }                                                               
      else if (c == tty->termios.c_cc[VSTART]) {                      
        /* VSTART received */                                         
        /* restart output  */                                         
        tty->flow_ctrl &= ~FL_ORCVXOF;                                
 8004f74:	34 18 ff ef 	mvi r24,-17                                    
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
  }                                                                   
                                                                      
  while (len--) {                                                     
 8004f78:	45 e0 00 39 	be r15,r0,800505c <rtems_termios_enqueue_raw_characters+0x248><== NEVER TAKEN
    c = *buf++;                                                       
    /* FIXME: implement IXANY: any character restarts output */       
    /* if incoming XON/XOFF controls outgoing stream: */              
    if (tty->flow_ctrl & FL_MDXON) {                                  
 8004f7c:	29 63 00 b8 	lw r3,(r11+184)                                
        }                                                             
    return 0;                                                         
  }                                                                   
                                                                      
  while (len--) {                                                     
    c = *buf++;                                                       
 8004f80:	41 ae 00 00 	lbu r14,(r13+0)                                
 8004f84:	35 ad 00 01 	addi r13,r13,1                                 
    /* FIXME: implement IXANY: any character restarts output */       
    /* if incoming XON/XOFF controls outgoing stream: */              
    if (tty->flow_ctrl & FL_MDXON) {                                  
 8004f88:	20 63 02 00 	andi r3,r3,0x200                               
 8004f8c:	44 60 00 05 	be r3,r0,8004fa0 <rtems_termios_enqueue_raw_characters+0x18c>
      /* if received char is V_STOP and V_START (both are equal value) */
      if (c == tty->termios.c_cc[VSTOP]) {                            
 8004f90:	41 63 00 4a 	lbu r3,(r11+74)                                
 8004f94:	44 6e 00 53 	be r3,r14,80050e0 <rtems_termios_enqueue_raw_characters+0x2cc>
          /* stop output                             */               
          tty->flow_ctrl |= FL_ORCVXOF;                               
        }                                                             
        flow_rcv = true;                                              
      }                                                               
      else if (c == tty->termios.c_cc[VSTART]) {                      
 8004f98:	41 63 00 49 	lbu r3,(r11+73)                                
 8004f9c:	44 6e 00 36 	be r3,r14,8005074 <rtems_termios_enqueue_raw_characters+0x260><== NEVER TAKEN
        /* restart output  */                                         
        tty->flow_ctrl &= ~FL_ORCVXOF;                                
        flow_rcv = true;                                              
      }                                                               
    }                                                                 
    if (flow_rcv) {                                                   
 8004fa0:	5e 40 00 39 	bne r18,r0,8005084 <rtems_termios_enqueue_raw_characters+0x270><== NEVER TAKEN
        }                                                             
        /* reenable interrupts */                                     
        rtems_interrupt_enable(level);                                
      }                                                               
    } else {                                                          
      newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;        
 8004fa4:	29 63 00 60 	lw r3,(r11+96)                                 
 8004fa8:	29 62 00 64 	lw r2,(r11+100)                                
 8004fac:	34 61 00 01 	addi r1,r3,1                                   
 8004fb0:	f8 00 77 f3 	calli 8022f7c <__umodsi3>                      
 8004fb4:	b8 20 60 00 	mv r12,r1                                      
      /* if chars_in_buffer > highwater                */             
      rtems_interrupt_disable(level);                                 
 8004fb8:	90 00 88 00 	rcsr r17,IE                                    
 8004fbc:	a2 33 18 00 	and r3,r17,r19                                 
 8004fc0:	d0 03 00 00 	wcsr IE,r3                                     
      if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)       
 8004fc4:	29 63 00 5c 	lw r3,(r11+92)                                 
 8004fc8:	29 64 00 64 	lw r4,(r11+100)                                
            % tty->rawInBuf.Size) > tty->highwater) &&                
 8004fcc:	29 62 00 64 	lw r2,(r11+100)                                
      }                                                               
    } 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)       
 8004fd0:	c8 83 18 00 	sub r3,r4,r3                                   
            % tty->rawInBuf.Size) > tty->highwater) &&                
 8004fd4:	b4 61 08 00 	add r1,r3,r1                                   
 8004fd8:	f8 00 77 e9 	calli 8022f7c <__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)       
 8004fdc:	29 63 00 c0 	lw r3,(r11+192)                                
 8004fe0:	50 61 00 0d 	bgeu r3,r1,8005014 <rtems_termios_enqueue_raw_characters+0x200><== ALWAYS TAKEN
            % tty->rawInBuf.Size) > tty->highwater) &&                
          !(tty->flow_ctrl & FL_IREQXOF)) {                           
 8004fe4:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
 8004fe8:	20 63 00 01 	andi r3,r3,0x1                                 <== 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) &&                
 8004fec:	5c 60 00 0a 	bne r3,r0,8005014 <rtems_termios_enqueue_raw_characters+0x200><== NOT EXECUTED
          !(tty->flow_ctrl & FL_IREQXOF)) {                           
        /* incoming data stream should be stopped */                  
        tty->flow_ctrl |= FL_IREQXOF;                                 
 8004ff0:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
 8004ff4:	38 63 00 01 	ori r3,r3,0x1                                  <== NOT EXECUTED
 8004ff8:	59 63 00 b8 	sw (r11+184),r3                                <== NOT EXECUTED
        if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))                
 8004ffc:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
 8005000:	20 63 04 02 	andi r3,r3,0x402                               <== NOT EXECUTED
 8005004:	44 76 00 44 	be r3,r22,8005114 <rtems_termios_enqueue_raw_characters+0x300><== 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) ) {
 8005008:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 800500c:	20 21 01 04 	andi r1,r1,0x104                               <== NOT EXECUTED
 8005010:	44 39 00 4f 	be r1,r25,800514c <rtems_termios_enqueue_raw_characters+0x338><== NOT EXECUTED
          }                                                           
        }                                                             
      }                                                               
                                                                      
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
 8005014:	d0 11 00 00 	wcsr IE,r17                                    
                                                                      
      if (newTail == tty->rawInBuf.Head) {                            
 8005018:	29 63 00 5c 	lw r3,(r11+92)                                 
 800501c:	44 6c 00 37 	be r3,r12,80050f8 <rtems_termios_enqueue_raw_characters+0x2e4><== NEVER TAKEN
        dropped++;                                                    
      } else {                                                        
        tty->rawInBuf.theBuf[newTail] = c;                            
 8005020:	29 63 00 58 	lw r3,(r11+88)                                 
 8005024:	b4 6c 18 00 	add r3,r3,r12                                  
 8005028:	30 6e 00 00 	sb (r3+0),r14                                  
        tty->rawInBuf.Tail = newTail;                                 
                                                                      
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
 800502c:	29 63 00 e4 	lw r3,(r11+228)                                
                                                                      
      if (newTail == tty->rawInBuf.Head) {                            
        dropped++;                                                    
      } else {                                                        
        tty->rawInBuf.theBuf[newTail] = c;                            
        tty->rawInBuf.Tail = newTail;                                 
 8005030:	59 6c 00 60 	sw (r11+96),r12                                
                                                                      
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
 8005034:	5c 60 00 08 	bne r3,r0,8005054 <rtems_termios_enqueue_raw_characters+0x240><== NEVER TAKEN
 8005038:	29 64 00 dc 	lw r4,(r11+220)                                
 800503c:	44 83 00 06 	be r4,r3,8005054 <rtems_termios_enqueue_raw_characters+0x240><== ALWAYS TAKEN
          (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg); 
 8005040:	29 62 00 e0 	lw r2,(r11+224)                                <== NOT EXECUTED
 8005044:	ba e0 08 00 	mv r1,r23                                      <== NOT EXECUTED
 8005048:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
          tty->tty_rcvwakeup = 1;                                     
 800504c:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8005050:	59 63 00 e4 	sw (r11+228),r3                                <== NOT EXECUTED
 8005054:	35 ef ff ff 	addi r15,r15,-1                                
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
  }                                                                   
                                                                      
  while (len--) {                                                     
 8005058:	5d e0 ff c9 	bne r15,r0,8004f7c <rtems_termios_enqueue_raw_characters+0x168><== NEVER TAKEN
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  tty->rawInBufDropped += dropped;                                    
 800505c:	29 62 00 78 	lw r2,(r11+120)                                
  rtems_semaphore_release (tty->rawInBuf.Semaphore);                  
 8005060:	29 61 00 68 	lw r1,(r11+104)                                
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  tty->rawInBufDropped += dropped;                                    
 8005064:	b4 50 10 00 	add r2,r2,r16                                  
 8005068:	59 62 00 78 	sw (r11+120),r2                                
  rtems_semaphore_release (tty->rawInBuf.Semaphore);                  
 800506c:	f8 00 04 98 	calli 80062cc <rtems_semaphore_release>        
  return dropped;                                                     
 8005070:	e3 ff ff a4 	bi 8004f00 <rtems_termios_enqueue_raw_characters+0xec>
        flow_rcv = true;                                              
      }                                                               
      else if (c == tty->termios.c_cc[VSTART]) {                      
        /* VSTART received */                                         
        /* restart output  */                                         
        tty->flow_ctrl &= ~FL_ORCVXOF;                                
 8005074:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8005078:	a0 38 08 00 	and r1,r1,r24                                  <== NOT EXECUTED
 800507c:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
  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--) {                                                   
 8005080:	34 12 00 01 	mvi r18,1                                      
        flow_rcv = true;                                              
      }                                                               
    }                                                                 
    if (flow_rcv) {                                                   
      /* restart output according to FL_ORCVXOF flag */               
      if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {   
 8005084:	29 63 00 b8 	lw r3,(r11+184)                                
 8005088:	20 63 00 30 	andi r3,r3,0x30                                
 800508c:	5c 74 ff f2 	bne r3,r20,8005054 <rtems_termios_enqueue_raw_characters+0x240><== ALWAYS TAKEN
        /* disable interrupts    */                                   
        rtems_interrupt_disable(level);                               
 8005090:	90 00 60 00 	rcsr r12,IE                                    <== NOT EXECUTED
 8005094:	a1 93 18 00 	and r3,r12,r19                                 <== NOT EXECUTED
 8005098:	d0 03 00 00 	wcsr IE,r3                                     <== NOT EXECUTED
        tty->flow_ctrl &= ~FL_OSTOP;                                  
 800509c:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
 80050a0:	29 61 00 94 	lw r1,(r11+148)                                <== 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;                                  
 80050a4:	a0 75 18 00 	and r3,r3,r21                                  <== NOT EXECUTED
 80050a8:	59 63 00 b8 	sw (r11+184),r3                                <== NOT EXECUTED
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
 80050ac:	5c 20 00 04 	bne r1,r0,80050bc <rtems_termios_enqueue_raw_characters+0x2a8><== NOT EXECUTED
          /* if chars available, call write function... */            
          (*tty->device.write)(                                       
            tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
        }                                                             
        /* reenable interrupts */                                     
        rtems_interrupt_enable(level);                                
 80050b0:	d0 0c 00 00 	wcsr IE,r12                                    <== 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;                                     
 80050b4:	35 ef ff ff 	addi r15,r15,-1                                <== NOT EXECUTED
 80050b8:	e3 ff ff e8 	bi 8005058 <rtems_termios_enqueue_raw_characters+0x244><== 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)(                                       
 80050bc:	29 63 00 7c 	lw r3,(r11+124)                                <== NOT EXECUTED
            tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
 80050c0:	29 62 00 84 	lw r2,(r11+132)                                <== 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)(                                       
 80050c4:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 80050c8:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 80050cc:	b4 62 10 00 	add r2,r3,r2                                   <== NOT EXECUTED
 80050d0:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 80050d4:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
            tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
        }                                                             
        /* reenable interrupts */                                     
        rtems_interrupt_enable(level);                                
 80050d8:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
 80050dc:	e3 ff ff f6 	bi 80050b4 <rtems_termios_enqueue_raw_characters+0x2a0><== 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]) {                         
 80050e0:	41 64 00 49 	lbu r4,(r11+73)                                
 80050e4:	44 83 00 08 	be r4,r3,8005104 <rtems_termios_enqueue_raw_characters+0x2f0><== NEVER TAKEN
          tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;               
        }                                                             
        else {                                                        
          /* VSTOP received (other code than VSTART) */               
          /* stop output                             */               
          tty->flow_ctrl |= FL_ORCVXOF;                               
 80050e8:	29 61 00 b8 	lw r1,(r11+184)                                
 80050ec:	38 21 00 10 	ori r1,r1,0x10                                 
 80050f0:	59 61 00 b8 	sw (r11+184),r1                                
 80050f4:	e3 ff ff e3 	bi 8005080 <rtems_termios_enqueue_raw_characters+0x26c>
                                                                      
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
                                                                      
      if (newTail == tty->rawInBuf.Head) {                            
        dropped++;                                                    
 80050f8:	36 10 00 01 	addi r16,r16,1                                 <== 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;                                     
 80050fc:	35 ef ff ff 	addi r15,r15,-1                                <== NOT EXECUTED
 8005100:	e3 ff ff d6 	bi 8005058 <rtems_termios_enqueue_raw_characters+0x244><== NOT EXECUTED
      /* 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]) {                         
          /* received VSTOP and VSTART==VSTOP? */                     
          /* then toggle "stop output" status  */                     
          tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;               
 8005104:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8005108:	18 21 00 10 	xori r1,r1,0x10                                <== NOT EXECUTED
 800510c:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
 8005110:	e3 ff ff dc 	bi 8005080 <rtems_termios_enqueue_raw_characters+0x26c><== 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) ||                          
 8005114:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8005118:	20 21 00 20 	andi r1,r1,0x20                                <== NOT EXECUTED
 800511c:	5c 20 00 03 	bne r1,r0,8005128 <rtems_termios_enqueue_raw_characters+0x314><== NOT EXECUTED
 8005120:	29 62 00 94 	lw r2,(r11+148)                                <== NOT EXECUTED
 8005124:	5c 41 ff bc 	bne r2,r1,8005014 <rtems_termios_enqueue_raw_characters+0x200><== 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;                             
 8005128:	29 62 00 b8 	lw r2,(r11+184)                                <== NOT EXECUTED
            (*tty->device.write)(tty->minor,                          
 800512c:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 8005130:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
            ==                (FL_MDXOF             ) ) {             
          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;                             
 8005134:	38 42 00 02 	ori r2,r2,0x2                                  <== NOT EXECUTED
 8005138:	59 62 00 b8 	sw (r11+184),r2                                <== NOT EXECUTED
            (*tty->device.write)(tty->minor,                          
 800513c:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8005140:	bb 60 10 00 	mv r2,fp                                       <== NOT EXECUTED
 8005144:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
 8005148:	e3 ff ff b3 	bi 8005014 <rtems_termios_enqueue_raw_characters+0x200><== 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;                               
 800514c:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
          /* deactivate RTS line */                                   
          if (tty->device.stopRemoteTx != NULL) {                     
 8005150:	29 62 00 ac 	lw r2,(r11+172)                                <== 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;                               
 8005154:	38 21 00 04 	ori r1,r1,0x4                                  <== NOT EXECUTED
 8005158:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
          /* deactivate RTS line */                                   
          if (tty->device.stopRemoteTx != NULL) {                     
 800515c:	44 40 ff ae 	be r2,r0,8005014 <rtems_termios_enqueue_raw_characters+0x200><== NOT EXECUTED
            tty->device.stopRemoteTx(tty->minor);                     
 8005160:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8005164:	d8 40 00 00 	call r2                                        <== NOT EXECUTED
 8005168:	e3 ff ff ab 	bi 8005014 <rtems_termios_enqueue_raw_characters+0x200><== NOT EXECUTED
                                                                      

08003534 <rtems_termios_initialize>: struct rtems_termios_tty *rtems_termios_ttyTail; rtems_id rtems_termios_ttyMutex; void rtems_termios_initialize (void) {
 8003534:	37 9c ff f8 	addi sp,sp,-8                                  
 8003538:	5b 8b 00 08 	sw (sp+8),r11                                  
 800353c:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc;                                               
                                                                      
  /*                                                                  
   * Create the mutex semaphore for the tty list                      
   */                                                                 
  if (!rtems_termios_ttyMutex) {                                      
 8003540:	78 05 08 02 	mvhi r5,0x802                                  
 8003544:	38 a5 6d a8 	ori r5,r5,0x6da8                               
 8003548:	28 ab 00 00 	lw r11,(r5+0)                                  
 800354c:	45 60 00 05 	be r11,r0,8003560 <rtems_termios_initialize+0x2c><== ALWAYS TAKEN
      RTEMS_NO_PRIORITY,                                              
      &rtems_termios_ttyMutex);                                       
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
  }                                                                   
}                                                                     
 8003550:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003554:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003558:	37 9c 00 08 	addi sp,sp,8                                   
 800355c:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   * Create the mutex semaphore for the tty list                      
   */                                                                 
  if (!rtems_termios_ttyMutex) {                                      
    sc = rtems_semaphore_create (                                     
 8003560:	78 02 08 02 	mvhi r2,0x802                                  
 8003564:	38 42 44 54 	ori r2,r2,0x4454                               
 8003568:	28 41 00 00 	lw r1,(r2+0)                                   
 800356c:	34 03 00 54 	mvi r3,84                                      
 8003570:	34 02 00 01 	mvi r2,1                                       
 8003574:	34 04 00 00 	mvi r4,0                                       
 8003578:	f8 00 0a 3e 	calli 8005e70 <rtems_semaphore_create>         
      rtems_build_name ('T', 'R', 'm', 'i'),                          
      1,                                                              
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &rtems_termios_ttyMutex);                                       
    if (sc != RTEMS_SUCCESSFUL)                                       
 800357c:	44 2b ff f5 	be r1,r11,8003550 <rtems_termios_initialize+0x1c><== ALWAYS TAKEN
      rtems_fatal_error_occurred (sc);                                
 8003580:	f8 00 0d 58 	calli 8006ae0 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08003cb8 <rtems_termios_ioctl>: } } rtems_status_code rtems_termios_ioctl (void *arg) {
 8003cb8:	37 9c ff e8 	addi sp,sp,-24                                 
 8003cbc:	5b 8b 00 18 	sw (sp+24),r11                                 
 8003cc0:	5b 8c 00 14 	sw (sp+20),r12                                 
 8003cc4:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003cc8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003ccc:	5b 8f 00 08 	sw (sp+8),r15                                  
 8003cd0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003cd4:	b8 20 60 00 	mv r12,r1                                      
  rtems_libio_ioctl_args_t *args = arg;                               
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8003cd8:	28 21 00 00 	lw r1,(r1+0)                                   
  struct ttywakeup         *wakeup = (struct ttywakeup *)args->buffer;
  rtems_status_code sc;                                               
                                                                      
   args->ioctl_return = 0;                                            
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8003cdc:	34 02 00 00 	mvi r2,0                                       
 8003ce0:	34 03 00 00 	mvi r3,0                                       
                                                                      
rtems_status_code                                                     
rtems_termios_ioctl (void *arg)                                       
{                                                                     
  rtems_libio_ioctl_args_t *args = arg;                               
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8003ce4:	28 2b 00 38 	lw r11,(r1+56)                                 
  struct ttywakeup         *wakeup = (struct ttywakeup *)args->buffer;
  rtems_status_code sc;                                               
                                                                      
   args->ioctl_return = 0;                                            
 8003ce8:	59 80 00 0c 	sw (r12+12),r0                                 
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;
 8003cec:	29 8e 00 08 	lw r14,(r12+8)                                 
  rtems_status_code sc;                                               
                                                                      
   args->ioctl_return = 0;                                            
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8003cf0:	29 61 00 18 	lw r1,(r11+24)                                 
 8003cf4:	f8 00 09 1a 	calli 800615c <rtems_semaphore_obtain>         
 8003cf8:	b8 20 68 00 	mv r13,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8003cfc:	5c 20 00 21 	bne r1,r0,8003d80 <rtems_termios_ioctl+0xc8>   <== NEVER TAKEN
    args->ioctl_return = sc;                                          
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
 8003d00:	29 81 00 04 	lw r1,(r12+4)                                  
 8003d04:	34 02 00 04 	mvi r2,4                                       
 8003d08:	44 22 00 18 	be r1,r2,8003d68 <rtems_termios_ioctl+0xb0>    
 8003d0c:	54 22 00 27 	bgu r1,r2,8003da8 <rtems_termios_ioctl+0xf0>   
 8003d10:	34 02 00 02 	mvi r2,2                                       
 8003d14:	44 22 00 31 	be r1,r2,8003dd8 <rtems_termios_ioctl+0x120>   
 8003d18:	54 22 00 e3 	bgu r1,r2,80040a4 <rtems_termios_ioctl+0x3ec>  
 8003d1c:	34 02 00 01 	mvi r2,1                                       
 8003d20:	44 22 00 cd 	be r1,r2,8004054 <rtems_termios_ioctl+0x39c>   <== ALWAYS TAKEN
  default:                                                            
    if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {          
 8003d24:	29 61 00 cc 	lw r1,(r11+204)                                
 8003d28:	78 02 08 02 	mvhi r2,0x802                                  
 8003d2c:	38 42 67 a4 	ori r2,r2,0x67a4                               
 8003d30:	b4 21 08 00 	add r1,r1,r1                                   
 8003d34:	b4 21 08 00 	add r1,r1,r1                                   
 8003d38:	b4 21 08 00 	add r1,r1,r1                                   
 8003d3c:	b4 21 08 00 	add r1,r1,r1                                   
 8003d40:	b4 21 08 00 	add r1,r1,r1                                   
 8003d44:	b4 41 08 00 	add r1,r2,r1                                   
 8003d48:	28 23 00 18 	lw r3,(r1+24)                                  
      sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);       
    }                                                                 
    else {                                                            
      sc = RTEMS_INVALID_NUMBER;                                      
 8003d4c:	34 0d 00 0a 	mvi r13,10                                     
    args->ioctl_return = sc;                                          
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
  default:                                                            
    if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {          
 8003d50:	44 60 00 0a 	be r3,r0,8003d78 <rtems_termios_ioctl+0xc0>    <== NEVER TAKEN
      sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);       
 8003d54:	b9 60 08 00 	mv r1,r11                                      
 8003d58:	b9 80 10 00 	mv r2,r12                                      
 8003d5c:	d8 60 00 00 	call r3                                        
 8003d60:	b8 20 68 00 	mv r13,r1                                      
 8003d64:	e0 00 00 05 	bi 8003d78 <rtems_termios_ioctl+0xc0>          
  case RTEMS_IO_SNDWAKEUP:                                            
    tty->tty_snd = *wakeup;                                           
    break;                                                            
                                                                      
  case RTEMS_IO_RCVWAKEUP:                                            
    tty->tty_rcv = *wakeup;                                           
 8003d68:	29 c1 00 00 	lw r1,(r14+0)                                  
 8003d6c:	59 61 00 dc 	sw (r11+220),r1                                
 8003d70:	29 c1 00 04 	lw r1,(r14+4)                                  
 8003d74:	59 61 00 e0 	sw (r11+224),r1                                
      *(int *)args->buffer = tty->ccount - tty->cindex + rawnc;       
    }                                                                 
    break;                                                            
  }                                                                   
                                                                      
  rtems_semaphore_release (tty->osem);                                
 8003d78:	29 61 00 18 	lw r1,(r11+24)                                 
 8003d7c:	f8 00 09 54 	calli 80062cc <rtems_semaphore_release>        
  args->ioctl_return = sc;                                            
  return sc;                                                          
}                                                                     
 8003d80:	b9 a0 08 00 	mv r1,r13                                      
    }                                                                 
    break;                                                            
  }                                                                   
                                                                      
  rtems_semaphore_release (tty->osem);                                
  args->ioctl_return = sc;                                            
 8003d84:	59 8d 00 0c 	sw (r12+12),r13                                
  return sc;                                                          
}                                                                     
 8003d88:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d8c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003d90:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003d94:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003d98:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003d9c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003da0:	37 9c 00 18 	addi sp,sp,24                                  
 8003da4:	c3 a0 00 00 	ret                                            
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  if (sc != RTEMS_SUCCESSFUL) {                                       
    args->ioctl_return = sc;                                          
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
 8003da8:	78 03 08 02 	mvhi r3,0x802                                  
 8003dac:	38 63 44 70 	ori r3,r3,0x4470                               
 8003db0:	28 62 00 00 	lw r2,(r3+0)                                   
 8003db4:	44 22 00 71 	be r1,r2,8003f78 <rtems_termios_ioctl+0x2c0>   <== NEVER TAKEN
 8003db8:	54 22 00 7d 	bgu r1,r2,8003fac <rtems_termios_ioctl+0x2f4>  
 8003dbc:	34 02 00 05 	mvi r2,5                                       
 8003dc0:	5c 22 ff d9 	bne r1,r2,8003d24 <rtems_termios_ioctl+0x6c>   
  case RTEMS_IO_TCDRAIN:                                              
    drainOutput (tty);                                                
    break;                                                            
                                                                      
  case RTEMS_IO_SNDWAKEUP:                                            
    tty->tty_snd = *wakeup;                                           
 8003dc4:	29 c1 00 00 	lw r1,(r14+0)                                  
 8003dc8:	59 61 00 d4 	sw (r11+212),r1                                
 8003dcc:	29 c1 00 04 	lw r1,(r14+4)                                  
 8003dd0:	59 61 00 d8 	sw (r11+216),r1                                
    break;                                                            
 8003dd4:	e3 ff ff e9 	bi 8003d78 <rtems_termios_ioctl+0xc0>          
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
    break;                                                            
                                                                      
  case RTEMS_IO_SET_ATTRIBUTES:                                       
    tty->termios = *(struct termios *)args->buffer;                   
 8003dd8:	29 81 00 08 	lw r1,(r12+8)                                  
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
 8003ddc:	29 63 00 b8 	lw r3,(r11+184)                                
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
    break;                                                            
                                                                      
  case RTEMS_IO_SET_ATTRIBUTES:                                       
    tty->termios = *(struct termios *)args->buffer;                   
 8003de0:	28 22 00 00 	lw r2,(r1+0)                                   
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
 8003de4:	20 63 02 00 	andi r3,r3,0x200                               
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
    break;                                                            
                                                                      
  case RTEMS_IO_SET_ATTRIBUTES:                                       
    tty->termios = *(struct termios *)args->buffer;                   
 8003de8:	59 62 00 30 	sw (r11+48),r2                                 
 8003dec:	28 24 00 04 	lw r4,(r1+4)                                   
 8003df0:	59 64 00 34 	sw (r11+52),r4                                 
 8003df4:	28 24 00 08 	lw r4,(r1+8)                                   
 8003df8:	59 64 00 38 	sw (r11+56),r4                                 
 8003dfc:	28 24 00 0c 	lw r4,(r1+12)                                  
 8003e00:	59 64 00 3c 	sw (r11+60),r4                                 
 8003e04:	28 24 00 10 	lw r4,(r1+16)                                  
 8003e08:	59 64 00 40 	sw (r11+64),r4                                 
 8003e0c:	28 24 00 14 	lw r4,(r1+20)                                  
 8003e10:	59 64 00 44 	sw (r11+68),r4                                 
 8003e14:	28 24 00 18 	lw r4,(r1+24)                                  
 8003e18:	59 64 00 48 	sw (r11+72),r4                                 
 8003e1c:	28 24 00 1c 	lw r4,(r1+28)                                  
 8003e20:	59 64 00 4c 	sw (r11+76),r4                                 
 8003e24:	28 21 00 20 	lw r1,(r1+32)                                  
 8003e28:	59 61 00 50 	sw (r11+80),r1                                 
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
 8003e2c:	44 60 00 15 	be r3,r0,8003e80 <rtems_termios_ioctl+0x1c8>   
      !(tty->termios.c_iflag & IXON)) {                               
 8003e30:	20 42 04 00 	andi r2,r2,0x400                               
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
 8003e34:	5c 40 00 13 	bne r2,r0,8003e80 <rtems_termios_ioctl+0x1c8>  
      !(tty->termios.c_iflag & IXON)) {                               
    /* clear related flags in flow_ctrl */                            
    tty->flow_ctrl &= ~(FL_MDXON | FL_ORCVXOF);                       
 8003e38:	29 62 00 b8 	lw r2,(r11+184)                                
 8003e3c:	34 01 fd ef 	mvi r1,-529                                    
 8003e40:	a0 41 08 00 	and r1,r2,r1                                   
 8003e44:	59 61 00 b8 	sw (r11+184),r1                                
                                                                      
    /* has output been stopped due to received XOFF? */               
    if (tty->flow_ctrl & FL_OSTOP) {                                  
 8003e48:	29 61 00 b8 	lw r1,(r11+184)                                
 8003e4c:	20 21 00 20 	andi r1,r1,0x20                                
 8003e50:	44 20 00 0c 	be r1,r0,8003e80 <rtems_termios_ioctl+0x1c8>   <== ALWAYS TAKEN
      /* disable interrupts    */                                     
      rtems_interrupt_disable(level);                                 
 8003e54:	90 00 70 00 	rcsr r14,IE                                    <== NOT EXECUTED
 8003e58:	34 01 ff fe 	mvi r1,-2                                      <== NOT EXECUTED
 8003e5c:	a1 c1 08 00 	and r1,r14,r1                                  <== NOT EXECUTED
 8003e60:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
      tty->flow_ctrl &= ~FL_OSTOP;                                    
 8003e64:	29 62 00 b8 	lw r2,(r11+184)                                <== NOT EXECUTED
 8003e68:	34 01 ff df 	mvi r1,-33                                     <== NOT EXECUTED
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
 8003e6c:	29 63 00 94 	lw r3,(r11+148)                                <== 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;                                    
 8003e70:	a0 41 08 00 	and r1,r2,r1                                   <== NOT EXECUTED
 8003e74:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
 8003e78:	5c 60 00 90 	bne r3,r0,80040b8 <rtems_termios_ioctl+0x400>  <== NOT EXECUTED
        /* if chars available, call write function... */              
        (*tty->device.write)(                                         
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
      }                                                               
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
 8003e7c:	d0 0e 00 00 	wcsr IE,r14                                    <== NOT EXECUTED
    }                                                                 
  }                                                                   
  /* check for incoming XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXOF) && !(tty->termios.c_iflag & IXOFF)) {
 8003e80:	29 61 00 b8 	lw r1,(r11+184)                                
 8003e84:	20 21 04 00 	andi r1,r1,0x400                               
 8003e88:	44 20 00 0c 	be r1,r0,8003eb8 <rtems_termios_ioctl+0x200>   
 8003e8c:	29 61 00 30 	lw r1,(r11+48)                                 
 8003e90:	20 21 10 00 	andi r1,r1,0x1000                              
 8003e94:	5c 20 00 09 	bne r1,r0,8003eb8 <rtems_termios_ioctl+0x200>  <== NEVER TAKEN
    /* clear related flags in flow_ctrl */                            
    tty->flow_ctrl &= ~(FL_MDXOF);                                    
 8003e98:	29 62 00 b8 	lw r2,(r11+184)                                
 8003e9c:	34 01 fb ff 	mvi r1,-1025                                   
 8003ea0:	a0 41 08 00 	and r1,r2,r1                                   
 8003ea4:	59 61 00 b8 	sw (r11+184),r1                                
    /* FIXME: what happens, if we had sent XOFF but not yet XON? */   
    tty->flow_ctrl &= ~(FL_ISNTXOF);                                  
 8003ea8:	29 62 00 b8 	lw r2,(r11+184)                                
 8003eac:	34 01 ff fd 	mvi r1,-3                                      
 8003eb0:	a0 41 08 00 	and r1,r2,r1                                   
 8003eb4:	59 61 00 b8 	sw (r11+184),r1                                
  }                                                                   
                                                                      
  /* check for incoming RTS/CTS flow control switched off */          
  if (( tty->flow_ctrl & FL_MDRTS) && !(tty->termios.c_cflag & CRTSCTS)) {
 8003eb8:	29 61 00 b8 	lw r1,(r11+184)                                
 8003ebc:	20 21 01 00 	andi r1,r1,0x100                               
 8003ec0:	44 20 00 7c 	be r1,r0,80040b0 <rtems_termios_ioctl+0x3f8>   <== ALWAYS TAKEN
 8003ec4:	29 62 00 38 	lw r2,(r11+56)                                 <== NOT EXECUTED
 8003ec8:	48 02 00 12 	bg r0,r2,8003f10 <rtems_termios_ioctl+0x258>   <== NOT EXECUTED
    /* clear related flags in flow_ctrl */                            
    tty->flow_ctrl &= ~(FL_MDRTS);                                    
 8003ecc:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
 8003ed0:	34 01 fe ff 	mvi r1,-257                                    <== NOT EXECUTED
 8003ed4:	a0 61 08 00 	and r1,r3,r1                                   <== NOT EXECUTED
 8003ed8:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
                                                                      
    /* restart remote Tx, if it was stopped */                        
    if ((tty->flow_ctrl & FL_IRTSOFF) && (tty->device.startRemoteTx != NULL)) {
 8003edc:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8003ee0:	20 21 00 04 	andi r1,r1,0x4                                 <== NOT EXECUTED
 8003ee4:	44 20 00 06 	be r1,r0,8003efc <rtems_termios_ioctl+0x244>   <== NOT EXECUTED
 8003ee8:	29 63 00 b0 	lw r3,(r11+176)                                <== NOT EXECUTED
 8003eec:	44 60 00 04 	be r3,r0,8003efc <rtems_termios_ioctl+0x244>   <== NOT EXECUTED
      tty->device.startRemoteTx(tty->minor);                          
 8003ef0:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8003ef4:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
 8003ef8:	29 62 00 38 	lw r2,(r11+56)                                 <== NOT EXECUTED
    }                                                                 
    tty->flow_ctrl &= ~(FL_IRTSOFF);                                  
 8003efc:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
 8003f00:	34 01 ff fb 	mvi r1,-5                                      <== NOT EXECUTED
 8003f04:	a0 61 08 00 	and r1,r3,r1                                   <== NOT EXECUTED
 8003f08:	59 61 00 b8 	sw (r11+184),r1                                <== 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) {                               
 8003f0c:	4c 40 00 04 	bge r2,r0,8003f1c <rtems_termios_ioctl+0x264>  <== ALWAYS TAKEN
    tty->flow_ctrl |= FL_MDRTS;                                       
 8003f10:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8003f14:	38 21 01 00 	ori r1,r1,0x100                                <== NOT EXECUTED
 8003f18:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
  }                                                                   
  /* check for incoming XON/XOF flow control switched on */           
  if (tty->termios.c_iflag & IXOFF) {                                 
 8003f1c:	29 61 00 30 	lw r1,(r11+48)                                 
 8003f20:	20 22 10 00 	andi r2,r1,0x1000                              
 8003f24:	44 40 00 04 	be r2,r0,8003f34 <rtems_termios_ioctl+0x27c>   
    tty->flow_ctrl |= FL_MDXOF;                                       
 8003f28:	29 62 00 b8 	lw r2,(r11+184)                                
 8003f2c:	38 42 04 00 	ori r2,r2,0x400                                
 8003f30:	59 62 00 b8 	sw (r11+184),r2                                
  }                                                                   
  /* check for outgoing XON/XOF flow control switched on */           
  if (tty->termios.c_iflag & IXON) {                                  
 8003f34:	20 21 04 00 	andi r1,r1,0x400                               
 8003f38:	44 20 00 04 	be r1,r0,8003f48 <rtems_termios_ioctl+0x290>   
    tty->flow_ctrl |= FL_MDXON;                                       
 8003f3c:	29 61 00 b8 	lw r1,(r11+184)                                
 8003f40:	38 21 02 00 	ori r1,r1,0x200                                
 8003f44:	59 61 00 b8 	sw (r11+184),r1                                
    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) {                              
 8003f48:	29 6e 00 3c 	lw r14,(r11+60)                                
 8003f4c:	21 ce 00 02 	andi r14,r14,0x2                               
 8003f50:	45 c0 00 63 	be r14,r0,80040dc <rtems_termios_ioctl+0x424>  
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
        else                                                          
          tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;       
      } else {                                                        
        if (tty->termios.c_cc[VMIN]) {                                
          tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                 
 8003f54:	59 60 00 6c 	sw (r11+108),r0                                
          tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;           
 8003f58:	59 60 00 70 	sw (r11+112),r0                                
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
 8003f5c:	59 60 00 74 	sw (r11+116),r0                                
        } else {                                                      
          tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;              
        }                                                             
      }                                                               
    }                                                                 
    if (tty->device.setAttributes)                                    
 8003f60:	29 63 00 a8 	lw r3,(r11+168)                                
 8003f64:	44 60 ff 85 	be r3,r0,8003d78 <rtems_termios_ioctl+0xc0>    <== NEVER TAKEN
      (*tty->device.setAttributes)(tty->minor, &tty->termios);        
 8003f68:	29 61 00 10 	lw r1,(r11+16)                                 
 8003f6c:	35 62 00 30 	addi r2,r11,48                                 
 8003f70:	d8 60 00 00 	call r3                                        
 8003f74:	e3 ff ff 81 	bi 8003d78 <rtems_termios_ioctl+0xc0>          
  case TIOCGETD:                                                      
    *(int*)(args->buffer)=tty->t_line;                                
    break;                                                            
#endif                                                                
   case FIONREAD: {                                                   
      int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head;            
 8003f78:	29 62 00 60 	lw r2,(r11+96)                                 <== NOT EXECUTED
 8003f7c:	29 61 00 5c 	lw r1,(r11+92)                                 <== NOT EXECUTED
 8003f80:	c8 41 08 00 	sub r1,r2,r1                                   <== NOT EXECUTED
      if ( rawnc < 0 )                                                
 8003f84:	4c 20 00 03 	bge r1,r0,8003f90 <rtems_termios_ioctl+0x2d8>  <== NOT EXECUTED
        rawnc += tty->rawInBuf.Size;                                  
 8003f88:	29 62 00 64 	lw r2,(r11+100)                                <== NOT EXECUTED
 8003f8c:	b4 22 08 00 	add r1,r1,r2                                   <== NOT EXECUTED
      /* Half guess that this is the right operation */               
      *(int *)args->buffer = tty->ccount - tty->cindex + rawnc;       
 8003f90:	29 64 00 20 	lw r4,(r11+32)                                 <== NOT EXECUTED
 8003f94:	29 62 00 24 	lw r2,(r11+36)                                 <== NOT EXECUTED
 8003f98:	29 83 00 08 	lw r3,(r12+8)                                  <== NOT EXECUTED
 8003f9c:	c8 82 10 00 	sub r2,r4,r2                                   <== NOT EXECUTED
 8003fa0:	b4 41 08 00 	add r1,r2,r1                                   <== NOT EXECUTED
 8003fa4:	58 61 00 00 	sw (r3+0),r1                                   <== NOT EXECUTED
    }                                                                 
    break;                                                            
 8003fa8:	e3 ff ff 74 	bi 8003d78 <rtems_termios_ioctl+0xc0>          <== NOT EXECUTED
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  if (sc != RTEMS_SUCCESSFUL) {                                       
    args->ioctl_return = sc;                                          
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
 8003fac:	78 03 08 02 	mvhi r3,0x802                                  
 8003fb0:	38 63 44 74 	ori r3,r3,0x4474                               
 8003fb4:	28 62 00 00 	lw r2,(r3+0)                                   
 8003fb8:	44 22 00 23 	be r1,r2,8004044 <rtems_termios_ioctl+0x38c>   
 8003fbc:	78 03 08 02 	mvhi r3,0x802                                  
 8003fc0:	38 63 44 78 	ori r3,r3,0x4478                               
 8003fc4:	28 62 00 00 	lw r2,(r3+0)                                   
 8003fc8:	5c 22 ff 57 	bne r1,r2,8003d24 <rtems_termios_ioctl+0x6c>   <== NEVER TAKEN
#if 1 /* FIXME */                                                     
  case TIOCSETD:                                                      
    /*                                                                
     * close old line discipline                                      
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_close != NULL) {          
 8003fcc:	29 62 00 cc 	lw r2,(r11+204)                                
 8003fd0:	78 0e 08 02 	mvhi r14,0x802                                 
 8003fd4:	39 ce 67 a4 	ori r14,r14,0x67a4                             
 8003fd8:	b4 42 10 00 	add r2,r2,r2                                   
 8003fdc:	b4 42 10 00 	add r2,r2,r2                                   
 8003fe0:	b4 42 10 00 	add r2,r2,r2                                   
 8003fe4:	b4 42 10 00 	add r2,r2,r2                                   
 8003fe8:	b4 42 10 00 	add r2,r2,r2                                   
 8003fec:	b5 c2 10 00 	add r2,r14,r2                                  
 8003ff0:	28 42 00 04 	lw r2,(r2+4)                                   
 8003ff4:	44 40 00 04 	be r2,r0,8004004 <rtems_termios_ioctl+0x34c>   
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
 8003ff8:	b9 60 08 00 	mv r1,r11                                      
 8003ffc:	d8 40 00 00 	call r2                                        
 8004000:	b8 20 68 00 	mv r13,r1                                      
    }                                                                 
    tty->t_line=*(int*)(args->buffer);                                
 8004004:	29 81 00 08 	lw r1,(r12+8)                                  
 8004008:	28 22 00 00 	lw r2,(r1+0)                                   
    tty->t_sc = NULL; /* ensure that no more valid data */            
 800400c:	59 60 00 d0 	sw (r11+208),r0                                
    /*                                                                
     * open new line discipline                                       
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_open != NULL) {           
 8004010:	b4 42 08 00 	add r1,r2,r2                                   
 8004014:	b4 21 08 00 	add r1,r1,r1                                   
 8004018:	b4 21 08 00 	add r1,r1,r1                                   
 800401c:	b4 21 08 00 	add r1,r1,r1                                   
 8004020:	b4 21 08 00 	add r1,r1,r1                                   
 8004024:	b5 c1 08 00 	add r1,r14,r1                                  
 8004028:	28 23 00 00 	lw r3,(r1+0)                                   
     * 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);                                
 800402c:	59 62 00 cc 	sw (r11+204),r2                                
    tty->t_sc = NULL; /* ensure that no more valid data */            
    /*                                                                
     * open new line discipline                                       
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_open != NULL) {           
 8004030:	44 60 ff 52 	be r3,r0,8003d78 <rtems_termios_ioctl+0xc0>    <== NEVER TAKEN
      sc = rtems_termios_linesw[tty->t_line].l_open(tty);             
 8004034:	b9 60 08 00 	mv r1,r11                                      
 8004038:	d8 60 00 00 	call r3                                        
 800403c:	b8 20 68 00 	mv r13,r1                                      
 8004040:	e3 ff ff 4e 	bi 8003d78 <rtems_termios_ioctl+0xc0>          
    }                                                                 
    break;                                                            
  case TIOCGETD:                                                      
    *(int*)(args->buffer)=tty->t_line;                                
 8004044:	29 81 00 08 	lw r1,(r12+8)                                  
 8004048:	29 62 00 cc 	lw r2,(r11+204)                                
 800404c:	58 22 00 00 	sw (r1+0),r2                                   
    break;                                                            
 8004050:	e3 ff ff 4a 	bi 8003d78 <rtems_termios_ioctl+0xc0>          
      sc = RTEMS_INVALID_NUMBER;                                      
    }                                                                 
    break;                                                            
                                                                      
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
 8004054:	29 62 00 30 	lw r2,(r11+48)                                 
 8004058:	29 81 00 08 	lw r1,(r12+8)                                  
 800405c:	58 22 00 00 	sw (r1+0),r2                                   
 8004060:	29 62 00 34 	lw r2,(r11+52)                                 
 8004064:	58 22 00 04 	sw (r1+4),r2                                   
 8004068:	29 62 00 38 	lw r2,(r11+56)                                 
 800406c:	58 22 00 08 	sw (r1+8),r2                                   
 8004070:	29 62 00 3c 	lw r2,(r11+60)                                 
 8004074:	58 22 00 0c 	sw (r1+12),r2                                  
 8004078:	29 62 00 40 	lw r2,(r11+64)                                 
 800407c:	58 22 00 10 	sw (r1+16),r2                                  
 8004080:	29 62 00 44 	lw r2,(r11+68)                                 
 8004084:	58 22 00 14 	sw (r1+20),r2                                  
 8004088:	29 62 00 48 	lw r2,(r11+72)                                 
 800408c:	58 22 00 18 	sw (r1+24),r2                                  
 8004090:	29 62 00 4c 	lw r2,(r11+76)                                 
 8004094:	58 22 00 1c 	sw (r1+28),r2                                  
 8004098:	29 62 00 50 	lw r2,(r11+80)                                 
 800409c:	58 22 00 20 	sw (r1+32),r2                                  
    break;                                                            
 80040a0:	e3 ff ff 36 	bi 8003d78 <rtems_termios_ioctl+0xc0>          
    if (tty->device.setAttributes)                                    
      (*tty->device.setAttributes)(tty->minor, &tty->termios);        
    break;                                                            
                                                                      
  case RTEMS_IO_TCDRAIN:                                              
    drainOutput (tty);                                                
 80040a4:	b9 60 08 00 	mv r1,r11                                      
 80040a8:	fb ff fd 37 	calli 8003584 <drainOutput>                    
    break;                                                            
 80040ac:	e3 ff ff 33 	bi 8003d78 <rtems_termios_ioctl+0xc0>          
    /* FIXME: what happens, if we had sent XOFF but not yet XON? */   
    tty->flow_ctrl &= ~(FL_ISNTXOF);                                  
  }                                                                   
                                                                      
  /* check for incoming RTS/CTS flow control switched off */          
  if (( tty->flow_ctrl & FL_MDRTS) && !(tty->termios.c_cflag & CRTSCTS)) {
 80040b0:	29 62 00 38 	lw r2,(r11+56)                                 
 80040b4:	e3 ff ff 96 	bi 8003f0c <rtems_termios_ioctl+0x254>         
      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)(                                         
 80040b8:	29 63 00 7c 	lw r3,(r11+124)                                <== NOT EXECUTED
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
 80040bc:	29 62 00 84 	lw r2,(r11+132)                                <== 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)(                                         
 80040c0:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 80040c4:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 80040c8:	b4 62 10 00 	add r2,r3,r2                                   <== NOT EXECUTED
 80040cc:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 80040d0:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
      }                                                               
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
 80040d4:	d0 0e 00 00 	wcsr IE,r14                                    <== NOT EXECUTED
 80040d8:	e3 ff ff 6a 	bi 8003e80 <rtems_termios_ioctl+0x1c8>         <== NOT EXECUTED
    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] *                    
 80040dc:	41 6f 00 46 	lbu r15,(r11+70)                               
                    rtems_clock_get_ticks_per_second() / 10;          
 80040e0:	f8 00 06 15 	calli 8005934 <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] *                    
 80040e4:	b9 e0 10 00 	mv r2,r15                                      
 80040e8:	f8 00 7b 30 	calli 8022da8 <__mulsi3>                       
                    rtems_clock_get_ticks_per_second() / 10;          
 80040ec:	34 02 00 0a 	mvi r2,10                                      
 80040f0:	f8 00 7b 93 	calli 8022f3c <__udivsi3>                      
      if (tty->termios.c_cc[VTIME]) {                                 
 80040f4:	41 62 00 46 	lbu r2,(r11+70)                                
    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] *                    
 80040f8:	59 61 00 54 	sw (r11+84),r1                                 
                    rtems_clock_get_ticks_per_second() / 10;          
      if (tty->termios.c_cc[VTIME]) {                                 
 80040fc:	44 4e 00 07 	be r2,r14,8004118 <rtems_termios_ioctl+0x460>  
        tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                   
        tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;              
        if (tty->termios.c_cc[VMIN])                                  
 8004100:	41 62 00 47 	lbu r2,(r11+71)                                
      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;                   
 8004104:	59 60 00 6c 	sw (r11+108),r0                                
        tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;              
 8004108:	59 61 00 70 	sw (r11+112),r1                                
        if (tty->termios.c_cc[VMIN])                                  
 800410c:	5c 40 ff 94 	bne r2,r0,8003f5c <rtems_termios_ioctl+0x2a4>  
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
        else                                                          
          tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;       
 8004110:	59 61 00 74 	sw (r11+116),r1                                
 8004114:	e3 ff ff 93 	bi 8003f60 <rtems_termios_ioctl+0x2a8>         
      } else {                                                        
        if (tty->termios.c_cc[VMIN]) {                                
 8004118:	41 61 00 47 	lbu r1,(r11+71)                                
 800411c:	5c 22 ff 8e 	bne r1,r2,8003f54 <rtems_termios_ioctl+0x29c>  <== NEVER TAKEN
          tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                 
          tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;           
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
        } else {                                                      
          tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;              
 8004120:	34 01 00 01 	mvi r1,1                                       
 8004124:	59 61 00 6c 	sw (r11+108),r1                                
 8004128:	e3 ff ff 8e 	bi 8003f60 <rtems_termios_ioctl+0x2a8>         
                                                                      

0800361c <rtems_termios_open>: rtems_device_major_number major, rtems_device_minor_number minor, void *arg, const rtems_termios_callbacks *callbacks ) {
 800361c:	37 9c ff cc 	addi sp,sp,-52                                 
 8003620:	5b 8b 00 34 	sw (sp+52),r11                                 
 8003624:	5b 8c 00 30 	sw (sp+48),r12                                 
 8003628:	5b 8d 00 2c 	sw (sp+44),r13                                 
 800362c:	5b 8e 00 28 	sw (sp+40),r14                                 
 8003630:	5b 8f 00 24 	sw (sp+36),r15                                 
 8003634:	5b 90 00 20 	sw (sp+32),r16                                 
 8003638:	5b 91 00 1c 	sw (sp+28),r17                                 
 800363c:	5b 92 00 18 	sw (sp+24),r18                                 
 8003640:	5b 93 00 14 	sw (sp+20),r19                                 
 8003644:	5b 94 00 10 	sw (sp+16),r20                                 
 8003648:	5b 95 00 0c 	sw (sp+12),r21                                 
 800364c:	5b 96 00 08 	sw (sp+8),r22                                  
 8003650:	5b 9d 00 04 	sw (sp+4),ra                                   
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
 8003654:	78 0d 08 02 	mvhi r13,0x802                                 
 8003658:	39 ad 6d a8 	ori r13,r13,0x6da8                             
  rtems_device_major_number      major,                               
  rtems_device_minor_number      minor,                               
  void                          *arg,                                 
  const rtems_termios_callbacks *callbacks                            
)                                                                     
{                                                                     
 800365c:	b8 20 60 00 	mv r12,r1                                      
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
 8003660:	29 a1 00 00 	lw r1,(r13+0)                                  
  rtems_device_major_number      major,                               
  rtems_device_minor_number      minor,                               
  void                          *arg,                                 
  const rtems_termios_callbacks *callbacks                            
)                                                                     
{                                                                     
 8003664:	b8 40 78 00 	mv r15,r2                                      
 8003668:	b8 60 98 00 	mv r19,r3                                      
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
 800366c:	34 02 00 00 	mvi r2,0                                       
 8003670:	34 03 00 00 	mvi r3,0                                       
  rtems_device_major_number      major,                               
  rtems_device_minor_number      minor,                               
  void                          *arg,                                 
  const rtems_termios_callbacks *callbacks                            
)                                                                     
{                                                                     
 8003674:	b8 80 a0 00 	mv r20,r4                                      
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
 8003678:	f8 00 0a b9 	calli 800615c <rtems_semaphore_obtain>         
 800367c:	b8 20 70 00 	mv r14,r1                                      
    rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);            
  if (sc != RTEMS_SUCCESSFUL)                                         
 8003680:	5c 20 00 1e 	bne r1,r0,80036f8 <rtems_termios_open+0xdc>    <== NEVER TAKEN
    return sc;                                                        
                                                                      
  for (tty = rtems_termios_ttyHead ; tty != NULL ; tty = tty->forw) { 
 8003684:	78 10 08 02 	mvhi r16,0x802                                 
 8003688:	3a 10 6d b0 	ori r16,r16,0x6db0                             
 800368c:	2a 12 00 00 	lw r18,(r16+0)                                 
 8003690:	46 41 00 38 	be r18,r1,8003770 <rtems_termios_open+0x154>   <== ALWAYS TAKEN
 8003694:	ba 40 58 00 	mv r11,r18                                     <== NOT EXECUTED
 8003698:	e0 00 00 03 	bi 80036a4 <rtems_termios_open+0x88>           <== NOT EXECUTED
 800369c:	29 6b 00 00 	lw r11,(r11+0)                                 <== NOT EXECUTED
 80036a0:	45 60 00 34 	be r11,r0,8003770 <rtems_termios_open+0x154>   <== NOT EXECUTED
    if ((tty->major == major) && (tty->minor == minor))               
 80036a4:	29 65 00 0c 	lw r5,(r11+12)                                 <== NOT EXECUTED
 80036a8:	5c ac ff fd 	bne r5,r12,800369c <rtems_termios_open+0x80>   <== NOT EXECUTED
 80036ac:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 80036b0:	5c 2f ff fb 	bne r1,r15,800369c <rtems_termios_open+0x80>   <== NOT EXECUTED
     */                                                               
    if (c++ == 'z')                                                   
      c = 'a';                                                        
                                                                      
  }                                                                   
  args->iop->data1 = tty;                                             
 80036b4:	2a 61 00 00 	lw r1,(r19+0)                                  
  if (!tty->refcount++) {                                             
 80036b8:	29 62 00 08 	lw r2,(r11+8)                                  
     */                                                               
    if (c++ == 'z')                                                   
      c = 'a';                                                        
                                                                      
  }                                                                   
  args->iop->data1 = tty;                                             
 80036bc:	58 2b 00 38 	sw (r1+56),r11                                 
  if (!tty->refcount++) {                                             
 80036c0:	34 41 00 01 	addi r1,r2,1                                   
 80036c4:	59 61 00 08 	sw (r11+8),r1                                  
 80036c8:	5c 40 00 0a 	bne r2,r0,80036f0 <rtems_termios_open+0xd4>    <== NEVER TAKEN
    if (tty->device.firstOpen)                                        
 80036cc:	29 64 00 98 	lw r4,(r11+152)                                
 80036d0:	44 82 00 05 	be r4,r2,80036e4 <rtems_termios_open+0xc8>     <== ALWAYS TAKEN
      (*tty->device.firstOpen)(major, minor, arg);                    
 80036d4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80036d8:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 80036dc:	ba 60 18 00 	mv r3,r19                                      <== NOT EXECUTED
 80036e0:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
                                                                      
    /*                                                                
     * start I/O tasks, if needed                                     
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
 80036e4:	29 62 00 b4 	lw r2,(r11+180)                                
 80036e8:	34 01 00 02 	mvi r1,2                                       
 80036ec:	44 41 00 13 	be r2,r1,8003738 <rtems_termios_open+0x11c>    
        tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
    }                                                                 
  }                                                                   
  rtems_semaphore_release (rtems_termios_ttyMutex);                   
 80036f0:	29 a1 00 00 	lw r1,(r13+0)                                  
 80036f4:	f8 00 0a f6 	calli 80062cc <rtems_semaphore_release>        
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80036f8:	b9 c0 08 00 	mv r1,r14                                      
 80036fc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003700:	2b 8b 00 34 	lw r11,(sp+52)                                 
 8003704:	2b 8c 00 30 	lw r12,(sp+48)                                 
 8003708:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 800370c:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8003710:	2b 8f 00 24 	lw r15,(sp+36)                                 
 8003714:	2b 90 00 20 	lw r16,(sp+32)                                 
 8003718:	2b 91 00 1c 	lw r17,(sp+28)                                 
 800371c:	2b 92 00 18 	lw r18,(sp+24)                                 
 8003720:	2b 93 00 14 	lw r19,(sp+20)                                 
 8003724:	2b 94 00 10 	lw r20,(sp+16)                                 
 8003728:	2b 95 00 0c 	lw r21,(sp+12)                                 
 800372c:	2b 96 00 08 	lw r22,(sp+8)                                  
 8003730:	37 9c 00 34 	addi sp,sp,52                                  
 8003734:	c3 a0 00 00 	ret                                            
                                                                      
    /*                                                                
     * start I/O tasks, if needed                                     
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
      sc = rtems_task_start(                                          
 8003738:	29 61 00 c4 	lw r1,(r11+196)                                
 800373c:	78 02 08 00 	mvhi r2,0x800                                  
 8003740:	38 42 51 6c 	ori r2,r2,0x516c                               
 8003744:	b9 60 18 00 	mv r3,r11                                      
 8003748:	f8 00 0b c4 	calli 8006658 <rtems_task_start>               
 800374c:	b8 20 60 00 	mv r12,r1                                      
        tty->rxTaskId, rtems_termios_rxdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
 8003750:	5c 20 00 bd 	bne r1,r0,8003a44 <rtems_termios_open+0x428>   <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
                                                                      
      sc = rtems_task_start(                                          
 8003754:	29 61 00 c8 	lw r1,(r11+200)                                
 8003758:	78 02 08 00 	mvhi r2,0x800                                  
 800375c:	38 42 54 6c 	ori r2,r2,0x546c                               
 8003760:	b9 60 18 00 	mv r3,r11                                      
 8003764:	f8 00 0b bd 	calli 8006658 <rtems_task_start>               
        tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
 8003768:	44 2c ff e2 	be r1,r12,80036f0 <rtems_termios_open+0xd4>    <== ALWAYS TAKEN
 800376c:	e0 00 00 b6 	bi 8003a44 <rtems_termios_open+0x428>          <== NOT EXECUTED
    static char c = 'a';                                              
                                                                      
    /*                                                                
     * Create a new device                                            
     */                                                               
    tty = calloc (1, sizeof (struct rtems_termios_tty));              
 8003770:	34 01 00 01 	mvi r1,1                                       
 8003774:	34 02 00 e8 	mvi r2,232                                     
 8003778:	fb ff f9 55 	calli 8001ccc <calloc>                         
 800377c:	b8 20 88 00 	mv r17,r1                                      
 8003780:	b8 20 58 00 	mv r11,r1                                      
    if (tty == NULL) {                                                
 8003784:	44 20 00 a1 	be r1,r0,8003a08 <rtems_termios_open+0x3ec>    <== NEVER TAKEN
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * allocate raw input buffer                                      
     */                                                               
    tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;                       
 8003788:	78 01 08 02 	mvhi r1,0x802                                  
 800378c:	38 21 61 90 	ori r1,r1,0x6190                               
 8003790:	28 21 00 00 	lw r1,(r1+0)                                   
 8003794:	5a 21 00 64 	sw (r17+100),r1                                
    tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);               
 8003798:	2a 21 00 64 	lw r1,(r17+100)                                
 800379c:	fb ff fb ed 	calli 8002750 <malloc>                         
 80037a0:	5a 21 00 58 	sw (r17+88),r1                                 
 80037a4:	b8 20 a8 00 	mv r21,r1                                      
    if (tty->rawInBuf.theBuf == NULL) {                               
 80037a8:	44 20 00 96 	be r1,r0,8003a00 <rtems_termios_open+0x3e4>    <== NEVER TAKEN
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * allocate raw output buffer                                     
     */                                                               
    tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;                     
 80037ac:	78 01 08 02 	mvhi r1,0x802                                  
 80037b0:	38 21 61 94 	ori r1,r1,0x6194                               
 80037b4:	28 21 00 00 	lw r1,(r1+0)                                   
 80037b8:	5a 21 00 88 	sw (r17+136),r1                                
    tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);             
 80037bc:	2a 21 00 88 	lw r1,(r17+136)                                
 80037c0:	fb ff fb e4 	calli 8002750 <malloc>                         
 80037c4:	5a 21 00 7c 	sw (r17+124),r1                                
 80037c8:	b8 20 b0 00 	mv r22,r1                                      
    if (tty->rawOutBuf.theBuf == NULL) {                              
 80037cc:	44 20 00 8b 	be r1,r0,80039f8 <rtems_termios_open+0x3dc>    <== NEVER TAKEN
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * allocate cooked buffer                                         
     */                                                               
    tty->cbuf  = malloc (CBUFSIZE);                                   
 80037d0:	78 01 08 02 	mvhi r1,0x802                                  
 80037d4:	38 21 61 8c 	ori r1,r1,0x618c                               
 80037d8:	28 21 00 00 	lw r1,(r1+0)                                   
 80037dc:	fb ff fb dd 	calli 8002750 <malloc>                         
 80037e0:	5a 21 00 1c 	sw (r17+28),r1                                 
    if (tty->cbuf == NULL) {                                          
 80037e4:	44 20 00 83 	be r1,r0,80039f0 <rtems_termios_open+0x3d4>    <== NEVER TAKEN
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * Initialize wakeup callbacks                                    
     */                                                               
    tty->tty_snd.sw_pfn = NULL;                                       
 80037e8:	5a 20 00 d4 	sw (r17+212),r0                                
    tty->tty_snd.sw_arg = NULL;                                       
 80037ec:	5a 20 00 d8 	sw (r17+216),r0                                
    tty->tty_rcv.sw_pfn = NULL;                                       
 80037f0:	5a 20 00 dc 	sw (r17+220),r0                                
    tty->tty_rcv.sw_arg = NULL;                                       
 80037f4:	5a 20 00 e0 	sw (r17+224),r0                                
    tty->tty_rcvwakeup  = 0;                                          
 80037f8:	5a 20 00 e4 	sw (r17+228),r0                                
                                                                      
    /*                                                                
     * link tty                                                       
     */                                                               
    tty->forw = rtems_termios_ttyHead;                                
 80037fc:	5a 32 00 00 	sw (r17+0),r18                                 
    tty->back = NULL;                                                 
 8003800:	5a 20 00 04 	sw (r17+4),r0                                  
    if (rtems_termios_ttyHead != NULL)                                
 8003804:	46 40 00 02 	be r18,r0,800380c <rtems_termios_open+0x1f0>   <== ALWAYS TAKEN
      rtems_termios_ttyHead->back = tty;                              
 8003808:	5a 51 00 04 	sw (r18+4),r17                                 <== NOT EXECUTED
    rtems_termios_ttyHead = tty;                                      
    if (rtems_termios_ttyTail == NULL)                                
 800380c:	78 01 08 02 	mvhi r1,0x802                                  
 8003810:	38 21 6d ac 	ori r1,r1,0x6dac                               
 8003814:	28 22 00 00 	lw r2,(r1+0)                                   
     */                                                               
    tty->forw = rtems_termios_ttyHead;                                
    tty->back = NULL;                                                 
    if (rtems_termios_ttyHead != NULL)                                
      rtems_termios_ttyHead->back = tty;                              
    rtems_termios_ttyHead = tty;                                      
 8003818:	5a 11 00 00 	sw (r16+0),r17                                 
    if (rtems_termios_ttyTail == NULL)                                
 800381c:	44 40 00 a5 	be r2,r0,8003ab0 <rtems_termios_open+0x494>    <== ALWAYS TAKEN
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
      rtems_build_name ('T', 'R', 'i', c),                            
 8003820:	78 10 08 02 	mvhi r16,0x802                                 
    tty->major = major;                                               
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
 8003824:	78 05 08 02 	mvhi r5,0x802                                  
 8003828:	38 a5 44 58 	ori r5,r5,0x4458                               
      rtems_build_name ('T', 'R', 'i', c),                            
 800382c:	3a 10 61 98 	ori r16,r16,0x6198                             
 8003830:	42 04 00 00 	lbu r4,(r16+0)                                 
    tty->major = major;                                               
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
 8003834:	28 a1 00 00 	lw r1,(r5+0)                                   
 8003838:	34 02 00 01 	mvi r2,1                                       
 800383c:	34 03 00 54 	mvi r3,84                                      
 8003840:	b8 81 08 00 	or r1,r4,r1                                    
 8003844:	36 25 00 14 	addi r5,r17,20                                 
 8003848:	34 04 00 00 	mvi r4,0                                       
      rtems_termios_ttyHead->back = tty;                              
    rtems_termios_ttyHead = tty;                                      
    if (rtems_termios_ttyTail == NULL)                                
      rtems_termios_ttyTail = tty;                                    
                                                                      
    tty->minor = minor;                                               
 800384c:	5a 2f 00 10 	sw (r17+16),r15                                
    tty->major = major;                                               
 8003850:	5a 2c 00 0c 	sw (r17+12),r12                                
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
 8003854:	f8 00 09 87 	calli 8005e70 <rtems_semaphore_create>         
 8003858:	b8 20 a8 00 	mv r21,r1                                      
      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)                                       
 800385c:	5c 20 00 7a 	bne r1,r0,8003a44 <rtems_termios_open+0x428>   <== NEVER TAKEN
      rtems_fatal_error_occurred (sc);                                
    sc = rtems_semaphore_create (                                     
 8003860:	78 05 08 02 	mvhi r5,0x802                                  
 8003864:	38 a5 44 5c 	ori r5,r5,0x445c                               
      rtems_build_name ('T', 'R', 'o', c),                            
 8003868:	42 04 00 00 	lbu r4,(r16+0)                                 
      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 (                                     
 800386c:	28 a1 00 00 	lw r1,(r5+0)                                   
 8003870:	34 02 00 01 	mvi r2,1                                       
 8003874:	34 03 00 54 	mvi r3,84                                      
 8003878:	b8 81 08 00 	or r1,r4,r1                                    
 800387c:	36 25 00 18 	addi r5,r17,24                                 
 8003880:	34 04 00 00 	mvi r4,0                                       
 8003884:	f8 00 09 7b 	calli 8005e70 <rtems_semaphore_create>         
 8003888:	b8 20 90 00 	mv r18,r1                                      
      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)                                       
 800388c:	5c 35 00 6e 	bne r1,r21,8003a44 <rtems_termios_open+0x428>  <== NEVER TAKEN
      rtems_fatal_error_occurred (sc);                                
    sc = rtems_semaphore_create (                                     
 8003890:	78 05 08 02 	mvhi r5,0x802                                  
 8003894:	38 a5 44 60 	ori r5,r5,0x4460                               
      rtems_build_name ('T', 'R', 'x', c),                            
 8003898:	42 04 00 00 	lbu r4,(r16+0)                                 
      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 (                                     
 800389c:	28 a1 00 00 	lw r1,(r5+0)                                   
 80038a0:	34 02 00 00 	mvi r2,0                                       
 80038a4:	34 03 00 20 	mvi r3,32                                      
 80038a8:	b8 81 08 00 	or r1,r4,r1                                    
 80038ac:	36 25 00 8c 	addi r5,r17,140                                
 80038b0:	34 04 00 00 	mvi r4,0                                       
 80038b4:	f8 00 09 6f 	calli 8005e70 <rtems_semaphore_create>         
 80038b8:	b8 20 a8 00 	mv r21,r1                                      
      rtems_build_name ('T', 'R', 'x', c),                            
      0,                                                              
      RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_FIFO,                     
      RTEMS_NO_PRIORITY,                                              
      &tty->rawOutBuf.Semaphore);                                     
    if (sc != RTEMS_SUCCESSFUL)                                       
 80038bc:	5c 32 00 62 	bne r1,r18,8003a44 <rtems_termios_open+0x428>  <== NEVER TAKEN
    tty->rawOutBufState = rob_idle;                                   
                                                                      
    /*                                                                
     * Set callbacks                                                  
     */                                                               
    tty->device = *callbacks;                                         
 80038c0:	2a 82 00 18 	lw r2,(r20+24)                                 
 80038c4:	2a 88 00 00 	lw r8,(r20+0)                                  
 80038c8:	2a 87 00 04 	lw r7,(r20+4)                                  
 80038cc:	2a 86 00 08 	lw r6,(r20+8)                                  
 80038d0:	2a 85 00 0c 	lw r5,(r20+12)                                 
 80038d4:	2a 84 00 10 	lw r4,(r20+16)                                 
 80038d8:	2a 83 00 14 	lw r3,(r20+20)                                 
 80038dc:	2a 81 00 1c 	lw r1,(r20+28)                                 
 80038e0:	5a 22 00 b0 	sw (r17+176),r2                                
      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;                                   
 80038e4:	5a 20 00 94 	sw (r17+148),r0                                
                                                                      
    /*                                                                
     * Set callbacks                                                  
     */                                                               
    tty->device = *callbacks;                                         
 80038e8:	5a 28 00 98 	sw (r17+152),r8                                
 80038ec:	5a 27 00 9c 	sw (r17+156),r7                                
 80038f0:	5a 26 00 a0 	sw (r17+160),r6                                
 80038f4:	5a 25 00 a4 	sw (r17+164),r5                                
 80038f8:	5a 24 00 a8 	sw (r17+168),r4                                
 80038fc:	5a 23 00 ac 	sw (r17+172),r3                                
 8003900:	5a 21 00 b4 	sw (r17+180),r1                                
                                                                      
    /*                                                                
     * Create I/O tasks                                               
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
 8003904:	34 02 00 02 	mvi r2,2                                       
 8003908:	44 22 00 50 	be r1,r2,8003a48 <rtems_termios_open+0x42c>    
           &tty->rxTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
                                                                      
    }                                                                 
    if ((tty->device.pollRead == NULL) ||                             
 800390c:	2a 21 00 a0 	lw r1,(r17+160)                                
 8003910:	44 20 00 42 	be r1,r0,8003a18 <rtems_termios_open+0x3fc>    
 8003914:	2a 22 00 b4 	lw r2,(r17+180)                                
 8003918:	34 01 00 02 	mvi r1,2                                       
 800391c:	44 41 00 3f 	be r2,r1,8003a18 <rtems_termios_open+0x3fc>    
    }                                                                 
                                                                      
    /*                                                                
     * Set default parameters                                         
     */                                                               
    tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;           
 8003920:	34 05 25 02 	mvi r5,9474                                    
 8003924:	5a 25 00 30 	sw (r17+48),r5                                 
    tty->termios.c_oflag = OPOST | ONLCR | XTABS;                     
 8003928:	34 05 18 05 	mvi r5,6149                                    
 800392c:	5a 25 00 34 	sw (r17+52),r5                                 
    tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;              
 8003930:	34 05 08 bd 	mvi r5,2237                                    
 8003934:	5a 25 00 38 	sw (r17+56),r5                                 
    tty->termios.c_lflag =                                            
 8003938:	34 a5 79 7e 	addi r5,r5,31102                               
 800393c:	5a 25 00 3c 	sw (r17+60),r5                                 
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
 8003940:	34 05 00 03 	mvi r5,3                                       
 8003944:	32 25 00 41 	sb (r17+65),r5                                 
    tty->termios.c_cc[VQUIT] = '\034';                                
 8003948:	34 05 00 1c 	mvi r5,28                                      
    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;                                               
 800394c:	5a 20 00 b8 	sw (r17+184),r0                                
    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';                                
 8003950:	32 25 00 42 	sb (r17+66),r5                                 
    tty->termios.c_cc[VERASE] = '\177';                               
 8003954:	34 05 00 7f 	mvi r5,127                                     
    /* 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;                        
 8003958:	2a 24 00 64 	lw r4,(r17+100)                                
    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';                               
 800395c:	32 25 00 43 	sb (r17+67),r5                                 
    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;                        
 8003960:	2a 21 00 64 	lw r1,(r17+100)                                
       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';                                
 8003964:	34 05 00 15 	mvi r5,21                                      
 8003968:	32 25 00 44 	sb (r17+68),r5                                 
    tty->termios.c_cc[VEOF] = '\004';                                 
 800396c:	34 05 00 04 	mvi r5,4                                       
 8003970:	32 25 00 45 	sb (r17+69),r5                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
 8003974:	34 05 00 11 	mvi r5,17                                      
    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;                        
 8003978:	b4 21 18 00 	add r3,r1,r1                                   
    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';                               
 800397c:	32 25 00 49 	sb (r17+73),r5                                 
    tty->termios.c_cc[VSTOP] = '\023';                                
 8003980:	34 05 00 13 	mvi r5,19                                      
    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;                        
 8003984:	b4 61 08 00 	add r1,r3,r1                                   
    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';                                
 8003988:	32 25 00 4a 	sb (r17+74),r5                                 
    tty->termios.c_cc[VSUSP] = '\032';                                
 800398c:	34 05 00 1a 	mvi r5,26                                      
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
 8003990:	42 02 00 00 	lbu r2,(r16+0)                                 
    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;                        
 8003994:	00 21 00 01 	srui r1,r1,1                                   
    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';                                
 8003998:	32 25 00 4b 	sb (r17+75),r5                                 
    tty->termios.c_cc[VREPRINT] = '\022';                             
 800399c:	34 05 00 12 	mvi r5,18                                      
 80039a0:	32 25 00 4d 	sb (r17+77),r5                                 
    tty->termios.c_cc[VDISCARD] = '\017';                             
 80039a4:	34 05 00 0f 	mvi r5,15                                      
    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;                        
 80039a8:	00 21 00 01 	srui r1,r1,1                                   
    /* 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;                        
 80039ac:	00 84 00 01 	srui r4,r4,1                                   
    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';                             
 80039b0:	32 25 00 4e 	sb (r17+78),r5                                 
    tty->termios.c_cc[VWERASE] = '\027';                              
 80039b4:	34 05 00 17 	mvi r5,23                                      
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
 80039b8:	34 43 00 01 	addi r3,r2,1                                   
    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';                              
 80039bc:	32 25 00 4f 	sb (r17+79),r5                                 
    tty->termios.c_cc[VLNEXT] = '\026';                               
 80039c0:	34 05 00 16 	mvi r5,22                                      
    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;                        
 80039c4:	5a 21 00 c0 	sw (r17+192),r1                                
    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';                                 
 80039c8:	32 20 00 4c 	sb (r17+76),r0                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
 80039cc:	32 20 00 51 	sb (r17+81),r0                                 
    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';                               
 80039d0:	32 25 00 50 	sb (r17+80),r5                                 
    /* 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;                        
 80039d4:	5a 24 00 bc 	sw (r17+188),r4                                
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
 80039d8:	32 03 00 00 	sb (r16+0),r3                                  
 80039dc:	34 01 00 7a 	mvi r1,122                                     
 80039e0:	5c 41 ff 35 	bne r2,r1,80036b4 <rtems_termios_open+0x98>    
      c = 'a';                                                        
 80039e4:	34 01 00 61 	mvi r1,97                                      
 80039e8:	32 01 00 00 	sb (r16+0),r1                                  
 80039ec:	e3 ff ff 32 	bi 80036b4 <rtems_termios_open+0x98>           
    /*                                                                
     * allocate cooked buffer                                         
     */                                                               
    tty->cbuf  = malloc (CBUFSIZE);                                   
    if (tty->cbuf == NULL) {                                          
            free((void *)(tty->rawOutBuf.theBuf));                    
 80039f0:	ba c0 08 00 	mv r1,r22                                      <== NOT EXECUTED
 80039f4:	fb ff f9 7e 	calli 8001fec <free>                           <== NOT EXECUTED
            free((void *)(tty->rawInBuf.theBuf));                     
 80039f8:	ba a0 08 00 	mv r1,r21                                      
 80039fc:	fb ff f9 7c 	calli 8001fec <free>                           
            free(tty);                                                
 8003a00:	ba 20 08 00 	mv r1,r17                                      
 8003a04:	fb ff f9 7a 	calli 8001fec <free>                           
      rtems_semaphore_release (rtems_termios_ttyMutex);               
 8003a08:	29 a1 00 00 	lw r1,(r13+0)                                  
      return RTEMS_NO_MEMORY;                                         
 8003a0c:	34 0e 00 1a 	mvi r14,26                                     
    tty->cbuf  = malloc (CBUFSIZE);                                   
    if (tty->cbuf == NULL) {                                          
            free((void *)(tty->rawOutBuf.theBuf));                    
            free((void *)(tty->rawInBuf.theBuf));                     
            free(tty);                                                
      rtems_semaphore_release (rtems_termios_ttyMutex);               
 8003a10:	f8 00 0a 2f 	calli 80062cc <rtems_semaphore_release>        
      return RTEMS_NO_MEMORY;                                         
 8003a14:	e3 ff ff 39 	bi 80036f8 <rtems_termios_open+0xdc>           
        rtems_fatal_error_occurred (sc);                              
                                                                      
    }                                                                 
    if ((tty->device.pollRead == NULL) ||                             
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){   
      sc = rtems_semaphore_create (                                   
 8003a18:	78 05 08 02 	mvhi r5,0x802                                  
 8003a1c:	38 a5 44 6c 	ori r5,r5,0x446c                               
        rtems_build_name ('T', 'R', 'r', c),                          
 8003a20:	42 04 00 00 	lbu r4,(r16+0)                                 
        rtems_fatal_error_occurred (sc);                              
                                                                      
    }                                                                 
    if ((tty->device.pollRead == NULL) ||                             
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){   
      sc = rtems_semaphore_create (                                   
 8003a24:	28 a1 00 00 	lw r1,(r5+0)                                   
 8003a28:	34 02 00 00 	mvi r2,0                                       
 8003a2c:	34 03 00 24 	mvi r3,36                                      
 8003a30:	b8 81 08 00 	or r1,r4,r1                                    
 8003a34:	36 25 00 68 	addi r5,r17,104                                
 8003a38:	34 04 00 00 	mvi r4,0                                       
 8003a3c:	f8 00 09 0d 	calli 8005e70 <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)                                     
 8003a40:	44 20 ff b8 	be r1,r0,8003920 <rtems_termios_open+0x304>    <== ALWAYS TAKEN
        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);                              
 8003a44:	f8 00 0c 27 	calli 8006ae0 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      
    /*                                                                
     * Create I/O tasks                                               
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
      sc = rtems_task_create (                                        
 8003a48:	78 05 08 02 	mvhi r5,0x802                                  
 8003a4c:	38 a5 44 64 	ori r5,r5,0x4464                               
                                   rtems_build_name ('T', 'x', 'T', c),
 8003a50:	42 04 00 00 	lbu r4,(r16+0)                                 
                                                                      
    /*                                                                
     * Create I/O tasks                                               
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
      sc = rtems_task_create (                                        
 8003a54:	28 a1 00 00 	lw r1,(r5+0)                                   
 8003a58:	34 02 00 0a 	mvi r2,10                                      
 8003a5c:	34 03 04 00 	mvi r3,1024                                    
 8003a60:	b8 81 08 00 	or r1,r4,r1                                    
 8003a64:	34 05 00 00 	mvi r5,0                                       
 8003a68:	34 04 05 00 	mvi r4,1280                                    
 8003a6c:	36 26 00 c8 	addi r6,r17,200                                
 8003a70:	f8 00 0a 50 	calli 80063b0 <rtems_task_create>              
 8003a74:	b8 20 90 00 	mv r18,r1                                      
           TERMIOS_TXTASK_STACKSIZE,                                  
           RTEMS_NO_PREEMPT | RTEMS_NO_TIMESLICE |                    
           RTEMS_NO_ASR,                                              
           RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,                     
           &tty->txTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
 8003a78:	5c 35 ff f3 	bne r1,r21,8003a44 <rtems_termios_open+0x428>  <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_task_create (                                        
 8003a7c:	78 05 08 02 	mvhi r5,0x802                                  
 8003a80:	38 a5 44 68 	ori r5,r5,0x4468                               
                                   rtems_build_name ('R', 'x', 'T', c),
 8003a84:	42 04 00 00 	lbu r4,(r16+0)                                 
           RTEMS_NO_ASR,                                              
           RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,                     
           &tty->txTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_task_create (                                        
 8003a88:	28 a1 00 00 	lw r1,(r5+0)                                   
 8003a8c:	34 02 00 09 	mvi r2,9                                       
 8003a90:	34 03 04 00 	mvi r3,1024                                    
 8003a94:	b8 81 08 00 	or r1,r4,r1                                    
 8003a98:	34 05 00 00 	mvi r5,0                                       
 8003a9c:	34 04 05 00 	mvi r4,1280                                    
 8003aa0:	36 26 00 c4 	addi r6,r17,196                                
 8003aa4:	f8 00 0a 43 	calli 80063b0 <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)                                     
 8003aa8:	44 32 ff 99 	be r1,r18,800390c <rtems_termios_open+0x2f0>   <== ALWAYS TAKEN
 8003aac:	e3 ff ff e6 	bi 8003a44 <rtems_termios_open+0x428>          <== NOT EXECUTED
    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;                                    
 8003ab0:	58 31 00 00 	sw (r1+0),r17                                  
 8003ab4:	e3 ff ff 5b 	bi 8003820 <rtems_termios_open+0x204>          
                                                                      

0800412c <rtems_termios_puts>: * Send characters to device-specific code */ void rtems_termios_puts ( const void *_buf, int len, struct rtems_termios_tty *tty) {
 800412c:	37 9c ff d8 	addi sp,sp,-40                                 
 8004130:	5b 8b 00 24 	sw (sp+36),r11                                 
 8004134:	5b 8c 00 20 	sw (sp+32),r12                                 
 8004138:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800413c:	5b 8e 00 18 	sw (sp+24),r14                                 
 8004140:	5b 8f 00 14 	sw (sp+20),r15                                 
 8004144:	5b 90 00 10 	sw (sp+16),r16                                 
 8004148:	5b 91 00 0c 	sw (sp+12),r17                                 
 800414c:	5b 92 00 08 	sw (sp+8),r18                                  
 8004150:	5b 9d 00 04 	sw (sp+4),ra                                   
  const unsigned char *buf = _buf;                                    
  unsigned int newHead;                                               
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
 8004154:	28 64 00 b4 	lw r4,(r3+180)                                 
 * Send characters to device-specific code                            
 */                                                                   
void                                                                  
rtems_termios_puts (                                                  
  const void *_buf, int len, struct rtems_termios_tty *tty)           
{                                                                     
 8004158:	b8 60 58 00 	mv r11,r3                                      
 800415c:	b8 40 88 00 	mv r17,r2                                      
 8004160:	b8 20 18 00 	mv r3,r1                                       
  const unsigned char *buf = _buf;                                    
 8004164:	b8 20 80 00 	mv r16,r1                                      
  unsigned int newHead;                                               
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
 8004168:	44 80 00 39 	be r4,r0,800424c <rtems_termios_puts+0x120>    
    (*tty->device.write)(tty->minor, (void *)buf, len);               
    return;                                                           
  }                                                                   
  newHead = tty->rawOutBuf.Head;                                      
 800416c:	29 6f 00 80 	lw r15,(r11+128)                               
  while (len) {                                                       
 8004170:	44 40 00 3c 	be r2,r0,8004260 <rtems_termios_puts+0x134>    <== NEVER TAKEN
     *                                                                
     * To minimize latency, the memcpy should be done                 
     * with interrupts enabled.                                       
     */                                                               
    newHead = (newHead + 1) % tty->rawOutBuf.Size;                    
    rtems_interrupt_disable (level);                                  
 8004174:	34 0d ff fe 	mvi r13,-2                                     
    while (newHead == tty->rawOutBuf.Tail) {                          
      tty->rawOutBufState = rob_wait;                                 
 8004178:	34 0e 00 02 	mvi r14,2                                      
      (char *)&tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);         
      } else {                                                        
        /* remember that output has been stopped due to flow ctrl*/   
        tty->flow_ctrl |= FL_OSTOP;                                   
      }                                                               
      tty->rawOutBufState = rob_busy;                                 
 800417c:	34 12 00 01 	mvi r18,1                                      
     *  len -= ncopy                                                  
     *                                                                
     * To minimize latency, the memcpy should be done                 
     * with interrupts enabled.                                       
     */                                                               
    newHead = (newHead + 1) % tty->rawOutBuf.Size;                    
 8004180:	29 62 00 88 	lw r2,(r11+136)                                
 8004184:	35 e1 00 01 	addi r1,r15,1                                  
 8004188:	f8 00 7b 7d 	calli 8022f7c <__umodsi3>                      
 800418c:	b8 20 78 00 	mv r15,r1                                      
    rtems_interrupt_disable (level);                                  
 8004190:	90 00 20 00 	rcsr r4,IE                                     
 8004194:	a0 8d 08 00 	and r1,r4,r13                                  
 8004198:	d0 01 00 00 	wcsr IE,r1                                     
    while (newHead == tty->rawOutBuf.Tail) {                          
 800419c:	29 6c 00 84 	lw r12,(r11+132)                               
 80041a0:	5d 8f 00 0d 	bne r12,r15,80041d4 <rtems_termios_puts+0xa8>  
      tty->rawOutBufState = rob_wait;                                 
 80041a4:	59 6e 00 94 	sw (r11+148),r14                               
      rtems_interrupt_enable (level);                                 
 80041a8:	d0 04 00 00 	wcsr IE,r4                                     
      sc = rtems_semaphore_obtain(                                    
 80041ac:	29 61 00 8c 	lw r1,(r11+140)                                
 80041b0:	34 02 00 00 	mvi r2,0                                       
 80041b4:	34 03 00 00 	mvi r3,0                                       
 80041b8:	f8 00 07 e9 	calli 800615c <rtems_semaphore_obtain>         
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
 80041bc:	5c 20 00 34 	bne r1,r0,800428c <rtems_termios_puts+0x160>   <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
 80041c0:	90 00 20 00 	rcsr r4,IE                                     
 80041c4:	a0 8d 28 00 	and r5,r4,r13                                  
 80041c8:	d0 05 00 00 	wcsr IE,r5                                     
     * 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) {                          
 80041cc:	29 65 00 84 	lw r5,(r11+132)                                
 80041d0:	44 ac ff f5 	be r5,r12,80041a4 <rtems_termios_puts+0x78>    <== NEVER TAKEN
        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++;              
 80041d4:	29 61 00 80 	lw r1,(r11+128)                                
 80041d8:	29 63 00 7c 	lw r3,(r11+124)                                
 80041dc:	42 02 00 00 	lbu r2,(r16+0)                                 
 80041e0:	b4 61 08 00 	add r1,r3,r1                                   
 80041e4:	30 22 00 00 	sb (r1+0),r2                                   
    tty->rawOutBuf.Head = newHead;                                    
    if (tty->rawOutBufState == rob_idle) {                            
 80041e8:	29 61 00 94 	lw r1,(r11+148)                                
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
    }                                                                 
    tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;              
    tty->rawOutBuf.Head = newHead;                                    
 80041ec:	59 6f 00 80 	sw (r11+128),r15                               
    if (tty->rawOutBufState == rob_idle) {                            
 80041f0:	5c 20 00 08 	bne r1,r0,8004210 <rtems_termios_puts+0xe4>    
      /* check, whether XOFF has been received */                     
      if (!(tty->flow_ctrl & FL_ORCVXOF)) {                           
 80041f4:	29 62 00 b8 	lw r2,(r11+184)                                
 80041f8:	20 42 00 10 	andi r2,r2,0x10                                
 80041fc:	44 41 00 0a 	be r2,r1,8004224 <rtems_termios_puts+0xf8>     <== ALWAYS TAKEN
        (*tty->device.write)(tty->minor,                              
      (char *)&tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);         
      } else {                                                        
        /* remember that output has been stopped due to flow ctrl*/   
        tty->flow_ctrl |= FL_OSTOP;                                   
 8004200:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8004204:	38 21 00 20 	ori r1,r1,0x20                                 <== NOT EXECUTED
 8004208:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
      }                                                               
      tty->rawOutBufState = rob_busy;                                 
 800420c:	59 72 00 94 	sw (r11+148),r18                               
    }                                                                 
    rtems_interrupt_enable (level);                                   
 8004210:	d0 04 00 00 	wcsr IE,r4                                     
    len--;                                                            
 8004214:	36 31 ff ff 	addi r17,r17,-1                                
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
    (*tty->device.write)(tty->minor, (void *)buf, len);               
    return;                                                           
  }                                                                   
  newHead = tty->rawOutBuf.Head;                                      
  while (len) {                                                       
 8004218:	46 20 00 12 	be r17,r0,8004260 <rtems_termios_puts+0x134>   
        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++;              
 800421c:	36 10 00 01 	addi r16,r16,1                                 
 8004220:	e3 ff ff d8 	bi 8004180 <rtems_termios_puts+0x54>           
    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,                              
 8004224:	29 63 00 7c 	lw r3,(r11+124)                                
      (char *)&tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);         
 8004228:	29 62 00 84 	lw r2,(r11+132)                                
    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)(tty->minor,                              
 800422c:	29 65 00 a4 	lw r5,(r11+164)                                
 8004230:	29 61 00 10 	lw r1,(r11+16)                                 
 8004234:	b4 62 10 00 	add r2,r3,r2                                   
 8004238:	5b 84 00 28 	sw (sp+40),r4                                  
 800423c:	34 03 00 01 	mvi r3,1                                       
 8004240:	d8 a0 00 00 	call r5                                        
 8004244:	2b 84 00 28 	lw r4,(sp+40)                                  
 8004248:	e3 ff ff f1 	bi 800420c <rtems_termios_puts+0xe0>           
  unsigned int newHead;                                               
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
    (*tty->device.write)(tty->minor, (void *)buf, len);               
 800424c:	29 64 00 a4 	lw r4,(r11+164)                                
 8004250:	29 61 00 10 	lw r1,(r11+16)                                 
 8004254:	b8 60 10 00 	mv r2,r3                                       
 8004258:	ba 20 18 00 	mv r3,r17                                      
 800425c:	d8 80 00 00 	call r4                                        
      tty->rawOutBufState = rob_busy;                                 
    }                                                                 
    rtems_interrupt_enable (level);                                   
    len--;                                                            
  }                                                                   
}                                                                     
 8004260:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004264:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8004268:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800426c:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8004270:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8004274:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8004278:	2b 90 00 10 	lw r16,(sp+16)                                 
 800427c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8004280:	2b 92 00 08 	lw r18,(sp+8)                                  
 8004284:	37 9c 00 28 	addi sp,sp,40                                  
 8004288:	c3 a0 00 00 	ret                                            
      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);                              
 800428c:	f8 00 0a 15 	calli 8006ae0 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08004a4c <rtems_termios_read>: return RTEMS_SUCCESSFUL; } rtems_status_code rtems_termios_read (void *arg) {
 8004a4c:	37 9c ff cc 	addi sp,sp,-52                                 
 8004a50:	5b 8b 00 34 	sw (sp+52),r11                                 
 8004a54:	5b 8c 00 30 	sw (sp+48),r12                                 
 8004a58:	5b 8d 00 2c 	sw (sp+44),r13                                 
 8004a5c:	5b 8e 00 28 	sw (sp+40),r14                                 
 8004a60:	5b 8f 00 24 	sw (sp+36),r15                                 
 8004a64:	5b 90 00 20 	sw (sp+32),r16                                 
 8004a68:	5b 91 00 1c 	sw (sp+28),r17                                 
 8004a6c:	5b 92 00 18 	sw (sp+24),r18                                 
 8004a70:	5b 93 00 14 	sw (sp+20),r19                                 
 8004a74:	5b 94 00 10 	sw (sp+16),r20                                 
 8004a78:	5b 95 00 0c 	sw (sp+12),r21                                 
 8004a7c:	5b 96 00 08 	sw (sp+8),r22                                  
 8004a80:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004a84:	b8 20 88 00 	mv r17,r1                                      
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8004a88:	28 21 00 00 	lw r1,(r1+0)                                   
  uint32_t   count = args->count;                                     
  char      *buffer = args->buffer;                                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8004a8c:	34 02 00 00 	mvi r2,0                                       
 8004a90:	34 03 00 00 	mvi r3,0                                       
                                                                      
rtems_status_code                                                     
rtems_termios_read (void *arg)                                        
{                                                                     
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8004a94:	28 2b 00 38 	lw r11,(r1+56)                                 
  uint32_t   count = args->count;                                     
 8004a98:	2a 2f 00 14 	lw r15,(r17+20)                                
  char      *buffer = args->buffer;                                   
 8004a9c:	2a 30 00 10 	lw r16,(r17+16)                                
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8004aa0:	29 61 00 14 	lw r1,(r11+20)                                 
 8004aa4:	f8 00 05 ae 	calli 800615c <rtems_semaphore_obtain>         
 8004aa8:	b8 20 90 00 	mv r18,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8004aac:	5c 20 00 13 	bne r1,r0,8004af8 <rtems_termios_read+0xac>    <== NEVER TAKEN
    return sc;                                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_read != NULL) {             
 8004ab0:	29 63 00 cc 	lw r3,(r11+204)                                
 8004ab4:	78 01 08 02 	mvhi r1,0x802                                  
 8004ab8:	38 21 67 a4 	ori r1,r1,0x67a4                               
 8004abc:	b4 63 18 00 	add r3,r3,r3                                   
 8004ac0:	b4 63 18 00 	add r3,r3,r3                                   
 8004ac4:	b4 63 18 00 	add r3,r3,r3                                   
 8004ac8:	b4 63 18 00 	add r3,r3,r3                                   
 8004acc:	b4 63 18 00 	add r3,r3,r3                                   
 8004ad0:	b4 23 18 00 	add r3,r1,r3                                   
 8004ad4:	28 63 00 08 	lw r3,(r3+8)                                   
 8004ad8:	44 72 00 18 	be r3,r18,8004b38 <rtems_termios_read+0xec>    
    sc = rtems_termios_linesw[tty->t_line].l_read(tty,args);          
 8004adc:	b9 60 08 00 	mv r1,r11                                      
 8004ae0:	ba 20 10 00 	mv r2,r17                                      
 8004ae4:	d8 60 00 00 	call r3                                        
 8004ae8:	b8 20 90 00 	mv r18,r1                                      
    tty->tty_rcvwakeup = 0;                                           
    rtems_semaphore_release (tty->isem);                              
 8004aec:	29 61 00 14 	lw r1,(r11+20)                                 
  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);          
    tty->tty_rcvwakeup = 0;                                           
 8004af0:	59 60 00 e4 	sw (r11+228),r0                                
    rtems_semaphore_release (tty->isem);                              
 8004af4:	f8 00 05 f6 	calli 80062cc <rtems_semaphore_release>        
  }                                                                   
  args->bytes_moved = args->count - count;                            
  tty->tty_rcvwakeup = 0;                                             
  rtems_semaphore_release (tty->isem);                                
  return sc;                                                          
}                                                                     
 8004af8:	ba 40 08 00 	mv r1,r18                                      
 8004afc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004b00:	2b 8b 00 34 	lw r11,(sp+52)                                 
 8004b04:	2b 8c 00 30 	lw r12,(sp+48)                                 
 8004b08:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 8004b0c:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8004b10:	2b 8f 00 24 	lw r15,(sp+36)                                 
 8004b14:	2b 90 00 20 	lw r16,(sp+32)                                 
 8004b18:	2b 91 00 1c 	lw r17,(sp+28)                                 
 8004b1c:	2b 92 00 18 	lw r18,(sp+24)                                 
 8004b20:	2b 93 00 14 	lw r19,(sp+20)                                 
 8004b24:	2b 94 00 10 	lw r20,(sp+16)                                 
 8004b28:	2b 95 00 0c 	lw r21,(sp+12)                                 
 8004b2c:	2b 96 00 08 	lw r22,(sp+8)                                  
 8004b30:	37 9c 00 34 	addi sp,sp,52                                  
 8004b34:	c3 a0 00 00 	ret                                            
    tty->tty_rcvwakeup = 0;                                           
    rtems_semaphore_release (tty->isem);                              
    return sc;                                                        
  }                                                                   
                                                                      
  if (tty->cindex == tty->ccount) {                                   
 8004b38:	29 62 00 24 	lw r2,(r11+36)                                 
 8004b3c:	29 61 00 20 	lw r1,(r11+32)                                 
 8004b40:	44 41 00 15 	be r2,r1,8004b94 <rtems_termios_read+0x148>    <== ALWAYS TAKEN
      sc = fillBufferQueue (tty);                                     
                                                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      tty->cindex = tty->ccount = 0;                                  
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
 8004b44:	45 e0 00 0d 	be r15,r0,8004b78 <rtems_termios_read+0x12c>   <== NEVER TAKEN
 8004b48:	29 63 00 24 	lw r3,(r11+36)                                 
 8004b4c:	29 61 00 20 	lw r1,(r11+32)                                 
 8004b50:	4c 61 00 0a 	bge r3,r1,8004b78 <rtems_termios_read+0x12c>   
    *buffer++ = tty->cbuf[tty->cindex++];                             
 8004b54:	29 62 00 1c 	lw r2,(r11+28)                                 
    count--;                                                          
 8004b58:	35 ef ff ff 	addi r15,r15,-1                                
                                                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      tty->cindex = tty->ccount = 0;                                  
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
    *buffer++ = tty->cbuf[tty->cindex++];                             
 8004b5c:	b4 43 10 00 	add r2,r2,r3                                   
 8004b60:	40 41 00 00 	lbu r1,(r2+0)                                  
 8004b64:	34 63 00 01 	addi r3,r3,1                                   
 8004b68:	32 01 00 00 	sb (r16+0),r1                                  
 8004b6c:	59 63 00 24 	sw (r11+36),r3                                 
 8004b70:	36 10 00 01 	addi r16,r16,1                                 
      sc = fillBufferQueue (tty);                                     
                                                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      tty->cindex = tty->ccount = 0;                                  
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
 8004b74:	5d e0 ff f6 	bne r15,r0,8004b4c <rtems_termios_read+0x100>  
    *buffer++ = tty->cbuf[tty->cindex++];                             
    count--;                                                          
  }                                                                   
  args->bytes_moved = args->count - count;                            
 8004b78:	2a 22 00 14 	lw r2,(r17+20)                                 
  tty->tty_rcvwakeup = 0;                                             
  rtems_semaphore_release (tty->isem);                                
 8004b7c:	29 61 00 14 	lw r1,(r11+20)                                 
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
    *buffer++ = tty->cbuf[tty->cindex++];                             
    count--;                                                          
  }                                                                   
  args->bytes_moved = args->count - count;                            
 8004b80:	c8 4f 78 00 	sub r15,r2,r15                                 
 8004b84:	5a 2f 00 1c 	sw (r17+28),r15                                
  tty->tty_rcvwakeup = 0;                                             
 8004b88:	59 60 00 e4 	sw (r11+228),r0                                
  rtems_semaphore_release (tty->isem);                                
 8004b8c:	f8 00 05 d0 	calli 80062cc <rtems_semaphore_release>        
  return sc;                                                          
 8004b90:	e3 ff ff da 	bi 8004af8 <rtems_termios_read+0xac>           
    return sc;                                                        
  }                                                                   
                                                                      
  if (tty->cindex == tty->ccount) {                                   
    tty->cindex = tty->ccount = 0;                                    
    tty->read_start_column = tty->column;                             
 8004b94:	29 61 00 28 	lw r1,(r11+40)                                 
    if (tty->device.pollRead != NULL &&                               
 8004b98:	29 62 00 a0 	lw r2,(r11+160)                                
    rtems_semaphore_release (tty->isem);                              
    return sc;                                                        
  }                                                                   
                                                                      
  if (tty->cindex == tty->ccount) {                                   
    tty->cindex = tty->ccount = 0;                                    
 8004b9c:	59 60 00 20 	sw (r11+32),r0                                 
 8004ba0:	59 60 00 24 	sw (r11+36),r0                                 
    tty->read_start_column = tty->column;                             
 8004ba4:	59 61 00 2c 	sw (r11+44),r1                                 
    if (tty->device.pollRead != NULL &&                               
 8004ba8:	44 40 00 03 	be r2,r0,8004bb4 <rtems_termios_read+0x168>    
 8004bac:	29 61 00 b4 	lw r1,(r11+180)                                
 8004bb0:	44 20 00 5d 	be r1,r0,8004d24 <rtems_termios_read+0x2d8>    
 * Fill the input buffer from the raw input queue                     
 */                                                                   
static rtems_status_code                                              
fillBufferQueue (struct rtems_termios_tty *tty)                       
{                                                                     
  rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;        
 8004bb4:	29 6e 00 74 	lw r14,(r11+116)                               
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
                       (tty->ccount < (CBUFSIZE-1))) {                
 8004bb8:	78 0c 08 02 	mvhi r12,0x802                                 
static rtems_status_code                                              
fillBufferQueue (struct rtems_termios_tty *tty)                       
{                                                                     
  rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;        
  rtems_status_code sc;                                               
  int               wait = (int)1;                                    
 8004bbc:	34 0d 00 01 	mvi r13,1                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
                       (tty->ccount < (CBUFSIZE-1))) {                
 8004bc0:	39 8c 61 8c 	ori r12,r12,0x618c                             
      c = tty->rawInBuf.theBuf[newHead];                              
      tty->rawInBuf.Head = newHead;                                   
      if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)             
          % tty->rawInBuf.Size)                                       
         < tty->lowwater) {                                           
        tty->flow_ctrl &= ~FL_IREQXOF;                                
 8004bc4:	34 14 ff fe 	mvi r20,-2                                     
        /* if tx stopped and XON should be sent... */                 
        if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))               
 8004bc8:	34 13 02 02 	mvi r19,514                                    
          || (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;                              
 8004bcc:	34 15 ff fb 	mvi r21,-5                                     
        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)(                                       
 8004bd0:	35 76 00 49 	addi r22,r11,73                                
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8004bd4:	29 63 00 5c 	lw r3,(r11+92)                                 
 8004bd8:	29 61 00 60 	lw r1,(r11+96)                                 
 8004bdc:	44 61 00 05 	be r3,r1,8004bf0 <rtems_termios_read+0x1a4>    
                       (tty->ccount < (CBUFSIZE-1))) {                
 8004be0:	29 81 00 00 	lw r1,(r12+0)                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8004be4:	29 62 00 20 	lw r2,(r11+32)                                 
                       (tty->ccount < (CBUFSIZE-1))) {                
 8004be8:	34 21 ff ff 	addi r1,r1,-1                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8004bec:	48 22 00 08 	bg r1,r2,8004c0c <rtems_termios_read+0x1c0>    <== ALWAYS TAKEN
    }                                                                 
                                                                      
    /*                                                                
     * Wait for characters                                            
     */                                                               
    if ( wait ) {                                                     
 8004bf0:	45 a0 ff d5 	be r13,r0,8004b44 <rtems_termios_read+0xf8>    
      sc = rtems_semaphore_obtain(                                    
 8004bf4:	29 61 00 68 	lw r1,(r11+104)                                
 8004bf8:	29 62 00 6c 	lw r2,(r11+108)                                
 8004bfc:	b9 c0 18 00 	mv r3,r14                                      
 8004c00:	f8 00 05 57 	calli 800615c <rtems_semaphore_obtain>         
        tty->rawInBuf.Semaphore, tty->rawInBufSemaphoreOptions, timeout);
      if (sc != RTEMS_SUCCESSFUL)                                     
 8004c04:	44 20 ff f4 	be r1,r0,8004bd4 <rtems_termios_read+0x188>    <== ALWAYS TAKEN
 8004c08:	e3 ff ff cf 	bi 8004b44 <rtems_termios_read+0xf8>           <== NOT EXECUTED
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
                       (tty->ccount < (CBUFSIZE-1))) {                
      unsigned char c;                                                
      unsigned int newHead;                                           
                                                                      
      newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;        
 8004c0c:	29 63 00 5c 	lw r3,(r11+92)                                 
 8004c10:	29 62 00 64 	lw r2,(r11+100)                                
 8004c14:	34 61 00 01 	addi r1,r3,1                                   
 8004c18:	f8 00 78 d9 	calli 8022f7c <__umodsi3>                      
      c = tty->rawInBuf.theBuf[newHead];                              
 8004c1c:	29 64 00 58 	lw r4,(r11+88)                                 
 8004c20:	b4 81 20 00 	add r4,r4,r1                                   
 8004c24:	40 8e 00 00 	lbu r14,(r4+0)                                 
      tty->rawInBuf.Head = newHead;                                   
 8004c28:	59 61 00 5c 	sw (r11+92),r1                                 
      if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)             
 8004c2c:	29 64 00 60 	lw r4,(r11+96)                                 
 8004c30:	29 65 00 64 	lw r5,(r11+100)                                
          % tty->rawInBuf.Size)                                       
 8004c34:	29 62 00 64 	lw r2,(r11+100)                                
      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)             
 8004c38:	b4 a4 20 00 	add r4,r5,r4                                   
          % tty->rawInBuf.Size)                                       
 8004c3c:	c8 81 08 00 	sub r1,r4,r1                                   
 8004c40:	f8 00 78 cf 	calli 8022f7c <__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)             
 8004c44:	29 63 00 bc 	lw r3,(r11+188)                                
 8004c48:	50 23 00 11 	bgeu r1,r3,8004c8c <rtems_termios_read+0x240>  <== NEVER TAKEN
          % tty->rawInBuf.Size)                                       
         < tty->lowwater) {                                           
        tty->flow_ctrl &= ~FL_IREQXOF;                                
 8004c4c:	29 63 00 b8 	lw r3,(r11+184)                                
 8004c50:	a0 74 18 00 	and r3,r3,r20                                  
 8004c54:	59 63 00 b8 	sw (r11+184),r3                                
        /* if tx stopped and XON should be sent... */                 
        if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))               
 8004c58:	29 63 00 b8 	lw r3,(r11+184)                                
 8004c5c:	20 63 02 02 	andi r3,r3,0x202                               
 8004c60:	44 73 00 26 	be r3,r19,8004cf8 <rtems_termios_read+0x2ac>   <== NEVER TAKEN
            && ((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) {                       
 8004c64:	29 63 00 b8 	lw r3,(r11+184)                                
 8004c68:	20 63 01 00 	andi r3,r3,0x100                               
 8004c6c:	44 60 00 08 	be r3,r0,8004c8c <rtems_termios_read+0x240>    <== ALWAYS TAKEN
          tty->flow_ctrl &= ~FL_IRTSOFF;                              
 8004c70:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
          /* activate RTS line */                                     
          if (tty->device.startRemoteTx != NULL) {                    
 8004c74:	29 63 00 b0 	lw r3,(r11+176)                                <== 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;                              
 8004c78:	a0 35 08 00 	and r1,r1,r21                                  <== NOT EXECUTED
 8004c7c:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
          /* activate RTS line */                                     
          if (tty->device.startRemoteTx != NULL) {                    
 8004c80:	44 60 00 03 	be r3,r0,8004c8c <rtems_termios_read+0x240>    <== NOT EXECUTED
            tty->device.startRemoteTx(tty->minor);                    
 8004c84:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8004c88:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
          }                                                           
        }                                                             
      }                                                               
                                                                      
      /* continue processing new character */                         
      if (tty->termios.c_lflag & ICANON) {                            
 8004c8c:	29 63 00 3c 	lw r3,(r11+60)                                 
 8004c90:	20 63 00 02 	andi r3,r3,0x2                                 
 8004c94:	44 60 00 10 	be r3,r0,8004cd4 <rtems_termios_read+0x288>    <== NEVER TAKEN
        if (siproc (c, tty))                                          
 8004c98:	b9 c0 08 00 	mv r1,r14                                      
 8004c9c:	b9 60 10 00 	mv r2,r11                                      
 8004ca0:	fb ff ff 05 	calli 80048b4 <siproc>                         
          wait = 0;                                                   
 8004ca4:	64 23 00 00 	cmpei r3,r1,0                                  
 8004ca8:	c8 03 18 00 	sub r3,r0,r3                                   
 8004cac:	a1 a3 68 00 	and r13,r13,r3                                 
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8004cb0:	29 65 00 5c 	lw r5,(r11+92)                                 
 8004cb4:	29 64 00 60 	lw r4,(r11+96)                                 
      } else {                                                        
        siproc (c, tty);                                              
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
          wait = 0;                                                   
      }                                                               
      timeout = tty->rawInBufSemaphoreTimeout;                        
 8004cb8:	29 6e 00 70 	lw r14,(r11+112)                               
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8004cbc:	44 a4 ff cd 	be r5,r4,8004bf0 <rtems_termios_read+0x1a4>    
                       (tty->ccount < (CBUFSIZE-1))) {                
 8004cc0:	29 84 00 00 	lw r4,(r12+0)                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8004cc4:	29 63 00 20 	lw r3,(r11+32)                                 
                       (tty->ccount < (CBUFSIZE-1))) {                
 8004cc8:	34 84 ff ff 	addi r4,r4,-1                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8004ccc:	48 83 ff d0 	bg r4,r3,8004c0c <rtems_termios_read+0x1c0>    <== ALWAYS TAKEN
 8004cd0:	e3 ff ff c8 	bi 8004bf0 <rtems_termios_read+0x1a4>          <== NOT EXECUTED
      /* continue processing new character */                         
      if (tty->termios.c_lflag & ICANON) {                            
        if (siproc (c, tty))                                          
          wait = 0;                                                   
      } else {                                                        
        siproc (c, tty);                                              
 8004cd4:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8004cd8:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8004cdc:	fb ff fe f6 	calli 80048b4 <siproc>                         <== NOT EXECUTED
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
 8004ce0:	41 63 00 47 	lbu r3,(r11+71)                                <== NOT EXECUTED
 8004ce4:	29 61 00 20 	lw r1,(r11+32)                                 <== NOT EXECUTED
          wait = 0;                                                   
 8004ce8:	e8 61 18 00 	cmpg r3,r3,r1                                  <== NOT EXECUTED
 8004cec:	c8 03 18 00 	sub r3,r0,r3                                   <== NOT EXECUTED
 8004cf0:	a1 a3 68 00 	and r13,r13,r3                                 <== NOT EXECUTED
 8004cf4:	e3 ff ff ef 	bi 8004cb0 <rtems_termios_read+0x264>          <== 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)                     
 8004cf8:	29 61 00 94 	lw r1,(r11+148)                                <== NOT EXECUTED
 8004cfc:	44 20 00 04 	be r1,r0,8004d0c <rtems_termios_read+0x2c0>    <== NOT EXECUTED
          || (tty->flow_ctrl & FL_OSTOP))) {                          
 8004d00:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8004d04:	20 21 00 20 	andi r1,r1,0x20                                <== NOT EXECUTED
 8004d08:	44 20 ff d7 	be r1,r0,8004c64 <rtems_termios_read+0x218>    <== NOT EXECUTED
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
 8004d0c:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 8004d10:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8004d14:	ba c0 10 00 	mv r2,r22                                      <== NOT EXECUTED
 8004d18:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8004d1c:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
 8004d20:	e3 ff ff db 	bi 8004c8c <rtems_termios_read+0x240>          <== NOT EXECUTED
static rtems_status_code                                              
fillBufferPoll (struct rtems_termios_tty *tty)                        
{                                                                     
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
 8004d24:	29 61 00 3c 	lw r1,(r11+60)                                 
 8004d28:	20 21 00 02 	andi r1,r1,0x2                                 
 8004d2c:	44 20 00 14 	be r1,r0,8004d7c <rtems_termios_read+0x330>    
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
 8004d30:	29 61 00 10 	lw r1,(r11+16)                                 
 8004d34:	d8 40 00 00 	call r2                                        
 8004d38:	b8 20 18 00 	mv r3,r1                                       
      if (n < 0) {                                                    
        rtems_task_wake_after (1);                                    
      } else {                                                        
        if  (siproc (n, tty))                                         
 8004d3c:	b9 60 10 00 	mv r2,r11                                      
 8004d40:	20 21 00 ff 	andi r1,r1,0xff                                
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
      if (n < 0) {                                                    
 8004d44:	4c 60 00 21 	bge r3,r0,8004dc8 <rtems_termios_read+0x37c>   
        rtems_task_wake_after (1);                                    
 8004d48:	34 01 00 01 	mvi r1,1                                       
 8004d4c:	f8 00 06 70 	calli 800670c <rtems_task_wake_after>          
static rtems_status_code                                              
fillBufferPoll (struct rtems_termios_tty *tty)                        
{                                                                     
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
 8004d50:	29 62 00 a0 	lw r2,(r11+160)                                
 8004d54:	e3 ff ff f7 	bi 8004d30 <rtems_termios_read+0x2e4>          
            break;                                                    
          }                                                           
        }                                                             
        rtems_task_wake_after (1);                                    
      } else {                                                        
        siproc (n, tty);                                              
 8004d58:	b9 60 10 00 	mv r2,r11                                      
 8004d5c:	20 21 00 ff 	andi r1,r1,0xff                                
 8004d60:	fb ff fe d5 	calli 80048b4 <siproc>                         
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
 8004d64:	41 62 00 47 	lbu r2,(r11+71)                                
 8004d68:	29 61 00 20 	lw r1,(r11+32)                                 
 8004d6c:	4c 22 ff 76 	bge r1,r2,8004b44 <rtems_termios_read+0xf8>    <== NEVER TAKEN
          break;                                                      
        if (tty->termios.c_cc[VMIN] && tty->termios.c_cc[VTIME])      
 8004d70:	44 40 00 05 	be r2,r0,8004d84 <rtems_termios_read+0x338>    <== NEVER TAKEN
 8004d74:	41 61 00 46 	lbu r1,(r11+70)                                
 8004d78:	44 20 00 03 	be r1,r0,8004d84 <rtems_termios_read+0x338>    <== NEVER TAKEN
      }                                                               
    }                                                                 
  } else {                                                            
    rtems_interval then, now;                                         
                                                                      
    then = rtems_clock_get_ticks_since_boot();                        
 8004d7c:	f8 00 02 fa 	calli 8005964 <rtems_clock_get_ticks_since_boot>
 8004d80:	b8 20 60 00 	mv r12,r1                                      
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
 8004d84:	29 62 00 a0 	lw r2,(r11+160)                                
 8004d88:	29 61 00 10 	lw r1,(r11+16)                                 
 8004d8c:	d8 40 00 00 	call r2                                        
      if (n < 0) {                                                    
 8004d90:	4c 20 ff f2 	bge r1,r0,8004d58 <rtems_termios_read+0x30c>   
        if (tty->termios.c_cc[VMIN]) {                                
 8004d94:	41 62 00 47 	lbu r2,(r11+71)                                
 8004d98:	44 40 00 10 	be r2,r0,8004dd8 <rtems_termios_read+0x38c>    <== NEVER TAKEN
          if (tty->termios.c_cc[VTIME] && tty->ccount) {              
 8004d9c:	41 61 00 46 	lbu r1,(r11+70)                                
 8004da0:	44 20 00 03 	be r1,r0,8004dac <rtems_termios_read+0x360>    <== NEVER TAKEN
 8004da4:	29 61 00 20 	lw r1,(r11+32)                                 
 8004da8:	5c 20 00 0e 	bne r1,r0,8004de0 <rtems_termios_read+0x394>   
          now = rtems_clock_get_ticks_since_boot();                   
          if ((now - then) > tty->vtimeTicks) {                       
            break;                                                    
          }                                                           
        }                                                             
        rtems_task_wake_after (1);                                    
 8004dac:	34 01 00 01 	mvi r1,1                                       
 8004db0:	f8 00 06 57 	calli 800670c <rtems_task_wake_after>          
  } else {                                                            
    rtems_interval then, now;                                         
                                                                      
    then = rtems_clock_get_ticks_since_boot();                        
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
 8004db4:	29 62 00 a0 	lw r2,(r11+160)                                
 8004db8:	29 61 00 10 	lw r1,(r11+16)                                 
 8004dbc:	d8 40 00 00 	call r2                                        
      if (n < 0) {                                                    
 8004dc0:	4c 20 ff e6 	bge r1,r0,8004d58 <rtems_termios_read+0x30c>   
 8004dc4:	e3 ff ff f4 	bi 8004d94 <rtems_termios_read+0x348>          
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
      if (n < 0) {                                                    
        rtems_task_wake_after (1);                                    
      } else {                                                        
        if  (siproc (n, tty))                                         
 8004dc8:	fb ff fe bb 	calli 80048b4 <siproc>                         
 8004dcc:	5c 20 ff 5e 	bne r1,r0,8004b44 <rtems_termios_read+0xf8>    
static rtems_status_code                                              
fillBufferPoll (struct rtems_termios_tty *tty)                        
{                                                                     
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
 8004dd0:	29 62 00 a0 	lw r2,(r11+160)                                
 8004dd4:	e3 ff ff d7 	bi 8004d30 <rtems_termios_read+0x2e4>          
            if ((now - then) > tty->vtimeTicks) {                     
              break;                                                  
            }                                                         
          }                                                           
        } else {                                                      
          if (!tty->termios.c_cc[VTIME])                              
 8004dd8:	41 61 00 46 	lbu r1,(r11+70)                                <== NOT EXECUTED
 8004ddc:	44 22 ff 5a 	be r1,r2,8004b44 <rtems_termios_read+0xf8>     <== NOT EXECUTED
            break;                                                    
          now = rtems_clock_get_ticks_since_boot();                   
 8004de0:	f8 00 02 e1 	calli 8005964 <rtems_clock_get_ticks_since_boot>
          if ((now - then) > tty->vtimeTicks) {                       
 8004de4:	29 62 00 54 	lw r2,(r11+84)                                 
 8004de8:	c8 2c 08 00 	sub r1,r1,r12                                  
 8004dec:	54 22 ff 56 	bgu r1,r2,8004b44 <rtems_termios_read+0xf8>    
 8004df0:	e3 ff ff ef 	bi 8004dac <rtems_termios_read+0x360>          
                                                                      

08005204 <rtems_termios_refill_transmitter>: * in task-driven mode, this function is called in Tx task context * in interrupt-driven mode, this function is called in TxIRQ context */ int rtems_termios_refill_transmitter (struct rtems_termios_tty *tty) {
 8005204:	37 9c ff f0 	addi sp,sp,-16                                 
 8005208:	5b 8b 00 10 	sw (sp+16),r11                                 
 800520c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8005210:	5b 8d 00 08 	sw (sp+8),r13                                  
 8005214:	5b 9d 00 04 	sw (sp+4),ra                                   
  int nToSend;                                                        
  rtems_interrupt_level level;                                        
  int len;                                                            
                                                                      
  /* check for XOF/XON to send */                                     
  if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))         
 8005218:	28 22 00 b8 	lw r2,(r1+184)                                 
 * in task-driven mode, this function is called in Tx task context    
 * in interrupt-driven mode, this function is called in TxIRQ context 
 */                                                                   
int                                                                   
rtems_termios_refill_transmitter (struct rtems_termios_tty *tty)      
{                                                                     
 800521c:	b8 20 58 00 	mv r11,r1                                      
  int nToSend;                                                        
  rtems_interrupt_level level;                                        
  int len;                                                            
                                                                      
  /* check for XOF/XON to send */                                     
  if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))         
 8005220:	34 01 04 01 	mvi r1,1025                                    
 8005224:	20 42 04 03 	andi r2,r2,0x403                               
 8005228:	44 41 00 50 	be r2,r1,8005368 <rtems_termios_refill_transmitter+0x164><== NEVER TAKEN
    tty->flow_ctrl |= FL_ISNTXOF;                                     
    rtems_interrupt_enable(level);                                    
                                                                      
    nToSend = 1;                                                      
                                                                      
  } else if ((tty->flow_ctrl & (FL_IREQXOF | FL_ISNTXOF)) == FL_ISNTXOF) {
 800522c:	29 62 00 b8 	lw r2,(r11+184)                                
 8005230:	34 01 00 02 	mvi r1,2                                       
 8005234:	20 42 00 03 	andi r2,r2,0x3                                 
 8005238:	44 41 00 64 	be r2,r1,80053c8 <rtems_termios_refill_transmitter+0x1c4><== NEVER TAKEN
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
    rtems_interrupt_enable(level);                                    
                                                                      
    nToSend = 1;                                                      
  } else {                                                            
    if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {               
 800523c:	29 63 00 80 	lw r3,(r11+128)                                
 8005240:	29 62 00 84 	lw r2,(r11+132)                                
 8005244:	44 62 00 1c 	be r3,r2,80052b4 <rtems_termios_refill_transmitter+0xb0>
        rtems_semaphore_release (tty->rawOutBuf.Semaphore);           
      }                                                               
      return 0;                                                       
    }                                                                 
                                                                      
    rtems_interrupt_disable(level);                                   
 8005248:	90 00 10 00 	rcsr r2,IE                                     
 800524c:	34 01 ff fe 	mvi r1,-2                                      
 8005250:	a0 41 08 00 	and r1,r2,r1                                   
 8005254:	d0 01 00 00 	wcsr IE,r1                                     
    len = tty->t_dqlen;                                               
 8005258:	29 63 00 90 	lw r3,(r11+144)                                
    tty->t_dqlen = 0;                                                 
 800525c:	59 60 00 90 	sw (r11+144),r0                                
    rtems_interrupt_enable(level);                                    
 8005260:	d0 02 00 00 	wcsr IE,r2                                     
                                                                      
    newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;      
 8005264:	29 61 00 84 	lw r1,(r11+132)                                
 8005268:	29 62 00 88 	lw r2,(r11+136)                                
 800526c:	b4 61 08 00 	add r1,r3,r1                                   
 8005270:	f8 00 77 43 	calli 8022f7c <__umodsi3>                      
    tty->rawOutBuf.Tail = newTail;                                    
    if (tty->rawOutBufState == rob_wait) {                            
 8005274:	29 62 00 94 	lw r2,(r11+148)                                
    rtems_interrupt_disable(level);                                   
    len = tty->t_dqlen;                                               
    tty->t_dqlen = 0;                                                 
    rtems_interrupt_enable(level);                                    
                                                                      
    newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;      
 8005278:	b8 20 60 00 	mv r12,r1                                      
    tty->rawOutBuf.Tail = newTail;                                    
 800527c:	59 61 00 84 	sw (r11+132),r1                                
    if (tty->rawOutBufState == rob_wait) {                            
 8005280:	34 01 00 02 	mvi r1,2                                       
 8005284:	44 41 00 36 	be r2,r1,800535c <rtems_termios_refill_transmitter+0x158>
       * wake up any pending writer task                              
       */                                                             
      rtems_semaphore_release (tty->rawOutBuf.Semaphore);             
    }                                                                 
                                                                      
    if (newTail == tty->rawOutBuf.Head) {                             
 8005288:	29 61 00 80 	lw r1,(r11+128)                                
 800528c:	44 2c 00 14 	be r1,r12,80052dc <rtems_termios_refill_transmitter+0xd8>
      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))               
 8005290:	29 62 00 b8 	lw r2,(r11+184)                                
 8005294:	34 01 02 10 	mvi r1,528                                     
 8005298:	20 42 02 10 	andi r2,r2,0x210                               
 800529c:	44 41 00 64 	be r2,r1,800542c <rtems_termios_refill_transmitter+0x228><== NEVER TAKEN
      nToSend = 0;                                                    
    } else {                                                          
      /*                                                              
       * Buffer not empty, start tranmitter                           
       */                                                             
      if (newTail > tty->rawOutBuf.Head)                              
 80052a0:	29 61 00 80 	lw r1,(r11+128)                                
 80052a4:	50 2c 00 1d 	bgeu r1,r12,8005318 <rtems_termios_refill_transmitter+0x114>
        nToSend = tty->rawOutBuf.Size - newTail;                      
 80052a8:	29 6d 00 88 	lw r13,(r11+136)                               
 80052ac:	c9 ac 68 00 	sub r13,r13,r12                                
 80052b0:	e0 00 00 1c 	bi 8005320 <rtems_termios_refill_transmitter+0x11c>
  } else {                                                            
    if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {               
      /*                                                              
       * buffer was empty                                             
       */                                                             
      if (tty->rawOutBufState == rob_wait) {                          
 80052b4:	29 62 00 94 	lw r2,(r11+148)                                
        /*                                                            
         * this should never happen...                                
         */                                                           
        rtems_semaphore_release (tty->rawOutBuf.Semaphore);           
      }                                                               
      return 0;                                                       
 80052b8:	34 0d 00 00 	mvi r13,0                                      
  } else {                                                            
    if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {               
      /*                                                              
       * buffer was empty                                             
       */                                                             
      if (tty->rawOutBufState == rob_wait) {                          
 80052bc:	44 41 00 69 	be r2,r1,8005460 <rtems_termios_refill_transmitter+0x25c><== NEVER TAKEN
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
  }                                                                   
  return nToSend;                                                     
}                                                                     
 80052c0:	b9 a0 08 00 	mv r1,r13                                      
 80052c4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80052c8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80052cc:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80052d0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80052d4:	37 9c 00 10 	addi sp,sp,16                                  
 80052d8:	c3 a0 00 00 	ret                                            
      nToSend = 0;                                                    
                                                                      
      /*                                                              
       * check to see if snd wakeup callback was set                  
       */                                                             
      if ( tty->tty_snd.sw_pfn != NULL) {                             
 80052dc:	29 63 00 d4 	lw r3,(r11+212)                                
                                                                      
    if (newTail == tty->rawOutBuf.Head) {                             
      /*                                                              
       * Buffer has become empty                                      
       */                                                             
      tty->rawOutBufState = rob_idle;                                 
 80052e0:	59 60 00 94 	sw (r11+148),r0                                
      nToSend = 0;                                                    
 80052e4:	34 0d 00 00 	mvi r13,0                                      
                                                                      
      /*                                                              
       * check to see if snd wakeup callback was set                  
       */                                                             
      if ( tty->tty_snd.sw_pfn != NULL) {                             
 80052e8:	44 60 00 04 	be r3,r0,80052f8 <rtems_termios_refill_transmitter+0xf4><== ALWAYS TAKEN
        (*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);   
 80052ec:	29 62 00 d8 	lw r2,(r11+216)                                <== NOT EXECUTED
 80052f0:	35 61 00 30 	addi r1,r11,48                                 <== NOT EXECUTED
 80052f4:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
      }                                                               
      tty->rawOutBufState = rob_busy; /*apm*/                         
      (*tty->device.write)(                                           
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
 80052f8:	59 6c 00 84 	sw (r11+132),r12                               
  }                                                                   
  return nToSend;                                                     
}                                                                     
 80052fc:	b9 a0 08 00 	mv r1,r13                                      
 8005300:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005304:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8005308:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800530c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8005310:	37 9c 00 10 	addi sp,sp,16                                  
 8005314:	c3 a0 00 00 	ret                                            
       * Buffer not empty, start tranmitter                           
       */                                                             
      if (newTail > tty->rawOutBuf.Head)                              
        nToSend = tty->rawOutBuf.Size - newTail;                      
      else                                                            
        nToSend = tty->rawOutBuf.Head - newTail;                      
 8005318:	29 6d 00 80 	lw r13,(r11+128)                               
 800531c:	c9 ac 68 00 	sub r13,r13,r12                                
      /* 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)) {                   
 8005320:	29 61 00 b8 	lw r1,(r11+184)                                
 8005324:	b9 a0 18 00 	mv r3,r13                                      
 8005328:	20 21 06 00 	andi r1,r1,0x600                               
 800532c:	44 20 00 03 	be r1,r0,8005338 <rtems_termios_refill_transmitter+0x134>
 8005330:	34 03 00 01 	mvi r3,1                                       
        nToSend = 1;                                                  
 8005334:	34 0d 00 01 	mvi r13,1                                      
      }                                                               
      tty->rawOutBufState = rob_busy; /*apm*/                         
      (*tty->device.write)(                                           
 8005338:	29 62 00 7c 	lw r2,(r11+124)                                
 800533c:	29 65 00 a4 	lw r5,(r11+164)                                
 8005340:	29 61 00 10 	lw r1,(r11+16)                                 
      /* 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*/                         
 8005344:	34 04 00 01 	mvi r4,1                                       
 8005348:	59 64 00 94 	sw (r11+148),r4                                
      (*tty->device.write)(                                           
 800534c:	b4 4c 10 00 	add r2,r2,r12                                  
 8005350:	d8 a0 00 00 	call r5                                        
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
 8005354:	59 6c 00 84 	sw (r11+132),r12                               
 8005358:	e3 ff ff e9 	bi 80052fc <rtems_termios_refill_transmitter+0xf8>
    tty->rawOutBuf.Tail = newTail;                                    
    if (tty->rawOutBufState == rob_wait) {                            
      /*                                                              
       * wake up any pending writer task                              
       */                                                             
      rtems_semaphore_release (tty->rawOutBuf.Semaphore);             
 800535c:	29 61 00 8c 	lw r1,(r11+140)                                
 8005360:	f8 00 03 db 	calli 80062cc <rtems_semaphore_release>        
 8005364:	e3 ff ff c9 	bi 8005288 <rtems_termios_refill_transmitter+0x84>
                                                                      
  /* 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);
 8005368:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 800536c:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8005370:	35 62 00 4a 	addi r2,r11,74                                 <== NOT EXECUTED
 8005374:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8005378:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
                                                                      
    rtems_interrupt_disable(level);                                   
 800537c:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 8005380:	34 02 ff fe 	mvi r2,-2                                      <== NOT EXECUTED
 8005384:	a0 22 10 00 	and r2,r1,r2                                   <== NOT EXECUTED
 8005388:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
    tty->t_dqlen--;                                                   
 800538c:	29 63 00 90 	lw r3,(r11+144)                                <== NOT EXECUTED
    tty->flow_ctrl |= FL_ISNTXOF;                                     
 8005390:	29 62 00 b8 	lw r2,(r11+184)                                <== 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--;                                                   
 8005394:	34 63 ff ff 	addi r3,r3,-1                                  <== NOT EXECUTED
    tty->flow_ctrl |= FL_ISNTXOF;                                     
 8005398:	38 42 00 02 	ori r2,r2,0x2                                  <== 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--;                                                   
 800539c:	59 63 00 90 	sw (r11+144),r3                                <== NOT EXECUTED
    tty->flow_ctrl |= FL_ISNTXOF;                                     
 80053a0:	59 62 00 b8 	sw (r11+184),r2                                <== NOT EXECUTED
    rtems_interrupt_enable(level);                                    
 80053a4:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
                                                                      
    nToSend = 1;                                                      
 80053a8:	34 0d 00 01 	mvi r13,1                                      <== NOT EXECUTED
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
  }                                                                   
  return nToSend;                                                     
}                                                                     
 80053ac:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 80053b0:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80053b4:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 80053b8:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 80053bc:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 80053c0:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 80053c4:	c3 a0 00 00 	ret                                            <== 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);
 80053c8:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 80053cc:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 80053d0:	35 62 00 49 	addi r2,r11,73                                 <== NOT EXECUTED
 80053d4:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 80053d8:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
                                                                      
    rtems_interrupt_disable(level);                                   
 80053dc:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 80053e0:	34 02 ff fe 	mvi r2,-2                                      <== NOT EXECUTED
 80053e4:	a0 22 10 00 	and r2,r1,r2                                   <== NOT EXECUTED
 80053e8:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
    tty->t_dqlen--;                                                   
 80053ec:	29 63 00 90 	lw r3,(r11+144)                                <== NOT EXECUTED
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
 80053f0:	29 64 00 b8 	lw r4,(r11+184)                                <== NOT EXECUTED
 80053f4:	34 02 ff fd 	mvi r2,-3                                      <== 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--;                                                   
 80053f8:	34 63 ff ff 	addi r3,r3,-1                                  <== NOT EXECUTED
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
 80053fc:	a0 82 10 00 	and r2,r4,r2                                   <== 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--;                                                   
 8005400:	59 63 00 90 	sw (r11+144),r3                                <== NOT EXECUTED
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
 8005404:	59 62 00 b8 	sw (r11+184),r2                                <== NOT EXECUTED
    rtems_interrupt_enable(level);                                    
 8005408:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
                                                                      
    nToSend = 1;                                                      
 800540c:	34 0d 00 01 	mvi r13,1                                      <== NOT EXECUTED
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
  }                                                                   
  return nToSend;                                                     
}                                                                     
 8005410:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8005414:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8005418:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 800541c:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8005420:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 8005424:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 8005428:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    /* check, whether output should stop due to received XOFF */      
    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);                                 
 800542c:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 8005430:	34 02 ff fe 	mvi r2,-2                                      <== NOT EXECUTED
 8005434:	a0 22 10 00 	and r2,r1,r2                                   <== NOT EXECUTED
 8005438:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
      tty->flow_ctrl |= FL_OSTOP;                                     
 800543c:	29 62 00 b8 	lw r2,(r11+184)                                <== NOT EXECUTED
      tty->rawOutBufState = rob_busy; /*apm*/                         
 8005440:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8005444:	59 63 00 94 	sw (r11+148),r3                                <== 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;                                     
 8005448:	38 42 00 20 	ori r2,r2,0x20                                 <== NOT EXECUTED
 800544c:	59 62 00 b8 	sw (r11+184),r2                                <== NOT EXECUTED
      tty->rawOutBufState = rob_busy; /*apm*/                         
      rtems_interrupt_enable(level);                                  
 8005450:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
      nToSend = 0;                                                    
 8005454:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
      }                                                               
      tty->rawOutBufState = rob_busy; /*apm*/                         
      (*tty->device.write)(                                           
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
 8005458:	59 6c 00 84 	sw (r11+132),r12                               <== NOT EXECUTED
 800545c:	e3 ff ff a8 	bi 80052fc <rtems_termios_refill_transmitter+0xf8><== NOT EXECUTED
       */                                                             
      if (tty->rawOutBufState == rob_wait) {                          
        /*                                                            
         * this should never happen...                                
         */                                                           
        rtems_semaphore_release (tty->rawOutBuf.Semaphore);           
 8005460:	29 61 00 8c 	lw r1,(r11+140)                                <== NOT EXECUTED
 8005464:	f8 00 03 9a 	calli 80062cc <rtems_semaphore_release>        <== NOT EXECUTED
 8005468:	e3 ff ff 96 	bi 80052c0 <rtems_termios_refill_transmitter+0xbc><== NOT EXECUTED
                                                                      

0800516c <rtems_termios_rxdaemon>: /* * this task actually processes any receive events */ static rtems_task rtems_termios_rxdaemon(rtems_task_argument argument) {
 800516c:	37 9c ff e4 	addi sp,sp,-28                                 
 8005170:	5b 8b 00 14 	sw (sp+20),r11                                 
 8005174:	5b 8c 00 10 	sw (sp+16),r12                                 
 8005178:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800517c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8005180:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    /*                                                                
     * do something                                                   
     */                                                               
    c = tty->device.pollRead(tty->minor);                             
    if (c != EOF) {                                                   
 8005184:	34 0c ff ff 	mvi r12,-1                                     
                                                                      
/*                                                                    
 * this task actually processes any receive events                    
 */                                                                   
static rtems_task rtems_termios_rxdaemon(rtems_task_argument argument)
{                                                                     
 8005188:	b8 20 58 00 	mv r11,r1                                      
 800518c:	37 8d 00 18 	addi r13,sp,24                                 
 8005190:	37 8e 00 1f 	addi r14,sp,31                                 
 8005194:	e0 00 00 06 	bi 80051ac <rtems_termios_rxdaemon+0x40>       
    }                                                                 
                                                                      
    /*                                                                
     * do something                                                   
     */                                                               
    c = tty->device.pollRead(tty->minor);                             
 8005198:	29 63 00 a0 	lw r3,(r11+160)                                
 800519c:	29 61 00 10 	lw r1,(r11+16)                                 
 80051a0:	d8 60 00 00 	call r3                                        
 80051a4:	b8 20 28 00 	mv r5,r1                                       
    if (c != EOF) {                                                   
 80051a8:	5c 2c 00 11 	bne r1,r12,80051ec <rtems_termios_rxdaemon+0x80>
                                                                      
  while (1) {                                                         
    /*                                                                
     * wait for rtems event                                           
     */                                                               
    rtems_event_receive(                                              
 80051ac:	b9 a0 20 00 	mv r4,r13                                      
 80051b0:	34 02 00 02 	mvi r2,2                                       
 80051b4:	34 03 00 00 	mvi r3,0                                       
 80051b8:	34 01 00 03 	mvi r1,3                                       
 80051bc:	f8 00 02 07 	calli 80059d8 <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) {              
 80051c0:	2b 81 00 18 	lw r1,(sp+24)                                  
 80051c4:	20 21 00 01 	andi r1,r1,0x1                                 
 80051c8:	44 20 ff f4 	be r1,r0,8005198 <rtems_termios_rxdaemon+0x2c> <== ALWAYS TAKEN
      tty->rxTaskId = 0;                                              
 80051cc:	59 60 00 c4 	sw (r11+196),r0                                <== NOT EXECUTED
      rtems_task_delete(RTEMS_SELF);                                  
 80051d0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80051d4:	f8 00 04 cc 	calli 8006504 <rtems_task_delete>              <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * do something                                                   
     */                                                               
    c = tty->device.pollRead(tty->minor);                             
 80051d8:	29 63 00 a0 	lw r3,(r11+160)                                <== NOT EXECUTED
 80051dc:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 80051e0:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
 80051e4:	b8 20 28 00 	mv r5,r1                                       <== NOT EXECUTED
    if (c != EOF) {                                                   
 80051e8:	44 2c ff f1 	be r1,r12,80051ac <rtems_termios_rxdaemon+0x40><== NOT EXECUTED
      /*                                                              
       * pollRead did call enqueue on its own                         
       */                                                             
      c_buf = c;                                                      
      rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);           
 80051ec:	b9 60 08 00 	mv r1,r11                                      
 80051f0:	b9 c0 10 00 	mv r2,r14                                      
 80051f4:	34 03 00 01 	mvi r3,1                                       
    c = tty->device.pollRead(tty->minor);                             
    if (c != EOF) {                                                   
      /*                                                              
       * pollRead did call enqueue on its own                         
       */                                                             
      c_buf = c;                                                      
 80051f8:	33 85 00 1f 	sb (sp+31),r5                                  
      rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);           
 80051fc:	fb ff ff 06 	calli 8004e14 <rtems_termios_enqueue_raw_characters>
 8005200:	e3 ff ff eb 	bi 80051ac <rtems_termios_rxdaemon+0x40>       
                                                                      

0800546c <rtems_termios_txdaemon>: /* * this task actually processes any transmit events */ static rtems_task rtems_termios_txdaemon(rtems_task_argument argument) {
 800546c:	37 9c ff f0 	addi sp,sp,-16                                 
 8005470:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8005474:	5b 8c 00 08 	sw (sp+8),r12                                  
 8005478:	5b 9d 00 04 	sw (sp+4),ra                                   
 800547c:	78 0c 08 02 	mvhi r12,0x802                                 
 8005480:	b8 20 58 00 	mv r11,r1                                      
 8005484:	39 8c 67 a4 	ori r12,r12,0x67a4                             
 8005488:	e0 00 00 0e 	bi 80054c0 <rtems_termios_txdaemon+0x54>       
    }                                                                 
                                                                      
    /*                                                                
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
 800548c:	29 62 00 cc 	lw r2,(r11+204)                                
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
 8005490:	b9 60 08 00 	mv r1,r11                                      
    }                                                                 
                                                                      
    /*                                                                
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
 8005494:	b4 42 10 00 	add r2,r2,r2                                   
 8005498:	b4 42 10 00 	add r2,r2,r2                                   
 800549c:	b4 42 10 00 	add r2,r2,r2                                   
 80054a0:	b4 42 10 00 	add r2,r2,r2                                   
 80054a4:	b4 42 10 00 	add r2,r2,r2                                   
 80054a8:	b5 82 10 00 	add r2,r12,r2                                  
 80054ac:	28 42 00 14 	lw r2,(r2+20)                                  
 80054b0:	44 40 00 02 	be r2,r0,80054b8 <rtems_termios_txdaemon+0x4c> <== ALWAYS TAKEN
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
 80054b4:	d8 40 00 00 	call r2                                        <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * try to push further characters to device                       
     */                                                               
    rtems_termios_refill_transmitter(tty);                            
 80054b8:	b9 60 08 00 	mv r1,r11                                      
 80054bc:	fb ff ff 52 	calli 8005204 <rtems_termios_refill_transmitter>
                                                                      
  while (1) {                                                         
    /*                                                                
     * wait for rtems event                                           
     */                                                               
    rtems_event_receive(                                              
 80054c0:	34 02 00 02 	mvi r2,2                                       
 80054c4:	34 03 00 00 	mvi r3,0                                       
 80054c8:	37 84 00 10 	addi r4,sp,16                                  
 80054cc:	34 01 00 03 	mvi r1,3                                       
 80054d0:	f8 00 01 42 	calli 80059d8 <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) {              
 80054d4:	2b 81 00 10 	lw r1,(sp+16)                                  
 80054d8:	20 21 00 01 	andi r1,r1,0x1                                 
 80054dc:	44 20 ff ec 	be r1,r0,800548c <rtems_termios_txdaemon+0x20> <== ALWAYS TAKEN
      tty->txTaskId = 0;                                              
 80054e0:	59 60 00 c8 	sw (r11+200),r0                                <== NOT EXECUTED
      rtems_task_delete(RTEMS_SELF);                                  
 80054e4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80054e8:	f8 00 04 07 	calli 8006504 <rtems_task_delete>              <== NOT EXECUTED
 80054ec:	e3 ff ff e8 	bi 800548c <rtems_termios_txdaemon+0x20>       <== NOT EXECUTED
                                                                      

0800493c <rtems_termios_write>: rtems_termios_puts (&c, 1, tty); } rtems_status_code rtems_termios_write (void *arg) {
 800493c:	37 9c ff e4 	addi sp,sp,-28                                 
 8004940:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8004944:	5b 8c 00 18 	sw (sp+24),r12                                 
 8004948:	5b 8d 00 14 	sw (sp+20),r13                                 
 800494c:	5b 8e 00 10 	sw (sp+16),r14                                 
 8004950:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8004954:	5b 90 00 08 	sw (sp+8),r16                                  
 8004958:	5b 9d 00 04 	sw (sp+4),ra                                   
 800495c:	b8 20 68 00 	mv r13,r1                                      
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8004960:	28 21 00 00 	lw r1,(r1+0)                                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8004964:	34 02 00 00 	mvi r2,0                                       
 8004968:	34 03 00 00 	mvi r3,0                                       
                                                                      
rtems_status_code                                                     
rtems_termios_write (void *arg)                                       
{                                                                     
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
 800496c:	28 2b 00 38 	lw r11,(r1+56)                                 
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8004970:	29 61 00 18 	lw r1,(r11+24)                                 
 8004974:	f8 00 05 fa 	calli 800615c <rtems_semaphore_obtain>         
 8004978:	b8 20 70 00 	mv r14,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 800497c:	5c 20 00 12 	bne r1,r0,80049c4 <rtems_termios_write+0x88>   <== NEVER TAKEN
    return sc;                                                        
  if (rtems_termios_linesw[tty->t_line].l_write != NULL) {            
 8004980:	29 64 00 cc 	lw r4,(r11+204)                                
 8004984:	78 01 08 02 	mvhi r1,0x802                                  
 8004988:	38 21 67 a4 	ori r1,r1,0x67a4                               
 800498c:	b4 84 20 00 	add r4,r4,r4                                   
 8004990:	b4 84 20 00 	add r4,r4,r4                                   
 8004994:	b4 84 20 00 	add r4,r4,r4                                   
 8004998:	b4 84 20 00 	add r4,r4,r4                                   
 800499c:	b4 84 20 00 	add r4,r4,r4                                   
 80049a0:	b4 24 20 00 	add r4,r1,r4                                   
 80049a4:	28 83 00 0c 	lw r3,(r4+12)                                  
 80049a8:	44 6e 00 11 	be r3,r14,80049ec <rtems_termios_write+0xb0>   
    sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);         
 80049ac:	b9 60 08 00 	mv r1,r11                                      
 80049b0:	b9 a0 10 00 	mv r2,r13                                      
 80049b4:	d8 60 00 00 	call r3                                        
 80049b8:	b8 20 70 00 	mv r14,r1                                      
    rtems_semaphore_release (tty->osem);                              
 80049bc:	29 61 00 18 	lw r1,(r11+24)                                 
 80049c0:	f8 00 06 43 	calli 80062cc <rtems_semaphore_release>        
    rtems_termios_puts (args->buffer, args->count, tty);              
    args->bytes_moved = args->count;                                  
  }                                                                   
  rtems_semaphore_release (tty->osem);                                
  return sc;                                                          
}                                                                     
 80049c4:	b9 c0 08 00 	mv r1,r14                                      
 80049c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80049cc:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80049d0:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80049d4:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80049d8:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80049dc:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80049e0:	2b 90 00 08 	lw r16,(sp+8)                                  
 80049e4:	37 9c 00 1c 	addi sp,sp,28                                  
 80049e8:	c3 a0 00 00 	ret                                            
  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) {                                 
 80049ec:	29 61 00 34 	lw r1,(r11+52)                                 
 80049f0:	20 21 00 01 	andi r1,r1,0x1                                 
 80049f4:	44 20 00 11 	be r1,r0,8004a38 <rtems_termios_write+0xfc>    <== NEVER TAKEN
    uint32_t   count = args->count;                                   
 80049f8:	29 af 00 14 	lw r15,(r13+20)                                
    char      *buffer = args->buffer;                                 
 80049fc:	29 b0 00 10 	lw r16,(r13+16)                                
    while (count--)                                                   
 8004a00:	34 01 00 00 	mvi r1,0                                       
 8004a04:	45 e0 00 09 	be r15,r0,8004a28 <rtems_termios_write+0xec>   <== NEVER TAKEN
 8004a08:	34 0c 00 00 	mvi r12,0                                      
  }                                                                   
  rtems_termios_puts (&c, 1, tty);                                    
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_termios_write (void *arg)                                       
 8004a0c:	b6 0c 08 00 	add r1,r16,r12                                 
  }                                                                   
  if (tty->termios.c_oflag & OPOST) {                                 
    uint32_t   count = args->count;                                   
    char      *buffer = args->buffer;                                 
    while (count--)                                                   
      oproc (*buffer++, tty);                                         
 8004a10:	40 21 00 00 	lbu r1,(r1+0)                                  
 8004a14:	35 8c 00 01 	addi r12,r12,1                                 
 8004a18:	b9 60 10 00 	mv r2,r11                                      
 8004a1c:	fb ff fe 1d 	calli 8004290 <oproc>                          
    return sc;                                                        
  }                                                                   
  if (tty->termios.c_oflag & OPOST) {                                 
    uint32_t   count = args->count;                                   
    char      *buffer = args->buffer;                                 
    while (count--)                                                   
 8004a20:	5d 8f ff fb 	bne r12,r15,8004a0c <rtems_termios_write+0xd0> 
      oproc (*buffer++, tty);                                         
    args->bytes_moved = args->count;                                  
  } else {                                                            
    rtems_termios_puts (args->buffer, args->count, tty);              
    args->bytes_moved = args->count;                                  
 8004a24:	29 a1 00 14 	lw r1,(r13+20)                                 
 8004a28:	59 a1 00 1c 	sw (r13+28),r1                                 
  }                                                                   
  rtems_semaphore_release (tty->osem);                                
 8004a2c:	29 61 00 18 	lw r1,(r11+24)                                 
 8004a30:	f8 00 06 27 	calli 80062cc <rtems_semaphore_release>        
  return sc;                                                          
 8004a34:	e3 ff ff e4 	bi 80049c4 <rtems_termios_write+0x88>          
    char      *buffer = args->buffer;                                 
    while (count--)                                                   
      oproc (*buffer++, tty);                                         
    args->bytes_moved = args->count;                                  
  } else {                                                            
    rtems_termios_puts (args->buffer, args->count, tty);              
 8004a38:	29 a1 00 10 	lw r1,(r13+16)                                 <== NOT EXECUTED
 8004a3c:	29 a2 00 14 	lw r2,(r13+20)                                 <== NOT EXECUTED
 8004a40:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 8004a44:	fb ff fd ba 	calli 800412c <rtems_termios_puts>             <== NOT EXECUTED
 8004a48:	e3 ff ff f7 	bi 8004a24 <rtems_termios_write+0xe8>          <== NOT EXECUTED
                                                                      

08013cbc <rtems_timer_cancel>: */ rtems_status_code rtems_timer_cancel( rtems_id id ) {
 8013cbc:	37 9c ff f8 	addi sp,sp,-8                                  
 8013cc0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8013cc4:	b8 20 10 00 	mv r2,r1                                       
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Timer_Control *)                                            
    _Objects_Get( &_Timer_Information, id, location );                
 8013cc8:	78 01 08 04 	mvhi r1,0x804                                  
 8013ccc:	38 21 15 f4 	ori r1,r1,0x15f4                               
 8013cd0:	37 83 00 08 	addi r3,sp,8                                   
 8013cd4:	f8 00 0e 98 	calli 8017734 <_Objects_Get>                   
  Timer_Control   *the_timer;                                         
  Objects_Locations       location;                                   
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
 8013cd8:	2b 82 00 08 	lw r2,(sp+8)                                   
 8013cdc:	44 40 00 05 	be r2,r0,8013cf0 <rtems_timer_cancel+0x34>     
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8013ce0:	34 01 00 04 	mvi r1,4                                       
}                                                                     
 8013ce4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8013ce8:	37 9c 00 08 	addi sp,sp,8                                   
 8013cec:	c3 a0 00 00 	ret                                            
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( !_Timer_Is_dormant_class( the_timer->the_class ) )         
 8013cf0:	28 23 00 38 	lw r3,(r1+56)                                  
 8013cf4:	34 02 00 04 	mvi r2,4                                       
 8013cf8:	44 62 00 03 	be r3,r2,8013d04 <rtems_timer_cancel+0x48>     <== NEVER TAKEN
        (void) _Watchdog_Remove( &the_timer->Ticker );                
 8013cfc:	34 21 00 10 	addi r1,r1,16                                  
 8013d00:	f8 00 18 83 	calli 8019f0c <_Watchdog_Remove>               
      _Thread_Enable_dispatch();                                      
 8013d04:	f8 00 12 c3 	calli 8018810 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 8013d08:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8013d0c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8013d10:	37 9c 00 08 	addi sp,sp,8                                   
 8013d14:	c3 a0 00 00 	ret                                            
                                                                      

08013f68 <rtems_timer_fire_when>: rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) {
 8013f68:	37 9c ff d8 	addi sp,sp,-40                                 
 8013f6c:	5b 8b 00 20 	sw (sp+32),r11                                 
 8013f70:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8013f74:	5b 8d 00 18 	sw (sp+24),r13                                 
 8013f78:	5b 8e 00 14 	sw (sp+20),r14                                 
 8013f7c:	5b 8f 00 10 	sw (sp+16),r15                                 
 8013f80:	5b 90 00 0c 	sw (sp+12),r16                                 
 8013f84:	5b 91 00 08 	sw (sp+8),r17                                  
 8013f88:	5b 9d 00 04 	sw (sp+4),ra                                   
  Timer_Control       *the_timer;                                     
  Objects_Locations    location;                                      
  rtems_interval       seconds;                                       
                                                                      
  if ( !_TOD_Is_set )                                                 
 8013f8c:	78 05 08 04 	mvhi r5,0x804                                  
 8013f90:	38 a5 0d 20 	ori r5,r5,0xd20                                
 8013f94:	40 a6 00 00 	lbu r6,(r5+0)                                  
  rtems_id                            id,                             
  rtems_time_of_day                  *wall_time,                      
  rtems_timer_service_routine_entry   routine,                        
  void                               *user_data                       
)                                                                     
{                                                                     
 8013f98:	b8 20 68 00 	mv r13,r1                                      
 8013f9c:	b8 60 60 00 	mv r12,r3                                      
 8013fa0:	b8 80 70 00 	mv r14,r4                                      
  Timer_Control       *the_timer;                                     
  Objects_Locations    location;                                      
  rtems_interval       seconds;                                       
                                                                      
  if ( !_TOD_Is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
 8013fa4:	34 05 00 0b 	mvi r5,11                                      
{                                                                     
  Timer_Control       *the_timer;                                     
  Objects_Locations    location;                                      
  rtems_interval       seconds;                                       
                                                                      
  if ( !_TOD_Is_set )                                                 
 8013fa8:	5c c0 00 0c 	bne r6,r0,8013fd8 <rtems_timer_fire_when+0x70> 
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8013fac:	b8 a0 08 00 	mv r1,r5                                       
 8013fb0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8013fb4:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8013fb8:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8013fbc:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8013fc0:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8013fc4:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8013fc8:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8013fcc:	2b 91 00 08 	lw r17,(sp+8)                                  
 8013fd0:	37 9c 00 28 	addi sp,sp,40                                  
 8013fd4:	c3 a0 00 00 	ret                                            
  rtems_interval       seconds;                                       
                                                                      
  if ( !_TOD_Is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
 8013fd8:	b8 40 08 00 	mv r1,r2                                       
 8013fdc:	5b 82 00 24 	sw (sp+36),r2                                  
 8013fe0:	fb ff f1 9e 	calli 8010658 <_TOD_Validate>                  
    return RTEMS_INVALID_CLOCK;                                       
 8013fe4:	34 05 00 14 	mvi r5,20                                      
  rtems_interval       seconds;                                       
                                                                      
  if ( !_TOD_Is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
 8013fe8:	2b 82 00 24 	lw r2,(sp+36)                                  
 8013fec:	44 20 ff f0 	be r1,r0,8013fac <rtems_timer_fire_when+0x44>  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
 8013ff0:	34 05 00 09 	mvi r5,9                                       
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  if ( !routine )                                                     
 8013ff4:	45 80 ff ee 	be r12,r0,8013fac <rtems_timer_fire_when+0x44> 
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 8013ff8:	78 0b 08 04 	mvhi r11,0x804                                 
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
 8013ffc:	b8 40 08 00 	mv r1,r2                                       
 8014000:	fb ff f1 3d 	calli 80104f4 <_TOD_To_seconds>                
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 8014004:	39 6b 0d 98 	ori r11,r11,0xd98                              
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
 8014008:	b8 20 80 00 	mv r16,r1                                      
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 801400c:	29 61 00 00 	lw r1,(r11+0)                                  
    return RTEMS_INVALID_CLOCK;                                       
 8014010:	34 05 00 14 	mvi r5,20                                      
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 8014014:	50 30 ff e6 	bgeu r1,r16,8013fac <rtems_timer_fire_when+0x44><== NEVER TAKEN
 8014018:	78 01 08 04 	mvhi r1,0x804                                  
 801401c:	38 21 15 f4 	ori r1,r1,0x15f4                               
 8014020:	b9 a0 10 00 	mv r2,r13                                      
 8014024:	37 83 00 28 	addi r3,sp,40                                  
 8014028:	f8 00 0d c3 	calli 8017734 <_Objects_Get>                   
 801402c:	b8 20 78 00 	mv r15,r1                                      
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
 8014030:	2b 81 00 28 	lw r1,(sp+40)                                  
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8014034:	34 05 00 04 	mvi r5,4                                       
  seconds = _TOD_To_seconds( wall_time );                             
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
 8014038:	5c 20 ff dd 	bne r1,r0,8013fac <rtems_timer_fire_when+0x44> <== NEVER TAKEN
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
 801403c:	35 f1 00 10 	addi r17,r15,16                                
 8014040:	ba 20 08 00 	mv r1,r17                                      
 8014044:	f8 00 17 b2 	calli 8019f0c <_Watchdog_Remove>               
      the_timer->the_class = TIMER_TIME_OF_DAY;                       
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      _Watchdog_Insert_seconds(                                       
 8014048:	29 61 00 00 	lw r1,(r11+0)                                  
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY;                       
 801404c:	34 03 00 02 	mvi r3,2                                       
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );         
 8014050:	ba 20 10 00 	mv r2,r17                                      
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      _Watchdog_Insert_seconds(                                       
 8014054:	ca 01 80 00 	sub r16,r16,r1                                 
 8014058:	78 01 08 04 	mvhi r1,0x804                                  
 801405c:	38 21 0d c4 	ori r1,r1,0xdc4                                
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY;                       
 8014060:	59 e3 00 38 	sw (r15+56),r3                                 
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8014064:	59 e0 00 18 	sw (r15+24),r0                                 
  the_watchdog->routine   = routine;                                  
 8014068:	59 ec 00 2c 	sw (r15+44),r12                                
  the_watchdog->id        = id;                                       
 801406c:	59 ed 00 30 	sw (r15+48),r13                                
  the_watchdog->user_data = user_data;                                
 8014070:	59 ee 00 34 	sw (r15+52),r14                                
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8014074:	59 f0 00 1c 	sw (r15+28),r16                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );         
 8014078:	f8 00 17 3a 	calli 8019d60 <_Watchdog_Insert>               
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      _Watchdog_Insert_seconds(                                       
         &the_timer->Ticker,                                          
         seconds - _TOD_Seconds_since_epoch()                         
       );                                                             
      _Thread_Enable_dispatch();                                      
 801407c:	f8 00 11 e5 	calli 8018810 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 8014080:	34 05 00 00 	mvi r5,0                                       
 8014084:	e3 ff ff ca 	bi 8013fac <rtems_timer_fire_when+0x44>        
                                                                      

08014338 <rtems_timer_server_fire_when>: rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) {
 8014338:	37 9c ff dc 	addi sp,sp,-36                                 
 801433c:	5b 8b 00 20 	sw (sp+32),r11                                 
 8014340:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8014344:	5b 8d 00 18 	sw (sp+24),r13                                 
 8014348:	5b 8e 00 14 	sw (sp+20),r14                                 
 801434c:	5b 8f 00 10 	sw (sp+16),r15                                 
 8014350:	5b 90 00 0c 	sw (sp+12),r16                                 
 8014354:	5b 91 00 08 	sw (sp+8),r17                                  
 8014358:	5b 9d 00 04 	sw (sp+4),ra                                   
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
 801435c:	78 05 08 04 	mvhi r5,0x804                                  
 8014360:	38 a5 16 34 	ori r5,r5,0x1634                               
 8014364:	28 ac 00 00 	lw r12,(r5+0)                                  
  rtems_id                           id,                              
  rtems_time_of_day                  *wall_time,                      
  rtems_timer_service_routine_entry  routine,                         
  void                              *user_data                        
)                                                                     
{                                                                     
 8014368:	b8 20 80 00 	mv r16,r1                                      
 801436c:	b8 40 70 00 	mv r14,r2                                      
 8014370:	b8 60 78 00 	mv r15,r3                                      
 8014374:	b8 80 88 00 	mv r17,r4                                      
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
    return RTEMS_INCORRECT_STATE;                                     
 8014378:	34 0b 00 0e 	mvi r11,14                                     
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
 801437c:	45 80 00 0c 	be r12,r0,80143ac <rtems_timer_server_fire_when+0x74>
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD_Is_set )                                                 
 8014380:	78 05 08 04 	mvhi r5,0x804                                  
 8014384:	38 a5 0d 20 	ori r5,r5,0xd20                                
 8014388:	40 a5 00 00 	lbu r5,(r5+0)                                  
    return RTEMS_NOT_DEFINED;                                         
 801438c:	34 0b 00 0b 	mvi r11,11                                     
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD_Is_set )                                                 
 8014390:	44 a0 00 07 	be r5,r0,80143ac <rtems_timer_server_fire_when+0x74><== NEVER TAKEN
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
 8014394:	34 0b 00 09 	mvi r11,9                                      
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD_Is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
 8014398:	44 60 00 05 	be r3,r0,80143ac <rtems_timer_server_fire_when+0x74>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
 801439c:	b8 40 08 00 	mv r1,r2                                       
 80143a0:	fb ff f0 ae 	calli 8010658 <_TOD_Validate>                  
    return RTEMS_INVALID_CLOCK;                                       
 80143a4:	34 0b 00 14 	mvi r11,20                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
 80143a8:	5c 20 00 0c 	bne r1,r0,80143d8 <rtems_timer_server_fire_when+0xa0>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80143ac:	b9 60 08 00 	mv r1,r11                                      
 80143b0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80143b4:	2b 8b 00 20 	lw r11,(sp+32)                                 
 80143b8:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 80143bc:	2b 8d 00 18 	lw r13,(sp+24)                                 
 80143c0:	2b 8e 00 14 	lw r14,(sp+20)                                 
 80143c4:	2b 8f 00 10 	lw r15,(sp+16)                                 
 80143c8:	2b 90 00 0c 	lw r16,(sp+12)                                 
 80143cc:	2b 91 00 08 	lw r17,(sp+8)                                  
 80143d0:	37 9c 00 24 	addi sp,sp,36                                  
 80143d4:	c3 a0 00 00 	ret                                            
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
 80143d8:	b9 c0 08 00 	mv r1,r14                                      
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 80143dc:	78 0d 08 04 	mvhi r13,0x804                                 
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
 80143e0:	fb ff f0 45 	calli 80104f4 <_TOD_To_seconds>                
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 80143e4:	39 ad 0d 98 	ori r13,r13,0xd98                              
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
 80143e8:	b8 20 70 00 	mv r14,r1                                      
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 80143ec:	29 a1 00 00 	lw r1,(r13+0)                                  
 80143f0:	50 2e ff ef 	bgeu r1,r14,80143ac <rtems_timer_server_fire_when+0x74>
 80143f4:	78 01 08 04 	mvhi r1,0x804                                  
 80143f8:	38 21 15 f4 	ori r1,r1,0x15f4                               
 80143fc:	ba 00 10 00 	mv r2,r16                                      
 8014400:	37 83 00 24 	addi r3,sp,36                                  
 8014404:	f8 00 0c cc 	calli 8017734 <_Objects_Get>                   
 8014408:	b8 20 58 00 	mv r11,r1                                      
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
 801440c:	2b 81 00 24 	lw r1,(sp+36)                                  
 8014410:	44 20 00 03 	be r1,r0,801441c <rtems_timer_server_fire_when+0xe4>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8014414:	34 0b 00 04 	mvi r11,4                                      
 8014418:	e3 ff ff e5 	bi 80143ac <rtems_timer_server_fire_when+0x74> 
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
 801441c:	35 61 00 10 	addi r1,r11,16                                 
 8014420:	f8 00 16 bb 	calli 8019f0c <_Watchdog_Remove>               
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
 8014424:	29 a1 00 00 	lw r1,(r13+0)                                  
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
 8014428:	29 83 00 04 	lw r3,(r12+4)                                  
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
 801442c:	34 04 00 03 	mvi r4,3                                       
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
 8014430:	c9 c1 70 00 	sub r14,r14,r1                                 
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
 8014434:	b9 60 10 00 	mv r2,r11                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
 8014438:	59 64 00 38 	sw (r11+56),r4                                 
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 801443c:	59 6f 00 2c 	sw (r11+44),r15                                
  the_watchdog->id        = id;                                       
 8014440:	59 70 00 30 	sw (r11+48),r16                                
  the_watchdog->user_data = user_data;                                
 8014444:	59 71 00 34 	sw (r11+52),r17                                
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
 8014448:	59 6e 00 1c 	sw (r11+28),r14                                
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
 801444c:	b9 80 08 00 	mv r1,r12                                      
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8014450:	59 60 00 18 	sw (r11+24),r0                                 
 8014454:	d8 60 00 00 	call r3                                        
                                                                      
      _Thread_Enable_dispatch();                                      
      return RTEMS_SUCCESSFUL;                                        
 8014458:	34 0b 00 00 	mvi r11,0                                      
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
                                                                      
      _Thread_Enable_dispatch();                                      
 801445c:	f8 00 10 ed 	calli 8018810 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 8014460:	e3 ff ff d3 	bi 80143ac <rtems_timer_server_fire_when+0x74> 
                                                                      

080070b4 <rtems_verror>: static int rtems_verror( rtems_error_code_t error_flag, const char *printf_format, va_list arglist ) {
 80070b4:	37 9c ff e4 	addi sp,sp,-28                                 
 80070b8:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80070bc:	5b 8c 00 18 	sw (sp+24),r12                                 
 80070c0:	5b 8d 00 14 	sw (sp+20),r13                                 
 80070c4:	5b 8e 00 10 	sw (sp+16),r14                                 
 80070c8:	5b 8f 00 0c 	sw (sp+12),r15                                 
 80070cc:	5b 90 00 08 	sw (sp+8),r16                                  
 80070d0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80070d4:	b8 20 68 00 	mv r13,r1                                      
  int               local_errno = 0;                                  
  int               chars_written = 0;                                
  rtems_status_code status;                                           
                                                                      
  if (error_flag & RTEMS_ERROR_PANIC) {                               
 80070d8:	78 01 20 00 	mvhi r1,0x2000                                 
 80070dc:	a1 a1 08 00 	and r1,r13,r1                                  
static int rtems_verror(                                              
  rtems_error_code_t  error_flag,                                     
  const char         *printf_format,                                  
  va_list             arglist                                         
)                                                                     
{                                                                     
 80070e0:	b8 40 80 00 	mv r16,r2                                      
 80070e4:	b8 60 78 00 	mv r15,r3                                      
  int               local_errno = 0;                                  
  int               chars_written = 0;                                
  rtems_status_code status;                                           
                                                                      
  if (error_flag & RTEMS_ERROR_PANIC) {                               
 80070e8:	44 20 00 10 	be r1,r0,8007128 <rtems_verror+0x74>           
    if (rtems_panic_in_progress++)                                    
 80070ec:	78 04 08 02 	mvhi r4,0x802                                  
 80070f0:	38 84 a9 04 	ori r4,r4,0xa904                               
 80070f4:	28 81 00 00 	lw r1,(r4+0)                                   
 80070f8:	34 25 00 01 	addi r5,r1,1                                   
 80070fc:	58 85 00 00 	sw (r4+0),r5                                   
 8007100:	44 20 00 07 	be r1,r0,800711c <rtems_verror+0x68>           <== ALWAYS TAKEN
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 8007104:	78 01 08 02 	mvhi r1,0x802                                  <== NOT EXECUTED
 8007108:	38 21 aa 80 	ori r1,r1,0xaa80                               <== NOT EXECUTED
 800710c:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
 8007110:	34 42 00 01 	addi r2,r2,1                                   <== NOT EXECUTED
 8007114:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
 8007118:	28 85 00 00 	lw r5,(r4+0)                                   <== NOT EXECUTED
      _Thread_Disable_dispatch();       /* disable task switches */   
                                                                      
    /* don't aggravate things */                                      
    if (rtems_panic_in_progress > 2)                                  
 800711c:	34 01 00 02 	mvi r1,2                                       
      return 0;                                                       
 8007120:	34 0c 00 00 	mvi r12,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)                                  
 8007124:	48 a1 00 2b 	bg r5,r1,80071d0 <rtems_verror+0x11c>          <== NEVER TAKEN
      return 0;                                                       
  }                                                                   
                                                                      
  (void) fflush(stdout);            /* in case stdout/stderr same */  
 8007128:	78 0b 08 02 	mvhi r11,0x802                                 
 800712c:	39 6b a2 60 	ori r11,r11,0xa260                             
 8007130:	29 61 00 00 	lw r1,(r11+0)                                  
  rtems_error_code_t  error_flag,                                     
  const char         *printf_format,                                  
  va_list             arglist                                         
)                                                                     
{                                                                     
  int               local_errno = 0;                                  
 8007134:	34 0e 00 00 	mvi r14,0                                      
    /* don't aggravate things */                                      
    if (rtems_panic_in_progress > 2)                                  
      return 0;                                                       
  }                                                                   
                                                                      
  (void) fflush(stdout);            /* in case stdout/stderr same */  
 8007138:	28 21 00 08 	lw r1,(r1+8)                                   
 800713c:	f8 00 34 2a 	calli 80141e4 <fflush>                         
                                                                      
  status = error_flag & ~RTEMS_ERROR_MASK;                            
 8007140:	78 03 08 02 	mvhi r3,0x802                                  
 8007144:	38 63 80 0c 	ori r3,r3,0x800c                               
 8007148:	28 62 00 00 	lw r2,(r3+0)                                   
  if (error_flag & RTEMS_ERROR_ERRNO)     /* include errno? */        
 800714c:	78 01 40 00 	mvhi r1,0x4000                                 
 8007150:	a1 a1 08 00 	and r1,r13,r1                                  
      return 0;                                                       
  }                                                                   
                                                                      
  (void) fflush(stdout);            /* in case stdout/stderr same */  
                                                                      
  status = error_flag & ~RTEMS_ERROR_MASK;                            
 8007154:	a1 a2 68 00 	and r13,r13,r2                                 
  if (error_flag & RTEMS_ERROR_ERRNO)     /* include errno? */        
 8007158:	5c 20 00 34 	bne r1,r0,8007228 <rtems_verror+0x174>         
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if (_System_state_Is_multiprocessing)                             
      fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
  #endif                                                              
                                                                      
  chars_written += vfprintf(stderr, printf_format, arglist);          
 800715c:	29 61 00 00 	lw r1,(r11+0)                                  
 8007160:	ba 00 10 00 	mv r2,r16                                      
 8007164:	b9 e0 18 00 	mv r3,r15                                      
 8007168:	28 21 00 0c 	lw r1,(r1+12)                                  
 800716c:	f8 00 4d 0d 	calli 801a5a0 <vfprintf>                       
 8007170:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if (status)                                                         
 8007174:	5d a0 00 21 	bne r13,r0,80071f8 <rtems_verror+0x144>        
    chars_written +=                                                  
      fprintf(stderr, " (status: %s)", rtems_status_text(status));    
                                                                      
  if (local_errno) {                                                  
 8007178:	45 c0 00 0d 	be r14,r0,80071ac <rtems_verror+0xf8>          
    if ((local_errno > 0) && *strerror(local_errno))                  
 800717c:	4c 0e 00 05 	bge r0,r14,8007190 <rtems_verror+0xdc>         
 8007180:	b9 c0 08 00 	mv r1,r14                                      
 8007184:	f8 00 38 f0 	calli 8015544 <strerror>                       
 8007188:	40 21 00 00 	lbu r1,(r1+0)                                  
 800718c:	5c 20 00 2a 	bne r1,r0,8007234 <rtems_verror+0x180>         <== ALWAYS TAKEN
      chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
    else                                                              
      chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
 8007190:	29 61 00 00 	lw r1,(r11+0)                                  
 8007194:	78 02 08 02 	mvhi r2,0x802                                  
 8007198:	38 42 7c e8 	ori r2,r2,0x7ce8                               
 800719c:	28 21 00 0c 	lw r1,(r1+12)                                  
 80071a0:	b9 c0 18 00 	mv r3,r14                                      
 80071a4:	f8 00 35 48 	calli 80146c4 <fprintf>                        
 80071a8:	b5 81 60 00 	add r12,r12,r1                                 
  }                                                                   
                                                                      
  chars_written += fprintf(stderr, "\n");                             
 80071ac:	29 61 00 00 	lw r1,(r11+0)                                  
 80071b0:	78 02 08 02 	mvhi r2,0x802                                  
 80071b4:	38 42 74 38 	ori r2,r2,0x7438                               
 80071b8:	28 21 00 0c 	lw r1,(r1+12)                                  
 80071bc:	f8 00 35 42 	calli 80146c4 <fprintf>                        
                                                                      
  (void) fflush(stderr);                                              
 80071c0:	29 62 00 00 	lw r2,(r11+0)                                  
      chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
    else                                                              
      chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
  }                                                                   
                                                                      
  chars_written += fprintf(stderr, "\n");                             
 80071c4:	b4 2c 60 00 	add r12,r1,r12                                 
                                                                      
  (void) fflush(stderr);                                              
 80071c8:	28 41 00 0c 	lw r1,(r2+12)                                  
 80071cc:	f8 00 34 06 	calli 80141e4 <fflush>                         
                                                                      
  return chars_written;                                               
}                                                                     
 80071d0:	b9 80 08 00 	mv r1,r12                                      
 80071d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80071d8:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80071dc:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80071e0:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80071e4:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80071e8:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80071ec:	2b 90 00 08 	lw r16,(sp+8)                                  
 80071f0:	37 9c 00 1c 	addi sp,sp,28                                  
 80071f4:	c3 a0 00 00 	ret                                            
                                                                      
  chars_written += vfprintf(stderr, printf_format, arglist);          
                                                                      
  if (status)                                                         
    chars_written +=                                                  
      fprintf(stderr, " (status: %s)", rtems_status_text(status));    
 80071f8:	29 62 00 00 	lw r2,(r11+0)                                  
 80071fc:	b9 a0 08 00 	mv r1,r13                                      
 8007200:	28 4d 00 0c 	lw r13,(r2+12)                                 
 8007204:	fb ff ff a3 	calli 8007090 <rtems_status_text>              
 8007208:	78 02 08 02 	mvhi r2,0x802                                  
 800720c:	b8 20 18 00 	mv r3,r1                                       
 8007210:	38 42 7c c8 	ori r2,r2,0x7cc8                               
 8007214:	b9 a0 08 00 	mv r1,r13                                      
 8007218:	f8 00 35 2b 	calli 80146c4 <fprintf>                        
  #endif                                                              
                                                                      
  chars_written += vfprintf(stderr, printf_format, arglist);          
                                                                      
  if (status)                                                         
    chars_written +=                                                  
 800721c:	b5 81 60 00 	add r12,r12,r1                                 
      fprintf(stderr, " (status: %s)", rtems_status_text(status));    
                                                                      
  if (local_errno) {                                                  
 8007220:	45 c0 ff e3 	be r14,r0,80071ac <rtems_verror+0xf8>          
 8007224:	e3 ff ff d6 	bi 800717c <rtems_verror+0xc8>                 
                                                                      
  (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;                                              
 8007228:	f8 00 32 ee 	calli 8013de0 <__errno>                        
 800722c:	28 2e 00 00 	lw r14,(r1+0)                                  
 8007230:	e3 ff ff cb 	bi 800715c <rtems_verror+0xa8>                 
    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));
 8007234:	29 62 00 00 	lw r2,(r11+0)                                  
 8007238:	b9 c0 08 00 	mv r1,r14                                      
 800723c:	28 4d 00 0c 	lw r13,(r2+12)                                 
 8007240:	f8 00 38 c1 	calli 8015544 <strerror>                       
 8007244:	78 02 08 02 	mvhi r2,0x802                                  
 8007248:	b8 20 18 00 	mv r3,r1                                       
 800724c:	38 42 7c d8 	ori r2,r2,0x7cd8                               
 8007250:	b9 a0 08 00 	mv r1,r13                                      
 8007254:	f8 00 35 1c 	calli 80146c4 <fprintf>                        
 8007258:	b5 81 60 00 	add r12,r12,r1                                 
 800725c:	e3 ff ff d4 	bi 80071ac <rtems_verror+0xf8>                 
                                                                      

08001cbc <scanInt>: /* * Extract an integer value from the database */ static int scanInt(FILE *fp, int *val) {
 8001cbc:	37 9c ff d4 	addi sp,sp,-44                                 
 8001cc0:	5b 8b 00 2c 	sw (sp+44),r11                                 
 8001cc4:	5b 8c 00 28 	sw (sp+40),r12                                 
 8001cc8:	5b 8d 00 24 	sw (sp+36),r13                                 
 8001ccc:	5b 8e 00 20 	sw (sp+32),r14                                 
 8001cd0:	5b 8f 00 1c 	sw (sp+28),r15                                 
 8001cd4:	5b 90 00 18 	sw (sp+24),r16                                 
 8001cd8:	5b 91 00 14 	sw (sp+20),r17                                 
 8001cdc:	5b 92 00 10 	sw (sp+16),r18                                 
 8001ce0:	5b 93 00 0c 	sw (sp+12),r19                                 
 8001ce4:	5b 94 00 08 	sw (sp+8),r20                                  
 8001ce8:	5b 9d 00 04 	sw (sp+4),ra                                   
  int c;                                                              
  unsigned int i = 0;                                                 
  unsigned int limit = INT_MAX;                                       
 8001cec:	78 03 08 01 	mvhi r3,0x801                                  
 8001cf0:	38 63 52 84 	ori r3,r3,0x5284                               
 8001cf4:	28 70 00 00 	lw r16,(r3+0)                                  
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8001cf8:	78 13 08 01 	mvhi r19,0x801                                 
        limit++;                                                      
        continue;                                                     
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
 8001cfc:	78 0e 08 01 	mvhi r14,0x801                                 
/*                                                                    
 * Extract an integer value from the database                         
 */                                                                   
static int                                                            
scanInt(FILE *fp, int *val)                                           
{                                                                     
 8001d00:	b8 20 58 00 	mv r11,r1                                      
 8001d04:	b8 40 a0 00 	mv r20,r2                                      
  int c;                                                              
  unsigned int i = 0;                                                 
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
 8001d08:	34 0f 00 00 	mvi r15,0                                      
 */                                                                   
static int                                                            
scanInt(FILE *fp, int *val)                                           
{                                                                     
  int c;                                                              
  unsigned int i = 0;                                                 
 8001d0c:	34 0d 00 00 	mvi r13,0                                      
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8001d10:	3a 73 61 f0 	ori r19,r19,0x61f0                             
    if (c == ':')                                                     
 8001d14:	34 11 00 3a 	mvi r17,58                                     
        limit++;                                                      
        continue;                                                     
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
 8001d18:	39 ce 61 e8 	ori r14,r14,0x61e8                             
  for (;;) {                                                          
    c = getc(fp);                                                     
    if (c == ':')                                                     
      break;                                                          
    if (sign == 0) {                                                  
      if (c == '-') {                                                 
 8001d1c:	34 12 00 2d 	mvi r18,45                                     
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8001d20:	29 63 00 04 	lw r3,(r11+4)                                  
 8001d24:	34 63 ff ff 	addi r3,r3,-1                                  
 8001d28:	59 63 00 04 	sw (r11+4),r3                                  
 8001d2c:	4c 60 00 1a 	bge r3,r0,8001d94 <scanInt+0xd8>               <== ALWAYS TAKEN
 8001d30:	2a 61 00 00 	lw r1,(r19+0)                                  <== NOT EXECUTED
 8001d34:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8001d38:	f8 00 36 f0 	calli 800f8f8 <__srget_r>                      <== NOT EXECUTED
 8001d3c:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
    if (c == ':')                                                     
 8001d40:	45 91 00 1a 	be r12,r17,8001da8 <scanInt+0xec>              <== NOT EXECUTED
      break;                                                          
    if (sign == 0) {                                                  
 8001d44:	5d e0 00 03 	bne r15,r0,8001d50 <scanInt+0x94>              
      if (c == '-') {                                                 
        sign = -1;                                                    
        limit++;                                                      
        continue;                                                     
      }                                                               
      sign = 1;                                                       
 8001d48:	34 0f 00 01 	mvi r15,1                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
    if (c == ':')                                                     
      break;                                                          
    if (sign == 0) {                                                  
      if (c == '-') {                                                 
 8001d4c:	45 92 00 32 	be r12,r18,8001e14 <scanInt+0x158>             <== NEVER TAKEN
        limit++;                                                      
        continue;                                                     
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
 8001d50:	29 c1 00 00 	lw r1,(r14+0)                                  
 8001d54:	b4 2c 08 00 	add r1,r1,r12                                  
 8001d58:	40 21 00 01 	lbu r1,(r1+1)                                  
 8001d5c:	20 21 00 04 	andi r1,r1,0x4                                 
 8001d60:	44 20 00 1f 	be r1,r0,8001ddc <scanInt+0x120>               
      return 0;                                                       
    d = c - '0';                                                      
    if ((i > (limit / 10))                                            
 8001d64:	ba 00 08 00 	mv r1,r16                                      
 8001d68:	34 02 00 0a 	mvi r2,10                                      
 8001d6c:	f8 00 48 d4 	calli 80140bc <__udivsi3>                      
 8001d70:	55 a1 00 1b 	bgu r13,r1,8001ddc <scanInt+0x120>             
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
      return 0;                                                       
    d = c - '0';                                                      
 8001d74:	35 8c ff d0 	addi r12,r12,-48                               
    if ((i > (limit / 10))                                            
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
 8001d78:	45 a1 00 14 	be r13,r1,8001dc8 <scanInt+0x10c>              
      return 0;                                                       
    i = i * 10 + d;                                                   
 8001d7c:	b5 ad 68 00 	add r13,r13,r13                                
 8001d80:	b5 ad 18 00 	add r3,r13,r13                                 
 8001d84:	b4 63 18 00 	add r3,r3,r3                                   
 8001d88:	b5 a3 68 00 	add r13,r13,r3                                 
 8001d8c:	b5 8d 68 00 	add r13,r12,r13                                
 8001d90:	e3 ff ff e4 	bi 8001d20 <scanInt+0x64>                      
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8001d94:	29 63 00 00 	lw r3,(r11+0)                                  
 8001d98:	40 6c 00 00 	lbu r12,(r3+0)                                 
 8001d9c:	34 61 00 01 	addi r1,r3,1                                   
 8001da0:	59 61 00 00 	sw (r11+0),r1                                  
    if (c == ':')                                                     
 8001da4:	5d 91 ff e8 	bne r12,r17,8001d44 <scanInt+0x88>             
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
      return 0;                                                       
    i = i * 10 + d;                                                   
  }                                                                   
  if (sign == 0)                                                      
    return 0;                                                         
 8001da8:	34 01 00 00 	mvi r1,0                                       
    if ((i > (limit / 10))                                            
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
      return 0;                                                       
    i = i * 10 + d;                                                   
  }                                                                   
  if (sign == 0)                                                      
 8001dac:	45 e0 00 0d 	be r15,r0,8001de0 <scanInt+0x124>              <== NEVER TAKEN
    return 0;                                                         
  *val = i * sign;                                                    
 8001db0:	b9 e0 08 00 	mv r1,r15                                      
 8001db4:	b9 a0 10 00 	mv r2,r13                                      
 8001db8:	f8 00 48 5c 	calli 8013f28 <__mulsi3>                       
 8001dbc:	5a 81 00 00 	sw (r20+0),r1                                  
  return 1;                                                           
 8001dc0:	34 01 00 01 	mvi r1,1                                       
 8001dc4:	e0 00 00 07 	bi 8001de0 <scanInt+0x124>                     
    }                                                                 
    if (!isdigit(c))                                                  
      return 0;                                                       
    d = c - '0';                                                      
    if ((i > (limit / 10))                                            
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
 8001dc8:	ba 00 08 00 	mv r1,r16                                      
 8001dcc:	34 02 00 0a 	mvi r2,10                                      
 8001dd0:	f8 00 48 cb 	calli 80140fc <__umodsi3>                      
 8001dd4:	55 81 00 02 	bgu r12,r1,8001ddc <scanInt+0x120>             <== ALWAYS TAKEN
 8001dd8:	e3 ff ff e9 	bi 8001d7c <scanInt+0xc0>                      <== NOT EXECUTED
      return 0;                                                       
 8001ddc:	34 01 00 00 	mvi r1,0                                       
  }                                                                   
  if (sign == 0)                                                      
    return 0;                                                         
  *val = i * sign;                                                    
  return 1;                                                           
}                                                                     
 8001de0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001de4:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 8001de8:	2b 8c 00 28 	lw r12,(sp+40)                                 
 8001dec:	2b 8d 00 24 	lw r13,(sp+36)                                 
 8001df0:	2b 8e 00 20 	lw r14,(sp+32)                                 
 8001df4:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 8001df8:	2b 90 00 18 	lw r16,(sp+24)                                 
 8001dfc:	2b 91 00 14 	lw r17,(sp+20)                                 
 8001e00:	2b 92 00 10 	lw r18,(sp+16)                                 
 8001e04:	2b 93 00 0c 	lw r19,(sp+12)                                 
 8001e08:	2b 94 00 08 	lw r20,(sp+8)                                  
 8001e0c:	37 9c 00 2c 	addi sp,sp,44                                  
 8001e10:	c3 a0 00 00 	ret                                            
    if (c == ':')                                                     
      break;                                                          
    if (sign == 0) {                                                  
      if (c == '-') {                                                 
        sign = -1;                                                    
        limit++;                                                      
 8001e14:	36 10 00 01 	addi r16,r16,1                                 
    c = getc(fp);                                                     
    if (c == ':')                                                     
      break;                                                          
    if (sign == 0) {                                                  
      if (c == '-') {                                                 
        sign = -1;                                                    
 8001e18:	34 0f ff ff 	mvi r15,-1                                     
        limit++;                                                      
        continue;                                                     
 8001e1c:	e3 ff ff c1 	bi 8001d20 <scanInt+0x64>                      
                                                                      

08001e20 <scanString>: /* * Extract a string value from the database */ static int scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag) {
 8001e20:	37 9c ff d8 	addi sp,sp,-40                                 
 8001e24:	5b 8b 00 28 	sw (sp+40),r11                                 
 8001e28:	5b 8c 00 24 	sw (sp+36),r12                                 
 8001e2c:	5b 8d 00 20 	sw (sp+32),r13                                 
 8001e30:	5b 8e 00 1c 	sw (sp+28),r14                                 
 8001e34:	5b 8f 00 18 	sw (sp+24),r15                                 
 8001e38:	5b 90 00 14 	sw (sp+20),r16                                 
 8001e3c:	5b 91 00 10 	sw (sp+16),r17                                 
 8001e40:	5b 92 00 0c 	sw (sp+12),r18                                 
 8001e44:	5b 93 00 08 	sw (sp+8),r19                                  
 8001e48:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001e4c:	b8 60 58 00 	mv r11,r3                                      
  int c;                                                              
                                                                      
  *name = *bufp;                                                      
 8001e50:	28 63 00 00 	lw r3,(r3+0)                                   
  for (;;) {                                                          
    c = getc(fp);                                                     
 8001e54:	78 12 08 01 	mvhi r18,0x801                                 
/*                                                                    
 * Extract a string value from the database                           
 */                                                                   
static int                                                            
scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag)
{                                                                     
 8001e58:	b8 20 60 00 	mv r12,r1                                      
 8001e5c:	b8 80 68 00 	mv r13,r4                                      
 8001e60:	b8 a0 98 00 	mv r19,r5                                      
  int c;                                                              
                                                                      
  *name = *bufp;                                                      
 8001e64:	58 43 00 00 	sw (r2+0),r3                                   
  for (;;) {                                                          
    c = getc(fp);                                                     
 8001e68:	3a 52 61 f0 	ori r18,r18,0x61f0                             
    if (c == ':') {                                                   
 8001e6c:	34 0e 00 3a 	mvi r14,58                                     
        if (nlFlag)                                                   
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == '\n') {                                                  
 8001e70:	34 0f 00 0a 	mvi r15,10                                     
        if (!nlFlag)                                                  
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == EOF)                                                     
 8001e74:	34 10 ff ff 	mvi r16,-1                                     
      return 0;                                                       
    if (*nleft < 2)                                                   
 8001e78:	34 11 00 01 	mvi r17,1                                      
{                                                                     
  int c;                                                              
                                                                      
  *name = *bufp;                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8001e7c:	29 81 00 04 	lw r1,(r12+4)                                  
 8001e80:	34 21 ff ff 	addi r1,r1,-1                                  
 8001e84:	59 81 00 04 	sw (r12+4),r1                                  
 8001e88:	4c 20 00 12 	bge r1,r0,8001ed0 <scanString+0xb0>            
 8001e8c:	2a 41 00 00 	lw r1,(r18+0)                                  
 8001e90:	b9 80 10 00 	mv r2,r12                                      
 8001e94:	f8 00 36 99 	calli 800f8f8 <__srget_r>                      
    if (c == ':') {                                                   
 8001e98:	44 2e 00 13 	be r1,r14,8001ee4 <scanString+0xc4>            <== NEVER TAKEN
        if (nlFlag)                                                   
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == '\n') {                                                  
 8001e9c:	44 2f 00 2b 	be r1,r15,8001f48 <scanString+0x128>           
        if (!nlFlag)                                                  
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == EOF)                                                     
 8001ea0:	44 30 00 1d 	be r1,r16,8001f14 <scanString+0xf4>            
      return 0;                                                       
    if (*nleft < 2)                                                   
 8001ea4:	29 a2 00 00 	lw r2,(r13+0)                                  
 8001ea8:	52 22 00 1b 	bgeu r17,r2,8001f14 <scanString+0xf4>          
      return 0;                                                       
    **bufp = c;                                                       
 8001eac:	29 62 00 00 	lw r2,(r11+0)                                  
 8001eb0:	30 41 00 00 	sb (r2+0),r1                                   
    ++(*bufp);                                                        
 8001eb4:	29 62 00 00 	lw r2,(r11+0)                                  
    --(*nleft);                                                       
 8001eb8:	29 a1 00 00 	lw r1,(r13+0)                                  
    if (c == EOF)                                                     
      return 0;                                                       
    if (*nleft < 2)                                                   
      return 0;                                                       
    **bufp = c;                                                       
    ++(*bufp);                                                        
 8001ebc:	34 42 00 01 	addi r2,r2,1                                   
 8001ec0:	59 62 00 00 	sw (r11+0),r2                                  
    --(*nleft);                                                       
 8001ec4:	34 21 ff ff 	addi r1,r1,-1                                  
 8001ec8:	59 a1 00 00 	sw (r13+0),r1                                  
  }                                                                   
 8001ecc:	e3 ff ff ec 	bi 8001e7c <scanString+0x5c>                   
{                                                                     
  int c;                                                              
                                                                      
  *name = *bufp;                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8001ed0:	29 81 00 00 	lw r1,(r12+0)                                  
 8001ed4:	34 22 00 01 	addi r2,r1,1                                   
 8001ed8:	40 21 00 00 	lbu r1,(r1+0)                                  
 8001edc:	59 82 00 00 	sw (r12+0),r2                                  
    if (c == ':') {                                                   
 8001ee0:	5c 2e ff ef 	bne r1,r14,8001e9c <scanString+0x7c>           
        if (nlFlag)                                                   
            return 0;                                                 
 8001ee4:	34 01 00 00 	mvi r1,0                                       
                                                                      
  *name = *bufp;                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
    if (c == ':') {                                                   
        if (nlFlag)                                                   
 8001ee8:	5e 60 00 0c 	bne r19,r0,8001f18 <scanString+0xf8>           
      return 0;                                                       
    **bufp = c;                                                       
    ++(*bufp);                                                        
    --(*nleft);                                                       
  }                                                                   
  **bufp = '\0';                                                      
 8001eec:	29 62 00 00 	lw r2,(r11+0)                                  
  ++(*bufp);                                                          
  --(*nleft);                                                         
  return 1;                                                           
 8001ef0:	34 01 00 01 	mvi r1,1                                       
      return 0;                                                       
    **bufp = c;                                                       
    ++(*bufp);                                                        
    --(*nleft);                                                       
  }                                                                   
  **bufp = '\0';                                                      
 8001ef4:	30 40 00 00 	sb (r2+0),r0                                   
  ++(*bufp);                                                          
 8001ef8:	29 63 00 00 	lw r3,(r11+0)                                  
  --(*nleft);                                                         
 8001efc:	29 a2 00 00 	lw r2,(r13+0)                                  
    **bufp = c;                                                       
    ++(*bufp);                                                        
    --(*nleft);                                                       
  }                                                                   
  **bufp = '\0';                                                      
  ++(*bufp);                                                          
 8001f00:	34 63 00 01 	addi r3,r3,1                                   
 8001f04:	59 63 00 00 	sw (r11+0),r3                                  
  --(*nleft);                                                         
 8001f08:	34 42 ff ff 	addi r2,r2,-1                                  
 8001f0c:	59 a2 00 00 	sw (r13+0),r2                                  
  return 1;                                                           
 8001f10:	e0 00 00 02 	bi 8001f18 <scanString+0xf8>                   
        break;                                                        
    }                                                                 
    if (c == EOF)                                                     
      return 0;                                                       
    if (*nleft < 2)                                                   
      return 0;                                                       
 8001f14:	34 01 00 00 	mvi r1,0                                       
  }                                                                   
  **bufp = '\0';                                                      
  ++(*bufp);                                                          
  --(*nleft);                                                         
  return 1;                                                           
}                                                                     
 8001f18:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001f1c:	2b 8b 00 28 	lw r11,(sp+40)                                 
 8001f20:	2b 8c 00 24 	lw r12,(sp+36)                                 
 8001f24:	2b 8d 00 20 	lw r13,(sp+32)                                 
 8001f28:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 8001f2c:	2b 8f 00 18 	lw r15,(sp+24)                                 
 8001f30:	2b 90 00 14 	lw r16,(sp+20)                                 
 8001f34:	2b 91 00 10 	lw r17,(sp+16)                                 
 8001f38:	2b 92 00 0c 	lw r18,(sp+12)                                 
 8001f3c:	2b 93 00 08 	lw r19,(sp+8)                                  
 8001f40:	37 9c 00 28 	addi sp,sp,40                                  
 8001f44:	c3 a0 00 00 	ret                                            
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == '\n') {                                                  
        if (!nlFlag)                                                  
            return 0;                                                 
 8001f48:	34 01 00 00 	mvi r1,0                                       
        if (nlFlag)                                                   
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == '\n') {                                                  
        if (!nlFlag)                                                  
 8001f4c:	5e 60 ff e8 	bne r19,r0,8001eec <scanString+0xcc>           
 8001f50:	e3 ff ff f2 	bi 8001f18 <scanString+0xf8>                   
                                                                      

08001f54 <scangr>: FILE *fp, struct group *grp, char *buffer, size_t bufsize ) {
 8001f54:	37 9c ff d8 	addi sp,sp,-40                                 
 8001f58:	5b 8b 00 18 	sw (sp+24),r11                                 
 8001f5c:	5b 8c 00 14 	sw (sp+20),r12                                 
 8001f60:	5b 8d 00 10 	sw (sp+16),r13                                 
 8001f64:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8001f68:	5b 8f 00 08 	sw (sp+8),r15                                  
 8001f6c:	5b 9d 00 04 	sw (sp+4),ra                                   
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
 8001f70:	37 8c 00 20 	addi r12,sp,32                                 
 8001f74:	37 8b 00 1c 	addi r11,sp,28                                 
  FILE *fp,                                                           
  struct group *grp,                                                  
  char *buffer,                                                       
  size_t bufsize                                                      
)                                                                     
{                                                                     
 8001f78:	5b 83 00 20 	sw (sp+32),r3                                  
 8001f7c:	5b 84 00 1c 	sw (sp+28),r4                                  
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
 8001f80:	b9 80 18 00 	mv r3,r12                                      
 8001f84:	b9 60 20 00 	mv r4,r11                                      
 8001f88:	34 05 00 00 	mvi r5,0                                       
  FILE *fp,                                                           
  struct group *grp,                                                  
  char *buffer,                                                       
  size_t bufsize                                                      
)                                                                     
{                                                                     
 8001f8c:	b8 20 70 00 	mv r14,r1                                      
 8001f90:	b8 40 78 00 	mv r15,r2                                      
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
 8001f94:	fb ff ff a3 	calli 8001e20 <scanString>                     
   || !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)          
   || !scanInt(fp, &grgid)                                            
   || !scanString(fp, &grmem, &buffer, &bufsize, 1))                  
    return 0;                                                         
 8001f98:	34 0d 00 00 	mvi r13,0                                      
{                                                                     
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
 8001f9c:	5c 20 00 0a 	bne r1,r0,8001fc4 <scangr+0x70>                
      grp->gr_mem[memcount++] = cp + 1;                               
    }                                                                 
  }                                                                   
  grp->gr_mem[memcount] = NULL;                                       
  return 1;                                                           
}                                                                     
 8001fa0:	b9 a0 08 00 	mv r1,r13                                      
 8001fa4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001fa8:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8001fac:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8001fb0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8001fb4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8001fb8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8001fbc:	37 9c 00 28 	addi sp,sp,40                                  
 8001fc0:	c3 a0 00 00 	ret                                            
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
   || !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)          
 8001fc4:	b9 c0 08 00 	mv r1,r14                                      
 8001fc8:	35 e2 00 04 	addi r2,r15,4                                  
 8001fcc:	b9 80 18 00 	mv r3,r12                                      
 8001fd0:	b9 60 20 00 	mv r4,r11                                      
 8001fd4:	34 05 00 00 	mvi r5,0                                       
 8001fd8:	fb ff ff 92 	calli 8001e20 <scanString>                     
 8001fdc:	44 20 ff f1 	be r1,r0,8001fa0 <scangr+0x4c>                 <== NEVER TAKEN
   || !scanInt(fp, &grgid)                                            
 8001fe0:	b9 c0 08 00 	mv r1,r14                                      
 8001fe4:	37 82 00 28 	addi r2,sp,40                                  
 8001fe8:	fb ff ff 35 	calli 8001cbc <scanInt>                        
 8001fec:	44 20 ff ed 	be r1,r0,8001fa0 <scangr+0x4c>                 <== NEVER TAKEN
   || !scanString(fp, &grmem, &buffer, &bufsize, 1))                  
 8001ff0:	b9 c0 08 00 	mv r1,r14                                      
 8001ff4:	37 82 00 24 	addi r2,sp,36                                  
 8001ff8:	b9 80 18 00 	mv r3,r12                                      
 8001ffc:	b9 60 20 00 	mv r4,r11                                      
 8002000:	34 05 00 01 	mvi r5,1                                       
 8002004:	fb ff ff 87 	calli 8001e20 <scanString>                     
 8002008:	44 20 ff e6 	be r1,r0,8001fa0 <scangr+0x4c>                 <== NEVER TAKEN
    return 0;                                                         
  grp->gr_gid = grgid;                                                
 800200c:	2b 81 00 28 	lw r1,(sp+40)                                  
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8002010:	2b 85 00 24 	lw r5,(sp+36)                                  
 8002014:	34 03 00 17 	mvi r3,23                                      
  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;                                                
 8002018:	0d e1 00 08 	sh (r15+8),r1                                  
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 800201c:	40 a1 00 00 	lbu r1,(r5+0)                                  
 8002020:	44 20 00 0c 	be r1,r0,8002050 <scangr+0xfc>                 <== NEVER TAKEN
 8002024:	b8 a0 10 00 	mv r2,r5                                       
 8002028:	34 03 00 01 	mvi r3,1                                       
 800202c:	34 42 00 01 	addi r2,r2,1                                   
    if(*cp == ',')                                                    
      memcount++;                                                     
 8002030:	64 24 00 2c 	cmpei r4,r1,44                                 
  grp->gr_gid = grgid;                                                
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8002034:	40 41 00 00 	lbu r1,(r2+0)                                  
    if(*cp == ',')                                                    
      memcount++;                                                     
 8002038:	b4 64 18 00 	add r3,r3,r4                                   
  grp->gr_gid = grgid;                                                
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 800203c:	5c 20 ff fc 	bne r1,r0,800202c <scangr+0xd8>                
 8002040:	34 63 00 01 	addi r3,r3,1                                   
 8002044:	b4 63 18 00 	add r3,r3,r3                                   
 8002048:	b4 63 18 00 	add r3,r3,r3                                   
 800204c:	34 63 00 0f 	addi r3,r3,15                                  
  }                                                                   
                                                                      
  /*                                                                  
   * Hack to produce (hopefully) a suitably-aligned array of pointers 
   */                                                                 
  if (bufsize < (((memcount+1)*sizeof(char *)) + 15))                 
 8002050:	2b 81 00 1c 	lw r1,(sp+28)                                  
    return 0;                                                         
 8002054:	34 0d 00 00 	mvi r13,0                                      
  }                                                                   
                                                                      
  /*                                                                  
   * Hack to produce (hopefully) a suitably-aligned array of pointers 
   */                                                                 
  if (bufsize < (((memcount+1)*sizeof(char *)) + 15))                 
 8002058:	54 61 ff d2 	bgu r3,r1,8001fa0 <scangr+0x4c>                <== NEVER TAKEN
    return 0;                                                         
  grp->gr_mem = (char **)(((uintptr_t)buffer + 15) & ~15);            
 800205c:	2b 84 00 20 	lw r4,(sp+32)                                  
 8002060:	34 01 ff f0 	mvi r1,-16                                     
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8002064:	34 03 00 04 	mvi r3,4                                       
  /*                                                                  
   * Hack to produce (hopefully) a suitably-aligned array of pointers 
   */                                                                 
  if (bufsize < (((memcount+1)*sizeof(char *)) + 15))                 
    return 0;                                                         
  grp->gr_mem = (char **)(((uintptr_t)buffer + 15) & ~15);            
 8002068:	34 84 00 0f 	addi r4,r4,15                                  
 800206c:	a0 81 20 00 	and r4,r4,r1                                   
 8002070:	59 e4 00 0c 	sw (r15+12),r4                                 
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
 8002074:	58 85 00 00 	sw (r4+0),r5                                   
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8002078:	2b 81 00 24 	lw r1,(sp+36)                                  
 800207c:	40 22 00 00 	lbu r2,(r1+0)                                  
 8002080:	44 40 00 0b 	be r2,r0,80020ac <scangr+0x158>                <== NEVER TAKEN
}                                                                     
                                                                      
/*                                                                    
 * Extract a single group record from the database                    
 */                                                                   
static int scangr(                                                    
 8002084:	34 21 00 01 	addi r1,r1,1                                   
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8002088:	34 03 00 01 	mvi r3,1                                       
    if(*cp == ',') {                                                  
 800208c:	34 04 00 2c 	mvi r4,44                                      
 8002090:	44 44 00 0b 	be r2,r4,80020bc <scangr+0x168>                
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8002094:	40 22 00 00 	lbu r2,(r1+0)                                  
 8002098:	34 21 00 01 	addi r1,r1,1                                   
 800209c:	5c 40 ff fd 	bne r2,r0,8002090 <scangr+0x13c>               
 80020a0:	29 e4 00 0c 	lw r4,(r15+12)                                 
 80020a4:	b4 63 18 00 	add r3,r3,r3                                   
 80020a8:	b4 63 18 00 	add r3,r3,r3                                   
    if(*cp == ',') {                                                  
      *cp = '\0';                                                     
      grp->gr_mem[memcount++] = cp + 1;                               
    }                                                                 
  }                                                                   
  grp->gr_mem[memcount] = NULL;                                       
 80020ac:	b4 83 18 00 	add r3,r4,r3                                   
 80020b0:	58 60 00 00 	sw (r3+0),r0                                   
  return 1;                                                           
 80020b4:	34 0d 00 01 	mvi r13,1                                      
 80020b8:	e3 ff ff ba 	bi 8001fa0 <scangr+0x4c>                       
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
    if(*cp == ',') {                                                  
      *cp = '\0';                                                     
 80020bc:	30 20 ff ff 	sb (r1+-1),r0                                  
      grp->gr_mem[memcount++] = cp + 1;                               
 80020c0:	29 e5 00 0c 	lw r5,(r15+12)                                 
 80020c4:	b4 63 10 00 	add r2,r3,r3                                   
 80020c8:	b4 42 10 00 	add r2,r2,r2                                   
 80020cc:	b4 a2 10 00 	add r2,r5,r2                                   
 80020d0:	58 41 00 00 	sw (r2+0),r1                                   
 80020d4:	34 63 00 01 	addi r3,r3,1                                   
 80020d8:	e3 ff ff ef 	bi 8002094 <scangr+0x140>                      
                                                                      

080020dc <scanpw>: FILE *fp, struct passwd *pwd, char *buffer, size_t bufsize ) {
 80020dc:	37 9c ff d8 	addi sp,sp,-40                                 
 80020e0:	5b 8b 00 18 	sw (sp+24),r11                                 
 80020e4:	5b 8c 00 14 	sw (sp+20),r12                                 
 80020e8:	5b 8d 00 10 	sw (sp+16),r13                                 
 80020ec:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80020f0:	5b 8f 00 08 	sw (sp+8),r15                                  
 80020f4:	5b 9d 00 04 	sw (sp+4),ra                                   
  int pwuid, pwgid;                                                   
                                                                      
  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)            
 80020f8:	37 8c 00 20 	addi r12,sp,32                                 
 80020fc:	37 8b 00 1c 	addi r11,sp,28                                 
  FILE *fp,                                                           
  struct passwd *pwd,                                                 
  char *buffer,                                                       
  size_t bufsize                                                      
)                                                                     
{                                                                     
 8002100:	5b 83 00 20 	sw (sp+32),r3                                  
 8002104:	5b 84 00 1c 	sw (sp+28),r4                                  
  int pwuid, pwgid;                                                   
                                                                      
  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)            
 8002108:	b9 80 18 00 	mv r3,r12                                      
 800210c:	b9 60 20 00 	mv r4,r11                                      
 8002110:	34 05 00 00 	mvi r5,0                                       
  FILE *fp,                                                           
  struct passwd *pwd,                                                 
  char *buffer,                                                       
  size_t bufsize                                                      
)                                                                     
{                                                                     
 8002114:	b8 20 68 00 	mv r13,r1                                      
 8002118:	b8 40 70 00 	mv r14,r2                                      
  int pwuid, pwgid;                                                   
                                                                      
  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)            
 800211c:	fb ff ff 41 	calli 8001e20 <scanString>                     
   || !scanInt(fp, &pwgid)                                            
   || !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)         
   || !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)           
   || !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)             
   || !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))          
    return 0;                                                         
 8002120:	34 0f 00 00 	mvi r15,0                                      
  size_t bufsize                                                      
)                                                                     
{                                                                     
  int pwuid, pwgid;                                                   
                                                                      
  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)            
 8002124:	5c 20 00 0a 	bne r1,r0,800214c <scanpw+0x70>                
   || !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))          
    return 0;                                                         
  pwd->pw_uid = pwuid;                                                
  pwd->pw_gid = pwgid;                                                
  return 1;                                                           
}                                                                     
 8002128:	b9 e0 08 00 	mv r1,r15                                      
 800212c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002130:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8002134:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8002138:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800213c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8002140:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8002144:	37 9c 00 28 	addi sp,sp,40                                  
 8002148:	c3 a0 00 00 	ret                                            
)                                                                     
{                                                                     
  int pwuid, pwgid;                                                   
                                                                      
  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)            
   || !scanString(fp, &pwd->pw_passwd, &buffer, &bufsize, 0)          
 800214c:	b9 a0 08 00 	mv r1,r13                                      
 8002150:	35 c2 00 04 	addi r2,r14,4                                  
 8002154:	b9 80 18 00 	mv r3,r12                                      
 8002158:	b9 60 20 00 	mv r4,r11                                      
 800215c:	34 05 00 00 	mvi r5,0                                       
 8002160:	fb ff ff 30 	calli 8001e20 <scanString>                     
 8002164:	44 20 ff f1 	be r1,r0,8002128 <scanpw+0x4c>                 <== NEVER TAKEN
   || !scanInt(fp, &pwuid)                                            
 8002168:	b9 a0 08 00 	mv r1,r13                                      
 800216c:	37 82 00 28 	addi r2,sp,40                                  
 8002170:	fb ff fe d3 	calli 8001cbc <scanInt>                        
 8002174:	44 20 ff ed 	be r1,r0,8002128 <scanpw+0x4c>                 
   || !scanInt(fp, &pwgid)                                            
 8002178:	b9 a0 08 00 	mv r1,r13                                      
 800217c:	37 82 00 24 	addi r2,sp,36                                  
 8002180:	fb ff fe cf 	calli 8001cbc <scanInt>                        
 8002184:	44 20 ff e9 	be r1,r0,8002128 <scanpw+0x4c>                 
   || !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)         
 8002188:	b9 a0 08 00 	mv r1,r13                                      
 800218c:	35 c2 00 0c 	addi r2,r14,12                                 
 8002190:	b9 80 18 00 	mv r3,r12                                      
 8002194:	b9 60 20 00 	mv r4,r11                                      
 8002198:	34 05 00 00 	mvi r5,0                                       
 800219c:	fb ff ff 21 	calli 8001e20 <scanString>                     
 80021a0:	44 20 ff e2 	be r1,r0,8002128 <scanpw+0x4c>                 <== NEVER TAKEN
   || !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)           
 80021a4:	b9 a0 08 00 	mv r1,r13                                      
 80021a8:	35 c2 00 10 	addi r2,r14,16                                 
 80021ac:	b9 80 18 00 	mv r3,r12                                      
 80021b0:	b9 60 20 00 	mv r4,r11                                      
 80021b4:	34 05 00 00 	mvi r5,0                                       
 80021b8:	fb ff ff 1a 	calli 8001e20 <scanString>                     
 80021bc:	44 20 ff db 	be r1,r0,8002128 <scanpw+0x4c>                 <== NEVER TAKEN
   || !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)             
 80021c0:	b9 a0 08 00 	mv r1,r13                                      
 80021c4:	35 c2 00 14 	addi r2,r14,20                                 
 80021c8:	b9 80 18 00 	mv r3,r12                                      
 80021cc:	b9 60 20 00 	mv r4,r11                                      
 80021d0:	34 05 00 00 	mvi r5,0                                       
 80021d4:	fb ff ff 13 	calli 8001e20 <scanString>                     
 80021d8:	44 20 ff d4 	be r1,r0,8002128 <scanpw+0x4c>                 <== NEVER TAKEN
   || !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))          
 80021dc:	b9 a0 08 00 	mv r1,r13                                      
 80021e0:	35 c2 00 18 	addi r2,r14,24                                 
 80021e4:	b9 80 18 00 	mv r3,r12                                      
 80021e8:	b9 60 20 00 	mv r4,r11                                      
 80021ec:	34 05 00 01 	mvi r5,1                                       
 80021f0:	fb ff ff 0c 	calli 8001e20 <scanString>                     
 80021f4:	44 20 ff cd 	be r1,r0,8002128 <scanpw+0x4c>                 
    return 0;                                                         
  pwd->pw_uid = pwuid;                                                
 80021f8:	2b 81 00 28 	lw r1,(sp+40)                                  
  pwd->pw_gid = pwgid;                                                
  return 1;                                                           
 80021fc:	34 0f 00 01 	mvi r15,1                                      
   || !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)         
   || !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)           
   || !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)             
   || !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))          
    return 0;                                                         
  pwd->pw_uid = pwuid;                                                
 8002200:	0d c1 00 08 	sh (r14+8),r1                                  
  pwd->pw_gid = pwgid;                                                
 8002204:	2b 81 00 24 	lw r1,(sp+36)                                  
 8002208:	0d c1 00 0a 	sh (r14+10),r1                                 
  return 1;                                                           
 800220c:	e3 ff ff c7 	bi 8002128 <scanpw+0x4c>                       
                                                                      

08003d48 <sched_get_priority_max>: #include <rtems/posix/priority.h> int sched_get_priority_max( int policy ) {
 8003d48:	37 9c ff fc 	addi sp,sp,-4                                  
 8003d4c:	5b 9d 00 04 	sw (sp+4),ra                                   
  switch ( policy ) {                                                 
 8003d50:	48 01 00 05 	bg r0,r1,8003d64 <sched_get_priority_max+0x1c> 
 8003d54:	34 02 00 02 	mvi r2,2                                       
 8003d58:	4c 41 00 08 	bge r2,r1,8003d78 <sched_get_priority_max+0x30>
 8003d5c:	34 02 00 04 	mvi r2,4                                       
 8003d60:	44 22 00 06 	be r1,r2,8003d78 <sched_get_priority_max+0x30> <== ALWAYS TAKEN
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8003d64:	f8 00 27 af 	calli 800dc20 <__errno>                        
 8003d68:	34 02 00 16 	mvi r2,22                                      
 8003d6c:	58 22 00 00 	sw (r1+0),r2                                   
 8003d70:	34 01 ff ff 	mvi r1,-1                                      
 8003d74:	e0 00 00 05 	bi 8003d88 <sched_get_priority_max+0x40>       
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MAXIMUM_PRIORITY;                            
 8003d78:	78 01 08 02 	mvhi r1,0x802                                  
 8003d7c:	38 21 01 14 	ori r1,r1,0x114                                
 8003d80:	40 21 00 00 	lbu r1,(r1+0)                                  
 8003d84:	34 21 ff ff 	addi r1,r1,-1                                  
}                                                                     
 8003d88:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d8c:	37 9c 00 04 	addi sp,sp,4                                   
 8003d90:	c3 a0 00 00 	ret                                            
                                                                      

08003d94 <sched_get_priority_min>: #include <rtems/posix/priority.h> int sched_get_priority_min( int policy ) {
 8003d94:	37 9c ff fc 	addi sp,sp,-4                                  
 8003d98:	5b 9d 00 04 	sw (sp+4),ra                                   
  switch ( policy ) {                                                 
 8003d9c:	48 01 00 05 	bg r0,r1,8003db0 <sched_get_priority_min+0x1c> 
 8003da0:	34 02 00 02 	mvi r2,2                                       
 8003da4:	4c 41 00 08 	bge r2,r1,8003dc4 <sched_get_priority_min+0x30><== ALWAYS TAKEN
 8003da8:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8003dac:	44 22 00 06 	be r1,r2,8003dc4 <sched_get_priority_min+0x30> <== NOT EXECUTED
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8003db0:	f8 00 27 9c 	calli 800dc20 <__errno>                        
 8003db4:	34 02 00 16 	mvi r2,22                                      
 8003db8:	58 22 00 00 	sw (r1+0),r2                                   
 8003dbc:	34 01 ff ff 	mvi r1,-1                                      
 8003dc0:	e0 00 00 02 	bi 8003dc8 <sched_get_priority_min+0x34>       
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MINIMUM_PRIORITY;                            
 8003dc4:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 8003dc8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003dcc:	37 9c 00 04 	addi sp,sp,4                                   
 8003dd0:	c3 a0 00 00 	ret                                            
                                                                      

08003dd4 <sched_rr_get_interval>: int sched_rr_get_interval( pid_t pid, struct timespec *interval ) {
 8003dd4:	37 9c ff f4 	addi sp,sp,-12                                 
 8003dd8:	5b 8b 00 08 	sw (sp+8),r11                                  
 8003ddc:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003de0:	b8 20 58 00 	mv r11,r1                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
                                                                      
  if ( pid && pid != getpid() )                                       
 8003de4:	5c 20 00 0b 	bne r1,r0,8003e10 <sched_rr_get_interval+0x3c> <== ALWAYS TAKEN
    rtems_set_errno_and_return_minus_one( ESRCH );                    
                                                                      
  if ( !interval )                                                    
 8003de8:	44 40 00 13 	be r2,r0,8003e34 <sched_rr_get_interval+0x60>  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );      
 8003dec:	78 01 08 02 	mvhi r1,0x802                                  
 8003df0:	38 21 08 60 	ori r1,r1,0x860                                
 8003df4:	28 21 00 00 	lw r1,(r1+0)                                   
 8003df8:	f8 00 0e ae 	calli 80078b0 <_Timespec_From_ticks>           
  return 0;                                                           
 8003dfc:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003e00:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003e04:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003e08:	37 9c 00 0c 	addi sp,sp,12                                  
 8003e0c:	c3 a0 00 00 	ret                                            
{                                                                     
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
                                                                      
  if ( pid && pid != getpid() )                                       
 8003e10:	5b 82 00 0c 	sw (sp+12),r2                                  
 8003e14:	fb ff f8 16 	calli 8001e6c <getpid>                         
 8003e18:	2b 82 00 0c 	lw r2,(sp+12)                                  
 8003e1c:	44 2b ff f3 	be r1,r11,8003de8 <sched_rr_get_interval+0x14> 
    rtems_set_errno_and_return_minus_one( ESRCH );                    
 8003e20:	f8 00 27 80 	calli 800dc20 <__errno>                        
 8003e24:	34 02 00 03 	mvi r2,3                                       
 8003e28:	58 22 00 00 	sw (r1+0),r2                                   
 8003e2c:	34 01 ff ff 	mvi r1,-1                                      
 8003e30:	e3 ff ff f4 	bi 8003e00 <sched_rr_get_interval+0x2c>        
                                                                      
  if ( !interval )                                                    
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8003e34:	f8 00 27 7b 	calli 800dc20 <__errno>                        
 8003e38:	34 02 00 16 	mvi r2,22                                      
 8003e3c:	58 22 00 00 	sw (r1+0),r2                                   
 8003e40:	34 01 ff ff 	mvi r1,-1                                      
 8003e44:	e3 ff ff ef 	bi 8003e00 <sched_rr_get_interval+0x2c>        
                                                                      

080061bc <sem_open>: int oflag, ... /* mode_t mode, */ /* unsigned int value */ ) {
 80061bc:	37 9c ff c0 	addi sp,sp,-64                                 
 80061c0:	5b 8b 00 18 	sw (sp+24),r11                                 
 80061c4:	5b 8c 00 14 	sw (sp+20),r12                                 
 80061c8:	5b 8d 00 10 	sw (sp+16),r13                                 
 80061cc:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80061d0:	5b 8f 00 08 	sw (sp+8),r15                                  
 80061d4:	5b 9d 00 04 	sw (sp+4),ra                                   
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80061d8:	78 09 08 02 	mvhi r9,0x802                                  
 80061dc:	39 29 4a c0 	ori r9,r9,0x4ac0                               
 80061e0:	29 2a 00 00 	lw r10,(r9+0)                                  
 80061e4:	b8 20 70 00 	mv r14,r1                                      
 80061e8:	5b 82 00 28 	sw (sp+40),r2                                  
 80061ec:	35 41 00 01 	addi r1,r10,1                                  
 80061f0:	5b 83 00 2c 	sw (sp+44),r3                                  
 80061f4:	5b 84 00 30 	sw (sp+48),r4                                  
 80061f8:	5b 85 00 34 	sw (sp+52),r5                                  
 80061fc:	5b 86 00 38 	sw (sp+56),r6                                  
 8006200:	5b 87 00 3c 	sw (sp+60),r7                                  
 8006204:	5b 88 00 40 	sw (sp+64),r8                                  
 8006208:	b8 40 60 00 	mv r12,r2                                      
 800620c:	59 21 00 00 	sw (r9+0),r1                                   
  POSIX_Semaphore_Control   *the_semaphore;                           
  Objects_Locations          location;                                
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 8006210:	20 4d 02 00 	andi r13,r2,0x200                              
  /* unsigned int value */                                            
)                                                                     
{                                                                     
  va_list                    arg;                                     
  mode_t                     mode;                                    
  unsigned int               value = 0;                               
 8006214:	34 0f 00 00 	mvi r15,0                                      
  POSIX_Semaphore_Control   *the_semaphore;                           
  Objects_Locations          location;                                
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 8006218:	5d a0 00 2d 	bne r13,r0,80062cc <sem_open+0x110>            
    mode = (mode_t) va_arg( arg, unsigned int );                      
    value = va_arg( arg, unsigned int );                              
    va_end(arg);                                                      
  }                                                                   
                                                                      
  status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );    
 800621c:	b9 c0 08 00 	mv r1,r14                                      
 8006220:	37 82 00 24 	addi r2,sp,36                                  
 8006224:	f8 00 1c 3a 	calli 800d30c <_POSIX_Semaphore_Name_to_id>    
 8006228:	b8 20 58 00 	mv r11,r1                                      
   *  and we can just return a pointer to the id.  Otherwise we may   
   *  need to check to see if this is a "semaphore does not exist"    
   *  or some other miscellaneous error on the name.                  
   */                                                                 
                                                                      
  if ( status ) {                                                     
 800622c:	44 20 00 10 	be r1,r0,800626c <sem_open+0xb0>               
    /*                                                                
     * Unless provided a valid name that did not already exist        
     * and we are willing to create then it is an error.              
     */                                                               
                                                                      
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
 8006230:	34 01 00 02 	mvi r1,2                                       
 8006234:	5d 61 00 02 	bne r11,r1,800623c <sem_open+0x80>             <== NEVER TAKEN
 8006238:	5d a0 00 27 	bne r13,r0,80062d4 <sem_open+0x118>            
      _Thread_Enable_dispatch();                                      
 800623c:	f8 00 0b 74 	calli 800900c <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( status, sem_t * );   
 8006240:	f8 00 2b ac 	calli 80110f0 <__errno>                        
 8006244:	58 2b 00 00 	sw (r1+0),r11                                  
 8006248:	34 01 ff ff 	mvi r1,-1                                      
    id = &the_semaphore->Semaphore_id;                                
  #else                                                               
    id = (sem_t *)&the_semaphore->Object.id;                          
  #endif                                                              
  return id;                                                          
}                                                                     
 800624c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006250:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8006254:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8006258:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800625c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8006260:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8006264:	37 9c 00 40 	addi sp,sp,64                                  
 8006268:	c3 a0 00 00 	ret                                            
                                                                      
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
                                                                      
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
 800626c:	21 8c 0a 00 	andi r12,r12,0xa00                             
 8006270:	34 01 0a 00 	mvi r1,2560                                    
 8006274:	45 81 00 22 	be r12,r1,80062fc <sem_open+0x140>             
 8006278:	2b 82 00 24 	lw r2,(sp+36)                                  
 800627c:	78 01 08 02 	mvhi r1,0x802                                  
 8006280:	37 83 00 1c 	addi r3,sp,28                                  
 8006284:	38 21 4c f4 	ori r1,r1,0x4cf4                               
 8006288:	f8 00 07 98 	calli 80080e8 <_Objects_Get>                   
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
    }                                                                 
                                                                      
    the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location );
    the_semaphore->open_count += 1;                                   
 800628c:	28 22 00 18 	lw r2,(r1+24)                                  
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
    }                                                                 
                                                                      
    the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location );
 8006290:	5b 81 00 20 	sw (sp+32),r1                                  
    the_semaphore->open_count += 1;                                   
 8006294:	34 42 00 01 	addi r2,r2,1                                   
 8006298:	58 22 00 18 	sw (r1+24),r2                                  
    _Thread_Enable_dispatch();                                        
 800629c:	f8 00 0b 5c 	calli 800900c <_Thread_Enable_dispatch>        
    _Thread_Enable_dispatch();                                        
 80062a0:	f8 00 0b 5b 	calli 800900c <_Thread_Enable_dispatch>        
return_id:                                                            
  #if defined(RTEMS_USE_16_BIT_OBJECT)                                
    the_semaphore->Semaphore_id = the_semaphore->Object.id;           
    id = &the_semaphore->Semaphore_id;                                
  #else                                                               
    id = (sem_t *)&the_semaphore->Object.id;                          
 80062a4:	2b 81 00 20 	lw r1,(sp+32)                                  
 80062a8:	34 21 00 08 	addi r1,r1,8                                   
  #endif                                                              
  return id;                                                          
}                                                                     
 80062ac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80062b0:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80062b4:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80062b8:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80062bc:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80062c0:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80062c4:	37 9c 00 40 	addi sp,sp,64                                  
 80062c8:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
    va_start(arg, oflag);                                             
    mode = (mode_t) va_arg( arg, unsigned int );                      
    value = va_arg( arg, unsigned int );                              
 80062cc:	2b 8f 00 30 	lw r15,(sp+48)                                 
 80062d0:	e3 ff ff d3 	bi 800621c <sem_open+0x60>                     
  /*                                                                  
   *  At this point, the semaphore does not exist and everything has been
   *  checked. We should go ahead and create a semaphore.             
   */                                                                 
                                                                      
  status =_POSIX_Semaphore_Create_support(                            
 80062d4:	34 02 00 00 	mvi r2,0                                       
 80062d8:	b9 e0 18 00 	mv r3,r15                                      
 80062dc:	37 84 00 20 	addi r4,sp,32                                  
 80062e0:	b9 c0 08 00 	mv r1,r14                                      
 80062e4:	f8 00 1b 9c 	calli 800d154 <_POSIX_Semaphore_Create_support>
 80062e8:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
                                                                      
  _Thread_Enable_dispatch();                                          
 80062ec:	f8 00 0b 48 	calli 800900c <_Thread_Enable_dispatch>        
                                                                      
  if ( status == -1 )                                                 
    return SEM_FAILED;                                                
 80062f0:	34 01 ff ff 	mvi r1,-1                                      
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  if ( status == -1 )                                                 
 80062f4:	5d 61 ff ec 	bne r11,r1,80062a4 <sem_open+0xe8>             
 80062f8:	e3 ff ff ed 	bi 80062ac <sem_open+0xf0>                     
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
                                                                      
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _Thread_Enable_dispatch();                                      
 80062fc:	f8 00 0b 44 	calli 800900c <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
 8006300:	f8 00 2b 7c 	calli 80110f0 <__errno>                        
 8006304:	34 02 00 11 	mvi r2,17                                      
 8006308:	58 22 00 00 	sw (r1+0),r2                                   
 800630c:	34 01 ff ff 	mvi r1,-1                                      
 8006310:	e3 ff ff e7 	bi 80062ac <sem_open+0xf0>                     
                                                                      

08006378 <sem_timedwait>: int sem_timedwait( sem_t *sem, const struct timespec *abstime ) {
 8006378:	37 9c ff f4 	addi sp,sp,-12                                 
 800637c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8006380:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006384:	b8 20 58 00 	mv r11,r1                                      
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
 8006388:	b8 40 08 00 	mv r1,r2                                       
 800638c:	37 82 00 0c 	addi r2,sp,12                                  
 8006390:	f8 00 18 31 	calli 800c454 <_POSIX_Absolute_timeout_to_ticks>
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
 8006394:	34 02 00 03 	mvi r2,3                                       
 8006398:	44 22 00 09 	be r1,r2,80063bc <sem_timedwait+0x44>          <== ALWAYS TAKEN
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 
 800639c:	2b 83 00 0c 	lw r3,(sp+12)                                  <== NOT EXECUTED
 80063a0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80063a4:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 80063a8:	f8 00 1b ff 	calli 800d3a4 <_POSIX_Semaphore_Wait_support>  <== NOT EXECUTED
         lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )               
      rtems_set_errno_and_return_minus_one( ETIMEDOUT );              
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 80063ac:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80063b0:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 80063b4:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 80063b8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 
 80063bc:	2b 83 00 0c 	lw r3,(sp+12)                                  
 80063c0:	b9 60 08 00 	mv r1,r11                                      
 80063c4:	34 02 00 01 	mvi r2,1                                       
 80063c8:	f8 00 1b f7 	calli 800d3a4 <_POSIX_Semaphore_Wait_support>  
         lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )               
      rtems_set_errno_and_return_minus_one( ETIMEDOUT );              
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 80063cc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80063d0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80063d4:	37 9c 00 0c 	addi sp,sp,12                                  
 80063d8:	c3 a0 00 00 	ret                                            
                                                                      

08003c94 <sigaction>: int sigaction( int sig, const struct sigaction *act, struct sigaction *oact ) {
 8003c94:	37 9c ff f0 	addi sp,sp,-16                                 
 8003c98:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003c9c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003ca0:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003ca4:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003ca8:	b8 20 58 00 	mv r11,r1                                      
 8003cac:	b8 40 60 00 	mv r12,r2                                      
  ISR_Level     level;                                                
                                                                      
  if ( oact )                                                         
 8003cb0:	44 60 00 0e 	be r3,r0,8003ce8 <sigaction+0x54>              
    *oact = _POSIX_signals_Vectors[ sig ];                            
 8003cb4:	b4 21 08 00 	add r1,r1,r1                                   
 8003cb8:	b4 2b 08 00 	add r1,r1,r11                                  
 8003cbc:	78 02 08 02 	mvhi r2,0x802                                  
 8003cc0:	b4 21 08 00 	add r1,r1,r1                                   
 8003cc4:	38 42 1e 10 	ori r2,r2,0x1e10                               
 8003cc8:	b4 21 08 00 	add r1,r1,r1                                   
 8003ccc:	b4 41 08 00 	add r1,r2,r1                                   
 8003cd0:	28 22 00 00 	lw r2,(r1+0)                                   
 8003cd4:	58 62 00 00 	sw (r3+0),r2                                   
 8003cd8:	28 22 00 04 	lw r2,(r1+4)                                   
 8003cdc:	58 62 00 04 	sw (r3+4),r2                                   
 8003ce0:	28 21 00 08 	lw r1,(r1+8)                                   
 8003ce4:	58 61 00 08 	sw (r3+8),r1                                   
                                                                      
  if ( !sig )                                                         
 8003ce8:	45 60 00 04 	be r11,r0,8003cf8 <sigaction+0x64>             
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 8003cec:	35 61 ff ff 	addi r1,r11,-1                                 
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
 8003cf0:	34 02 00 1f 	mvi r2,31                                      
 8003cf4:	50 41 00 06 	bgeu r2,r1,8003d0c <sigaction+0x78>            
   *  NOTE: Solaris documentation claims to "silently enforce" this which
   *        contradicts the POSIX specification.                      
   */                                                                 
                                                                      
  if ( sig == SIGKILL )                                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8003cf8:	f8 00 29 3e 	calli 800e1f0 <__errno>                        
 8003cfc:	34 02 00 16 	mvi r2,22                                      
 8003d00:	58 22 00 00 	sw (r1+0),r2                                   
 8003d04:	34 01 ff ff 	mvi r1,-1                                      
 8003d08:	e0 00 00 1c 	bi 8003d78 <sigaction+0xe4>                    
   *                                                                  
   *  NOTE: Solaris documentation claims to "silently enforce" this which
   *        contradicts the POSIX specification.                      
   */                                                                 
                                                                      
  if ( sig == SIGKILL )                                               
 8003d0c:	34 01 00 09 	mvi r1,9                                       
 8003d10:	45 61 ff fa 	be r11,r1,8003cf8 <sigaction+0x64>             
   *      now (signals not posted when SIG_IGN).                      
   *    + If we are now ignoring a signal that was previously pending,
   *      we clear the pending signal indicator.                      
   */                                                                 
                                                                      
  return 0;                                                           
 8003d14:	34 01 00 00 	mvi r1,0                                       
  /*                                                                  
   *  Evaluate the new action structure and set the global signal vector
   *  appropriately.                                                  
   */                                                                 
                                                                      
  if ( act ) {                                                        
 8003d18:	45 80 00 18 	be r12,r0,8003d78 <sigaction+0xe4>             <== NEVER TAKEN
    /*                                                                
     *  Unless the user is installing the default signal actions, then
     *  we can just copy the provided sigaction structure into the vectors.
     */                                                               
                                                                      
    _ISR_Disable( level );                                            
 8003d1c:	90 00 68 00 	rcsr r13,IE                                    
 8003d20:	34 01 ff fe 	mvi r1,-2                                      
 8003d24:	a1 a1 08 00 	and r1,r13,r1                                  
 8003d28:	d0 01 00 00 	wcsr IE,r1                                     
      if ( act->sa_handler == SIG_DFL ) {                             
 8003d2c:	29 81 00 08 	lw r1,(r12+8)                                  
 8003d30:	44 20 00 18 	be r1,r0,8003d90 <sigaction+0xfc>              
        _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
      } else {                                                        
         _POSIX_signals_Clear_process_signals( sig );                 
 8003d34:	b9 60 08 00 	mv r1,r11                                      
 8003d38:	f8 00 19 ae 	calli 800a3f0 <_POSIX_signals_Clear_process_signals>
         _POSIX_signals_Vectors[ sig ] = *act;                        
 8003d3c:	b5 6b 08 00 	add r1,r11,r11                                 
 8003d40:	b4 2b 58 00 	add r11,r1,r11                                 
 8003d44:	29 82 00 00 	lw r2,(r12+0)                                  
 8003d48:	78 01 08 02 	mvhi r1,0x802                                  
 8003d4c:	b5 6b 58 00 	add r11,r11,r11                                
 8003d50:	38 21 1e 10 	ori r1,r1,0x1e10                               
 8003d54:	b5 6b 58 00 	add r11,r11,r11                                
 8003d58:	b4 2b 58 00 	add r11,r1,r11                                 
 8003d5c:	59 62 00 00 	sw (r11+0),r2                                  
 8003d60:	29 81 00 04 	lw r1,(r12+4)                                  
 8003d64:	59 61 00 04 	sw (r11+4),r1                                  
 8003d68:	29 81 00 08 	lw r1,(r12+8)                                  
 8003d6c:	59 61 00 08 	sw (r11+8),r1                                  
      }                                                               
    _ISR_Enable( level );                                             
 8003d70:	d0 0d 00 00 	wcsr IE,r13                                    
   *      now (signals not posted when SIG_IGN).                      
   *    + If we are now ignoring a signal that was previously pending,
   *      we clear the pending signal indicator.                      
   */                                                                 
                                                                      
  return 0;                                                           
 8003d74:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003d78:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d7c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003d80:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003d84:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003d88:	37 9c 00 10 	addi sp,sp,16                                  
 8003d8c:	c3 a0 00 00 	ret                                            
     *  we can just copy the provided sigaction structure into the vectors.
     */                                                               
                                                                      
    _ISR_Disable( level );                                            
      if ( act->sa_handler == SIG_DFL ) {                             
        _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
 8003d90:	b5 6b 08 00 	add r1,r11,r11                                 
 8003d94:	b4 2b 58 00 	add r11,r1,r11                                 
 8003d98:	b5 6b 58 00 	add r11,r11,r11                                
 8003d9c:	78 02 08 01 	mvhi r2,0x801                                  
 8003da0:	b5 6b 58 00 	add r11,r11,r11                                
 8003da4:	38 42 f7 18 	ori r2,r2,0xf718                               
 8003da8:	b4 4b 10 00 	add r2,r2,r11                                  
 8003dac:	28 44 00 00 	lw r4,(r2+0)                                   
 8003db0:	28 43 00 04 	lw r3,(r2+4)                                   
 8003db4:	78 01 08 02 	mvhi r1,0x802                                  
 8003db8:	28 42 00 08 	lw r2,(r2+8)                                   
 8003dbc:	38 21 1e 10 	ori r1,r1,0x1e10                               
 8003dc0:	b4 2b 58 00 	add r11,r1,r11                                 
 8003dc4:	59 64 00 00 	sw (r11+0),r4                                  
 8003dc8:	59 63 00 04 	sw (r11+4),r3                                  
 8003dcc:	59 62 00 08 	sw (r11+8),r2                                  
 8003dd0:	e3 ff ff e8 	bi 8003d70 <sigaction+0xdc>                    
                                                                      

0800423c <sigtimedwait>: int sigtimedwait( const sigset_t *set, siginfo_t *info, const struct timespec *timeout ) {
 800423c:	37 9c ff d8 	addi sp,sp,-40                                 
 8004240:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8004244:	5b 8c 00 18 	sw (sp+24),r12                                 
 8004248:	5b 8d 00 14 	sw (sp+20),r13                                 
 800424c:	5b 8e 00 10 	sw (sp+16),r14                                 
 8004250:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8004254:	5b 90 00 08 	sw (sp+8),r16                                  
 8004258:	5b 9d 00 04 	sw (sp+4),ra                                   
 800425c:	b8 20 68 00 	mv r13,r1                                      
 8004260:	b8 40 58 00 	mv r11,r2                                      
 8004264:	b8 60 60 00 	mv r12,r3                                      
  ISR_Level          level;                                           
                                                                      
  /*                                                                  
   *  Error check parameters before disabling interrupts.             
   */                                                                 
  if ( !set )                                                         
 8004268:	44 20 00 70 	be r1,r0,8004428 <sigtimedwait+0x1ec>          
  /*  NOTE: This is very specifically a RELATIVE not ABSOLUTE time    
   *        in the Open Group specification.                          
   */                                                                 
                                                                      
  interval = 0;                                                       
  if ( timeout ) {                                                    
 800426c:	44 60 00 5c 	be r3,r0,80043dc <sigtimedwait+0x1a0>          
                                                                      
    if ( !_Timespec_Is_valid( timeout ) )                             
 8004270:	b8 60 08 00 	mv r1,r3                                       
 8004274:	f8 00 0f 0f 	calli 8007eb0 <_Timespec_Is_valid>             
 8004278:	44 20 00 6c 	be r1,r0,8004428 <sigtimedwait+0x1ec>          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    interval = _Timespec_To_ticks( timeout );                         
 800427c:	b9 80 08 00 	mv r1,r12                                      
 8004280:	f8 00 0f 2e 	calli 8007f38 <_Timespec_To_ticks>             
                                                                      
    if ( !interval )                                                  
 8004284:	44 20 00 69 	be r1,r0,8004428 <sigtimedwait+0x1ec>          <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Initialize local variables.                                     
   */                                                                 
                                                                      
  the_info = ( info ) ? info : &signal_information;                   
 8004288:	45 60 00 57 	be r11,r0,80043e4 <sigtimedwait+0x1a8>         <== NEVER TAKEN
                                                                      
  the_thread = _Thread_Executing;                                     
 800428c:	78 0c 08 02 	mvhi r12,0x802                                 
 8004290:	39 8c 1d c4 	ori r12,r12,0x1dc4                             
 8004294:	29 83 00 0c 	lw r3,(r12+12)                                 
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8004298:	28 6f 01 20 	lw r15,(r3+288)                                
   *  What if they are already pending?                               
   */                                                                 
                                                                      
  /* API signals pending? */                                          
                                                                      
  _ISR_Disable( level );                                              
 800429c:	90 00 80 00 	rcsr r16,IE                                    
 80042a0:	34 02 ff fe 	mvi r2,-2                                      
 80042a4:	a2 02 10 00 	and r2,r16,r2                                  
 80042a8:	d0 02 00 00 	wcsr IE,r2                                     
  if ( *set & api->signals_pending ) {                                
 80042ac:	29 a5 00 00 	lw r5,(r13+0)                                  
 80042b0:	29 e4 00 d4 	lw r4,(r15+212)                                
 80042b4:	a0 a4 10 00 	and r2,r5,r4                                   
 80042b8:	5c 40 00 4d 	bne r2,r0,80043ec <sigtimedwait+0x1b0>         
    return the_info->si_signo;                                        
  }                                                                   
                                                                      
  /* Process pending signals? */                                      
                                                                      
  if ( *set & _POSIX_signals_Pending ) {                              
 80042bc:	78 04 08 02 	mvhi r4,0x802                                  
 80042c0:	38 84 20 04 	ori r4,r4,0x2004                               
 80042c4:	28 84 00 00 	lw r4,(r4+0)                                   
 80042c8:	a0 a4 28 00 	and r5,r5,r4                                   
 80042cc:	5c a2 00 35 	bne r5,r2,80043a0 <sigtimedwait+0x164>         
 80042d0:	78 02 08 02 	mvhi r2,0x802                                  
 80042d4:	38 42 19 18 	ori r2,r2,0x1918                               
 80042d8:	28 44 00 00 	lw r4,(r2+0)                                   
    the_info->si_code = SI_USER;                                      
    the_info->si_value.sival_int = 0;                                 
    return signo;                                                     
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
 80042dc:	34 05 ff ff 	mvi r5,-1                                      
 80042e0:	59 65 00 00 	sw (r11+0),r5                                  
 80042e4:	34 84 00 01 	addi r4,r4,1                                   
 80042e8:	58 44 00 00 	sw (r2+0),r4                                   
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
    the_thread->Wait.return_code     = EINTR;                         
 80042ec:	34 02 00 04 	mvi r2,4                                       
 80042f0:	58 62 00 34 	sw (r3+52),r2                                  
    the_thread->Wait.option          = *set;                          
 80042f4:	29 a4 00 00 	lw r4,(r13+0)                                  
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
 80042f8:	78 02 08 02 	mvhi r2,0x802                                  
 80042fc:	38 42 1f 9c 	ori r2,r2,0x1f9c                               
    the_thread->Wait.return_code     = EINTR;                         
    the_thread->Wait.option          = *set;                          
 8004300:	58 64 00 30 	sw (r3+48),r4                                  
    the_thread->Wait.return_argument = the_info;                      
 8004304:	58 6b 00 28 	sw (r3+40),r11                                 
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
 8004308:	58 62 00 44 	sw (r3+68),r2                                  
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (      
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
 800430c:	34 03 00 01 	mvi r3,1                                       
 8004310:	58 43 00 30 	sw (r2+48),r3                                  
    the_thread->Wait.return_code     = EINTR;                         
    the_thread->Wait.option          = *set;                          
    the_thread->Wait.return_argument = the_info;                      
    _Thread_queue_Enter_critical_section( &_POSIX_signals_Wait_queue );
    _ISR_Enable( level );                                             
 8004314:	d0 10 00 00 	wcsr IE,r16                                    
    _Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval );    
 8004318:	78 03 08 00 	mvhi r3,0x800                                  
 800431c:	b8 20 10 00 	mv r2,r1                                       
 8004320:	78 01 08 02 	mvhi r1,0x802                                  
 8004324:	38 63 7b 2c 	ori r3,r3,0x7b2c                               
 8004328:	38 21 1f 9c 	ori r1,r1,0x1f9c                               
 800432c:	f8 00 0c f3 	calli 80076f8 <_Thread_queue_Enqueue_with_handler>
  _Thread_Enable_dispatch();                                          
 8004330:	f8 00 0b 76 	calli 8007108 <_Thread_Enable_dispatch>        
  /*                                                                  
   * When the thread is set free by a signal, it is need to eliminate 
   * the signal.                                                      
   */                                                                 
                                                                      
  _POSIX_signals_Clear_signals( api, the_info->si_signo, the_info, false, false );
 8004334:	29 62 00 00 	lw r2,(r11+0)                                  
 8004338:	b9 e0 08 00 	mv r1,r15                                      
 800433c:	b9 60 18 00 	mv r3,r11                                      
 8004340:	34 04 00 00 	mvi r4,0                                       
 8004344:	34 05 00 00 	mvi r5,0                                       
 8004348:	f8 00 1a d4 	calli 800ae98 <_POSIX_signals_Clear_signals>   
  /* Set errno only if return code is not EINTR or                    
   * if EINTR was caused by a signal being caught, which              
   * was not in our set.                                              
   */                                                                 
                                                                      
  if ( (_Thread_Executing->Wait.return_code != EINTR)                 
 800434c:	29 81 00 0c 	lw r1,(r12+12)                                 
 8004350:	28 22 00 34 	lw r2,(r1+52)                                  
 8004354:	34 01 00 04 	mvi r1,4                                       
 8004358:	5c 41 00 39 	bne r2,r1,800443c <sigtimedwait+0x200>         
       || !(*set & signo_to_mask( the_info->si_signo )) ) {           
 800435c:	29 6e 00 00 	lw r14,(r11+0)                                 
 8004360:	34 01 00 01 	mvi r1,1                                       
 8004364:	35 c2 ff ff 	addi r2,r14,-1                                 
 8004368:	f8 00 68 09 	calli 801e38c <__ashlsi3>                      
 800436c:	29 a2 00 00 	lw r2,(r13+0)                                  
 8004370:	a0 22 08 00 	and r1,r1,r2                                   
 8004374:	44 20 00 32 	be r1,r0,800443c <sigtimedwait+0x200>          <== NEVER TAKEN
    errno = _Thread_Executing->Wait.return_code;                      
    return -1;                                                        
  }                                                                   
                                                                      
  return the_info->si_signo;                                          
}                                                                     
 8004378:	b9 c0 08 00 	mv r1,r14                                      
 800437c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004380:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8004384:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8004388:	2b 8d 00 14 	lw r13,(sp+20)                                 
 800438c:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8004390:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8004394:	2b 90 00 08 	lw r16,(sp+8)                                  
 8004398:	37 9c 00 28 	addi sp,sp,40                                  
 800439c:	c3 a0 00 00 	ret                                            
  }                                                                   
                                                                      
  /* Process pending signals? */                                      
                                                                      
  if ( *set & _POSIX_signals_Pending ) {                              
    signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );      
 80043a0:	b8 80 08 00 	mv r1,r4                                       
 80043a4:	fb ff ff 86 	calli 80041bc <_POSIX_signals_Get_lowest>      
 80043a8:	b8 20 70 00 	mv r14,r1                                      
    _POSIX_signals_Clear_signals( api, signo, the_info, true, false );
 80043ac:	b9 c0 10 00 	mv r2,r14                                      
 80043b0:	b9 e0 08 00 	mv r1,r15                                      
 80043b4:	b9 60 18 00 	mv r3,r11                                      
 80043b8:	34 04 00 01 	mvi r4,1                                       
 80043bc:	34 05 00 00 	mvi r5,0                                       
 80043c0:	f8 00 1a b6 	calli 800ae98 <_POSIX_signals_Clear_signals>   
    _ISR_Enable( level );                                             
 80043c4:	d0 10 00 00 	wcsr IE,r16                                    
                                                                      
    the_info->si_signo = signo;                                       
    the_info->si_code = SI_USER;                                      
 80043c8:	34 01 00 01 	mvi r1,1                                       
  if ( *set & _POSIX_signals_Pending ) {                              
    signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );      
    _POSIX_signals_Clear_signals( api, signo, the_info, true, false );
    _ISR_Enable( level );                                             
                                                                      
    the_info->si_signo = signo;                                       
 80043cc:	59 6e 00 00 	sw (r11+0),r14                                 
    the_info->si_code = SI_USER;                                      
 80043d0:	59 61 00 04 	sw (r11+4),r1                                  
    the_info->si_value.sival_int = 0;                                 
 80043d4:	59 60 00 08 	sw (r11+8),r0                                  
    return signo;                                                     
 80043d8:	e3 ff ff e8 	bi 8004378 <sigtimedwait+0x13c>                
                                                                      
  /*  NOTE: This is very specifically a RELATIVE not ABSOLUTE time    
   *        in the Open Group specification.                          
   */                                                                 
                                                                      
  interval = 0;                                                       
 80043dc:	34 01 00 00 	mvi r1,0                                       
                                                                      
  /*                                                                  
   *  Initialize local variables.                                     
   */                                                                 
                                                                      
  the_info = ( info ) ? info : &signal_information;                   
 80043e0:	5d 60 ff ab 	bne r11,r0,800428c <sigtimedwait+0x50>         
 80043e4:	37 8b 00 20 	addi r11,sp,32                                 
 80043e8:	e3 ff ff a9 	bi 800428c <sigtimedwait+0x50>                 
  /* API signals pending? */                                          
                                                                      
  _ISR_Disable( level );                                              
  if ( *set & api->signals_pending ) {                                
    /* XXX real info later */                                         
    the_info->si_signo = _POSIX_signals_Get_lowest( api->signals_pending );
 80043ec:	b8 80 08 00 	mv r1,r4                                       
 80043f0:	fb ff ff 73 	calli 80041bc <_POSIX_signals_Get_lowest>      
 80043f4:	b8 20 10 00 	mv r2,r1                                       
 80043f8:	59 61 00 00 	sw (r11+0),r1                                  
    _POSIX_signals_Clear_signals(                                     
 80043fc:	b9 60 18 00 	mv r3,r11                                      
 8004400:	b9 e0 08 00 	mv r1,r15                                      
 8004404:	34 04 00 00 	mvi r4,0                                       
 8004408:	34 05 00 00 	mvi r5,0                                       
 800440c:	f8 00 1a a3 	calli 800ae98 <_POSIX_signals_Clear_signals>   
      the_info->si_signo,                                             
      the_info,                                                       
      false,                                                          
      false                                                           
    );                                                                
    _ISR_Enable( level );                                             
 8004410:	d0 10 00 00 	wcsr IE,r16                                    
                                                                      
    the_info->si_code = SI_USER;                                      
 8004414:	34 01 00 01 	mvi r1,1                                       
 8004418:	59 61 00 04 	sw (r11+4),r1                                  
    the_info->si_value.sival_int = 0;                                 
 800441c:	59 60 00 08 	sw (r11+8),r0                                  
    return the_info->si_signo;                                        
 8004420:	29 6e 00 00 	lw r14,(r11+0)                                 
 8004424:	e3 ff ff d5 	bi 8004378 <sigtimedwait+0x13c>                
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    interval = _Timespec_To_ticks( timeout );                         
                                                                      
    if ( !interval )                                                  
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8004428:	f8 00 29 2e 	calli 800e8e0 <__errno>                        
 800442c:	34 02 00 16 	mvi r2,22                                      
 8004430:	58 22 00 00 	sw (r1+0),r2                                   
 8004434:	34 0e ff ff 	mvi r14,-1                                     
 8004438:	e3 ff ff d0 	bi 8004378 <sigtimedwait+0x13c>                
   * was not in our set.                                              
   */                                                                 
                                                                      
  if ( (_Thread_Executing->Wait.return_code != EINTR)                 
       || !(*set & signo_to_mask( the_info->si_signo )) ) {           
    errno = _Thread_Executing->Wait.return_code;                      
 800443c:	f8 00 29 29 	calli 800e8e0 <__errno>                        
 8004440:	29 82 00 0c 	lw r2,(r12+12)                                 
    return -1;                                                        
 8004444:	34 0e ff ff 	mvi r14,-1                                     
   * was not in our set.                                              
   */                                                                 
                                                                      
  if ( (_Thread_Executing->Wait.return_code != EINTR)                 
       || !(*set & signo_to_mask( the_info->si_signo )) ) {           
    errno = _Thread_Executing->Wait.return_code;                      
 8004448:	28 42 00 34 	lw r2,(r2+52)                                  
 800444c:	58 22 00 00 	sw (r1+0),r2                                   
    return -1;                                                        
 8004450:	e3 ff ff ca 	bi 8004378 <sigtimedwait+0x13c>                
                                                                      

08006488 <sigwait>: int sigwait( const sigset_t *set, int *sig ) {
 8006488:	37 9c ff f8 	addi sp,sp,-8                                  
 800648c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8006490:	5b 9d 00 04 	sw (sp+4),ra                                   
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
 8006494:	34 03 00 00 	mvi r3,0                                       
                                                                      
int sigwait(                                                          
  const sigset_t  *set,                                               
  int             *sig                                                
)                                                                     
{                                                                     
 8006498:	b8 40 58 00 	mv r11,r2                                      
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
 800649c:	34 02 00 00 	mvi r2,0                                       
 80064a0:	fb ff ff 6d 	calli 8006254 <sigtimedwait>                   
                                                                      
  if ( status != -1 ) {                                               
 80064a4:	34 02 ff ff 	mvi r2,-1                                      
 80064a8:	44 22 00 09 	be r1,r2,80064cc <sigwait+0x44>                
    if ( sig )                                                        
      *sig = status;                                                  
    return 0;                                                         
 80064ac:	34 03 00 00 	mvi r3,0                                       
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
                                                                      
  if ( status != -1 ) {                                               
    if ( sig )                                                        
 80064b0:	45 60 00 02 	be r11,r0,80064b8 <sigwait+0x30>               <== NEVER TAKEN
      *sig = status;                                                  
 80064b4:	59 61 00 00 	sw (r11+0),r1                                  
    return 0;                                                         
  }                                                                   
                                                                      
  return errno;                                                       
}                                                                     
 80064b8:	b8 60 08 00 	mv r1,r3                                       
 80064bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80064c0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80064c4:	37 9c 00 08 	addi sp,sp,8                                   
 80064c8:	c3 a0 00 00 	ret                                            
    if ( sig )                                                        
      *sig = status;                                                  
    return 0;                                                         
  }                                                                   
                                                                      
  return errno;                                                       
 80064cc:	f8 00 28 03 	calli 80104d8 <__errno>                        
 80064d0:	28 23 00 00 	lw r3,(r1+0)                                   
}                                                                     
 80064d4:	b8 60 08 00 	mv r1,r3                                       
 80064d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80064dc:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80064e0:	37 9c 00 08 	addi sp,sp,8                                   
 80064e4:	c3 a0 00 00 	ret                                            
                                                                      

080048b4 <siproc>: /* * Process input character, with semaphore. */ static int siproc (unsigned char c, struct rtems_termios_tty *tty) {
 80048b4:	37 9c ff f4 	addi sp,sp,-12                                 
 80048b8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80048bc:	5b 8c 00 08 	sw (sp+8),r12                                  
 80048c0:	5b 9d 00 04 	sw (sp+4),ra                                   
  int i;                                                              
                                                                      
  /*                                                                  
   * Obtain output semaphore if character will be echoed              
   */                                                                 
  if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
 80048c4:	28 43 00 3c 	lw r3,(r2+60)                                  
/*                                                                    
 * Process input character, with semaphore.                           
 */                                                                   
static int                                                            
siproc (unsigned char c, struct rtems_termios_tty *tty)               
{                                                                     
 80048c8:	b8 20 60 00 	mv r12,r1                                      
 80048cc:	b8 40 58 00 	mv r11,r2                                      
  int i;                                                              
                                                                      
  /*                                                                  
   * Obtain output semaphore if character will be echoed              
   */                                                                 
  if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
 80048d0:	20 61 0e 78 	andi r1,r3,0xe78                               
 80048d4:	5c 20 00 0a 	bne r1,r0,80048fc <siproc+0x48>                <== ALWAYS TAKEN
    rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT); 
    i = iproc (c, tty);                                               
    rtems_semaphore_release (tty->osem);                              
  }                                                                   
  else {                                                              
    i = iproc (c, tty);                                               
 80048d8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80048dc:	fb ff ff 80 	calli 80046dc <iproc>                          <== NOT EXECUTED
 80048e0:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  }                                                                   
  return i;                                                           
}                                                                     
 80048e4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80048e8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80048ec:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 80048f0:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 80048f4:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 80048f8:	c3 a0 00 00 	ret                                            <== 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); 
 80048fc:	28 41 00 18 	lw r1,(r2+24)                                  
 8004900:	34 03 00 00 	mvi r3,0                                       
 8004904:	34 02 00 00 	mvi r2,0                                       
 8004908:	f8 00 06 15 	calli 800615c <rtems_semaphore_obtain>         
    i = iproc (c, tty);                                               
 800490c:	b9 60 10 00 	mv r2,r11                                      
 8004910:	b9 80 08 00 	mv r1,r12                                      
 8004914:	fb ff ff 72 	calli 80046dc <iproc>                          
 8004918:	b8 20 60 00 	mv r12,r1                                      
    rtems_semaphore_release (tty->osem);                              
 800491c:	29 61 00 18 	lw r1,(r11+24)                                 
 8004920:	f8 00 06 6b 	calli 80062cc <rtems_semaphore_release>        
  }                                                                   
  else {                                                              
    i = iproc (c, tty);                                               
  }                                                                   
  return i;                                                           
}                                                                     
 8004924:	b9 80 08 00 	mv r1,r12                                      
 8004928:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800492c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004930:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004934:	37 9c 00 0c 	addi sp,sp,12                                  
 8004938:	c3 a0 00 00 	ret                                            
                                                                      

08005560 <statvfs>: #include <sys/statvfs.h> int statvfs (const char *path, struct statvfs *sb) {
 8005560:	37 9c ff dc 	addi sp,sp,-36                                 
 8005564:	5b 8b 00 10 	sw (sp+16),r11                                 
 8005568:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800556c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8005570:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005574:	b8 20 60 00 	mv r12,r1                                      
 8005578:	b8 40 58 00 	mv r11,r2                                      
   *    The root node of the mounted filesytem.                       
   *    The node for the directory that the fileystem is mounted on.  
   *    The mount entry that is being refered to.                     
   */                                                                 
                                                                      
  if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x0, &loc, true ) )
 800557c:	37 8d 00 14 	addi r13,sp,20                                 
 8005580:	f8 00 33 dc 	calli 80124f0 <strlen>                         
 8005584:	b8 20 10 00 	mv r2,r1                                       
 8005588:	34 03 00 00 	mvi r3,0                                       
 800558c:	b9 80 08 00 	mv r1,r12                                      
 8005590:	b9 a0 20 00 	mv r4,r13                                      
 8005594:	34 05 00 01 	mvi r5,1                                       
 8005598:	fb ff f9 af 	calli 8003c54 <rtems_filesystem_evaluate_path> 
    return -1;                                                        
 800559c:	34 0c ff ff 	mvi r12,-1                                     
   *    The root node of the mounted filesytem.                       
   *    The node for the directory that the fileystem is mounted on.  
   *    The mount entry that is being refered to.                     
   */                                                                 
                                                                      
  if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x0, &loc, true ) )
 80055a0:	5c 20 00 18 	bne r1,r0,8005600 <statvfs+0xa0>               <== NEVER TAKEN
    return -1;                                                        
                                                                      
  mt_entry      = loc.mt_entry;                                       
 80055a4:	2b 81 00 24 	lw r1,(sp+36)                                  
  fs_mount_root = &mt_entry->mt_fs_root;                              
                                                                      
  memset (sb, 0, sizeof (struct statvfs));                            
 80055a8:	59 60 00 00 	sw (r11+0),r0                                  
 80055ac:	59 60 00 04 	sw (r11+4),r0                                  
 80055b0:	59 60 00 08 	sw (r11+8),r0                                  
 80055b4:	59 60 00 0c 	sw (r11+12),r0                                 
 80055b8:	59 60 00 10 	sw (r11+16),r0                                 
 80055bc:	59 60 00 14 	sw (r11+20),r0                                 
 80055c0:	59 60 00 18 	sw (r11+24),r0                                 
 80055c4:	59 60 00 1c 	sw (r11+28),r0                                 
 80055c8:	59 60 00 20 	sw (r11+32),r0                                 
 80055cc:	59 60 00 24 	sw (r11+36),r0                                 
 80055d0:	59 60 00 28 	sw (r11+40),r0                                 
 80055d4:	59 60 00 2c 	sw (r11+44),r0                                 
 80055d8:	59 60 00 30 	sw (r11+48),r0                                 
 80055dc:	59 60 00 34 	sw (r11+52),r0                                 
                                                                      
  result = ( fs_mount_root->ops->statvfs_h )( fs_mount_root, sb );    
 80055e0:	28 23 00 28 	lw r3,(r1+40)                                  
 80055e4:	b9 60 10 00 	mv r2,r11                                      
 80055e8:	34 21 00 1c 	addi r1,r1,28                                  
 80055ec:	28 63 00 44 	lw r3,(r3+68)                                  
 80055f0:	d8 60 00 00 	call r3                                        
 80055f4:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  rtems_filesystem_freenode( &loc );                                  
 80055f8:	b9 a0 08 00 	mv r1,r13                                      
 80055fc:	fb ff f9 e4 	calli 8003d8c <rtems_filesystem_freenode>      
                                                                      
  return result;                                                      
}                                                                     
 8005600:	b9 80 08 00 	mv r1,r12                                      
 8005604:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005608:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800560c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8005610:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8005614:	37 9c 00 24 	addi sp,sp,36                                  
 8005618:	c3 a0 00 00 	ret                                            
                                                                      

08003dc8 <sync_per_thread>: fdatasync(fn); } /* iterate over all FILE *'s for this thread */ static void sync_per_thread(Thread_Control *t) {
 8003dc8:	37 9c ff f4 	addi sp,sp,-12                                 
 8003dcc:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8003dd0:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003dd4:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
   /*                                                                 
    *  The sync_wrapper() function will operate on the current thread's
    *  reent structure so we will temporarily use that.               
    */                                                                
   this_reent = t->libc_reent;                                        
 8003dd8:	28 23 01 18 	lw r3,(r1+280)                                 
   if ( this_reent ) {                                                
 8003ddc:	44 60 00 0c 	be r3,r0,8003e0c <sync_per_thread+0x44>        <== NEVER TAKEN
     current_reent = _Thread_Executing->libc_reent;                   
 8003de0:	78 0b 08 01 	mvhi r11,0x801                                 
 8003de4:	39 6b 6d 74 	ori r11,r11,0x6d74                             
 8003de8:	29 64 00 0c 	lw r4,(r11+12)                                 
     _Thread_Executing->libc_reent = this_reent;                      
     _fwalk (t->libc_reent, sync_wrapper);                            
 8003dec:	78 02 08 00 	mvhi r2,0x800                                  
 8003df0:	38 42 3e 20 	ori r2,r2,0x3e20                               
    *  The sync_wrapper() function will operate on the current thread's
    *  reent structure so we will temporarily use that.               
    */                                                                
   this_reent = t->libc_reent;                                        
   if ( this_reent ) {                                                
     current_reent = _Thread_Executing->libc_reent;                   
 8003df4:	28 8c 01 18 	lw r12,(r4+280)                                
     _Thread_Executing->libc_reent = this_reent;                      
 8003df8:	58 83 01 18 	sw (r4+280),r3                                 
     _fwalk (t->libc_reent, sync_wrapper);                            
 8003dfc:	28 21 01 18 	lw r1,(r1+280)                                 
 8003e00:	f8 00 2c d3 	calli 800f14c <_fwalk>                         
     _Thread_Executing->libc_reent = current_reent;                   
 8003e04:	29 61 00 0c 	lw r1,(r11+12)                                 
 8003e08:	58 2c 01 18 	sw (r1+280),r12                                
   }                                                                  
}                                                                     
 8003e0c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003e10:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003e14:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003e18:	37 9c 00 0c 	addi sp,sp,12                                  
 8003e1c:	c3 a0 00 00 	ret                                            
                                                                      

0800cd00 <tcsetattr>: int tcsetattr( int fd, int opt, struct termios *tp ) {
 800cd00:	37 9c ff f4 	addi sp,sp,-12                                 
 800cd04:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800cd08:	5b 8c 00 08 	sw (sp+8),r12                                  
 800cd0c:	5b 9d 00 04 	sw (sp+4),ra                                   
 800cd10:	b8 20 60 00 	mv r12,r1                                      
 800cd14:	b8 60 58 00 	mv r11,r3                                      
  switch (opt) {                                                      
 800cd18:	44 40 00 12 	be r2,r0,800cd60 <tcsetattr+0x60>              
 800cd1c:	34 03 00 01 	mvi r3,1                                       
 800cd20:	44 43 00 0a 	be r2,r3,800cd48 <tcsetattr+0x48>              
  default:                                                            
    rtems_set_errno_and_return_minus_one( ENOTSUP );                  
 800cd24:	f8 00 12 d2 	calli 801186c <__errno>                        
 800cd28:	34 02 00 86 	mvi r2,134                                     
 800cd2c:	58 22 00 00 	sw (r1+0),r2                                   
 800cd30:	34 01 ff ff 	mvi r1,-1                                      
     * Fall through to....                                            
     */                                                               
  case TCSANOW:                                                       
    return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );                  
  }                                                                   
}                                                                     
 800cd34:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800cd38:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800cd3c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800cd40:	37 9c 00 0c 	addi sp,sp,12                                  
 800cd44:	c3 a0 00 00 	ret                                            
  switch (opt) {                                                      
  default:                                                            
    rtems_set_errno_and_return_minus_one( ENOTSUP );                  
                                                                      
  case TCSADRAIN:                                                     
    if (ioctl( fd, RTEMS_IO_TCDRAIN, NULL ) < 0)                      
 800cd48:	34 02 00 03 	mvi r2,3                                       
 800cd4c:	34 03 00 00 	mvi r3,0                                       
 800cd50:	fb ff fe b1 	calli 800c814 <ioctl>                          
 800cd54:	b8 20 10 00 	mv r2,r1                                       
    	return -1;                                                       
 800cd58:	34 01 ff ff 	mvi r1,-1                                      
  switch (opt) {                                                      
  default:                                                            
    rtems_set_errno_and_return_minus_one( ENOTSUP );                  
                                                                      
  case TCSADRAIN:                                                     
    if (ioctl( fd, RTEMS_IO_TCDRAIN, NULL ) < 0)                      
 800cd5c:	48 02 ff f6 	bg r0,r2,800cd34 <tcsetattr+0x34>              <== NEVER TAKEN
    	return -1;                                                       
    /*                                                                
     * Fall through to....                                            
     */                                                               
  case TCSANOW:                                                       
    return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );                  
 800cd60:	b9 80 08 00 	mv r1,r12                                      
 800cd64:	34 02 00 02 	mvi r2,2                                       
 800cd68:	b9 60 18 00 	mv r3,r11                                      
 800cd6c:	fb ff fe aa 	calli 800c814 <ioctl>                          
  }                                                                   
}                                                                     
 800cd70:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800cd74:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800cd78:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800cd7c:	37 9c 00 0c 	addi sp,sp,12                                  
 800cd80:	c3 a0 00 00 	ret                                            
                                                                      

0800315c <timer_create>: int timer_create( clockid_t clock_id, struct sigevent *evp, timer_t *timerid ) {
 800315c:	37 9c ff f0 	addi sp,sp,-16                                 
 8003160:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003164:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003168:	5b 8d 00 08 	sw (sp+8),r13                                  
 800316c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003170:	b8 40 58 00 	mv r11,r2                                      
  POSIX_Timer_Control *ptimer;                                        
                                                                      
  if ( clock_id != CLOCK_REALTIME )                                   
 8003174:	34 02 00 01 	mvi r2,1                                       
int timer_create(                                                     
  clockid_t        clock_id,                                          
  struct sigevent *evp,                                               
  timer_t         *timerid                                            
)                                                                     
{                                                                     
 8003178:	b8 60 68 00 	mv r13,r3                                      
  POSIX_Timer_Control *ptimer;                                        
                                                                      
  if ( clock_id != CLOCK_REALTIME )                                   
 800317c:	5c 22 00 06 	bne r1,r2,8003194 <timer_create+0x38>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !timerid )                                                     
 8003180:	44 60 00 05 	be r3,r0,8003194 <timer_create+0x38>           
 /*                                                                   
  *  The data of the structure evp are checked in order to verify if they
  *  are coherent.                                                    
  */                                                                  
                                                                      
  if (evp != NULL) {                                                  
 8003184:	45 60 00 14 	be r11,r0,80031d4 <timer_create+0x78>          
    /* The structure has data */                                      
    if ( ( evp->sigev_notify != SIGEV_NONE ) &&                       
 8003188:	29 62 00 00 	lw r2,(r11+0)                                  
 800318c:	34 42 ff ff 	addi r2,r2,-1                                  
 8003190:	50 22 00 0b 	bgeu r1,r2,80031bc <timer_create+0x60>         <== ALWAYS TAKEN
                                                                      
     if ( !evp->sigev_signo )                                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
                                                                      
     if ( !is_valid_signo(evp->sigev_signo) )                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
 8003194:	f8 00 2b 23 	calli 800de20 <__errno>                        
 8003198:	34 02 00 16 	mvi r2,22                                      
 800319c:	58 22 00 00 	sw (r1+0),r2                                   
 80031a0:	34 01 ff ff 	mvi r1,-1                                      
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 80031a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80031a8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80031ac:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80031b0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80031b4:	37 9c 00 10 	addi sp,sp,16                                  
 80031b8:	c3 a0 00 00 	ret                                            
         ( evp->sigev_notify != SIGEV_SIGNAL ) ) {                    
       /* The value of the field sigev_notify is not valid */         
       rtems_set_errno_and_return_minus_one( EINVAL );                
     }                                                                
                                                                      
     if ( !evp->sigev_signo )                                         
 80031bc:	29 61 00 04 	lw r1,(r11+4)                                  
 80031c0:	44 20 ff f5 	be r1,r0,8003194 <timer_create+0x38>           <== NEVER TAKEN
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 80031c4:	34 21 ff ff 	addi r1,r1,-1                                  
       rtems_set_errno_and_return_minus_one( EINVAL );                
                                                                      
     if ( !is_valid_signo(evp->sigev_signo) )                         
 80031c8:	34 02 00 1f 	mvi r2,31                                      
 80031cc:	50 41 00 02 	bgeu r2,r1,80031d4 <timer_create+0x78>         <== ALWAYS TAKEN
 80031d0:	e3 ff ff f1 	bi 8003194 <timer_create+0x38>                 <== NOT EXECUTED
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
 80031d4:	78 01 08 02 	mvhi r1,0x802                                  
 80031d8:	38 21 09 18 	ori r1,r1,0x918                                
 80031dc:	28 22 00 00 	lw r2,(r1+0)                                   
 80031e0:	34 42 00 01 	addi r2,r2,1                                   
 80031e4:	58 22 00 00 	sw (r1+0),r2                                   
 *  the inactive chain of free timer control blocks.                  
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Allocate( void )
{                                                                     
  return (POSIX_Timer_Control *) _Objects_Allocate( &_POSIX_Timer_Information );
 80031e8:	78 0c 08 02 	mvhi r12,0x802                                 
 80031ec:	39 8c 0b 8c 	ori r12,r12,0xb8c                              
 80031f0:	b9 80 08 00 	mv r1,r12                                      
 80031f4:	f8 00 07 60 	calli 8004f74 <_Objects_Allocate>              
                                                                      
  /*                                                                  
   *  Allocate a timer                                                
   */                                                                 
  ptimer = _POSIX_Timer_Allocate();                                   
  if ( !ptimer ) {                                                    
 80031f8:	44 20 00 29 	be r1,r0,800329c <timer_create+0x140>          
  }                                                                   
                                                                      
  /* The data of the created timer are stored to use them later */    
                                                                      
  ptimer->state     = POSIX_TIMER_STATE_CREATE_NEW;                   
  ptimer->thread_id = _Thread_Executing->Object.id;                   
 80031fc:	78 02 08 02 	mvhi r2,0x802                                  
    rtems_set_errno_and_return_minus_one( EAGAIN );                   
  }                                                                   
                                                                      
  /* The data of the created timer are stored to use them later */    
                                                                      
  ptimer->state     = POSIX_TIMER_STATE_CREATE_NEW;                   
 8003200:	34 03 00 02 	mvi r3,2                                       
 8003204:	30 23 00 3c 	sb (r1+60),r3                                  
  ptimer->thread_id = _Thread_Executing->Object.id;                   
 8003208:	38 42 0d c4 	ori r2,r2,0xdc4                                
 800320c:	28 42 00 0c 	lw r2,(r2+12)                                  
 8003210:	28 42 00 08 	lw r2,(r2+8)                                   
 8003214:	58 22 00 38 	sw (r1+56),r2                                  
                                                                      
  if ( evp != NULL ) {                                                
 8003218:	45 60 00 07 	be r11,r0,8003234 <timer_create+0xd8>          
    ptimer->inf.sigev_notify = evp->sigev_notify;                     
 800321c:	29 64 00 00 	lw r4,(r11+0)                                  
    ptimer->inf.sigev_signo  = evp->sigev_signo;                      
 8003220:	29 63 00 04 	lw r3,(r11+4)                                  
    ptimer->inf.sigev_value  = evp->sigev_value;                      
 8003224:	29 62 00 08 	lw r2,(r11+8)                                  
                                                                      
  ptimer->state     = POSIX_TIMER_STATE_CREATE_NEW;                   
  ptimer->thread_id = _Thread_Executing->Object.id;                   
                                                                      
  if ( evp != NULL ) {                                                
    ptimer->inf.sigev_notify = evp->sigev_notify;                     
 8003228:	58 24 00 40 	sw (r1+64),r4                                  
    ptimer->inf.sigev_signo  = evp->sigev_signo;                      
 800322c:	58 23 00 44 	sw (r1+68),r3                                  
    ptimer->inf.sigev_value  = evp->sigev_value;                      
 8003230:	58 22 00 48 	sw (r1+72),r2                                  
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 8003234:	28 23 00 08 	lw r3,(r1+8)                                   
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8003238:	29 84 00 1c 	lw r4,(r12+28)                                 
  }                                                                   
                                                                      
  ptimer->overrun  = 0;                                               
 800323c:	58 20 00 68 	sw (r1+104),r0                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8003240:	20 62 ff ff 	andi r2,r3,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8003244:	b4 42 10 00 	add r2,r2,r2                                   
 8003248:	b4 42 10 00 	add r2,r2,r2                                   
  ptimer->timer_data.it_value.tv_sec     = 0;                         
 800324c:	58 20 00 5c 	sw (r1+92),r0                                  
  ptimer->timer_data.it_value.tv_nsec    = 0;                         
 8003250:	58 20 00 60 	sw (r1+96),r0                                  
  ptimer->timer_data.it_interval.tv_sec  = 0;                         
 8003254:	58 20 00 54 	sw (r1+84),r0                                  
  ptimer->timer_data.it_interval.tv_nsec = 0;                         
 8003258:	58 20 00 58 	sw (r1+88),r0                                  
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 800325c:	58 20 00 18 	sw (r1+24),r0                                  
  the_watchdog->routine   = routine;                                  
 8003260:	58 20 00 2c 	sw (r1+44),r0                                  
  the_watchdog->id        = id;                                       
 8003264:	58 20 00 30 	sw (r1+48),r0                                  
  the_watchdog->user_data = user_data;                                
 8003268:	58 20 00 34 	sw (r1+52),r0                                  
 800326c:	b4 82 10 00 	add r2,r4,r2                                   
 8003270:	58 41 00 00 	sw (r2+0),r1                                   
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 8003274:	58 20 00 0c 	sw (r1+12),r0                                  
                                                                      
  _Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL );              
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
 8003278:	59 a3 00 00 	sw (r13+0),r3                                  
  _Thread_Enable_dispatch();                                          
 800327c:	f8 00 0c 12 	calli 80062c4 <_Thread_Enable_dispatch>        
  return 0;                                                           
 8003280:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003284:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003288:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800328c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003290:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003294:	37 9c 00 10 	addi sp,sp,16                                  
 8003298:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Allocate a timer                                                
   */                                                                 
  ptimer = _POSIX_Timer_Allocate();                                   
  if ( !ptimer ) {                                                    
    _Thread_Enable_dispatch();                                        
 800329c:	f8 00 0c 0a 	calli 80062c4 <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( EAGAIN );                   
 80032a0:	f8 00 2a e0 	calli 800de20 <__errno>                        
 80032a4:	34 02 00 0b 	mvi r2,11                                      
 80032a8:	58 22 00 00 	sw (r1+0),r2                                   
 80032ac:	34 01 ff ff 	mvi r1,-1                                      
 80032b0:	e3 ff ff f5 	bi 8003284 <timer_create+0x128>                
                                                                      

080032b4 <timer_settime>: timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue ) {
 80032b4:	37 9c ff cc 	addi sp,sp,-52                                 
 80032b8:	5b 8b 00 18 	sw (sp+24),r11                                 
 80032bc:	5b 8c 00 14 	sw (sp+20),r12                                 
 80032c0:	5b 8d 00 10 	sw (sp+16),r13                                 
 80032c4:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80032c8:	5b 8f 00 08 	sw (sp+8),r15                                  
 80032cc:	5b 9d 00 04 	sw (sp+4),ra                                   
 80032d0:	b8 60 60 00 	mv r12,r3                                      
 80032d4:	b8 20 70 00 	mv r14,r1                                      
 80032d8:	b8 40 58 00 	mv r11,r2                                      
 80032dc:	b8 80 68 00 	mv r13,r4                                      
  Objects_Locations    location;                                      
  bool                 activated;                                     
  uint32_t             initial_period;                                
  struct itimerspec    normalize;                                     
                                                                      
  if ( !value )                                                       
 80032e0:	44 60 00 1e 	be r3,r0,8003358 <timer_settime+0xa4>          <== NEVER TAKEN
                                                                      
  /*                                                                  
   * First, it verifies if the structure "value" is correct           
   * if the number of nanoseconds is not correct return EINVAL        
   */                                                                 
  if ( !_Timespec_Is_valid( &(value->it_value) ) ) {                  
 80032e4:	34 61 00 08 	addi r1,r3,8                                   
 80032e8:	f8 00 0f 5c 	calli 8007058 <_Timespec_Is_valid>             
 80032ec:	44 20 00 1b 	be r1,r0,8003358 <timer_settime+0xa4>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
  if ( !_Timespec_Is_valid( &(value->it_interval) ) ) {               
 80032f0:	b9 80 08 00 	mv r1,r12                                      
 80032f4:	f8 00 0f 59 	calli 8007058 <_Timespec_Is_valid>             
 80032f8:	44 20 00 18 	be r1,r0,8003358 <timer_settime+0xa4>          <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {    
 80032fc:	7d 62 00 00 	cmpnei r2,r11,0                                
 8003300:	7d 61 00 04 	cmpnei r1,r11,4                                
 8003304:	a0 41 08 00 	and r1,r2,r1                                   
 8003308:	5c 20 00 14 	bne r1,r0,8003358 <timer_settime+0xa4>         
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  normalize = *value;                                                 
 800330c:	29 81 00 0c 	lw r1,(r12+12)                                 
 8003310:	29 84 00 00 	lw r4,(r12+0)                                  
 8003314:	29 83 00 04 	lw r3,(r12+4)                                  
 8003318:	29 82 00 08 	lw r2,(r12+8)                                  
 800331c:	5b 81 00 28 	sw (sp+40),r1                                  
 8003320:	5b 84 00 1c 	sw (sp+28),r4                                  
 8003324:	5b 83 00 20 	sw (sp+32),r3                                  
 8003328:	5b 82 00 24 	sw (sp+36),r2                                  
                                                                      
  /* Convert absolute to relative time */                             
  if (flags == TIMER_ABSTIME) {                                       
 800332c:	34 01 00 04 	mvi r1,4                                       
 8003330:	45 61 00 46 	be r11,r1,8003448 <timer_settime+0x194>        
  timer_t            id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Timer_Control *)                                      
    _Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location );
 8003334:	78 03 08 02 	mvhi r3,0x802                                  
 8003338:	b8 60 08 00 	mv r1,r3                                       
 800333c:	38 21 0b 8c 	ori r1,r1,0xb8c                                
 8003340:	b9 c0 10 00 	mv r2,r14                                      
 8003344:	37 83 00 34 	addi r3,sp,52                                  
 8003348:	f8 00 08 50 	calli 8005488 <_Objects_Get>                   
 800334c:	b8 20 58 00 	mv r11,r1                                      
   * something with the structure of times of the timer: to stop, start
   * or start it again                                                
   */                                                                 
                                                                      
  ptimer = _POSIX_Timer_Get( timerid, &location );                    
  switch ( location ) {                                               
 8003350:	2b 81 00 34 	lw r1,(sp+52)                                  
 8003354:	44 20 00 0d 	be r1,r0,8003388 <timer_settime+0xd4>          
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
 8003358:	f8 00 2a b2 	calli 800de20 <__errno>                        
 800335c:	34 02 00 16 	mvi r2,22                                      
 8003360:	58 22 00 00 	sw (r1+0),r2                                   
 8003364:	34 01 ff ff 	mvi r1,-1                                      
}                                                                     
 8003368:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800336c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003370:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003374:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003378:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800337c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003380:	37 9c 00 34 	addi sp,sp,52                                  
 8003384:	c3 a0 00 00 	ret                                            
  ptimer = _POSIX_Timer_Get( timerid, &location );                    
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      /* First, it verifies if the timer must be stopped */           
      if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) {
 8003388:	2b 82 00 24 	lw r2,(sp+36)                                  
 800338c:	5c 41 00 03 	bne r2,r1,8003398 <timer_settime+0xe4>         
 8003390:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8003394:	45 c2 00 3a 	be r14,r2,800347c <timer_settime+0x1c8>        
        _Thread_Enable_dispatch();                                    
        return 0;                                                     
       }                                                              
                                                                      
       /* Convert from seconds and nanoseconds to ticks */            
       ptimer->ticks  = _Timespec_To_ticks( &value->it_interval );    
 8003398:	b9 80 08 00 	mv r1,r12                                      
 800339c:	f8 00 0f 51 	calli 80070e0 <_Timespec_To_ticks>             
 80033a0:	59 61 00 64 	sw (r11+100),r1                                
       initial_period = _Timespec_To_ticks( &normalize.it_value );    
 80033a4:	37 81 00 24 	addi r1,sp,36                                  
 80033a8:	f8 00 0f 4e 	calli 80070e0 <_Timespec_To_ticks>             
                                                                      
                                                                      
       activated = _POSIX_Timer_Insert_helper(                        
 80033ac:	29 63 00 08 	lw r3,(r11+8)                                  
 80033b0:	78 04 08 00 	mvhi r4,0x800                                  
        return 0;                                                     
       }                                                              
                                                                      
       /* Convert from seconds and nanoseconds to ticks */            
       ptimer->ticks  = _Timespec_To_ticks( &value->it_interval );    
       initial_period = _Timespec_To_ticks( &normalize.it_value );    
 80033b4:	b8 20 10 00 	mv r2,r1                                       
                                                                      
                                                                      
       activated = _POSIX_Timer_Insert_helper(                        
 80033b8:	38 84 34 f8 	ori r4,r4,0x34f8                               
 80033bc:	35 61 00 10 	addi r1,r11,16                                 
 80033c0:	b9 60 28 00 	mv r5,r11                                      
 80033c4:	f8 00 1b ec 	calli 800a374 <_POSIX_Timer_Insert_helper>     
         initial_period,                                              
         ptimer->Object.id,                                           
         _POSIX_Timer_TSR,                                            
         ptimer                                                       
       );                                                             
       if ( !activated ) {                                            
 80033c8:	44 20 00 16 	be r1,r0,8003420 <timer_settime+0x16c>         
                                                                      
       /*                                                             
        * The timer has been started and is running.  So we return the
        * old ones in "ovalue"                                        
        */                                                            
       if ( ovalue )                                                  
 80033cc:	45 a0 00 09 	be r13,r0,80033f0 <timer_settime+0x13c>        
         *ovalue = ptimer->timer_data;                                
 80033d0:	29 61 00 54 	lw r1,(r11+84)                                 
 80033d4:	59 a1 00 00 	sw (r13+0),r1                                  
 80033d8:	29 61 00 58 	lw r1,(r11+88)                                 
 80033dc:	59 a1 00 04 	sw (r13+4),r1                                  
 80033e0:	29 61 00 5c 	lw r1,(r11+92)                                 
 80033e4:	59 a1 00 08 	sw (r13+8),r1                                  
 80033e8:	29 61 00 60 	lw r1,(r11+96)                                 
 80033ec:	59 a1 00 0c 	sw (r13+12),r1                                 
       ptimer->timer_data = normalize;                                
 80033f0:	2b 82 00 1c 	lw r2,(sp+28)                                  
                                                                      
       /* Indicate that the time is running */                        
       ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                  
       _TOD_Get( &ptimer->time );                                     
 80033f4:	35 61 00 6c 	addi r1,r11,108                                
        * The timer has been started and is running.  So we return the
        * old ones in "ovalue"                                        
        */                                                            
       if ( ovalue )                                                  
         *ovalue = ptimer->timer_data;                                
       ptimer->timer_data = normalize;                                
 80033f8:	59 62 00 54 	sw (r11+84),r2                                 
 80033fc:	2b 82 00 20 	lw r2,(sp+32)                                  
 8003400:	59 62 00 58 	sw (r11+88),r2                                 
 8003404:	2b 82 00 24 	lw r2,(sp+36)                                  
 8003408:	59 62 00 5c 	sw (r11+92),r2                                 
 800340c:	2b 82 00 28 	lw r2,(sp+40)                                  
 8003410:	59 62 00 60 	sw (r11+96),r2                                 
                                                                      
       /* Indicate that the time is running */                        
       ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                  
 8003414:	34 02 00 03 	mvi r2,3                                       
 8003418:	31 62 00 3c 	sb (r11+60),r2                                 
       _TOD_Get( &ptimer->time );                                     
 800341c:	f8 00 05 02 	calli 8004824 <_TOD_Get>                       
       _Thread_Enable_dispatch();                                     
 8003420:	f8 00 0b a9 	calli 80062c4 <_Thread_Enable_dispatch>        
       return 0;                                                      
 8003424:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
 8003428:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800342c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003430:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003434:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003438:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800343c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003440:	37 9c 00 34 	addi sp,sp,52                                  
 8003444:	c3 a0 00 00 	ret                                            
  normalize = *value;                                                 
                                                                      
  /* Convert absolute to relative time */                             
  if (flags == TIMER_ABSTIME) {                                       
    struct timespec now;                                              
    _TOD_Get( &now );                                                 
 8003448:	37 8b 00 2c 	addi r11,sp,44                                 
 800344c:	b9 60 08 00 	mv r1,r11                                      
 8003450:	f8 00 04 f5 	calli 8004824 <_TOD_Get>                       
    /* Check for seconds in the past */                               
    if ( _Timespec_Greater_than( &now, &normalize.it_value ) )        
 8003454:	37 8f 00 24 	addi r15,sp,36                                 
 8003458:	b9 60 08 00 	mv r1,r11                                      
 800345c:	b9 e0 10 00 	mv r2,r15                                      
 8003460:	f8 00 0e f3 	calli 800702c <_Timespec_Greater_than>         
 8003464:	5c 20 ff bd 	bne r1,r0,8003358 <timer_settime+0xa4>         
      rtems_set_errno_and_return_minus_one( EINVAL );                 
    _Timespec_Subtract( &now, &normalize.it_value, &normalize.it_value );
 8003468:	b9 e0 10 00 	mv r2,r15                                      
 800346c:	b9 60 08 00 	mv r1,r11                                      
 8003470:	b9 e0 18 00 	mv r3,r15                                      
 8003474:	f8 00 0f 05 	calli 8007088 <_Timespec_Subtract>             
 8003478:	e3 ff ff af 	bi 8003334 <timer_settime+0x80>                
                                                                      
    case OBJECTS_LOCAL:                                               
      /* First, it verifies if the timer must be stopped */           
      if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) {
         /* Stop the timer */                                         
         (void) _Watchdog_Remove( &ptimer->Timer );                   
 800347c:	35 61 00 10 	addi r1,r11,16                                 
 8003480:	f8 00 10 a0 	calli 8007700 <_Watchdog_Remove>               
         /* The old data of the timer are returned */                 
         if ( ovalue )                                                
 8003484:	45 ae 00 09 	be r13,r14,80034a8 <timer_settime+0x1f4>       
           *ovalue = ptimer->timer_data;                              
 8003488:	29 61 00 54 	lw r1,(r11+84)                                 
 800348c:	59 a1 00 00 	sw (r13+0),r1                                  
 8003490:	29 61 00 58 	lw r1,(r11+88)                                 
 8003494:	59 a1 00 04 	sw (r13+4),r1                                  
 8003498:	29 61 00 5c 	lw r1,(r11+92)                                 
 800349c:	59 a1 00 08 	sw (r13+8),r1                                  
 80034a0:	29 61 00 60 	lw r1,(r11+96)                                 
 80034a4:	59 a1 00 0c 	sw (r13+12),r1                                 
         /* The new data are set */                                   
         ptimer->timer_data = normalize;                              
 80034a8:	2b 81 00 1c 	lw r1,(sp+28)                                  
 80034ac:	59 61 00 54 	sw (r11+84),r1                                 
 80034b0:	2b 81 00 20 	lw r1,(sp+32)                                  
 80034b4:	59 61 00 58 	sw (r11+88),r1                                 
 80034b8:	2b 81 00 24 	lw r1,(sp+36)                                  
 80034bc:	59 61 00 5c 	sw (r11+92),r1                                 
 80034c0:	2b 81 00 28 	lw r1,(sp+40)                                  
 80034c4:	59 61 00 60 	sw (r11+96),r1                                 
         /* Indicates that the timer is created and stopped */        
         ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;               
 80034c8:	34 01 00 04 	mvi r1,4                                       
 80034cc:	31 61 00 3c 	sb (r11+60),r1                                 
         /* Returns with success */                                   
        _Thread_Enable_dispatch();                                    
 80034d0:	f8 00 0b 7d 	calli 80062c4 <_Thread_Enable_dispatch>        
        return 0;                                                     
 80034d4:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
 80034d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80034dc:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80034e0:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80034e4:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80034e8:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80034ec:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80034f0:	37 9c 00 34 	addi sp,sp,52                                  
 80034f4:	c3 a0 00 00 	ret                                            
                                                                      

08003080 <ualarm>: useconds_t ualarm( useconds_t useconds, useconds_t interval ) {
 8003080:	37 9c ff e4 	addi sp,sp,-28                                 
 8003084:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003088:	5b 8c 00 10 	sw (sp+16),r12                                 
 800308c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003090:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003094:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Initialize the timer used to implement alarm().                 
   */                                                                 
                                                                      
  if ( !the_timer->routine ) {                                        
 8003098:	78 0b 08 01 	mvhi r11,0x801                                 
 800309c:	39 6b 81 98 	ori r11,r11,0x8198                             
 80030a0:	29 62 00 1c 	lw r2,(r11+28)                                 
                                                                      
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
 80030a4:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  /*                                                                  
   *  Initialize the timer used to implement alarm().                 
   */                                                                 
                                                                      
  if ( !the_timer->routine ) {                                        
 80030a8:	44 40 00 55 	be r2,r0,80031fc <ualarm+0x17c>                
    _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
  } else {                                                            
    Watchdog_States state;                                            
                                                                      
    state = _Watchdog_Remove( the_timer );                            
 80030ac:	b9 60 08 00 	mv r1,r11                                      
 80030b0:	f8 00 10 03 	calli 80070bc <_Watchdog_Remove>               
    if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
 80030b4:	34 21 ff fe 	addi r1,r1,-2                                  
 80030b8:	34 02 00 01 	mvi r2,1                                       
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
  useconds_t        remaining = 0;                                    
 80030bc:	34 0d 00 00 	mvi r13,0                                      
    _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
  } else {                                                            
    Watchdog_States state;                                            
                                                                      
    state = _Watchdog_Remove( the_timer );                            
    if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
 80030c0:	54 22 00 24 	bgu r1,r2,8003150 <ualarm+0xd0>                <== NEVER TAKEN
       *  boot.  Since alarm() is dealing in seconds, we must account for
       *  this.                                                       
       */                                                             
                                                                      
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
 80030c4:	29 64 00 14 	lw r4,(r11+20)                                 
 80030c8:	29 61 00 0c 	lw r1,(r11+12)                                 
 80030cc:	29 63 00 18 	lw r3,(r11+24)                                 
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
 80030d0:	37 82 00 18 	addi r2,sp,24                                  
       *  boot.  Since alarm() is dealing in seconds, we must account for
       *  this.                                                       
       */                                                             
                                                                      
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
 80030d4:	b4 81 08 00 	add r1,r4,r1                                   
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
 80030d8:	c8 23 08 00 	sub r1,r1,r3                                   
 80030dc:	f8 00 0d f6 	calli 80068b4 <_Timespec_From_ticks>           
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
 80030e0:	2b 85 00 18 	lw r5,(sp+24)                                  
      remaining += tp.tv_nsec / 1000;                                 
 80030e4:	2b 81 00 1c 	lw r1,(sp+28)                                  
 80030e8:	34 02 03 e8 	mvi r2,1000                                    
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
 80030ec:	b4 a5 18 00 	add r3,r5,r5                                   
 80030f0:	b4 63 18 00 	add r3,r3,r3                                   
 80030f4:	b4 63 18 00 	add r3,r3,r3                                   
 80030f8:	b4 63 20 00 	add r4,r3,r3                                   
 80030fc:	b4 84 20 00 	add r4,r4,r4                                   
 8003100:	b4 84 20 00 	add r4,r4,r4                                   
 8003104:	b4 84 20 00 	add r4,r4,r4                                   
 8003108:	b4 84 20 00 	add r4,r4,r4                                   
 800310c:	c8 83 20 00 	sub r4,r4,r3                                   
 8003110:	b4 84 18 00 	add r3,r4,r4                                   
 8003114:	b4 63 18 00 	add r3,r3,r3                                   
 8003118:	b4 63 18 00 	add r3,r3,r3                                   
 800311c:	b4 63 18 00 	add r3,r3,r3                                   
 8003120:	b4 63 18 00 	add r3,r3,r3                                   
 8003124:	b4 63 18 00 	add r3,r3,r3                                   
 8003128:	c8 64 18 00 	sub r3,r3,r4                                   
 800312c:	b4 65 68 00 	add r13,r3,r5                                  
 8003130:	b5 ad 68 00 	add r13,r13,r13                                
 8003134:	b5 ad 68 00 	add r13,r13,r13                                
 8003138:	b5 ad 68 00 	add r13,r13,r13                                
 800313c:	b5 ad 68 00 	add r13,r13,r13                                
 8003140:	b5 ad 68 00 	add r13,r13,r13                                
 8003144:	b5 ad 68 00 	add r13,r13,r13                                
      remaining += tp.tv_nsec / 1000;                                 
 8003148:	f8 00 44 9a 	calli 80143b0 <__divsi3>                       
 800314c:	b4 2d 68 00 	add r13,r1,r13                                 
  /*                                                                  
   *  If useconds is non-zero, then the caller wants to schedule      
   *  the alarm repeatedly at that interval.  If the interval is      
   *  less than a single clock tick, then fudge it to a clock tick.   
   */                                                                 
  if ( useconds ) {                                                   
 8003150:	45 80 00 23 	be r12,r0,80031dc <ualarm+0x15c>               
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
 8003154:	78 01 08 01 	mvhi r1,0x801                                  
 8003158:	38 21 56 a4 	ori r1,r1,0x56a4                               
 800315c:	28 22 00 00 	lw r2,(r1+0)                                   
 8003160:	b9 80 08 00 	mv r1,r12                                      
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
    ticks = _Timespec_To_ticks( &tp );                                
 8003164:	37 8e 00 18 	addi r14,sp,24                                 
   *  less than a single clock tick, then fudge it to a clock tick.   
   */                                                                 
  if ( useconds ) {                                                   
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
 8003168:	f8 00 44 eb 	calli 8014514 <__udivsi3>                      
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
 800316c:	78 03 08 01 	mvhi r3,0x801                                  
 8003170:	38 63 56 a4 	ori r3,r3,0x56a4                               
 8003174:	28 62 00 00 	lw r2,(r3+0)                                   
   *  less than a single clock tick, then fudge it to a clock tick.   
   */                                                                 
  if ( useconds ) {                                                   
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
 8003178:	5b 81 00 18 	sw (sp+24),r1                                  
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
 800317c:	b9 80 08 00 	mv r1,r12                                      
 8003180:	f8 00 44 f5 	calli 8014554 <__umodsi3>                      
 8003184:	b4 21 10 00 	add r2,r1,r1                                   
 8003188:	b4 42 10 00 	add r2,r2,r2                                   
 800318c:	b4 42 10 00 	add r2,r2,r2                                   
 8003190:	b4 42 18 00 	add r3,r2,r2                                   
 8003194:	b4 63 18 00 	add r3,r3,r3                                   
 8003198:	b4 43 10 00 	add r2,r2,r3                                   
 800319c:	b4 42 18 00 	add r3,r2,r2                                   
 80031a0:	b4 63 18 00 	add r3,r3,r3                                   
 80031a4:	b4 43 10 00 	add r2,r2,r3                                   
 80031a8:	b4 42 18 00 	add r3,r2,r2                                   
 80031ac:	b4 63 18 00 	add r3,r3,r3                                   
 80031b0:	b4 43 18 00 	add r3,r2,r3                                   
    ticks = _Timespec_To_ticks( &tp );                                
 80031b4:	b9 c0 08 00 	mv r1,r14                                      
   */                                                                 
  if ( useconds ) {                                                   
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
 80031b8:	5b 83 00 1c 	sw (sp+28),r3                                  
    ticks = _Timespec_To_ticks( &tp );                                
 80031bc:	f8 00 0d fa 	calli 80069a4 <_Timespec_To_ticks>             
    if ( ticks == 0 )                                                 
      ticks = 1;                                                      
                                                                      
    _Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) );   
 80031c0:	b9 c0 08 00 	mv r1,r14                                      
 80031c4:	f8 00 0d f8 	calli 80069a4 <_Timespec_To_ticks>             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 80031c8:	59 61 00 0c 	sw (r11+12),r1                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 80031cc:	78 01 08 01 	mvhi r1,0x801                                  
 80031d0:	b9 60 10 00 	mv r2,r11                                      
 80031d4:	38 21 79 e8 	ori r1,r1,0x79e8                               
 80031d8:	f8 00 0f 4e 	calli 8006f10 <_Watchdog_Insert>               
  }                                                                   
                                                                      
  return remaining;                                                   
}                                                                     
 80031dc:	b9 a0 08 00 	mv r1,r13                                      
 80031e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80031e4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80031e8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80031ec:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80031f0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80031f4:	37 9c 00 1c 	addi sp,sp,28                                  
 80031f8:	c3 a0 00 00 	ret                                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 80031fc:	78 01 08 00 	mvhi r1,0x800                                  
 8003200:	38 21 30 38 	ori r1,r1,0x3038                               
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8003204:	59 60 00 08 	sw (r11+8),r0                                  
  the_watchdog->routine   = routine;                                  
 8003208:	59 61 00 1c 	sw (r11+28),r1                                 
  the_watchdog->id        = id;                                       
 800320c:	59 60 00 20 	sw (r11+32),r0                                 
  the_watchdog->user_data = user_data;                                
 8003210:	59 60 00 24 	sw (r11+36),r0                                 
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
  useconds_t        remaining = 0;                                    
 8003214:	34 0d 00 00 	mvi r13,0                                      
 8003218:	e3 ff ff ce 	bi 8003150 <ualarm+0xd0>                       
                                                                      

08002fac <uname>: */ int uname( struct utsname *name ) {
 8002fac:	37 9c ff f8 	addi sp,sp,-8                                  
 8002fb0:	5b 8b 00 08 	sw (sp+8),r11                                  
 8002fb4:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002fb8:	b8 20 58 00 	mv r11,r1                                      
          release = 5.3                                               
          version = Generic_101318-12                                 
          machine = sun4m                                             
  */                                                                  
                                                                      
  if ( !name )                                                        
 8002fbc:	44 20 00 23 	be r1,r0,8003048 <uname+0x9c>                  <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  strncpy( name->sysname, "RTEMS", sizeof(name->sysname) );           
 8002fc0:	78 02 08 01 	mvhi r2,0x801                                  
 8002fc4:	38 42 e1 3c 	ori r2,r2,0xe13c                               
 8002fc8:	34 03 00 20 	mvi r3,32                                      
 8002fcc:	f8 00 2f ff 	calli 800efc8 <strncpy>                        
                                                                      
  snprintf( name->nodename, sizeof(name->nodename), "Node %" PRId16, _Objects_Local_node );
 8002fd0:	78 03 08 01 	mvhi r3,0x801                                  
 8002fd4:	34 04 00 01 	mvi r4,1                                       
 8002fd8:	34 02 00 20 	mvi r2,32                                      
 8002fdc:	38 63 e1 44 	ori r3,r3,0xe144                               
 8002fe0:	35 61 00 20 	addi r1,r11,32                                 
 8002fe4:	f8 00 2e 95 	calli 800ea38 <snprintf>                       
                                                                      
  strncpy( name->release, RTEMS_VERSION, sizeof(name->release) );     
 8002fe8:	78 02 08 01 	mvhi r2,0x801                                  
 8002fec:	38 42 e1 4c 	ori r2,r2,0xe14c                               
 8002ff0:	34 03 00 20 	mvi r3,32                                      
 8002ff4:	35 61 00 40 	addi r1,r11,64                                 
 8002ff8:	f8 00 2f f4 	calli 800efc8 <strncpy>                        
                                                                      
  strncpy( name->version, "", sizeof(name->version) );                
 8002ffc:	78 02 08 01 	mvhi r2,0x801                                  
 8003000:	38 42 db 10 	ori r2,r2,0xdb10                               
 8003004:	34 03 00 20 	mvi r3,32                                      
 8003008:	35 61 00 60 	addi r1,r11,96                                 
 800300c:	f8 00 2f ef 	calli 800efc8 <strncpy>                        
                                                                      
  snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
 8003010:	78 03 08 01 	mvhi r3,0x801                                  
 8003014:	78 04 08 01 	mvhi r4,0x801                                  
 8003018:	78 05 08 01 	mvhi r5,0x801                                  
 800301c:	35 61 00 80 	addi r1,r11,128                                
 8003020:	34 02 00 20 	mvi r2,32                                      
 8003024:	38 63 e1 58 	ori r3,r3,0xe158                               
 8003028:	38 84 e1 60 	ori r4,r4,0xe160                               
 800302c:	38 a5 e1 68 	ori r5,r5,0xe168                               
 8003030:	f8 00 2e 82 	calli 800ea38 <snprintf>                       
                                                                      
  return 0;                                                           
 8003034:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003038:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800303c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003040:	37 9c 00 08 	addi sp,sp,8                                   
 8003044:	c3 a0 00 00 	ret                                            
          version = Generic_101318-12                                 
          machine = sun4m                                             
  */                                                                  
                                                                      
  if ( !name )                                                        
    rtems_set_errno_and_return_minus_one( EFAULT );                   
 8003048:	f8 00 2a f6 	calli 800dc20 <__errno>                        
 800304c:	34 02 00 0e 	mvi r2,14                                      
 8003050:	58 22 00 00 	sw (r1+0),r2                                   
 8003054:	34 01 ff ff 	mvi r1,-1                                      
 8003058:	e3 ff ff f8 	bi 8003038 <uname+0x8c>                        
                                                                      

08003ab4 <unlink>: #include <rtems/seterr.h> int unlink( const char *path ) {
 8003ab4:	37 9c ff bc 	addi sp,sp,-68                                 
 8003ab8:	5b 8b 00 18 	sw (sp+24),r11                                 
 8003abc:	5b 8c 00 14 	sw (sp+20),r12                                 
 8003ac0:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003ac4:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003ac8:	5b 8f 00 08 	sw (sp+8),r15                                  
 8003acc:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003ad0:	b8 20 68 00 	mv r13,r1                                      
                                                                      
  /*                                                                  
   * Get the node to be unlinked. Find the parent path first.         
   */                                                                 
                                                                      
  parentpathlen = rtems_filesystem_dirname ( path );                  
 8003ad4:	fb ff fa ed 	calli 8002688 <rtems_filesystem_dirname>       
                                                                      
  if ( parentpathlen == 0 )                                           
 8003ad8:	5c 20 00 40 	bne r1,r0,8003bd8 <unlink+0x124>               
    rtems_filesystem_get_start_loc( path, &i, &parentloc );           
 8003adc:	37 8c 00 30 	addi r12,sp,48                                 
 8003ae0:	b9 a0 08 00 	mv r1,r13                                      
 8003ae4:	37 82 00 44 	addi r2,sp,68                                  
 8003ae8:	b9 80 18 00 	mv r3,r12                                      
 8003aec:	fb ff ff ba 	calli 80039d4 <rtems_filesystem_get_start_loc> 
 8003af0:	34 0b 00 00 	mvi r11,0                                      
  const char                       *name;                             
  rtems_filesystem_location_info_t  parentloc;                        
  rtems_filesystem_location_info_t  loc;                              
  int                               i;                                
  int                               result;                           
  bool                              free_parentloc = false;           
 8003af4:	34 0f 00 00 	mvi r15,0                                      
                                                                      
  /*                                                                  
   * Start from the parent to find the node that should be under it.  
   */                                                                 
                                                                      
  loc = parentloc;                                                    
 8003af8:	2b 82 00 30 	lw r2,(sp+48)                                  
  name = path + parentpathlen;                                        
 8003afc:	b5 ab 58 00 	add r11,r13,r11                                
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
 8003b00:	b9 60 08 00 	mv r1,r11                                      
                                                                      
  /*                                                                  
   * Start from the parent to find the node that should be under it.  
   */                                                                 
                                                                      
  loc = parentloc;                                                    
 8003b04:	5b 82 00 1c 	sw (sp+28),r2                                  
 8003b08:	2b 82 00 34 	lw r2,(sp+52)                                  
 8003b0c:	5b 82 00 20 	sw (sp+32),r2                                  
 8003b10:	2b 82 00 38 	lw r2,(sp+56)                                  
 8003b14:	5b 82 00 24 	sw (sp+36),r2                                  
 8003b18:	2b 82 00 3c 	lw r2,(sp+60)                                  
 8003b1c:	5b 82 00 28 	sw (sp+40),r2                                  
 8003b20:	2b 82 00 40 	lw r2,(sp+64)                                  
 8003b24:	5b 82 00 2c 	sw (sp+44),r2                                  
  name = path + parentpathlen;                                        
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
 8003b28:	f8 00 3d 1d 	calli 8012f9c <strlen>                         
 8003b2c:	b8 20 10 00 	mv r2,r1                                       
 8003b30:	b9 60 08 00 	mv r1,r11                                      
 8003b34:	fb ff fa ea 	calli 80026dc <rtems_filesystem_prefix_separators>
 8003b38:	b5 61 68 00 	add r13,r11,r1                                 
                                                                      
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
 8003b3c:	b9 a0 08 00 	mv r1,r13                                      
 8003b40:	f8 00 3d 17 	calli 8012f9c <strlen>                         
 8003b44:	37 8b 00 1c 	addi r11,sp,28                                 
 8003b48:	b8 20 10 00 	mv r2,r1                                       
 8003b4c:	34 03 00 00 	mvi r3,0                                       
 8003b50:	b9 a0 08 00 	mv r1,r13                                      
 8003b54:	b9 60 20 00 	mv r4,r11                                      
 8003b58:	34 05 00 00 	mvi r5,0                                       
 8003b5c:	fb ff fa 8d 	calli 8002590 <rtems_filesystem_evaluate_relative_path>
                                                    0, &loc, false ); 
  if ( result != 0 ) {                                                
 8003b60:	5c 20 00 19 	bne r1,r0,8003bc4 <unlink+0x110>               
    if ( free_parentloc )                                             
      rtems_filesystem_freenode( &parentloc );                        
    return -1;                                                        
  }                                                                   
                                                                      
  if (  (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY ) {
 8003b64:	2b 82 00 28 	lw r2,(sp+40)                                  
 8003b68:	b9 60 08 00 	mv r1,r11                                      
 8003b6c:	28 42 00 10 	lw r2,(r2+16)                                  
 8003b70:	d8 40 00 00 	call r2                                        
 8003b74:	34 02 00 01 	mvi r2,1                                       
 8003b78:	44 22 00 24 	be r1,r2,8003c08 <unlink+0x154>                
    if ( free_parentloc )                                             
      rtems_filesystem_freenode( &parentloc );                        
    rtems_set_errno_and_return_minus_one( EISDIR );                   
  }                                                                   
                                                                      
  result = (*loc.ops->unlink_h)( &parentloc, &loc );                  
 8003b7c:	2b 83 00 28 	lw r3,(sp+40)                                  
 8003b80:	b9 80 08 00 	mv r1,r12                                      
 8003b84:	b9 60 10 00 	mv r2,r11                                      
 8003b88:	28 63 00 0c 	lw r3,(r3+12)                                  
 8003b8c:	d8 60 00 00 	call r3                                        
 8003b90:	b8 20 70 00 	mv r14,r1                                      
                                                                      
  rtems_filesystem_freenode( &loc );                                  
 8003b94:	b9 60 08 00 	mv r1,r11                                      
 8003b98:	fb ff fa ef 	calli 8002754 <rtems_filesystem_freenode>      
  if ( free_parentloc )                                               
 8003b9c:	5d e0 00 0c 	bne r15,r0,8003bcc <unlink+0x118>              
    rtems_filesystem_freenode( &parentloc );                          
                                                                      
  return result;                                                      
}                                                                     
 8003ba0:	b9 c0 08 00 	mv r1,r14                                      
 8003ba4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003ba8:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003bac:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003bb0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003bb4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003bb8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003bbc:	37 9c 00 44 	addi sp,sp,68                                  
 8003bc0:	c3 a0 00 00 	ret                                            
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
                                                    0, &loc, false ); 
  if ( result != 0 ) {                                                
    if ( free_parentloc )                                             
      rtems_filesystem_freenode( &parentloc );                        
    return -1;                                                        
 8003bc4:	34 0e ff ff 	mvi r14,-1                                     
  name += rtems_filesystem_prefix_separators( name, strlen( name ) ); 
                                                                      
  result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
                                                    0, &loc, false ); 
  if ( result != 0 ) {                                                
    if ( free_parentloc )                                             
 8003bc8:	45 e0 ff f6 	be r15,r0,8003ba0 <unlink+0xec>                <== NEVER TAKEN
                                                                      
  result = (*loc.ops->unlink_h)( &parentloc, &loc );                  
                                                                      
  rtems_filesystem_freenode( &loc );                                  
  if ( free_parentloc )                                               
    rtems_filesystem_freenode( &parentloc );                          
 8003bcc:	b9 80 08 00 	mv r1,r12                                      
 8003bd0:	fb ff fa e1 	calli 8002754 <rtems_filesystem_freenode>      
 8003bd4:	e3 ff ff f3 	bi 8003ba0 <unlink+0xec>                       
  parentpathlen = rtems_filesystem_dirname ( path );                  
                                                                      
  if ( parentpathlen == 0 )                                           
    rtems_filesystem_get_start_loc( path, &i, &parentloc );           
  else {                                                              
    result = rtems_filesystem_evaluate_path( path, parentpathlen,     
 8003bd8:	b8 20 58 00 	mv r11,r1                                      
 8003bdc:	37 8c 00 30 	addi r12,sp,48                                 
 8003be0:	b9 a0 08 00 	mv r1,r13                                      
 8003be4:	b9 60 10 00 	mv r2,r11                                      
 8003be8:	34 03 00 02 	mvi r3,2                                       
 8003bec:	b9 80 20 00 	mv r4,r12                                      
 8003bf0:	34 05 00 00 	mvi r5,0                                       
 8003bf4:	fb ff fa 8a 	calli 800261c <rtems_filesystem_evaluate_path> 
                                             RTEMS_LIBIO_PERMS_WRITE, 
                                             &parentloc,              
                                             false );                 
    if ( result != 0 )                                                
      return -1;                                                      
 8003bf8:	34 0e ff ff 	mvi r14,-1                                     
  else {                                                              
    result = rtems_filesystem_evaluate_path( path, parentpathlen,     
                                             RTEMS_LIBIO_PERMS_WRITE, 
                                             &parentloc,              
                                             false );                 
    if ( result != 0 )                                                
 8003bfc:	5c 20 ff e9 	bne r1,r0,8003ba0 <unlink+0xec>                <== NEVER TAKEN
      return -1;                                                      
                                                                      
    free_parentloc = true;                                            
 8003c00:	34 0f 00 01 	mvi r15,1                                      
 8003c04:	e3 ff ff bd 	bi 8003af8 <unlink+0x44>                       
      rtems_filesystem_freenode( &parentloc );                        
    return -1;                                                        
  }                                                                   
                                                                      
  if (  (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY ) {
    rtems_filesystem_freenode( &loc );                                
 8003c08:	b9 60 08 00 	mv r1,r11                                      
 8003c0c:	fb ff fa d2 	calli 8002754 <rtems_filesystem_freenode>      
    if ( free_parentloc )                                             
 8003c10:	45 e0 00 03 	be r15,r0,8003c1c <unlink+0x168>               
      rtems_filesystem_freenode( &parentloc );                        
 8003c14:	b9 80 08 00 	mv r1,r12                                      
 8003c18:	fb ff fa cf 	calli 8002754 <rtems_filesystem_freenode>      
    rtems_set_errno_and_return_minus_one( EISDIR );                   
 8003c1c:	f8 00 38 7f 	calli 8011e18 <__errno>                        
 8003c20:	34 02 00 15 	mvi r2,21                                      
 8003c24:	58 22 00 00 	sw (r1+0),r2                                   
 8003c28:	34 0e ff ff 	mvi r14,-1                                     
 8003c2c:	e3 ff ff dd 	bi 8003ba0 <unlink+0xec>                       
                                                                      

08003be4 <unmount>: */ int unmount( const char *path ) {
 8003be4:	37 9c ff dc 	addi sp,sp,-36                                 
 8003be8:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003bec:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003bf0:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003bf4:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003bf8:	b8 20 58 00 	mv r11,r1                                      
   *    The root node of the mounted filesytem.                       
   *    The node for the directory that the fileystem is mounted on.  
   *    The mount entry that is being refered to.                     
   */                                                                 
                                                                      
  if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x0, &loc, true ) )
 8003bfc:	37 8c 00 14 	addi r12,sp,20                                 
 8003c00:	f8 00 2d ab 	calli 800f2ac <strlen>                         
 8003c04:	b8 20 10 00 	mv r2,r1                                       
 8003c08:	34 03 00 00 	mvi r3,0                                       
 8003c0c:	b9 60 08 00 	mv r1,r11                                      
 8003c10:	b9 80 20 00 	mv r4,r12                                      
 8003c14:	34 05 00 01 	mvi r5,1                                       
 8003c18:	fb ff f9 9f 	calli 8002294 <rtems_filesystem_evaluate_path> 
 8003c1c:	5c 20 00 23 	bne r1,r0,8003ca8 <unmount+0xc4>               
    return -1;                                                        
                                                                      
  mt_entry     = loc.mt_entry;                                        
 8003c20:	2b 8b 00 24 	lw r11,(sp+36)                                 
                                                                      
  /*                                                                  
   * Verify this is the root node for the file system to be unmounted.
   */                                                                 
                                                                      
  if ( fs_root_loc->node_access != loc.node_access ){                 
 8003c24:	2b 81 00 14 	lw r1,(sp+20)                                  
 8003c28:	29 62 00 1c 	lw r2,(r11+28)                                 
 8003c2c:	5c 41 00 27 	bne r2,r1,8003cc8 <unmount+0xe4>               
                                                                      
  /*                                                                  
   * Free the loc node and just use the nodes from the mt_entry .     
   */                                                                 
                                                                      
  rtems_filesystem_freenode( &loc );                                  
 8003c30:	b9 80 08 00 	mv r1,r12                                      
 8003c34:	fb ff f9 e6 	calli 80023cc <rtems_filesystem_freenode>      
   *        that made the current node thread based instead           
   *        of system based?  I thought it was but it doesn't         
   *        look like it in this version.                             
   */                                                                 
                                                                      
  if ( rtems_filesystem_current.mt_entry == mt_entry )                
 8003c38:	78 01 08 01 	mvhi r1,0x801                                  
 8003c3c:	38 21 71 d0 	ori r1,r1,0x71d0                               
 8003c40:	28 21 00 00 	lw r1,(r1+0)                                   
 8003c44:	28 21 00 14 	lw r1,(r1+20)                                  
 8003c48:	44 2b 00 2d 	be r1,r11,8003cfc <unmount+0x118>              
                                                                      
  /*                                                                  
   *  Verify there are no file systems below the path specified       
   */                                                                 
                                                                      
  if ( rtems_filesystem_mount_iterate( is_fs_below_mount_point,       
 8003c4c:	29 62 00 2c 	lw r2,(r11+44)                                 
 8003c50:	78 01 08 00 	mvhi r1,0x800                                  
 8003c54:	38 21 3b d8 	ori r1,r1,0x3bd8                               
 8003c58:	fb ff fc 99 	calli 8002ebc <rtems_filesystem_mount_iterate> 
 8003c5c:	5c 20 00 28 	bne r1,r0,8003cfc <unmount+0x118>              
   *  Run the file descriptor table to determine if there are any file
   *  descriptors that are currently active and reference nodes in the
   *  file system that we are trying to unmount                       
   */                                                                 
                                                                      
  if ( rtems_libio_is_open_files_in_fs( mt_entry ) == 1 )             
 8003c60:	b9 60 08 00 	mv r1,r11                                      
 8003c64:	fb ff fa fa 	calli 800284c <rtems_libio_is_open_files_in_fs>
 8003c68:	34 02 00 01 	mvi r2,1                                       
 8003c6c:	44 22 00 24 	be r1,r2,8003cfc <unmount+0x118>               
   * Allow the file system being unmounted on to do its cleanup.      
   * If it fails it will set the errno to the approprate value        
   * and the fileystem will not be modified.                          
   */                                                                 
                                                                      
  if (( fs_mount_loc->ops->unmount_h )( mt_entry ) != 0 )             
 8003c70:	29 62 00 14 	lw r2,(r11+20)                                 
 8003c74:	b9 60 08 00 	mv r1,r11                                      
    return -1;                                                        
 8003c78:	34 0c ff ff 	mvi r12,-1                                     
   * Allow the file system being unmounted on to do its cleanup.      
   * If it fails it will set the errno to the approprate value        
   * and the fileystem will not be modified.                          
   */                                                                 
                                                                      
  if (( fs_mount_loc->ops->unmount_h )( mt_entry ) != 0 )             
 8003c7c:	28 42 00 28 	lw r2,(r2+40)                                  
 8003c80:	d8 40 00 00 	call r2                                        
 8003c84:	b8 20 68 00 	mv r13,r1                                      
 8003c88:	44 20 00 28 	be r1,r0,8003d28 <unmount+0x144>               <== ALWAYS TAKEN
                                                                      
  rtems_filesystem_freenode( fs_mount_loc );                          
  free( mt_entry );                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8003c8c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8003c90:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8003c94:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 8003c98:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8003c9c:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 8003ca0:	37 9c 00 24 	addi sp,sp,36                                  <== NOT EXECUTED
 8003ca4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
   *    The node for the directory that the fileystem is mounted on.  
   *    The mount entry that is being refered to.                     
   */                                                                 
                                                                      
  if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x0, &loc, true ) )
    return -1;                                                        
 8003ca8:	34 0c ff ff 	mvi r12,-1                                     
                                                                      
  rtems_filesystem_freenode( fs_mount_loc );                          
  free( mt_entry );                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8003cac:	b9 80 08 00 	mv r1,r12                                      
 8003cb0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003cb4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003cb8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003cbc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003cc0:	37 9c 00 24 	addi sp,sp,36                                  
 8003cc4:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * Verify this is the root node for the file system to be unmounted.
   */                                                                 
                                                                      
  if ( fs_root_loc->node_access != loc.node_access ){                 
    rtems_filesystem_freenode( &loc );                                
 8003cc8:	b9 80 08 00 	mv r1,r12                                      
 8003ccc:	fb ff f9 c0 	calli 80023cc <rtems_filesystem_freenode>      
    rtems_set_errno_and_return_minus_one( EACCES );                   
 8003cd0:	f8 00 27 da 	calli 800dc38 <__errno>                        
 8003cd4:	34 02 00 0d 	mvi r2,13                                      
 8003cd8:	34 0c ff ff 	mvi r12,-1                                     
 8003cdc:	58 22 00 00 	sw (r1+0),r2                                   
                                                                      
  rtems_filesystem_freenode( fs_mount_loc );                          
  free( mt_entry );                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8003ce0:	b9 80 08 00 	mv r1,r12                                      
 8003ce4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003ce8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003cec:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003cf0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003cf4:	37 9c 00 24 	addi sp,sp,36                                  
 8003cf8:	c3 a0 00 00 	ret                                            
   *  descriptors that are currently active and reference nodes in the
   *  file system that we are trying to unmount                       
   */                                                                 
                                                                      
  if ( rtems_libio_is_open_files_in_fs( mt_entry ) == 1 )             
    rtems_set_errno_and_return_minus_one( EBUSY );                    
 8003cfc:	f8 00 27 cf 	calli 800dc38 <__errno>                        
 8003d00:	34 02 00 10 	mvi r2,16                                      
 8003d04:	34 0c ff ff 	mvi r12,-1                                     
 8003d08:	58 22 00 00 	sw (r1+0),r2                                   
                                                                      
  rtems_filesystem_freenode( fs_mount_loc );                          
  free( mt_entry );                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8003d0c:	b9 80 08 00 	mv r1,r12                                      
 8003d10:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d14:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003d18:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003d1c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003d20:	37 9c 00 24 	addi sp,sp,36                                  
 8003d24:	c3 a0 00 00 	ret                                            
   *  NOTE:  Fatal error is called in a case which should never happen
   *         This was response was questionable but the best we could 
   *         come up with.                                            
   */                                                                 
                                                                      
  if ((fs_root_loc->ops->fsunmount_me_h )( mt_entry ) != 0){          
 8003d28:	29 62 00 28 	lw r2,(r11+40)                                 
 8003d2c:	b9 60 08 00 	mv r1,r11                                      
 8003d30:	28 42 00 2c 	lw r2,(r2+44)                                  
 8003d34:	d8 40 00 00 	call r2                                        
 8003d38:	5c 2d 00 17 	bne r1,r13,8003d94 <unmount+0x1b0>             <== NEVER TAKEN
rtems_status_code rtems_libio_set_private_env(void);                  
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;   
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8003d3c:	78 0c 08 01 	mvhi r12,0x801                                 
 8003d40:	39 8c 78 b0 	ori r12,r12,0x78b0                             
 8003d44:	29 81 00 00 	lw r1,(r12+0)                                  
 8003d48:	34 02 00 00 	mvi r2,0                                       
 8003d4c:	34 03 00 00 	mvi r3,0                                       
 8003d50:	f8 00 01 c1 	calli 8004454 <rtems_semaphore_obtain>         
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 8003d54:	b9 60 08 00 	mv r1,r11                                      
 8003d58:	f8 00 04 08 	calli 8004d78 <_Chain_Extract>                 
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 8003d5c:	29 81 00 00 	lw r1,(r12+0)                                  
   */                                                                 
                                                                      
  rtems_filesystem_freenode( fs_mount_loc );                          
  free( mt_entry );                                                   
                                                                      
  return 0;                                                           
 8003d60:	34 0c 00 00 	mvi r12,0                                      
 8003d64:	f8 00 02 18 	calli 80045c4 <rtems_semaphore_release>        
  /*                                                                  
   *  Free the memory node that was allocated in mount                
   *  Free the memory associated with the extracted mount table entry.
   */                                                                 
                                                                      
  rtems_filesystem_freenode( fs_mount_loc );                          
 8003d68:	35 61 00 08 	addi r1,r11,8                                  
 8003d6c:	fb ff f9 98 	calli 80023cc <rtems_filesystem_freenode>      
  free( mt_entry );                                                   
 8003d70:	b9 60 08 00 	mv r1,r11                                      
 8003d74:	fb ff f9 9e 	calli 80023ec <free>                           
                                                                      
  return 0;                                                           
}                                                                     
 8003d78:	b9 80 08 00 	mv r1,r12                                      
 8003d7c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003d80:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003d84:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003d88:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003d8c:	37 9c 00 24 	addi sp,sp,36                                  
 8003d90:	c3 a0 00 00 	ret                                            
   *         This was response was questionable but the best we could 
   *         come up with.                                            
   */                                                                 
                                                                      
  if ((fs_root_loc->ops->fsunmount_me_h )( mt_entry ) != 0){          
    if (( fs_mount_loc->ops->mount_h )( mt_entry ) != 0 )             
 8003d94:	29 62 00 14 	lw r2,(r11+20)                                 <== NOT EXECUTED
 8003d98:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8003d9c:	28 42 00 20 	lw r2,(r2+32)                                  <== NOT EXECUTED
 8003da0:	d8 40 00 00 	call r2                                        <== NOT EXECUTED
 8003da4:	44 20 ff ba 	be r1,r0,8003c8c <unmount+0xa8>                <== NOT EXECUTED
      rtems_fatal_error_occurred( 0 );                                
 8003da8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8003dac:	f8 00 02 ed 	calli 8004960 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08002690 <vprintk>: */ void vprintk( const char *fmt, va_list ap ) {
 8002690:	37 9c ff a4 	addi sp,sp,-92                                 
 8002694:	5b 8b 00 44 	sw (sp+68),r11                                 
 8002698:	5b 8c 00 40 	sw (sp+64),r12                                 
 800269c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 80026a0:	5b 8e 00 38 	sw (sp+56),r14                                 
 80026a4:	5b 8f 00 34 	sw (sp+52),r15                                 
 80026a8:	5b 90 00 30 	sw (sp+48),r16                                 
 80026ac:	5b 91 00 2c 	sw (sp+44),r17                                 
 80026b0:	5b 92 00 28 	sw (sp+40),r18                                 
 80026b4:	5b 93 00 24 	sw (sp+36),r19                                 
 80026b8:	5b 94 00 20 	sw (sp+32),r20                                 
 80026bc:	5b 95 00 1c 	sw (sp+28),r21                                 
 80026c0:	5b 96 00 18 	sw (sp+24),r22                                 
 80026c4:	5b 97 00 14 	sw (sp+20),r23                                 
 80026c8:	5b 98 00 10 	sw (sp+16),r24                                 
 80026cc:	5b 99 00 0c 	sw (sp+12),r25                                 
 80026d0:	5b 9b 00 08 	sw (sp+8),fp                                   
 80026d4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80026d8:	b8 20 58 00 	mv r11,r1                                      
  for (; *fmt != '\0'; fmt++) {                                       
 80026dc:	40 21 00 00 	lbu r1,(r1+0)                                  
 */                                                                   
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
 80026e0:	b8 40 b8 00 	mv r23,r2                                      
  for (; *fmt != '\0'; fmt++) {                                       
 80026e4:	44 20 00 12 	be r1,r0,800272c <vprintk+0x9c>                <== NEVER TAKEN
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
                                                                      
      if ( str == NULL ) {                                            
        str = "";                                                     
 80026e8:	78 02 08 01 	mvhi r2,0x801                                  
    bool sign = false;                                                
    char lead = ' ';                                                  
    char c;                                                           
                                                                      
    if (*fmt != '%') {                                                
      BSP_output_char(*fmt);                                          
 80026ec:	78 0c 08 01 	mvhi r12,0x801                                 
 80026f0:	78 13 08 01 	mvhi r19,0x801                                 
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
                                                                      
      if ( str == NULL ) {                                            
        str = "";                                                     
 80026f4:	38 42 33 e4 	ori r2,r2,0x33e4                               
    bool minus = false;                                               
    bool sign = false;                                                
    char lead = ' ';                                                  
    char c;                                                           
                                                                      
    if (*fmt != '%') {                                                
 80026f8:	34 18 00 25 	mvi r24,37                                     
      BSP_output_char(*fmt);                                          
 80026fc:	39 8c 41 38 	ori r12,r12,0x4138                             
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
 8002700:	34 15 00 09 	mvi r21,9                                      
      width *= 10;                                                    
      width += ((unsigned) *fmt - '0');                               
      fmt++;                                                          
    }                                                                 
                                                                      
    if ((c = *fmt) == 'l') {                                          
 8002704:	34 1b 00 6c 	mvi fp,108                                     
      lflag = true;                                                   
      c = *++fmt;                                                     
    }                                                                 
    if ( c == 'c' ) {                                                 
 8002708:	34 19 00 63 	mvi r25,99                                     
 800270c:	3a 73 35 14 	ori r19,r19,0x3514                             
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
                                                                      
      if ( str == NULL ) {                                            
        str = "";                                                     
 8002710:	5b 82 00 48 	sw (sp+72),r2                                  
    bool minus = false;                                               
    bool sign = false;                                                
    char lead = ' ';                                                  
    char c;                                                           
                                                                      
    if (*fmt != '%') {                                                
 8002714:	44 38 00 19 	be r1,r24,8002778 <vprintk+0xe8>               
      BSP_output_char(*fmt);                                          
 8002718:	29 82 00 00 	lw r2,(r12+0)                                  
 800271c:	d8 40 00 00 	call r2                                        
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
 8002720:	35 6b 00 01 	addi r11,r11,1                                 
 8002724:	41 61 00 00 	lbu r1,(r11+0)                                 
 8002728:	5c 20 ff fb 	bne r1,r0,8002714 <vprintk+0x84>               
      sign,                                                           
      width,                                                          
      lead                                                            
    );                                                                
  }                                                                   
}                                                                     
 800272c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002730:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8002734:	2b 8c 00 40 	lw r12,(sp+64)                                 
 8002738:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 800273c:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8002740:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8002744:	2b 90 00 30 	lw r16,(sp+48)                                 
 8002748:	2b 91 00 2c 	lw r17,(sp+44)                                 
 800274c:	2b 92 00 28 	lw r18,(sp+40)                                 
 8002750:	2b 93 00 24 	lw r19,(sp+36)                                 
 8002754:	2b 94 00 20 	lw r20,(sp+32)                                 
 8002758:	2b 95 00 1c 	lw r21,(sp+28)                                 
 800275c:	2b 96 00 18 	lw r22,(sp+24)                                 
 8002760:	2b 97 00 14 	lw r23,(sp+20)                                 
 8002764:	2b 98 00 10 	lw r24,(sp+16)                                 
 8002768:	2b 99 00 0c 	lw r25,(sp+12)                                 
 800276c:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8002770:	37 9c 00 5c 	addi sp,sp,92                                  
 8002774:	c3 a0 00 00 	ret                                            
                                                                      
    if (*fmt != '%') {                                                
      BSP_output_char(*fmt);                                          
      continue;                                                       
    }                                                                 
    fmt++;                                                            
 8002778:	35 6b 00 01 	addi r11,r11,1                                 
    if (*fmt == '0' ) {                                               
 800277c:	41 64 00 00 	lbu r4,(r11+0)                                 
 8002780:	34 01 00 30 	mvi r1,48                                      
    unsigned base = 0;                                                
    unsigned width = 0;                                               
    bool lflag = false;                                               
    bool minus = false;                                               
    bool sign = false;                                                
    char lead = ' ';                                                  
 8002784:	34 16 00 20 	mvi r22,32                                     
    if (*fmt != '%') {                                                
      BSP_output_char(*fmt);                                          
      continue;                                                       
    }                                                                 
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
 8002788:	44 81 00 69 	be r4,r1,800292c <vprintk+0x29c>               
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
 800278c:	34 02 00 2d 	mvi r2,45                                      
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
    unsigned base = 0;                                                
    unsigned width = 0;                                               
    bool lflag = false;                                               
    bool minus = false;                                               
 8002790:	34 11 00 00 	mvi r17,0                                      
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
 8002794:	44 82 00 62 	be r4,r2,800291c <vprintk+0x28c>               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
 8002798:	34 81 ff d0 	addi r1,r4,-48                                 
 800279c:	20 21 00 ff 	andi r1,r1,0xff                                
 80027a0:	34 0e 00 00 	mvi r14,0                                      
 80027a4:	54 35 00 0c 	bgu r1,r21,80027d4 <vprintk+0x144>             
      width *= 10;                                                    
 80027a8:	b5 ce 70 00 	add r14,r14,r14                                
 80027ac:	b5 ce 18 00 	add r3,r14,r14                                 
 80027b0:	b4 63 18 00 	add r3,r3,r3                                   
 80027b4:	b5 c3 70 00 	add r14,r14,r3                                 
      width += ((unsigned) *fmt - '0');                               
      fmt++;                                                          
 80027b8:	35 6b 00 01 	addi r11,r11,1                                 
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
      width *= 10;                                                    
      width += ((unsigned) *fmt - '0');                               
 80027bc:	b5 c4 70 00 	add r14,r14,r4                                 
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
 80027c0:	41 64 00 00 	lbu r4,(r11+0)                                 
      width *= 10;                                                    
      width += ((unsigned) *fmt - '0');                               
 80027c4:	35 ce ff d0 	addi r14,r14,-48                               
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
 80027c8:	34 83 ff d0 	addi r3,r4,-48                                 
 80027cc:	20 63 00 ff 	andi r3,r3,0xff                                
 80027d0:	52 a3 ff f6 	bgeu r21,r3,80027a8 <vprintk+0x118>            
      width *= 10;                                                    
      width += ((unsigned) *fmt - '0');                               
      fmt++;                                                          
    }                                                                 
                                                                      
    if ((c = *fmt) == 'l') {                                          
 80027d4:	44 9b 00 4a 	be r4,fp,80028fc <vprintk+0x26c>               
      lflag = true;                                                   
      c = *++fmt;                                                     
    }                                                                 
    if ( c == 'c' ) {                                                 
 80027d8:	44 99 00 4c 	be r4,r25,8002908 <vprintk+0x278>              
      /* need a cast here since va_arg() only takes fully promoted types */
      char chr = (char) va_arg(ap, int);                              
      BSP_output_char(chr);                                           
      continue;                                                       
    }                                                                 
    if ( c == 's' ) {                                                 
 80027dc:	34 01 00 73 	mvi r1,115                                     
 80027e0:	44 81 00 57 	be r4,r1,800293c <vprintk+0x2ac>               
                                                                      
      continue;                                                       
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
 80027e4:	64 85 00 4f 	cmpei r5,r4,79                                 
 80027e8:	64 83 00 6f 	cmpei r3,r4,111                                
      base = 8; sign = false;                                         
 80027ec:	34 01 00 00 	mvi r1,0                                       
                                                                      
      continue;                                                       
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
 80027f0:	b8 a3 18 00 	or r3,r5,r3                                    
      base = 8; sign = false;                                         
 80027f4:	34 11 00 08 	mvi r17,8                                      
                                                                      
      continue;                                                       
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
 80027f8:	5c 60 00 0b 	bne r3,r0,8002824 <vprintk+0x194>              
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
 80027fc:	64 86 00 49 	cmpei r6,r4,73                                 
 8002800:	64 85 00 69 	cmpei r5,r4,105                                
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
 8002804:	34 01 00 01 	mvi r1,1                                       
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
 8002808:	b8 c5 28 00 	or r5,r6,r5                                    
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
 800280c:	34 11 00 0a 	mvi r17,10                                     
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
 8002810:	5c a3 00 05 	bne r5,r3,8002824 <vprintk+0x194>              
                c == 'd' || c == 'D' ) {                              
 8002814:	64 86 00 44 	cmpei r6,r4,68                                 
 8002818:	64 83 00 64 	cmpei r3,r4,100                                
 800281c:	b8 c3 18 00 	or r3,r6,r3                                    
 8002820:	44 65 00 72 	be r3,r5,80029e8 <vprintk+0x358>               
    } else {                                                          
      BSP_output_char(c);                                             
      continue;                                                       
    }                                                                 
                                                                      
    printNum(                                                         
 8002824:	2a f0 00 00 	lw r16,(r23+0)                                 
      lflag ? va_arg(ap, long) : (long) va_arg(ap, int),              
 8002828:	36 f7 00 04 	addi r23,r23,4                                 
  unsigned long unsigned_num;                                         
  unsigned long n;                                                    
  unsigned count;                                                     
  char toPrint[20];                                                   
                                                                      
  if ( sign && (num <  0) ) {                                         
 800282c:	44 20 00 08 	be r1,r0,800284c <vprintk+0x1bc>               
 8002830:	4e 00 00 07 	bge r16,r0,800284c <vprintk+0x1bc>             
    BSP_output_char('-');                                             
 8002834:	29 82 00 00 	lw r2,(r12+0)                                  
 8002838:	34 01 00 2d 	mvi r1,45                                      
    unsigned_num = (unsigned long) -num;                              
 800283c:	c8 10 80 00 	sub r16,r0,r16                                 
  unsigned long n;                                                    
  unsigned count;                                                     
  char toPrint[20];                                                   
                                                                      
  if ( sign && (num <  0) ) {                                         
    BSP_output_char('-');                                             
 8002840:	d8 40 00 00 	call r2                                        
    unsigned_num = (unsigned long) -num;                              
    if (maxwidth) maxwidth--;                                         
 8002844:	7d c1 00 00 	cmpnei r1,r14,0                                
 8002848:	c9 c1 70 00 	sub r14,r14,r1                                 
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
 800284c:	ba 00 08 00 	mv r1,r16                                      
 8002850:	ba 20 10 00 	mv r2,r17                                      
 8002854:	f8 00 3f 12 	calli 801249c <__udivsi3>                      
 8002858:	b8 20 68 00 	mv r13,r1                                      
 800285c:	22 34 00 ff 	andi r20,r17,0xff                              
    if (maxwidth) maxwidth--;                                         
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
 8002860:	34 0f 00 00 	mvi r15,0                                      
 8002864:	37 92 00 4c 	addi r18,sp,76                                 
  while ((n = unsigned_num / base) > 0) {                             
 8002868:	5c 20 00 04 	bne r1,r0,8002878 <vprintk+0x1e8>              
 800286c:	e0 00 00 72 	bi 8002a34 <vprintk+0x3a4>                     
 8002870:	b9 a0 80 00 	mv r16,r13                                     
 8002874:	b8 20 68 00 	mv r13,r1                                      
    toPrint[count++] = (char) (unsigned_num - (n * base));            
 8002878:	b9 a0 10 00 	mv r2,r13                                      
 800287c:	ba 80 08 00 	mv r1,r20                                      
 8002880:	f8 00 3e a2 	calli 8012308 <__mulsi3>                       
 *  console is not yet initialized or in ISR's.                       
 *                                                                    
 * Arguments:                                                         
 *    as in printf: fmt - format string, ... - unnamed arguments.     
 */                                                                   
void vprintk(                                                         
 8002884:	b6 4f 18 00 	add r3,r18,r15                                 
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
    toPrint[count++] = (char) (unsigned_num - (n * base));            
 8002888:	ca 01 80 00 	sub r16,r16,r1                                 
 800288c:	30 70 00 00 	sb (r3+0),r16                                  
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
 8002890:	b9 a0 08 00 	mv r1,r13                                      
 8002894:	ba 20 10 00 	mv r2,r17                                      
 8002898:	f8 00 3f 01 	calli 801249c <__udivsi3>                      
    toPrint[count++] = (char) (unsigned_num - (n * base));            
 800289c:	35 ef 00 01 	addi r15,r15,1                                 
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
 80028a0:	5c 20 ff f4 	bne r1,r0,8002870 <vprintk+0x1e0>              
 80028a4:	35 f0 00 01 	addi r16,r15,1                                 
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    unsigned_num = n;                                                 
  }                                                                   
  toPrint[count++] = (char) unsigned_num;                             
 80028a8:	b6 4f 78 00 	add r15,r18,r15                                
 80028ac:	31 ed 00 00 	sb (r15+0),r13                                 
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
 80028b0:	52 0e 00 06 	bgeu r16,r14,80028c8 <vprintk+0x238>           
    BSP_output_char(lead);                                            
 80028b4:	29 82 00 00 	lw r2,(r12+0)                                  
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    unsigned_num = n;                                                 
  }                                                                   
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
 80028b8:	35 ce ff ff 	addi r14,r14,-1                                
    BSP_output_char(lead);                                            
 80028bc:	ba c0 08 00 	mv r1,r22                                      
 80028c0:	d8 40 00 00 	call r2                                        
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    unsigned_num = n;                                                 
  }                                                                   
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
 80028c4:	55 d0 ff fc 	bgu r14,r16,80028b4 <vprintk+0x224>            
    BSP_output_char(lead);                                            
                                                                      
  for (n = 0; n < count; n++) {                                       
 80028c8:	46 00 ff 96 	be r16,r0,8002720 <vprintk+0x90>               <== NEVER TAKEN
    BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]); 
 80028cc:	36 0e ff ff 	addi r14,r16,-1                                
 *  console is not yet initialized or in ISR's.                       
 *                                                                    
 * Arguments:                                                         
 *    as in printf: fmt - format string, ... - unnamed arguments.     
 */                                                                   
void vprintk(                                                         
 80028d0:	b6 4e 70 00 	add r14,r18,r14                                
 80028d4:	34 0d 00 00 	mvi r13,0                                      
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    BSP_output_char(lead);                                            
                                                                      
  for (n = 0; n < count; n++) {                                       
    BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]); 
 80028d8:	41 c1 00 00 	lbu r1,(r14+0)                                 
 80028dc:	29 83 00 00 	lw r3,(r12+0)                                  
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    BSP_output_char(lead);                                            
                                                                      
  for (n = 0; n < count; n++) {                                       
 80028e0:	35 ad 00 01 	addi r13,r13,1                                 
    BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]); 
 80028e4:	b6 61 08 00 	add r1,r19,r1                                  
 80028e8:	40 21 00 00 	lbu r1,(r1+0)                                  
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    BSP_output_char(lead);                                            
                                                                      
  for (n = 0; n < count; n++) {                                       
 80028ec:	35 ce ff ff 	addi r14,r14,-1                                
    BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]); 
 80028f0:	d8 60 00 00 	call r3                                        
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    BSP_output_char(lead);                                            
                                                                      
  for (n = 0; n < count; n++) {                                       
 80028f4:	56 0d ff f9 	bgu r16,r13,80028d8 <vprintk+0x248>            
 80028f8:	e3 ff ff 8a 	bi 8002720 <vprintk+0x90>                      
      fmt++;                                                          
    }                                                                 
                                                                      
    if ((c = *fmt) == 'l') {                                          
      lflag = true;                                                   
      c = *++fmt;                                                     
 80028fc:	35 6b 00 01 	addi r11,r11,1                                 
 8002900:	41 64 00 00 	lbu r4,(r11+0)                                 
    }                                                                 
    if ( c == 'c' ) {                                                 
 8002904:	5c 99 ff b6 	bne r4,r25,80027dc <vprintk+0x14c>             <== ALWAYS TAKEN
      /* need a cast here since va_arg() only takes fully promoted types */
      char chr = (char) va_arg(ap, int);                              
      BSP_output_char(chr);                                           
 8002908:	42 e1 00 03 	lbu r1,(r23+3)                                 
 800290c:	29 82 00 00 	lw r2,(r12+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);                              
 8002910:	36 f7 00 04 	addi r23,r23,4                                 
      BSP_output_char(chr);                                           
 8002914:	d8 40 00 00 	call r2                                        
      continue;                                                       
 8002918:	e3 ff ff 82 	bi 8002720 <vprintk+0x90>                      
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
 800291c:	35 6b 00 01 	addi r11,r11,1                                 
 8002920:	41 64 00 00 	lbu r4,(r11+0)                                 
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
 8002924:	34 11 00 01 	mvi r17,1                                      
 8002928:	e3 ff ff 9c 	bi 8002798 <vprintk+0x108>                     
      continue;                                                       
    }                                                                 
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
      fmt++;                                                          
 800292c:	35 6b 00 01 	addi r11,r11,1                                 
 8002930:	41 64 00 00 	lbu r4,(r11+0)                                 
      BSP_output_char(*fmt);                                          
      continue;                                                       
    }                                                                 
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
 8002934:	34 16 00 30 	mvi r22,48                                     
 8002938:	e3 ff ff 95 	bi 800278c <vprintk+0xfc>                      
    }                                                                 
    if ( c == 's' ) {                                                 
      unsigned i, len;                                                
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
 800293c:	2a ef 00 00 	lw r15,(r23+0)                                 
 8002940:	36 f2 00 04 	addi r18,r23,4                                 
                                                                      
      if ( str == NULL ) {                                            
 8002944:	45 e0 00 3a 	be r15,r0,8002a2c <vprintk+0x39c>              
        str = "";                                                     
      }                                                               
                                                                      
      /* calculate length of string */                                
      for ( len=0, s=str ; *s ; len++, s++ )                          
 8002948:	41 e1 00 00 	lbu r1,(r15+0)                                 
 800294c:	34 0d 00 00 	mvi r13,0                                      
 8002950:	44 20 00 05 	be r1,r0,8002964 <vprintk+0x2d4>               
 8002954:	35 ad 00 01 	addi r13,r13,1                                 
 *  console is not yet initialized or in ISR's.                       
 *                                                                    
 * Arguments:                                                         
 *    as in printf: fmt - format string, ... - unnamed arguments.     
 */                                                                   
void vprintk(                                                         
 8002958:	b5 ed 08 00 	add r1,r15,r13                                 
      if ( str == NULL ) {                                            
        str = "";                                                     
      }                                                               
                                                                      
      /* calculate length of string */                                
      for ( len=0, s=str ; *s ; len++, s++ )                          
 800295c:	40 21 00 00 	lbu r1,(r1+0)                                  
 8002960:	5c 20 ff fd 	bne r1,r0,8002954 <vprintk+0x2c4>              
        ;                                                             
                                                                      
      /* leading spaces */                                            
      if ( !minus )                                                   
 8002964:	5e 20 00 08 	bne r17,r0,8002984 <vprintk+0x2f4>             
        for ( i=len ; i<width ; i++ )                                 
 8002968:	51 ae 00 07 	bgeu r13,r14,8002984 <vprintk+0x2f4>           
 800296c:	b9 a0 80 00 	mv r16,r13                                     
          BSP_output_char(' ');                                       
 8002970:	29 82 00 00 	lw r2,(r12+0)                                  
      for ( len=0, s=str ; *s ; len++, s++ )                          
        ;                                                             
                                                                      
      /* leading spaces */                                            
      if ( !minus )                                                   
        for ( i=len ; i<width ; i++ )                                 
 8002974:	36 10 00 01 	addi r16,r16,1                                 
          BSP_output_char(' ');                                       
 8002978:	34 01 00 20 	mvi r1,32                                      
 800297c:	d8 40 00 00 	call r2                                        
      for ( len=0, s=str ; *s ; len++, s++ )                          
        ;                                                             
                                                                      
      /* leading spaces */                                            
      if ( !minus )                                                   
        for ( i=len ; i<width ; i++ )                                 
 8002980:	55 d0 ff fc 	bgu r14,r16,8002970 <vprintk+0x2e0>            
          BSP_output_char(' ');                                       
                                                                      
      /* no width option */                                           
      if (width == 0) {                                               
 8002984:	5d c0 00 03 	bne r14,r0,8002990 <vprintk+0x300>             
          width = len;                                                
      }                                                               
                                                                      
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
 8002988:	45 ae 00 0e 	be r13,r14,80029c0 <vprintk+0x330>             
 800298c:	b9 a0 70 00 	mv r14,r13                                     
 8002990:	41 e1 00 00 	lbu r1,(r15+0)                                 
 8002994:	44 20 00 0b 	be r1,r0,80029c0 <vprintk+0x330>               <== NEVER TAKEN
        BSP_output_char(*str);                                        
 8002998:	29 82 00 00 	lw r2,(r12+0)                                  
      if (width == 0) {                                               
          width = len;                                                
      }                                                               
                                                                      
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
 800299c:	35 ef 00 01 	addi r15,r15,1                                 
        BSP_output_char(*str);                                        
 80029a0:	d8 40 00 00 	call r2                                        
 80029a4:	e0 00 00 03 	bi 80029b0 <vprintk+0x320>                     
 80029a8:	29 82 00 00 	lw r2,(r12+0)                                  
 80029ac:	d8 40 00 00 	call r2                                        
      if (width == 0) {                                               
          width = len;                                                
      }                                                               
                                                                      
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
 80029b0:	41 e2 00 00 	lbu r2,(r15+0)                                 
 80029b4:	35 ef 00 01 	addi r15,r15,1                                 
        BSP_output_char(*str);                                        
 80029b8:	b8 40 08 00 	mv r1,r2                                       
      if (width == 0) {                                               
          width = len;                                                
      }                                                               
                                                                      
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
 80029bc:	5c 40 ff fb 	bne r2,r0,80029a8 <vprintk+0x318>              
    }                                                                 
    if ( c == 's' ) {                                                 
      unsigned i, len;                                                
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
 80029c0:	ba 40 b8 00 	mv r23,r18                                     
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
        BSP_output_char(*str);                                        
                                                                      
      /* trailing spaces */                                           
      if ( minus )                                                    
 80029c4:	46 20 ff 57 	be r17,r0,8002720 <vprintk+0x90>               
        for ( i=len ; i<width ; i++ )                                 
 80029c8:	51 ae ff 56 	bgeu r13,r14,8002720 <vprintk+0x90>            
          BSP_output_char(' ');                                       
 80029cc:	29 82 00 00 	lw r2,(r12+0)                                  
      for ( i=0 ; i<width && *str ; str++ )                           
        BSP_output_char(*str);                                        
                                                                      
      /* trailing spaces */                                           
      if ( minus )                                                    
        for ( i=len ; i<width ; i++ )                                 
 80029d0:	35 ad 00 01 	addi r13,r13,1                                 
          BSP_output_char(' ');                                       
 80029d4:	34 01 00 20 	mvi r1,32                                      
 80029d8:	d8 40 00 00 	call r2                                        
      for ( i=0 ; i<width && *str ; str++ )                           
        BSP_output_char(*str);                                        
                                                                      
      /* trailing spaces */                                           
      if ( minus )                                                    
        for ( i=len ; i<width ; i++ )                                 
 80029dc:	55 cd ff fc 	bgu r14,r13,80029cc <vprintk+0x33c>            
    }                                                                 
    if ( c == 's' ) {                                                 
      unsigned i, len;                                                
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
 80029e0:	ba 40 b8 00 	mv r23,r18                                     
 80029e4:	e3 ff ff 4f 	bi 8002720 <vprintk+0x90>                      
    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' ) {                              
 80029e8:	64 86 00 55 	cmpei r6,r4,85                                 
 80029ec:	64 85 00 75 	cmpei r5,r4,117                                
      base = 10; sign = false;                                        
 80029f0:	34 01 00 00 	mvi r1,0                                       
    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' ) {                              
 80029f4:	b8 c5 28 00 	or r5,r6,r5                                    
 80029f8:	5c a3 ff 8b 	bne r5,r3,8002824 <vprintk+0x194>              
      base = 10; sign = false;                                        
    } else if ( c == 'x' || c == 'X' ) {                              
 80029fc:	64 86 00 58 	cmpei r6,r4,88                                 
 8002a00:	64 83 00 78 	cmpei r3,r4,120                                
      base = 16; sign = false;                                        
 8002a04:	b8 a0 08 00 	mv r1,r5                                       
    } 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' ) {                              
 8002a08:	b8 c3 18 00 	or r3,r6,r3                                    
      base = 16; sign = false;                                        
 8002a0c:	34 11 00 10 	mvi r17,16                                     
    } 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' ) {                              
 8002a10:	5c 65 ff 85 	bne r3,r5,8002824 <vprintk+0x194>              
      base = 16; sign = false;                                        
    } else if ( c == 'p' ) {                                          
 8002a14:	34 02 00 70 	mvi r2,112                                     
 8002a18:	44 82 ff 83 	be r4,r2,8002824 <vprintk+0x194>               
      base = 16; sign = false; lflag = true;                          
    } else {                                                          
      BSP_output_char(c);                                             
 8002a1c:	29 82 00 00 	lw r2,(r12+0)                                  
 8002a20:	b8 80 08 00 	mv r1,r4                                       
 8002a24:	d8 40 00 00 	call r2                                        
      continue;                                                       
 8002a28:	e3 ff ff 3e 	bi 8002720 <vprintk+0x90>                      
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
                                                                      
      if ( str == NULL ) {                                            
        str = "";                                                     
 8002a2c:	2b 8f 00 48 	lw r15,(sp+72)                                 
 8002a30:	e3 ff ff c6 	bi 8002948 <vprintk+0x2b8>                     
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
 8002a34:	ba 00 68 00 	mv r13,r16                                     
    if (maxwidth) maxwidth--;                                         
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
 8002a38:	34 0f 00 00 	mvi r15,0                                      
  while ((n = unsigned_num / base) > 0) {                             
 8002a3c:	34 10 00 01 	mvi r16,1                                      
 8002a40:	37 92 00 4c 	addi r18,sp,76                                 
 8002a44:	e3 ff ff 99 	bi 80028a8 <vprintk+0x218>                     
                                                                      

08012bfc <write>: ssize_t write( int fd, const void *buffer, size_t count ) {
 8012bfc:	37 9c ff f4 	addi sp,sp,-12                                 
 8012c00:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8012c04:	5b 8c 00 08 	sw (sp+8),r12                                  
 8012c08:	5b 9d 00 04 	sw (sp+4),ra                                   
  ssize_t  rc;                                                        
  rtems_libio_t     *iop;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
 8012c0c:	78 04 08 01 	mvhi r4,0x801                                  
 8012c10:	38 84 40 10 	ori r4,r4,0x4010                               
 8012c14:	28 84 00 00 	lw r4,(r4+0)                                   
 8012c18:	54 81 00 06 	bgu r4,r1,8012c30 <write+0x34>                 
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
 8012c1c:	fb ff e8 58 	calli 800cd7c <__errno>                        
 8012c20:	34 02 00 09 	mvi r2,9                                       
 8012c24:	58 22 00 00 	sw (r1+0),r2                                   
 8012c28:	34 0c ff ff 	mvi r12,-1                                     
 8012c2c:	e0 00 00 23 	bi 8012cb8 <write+0xbc>                        
{                                                                     
  ssize_t  rc;                                                        
  rtems_libio_t     *iop;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 8012c30:	b4 21 08 00 	add r1,r1,r1                                   
 8012c34:	78 04 08 01 	mvhi r4,0x801                                  
 8012c38:	b4 21 08 00 	add r1,r1,r1                                   
 8012c3c:	38 84 47 8c 	ori r4,r4,0x478c                               
 8012c40:	b4 21 08 00 	add r1,r1,r1                                   
 8012c44:	28 8b 00 00 	lw r11,(r4+0)                                  
 8012c48:	b4 21 08 00 	add r1,r1,r1                                   
 8012c4c:	b4 21 08 00 	add r1,r1,r1                                   
 8012c50:	b4 21 08 00 	add r1,r1,r1                                   
 8012c54:	b5 61 58 00 	add r11,r11,r1                                 
  rtems_libio_check_is_open( iop );                                   
 8012c58:	29 61 00 18 	lw r1,(r11+24)                                 
 8012c5c:	20 24 01 00 	andi r4,r1,0x100                               
 8012c60:	44 80 ff ef 	be r4,r0,8012c1c <write+0x20>                  
  rtems_libio_check_buffer( buffer );                                 
 8012c64:	44 40 00 1b 	be r2,r0,8012cd0 <write+0xd4>                  <== NEVER TAKEN
  rtems_libio_check_count( count );                                   
 8012c68:	34 0c 00 00 	mvi r12,0                                      
 8012c6c:	44 60 00 13 	be r3,r0,8012cb8 <write+0xbc>                  
  rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );            
 8012c70:	20 21 00 04 	andi r1,r1,0x4                                 
 8012c74:	44 20 00 17 	be r1,r0,8012cd0 <write+0xd4>                  
                                                                      
  /*                                                                  
   *  Now process the write() request.                                
   */                                                                 
  rc = (*iop->pathinfo.handlers->write_h)( iop, buffer, count );      
 8012c78:	29 64 00 24 	lw r4,(r11+36)                                 
 8012c7c:	b9 60 08 00 	mv r1,r11                                      
 8012c80:	28 84 00 0c 	lw r4,(r4+12)                                  
 8012c84:	d8 80 00 00 	call r4                                        
 8012c88:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( rc > 0 )                                                       
 8012c8c:	4c 01 00 0b 	bge r0,r1,8012cb8 <write+0xbc>                 
    iop->offset += rc;                                                
 8012c90:	34 02 00 1f 	mvi r2,31                                      
 8012c94:	fb ff fd 4f 	calli 80121d0 <__ashrsi3>                      
 8012c98:	29 62 00 14 	lw r2,(r11+20)                                 
 8012c9c:	29 64 00 10 	lw r4,(r11+16)                                 
 8012ca0:	b5 82 10 00 	add r2,r12,r2                                  
 8012ca4:	f5 82 18 00 	cmpgu r3,r12,r2                                
 8012ca8:	b4 24 08 00 	add r1,r1,r4                                   
 8012cac:	b4 61 08 00 	add r1,r3,r1                                   
 8012cb0:	59 61 00 10 	sw (r11+16),r1                                 
 8012cb4:	59 62 00 14 	sw (r11+20),r2                                 
                                                                      
  return rc;                                                          
}                                                                     
 8012cb8:	b9 80 08 00 	mv r1,r12                                      
 8012cbc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8012cc0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8012cc4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8012cc8:	37 9c 00 0c 	addi sp,sp,12                                  
 8012ccc:	c3 a0 00 00 	ret                                            
  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( iop, LIBIO_FLAGS_WRITE );            
 8012cd0:	fb ff e8 2b 	calli 800cd7c <__errno>                        
 8012cd4:	34 02 00 16 	mvi r2,22                                      
 8012cd8:	58 22 00 00 	sw (r1+0),r2                                   
 8012cdc:	34 0c ff ff 	mvi r12,-1                                     
 8012ce0:	e3 ff ff f6 	bi 8012cb8 <write+0xbc>                        
                                                                      

08004140 <writev>: ssize_t writev( int fd, const struct iovec *iov, int iovcnt ) {
 8004140:	37 9c ff e4 	addi sp,sp,-28                                 
 8004144:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8004148:	5b 8c 00 18 	sw (sp+24),r12                                 
 800414c:	5b 8d 00 14 	sw (sp+20),r13                                 
 8004150:	5b 8e 00 10 	sw (sp+16),r14                                 
 8004154:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8004158:	5b 90 00 08 	sw (sp+8),r16                                  
 800415c:	5b 9d 00 04 	sw (sp+4),ra                                   
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  ssize_t        old;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
 8004160:	78 04 08 01 	mvhi r4,0x801                                  
 8004164:	38 84 60 10 	ori r4,r4,0x6010                               
 8004168:	28 84 00 00 	lw r4,(r4+0)                                   
ssize_t writev(                                                       
  int                 fd,                                             
  const struct iovec *iov,                                            
  int                 iovcnt                                          
)                                                                     
{                                                                     
 800416c:	b8 60 60 00 	mv r12,r3                                      
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  ssize_t        old;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
 8004170:	54 81 00 0f 	bgu r4,r1,80041ac <writev+0x6c>                
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
 8004174:	f8 00 27 7a 	calli 800df5c <__errno>                        
 8004178:	34 02 00 09 	mvi r2,9                                       
 800417c:	58 22 00 00 	sw (r1+0),r2                                   
 8004180:	34 0e ff ff 	mvi r14,-1                                     
    if (bytes != iov[ v ].iov_len)                                    
      break;                                                          
  }                                                                   
                                                                      
  return total;                                                       
}                                                                     
 8004184:	b9 c0 08 00 	mv r1,r14                                      
 8004188:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800418c:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8004190:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8004194:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8004198:	2b 8e 00 10 	lw r14,(sp+16)                                 
 800419c:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80041a0:	2b 90 00 08 	lw r16,(sp+8)                                  
 80041a4:	37 9c 00 1c 	addi sp,sp,28                                  
 80041a8:	c3 a0 00 00 	ret                                            
  rtems_libio_t *iop;                                                 
  ssize_t        old;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 80041ac:	b4 21 08 00 	add r1,r1,r1                                   
 80041b0:	78 03 08 01 	mvhi r3,0x801                                  
 80041b4:	b4 21 08 00 	add r1,r1,r1                                   
 80041b8:	38 63 67 8c 	ori r3,r3,0x678c                               
 80041bc:	b4 21 08 00 	add r1,r1,r1                                   
 80041c0:	28 6f 00 00 	lw r15,(r3+0)                                  
 80041c4:	b4 21 08 00 	add r1,r1,r1                                   
 80041c8:	b4 21 08 00 	add r1,r1,r1                                   
 80041cc:	b4 21 08 00 	add r1,r1,r1                                   
 80041d0:	b5 e1 78 00 	add r15,r15,r1                                 
  rtems_libio_check_is_open( iop );                                   
 80041d4:	29 e1 00 18 	lw r1,(r15+24)                                 
 80041d8:	20 23 01 00 	andi r3,r1,0x100                               
 80041dc:	44 60 ff e6 	be r3,r0,8004174 <writev+0x34>                 
  rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );            
 80041e0:	20 21 00 04 	andi r1,r1,0x4                                 
 80041e4:	44 20 00 03 	be r1,r0,80041f0 <writev+0xb0>                 <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Argument validation on IO vector                                
   */                                                                 
  if ( !iov )                                                         
 80041e8:	44 40 00 02 	be r2,r0,80041f0 <writev+0xb0>                 
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
 80041ec:	49 80 00 06 	bg r12,r0,8004204 <writev+0xc4>                
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old || total > SSIZE_MAX )                           
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 80041f0:	f8 00 27 5b 	calli 800df5c <__errno>                        
 80041f4:	34 02 00 16 	mvi r2,22                                      
 80041f8:	58 22 00 00 	sw (r1+0),r2                                   
 80041fc:	34 0e ff ff 	mvi r14,-1                                     
 8004200:	e3 ff ff e1 	bi 8004184 <writev+0x44>                       
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
 8004204:	34 01 04 00 	mvi r1,1024                                    
 8004208:	4c 2c 00 02 	bge r1,r12,8004210 <writev+0xd0>               <== ALWAYS TAKEN
 800420c:	e3 ff ff f9 	bi 80041f0 <writev+0xb0>                       <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8004210:	b8 40 58 00 	mv r11,r2                                      
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
 8004214:	b8 40 20 00 	mv r4,r2                                       
 8004218:	34 08 00 01 	mvi r8,1                                       
 800421c:	34 06 00 00 	mvi r6,0                                       
 8004220:	34 07 00 00 	mvi r7,0                                       
                                                                      
    /*                                                                
     *  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 )                                       
 8004224:	28 82 00 00 	lw r2,(r4+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++ ) {                    
 8004228:	34 c6 00 01 	addi r6,r6,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 )                                       
 800422c:	44 40 ff f1 	be r2,r0,80041f0 <writev+0xb0>                 
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
 8004230:	28 82 00 04 	lw r2,(r4+4)                                   
   *  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++ ) {                    
 8004234:	34 84 00 08 	addi r4,r4,8                                   
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
 8004238:	b4 e2 28 00 	add r5,r7,r2                                   
    if ( total < old || total > SSIZE_MAX )                           
 800423c:	e8 e5 38 00 	cmpg r7,r7,r5                                  
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 8004240:	64 42 00 00 	cmpei r2,r2,0                                  
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old || total > SSIZE_MAX )                           
 8004244:	68 a3 7f ff 	cmpgi r3,r5,32767                              
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 8004248:	c8 02 10 00 	sub r2,r0,r2                                   
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old || total > SSIZE_MAX )                           
 800424c:	b8 67 38 00 	or r7,r3,r7                                    
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 8004250:	a1 02 40 00 	and r8,r8,r2                                   
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old || total > SSIZE_MAX )                           
 8004254:	5c e0 ff e7 	bne r7,r0,80041f0 <writev+0xb0>                
   *  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++ ) {                    
 8004258:	49 86 00 0a 	bg r12,r6,8004280 <writev+0x140>               
                                                                      
  /*                                                                  
   * A writev with all zeros is supposed to have no effect per OpenGroup.
   */                                                                 
  if ( all_zeros == true ) {                                          
    return 0;                                                         
 800425c:	34 0e 00 00 	mvi r14,0                                      
  }                                                                   
                                                                      
  /*                                                                  
   * A writev with all zeros is supposed to have no effect per OpenGroup.
   */                                                                 
  if ( all_zeros == true ) {                                          
 8004260:	5d 00 ff c9 	bne r8,r0,8004184 <writev+0x44>                
 8004264:	34 0d 00 00 	mvi r13,0                                      
  /*                                                                  
   *  Now process the writev().                                       
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    /* all zero lengths has no effect */                              
    if ( iov[v].iov_len == 0 )                                        
 8004268:	29 63 00 04 	lw r3,(r11+4)                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the writev().                                       
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 800426c:	35 ad 00 01 	addi r13,r13,1                                 
    /* all zero lengths has no effect */                              
    if ( iov[v].iov_len == 0 )                                        
 8004270:	5c 60 00 06 	bne r3,r0,8004288 <writev+0x148>               <== ALWAYS TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the writev().                                       
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 8004274:	35 6b 00 08 	addi r11,r11,8                                 
 8004278:	49 8d ff fc 	bg r12,r13,8004268 <writev+0x128>              
 800427c:	e3 ff ff c2 	bi 8004184 <writev+0x44>                       
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
 8004280:	b8 a0 38 00 	mv r7,r5                                       
 8004284:	e3 ff ff e8 	bi 8004224 <writev+0xe4>                       
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    /* all zero lengths has no effect */                              
    if ( iov[v].iov_len == 0 )                                        
      continue;                                                       
                                                                      
    bytes = (*iop->pathinfo.handlers->write_h)(                       
 8004288:	29 e1 00 24 	lw r1,(r15+36)                                 
 800428c:	29 62 00 00 	lw r2,(r11+0)                                  
 8004290:	28 24 00 0c 	lw r4,(r1+12)                                  
 8004294:	b9 e0 08 00 	mv r1,r15                                      
 8004298:	d8 80 00 00 	call r4                                        
 800429c:	b8 20 80 00 	mv r16,r1                                      
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
                                                                      
    if ( bytes > 0 ) {                                                
      iop->offset += bytes;                                           
 80042a0:	34 02 00 1f 	mvi r2,31                                      
      iop,                                                            
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
 80042a4:	48 01 00 0f 	bg r0,r1,80042e0 <writev+0x1a0>                <== NEVER TAKEN
      return -1;                                                      
                                                                      
    if ( bytes > 0 ) {                                                
 80042a8:	44 20 00 0b 	be r1,r0,80042d4 <writev+0x194>                <== NEVER TAKEN
      iop->offset += bytes;                                           
 80042ac:	f8 00 3c f0 	calli 801366c <__ashrsi3>                      
 80042b0:	29 e2 00 14 	lw r2,(r15+20)                                 
 80042b4:	29 e4 00 10 	lw r4,(r15+16)                                 
      total       += bytes;                                           
 80042b8:	b5 d0 70 00 	add r14,r14,r16                                
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
                                                                      
    if ( bytes > 0 ) {                                                
      iop->offset += bytes;                                           
 80042bc:	b6 02 10 00 	add r2,r16,r2                                  
 80042c0:	f6 02 18 00 	cmpgu r3,r16,r2                                
 80042c4:	b4 24 08 00 	add r1,r1,r4                                   
 80042c8:	b4 61 08 00 	add r1,r3,r1                                   
 80042cc:	59 e1 00 10 	sw (r15+16),r1                                 
 80042d0:	59 e2 00 14 	sw (r15+20),r2                                 
      total       += bytes;                                           
    }                                                                 
                                                                      
    if (bytes != iov[ v ].iov_len)                                    
 80042d4:	29 61 00 04 	lw r1,(r11+4)                                  
 80042d8:	46 01 ff e7 	be r16,r1,8004274 <writev+0x134>               <== ALWAYS TAKEN
 80042dc:	e3 ff ff aa 	bi 8004184 <writev+0x44>                       <== NOT EXECUTED
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
 80042e0:	34 0e ff ff 	mvi r14,-1                                     <== NOT EXECUTED
 80042e4:	e3 ff ff a8 	bi 8004184 <writev+0x44>                       <== NOT EXECUTED