RTEMS-6
Annotated Report
sapi
Mon Mar 1 00:13:15 2021

0000000040027ad0 <_IO_Initialize_all_drivers>:                                            
#include <rtems/ioimpl.h>                                                                 
                                                                                          
bool _IO_All_drivers_initialized;                                                         
                                                                                          
void _IO_Initialize_all_drivers( void )                                                   
{                                                                                         
    40027ad0:   a9be7bfd    stp x29, x30, [sp, #-32]!                                     
   rtems_device_major_number major;                                                       
                                                                                          
   _IO_All_drivers_initialized = true;                                                    
    40027ad4:   b00006e0    adrp    x0, 40104000 <rtems_libio_iops+0x260>                 
{                                                                                         
    40027ad8:   910003fd    mov x29, sp                                                   
    40027adc:   a90153f3    stp x19, x20, [sp, #16]                                       
                                                                                          
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )                             
    40027ae0:   d00000c1    adrp    x1, 40041000 <__trunctfdf2+0x170>                     
    40027ae4:   f9454834    ldr x20, [x1, #2704]                                          
   _IO_All_drivers_initialized = true;                                                    
    40027ae8:   52800021    mov w1, #0x1                    // #1                         
    40027aec:   39075001    strb    w1, [x0, #468]                                        
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )                             
    40027af0:   b4000134    cbz x20, 40027b14 <_IO_Initialize_all_drivers+0x44>           <== NEVER TAKEN
    40027af4:   52800013    mov w19, #0x0                       // #0                     
     (void) rtems_io_initialize( major, 0, NULL );                                        
    40027af8:   2a1303e0    mov w0, w19                                                   
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )                             
    40027afc:   11000673    add w19, w19, #0x1                                            
     (void) rtems_io_initialize( major, 0, NULL );                                        
    40027b00:   d2800002    mov x2, #0x0                    // #0                         
    40027b04:   52800001    mov w1, #0x0                    // #0                         
    40027b08:   94000006    bl  40027b20 <rtems_io_initialize>                            
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )                             
    40027b0c:   eb33429f    cmp x20, w19, uxtw                                            
    40027b10:   54ffff48    b.hi    40027af8 <_IO_Initialize_all_drivers+0x28>  // b.pmore
}                                                                                         
    40027b14:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40027b18:   a8c27bfd    ldp x29, x30, [sp], #32                                       
    40027b1c:   d65f03c0    ret                                                           
                                                                                          

00000000400252f0 <rtems_chain_get_with_wait>: rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) {
    400252f0:   a9bb7bfd    stp x29, x30, [sp, #-80]!                                     
    400252f4:   910003fd    mov x29, sp                                                   
    400252f8:   a90153f3    stp x19, x20, [sp, #16]                                       
    400252fc:   2a0203f4    mov w20, w2                                                   
    40025300:   a9025bf5    stp x21, x22, [sp, #32]                                       
    40025304:   aa0003f6    mov x22, x0                                                   
    40025308:   2a0103f5    mov w21, w1                                                   
    4002530c:   f9001bf7    str x23, [sp, #48]                                            
    40025310:   aa0303f7    mov x23, x3                                                   
    40025314:   d503201f    nop                                                           
  rtems_status_code sc = RTEMS_SUCCESSFUL;                                                
  rtems_chain_node *node = NULL;                                                          
                                                                                          
  while (                                                                                 
    sc == RTEMS_SUCCESSFUL                                                                
      && (node = rtems_chain_get( chain )) == NULL                                        
    40025318:   aa1603e0    mov x0, x22                                                   
    4002531c:   9400002d    bl  400253d0 <rtems_chain_get>                                
  ) {                                                                                     
    rtems_event_set out;                                                                  
    sc = rtems_event_receive(                                                             
    40025320:   910133e3    add x3, sp, #0x4c                                             
      && (node = rtems_chain_get( chain )) == NULL                                        
    40025324:   aa0003f3    mov x19, x0                                                   
    sc = rtems_event_receive(                                                             
    40025328:   2a1403e2    mov w2, w20                                                   
    4002532c:   2a1503e0    mov w0, w21                                                   
    40025330:   52800001    mov w1, #0x0                    // #0                         
      && (node = rtems_chain_get( chain )) == NULL                                        
    40025334:   b5000133    cbnz    x19, 40025358 <rtems_chain_get_with_wait+0x68>        
    sc = rtems_event_receive(                                                             
    40025338:   97fffec2    bl  40024e40 <rtems_event_receive>                            
  while (                                                                                 
    4002533c:   34fffee0    cbz w0, 40025318 <rtems_chain_get_with_wait+0x28>             <== NEVER TAKEN
  }                                                                                       
                                                                                          
  *node_ptr = node;                                                                       
                                                                                          
  return sc;                                                                              
}                                                                                         
    40025340:   a9425bf5    ldp x21, x22, [sp, #32]                                       
  *node_ptr = node;                                                                       
    40025344:   f90002f3    str x19, [x23]                                                
}                                                                                         
    40025348:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002534c:   f9401bf7    ldr x23, [sp, #48]                                            
    40025350:   a8c57bfd    ldp x29, x30, [sp], #80                                       
    40025354:   d65f03c0    ret                                                           
    40025358:   a9425bf5    ldp x21, x22, [sp, #32]                                       
  *node_ptr = node;                                                                       
    4002535c:   f90002f3    str x19, [x23]                                                
    40025360:   52800000    mov w0, #0x0                    // #0                         
}                                                                                         
    40025364:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40025368:   f9401bf7    ldr x23, [sp, #48]                                            
    4002536c:   a8c57bfd    ldp x29, x30, [sp], #80                                       
    40025370:   d65f03c0    ret                                                           
    ...                                                                                   
                                                                                          

000000004002c790 <rtems_configuration_get_maximum_extensions>:
    4002c790:   900006a0    adrp    x0, 40100000 <Commands>                               <== NOT EXECUTED
    4002c794:   9118c001    add x1, x0, #0x630                                            <== NOT EXECUTED
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
    4002c798:   794c6000    ldrh    w0, [x0, #1584]                                       <== NOT EXECUTED
    4002c79c:   79404421    ldrh    w1, [x1, #34]                                         <== NOT EXECUTED
    4002c7a0:   7100003f    cmp w1, #0x0                                                  <== NOT EXECUTED
    4002c7a4:   32010021    orr w1, w1, #0x80000000                                       <== NOT EXECUTED
    4002c7a8:   1a810000    csel    w0, w0, w1, eq  // eq = none                          <== NOT EXECUTED
                                                                                          
uint32_t rtems_configuration_get_maximum_extensions( void )                               
{                                                                                         
    return get_config_max( &_Extension_Information );                                     
}                                                                                         
    4002c7ac:   d65f03c0    ret                                                           <== NOT EXECUTED
                                                                                          

0000000040028ea0 <rtems_initialize_executive>: RTEMS_SYSINIT_IDLE_THREADS, RTEMS_SYSINIT_ORDER_MIDDLE ); void rtems_initialize_executive(void) {
    40028ea0:   a9be7bfd    stp x29, x30, [sp, #-32]!                                     
    40028ea4:   910003fd    mov x29, sp                                                   
    40028ea8:   a90153f3    stp x19, x20, [sp, #16]                                       
  const rtems_sysinit_item *item;                                                         
                                                                                          
  /* Invoke the registered system initialization handlers */                              
  RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) {                                            
    40028eac:   f00000b4    adrp    x20, 4003f000 <_Linker_set__Sysinit__Console_simple_Initialize>
    40028eb0:   91008294    add x20, x20, #0x20                                           
                                                                                          
RTEMS_INLINE_ROUTINE uintptr_t _Linker_set_Obfuscate( const void *ptr )                   
{                                                                                         
  uintptr_t addr;                                                                         
                                                                                          
  addr = (uintptr_t) ptr;                                                                 
    40028eb4:   d00000b3    adrp    x19, 4003e000 <hex2ascii_data+0x100>                  
    40028eb8:   913ea273    add x19, x19, #0xfa8                                          
    40028ebc:   eb14027f    cmp x19, x20                                                  
    40028ec0:   540000c0    b.eq    40028ed8 <rtems_initialize_executive+0x38>  // b.none <== NEVER TAKEN
    40028ec4:   d503201f    nop                                                           
    ( *item->handler )();                                                                 
    40028ec8:   f8408660    ldr x0, [x19], #8                                             
    40028ecc:   d63f0000    blr x0                                                        
  RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) {                                            
    40028ed0:   eb14027f    cmp x19, x20                                                  
    40028ed4:   54ffffa1    b.ne    40028ec8 <rtems_initialize_executive+0x28>  // b.any  
    40028ed8:   b00006e0    adrp    x0, 40105000 <Arr_2_Glob+0x1e68>                      
    40028edc:   52800041    mov w1, #0x2                    // #2                         
    40028ee0:   b90a0801    str w1, [x0, #2568]                                           
                                                                                          
  _System_state_Set( SYSTEM_STATE_UP );                                                   
                                                                                          
  _SMP_Request_start_multitasking();                                                      
                                                                                          
  _Thread_Start_multitasking();                                                           
    40028ee4:   940005c7    bl  4002a600 <_Thread_Start_multitasking>                     
    ...                                                                                   
                                                                                          

00000000400263d0 <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 ) {
    400263d0:   a9bc7bfd    stp x29, x30, [sp, #-64]!                                     
    400263d4:   910003fd    mov x29, sp                                                   
    400263d8:   a90153f3    stp x19, x20, [sp, #16]                                       
    400263dc:   2a0003f3    mov w19, w0                                                   
    400263e0:   aa0103f4    mov x20, x1                                                   
    400263e4:   a9025bf5    stp x21, x22, [sp, #32]                                       
    400263e8:   aa0203f5    mov x21, x2                                                   
    400263ec:   f9001bf7    str x23, [sp, #48]                                            
  rtems_device_major_number major_limit = _IO_Number_of_drivers;                          
    400263f0:   900000b7    adrp    x23, 4003a000 <__sfp_handle_exceptions+0x40>          
    400263f4:   f9429af6    ldr x22, [x23, #1328]                                         
  ISR_lock_Context lock_context;                                                          
                                                                                          
  if ( rtems_interrupt_is_in_progress() )                                                 
    400263f8:   940002b2    bl  40026ec0 <_ISR_Is_in_progress>                            
    400263fc:   72001c1f    tst w0, #0xff                                                 
    40026400:   540002c1    b.ne    40026458 <rtems_io_register_driver+0x88>  // b.any    
    return RTEMS_CALLED_FROM_ISR;                                                         
                                                                                          
  if ( registered_major == NULL )                                                         
    40026404:   b40003b5    cbz x21, 40026478 <rtems_io_register_driver+0xa8>             
    return RTEMS_INVALID_ADDRESS;                                                         
                                                                                          
  /* Set it to an invalid value */                                                        
  *registered_major = major_limit;                                                        
    40026408:   b90002b6    str w22, [x21]                                                
                                                                                          
  if ( driver_table == NULL )                                                             
    4002640c:   b4000374    cbz x20, 40026478 <rtems_io_register_driver+0xa8>             
  return table->initialization_entry == NULL && table->open_entry == NULL;                
    40026410:   f9400280    ldr x0, [x20]                                                 
    40026414:   b40002e0    cbz x0, 40026470 <rtems_io_register_driver+0xa0>              
    return RTEMS_INVALID_ADDRESS;                                                         
                                                                                          
  if ( rtems_io_is_empty_table( driver_table ) )                                          
    return RTEMS_INVALID_ADDRESS;                                                         
                                                                                          
  if ( major >= major_limit )                                                             
    40026418:   6b1302df    cmp w22, w19                                                  
    4002641c:   540009c9    b.ls    40026554 <rtems_io_register_driver+0x184>  // b.plast 
  __asm__ volatile (                                                                      
    40026420:   d53b4223    mrs x3, daif                                                  
    40026424:   d50342df    msr daifset, #0x2                                             
    return RTEMS_INVALID_NUMBER;                                                          
                                                                                          
  _IO_Driver_registration_acquire( &lock_context );                                       
                                                                                          
  if ( major == 0 ) {                                                                     
    40026428:   34000773    cbz w19, 40026514 <rtems_io_register_driver+0x144>            
      _IO_Driver_registration_release( &lock_context );                                   
      return sc;                                                                          
    }                                                                                     
    major = *registered_major;                                                            
  } else {                                                                                
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;           
    4002642c:   52800600    mov w0, #0x30                   // #48                        
    40026430:   900006e1    adrp    x1, 40102000 <_Configuration_Scheduler_priority_dflt+0x15d0>
    40026434:   91096021    add x1, x1, #0x258                                            
    40026438:   9ba07e60    umull   x0, w19, w0                                           
    4002643c:   8b000022    add x2, x1, x0                                                
  return table->initialization_entry == NULL && table->open_entry == NULL;                
    40026440:   f8606820    ldr x0, [x1, x0]                                              
    40026444:   b4000260    cbz x0, 40026490 <rtems_io_register_driver+0xc0>              
  __asm__ volatile (                                                                      
    40026448:   92407c63    and x3, x3, #0xffffffff                                       
    4002644c:   d51b4223    msr daif, x3                                                  
                                                                                          
    if ( !rtems_io_is_empty_table( table ) ) {                                            
      _IO_Driver_registration_release( &lock_context );                                   
      return RTEMS_RESOURCE_IN_USE;                                                       
    40026450:   52800180    mov w0, #0xc                    // #12                        
    40026454:   14000002    b   4002645c <rtems_io_register_driver+0x8c>                  
    return RTEMS_CALLED_FROM_ISR;                                                         
    40026458:   52800240    mov w0, #0x12                   // #18                        
    /* The driver will be initialized together with all other drivers                     
     * in a later stage by _IO_Initialize_all_drivers().                                  
     */                                                                                   
    return RTEMS_SUCCESSFUL;                                                              
  }                                                                                       
}                                                                                         
    4002645c:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40026460:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40026464:   f9401bf7    ldr x23, [sp, #48]                                            
    40026468:   a8c47bfd    ldp x29, x30, [sp], #64                                       
    4002646c:   d65f03c0    ret                                                           
  return table->initialization_entry == NULL && table->open_entry == NULL;                
    40026470:   f9400680    ldr x0, [x20, #8]                                             
    40026474:   b5fffd20    cbnz    x0, 40026418 <rtems_io_register_driver+0x48>          
    return RTEMS_INVALID_ADDRESS;                                                         
    40026478:   52800120    mov w0, #0x9                    // #9                         
}                                                                                         
    4002647c:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40026480:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40026484:   f9401bf7    ldr x23, [sp, #48]                                            
    40026488:   a8c47bfd    ldp x29, x30, [sp], #64                                       
    4002648c:   d65f03c0    ret                                                           
  return table->initialization_entry == NULL && table->open_entry == NULL;                
    40026490:   f9400440    ldr x0, [x2, #8]                                              
    40026494:   b5fffda0    cbnz    x0, 40026448 <rtems_io_register_driver+0x78>          
  _IO_Driver_address_table [major] = *driver_table;                                       
    40026498:   2a1303e2    mov w2, w19                                                   
    4002649c:   d2800600    mov x0, #0x30                   // #48                        
    *registered_major = major;                                                            
    400264a0:   b90002b3    str w19, [x21]                                                
  _IO_Driver_address_table [major] = *driver_table;                                       
    400264a4:   f9400284    ldr x4, [x20]                                                 
    400264a8:   9b007c42    mul x2, x2, x0                                                
    400264ac:   8b020020    add x0, x1, x2                                                
    400264b0:   f8226824    str x4, [x1, x2]                                              
    400264b4:   f9400681    ldr x1, [x20, #8]                                             
    400264b8:   f9000401    str x1, [x0, #8]                                              
    400264bc:   f9400a81    ldr x1, [x20, #16]                                            
    400264c0:   f9000801    str x1, [x0, #16]                                             
    400264c4:   f9400e81    ldr x1, [x20, #24]                                            
    400264c8:   f9000c01    str x1, [x0, #24]                                             
    400264cc:   f9401281    ldr x1, [x20, #32]                                            
    400264d0:   f9001001    str x1, [x0, #32]                                             
    400264d4:   f9401681    ldr x1, [x20, #40]                                            
    400264d8:   f9001401    str x1, [x0, #40]                                             
    400264dc:   92407c63    and x3, x3, #0xffffffff                                       
    400264e0:   d51b4223    msr daif, x3                                                  
  if ( _IO_All_drivers_initialized ) {                                                    
    400264e4:   b00006e0    adrp    x0, 40103000 <_Thread_Heads+0x8>                      
    400264e8:   39617001    ldrb    w1, [x0, #2140]                                       
    return RTEMS_SUCCESSFUL;                                                              
    400264ec:   52800000    mov w0, #0x0                    // #0                         
  if ( _IO_All_drivers_initialized ) {                                                    
    400264f0:   34fffb61    cbz w1, 4002645c <rtems_io_register_driver+0x8c>              <== NEVER TAKEN
    return rtems_io_initialize( major, 0, NULL );                                         
    400264f4:   2a1303e0    mov w0, w19                                                   
    400264f8:   d2800002    mov x2, #0x0                    // #0                         
}                                                                                         
    400264fc:   a94153f3    ldp x19, x20, [sp, #16]                                       
    return rtems_io_initialize( major, 0, NULL );                                         
    40026500:   52800001    mov w1, #0x0                    // #0                         
}                                                                                         
    40026504:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40026508:   f9401bf7    ldr x23, [sp, #48]                                            
    4002650c:   a8c47bfd    ldp x29, x30, [sp], #64                                       
    return rtems_io_initialize( major, 0, NULL );                                         
    40026510:   17ffff9c    b   40026380 <rtems_io_initialize>                            
  rtems_device_major_number n = _IO_Number_of_drivers;                                    
    40026514:   f9429ae5    ldr x5, [x23, #1328]                                          
    40026518:   2a0503e4    mov w4, w5                                                    
  for ( m = 0; m < n; ++m ) {                                                             
    4002651c:   34000325    cbz w5, 40026580 <rtems_io_register_driver+0x1b0>             <== NEVER TAKEN
    40026520:   900006e1    adrp    x1, 40102000 <_Configuration_Scheduler_priority_dflt+0x15d0>
    40026524:   91096021    add x1, x1, #0x258                                            
    40026528:   aa0103e0    mov x0, x1                                                    
    4002652c:   14000005    b   40026540 <rtems_io_register_driver+0x170>                 
    40026530:   11000673    add w19, w19, #0x1                                            
    40026534:   9100c000    add x0, x0, #0x30                                             
    40026538:   6b13009f    cmp w4, w19                                                   
    4002653c:   54000180    b.eq    4002656c <rtems_io_register_driver+0x19c>  // b.none  
  return table->initialization_entry == NULL && table->open_entry == NULL;                
    40026540:   f9400002    ldr x2, [x0]                                                  
    40026544:   b5ffff62    cbnz    x2, 40026530 <rtems_io_register_driver+0x160>         
    40026548:   f9400402    ldr x2, [x0, #8]                                              
    4002654c:   b5ffff22    cbnz    x2, 40026530 <rtems_io_register_driver+0x160>         
    40026550:   17ffffd2    b   40026498 <rtems_io_register_driver+0xc8>                  
    return RTEMS_INVALID_NUMBER;                                                          
    40026554:   52800140    mov w0, #0xa                    // #10                        
}                                                                                         
    40026558:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002655c:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40026560:   f9401bf7    ldr x23, [sp, #48]                                            
    40026564:   a8c47bfd    ldp x29, x30, [sp], #64                                       
    40026568:   d65f03c0    ret                                                           
  *major = m;                                                                             
    4002656c:   b90002a5    str w5, [x21]                                                 
    40026570:   92407c63    and x3, x3, #0xffffffff                                       
    40026574:   d51b4223    msr daif, x3                                                  
  return RTEMS_TOO_MANY;                                                                  
    40026578:   528000a0    mov w0, #0x5                    // #5                         
      return sc;                                                                          
    4002657c:   17ffffb8    b   4002645c <rtems_io_register_driver+0x8c>                  
  *major = m;                                                                             
    40026580:   b90002bf    str wzr, [x21]                                                <== NOT EXECUTED
  if ( m != n )                                                                           
    40026584:   17fffffb    b   40026570 <rtems_io_register_driver+0x1a0>                 <== NOT EXECUTED
    ...                                                                                   
                                                                                          

0000000040024770 <rtems_rbheap_allocate>: return big_enough; } void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size) {
    40024770:   a9bb7bfd    stp x29, x30, [sp, #-80]!                                     
    40024774:   910003fd    mov x29, sp                                                   
  void *ptr = NULL;                                                                       
  rtems_chain_control *free_chain = &control->free_chunk_chain;                           
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;                                
  uintptr_t alignment = control->alignment;                                               
    40024778:   f9401c02    ldr x2, [x0, #56]                                             
{                                                                                         
    4002477c:   a9025bf5    stp x21, x22, [sp, #32]                                       
  uintptr_t excess = value % alignment;                                                   
    40024780:   9ac20835    udiv    x21, x1, x2                                           
    40024784:   9b0286b5    msub    x21, x21, x2, x1                                      
  if (excess > 0) {                                                                       
    40024788:   b40004b5    cbz x21, 4002481c <rtems_rbheap_allocate+0xac>                
    value += alignment - excess;                                                          
    4002478c:   8b010042    add x2, x2, x1                                                
    40024790:   cb150055    sub x21, x2, x21                                              
  uintptr_t aligned_size = align_up(alignment, size);                                     
                                                                                          
  if (size > 0 && size <= aligned_size) {                                                 
    40024794:   eb15003f    cmp x1, x21                                                   
    40024798:   1a9f87e2    cset    w2, ls  // ls = plast                                 
    4002479c:   f100003f    cmp x1, #0x0                                                  
    400247a0:   7a401844    ccmp    w2, #0x0, #0x4, ne  // ne = any                       
    400247a4:   54000340    b.eq    4002480c <rtems_rbheap_allocate+0x9c>  // b.none      
  return _Chain_Immutable_head( the_chain )->next;                                        
    400247a8:   aa0003e1    mov x1, x0                                                    
    400247ac:   a90153f3    stp x19, x20, [sp, #16]                                       
    400247b0:   f8408433    ldr x19, [x1], #8                                             
  while (current != tail && big_enough == NULL) {                                         
    400247b4:   eb01027f    cmp x19, x1                                                   
    400247b8:   54000280    b.eq    40024808 <rtems_rbheap_allocate+0x98>  // b.none      
    400247bc:   d503201f    nop                                                           
    if (free_chunk->size >= size) {                                                       
    400247c0:   f9401e74    ldr x20, [x19, #56]                                           
    400247c4:   eb1402bf    cmp x21, x20                                                  
    400247c8:   54000188    b.hi    400247f8 <rtems_rbheap_allocate+0x88>  // b.pmore     
    rtems_rbheap_chunk *free_chunk = search_free_chunk(free_chain, aligned_size);         
                                                                                          
    if (free_chunk != NULL) {                                                             
      uintptr_t free_size = free_chunk->size;                                             
                                                                                          
      if (free_size > aligned_size) {                                                     
    400247cc:   eb15029f    cmp x20, x21                                                  
    400247d0:   540002c8    b.hi    40024828 <rtems_rbheap_allocate+0xb8>  // b.pmore     
  previous       = the_node->previous;                                                    
    400247d4:   a9400662    ldp x2, x1, [x19]                                             
          ptr = (void *) new_chunk->begin;                                                
        }                                                                                 
      } else {                                                                            
        rtems_chain_extract_unprotected(&free_chunk->chain_node);                         
        rtems_chain_set_off_chain(&free_chunk->chain_node);                               
        ptr = (void *) free_chunk->begin;                                                 
    400247d8:   f9401a60    ldr x0, [x19, #48]                                            
  next->previous = previous;                                                              
    400247dc:   f9000441    str x1, [x2, #8]                                              
      }                                                                                   
    }                                                                                     
  }                                                                                       
                                                                                          
  return ptr;                                                                             
}                                                                                         
    400247e0:   a9425bf5    ldp x21, x22, [sp, #32]                                       
  previous->next = next;                                                                  
    400247e4:   f9000022    str x2, [x1]                                                  
  node->next = NULL;                                                                      
    400247e8:   f900027f    str xzr, [x19]                                                
  return ptr;                                                                             
    400247ec:   a94153f3    ldp x19, x20, [sp, #16]                                       
}                                                                                         
    400247f0:   a8c57bfd    ldp x29, x30, [sp], #80                                       
    400247f4:   d65f03c0    ret                                                           
  return the_node->next;                                                                  
    400247f8:   f9400273    ldr x19, [x19]                                                
  while (current != tail && big_enough == NULL) {                                         
    400247fc:   eb13003f    cmp x1, x19                                                   
    40024800:   54fffe01    b.ne    400247c0 <rtems_rbheap_allocate+0x50>  // b.any       <== NEVER TAKEN
    40024804:   d503201f    nop                                                           
    40024808:   a94153f3    ldp x19, x20, [sp, #16]                                       
  void *ptr = NULL;                                                                       
    4002480c:   d2800000    mov x0, #0x0                    // #0                         
}                                                                                         
    40024810:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40024814:   a8c57bfd    ldp x29, x30, [sp], #80                                       
    40024818:   d65f03c0    ret                                                           
    4002481c:   aa0103f5    mov x21, x1                                                   
    40024820:   52800022    mov w2, #0x1                    // #1                         
    40024824:   17ffffde    b   4002479c <rtems_rbheap_allocate+0x2c>                     
  return _Chain_Immutable_head( the_chain )->next;                                        
    40024828:   f9400c16    ldr x22, [x0, #24]                                            
  return &the_chain->Tail.Node;                                                           
    4002482c:   a90363f7    stp x23, x24, [sp, #48]                                       
    40024830:   91008017    add x23, x0, #0x20                                            
  return _Chain_Immutable_head( the_chain )->next;                                        
    40024834:   91006018    add x24, x0, #0x18                                            
  if ( !_Chain_Is_empty(the_chain))                                                       
    40024838:   eb1702df    cmp x22, x23                                                  
    4002483c:   540002c0    b.eq    40024894 <rtems_rbheap_allocate+0x124>  // b.none     
  new_first = old_first->next;                                                            
    40024840:   f94002c1    ldr x1, [x22]                                                 
  head->next = new_first;                                                                 
    40024844:   f9000c01    str x1, [x0, #24]                                             
          new_chunk->begin = free_chunk->begin + new_free_size;                           
    40024848:   f9401a62    ldr x2, [x19, #48]                                            
          uintptr_t new_free_size = free_size - aligned_size;                             
    4002484c:   cb150294    sub x20, x20, x21                                             
  new_first->previous = head;                                                             
    40024850:   f9000438    str x24, [x1, #8]                                             
  node->next = NULL;                                                                      
    40024854:   aa1603e1    mov x1, x22                                                   
          free_chunk->size = new_free_size;                                               
    40024858:   f9001e74    str x20, [x19, #56]                                           
          new_chunk->begin = free_chunk->begin + new_free_size;                           
    4002485c:   8b140054    add x20, x2, x20                                              
          new_chunk->size = aligned_size;                                                 
    40024860:   a90356d4    stp x20, x21, [x22, #48]                                      
  rtems_rbtree_insert(tree, &chunk->tree_node, chunk_compare, true);                      
    40024864:   52800023    mov w3, #0x1                    // #1                         
    40024868:   9100c000    add x0, x0, #0x30                                             
    4002486c:   f801043f    str xzr, [x1], #16                                            
    40024870:   90000002    adrp    x2, 40024000 <IMFS_rename+0x10>                       
    40024874:   91184042    add x2, x2, #0x610                                            
    40024878:   940000aa    bl  40024b20 <rtems_rbtree_insert>                            
          ptr = (void *) new_chunk->begin;                                                
    4002487c:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40024880:   f9401ac0    ldr x0, [x22, #48]                                            
}                                                                                         
    40024884:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40024888:   a94363f7    ldp x23, x24, [sp, #48]                                       
    4002488c:   a8c57bfd    ldp x29, x30, [sp], #80                                       
    40024890:   d65f03c0    ret                                                           
    (*control->extend_descriptors)(control);                                              
    40024894:   f9402001    ldr x1, [x0, #64]                                             
    40024898:   f90027e0    str x0, [sp, #72]                                             
    4002489c:   d63f0020    blr x1                                                        
  return _Chain_Immutable_head( the_chain )->next;                                        
    400248a0:   f94027e0    ldr x0, [sp, #72]                                             
    400248a4:   f9400c16    ldr x22, [x0, #24]                                            
  if ( !_Chain_Is_empty(the_chain))                                                       
    400248a8:   eb1602ff    cmp x23, x22                                                  
    400248ac:   54fffca1    b.ne    40024840 <rtems_rbheap_allocate+0xd0>  // b.any       
  void *ptr = NULL;                                                                       
    400248b0:   d2800000    mov x0, #0x0                    // #0                         
    400248b4:   a94153f3    ldp x19, x20, [sp, #16]                                       
    400248b8:   a94363f7    ldp x23, x24, [sp, #48]                                       
    400248bc:   17ffffd5    b   40024810 <rtems_rbheap_allocate+0xa0>                     
                                                                                          

0000000040024a90 <rtems_rbtree_find>: const rtems_rbtree_control *the_rbtree, const rtems_rbtree_node *the_node, rtems_rbtree_compare compare, bool is_unique ) {
    40024a90:   a9bc7bfd    stp x29, x30, [sp, #-64]!                                     
    40024a94:   910003fd    mov x29, sp                                                   
    40024a98:   a90153f3    stp x19, x20, [sp, #16]                                       
 */                                                                                       
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Root(                                           
  const RBTree_Control *the_rbtree                                                        
)                                                                                         
{                                                                                         
  return RB_ROOT( the_rbtree );                                                           
    40024a9c:   f9400013    ldr x19, [x0]                                                 
    40024aa0:   a9025bf5    stp x21, x22, [sp, #32]                                       
  rtems_rbtree_node *iter_node = rtems_rbtree_root( the_rbtree );                         
  rtems_rbtree_node *found = NULL;                                                        
                                                                                          
  while ( iter_node != NULL ) {                                                           
    40024aa4:   b4000353    cbz x19, 40024b0c <rtems_rbtree_find+0x7c>                    <== NEVER TAKEN
    40024aa8:   aa0103f4    mov x20, x1                                                   
    40024aac:   aa0203f5    mov x21, x2                                                   
    40024ab0:   f9001bf7    str x23, [sp, #48]                                            
    40024ab4:   12001c77    and w23, w3, #0xff                                            
  rtems_rbtree_node *found = NULL;                                                        
    40024ab8:   d2800016    mov x22, #0x0                       // #0                     
    40024abc:   d503201f    nop                                                           
    rtems_rbtree_compare_result compare_result =                                          
      ( *compare )( the_node, iter_node );                                                
    40024ac0:   aa1303e1    mov x1, x19                                                   
    40024ac4:   aa1403e0    mov x0, x20                                                   
    40024ac8:   d63f02a0    blr x21                                                       
                                                                                          
    if ( rtems_rbtree_is_equal( compare_result ) ) {                                      
    40024acc:   f100001f    cmp x0, #0x0                                                  
    40024ad0:   b5000160    cbnz    x0, 40024afc <rtems_rbtree_find+0x6c>                 
    40024ad4:   aa1303f6    mov x22, x19                                                  
      found = iter_node;                                                                  
                                                                                          
      if ( is_unique )                                                                    
    40024ad8:   35000077    cbnz    w23, 40024ae4 <rtems_rbtree_find+0x54>                
 */                                                                                       
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Left(                                           
  const RBTree_Node *the_node                                                             
)                                                                                         
{                                                                                         
  return RB_LEFT( the_node, Node );                                                       
    40024adc:   f9400273    ldr x19, [x19]                                                
  while ( iter_node != NULL ) {                                                           
    40024ae0:   b5ffff13    cbnz    x19, 40024ac0 <rtems_rbtree_find+0x30>                
    } else {                                                                              
      iter_node = rtems_rbtree_left( iter_node );                                         
    }                                                                                     
  }                                                                                       
                                                                                          
  return found;                                                                           
    40024ae4:   f9401bf7    ldr x23, [sp, #48]                                            
}                                                                                         
    40024ae8:   aa1603e0    mov x0, x22                                                   
    40024aec:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40024af0:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40024af4:   a8c47bfd    ldp x29, x30, [sp], #64                                       
    40024af8:   d65f03c0    ret                                                           
    if ( rtems_rbtree_is_greater( compare_result ) ) {                                    
    40024afc:   54ffff0d    b.le    40024adc <rtems_rbtree_find+0x4c>                     
 */                                                                                       
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Right(                                          
  const RBTree_Node *the_node                                                             
)                                                                                         
{                                                                                         
  return RB_RIGHT( the_node, Node );                                                      
    40024b00:   f9400673    ldr x19, [x19, #8]                                            
  while ( iter_node != NULL ) {                                                           
    40024b04:   b5fffdf3    cbnz    x19, 40024ac0 <rtems_rbtree_find+0x30>                
    40024b08:   17fffff7    b   40024ae4 <rtems_rbtree_find+0x54>                         
  rtems_rbtree_node *found = NULL;                                                        
    40024b0c:   d2800016    mov x22, #0x0                       // #0                     <== NOT EXECUTED
    40024b10:   17fffff6    b   40024ae8 <rtems_rbtree_find+0x58>                         <== NOT EXECUTED
    ...                                                                                   
                                                                                          

0000000040025760 <rtems_rbtree_initialize>:
    40025760:   f900001f    str xzr, [x0]                                                 
  rtems_rbtree_initialize_empty( the_rbtree );                                            
                                                                                          
  count = number_nodes;                                                                   
  next = starting_address;                                                                
                                                                                          
  while ( count-- ) {                                                                     
    40025764:   b4000363    cbz x3, 400257d0 <rtems_rbtree_initialize+0x70>               <== NEVER TAKEN
{                                                                                         
    40025768:   a9bc7bfd    stp x29, x30, [sp, #-64]!                                     
    4002576c:   910003fd    mov x29, sp                                                   
    40025770:   a90153f3    stp x19, x20, [sp, #16]                                       
    40025774:   aa0203f3    mov x19, x2                                                   
    40025778:   d1000474    sub x20, x3, #0x1                                             
    4002577c:   a9025bf5    stp x21, x22, [sp, #32]                                       
    40025780:   aa0003f5    mov x21, x0                                                   
    40025784:   aa0403f6    mov x22, x4                                                   
    40025788:   a90363f7    stp x23, x24, [sp, #48]                                       
    4002578c:   aa0103f7    mov x23, x1                                                   
    40025790:   12001cb8    and w24, w5, #0xff                                            
    40025794:   d503201f    nop                                                           
    rtems_rbtree_insert( the_rbtree, next, compare, is_unique );                          
    40025798:   aa1303e1    mov x1, x19                                                   
  while ( count-- ) {                                                                     
    4002579c:   d1000694    sub x20, x20, #0x1                                            
    rtems_rbtree_insert( the_rbtree, next, compare, is_unique );                          
    400257a0:   2a1803e3    mov w3, w24                                                   
    400257a4:   aa1703e2    mov x2, x23                                                   
    400257a8:   aa1503e0    mov x0, x21                                                   
    400257ac:   94000031    bl  40025870 <rtems_rbtree_insert>                            
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (                                        
  const void *base,                                                                       
  uintptr_t   offset                                                                      
)                                                                                         
{                                                                                         
  return (void *)((uintptr_t)base + offset);                                              
    400257b0:   8b160273    add x19, x19, x22                                             
  while ( count-- ) {                                                                     
    400257b4:   b100069f    cmn x20, #0x1                                                 
    400257b8:   54ffff01    b.ne    40025798 <rtems_rbtree_initialize+0x38>  // b.any     
    next = (rtems_rbtree_node *) _Addresses_Add_offset( next, node_size );                
  }                                                                                       
}                                                                                         
    400257bc:   a94153f3    ldp x19, x20, [sp, #16]                                       
    400257c0:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    400257c4:   a94363f7    ldp x23, x24, [sp, #48]                                       
    400257c8:   a8c47bfd    ldp x29, x30, [sp], #64                                       
    400257cc:   d65f03c0    ret                                                           
    400257d0:   d65f03c0    ret                                                           <== NOT EXECUTED
    ...