RTEMS-6
Annotated Report
sapi
Sun Feb 28 23:39:57 2021

00107544 <rtems_chain_get_with_wait>:                                                     
  rtems_chain_control *chain,                                                             
  rtems_event_set events,                                                                 
  rtems_interval timeout,                                                                 
  rtems_chain_node **node_ptr                                                             
)                                                                                         
{                                                                                         
  107544:   e92d 41f0   stmdb   sp!, {r4, r5, r6, r7, r8, lr}                             
  107548:   4607        mov r7, r0                                                        
  10754a:   b082        sub sp, #8                                                        
  10754c:   460e        mov r6, r1                                                        
  10754e:   4615        mov r5, r2                                                        
  107550:   4698        mov r8, r3                                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                                                
  rtems_chain_node *node = NULL;                                                          
                                                                                          
  while (                                                                                 
    sc == RTEMS_SUCCESSFUL                                                                
      && (node = rtems_chain_get( chain )) == NULL                                        
  107552:   4638        mov r0, r7                                                        
  107554:   f000 f824   bl  1075a0 <rtems_chain_get>                                      
  107558:   4604        mov r4, r0                                                        
  ) {                                                                                     
    rtems_event_set out;                                                                  
    sc = rtems_event_receive(                                                             
  10755a:   ab01        add r3, sp, #4                                                    
  10755c:   462a        mov r2, r5                                                        
  10755e:   4630        mov r0, r6                                                        
  107560:   4621        mov r1, r4                                                        
      && (node = rtems_chain_get( chain )) == NULL                                        
  107562:   b944        cbnz    r4, 107576 <rtems_chain_get_with_wait+0x32>               
    sc = rtems_event_receive(                                                             
  107564:   f7ff fe88   bl  107278 <rtems_event_receive>                                  
  while (                                                                                 
  107568:   2800        cmp r0, #0                                                        
  10756a:   d0f2        beq.n   107552 <rtems_chain_get_with_wait+0xe>                    <== ALWAYS TAKEN
      timeout,                                                                            
      &out                                                                                
    );                                                                                    
  }                                                                                       
                                                                                          
  *node_ptr = node;                                                                       
  10756c:   f8c8 4000   str.w   r4, [r8]                                                  
                                                                                          
  return sc;                                                                              
}                                                                                         
  107570:   b002        add sp, #8                                                        
  107572:   e8bd 81f0   ldmia.w sp!, {r4, r5, r6, r7, r8, pc}                             
  107576:   2000        movs    r0, #0                                                    
  *node_ptr = node;                                                                       
  107578:   f8c8 4000   str.w   r4, [r8]                                                  
}                                                                                         
  10757c:   b002        add sp, #8                                                        
  10757e:   e8bd 81f0   ldmia.w sp!, {r4, r5, r6, r7, r8, pc}                             
  107582:   bf00        nop                                                               
                                                                                          

00107760 <rtems_configuration_get_maximum_barriers>: return information->objects_per_block != 0;
  107760:   f240 3310   movw    r3, #784    ; 0x310                                       
  107764:   f2c0 0320   movt    r3, #32                                                   
  107768:   8a58        ldrh    r0, [r3, #18]                                             
#include <rtems/rtems/timerimpl.h>                                                        
#include <rtems/score/objectimpl.h>                                                       
                                                                                          
static uint32_t get_config_max( const Objects_Information *info )                         
{                                                                                         
    if ( _Objects_Is_auto_extend( info ) ) {                                              
  10776a:   b908        cbnz    r0, 107770 <rtems_configuration_get_maximum_barriers+0x10>
 */                                                                                       
RTEMS_INLINE_ROUTINE Objects_Maximum _Objects_Get_index(                                  
  Objects_Id id                                                                           
)                                                                                         
{                                                                                         
  return                                                                                  
  10776c:   8818        ldrh    r0, [r3, #0]                                              
}                                                                                         
                                                                                          
uint32_t rtems_configuration_get_maximum_barriers( void )                                 
{                                                                                         
    return get_config_max( &_Barrier_Information );                                       
}                                                                                         
  10776e:   4770        bx  lr                                                            
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
  107770:   f040 4000   orr.w   r0, r0, #2147483648 ; 0x80000000                          <== NOT EXECUTED
  107774:   4770        bx  lr                                                            <== NOT EXECUTED
  107776:   bf00        nop                                                               
                                                                                          

001103bc <rtems_configuration_get_maximum_extensions>:
  1103bc:   f240 43b8   movw    r3, #1208   ; 0x4b8                                       <== NOT EXECUTED
  1103c0:   f2c0 0320   movt    r3, #32                                                   <== NOT EXECUTED
  1103c4:   8a58        ldrh    r0, [r3, #18]                                             <== NOT EXECUTED
    if ( _Objects_Is_auto_extend( info ) ) {                                              
  1103c6:   b908        cbnz    r0, 1103cc <rtems_configuration_get_maximum_extensions+0x10><== NOT EXECUTED
  1103c8:   8818        ldrh    r0, [r3, #0]                                              <== NOT EXECUTED
                                                                                          
uint32_t rtems_configuration_get_maximum_extensions( void )                               
{                                                                                         
    return get_config_max( &_Extension_Information );                                     
}                                                                                         
  1103ca:   4770        bx  lr                                                            <== NOT EXECUTED
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
  1103cc:   f040 4000   orr.w   r0, r0, #2147483648 ; 0x80000000                          <== NOT EXECUTED
  1103d0:   4770        bx  lr                                                            <== NOT EXECUTED
  1103d2:   bf00        nop                                                               
                                                                                          

00107778 <rtems_configuration_get_maximum_message_queues>:
  107778:   f240 3370   movw    r3, #880    ; 0x370                                       
  10777c:   f2c0 0320   movt    r3, #32                                                   
  107780:   8a58        ldrh    r0, [r3, #18]                                             
    if ( _Objects_Is_auto_extend( info ) ) {                                              
  107782:   b908        cbnz    r0, 107788 <rtems_configuration_get_maximum_message_queues+0x10>
  107784:   8818        ldrh    r0, [r3, #0]                                              
}                                                                                         
                                                                                          
uint32_t rtems_configuration_get_maximum_message_queues( void )                           
{                                                                                         
    return get_config_max( &_Message_queue_Information );                                 
}                                                                                         
  107786:   4770        bx  lr                                                            
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
  107788:   f040 4000   orr.w   r0, r0, #2147483648 ; 0x80000000                          <== NOT EXECUTED
  10778c:   4770        bx  lr                                                            <== NOT EXECUTED
  10778e:   bf00        nop                                                               
                                                                                          

00107790 <rtems_configuration_get_maximum_partitions>:
  107790:   f240 33a0   movw    r3, #928    ; 0x3a0                                       
  107794:   f2c0 0320   movt    r3, #32                                                   
  107798:   8a58        ldrh    r0, [r3, #18]                                             
    if ( _Objects_Is_auto_extend( info ) ) {                                              
  10779a:   b908        cbnz    r0, 1077a0 <rtems_configuration_get_maximum_partitions+0x10>
  10779c:   8818        ldrh    r0, [r3, #0]                                              
                                                                                          
uint32_t rtems_configuration_get_maximum_partitions( void )                               
{                                                                                         
    return get_config_max( &_Partition_Information );                                     
}                                                                                         
  10779e:   4770        bx  lr                                                            
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
  1077a0:   f040 4000   orr.w   r0, r0, #2147483648 ; 0x80000000                          <== NOT EXECUTED
  1077a4:   4770        bx  lr                                                            <== NOT EXECUTED
  1077a6:   bf00        nop                                                               
                                                                                          

001077a8 <rtems_configuration_get_maximum_periods>:
  1077a8:   f240 33d0   movw    r3, #976    ; 0x3d0                                       
  1077ac:   f2c0 0320   movt    r3, #32                                                   
  1077b0:   8a58        ldrh    r0, [r3, #18]                                             
    if ( _Objects_Is_auto_extend( info ) ) {                                              
  1077b2:   b908        cbnz    r0, 1077b8 <rtems_configuration_get_maximum_periods+0x10> 
  1077b4:   8818        ldrh    r0, [r3, #0]                                              
                                                                                          
uint32_t rtems_configuration_get_maximum_periods( void )                                  
{                                                                                         
    return get_config_max( &_Rate_monotonic_Information );                                
}                                                                                         
  1077b6:   4770        bx  lr                                                            
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
  1077b8:   f040 4000   orr.w   r0, r0, #2147483648 ; 0x80000000                          <== NOT EXECUTED
  1077bc:   4770        bx  lr                                                            <== NOT EXECUTED
  1077be:   bf00        nop                                                               
                                                                                          

001077c0 <rtems_configuration_get_maximum_ports>:
  1077c0:   f240 3340   movw    r3, #832    ; 0x340                                       
  1077c4:   f2c0 0320   movt    r3, #32                                                   
  1077c8:   8a58        ldrh    r0, [r3, #18]                                             
    if ( _Objects_Is_auto_extend( info ) ) {                                              
  1077ca:   b908        cbnz    r0, 1077d0 <rtems_configuration_get_maximum_ports+0x10>   
  1077cc:   8818        ldrh    r0, [r3, #0]                                              
                                                                                          
uint32_t rtems_configuration_get_maximum_ports( void )                                    
{                                                                                         
    return get_config_max( &_Dual_ported_memory_Information );                            
}                                                                                         
  1077ce:   4770        bx  lr                                                            
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
  1077d0:   f040 4000   orr.w   r0, r0, #2147483648 ; 0x80000000                          <== NOT EXECUTED
  1077d4:   4770        bx  lr                                                            <== NOT EXECUTED
  1077d6:   bf00        nop                                                               
                                                                                          

001077d8 <rtems_configuration_get_maximum_regions>:
  1077d8:   f240 4300   movw    r3, #1024   ; 0x400                                       
  1077dc:   f2c0 0320   movt    r3, #32                                                   
  1077e0:   8a58        ldrh    r0, [r3, #18]                                             
    if ( _Objects_Is_auto_extend( info ) ) {                                              
  1077e2:   b908        cbnz    r0, 1077e8 <rtems_configuration_get_maximum_regions+0x10> 
  1077e4:   8818        ldrh    r0, [r3, #0]                                              
                                                                                          
uint32_t rtems_configuration_get_maximum_regions( void )                                  
{                                                                                         
    return get_config_max( &_Region_Information );                                        
}                                                                                         
  1077e6:   4770        bx  lr                                                            
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
  1077e8:   f040 4000   orr.w   r0, r0, #2147483648 ; 0x80000000                          <== NOT EXECUTED
  1077ec:   4770        bx  lr                                                            <== NOT EXECUTED
  1077ee:   bf00        nop                                                               
                                                                                          

001077f0 <rtems_configuration_get_maximum_semaphores>:
  1077f0:   f240 4360   movw    r3, #1120   ; 0x460                                       
  1077f4:   f2c0 0320   movt    r3, #32                                                   
  1077f8:   8a58        ldrh    r0, [r3, #18]                                             
    if ( _Objects_Is_auto_extend( info ) ) {                                              
  1077fa:   b908        cbnz    r0, 107800 <rtems_configuration_get_maximum_semaphores+0x10>
  1077fc:   8818        ldrh    r0, [r3, #0]                                              
                                                                                          
uint32_t rtems_configuration_get_maximum_semaphores( void )                               
{                                                                                         
    return get_config_max( &_Semaphore_Information );                                     
}                                                                                         
  1077fe:   4770        bx  lr                                                            
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
  107800:   f040 4000   orr.w   r0, r0, #2147483648 ; 0x80000000                          <== NOT EXECUTED
  107804:   4770        bx  lr                                                            <== NOT EXECUTED
  107806:   bf00        nop                                                               
                                                                                          

00107820 <rtems_configuration_get_maximum_tasks>:
  107820:   f240 0354   movw    r3, #84 ; 0x54                                            
  107824:   f2c0 0320   movt    r3, #32                                                   
  107828:   8a58        ldrh    r0, [r3, #18]                                             
    if ( _Objects_Is_auto_extend( info ) ) {                                              
  10782a:   b908        cbnz    r0, 107830 <rtems_configuration_get_maximum_tasks+0x10>   
  10782c:   8818        ldrh    r0, [r3, #0]                                              
                                                                                          
uint32_t rtems_configuration_get_maximum_tasks( void )                                    
{                                                                                         
    return get_config_max( &_RTEMS_tasks_Information.Objects );                           
}                                                                                         
  10782e:   4770        bx  lr                                                            
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
  107830:   f040 4000   orr.w   r0, r0, #2147483648 ; 0x80000000                          <== NOT EXECUTED
  107834:   4770        bx  lr                                                            <== NOT EXECUTED
  107836:   bf00        nop                                                               
                                                                                          

00107808 <rtems_configuration_get_maximum_timers>:
  107808:   f240 4330   movw    r3, #1072   ; 0x430                                       
  10780c:   f2c0 0320   movt    r3, #32                                                   
  107810:   8a58        ldrh    r0, [r3, #18]                                             
    if ( _Objects_Is_auto_extend( info ) ) {                                              
  107812:   b908        cbnz    r0, 107818 <rtems_configuration_get_maximum_timers+0x10>  
  107814:   8818        ldrh    r0, [r3, #0]                                              
                                                                                          
uint32_t rtems_configuration_get_maximum_timers( void )                                   
{                                                                                         
    return get_config_max( &_Timer_Information );                                         
}                                                                                         
  107816:   4770        bx  lr                                                            
        return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS;                         
  107818:   f040 4000   orr.w   r0, r0, #2147483648 ; 0x80000000                          <== NOT EXECUTED
  10781c:   4770        bx  lr                                                            <== NOT EXECUTED
  10781e:   bf00        nop                                                               
                                                                                          

0010ece0 <rtems_counter_initialize_converter>: { return (rtems_counter_ticks) (((uint64_t) sbt * from_sbt_scaler) >> 31); } void rtems_counter_initialize_converter( uint32_t frequency ) {
  10ece0:   b5f8        push    {r3, r4, r5, r6, r7, lr}                                  
  uint64_t ns_per_s = UINT64_C(1000000000);                                               
  uint64_t bin_per_s = UINT64_C(1) << 32;                                                 
                                                                                          
  to_ns_scaler = ((ns_per_s << 32) + frequency - 1) / frequency;                          
  10ece2:   f64c 15ff   movw    r5, #51711  ; 0xc9ff                                      
{                                                                                         
  10ece6:   4604        mov r4, r0                                                        
  to_ns_scaler = ((ns_per_s << 32) + frequency - 1) / frequency;                          
  10ece8:   2600        movs    r6, #0                                                    
  10ecea:   3801        subs    r0, #1                                                    
  10ecec:   f6c3 359a   movt    r5, #15258  ; 0x3b9a                                      
  10ecf0:   f642 3778   movw    r7, #11128  ; 0x2b78                                      
  10ecf4:   f145 0100   adc.w   r1, r5, #0                                                
  10ecf8:   4622        mov r2, r4                                                        
  10ecfa:   f2c0 0720   movt    r7, #32                                                   
  10ecfe:   4633        mov r3, r6                                                        
  10ed00:   f7fe fc48   bl  10d594 <__aeabi_uldivmod>                                     
  10ed04:   e9c7 0100   strd    r0, r1, [r7]                                              
  from_ns_scaler = ((UINT64_C(1) << 32) * frequency + ns_per_s - 1) / ns_per_s;           
  10ed08:   f642 3768   movw    r7, #11112  ; 0x2b68                                      
  10ed0c:   a314        add r3, pc, #80 ; (adr r3, 10ed60 <rtems_counter_initialize_converter+0x80>)
  10ed0e:   e9d3 2300   ldrd    r2, r3, [r3]                                              
  10ed12:   4628        mov r0, r5                                                        
  10ed14:   f2c0 0720   movt    r7, #32                                                   
                                                                                          
  to_sbt_scaler = ((bin_per_s << 31) + frequency - 1) / frequency;                        
  10ed18:   f04f 35ff   mov.w   r5, #4294967295 ; 0xffffffff                              
  from_ns_scaler = ((UINT64_C(1) << 32) * frequency + ns_per_s - 1) / ns_per_s;           
  10ed1c:   4621        mov r1, r4                                                        
  10ed1e:   f7fe fc39   bl  10d594 <__aeabi_uldivmod>                                     
  10ed22:   e9c7 0100   strd    r0, r1, [r7]                                              
  to_sbt_scaler = ((bin_per_s << 31) + frequency - 1) / frequency;                        
  10ed26:   1960        adds    r0, r4, r5                                                
  10ed28:   f06f 4100   mvn.w   r1, #2147483648 ; 0x80000000                              
  10ed2c:   4622        mov r2, r4                                                        
  10ed2e:   4633        mov r3, r6                                                        
  10ed30:   f141 0100   adc.w   r1, r1, #0                                                
  10ed34:   f7fe fc2e   bl  10d594 <__aeabi_uldivmod>                                     
  from_sbt_scaler = ((UINT64_C(1) << 31) * frequency + bin_per_s - 1) / bin_per_s;        
  10ed38:   f04f 4300   mov.w   r3, #2147483648 ; 0x80000000                              
  10ed3c:   4632        mov r2, r6                                                        
  10ed3e:   fbe4 5203   umlal   r5, r2, r4, r3                                            
  to_sbt_scaler = ((bin_per_s << 31) + frequency - 1) / frequency;                        
  10ed42:   f642 3780   movw    r7, #11136  ; 0x2b80                                      
  from_sbt_scaler = ((UINT64_C(1) << 31) * frequency + bin_per_s - 1) / bin_per_s;        
  10ed46:   f642 3370   movw    r3, #11120  ; 0x2b70                                      
  to_sbt_scaler = ((bin_per_s << 31) + frequency - 1) / frequency;                        
  10ed4a:   f2c0 0720   movt    r7, #32                                                   
  from_sbt_scaler = ((UINT64_C(1) << 31) * frequency + bin_per_s - 1) / bin_per_s;        
  10ed4e:   f2c0 0320   movt    r3, #32                                                   
  to_sbt_scaler = ((bin_per_s << 31) + frequency - 1) / frequency;                        
  10ed52:   e9c7 0100   strd    r0, r1, [r7]                                              
  from_sbt_scaler = ((UINT64_C(1) << 31) * frequency + bin_per_s - 1) / bin_per_s;        
  10ed56:   e9c3 2600   strd    r2, r6, [r3]                                              
}                                                                                         
  10ed5a:   bdf8        pop {r3, r4, r5, r6, r7, pc}                                      
  10ed5c:   f3af 8000   nop.w                                                             <== NOT EXECUTED
  10ed60:   3b9aca00    .word   0x3b9aca00                                                <== NOT EXECUTED
  10ed64:   00000000    .word   0x00000000                                                <== NOT EXECUTED
                                                                                          

0010e3dc <rtems_initialize_executive>: void rtems_initialize_executive(void) { const rtems_sysinit_item *item; /* Invoke the registered system initialization handlers */ RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) {
  10e3dc:   f249 25cc   movw    r5, #37580  ; 0x92cc                                      
                                                                                          
RTEMS_INLINE_ROUTINE uintptr_t _Linker_set_Obfuscate( const void *ptr )                   
{                                                                                         
  uintptr_t addr;                                                                         
                                                                                          
  addr = (uintptr_t) ptr;                                                                 
  10e3e0:   f249 2490   movw    r4, #37520  ; 0x9290                                      
  10e3e4:   f2c0 0511   movt    r5, #17                                                   
  10e3e8:   f2c0 0411   movt    r4, #17                                                   
  10e3ec:   42ac        cmp r4, r5                                                        
{                                                                                         
  10e3ee:   b508        push    {r3, lr}                                                  
  RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) {                                            
  10e3f0:   d004        beq.n   10e3fc <rtems_initialize_executive+0x20>                  <== ALWAYS TAKEN
    ( *item->handler )();                                                                 
  10e3f2:   f854 3b04   ldr.w   r3, [r4], #4                                              
  10e3f6:   4798        blx r3                                                            
  RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) {                                            
  10e3f8:   42ac        cmp r4, r5                                                        
  10e3fa:   d1fa        bne.n   10e3f2 <rtems_initialize_executive+0x16>                  
  10e3fc:   f242 7350   movw    r3, #10064  ; 0x2750                                      
  10e400:   2202        movs    r2, #2                                                    
  10e402:   f2c0 0320   movt    r3, #32                                                   
  10e406:   601a        str r2, [r3, #0]                                                  
                                                                                          
  _System_state_Set( SYSTEM_STATE_UP );                                                   
                                                                                          
  _SMP_Request_start_multitasking();                                                      
                                                                                          
  _Thread_Start_multitasking();                                                           
  10e408:   f000 ffc8   bl  10f39c <_Thread_Start_multitasking>                           
                                                                                          

00107e08 <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 ) {
  107e08:   e92d 41f0   stmdb   sp!, {r4, r5, r6, r7, r8, lr}                             
  rtems_device_major_number major_limit = _IO_Number_of_drivers;                          
  107e0c:   f240 4818   movw    r8, #1048   ; 0x418                                       
  107e10:   f2c0 0811   movt    r8, #17                                                   
{                                                                                         
  107e14:   4604        mov r4, r0                                                        
  107e16:   460d        mov r5, r1                                                        
  107e18:   4616        mov r6, r2                                                        
  rtems_device_major_number major_limit = _IO_Number_of_drivers;                          
  107e1a:   f8d8 7000   ldr.w   r7, [r8]                                                  
  ISR_lock_Context lock_context;                                                          
                                                                                          
  if ( rtems_interrupt_is_in_progress() )                                                 
  107e1e:   f000 fbad   bl  10857c <_ISR_Is_in_progress>                                  
  107e22:   b9e0        cbnz    r0, 107e5e <rtems_io_register_driver+0x56>                
    return RTEMS_CALLED_FROM_ISR;                                                         
                                                                                          
  if ( registered_major == NULL )                                                         
  107e24:   b30e        cbz r6, 107e6a <rtems_io_register_driver+0x62>                    
    return RTEMS_INVALID_ADDRESS;                                                         
                                                                                          
  /* Set it to an invalid value */                                                        
  *registered_major = major_limit;                                                        
  107e26:   6037        str r7, [r6, #0]                                                  
                                                                                          
  if ( driver_table == NULL )                                                             
  107e28:   b1fd        cbz r5, 107e6a <rtems_io_register_driver+0x62>                    
  return table->initialization_entry == NULL && table->open_entry == NULL;                
  107e2a:   682b        ldr r3, [r5, #0]                                                  
  107e2c:   b1d3        cbz r3, 107e64 <rtems_io_register_driver+0x5c>                    
    return RTEMS_INVALID_ADDRESS;                                                         
                                                                                          
  if ( rtems_io_is_empty_table( driver_table ) )                                          
    return RTEMS_INVALID_ADDRESS;                                                         
                                                                                          
  if ( major >= major_limit )                                                             
  107e2e:   42a7        cmp r7, r4                                                        
  107e30:   d951        bls.n   107ed6 <rtems_io_register_driver+0xce>                    
  __asm__ volatile (                                                                      
  107e32:   f3ef 8700   mrs r7, CPSR                                                      
  107e36:   f047 0380   orr.w   r3, r7, #128    ; 0x80                                    
  107e3a:   f383 8900   msr CPSR_fc, r3                                                   
    return RTEMS_INVALID_NUMBER;                                                          
                                                                                          
  _IO_Driver_registration_acquire( &lock_context );                                       
                                                                                          
  if ( major == 0 ) {                                                                     
  107e3e:   2c00        cmp r4, #0                                                        
  107e40:   d033        beq.n   107eaa <rtems_io_register_driver+0xa2>                    
      _IO_Driver_registration_release( &lock_context );                                   
      return sc;                                                                          
    }                                                                                     
    major = *registered_major;                                                            
  } else {                                                                                
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;           
  107e42:   0063        lsls    r3, r4, #1                                                
  107e44:   f241 119c   movw    r1, #4508   ; 0x119c                                      
  107e48:   f2c0 0120   movt    r1, #32                                                   
  107e4c:   191a        adds    r2, r3, r4                                                
  107e4e:   00d2        lsls    r2, r2, #3                                                
  return table->initialization_entry == NULL && table->open_entry == NULL;                
  107e50:   5888        ldr r0, [r1, r2]                                                  
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;           
  107e52:   440a        add r2, r1                                                        
  return table->initialization_entry == NULL && table->open_entry == NULL;                
  107e54:   b160        cbz r0, 107e70 <rtems_io_register_driver+0x68>                    
  __asm__ volatile (                                                                      
  107e56:   f387 8900   msr CPSR_fc, r7                                                   
                                                                                          
    if ( !rtems_io_is_empty_table( table ) ) {                                            
      _IO_Driver_registration_release( &lock_context );                                   
      return RTEMS_RESOURCE_IN_USE;                                                       
  107e5a:   200c        movs    r0, #12                                                   
  107e5c:   e000        b.n 107e60 <rtems_io_register_driver+0x58>                        
    return RTEMS_CALLED_FROM_ISR;                                                         
  107e5e:   2012        movs    r0, #18                                                   
    /* The driver will be initialized together with all other drivers                     
     * in a later stage by _IO_Initialize_all_drivers().                                  
     */                                                                                   
    return RTEMS_SUCCESSFUL;                                                              
  }                                                                                       
}                                                                                         
  107e60:   e8bd 81f0   ldmia.w sp!, {r4, r5, r6, r7, r8, pc}                             
  return table->initialization_entry == NULL && table->open_entry == NULL;                
  107e64:   686b        ldr r3, [r5, #4]                                                  
  107e66:   2b00        cmp r3, #0                                                        
  107e68:   d1e1        bne.n   107e2e <rtems_io_register_driver+0x26>                    
    return RTEMS_INVALID_ADDRESS;                                                         
  107e6a:   2009        movs    r0, #9                                                    
}                                                                                         
  107e6c:   e8bd 81f0   ldmia.w sp!, {r4, r5, r6, r7, r8, pc}                             
  return table->initialization_entry == NULL && table->open_entry == NULL;                
  107e70:   6852        ldr r2, [r2, #4]                                                  
  107e72:   2a00        cmp r2, #0                                                        
  107e74:   d1ef        bne.n   107e56 <rtems_io_register_driver+0x4e>                    
    *registered_major = major;                                                            
  107e76:   6034        str r4, [r6, #0]                                                  
  _IO_Driver_address_table [major] = *driver_table;                                       
  107e78:   4423        add r3, r4                                                        
  107e7a:   eb01 06c3   add.w   r6, r1, r3, lsl #3                                        
  107e7e:   cd0f        ldmia   r5!, {r0, r1, r2, r3}                                     
  107e80:   c60f        stmia   r6!, {r0, r1, r2, r3}                                     
  107e82:   e895 0003   ldmia.w r5, {r0, r1}                                              
  107e86:   e886 0003   stmia.w r6, {r0, r1}                                              
  107e8a:   f387 8900   msr CPSR_fc, r7                                                   
  if ( _IO_All_drivers_initialized ) {                                                    
  107e8e:   f641 73c0   movw    r3, #8128   ; 0x1fc0                                      
  107e92:   f2c0 0320   movt    r3, #32                                                   
  107e96:   7818        ldrb    r0, [r3, #0]                                              
  107e98:   2800        cmp r0, #0                                                        
  107e9a:   d0e1        beq.n   107e60 <rtems_io_register_driver+0x58>                    <== ALWAYS TAKEN
    return rtems_io_initialize( major, 0, NULL );                                         
  107e9c:   2200        movs    r2, #0                                                    
  107e9e:   4620        mov r0, r4                                                        
  107ea0:   4611        mov r1, r2                                                        
}                                                                                         
  107ea2:   e8bd 41f0   ldmia.w sp!, {r4, r5, r6, r7, r8, lr}                             
    return rtems_io_initialize( major, 0, NULL );                                         
  107ea6:   f7ff bf91   b.w 107dcc <rtems_io_initialize>                                  
  rtems_device_major_number n = _IO_Number_of_drivers;                                    
  107eaa:   f8d8 0000   ldr.w   r0, [r8]                                                  
  for ( m = 0; m < n; ++m ) {                                                             
  107eae:   b1d0        cbz r0, 107ee6 <rtems_io_register_driver+0xde>                    
  107eb0:   f241 119c   movw    r1, #4508   ; 0x119c                                      
  107eb4:   f2c0 0120   movt    r1, #32                                                   
  107eb8:   460b        mov r3, r1                                                        
  107eba:   e003        b.n 107ec4 <rtems_io_register_driver+0xbc>                        
  107ebc:   3401        adds    r4, #1                                                    
  107ebe:   3318        adds    r3, #24                                                   
  107ec0:   42a0        cmp r0, r4                                                        
  107ec2:   d00b        beq.n   107edc <rtems_io_register_driver+0xd4>                    
  return table->initialization_entry == NULL && table->open_entry == NULL;                
  107ec4:   681a        ldr r2, [r3, #0]                                                  
  107ec6:   2a00        cmp r2, #0                                                        
  107ec8:   d1f8        bne.n   107ebc <rtems_io_register_driver+0xb4>                    
  107eca:   685a        ldr r2, [r3, #4]                                                  
  107ecc:   2a00        cmp r2, #0                                                        
  107ece:   d1f5        bne.n   107ebc <rtems_io_register_driver+0xb4>                    
  *major = m;                                                                             
  107ed0:   0063        lsls    r3, r4, #1                                                
  107ed2:   6034        str r4, [r6, #0]                                                  
  if ( m != n )                                                                           
  107ed4:   e7d0        b.n 107e78 <rtems_io_register_driver+0x70>                        
    return RTEMS_INVALID_NUMBER;                                                          
  107ed6:   200a        movs    r0, #10                                                   
}                                                                                         
  107ed8:   e8bd 81f0   ldmia.w sp!, {r4, r5, r6, r7, r8, pc}                             
  *major = m;                                                                             
  107edc:   6030        str r0, [r6, #0]                                                  
  107ede:   f387 8900   msr CPSR_fc, r7                                                   
  return RTEMS_TOO_MANY;                                                                  
  107ee2:   2005        movs    r0, #5                                                    
      return sc;                                                                          
  107ee4:   e7bc        b.n 107e60 <rtems_io_register_driver+0x58>                        
  *major = m;                                                                             
  107ee6:   6034        str r4, [r6, #0]                                                  <== NOT EXECUTED
  if ( m != n )                                                                           
  107ee8:   e7f9        b.n 107ede <rtems_io_register_driver+0xd6>                        <== NOT EXECUTED
  107eea:   bf00        nop                                                               
                                                                                          

00106c48 <rtems_rbheap_allocate>: return big_enough; } void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size) {
  106c48:   e92d 47f0   stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}                     
  106c4c:   4607        mov r7, r0                                                        
  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;                                               
  106c4e:   69c6        ldr r6, [r0, #28]                                                 
{                                                                                         
  106c50:   460c        mov r4, r1                                                        
  uintptr_t excess = value % alignment;                                                   
  106c52:   4608        mov r0, r1                                                        
  106c54:   4631        mov r1, r6                                                        
  106c56:   f005 fa95   bl  10c184 <__aeabi_uidivmod>                                     
  if (excess > 0) {                                                                       
  106c5a:   b321        cbz r1, 106ca6 <rtems_rbheap_allocate+0x5e>                       
    value += alignment - excess;                                                          
  106c5c:   4426        add r6, r4                                                        
  106c5e:   1a76        subs    r6, r6, r1                                                
  uintptr_t aligned_size = align_up(alignment, size);                                     
                                                                                          
  if (size > 0 && size <= aligned_size) {                                                 
  106c60:   42b4        cmp r4, r6                                                        
  106c62:   bf8c        ite hi                                                            
  106c64:   2300        movhi   r3, #0                                                    
  106c66:   2301        movls   r3, #1                                                    
  106c68:   2c00        cmp r4, #0                                                        
  106c6a:   bf0c        ite eq                                                            
  106c6c:   2300        moveq   r3, #0                                                    
  106c6e:   f003 0301   andne.w r3, r3, #1                                                
  106c72:   b1ab        cbz r3, 106ca0 <rtems_rbheap_allocate+0x58>                       
  return _Chain_Immutable_head( the_chain )->next;                                        
  106c74:   463b        mov r3, r7                                                        
  106c76:   f853 4b04   ldr.w   r4, [r3], #4                                              
  while (current != tail && big_enough == NULL) {                                         
  106c7a:   429c        cmp r4, r3                                                        
  106c7c:   d010        beq.n   106ca0 <rtems_rbheap_allocate+0x58>                       
    if (free_chunk->size >= size) {                                                       
  106c7e:   69e5        ldr r5, [r4, #28]                                                 
  106c80:   42ae        cmp r6, r5                                                        
  106c82:   d80a        bhi.n   106c9a <rtems_rbheap_allocate+0x52>                       
    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) {                                                     
  106c84:   42b5        cmp r5, r6                                                        
  106c86:   d811        bhi.n   106cac <rtems_rbheap_allocate+0x64>                       
  previous       = the_node->previous;                                                    
  106c88:   e9d4 2300   ldrd    r2, r3, [r4]                                              
  node->next = NULL;                                                                      
  106c8c:   2100        movs    r1, #0                                                    
          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;                                                 
  106c8e:   69a0        ldr r0, [r4, #24]                                                 
  next->previous = previous;                                                              
  106c90:   6053        str r3, [r2, #4]                                                  
  previous->next = next;                                                                  
  106c92:   601a        str r2, [r3, #0]                                                  
  node->next = NULL;                                                                      
  106c94:   6021        str r1, [r4, #0]                                                  
      }                                                                                   
    }                                                                                     
  }                                                                                       
                                                                                          
  return ptr;                                                                             
}                                                                                         
  106c96:   e8bd 87f0   ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}                     
  return the_node->next;                                                                  
  106c9a:   6824        ldr r4, [r4, #0]                                                  
  while (current != tail && big_enough == NULL) {                                         
  106c9c:   42a3        cmp r3, r4                                                        
  106c9e:   d1ee        bne.n   106c7e <rtems_rbheap_allocate+0x36>                       <== ALWAYS TAKEN
  void *ptr = NULL;                                                                       
  106ca0:   2000        movs    r0, #0                                                    
}                                                                                         
  106ca2:   e8bd 87f0   ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}                     
  106ca6:   4626        mov r6, r4                                                        
  106ca8:   2301        movs    r3, #1                                                    
  106caa:   e7dd        b.n 106c68 <rtems_rbheap_allocate+0x20>                           
  return _Chain_Immutable_head( the_chain )->next;                                        
  106cac:   46b9        mov r9, r7                                                        
  return &the_chain->Tail.Node;                                                           
  106cae:   f107 0a10   add.w   sl, r7, #16                                               
  return _Chain_Immutable_head( the_chain )->next;                                        
  106cb2:   f859 8f0c   ldr.w   r8, [r9, #12]!                                            
  if ( !_Chain_Is_empty(the_chain))                                                       
  106cb6:   45d0        cmp r8, sl                                                        
  106cb8:   d01d        beq.n   106cf6 <rtems_rbheap_allocate+0xae>                       
  new_first = old_first->next;                                                            
  106cba:   f8d8 3000   ldr.w   r3, [r8]                                                  
          uintptr_t new_free_size = free_size - aligned_size;                             
  106cbe:   1bad        subs    r5, r5, r6                                                
  node->next = NULL;                                                                      
  106cc0:   4641        mov r1, r8                                                        
  rtems_rbtree_insert(tree, &chunk->tree_node, chunk_compare, true);                      
  106cc2:   f646 3275   movw    r2, #27509  ; 0x6b75                                      
  106cc6:   f107 0018   add.w   r0, r7, #24                                               
  106cca:   f2c0 0210   movt    r2, #16                                                   
  head->next = new_first;                                                                 
  106cce:   60fb        str r3, [r7, #12]                                                 
  new_first->previous = head;                                                             
  106cd0:   f8c3 9004   str.w   r9, [r3, #4]                                              
          new_chunk->begin = free_chunk->begin + new_free_size;                           
  106cd4:   69a3        ldr r3, [r4, #24]                                                 
          free_chunk->size = new_free_size;                                               
  106cd6:   61e5        str r5, [r4, #28]                                                 
          new_chunk->size = aligned_size;                                                 
  106cd8:   f8c8 601c   str.w   r6, [r8, #28]                                             
          new_chunk->begin = free_chunk->begin + new_free_size;                           
  106cdc:   441d        add r5, r3                                                        
  node->next = NULL;                                                                      
  106cde:   2300        movs    r3, #0                                                    
  106ce0:   f8c8 5018   str.w   r5, [r8, #24]                                             
  106ce4:   f841 3b08   str.w   r3, [r1], #8                                              
  rtems_rbtree_insert(tree, &chunk->tree_node, chunk_compare, true);                      
  106ce8:   2301        movs    r3, #1                                                    
  106cea:   f000 f8a9   bl  106e40 <rtems_rbtree_insert>                                  
          ptr = (void *) new_chunk->begin;                                                
  106cee:   f8d8 0018   ldr.w   r0, [r8, #24]                                             
}                                                                                         
  106cf2:   e8bd 87f0   ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}                     
    (*control->extend_descriptors)(control);                                              
  106cf6:   6a3b        ldr r3, [r7, #32]                                                 
  106cf8:   4638        mov r0, r7                                                        
  106cfa:   4798        blx r3                                                            
  return _Chain_Immutable_head( the_chain )->next;                                        
  106cfc:   f8d7 800c   ldr.w   r8, [r7, #12]                                             
  if ( !_Chain_Is_empty(the_chain))                                                       
  106d00:   45c2        cmp sl, r8                                                        
  106d02:   d1da        bne.n   106cba <rtems_rbheap_allocate+0x72>                       
  106d04:   e7cc        b.n 106ca0 <rtems_rbheap_allocate+0x58>                           
  106d06:   bf00        nop                                                               
                                                                                          

00106e04 <rtems_rbtree_find>: const rtems_rbtree_control *the_rbtree, const rtems_rbtree_node *the_node, rtems_rbtree_compare compare, bool is_unique ) {
  106e04:   e92d 41f0   stmdb   sp!, {r4, r5, r6, r7, r8, lr}                             
  return RB_ROOT( the_rbtree );                                                           
  106e08:   6804        ldr r4, [r0, #0]                                                  
  rtems_rbtree_node *iter_node = rtems_rbtree_root( the_rbtree );                         
  rtems_rbtree_node *found = NULL;                                                        
                                                                                          
  while ( iter_node != NULL ) {                                                           
  106e0a:   b1b4        cbz r4, 106e3a <rtems_rbtree_find+0x36>                           
  106e0c:   460d        mov r5, r1                                                        
  106e0e:   4616        mov r6, r2                                                        
  106e10:   461f        mov r7, r3                                                        
  rtems_rbtree_node *found = NULL;                                                        
  106e12:   f04f 0800   mov.w   r8, #0                                                    
    rtems_rbtree_compare_result compare_result =                                          
      ( *compare )( the_node, iter_node );                                                
  106e16:   4621        mov r1, r4                                                        
  106e18:   4628        mov r0, r5                                                        
  106e1a:   47b0        blx r6                                                            
                                                                                          
    if ( rtems_rbtree_is_equal( compare_result ) ) {                                      
  106e1c:   2800        cmp r0, #0                                                        
  106e1e:   d107        bne.n   106e30 <rtems_rbtree_find+0x2c>                           
  106e20:   46a0        mov r8, r4                                                        
      found = iter_node;                                                                  
                                                                                          
      if ( is_unique )                                                                    
  106e22:   b917        cbnz    r7, 106e2a <rtems_rbtree_find+0x26>                       
  return RB_LEFT( the_node, Node );                                                       
  106e24:   6824        ldr r4, [r4, #0]                                                  
  while ( iter_node != NULL ) {                                                           
  106e26:   2c00        cmp r4, #0                                                        
  106e28:   d1f5        bne.n   106e16 <rtems_rbtree_find+0x12>                           
      iter_node = rtems_rbtree_left( iter_node );                                         
    }                                                                                     
  }                                                                                       
                                                                                          
  return found;                                                                           
}                                                                                         
  106e2a:   4640        mov r0, r8                                                        
  106e2c:   e8bd 81f0   ldmia.w sp!, {r4, r5, r6, r7, r8, pc}                             
    if ( rtems_rbtree_is_greater( compare_result ) ) {                                    
  106e30:   ddf8        ble.n   106e24 <rtems_rbtree_find+0x20>                           
  return RB_RIGHT( the_node, Node );                                                      
  106e32:   6864        ldr r4, [r4, #4]                                                  
  while ( iter_node != NULL ) {                                                           
  106e34:   2c00        cmp r4, #0                                                        
  106e36:   d1ee        bne.n   106e16 <rtems_rbtree_find+0x12>                           
  106e38:   e7f7        b.n 106e2a <rtems_rbtree_find+0x26>                               
  rtems_rbtree_node *found = NULL;                                                        
  106e3a:   46a0        mov r8, r4                                                        <== NOT EXECUTED
  106e3c:   e7f5        b.n 106e2a <rtems_rbtree_find+0x26>                               <== NOT EXECUTED
  106e3e:   bf00        nop