RTEMS-6
Annotated Report
rtems
Mon Mar 1 00:12:13 2021

000000004002fee0 <_Event_Seize>:                                                          
  Event_Control     *event,                                                               
  Thread_Wait_flags  wait_class,                                                          
  States_Control     block_state,                                                         
  ISR_lock_Context  *lock_context                                                         
)                                                                                         
{                                                                                         
    4002fee0:   a9bc7bfd    stp x29, x30, [sp, #-64]!                                     
    4002fee4:   910003fd    mov x29, sp                                                   
  rtems_event_set    pending_events;                                                      
  bool               success;                                                             
  Thread_Wait_flags  intend_to_block;                                                     
  Per_CPU_Control   *cpu_self;                                                            
                                                                                          
  pending_events = event->pending_events;                                                 
    4002fee8:   b94000a8    ldr w8, [x5]                                                  
{                                                                                         
    4002feec:   a90153f3    stp x19, x20, [sp, #16]                                       
    4002fef0:   aa0403f3    mov x19, x4                                                   
  seized_events  = _Event_sets_Get( pending_events, event_in );                           
                                                                                          
  if ( !_Event_sets_Is_empty( seized_events ) &&                                          
    4002fef4:   6a000104    ands    w4, w8, w0                                            
{                                                                                         
    4002fef8:   a9025bf5    stp x21, x22, [sp, #32]                                       
    4002fefc:   2a0703f5    mov w21, w7                                                   
    4002ff00:   a90363f7    stp x23, x24, [sp, #48]                                       
    4002ff04:   2a0603f7    mov w23, w6                                                   
  if ( !_Event_sets_Is_empty( seized_events ) &&                                          
    4002ff08:   54000080    b.eq    4002ff18 <_Event_Seize+0x38>  // b.none               
    4002ff0c:   6b04001f    cmp w0, w4                                                    
    4002ff10:   54000580    b.eq    4002ffc0 <_Event_Seize+0xe0>  // b.none               
       (seized_events == event_in || _Options_Is_any( option_set )) ) {                   
    4002ff14:   37080561    tbnz    w1, #1, 4002ffc0 <_Event_Seize+0xe0>                  
    _Thread_Wait_release_default( executing, lock_context );                              
    *event_out = seized_events;                                                           
    return RTEMS_SUCCESSFUL;                                                              
  }                                                                                       
                                                                                          
  if ( _Options_Is_no_wait( option_set ) ) {                                              
    4002ff18:   37000a21    tbnz    w1, #0, 4003005c <_Event_Seize+0x17c>                 
  disable_level = cpu_self->thread_dispatch_disable_level;                                
    4002ff1c:   b00006b4    adrp    x20, 40104000 <rtems_libio_iops+0x260>                
    4002ff20:   91080294    add x20, x20, #0x200                                          
    _Thread_Wait_release_default( executing, lock_context );                              
    *event_out = seized_events;                                                           
    return RTEMS_UNSATISFIED;                                                             
  }                                                                                       
                                                                                          
  intend_to_block = wait_class | THREAD_WAIT_STATE_INTEND_TO_BLOCK;                       
    4002ff24:   320002f6    orr w22, w23, #0x1                                            
   *  NOTE: Since interrupts are disabled, this isn't that much of an                     
   *        issue but better safe than sorry.                                             
   */                                                                                     
  executing->Wait.return_code     = STATUS_SUCCESSFUL;                                    
  executing->Wait.option          = option_set;                                           
  executing->Wait.count           = event_in;                                             
    4002ff28:   b9007260    str w0, [x19, #112]                                           
  executing->Wait.return_code     = STATUS_SUCCESSFUL;                                    
    4002ff2c:   29117e61    stp w1, wzr, [x19, #136]                                      
  the_thread->Wait.flags = flags;                                                         
    4002ff30:   b9009276    str w22, [x19, #144]                                          
  executing->Wait.return_argument = event_out;                                            
    4002ff34:   f9003e63    str x3, [x19, #120]                                           
    4002ff38:   b9401a80    ldr w0, [x20, #24]                                            
  cpu_self->thread_dispatch_disable_level = disable_level + 1;                            
    4002ff3c:   11000400    add w0, w0, #0x1                                              
    4002ff40:   b9001a80    str w0, [x20, #24]                                            
  _ISR_lock_ISR_enable( lock_context );                                                   
    4002ff44:   f94023e0    ldr x0, [sp, #64]                                             
    4002ff48:   b9400000    ldr w0, [x0]                                                  
    4002ff4c:   d51b4220    msr daif, x0                                                  
  _Thread_Wait_flags_set( executing, intend_to_block );                                   
                                                                                          
  cpu_self = _Thread_Dispatch_disable_critical( lock_context );                           
  _Thread_Wait_release_default( executing, lock_context );                                
                                                                                          
  if ( ticks ) {                                                                          
    4002ff50:   35000682    cbnz    w2, 40030020 <_Event_Seize+0x140>                     
    _Thread_Add_timeout_ticks( executing, cpu_self, ticks );                              
  }                                                                                       
                                                                                          
  _Thread_Set_state( executing, block_state );                                            
    4002ff54:   2a1503e1    mov w1, w21                                                   
    4002ff58:   aa1303e0    mov x0, x19                                                   
    4002ff5c:   97ffeed9    bl  4002bac0 <_Thread_Set_state>                              
  __asm__ volatile (                                                                      
    4002ff60:   d53b4220    mrs x0, daif                                                  
    4002ff64:   d50342df    msr daifset, #0x2                                             
  bool success = ( the_thread->Wait.flags == expected_flags );                            
    4002ff68:   b9409261    ldr w1, [x19, #144]                                           
  if ( success ) {                                                                        
    4002ff6c:   6b0102df    cmp w22, w1                                                   
    4002ff70:   540001a0    b.eq    4002ffa4 <_Event_Seize+0xc4>  // b.none               
  __asm__ volatile (                                                                      
    4002ff74:   92407c00    and x0, x0, #0xffffffff                                       
    4002ff78:   d51b4220    msr daif, x0                                                  
  success = _Thread_Wait_flags_try_change_acquire(                                        
    executing,                                                                            
    intend_to_block,                                                                      
    wait_class | THREAD_WAIT_STATE_BLOCKED                                                
  );                                                                                      
  if ( !success ) {                                                                       
    4002ff7c:   6b0102df    cmp w22, w1                                                   
    4002ff80:   54000381    b.ne    4002fff0 <_Event_Seize+0x110>  // b.any               <== ALWAYS TAKEN
    _Thread_Timer_remove( executing );                                                    
    _Thread_Unblock( executing );                                                         
  }                                                                                       
                                                                                          
  _Thread_Dispatch_direct( cpu_self );                                                    
    4002ff84:   aa1403e0    mov x0, x20                                                   
    4002ff88:   97ffe93a    bl  4002a470 <_Thread_Dispatch_direct>                        
                                                                                          
RTEMS_INLINE_ROUTINE rtems_status_code _Status_Get(                                       
  Status_Control status                                                                   
)                                                                                         
{                                                                                         
  return (rtems_status_code) STATUS_GET_CLASSIC( status );                                
    4002ff8c:   39423260    ldrb    w0, [x19, #140]                                       
  return _Status_Get_after_wait( executing );                                             
}                                                                                         
    4002ff90:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002ff94:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    4002ff98:   a94363f7    ldp x23, x24, [sp, #48]                                       
    4002ff9c:   a8c47bfd    ldp x29, x30, [sp], #64                                       
    4002ffa0:   d65f03c0    ret                                                           
  success = _Thread_Wait_flags_try_change_acquire(                                        
    4002ffa4:   321f02e6    orr w6, w23, #0x2                                             
    the_thread->Wait.flags = desired_flags;                                               
    4002ffa8:   b9009266    str w6, [x19, #144]                                           
    4002ffac:   92407c00    and x0, x0, #0xffffffff                                       
    4002ffb0:   d51b4220    msr daif, x0                                                  
  if ( !success ) {                                                                       
    4002ffb4:   6b0102df    cmp w22, w1                                                   
    4002ffb8:   54fffe60    b.eq    4002ff84 <_Event_Seize+0xa4>  // b.none               <== ALWAYS TAKEN
    4002ffbc:   1400000d    b   4002fff0 <_Event_Seize+0x110>                             <== NOT EXECUTED
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(                                   
 rtems_event_set the_event_set,                                                           
 rtems_event_set the_mask                                                                 
)                                                                                         
{                                                                                         
   return ( the_event_set & ~(the_mask) );                                                
    4002ffc0:   0a240108    bic w8, w8, w4                                                
    event->pending_events =                                                               
    4002ffc4:   b90000a8    str w8, [x5]                                                  
  _ISR_lock_ISR_enable( lock_context );                                                   
    4002ffc8:   f94023e0    ldr x0, [sp, #64]                                             
    4002ffcc:   b9400000    ldr w0, [x0]                                                  
    4002ffd0:   d51b4220    msr daif, x0                                                  
    *event_out = seized_events;                                                           
    4002ffd4:   b9000064    str w4, [x3]                                                  
    return RTEMS_SUCCESSFUL;                                                              
    4002ffd8:   52800000    mov w0, #0x0                    // #0                         
}                                                                                         
    4002ffdc:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002ffe0:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    4002ffe4:   a94363f7    ldp x23, x24, [sp, #48]                                       
    4002ffe8:   a8c47bfd    ldp x29, x30, [sp], #64                                       
    4002ffec:   d65f03c0    ret                                                           
  __asm__ volatile (                                                                      
    4002fff0:   d53b4235    mrs x21, daif                                                 
    4002fff4:   d50342df    msr daifset, #0x2                                             
  _Watchdog_Remove(                                                                       
    4002fff8:   f9405a60    ldr x0, [x19, #176]                                           
    4002fffc:   9102e261    add x1, x19, #0xb8                                            
    40030000:   97fff034    bl  4002c0d0 <_Watchdog_Remove>                               
  __asm__ volatile (                                                                      
    40030004:   92407eb5    and x21, x21, #0xffffffff                                     
    40030008:   d51b4235    msr daif, x21                                                 
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                                      
    4003000c:   528bffe1    mov w1, #0x5fff                 // #24575                     
    40030010:   72a60021    movk    w1, #0x3001, lsl #16                                  
    40030014:   aa1303e0    mov x0, x19                                                   
    40030018:   940005ca    bl  40031740 <_Thread_Clear_state>                            
}                                                                                         
    4003001c:   17ffffda    b   4002ff84 <_Event_Seize+0xa4>                              
  __asm__ volatile (                                                                      
    40030020:   d53b4238    mrs x24, daif                                                 
    40030024:   d50342df    msr daifset, #0x2                                             
  expire = ticks + cpu->Watchdog.ticks;                                                   
    40030028:   f9401e83    ldr x3, [x20, #56]                                            
  the_thread->Timer.Watchdog.routine = _Thread_Timeout;                                   
    4003002c:   f0ffffc1    adrp    x1, 4002b000 <_Thread_queue_FIFO_enqueue+0x30>        
    40030030:   9132c021    add x1, x1, #0xcb0                                            
  the_thread->Timer.header =                                                              
    40030034:   900006a0    adrp    x0, 40104000 <rtems_libio_iops+0x260>                 
    40030038:   91090000    add x0, x0, #0x240                                            
    4003003c:   f9005a60    str x0, [x19, #176]                                           
  the_thread->Timer.Watchdog.routine = _Thread_Timeout;                                   
    40030040:   f9006e61    str x1, [x19, #216]                                           
  _Watchdog_Insert(header, the_watchdog, expire);                                         
    40030044:   8b224062    add x2, x3, w2, uxtw                                          
    40030048:   9102e261    add x1, x19, #0xb8                                            
    4003004c:   97fff001    bl  4002c050 <_Watchdog_Insert>                               
  __asm__ volatile (                                                                      
    40030050:   92407f18    and x24, x24, #0xffffffff                                     
    40030054:   d51b4238    msr daif, x24                                                 
}                                                                                         
    40030058:   17ffffbf    b   4002ff54 <_Event_Seize+0x74>                              
  _ISR_lock_ISR_enable( lock_context );                                                   
    4003005c:   f94023e0    ldr x0, [sp, #64]                                             
    40030060:   b9400000    ldr w0, [x0]                                                  
    40030064:   d51b4220    msr daif, x0                                                  
    *event_out = seized_events;                                                           
    40030068:   b9000064    str w4, [x3]                                                  
    return RTEMS_UNSATISFIED;                                                             
    4003006c:   528001a0    mov w0, #0xd                    // #13                        
}                                                                                         
    40030070:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40030074:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40030078:   a94363f7    ldp x23, x24, [sp, #48]                                       
    4003007c:   a8c47bfd    ldp x29, x30, [sp], #64                                       
    40030080:   d65f03c0    ret                                                           
    ...                                                                                   
                                                                                          

000000004002d840 <_Signal_Action_handler>: void _Signal_Action_handler( Thread_Control *executing, Thread_Action *action, ISR_lock_Context *lock_context ) {
    4002d840:   a9bd7bfd    stp x29, x30, [sp, #-48]!                                     
    4002d844:   910003fd    mov x29, sp                                                   
    4002d848:   a90153f3    stp x19, x20, [sp, #16]                                       
                                                                                          
  /*                                                                                      
   *  Signal Processing                                                                   
   */                                                                                     
                                                                                          
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                                    
    4002d84c:   f9411c13    ldr x19, [x0, #568]                                           
  ASR_Information *asr                                                                    
)                                                                                         
{                                                                                         
  rtems_signal_set signal_set;                                                            
                                                                                          
  signal_set = asr->signals_posted;                                                       
    4002d850:   91002273    add x19, x19, #0x8                                            
    4002d854:   b9401674    ldr w20, [x19, #20]                                           
  asr->signals_posted = 0;                                                                
    4002d858:   b900167f    str wzr, [x19, #20]                                           
  _ISR_lock_ISR_enable( lock_context );                                                   
    4002d85c:   b9400040    ldr w0, [x2]                                                  
    4002d860:   d51b4220    msr daif, x0                                                  
  asr = &api->Signal;                                                                     
  signal_set = _ASR_Get_posted_signals( asr );                                            
                                                                                          
  _Thread_State_release( executing, lock_context );                                       
                                                                                          
  if ( signal_set == 0 ) {                                                                
    4002d864:   34000254    cbz w20, 4002d8ac <_Signal_Action_handler+0x6c>               <== NEVER TAKEN
    return;                                                                               
  }                                                                                       
                                                                                          
  asr->nest_level += 1;                                                                   
    4002d868:   b9401e63    ldr w3, [x19, #28]                                            
  rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );                     
    4002d86c:   9100b3e2    add x2, sp, #0x2c                                             
    4002d870:   b9401260    ldr w0, [x19, #16]                                            
    4002d874:   529fffe1    mov w1, #0xffff                 // #65535                     
  asr->nest_level += 1;                                                                   
    4002d878:   11000463    add w3, w3, #0x1                                              
    4002d87c:   b9001e63    str w3, [x19, #28]                                            
  rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );                     
    4002d880:   97ffe680    bl  40027280 <rtems_task_mode>                                
                                                                                          
  (*asr->handler)( signal_set );                                                          
    4002d884:   f9400661    ldr x1, [x19, #8]                                             
    4002d888:   2a1403e0    mov w0, w20                                                   
    4002d88c:   d63f0020    blr x1                                                        
                                                                                          
  asr->nest_level -= 1;                                                                   
    4002d890:   b9401e61    ldr w1, [x19, #28]                                            
  rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );                         
    4002d894:   9100b3e2    add x2, sp, #0x2c                                             
    4002d898:   b9402fe0    ldr w0, [sp, #44]                                             
  asr->nest_level -= 1;                                                                   
    4002d89c:   51000421    sub w1, w1, #0x1                                              
    4002d8a0:   b9001e61    str w1, [x19, #28]                                            
  rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );                         
    4002d8a4:   529fffe1    mov w1, #0xffff                 // #65535                     
    4002d8a8:   97ffe676    bl  40027280 <rtems_task_mode>                                
}                                                                                         
    4002d8ac:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002d8b0:   a8c37bfd    ldp x29, x30, [sp], #48                                       
    4002d8b4:   d65f03c0    ret                                                           
    ...                                                                                   
                                                                                          

0000000040024ec0 <_TOD_Validate>: ) { uint32_t days_in_month; uint32_t ticks_per_second; ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
    40024ec0:   900000a1    adrp    x1, 40038000 <__assert_func+0x50>                     
    40024ec4:   52884802    mov w2, #0x4240                 // #16960                     
    40024ec8:   72a001e2    movk    w2, #0xf, lsl #16                                     
    40024ecc:   b94da823    ldr w3, [x1, #3496]                                           
{                                                                                         
    40024ed0:   aa0003e1    mov x1, x0                                                    
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                                        
    40024ed4:   1ac30842    udiv    w2, w2, w3                                            
        rtems_configuration_get_microseconds_per_tick();                                  
  if ((!the_tod)                                  ||                                      
    40024ed8:   b4000500    cbz x0, 40024f78 <_TOD_Validate+0xb8>                         <== NEVER TAKEN
    40024edc:   b9401823    ldr w3, [x1, #24]                                             
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                                      
      (the_tod->month  == 0)                      ||                                      
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                                      
      (the_tod->year   <  TOD_BASE_YEAR)          ||                                      
      (the_tod->day    == 0) )                                                            
     return false;                                                                        
    40024ee0:   52800000    mov w0, #0x0                    // #0                         
  if ((!the_tod)                                  ||                                      
    40024ee4:   6b02007f    cmp w3, w2                                                    
    40024ee8:   54000462    b.cs    40024f74 <_TOD_Validate+0xb4>  // b.hs, b.nlast       
      (the_tod->ticks  >= ticks_per_second)       ||                                      
    40024eec:   b9401422    ldr w2, [x1, #20]                                             
    40024ef0:   7100ec5f    cmp w2, #0x3b                                                 
    40024ef4:   54000408    b.hi    40024f74 <_TOD_Validate+0xb4>  // b.pmore             
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                                      
    40024ef8:   b9401022    ldr w2, [x1, #16]                                             
    40024efc:   7100ec5f    cmp w2, #0x3b                                                 
    40024f00:   540003a8    b.hi    40024f74 <_TOD_Validate+0xb4>  // b.pmore             
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                                      
    40024f04:   b9400c22    ldr w2, [x1, #12]                                             
    40024f08:   71005c5f    cmp w2, #0x17                                                 
    40024f0c:   54000348    b.hi    40024f74 <_TOD_Validate+0xb4>  // b.pmore             
      (the_tod->month  == 0)                      ||                                      
    40024f10:   b9400422    ldr w2, [x1, #4]                                              
    40024f14:   51000443    sub w3, w2, #0x1                                              
    40024f18:   71002c7f    cmp w3, #0xb                                                  
    40024f1c:   540002c8    b.hi    40024f74 <_TOD_Validate+0xb4>  // b.pmore             
      (the_tod->year   <  TOD_BASE_YEAR)          ||                                      
    40024f20:   b9400023    ldr w3, [x1]                                                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                                      
    40024f24:   711f0c7f    cmp w3, #0x7c3                                                
    40024f28:   54000269    b.ls    40024f74 <_TOD_Validate+0xb4>  // b.plast             
      (the_tod->day    == 0) )                                                            
    40024f2c:   b9400821    ldr w1, [x1, #8]                                              
      (the_tod->year   <  TOD_BASE_YEAR)          ||                                      
    40024f30:   34000221    cbz w1, 40024f74 <_TOD_Validate+0xb4>                         <== NEVER TAKEN
                                                                                          
  if (((the_tod->year % 4) == 0 && (the_tod->year % 100 != 0)) ||                         
    40024f34:   f240047f    tst x3, #0x3                                                  
    40024f38:   54000241    b.ne    40024f80 <_TOD_Validate+0xc0>  // b.any               
    40024f3c:   528b8520    mov w0, #0x5c29                 // #23593                     
    40024f40:   72b851e0    movk    w0, #0xc28f, lsl #16                                  
    40024f44:   528b8504    mov w4, #0x5c28                 // #23592                     
    40024f48:   72a051e4    movk    w4, #0x28f, lsl #16                                   
    40024f4c:   1b007c60    mul w0, w3, w0                                                
    40024f50:   13800800    ror w0, w0, #2                                                
    40024f54:   6b04001f    cmp w0, w4                                                    
    40024f58:   54000149    b.ls    40024f80 <_TOD_Validate+0xc0>  // b.plast             
     (the_tod->year % 400 == 0))                                                          
    days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];                           
    40024f5c:   b00000a0    adrp    x0, 40039000 <rtems_test_name+0x1e8>                  
    40024f60:   91238000    add x0, x0, #0x8e0                                            
    40024f64:   8b224802    add x2, x0, w2, uxtw #2                                       
    40024f68:   b9403440    ldr w0, [x2, #52]                                             
  else                                                                                    
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];                           
                                                                                          
  if ( the_tod->day > days_in_month )                                                     
    40024f6c:   6b00003f    cmp w1, w0                                                    
    40024f70:   1a9f87e0    cset    w0, ls  // ls = plast                                 
    return false;                                                                         
                                                                                          
  return true;                                                                            
}                                                                                         
    40024f74:   d65f03c0    ret                                                           
     return false;                                                                        
    40024f78:   52800000    mov w0, #0x0                    // #0                         <== NOT EXECUTED
}                                                                                         
    40024f7c:   d65f03c0    ret                                                           <== NOT EXECUTED
    40024f80:   528b8520    mov w0, #0x5c29                 // #23593                     
    40024f84:   72b851e0    movk    w0, #0xc28f, lsl #16                                  
  if (((the_tod->year % 4) == 0 && (the_tod->year % 100 != 0)) ||                         
    40024f88:   529ae144    mov w4, #0xd70a                 // #55050                     
    40024f8c:   72a01464    movk    w4, #0xa3, lsl #16                                    
    40024f90:   1b007c60    mul w0, w3, w0                                                
    40024f94:   13801000    ror w0, w0, #4                                                
    40024f98:   6b04001f    cmp w0, w4                                                    
    40024f9c:   54fffe09    b.ls    40024f5c <_TOD_Validate+0x9c>  // b.plast             
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];                           
    40024fa0:   b00000a0    adrp    x0, 40039000 <rtems_test_name+0x1e8>                  
    40024fa4:   91238000    add x0, x0, #0x8e0                                            
    40024fa8:   b8625800    ldr w0, [x0, w2, uxtw #2]                                     
    40024fac:   17fffff0    b   40024f6c <_TOD_Validate+0xac>                             
                                                                                          

0000000040024b50 <rtems_clock_get_tod>: uint32_t day_secs; uint32_t year; uint32_t year_days; uint32_t leap_years; if ( !time_buffer ) 40024b50: b4001180 cbz x0, 40024d80 <rtems_clock_get_tod+0x230> {
    40024b54:   a9bd7bfd    stp x29, x30, [sp, #-48]!                                     
    40024b58:   910003fd    mov x29, sp                                                   
    40024b5c:   f9000bf3    str x19, [sp, #16]                                            
    40024b60:   aa0003f3    mov x19, x0                                                   
  return _TOD.is_set;                                                                     
    40024b64:   90000700    adrp    x0, 40104000 <_RTEMS_tasks_Objects+0x1760>            
    return RTEMS_INVALID_ADDRESS;                                                         
                                                                                          
  if ( !_TOD_Is_set() )                                                                   
    40024b68:   39736001    ldrb    w1, [x0, #3288]                                       
    return RTEMS_NOT_DEFINED;                                                             
    40024b6c:   52800160    mov w0, #0xb                    // #11                        
  if ( !_TOD_Is_set() )                                                                   
    40024b70:   34000be1    cbz w1, 40024cec <rtems_clock_get_tod+0x19c>                  
  _Timecounter_Microtime( time );                                                         
    40024b74:   910083e0    add x0, sp, #0x20                                             
    40024b78:   940004c6    bl  40025e90 <_Timecounter_Microtime>                         
                                                                                          
  /* Obtain the current time */                                                           
  _TOD_Get_timeval( &now );                                                               
                                                                                          
  /* How many days and how many seconds in the day ? */                                   
  days = now.tv_sec / RTEMS_SECS_PER_DAY;                                                 
    40024b7c:   f94013e0    ldr x0, [sp, #32]                                             
    40024b80:   d28956e1    mov x1, #0x4ab7                 // #19127                     
    40024b84:   f2ae5121    movk    x1, #0x7289, lsl #16                                  
  day_secs = now.tv_sec % RTEMS_SECS_PER_DAY;                                             
                                                                                          
  /* How many non-leap year years ? */                                                    
  year = ( days / RTEMS_DAYS_PER_YEAR ) + RTEMS_YEAR_BASE;                                
    40024b88:   529e6c25    mov w5, #0xf361                 // #62305                     
    40024b8c:   72ace325    movk    w5, #0x6719, lsl #16                                  
  days = now.tv_sec / RTEMS_SECS_PER_DAY;                                                 
    40024b90:   f2c8a0c1    movk    x1, #0x4506, lsl #32                                  
    40024b94:   f2f845c1    movk    x1, #0xc22e, lsl #48                                  
  day_secs = now.tv_sec % RTEMS_SECS_PER_DAY;                                             
    40024b98:   d28a3006    mov x6, #0x5180                 // #20864                     
    40024b9c:   f2a00026    movk    x6, #0x1, lsl #16                                     
  return (year / 4) - (year / 100) + (year / 400);                                        
    40024ba0:   5290a3e2    mov w2, #0x851f                 // #34079                     
    40024ba4:   72aa3d62    movk    w2, #0x51eb, lsl #16                                  
  days = now.tv_sec / RTEMS_SECS_PER_DAY;                                                 
    40024ba8:   9bc17c01    umulh   x1, x0, x1                                            
                                                                                          
  /* Determine the number of leap years. */                                               
  leap_years = _Leap_years_between( RTEMS_YEAR_BASE, year );                              
                                                                                          
  /* Adjust the remaining number of days based on the leap years. */                      
  year_days = ( days - leap_years ) % RTEMS_DAYS_PER_YEAR;                                
    40024bac:   52802da3    mov w3, #0x16d                  // #365                       
  days = now.tv_sec / RTEMS_SECS_PER_DAY;                                                 
    40024bb0:   d350fc21    lsr x1, x1, #16                                               
  year = ( days / RTEMS_DAYS_PER_YEAR ) + RTEMS_YEAR_BASE;                                
    40024bb4:   9ba57c25    umull   x5, w1, w5                                            
  day_secs = now.tv_sec % RTEMS_SECS_PER_DAY;                                             
    40024bb8:   9b068026    msub    x6, x1, x6, x0                                        
  year = ( days / RTEMS_DAYS_PER_YEAR ) + RTEMS_YEAR_BASE;                                
    40024bbc:   d360fca0    lsr x0, x5, #32                                               
    40024bc0:   4b000025    sub w5, w1, w0                                                
    40024bc4:   0b450405    add w5, w0, w5, lsr #1                                        
    40024bc8:   53087ca5    lsr w5, w5, #8                                                
  year -= 1;                                                                              
    40024bcc:   111ec4a4    add w4, w5, #0x7b1                                            
                                                                                          
  /* Adjust the year and days in the year if in the leap year overflow. */                
  if ( leap_years > ( days % RTEMS_DAYS_PER_YEAR ) ) {                                    
    40024bd0:   1b0384a7    msub    w7, w5, w3, w1                                        
  return (year / 4) - (year / 100) + (year / 400);                                        
    40024bd4:   9ba27c82    umull   x2, w4, w2                                            
    40024bd8:   d367fc40    lsr x0, x2, #39                                               
    40024bdc:   d365fc42    lsr x2, x2, #37                                               
    40024be0:   0b440800    add w0, w0, w4, lsr #2                                        
  year_days = ( days - leap_years ) % RTEMS_DAYS_PER_YEAR;                                
    40024be4:   0b010041    add w1, w2, w1                                                
    40024be8:   51077400    sub w0, w0, #0x1dd                                            
    40024bec:   4b000021    sub w1, w1, w0                                                
  return _Leap_years_before( to ) - _Leap_years_before( from + 1 );                       
    40024bf0:   4b020000    sub w0, w0, w2                                                
  if ( leap_years > ( days % RTEMS_DAYS_PER_YEAR ) ) {                                    
    40024bf4:   6b0000ff    cmp w7, w0                                                    
  year_days = ( days - leap_years ) % RTEMS_DAYS_PER_YEAR;                                
    40024bf8:   1ac30820    udiv    w0, w1, w3                                            
    40024bfc:   1b038403    msub    w3, w0, w3, w1                                        
  if ( leap_years > ( days % RTEMS_DAYS_PER_YEAR ) ) {                                    
    40024c00:   540007c3    b.cc    40024cf8 <rtems_clock_get_tod+0x1a8>  // b.lo, b.ul, b.last
  year = ( days / RTEMS_DAYS_PER_YEAR ) + RTEMS_YEAR_BASE;                                
    40024c04:   111ec8a4    add w4, w5, #0x7b2                                            
  return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0);               
    40024c08:   12000480    and w0, w4, #0x3                                              
    if ( _Leap_year( year ) ) {                                                           
      year_days += 1;                                                                     
    }                                                                                     
  }                                                                                       
                                                                                          
  time_buffer->year   = year;                                                             
    40024c0c:   b9000264    str w4, [x19]                                                 
  return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0);               
    40024c10:   35000120    cbnz    w0, 40024c34 <rtems_clock_get_tod+0xe4>               
    40024c14:   528b8520    mov w0, #0x5c29                 // #23593                     
    40024c18:   72b851e0    movk    w0, #0xc28f, lsl #16                                  
    40024c1c:   528b8501    mov w1, #0x5c28                 // #23592                     
    40024c20:   72a051e1    movk    w1, #0x28f, lsl #16                                   
    40024c24:   1b007c80    mul w0, w4, w0                                                
    40024c28:   13800800    ror w0, w0, #2                                                
    40024c2c:   6b01001f    cmp w0, w1                                                    
    40024c30:   540009a8    b.hi    40024d64 <rtems_clock_get_tod+0x214>  // b.pmore      
    40024c34:   528b8520    mov w0, #0x5c29                 // #23593                     
    40024c38:   72b851e0    movk    w0, #0xc28f, lsl #16                                  
    days_to_date = _TOD_Days_to_date[0];                                                  
    40024c3c:   b00000a1    adrp    x1, 40039000 <rtems_test_name+0x1e8>                  
    40024c40:   9122a022    add x2, x1, #0x8a8                                            
    40024c44:   1b007c84    mul w4, w4, w0                                                
  return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0);               
    40024c48:   529ae145    mov w5, #0xd70a                 // #55050                     
    40024c4c:   72a01465    movk    w5, #0xa3, lsl #16                                    
    days_to_date = _TOD_Days_to_date[0];                                                  
    40024c50:   b00000a1    adrp    x1, 40039000 <rtems_test_name+0x1e8>                  
    40024c54:   91230821    add x1, x1, #0x8c2                                            
    40024c58:   13841084    ror w4, w4, #4                                                
    40024c5c:   6b05009f    cmp w4, w5                                                    
    40024c60:   9a829021    csel    x1, x1, x2, ls  // ls = plast                         
  days_to_date += 2;                                                                      
    40024c64:   91001021    add x1, x1, #0x4                                              
  uint32_t        month = 0;                                                              
    40024c68:   52800002    mov w2, #0x0                    // #0                         
    40024c6c:   d503201f    nop                                                           
    if (*day < *days_to_date)                                                             
    40024c70:   79400024    ldrh    w4, [x1]                                              
    ++month;                                                                              
    40024c74:   11000442    add w2, w2, #0x1                                              
    if (*day < *days_to_date)                                                             
    40024c78:   6b03009f    cmp w4, w3                                                    
    40024c7c:   54000608    b.hi    40024d3c <rtems_clock_get_tod+0x1ec>  // b.pmore      
    ++days_to_date;                                                                       
    40024c80:   91000821    add x1, x1, #0x2                                              
  while (month < 11) {                                                                    
    40024c84:   71002c5f    cmp w2, #0xb                                                  
    40024c88:   54ffff41    b.ne    40024c70 <rtems_clock_get_tod+0x120>  // b.any        
    40024c8c:   52800182    mov w2, #0xc                    // #12                        
  time_buffer->month  = _Year_day_as_month( year, &year_days ) + 1;                       
  time_buffer->day    = year_days + 1;                                                    
  time_buffer->hour   = day_secs / RTEMS_SECS_PER_HOUR;                                   
    40024c90:   529678a5    mov w5, #0xb3c5                 // #46021                     
    40024c94:   72b23445    movk    w5, #0x91a2, lsl #16                                  
  time_buffer->minute = day_secs % RTEMS_SECS_PER_HOUR;                                   
    40024c98:   5281c207    mov w7, #0xe10                  // #3600                      
  time_buffer->second = time_buffer->minute % RTEMS_SECS_PER_MINUTE;                      
    40024c9c:   52911121    mov w1, #0x8889                 // #34953                     
    40024ca0:   72b11101    movk    w1, #0x8888, lsl #16                                  
  time_buffer->hour   = day_secs / RTEMS_SECS_PER_HOUR;                                   
    40024ca4:   9ba57cc5    umull   x5, w6, w5                                            
  time_buffer->minute = time_buffer->minute / RTEMS_SECS_PER_MINUTE;                      
  time_buffer->ticks  = now.tv_usec /                                                     
    40024ca8:   900000a0    adrp    x0, 40038000 <__assert_func+0x50>                     
    40024cac:   b94da80a    ldr w10, [x0, #3496]                                          
    40024cb0:   f94017e8    ldr x8, [sp, #40]                                             
  time_buffer->hour   = day_secs / RTEMS_SECS_PER_HOUR;                                   
    40024cb4:   d36bfca5    lsr x5, x5, #43                                               
  time_buffer->second = time_buffer->minute % RTEMS_SECS_PER_MINUTE;                      
    40024cb8:   52800789    mov w9, #0x3c                   // #60                        
  time_buffer->day    = year_days + 1;                                                    
    40024cbc:   11000463    add w3, w3, #0x1                                              
    40024cc0:   4b040064    sub w4, w3, w4                                                
    rtems_configuration_get_microseconds_per_tick( );                                     
                                                                                          
  return RTEMS_SUCCESSFUL;                                                                
    40024cc4:   52800000    mov w0, #0x0                    // #0                         
  time_buffer->minute = day_secs % RTEMS_SECS_PER_HOUR;                                   
    40024cc8:   1b0798a6    msub    w6, w5, w7, w6                                        
  time_buffer->day    = year_days + 1;                                                    
    40024ccc:   29009262    stp w2, w4, [x19, #4]                                         
  time_buffer->ticks  = now.tv_usec /                                                     
    40024cd0:   9aca0d08    sdiv    x8, x8, x10                                           
  time_buffer->second = time_buffer->minute % RTEMS_SECS_PER_MINUTE;                      
    40024cd4:   9ba17cc1    umull   x1, w6, w1                                            
  time_buffer->ticks  = now.tv_usec /                                                     
    40024cd8:   b9001a68    str w8, [x19, #24]                                            
  time_buffer->second = time_buffer->minute % RTEMS_SECS_PER_MINUTE;                      
    40024cdc:   d365fc21    lsr x1, x1, #37                                               
  time_buffer->minute = time_buffer->minute / RTEMS_SECS_PER_MINUTE;                      
    40024ce0:   29018665    stp w5, w1, [x19, #12]                                        
  time_buffer->second = time_buffer->minute % RTEMS_SECS_PER_MINUTE;                      
    40024ce4:   1b099821    msub    w1, w1, w9, w6                                        
    40024ce8:   b9001661    str w1, [x19, #20]                                            
}                                                                                         
    40024cec:   f9400bf3    ldr x19, [sp, #16]                                            
    40024cf0:   a8c37bfd    ldp x29, x30, [sp], #48                                       
    40024cf4:   d65f03c0    ret                                                           
  return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0);               
    40024cf8:   528b8521    mov w1, #0x5c29                 // #23593                     
    40024cfc:   72b851e1    movk    w1, #0xc28f, lsl #16                                  
    40024d00:   72000480    ands    w0, w4, #0x3                                          
    40024d04:   54000201    b.ne    40024d44 <rtems_clock_get_tod+0x1f4>  // b.any        
    40024d08:   1b017c81    mul w1, w4, w1                                                
    40024d0c:   528b8502    mov w2, #0x5c28                 // #23592                     
    40024d10:   72a051e2    movk    w2, #0x28f, lsl #16                                   
    40024d14:   13810825    ror w5, w1, #2                                                
    40024d18:   6b0200bf    cmp w5, w2                                                    
    40024d1c:   54000208    b.hi    40024d5c <rtems_clock_get_tod+0x20c>  // b.pmore      
    40024d20:   529ae142    mov w2, #0xd70a                 // #55050                     
    40024d24:   72a01462    movk    w2, #0xa3, lsl #16                                    
    40024d28:   13811021    ror w1, w1, #4                                                
    40024d2c:   6b02003f    cmp w1, w2                                                    
    40024d30:   54000169    b.ls    40024d5c <rtems_clock_get_tod+0x20c>  // b.plast      
  time_buffer->year   = year;                                                             
    40024d34:   b9000264    str w4, [x19]                                                 
  return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0);               
    40024d38:   17ffffb7    b   40024c14 <rtems_clock_get_tod+0xc4>                       
  *day -= *(days_to_date - 1);                                                            
    40024d3c:   785fe024    ldurh   w4, [x1, #-2]                                         
    40024d40:   17ffffd4    b   40024c90 <rtems_clock_get_tod+0x140>                      
  time_buffer->year   = year;                                                             
    40024d44:   1b017c81    mul w1, w4, w1                                                
  return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0);               
    40024d48:   529ae142    mov w2, #0xd70a                 // #55050                     
    40024d4c:   72a01462    movk    w2, #0xa3, lsl #16                                    
  time_buffer->year   = year;                                                             
    40024d50:   13811021    ror w1, w1, #4                                                
  return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0);               
    40024d54:   6b02003f    cmp w1, w2                                                    
    40024d58:   540000c8    b.hi    40024d70 <rtems_clock_get_tod+0x220>  // b.pmore      <== ALWAYS TAKEN
      year_days += 1;                                                                     
    40024d5c:   11000463    add w3, w3, #0x1                                              
    40024d60:   17ffffab    b   40024c0c <rtems_clock_get_tod+0xbc>                       
    days_to_date = _TOD_Days_to_date[1];                                                  
    40024d64:   b00000a1    adrp    x1, 40039000 <rtems_test_name+0x1e8>                  
    40024d68:   91230821    add x1, x1, #0x8c2                                            
    40024d6c:   17ffffbe    b   40024c64 <rtems_clock_get_tod+0x114>                      
    days_to_date = _TOD_Days_to_date[0];                                                  
    40024d70:   b00000a1    adrp    x1, 40039000 <rtems_test_name+0x1e8>                  
    40024d74:   9122a021    add x1, x1, #0x8a8                                            
  time_buffer->year   = year;                                                             
    40024d78:   b9000264    str w4, [x19]                                                 
  return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0);               
    40024d7c:   17ffffba    b   40024c64 <rtems_clock_get_tod+0x114>                      
    return RTEMS_INVALID_ADDRESS;                                                         
    40024d80:   52800120    mov w0, #0x9                    // #9                         
}                                                                                         
    40024d84:   d65f03c0    ret                                                           
    ...                                                                                   
                                                                                          

0000000040024f90 <rtems_clock_tick>: #include <rtems/rtems/clock.h> #include <rtems/score/timecounter.h> #include <rtems/score/threadimpl.h> rtems_status_code rtems_clock_tick( void ) {
    40024f90:   a9be7bfd    stp x29, x30, [sp, #-32]!                                     
    40024f94:   910003fd    mov x29, sp                                                   
    40024f98:   d53b4220    mrs x0, daif                                                  
    40024f9c:   d50342df    msr daifset, #0x2                                             
  ISR_lock_Context lock_context;                                                          
                                                                                          
  _Timecounter_Acquire( &lock_context );                                                  
    40024fa0:   b9001be0    str w0, [sp, #24]                                             
  _Timecounter_Tick_simple(                                                               
    40024fa4:   900000a0    adrp    x0, 40038000 <bsp_section_rodata_begin+0x6a8>         
    40024fa8:   910063e2    add x2, sp, #0x18                                             
    40024fac:   52800001    mov w1, #0x0                    // #0                         
    40024fb0:   b9472000    ldr w0, [x0, #1824]                                           
    40024fb4:   940005df    bl  40026730 <_Timecounter_Tick_simple>                       
    40024fb8:   f00006e0    adrp    x0, 40103000 <_Thread_Heads+0x28>                     
    40024fbc:   91220000    add x0, x0, #0x880                                            
    40024fc0:   b9401800    ldr w0, [x0, #24]                                             
    rtems_configuration_get_microseconds_per_tick(),                                      
    0,                                                                                    
    &lock_context                                                                         
  );                                                                                      
                                                                                          
  if ( _Thread_Dispatch_is_enabled() ) {                                                  
    40024fc4:   34000080    cbz w0, 40024fd4 <rtems_clock_tick+0x44>                      <== ALWAYS TAKEN
    _Thread_Dispatch();                                                                   
  }                                                                                       
                                                                                          
  return RTEMS_SUCCESSFUL;                                                                
}                                                                                         
    40024fc8:   52800000    mov w0, #0x0                    // #0                         <== NOT EXECUTED
    40024fcc:   a8c27bfd    ldp x29, x30, [sp], #32                                       <== NOT EXECUTED
    40024fd0:   d65f03c0    ret                                                           <== NOT EXECUTED
    _Thread_Dispatch();                                                                   
    40024fd4:   9400090b    bl  40027400 <_Thread_Dispatch>                               
}                                                                                         
    40024fd8:   52800000    mov w0, #0x0                    // #0                         
    40024fdc:   a8c27bfd    ldp x29, x30, [sp], #32                                       
    40024fe0:   d65f03c0    ret                                                           
    ...                                                                                   
                                                                                          

0000000040025400 <rtems_object_get_class_information>: int i; /* * Validate parameters and look up information structure. */ if ( !info ) 40025400: b4000442 cbz x2, 40025488 <rtems_object_get_class_information+0x88> {
    40025404:   a9be7bfd    stp x29, x30, [sp, #-32]!                                     
    40025408:   910003fd    mov x29, sp                                                   
    4002540c:   f9000bf3    str x19, [sp, #16]                                            
    40025410:   aa0203f3    mov x19, x2                                                   
    return RTEMS_INVALID_ADDRESS;                                                         
                                                                                          
  obj_info = _Objects_Get_information( the_api, the_class );                              
    40025414:   94000473    bl  400265e0 <_Objects_Get_information>                       
  if ( !obj_info )                                                                        
    40025418:   b40003c0    cbz x0, 40025490 <rtems_object_get_class_information+0x90>    
 */                                                                                       
RTEMS_INLINE_ROUTINE Objects_Maximum _Objects_Is_auto_extend(                             
  const Objects_Information *information                                                  
)                                                                                         
{                                                                                         
  return information->objects_per_block != 0;                                             
    4002541c:   79404401    ldrh    w1, [x0, #34]                                         
    return RTEMS_INVALID_NUMBER;                                                          
                                                                                          
  /*                                                                                      
   * Return information about this object class to the user.                              
   */                                                                                     
  info->minimum_id  = _Objects_Get_minimum_id( obj_info->maximum_id );                    
    40025420:   b9400003    ldr w3, [x0]                                                  
    40025424:   7100003f    cmp w1, #0x0                                                  
  id &= ~OBJECTS_INDEX_MASK;                                                              
    40025428:   12103c61    and w1, w3, #0xffff0000                                       
  return information->objects_per_block != 0;                                             
    4002542c:   1a9f07e2    cset    w2, ne  // ne = any                                   
  id += (Objects_Id) OBJECTS_INDEX_MINIMUM << OBJECTS_INDEX_START_BIT;                    
    40025430:   11000421    add w1, w1, #0x1                                              
  info->maximum_id  = obj_info->maximum_id;                                               
    40025434:   29000e61    stp w1, w3, [x19]                                             
    40025438:   12003c63    and w3, w3, #0xffff                                           
  info->auto_extend = _Objects_Is_auto_extend( obj_info );                                
  info->maximum     = _Objects_Get_maximum_index( obj_info );                             
    4002543c:   b9000a63    str w3, [x19, #8]                                             
  return information->objects_per_block != 0;                                             
    40025440:   39003262    strb    w2, [x19, #12]                                        
                                                                                          
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )                                   
    40025444:   34000183    cbz w3, 40025474 <rtems_object_get_class_information+0x74>    <== NEVER TAKEN
    40025448:   52800001    mov w1, #0x0                    // #0                         
    if ( !obj_info->local_table[i] )                                                      
    4002544c:   f9400402    ldr x2, [x0, #8]                                              
    40025450:   d2800020    mov x0, #0x1                    // #1                         
    40025454:   d503201f    nop                                                           
    40025458:   f8607844    ldr x4, [x2, x0, lsl #3]                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )                                   
    4002545c:   91000400    add x0, x0, #0x1                                              
      unallocated++;                                                                      
    40025460:   f100009f    cmp x4, #0x0                                                  
    40025464:   1a811421    cinc    w1, w1, eq  // eq = none                              
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )                                   
    40025468:   6b00007f    cmp w3, w0                                                    
    4002546c:   54ffff62    b.cs    40025458 <rtems_object_get_class_information+0x58>  // b.hs, b.nlast
                                                                                          
  info->unallocated = unallocated;                                                        
    40025470:   2a0103e3    mov w3, w1                                                    
                                                                                          
  return RTEMS_SUCCESSFUL;                                                                
    40025474:   52800000    mov w0, #0x0                    // #0                         
  info->unallocated = unallocated;                                                        
    40025478:   b9001263    str w3, [x19, #16]                                            
}                                                                                         
    4002547c:   f9400bf3    ldr x19, [sp, #16]                                            
    40025480:   a8c27bfd    ldp x29, x30, [sp], #32                                       
    40025484:   d65f03c0    ret                                                           
    return RTEMS_INVALID_ADDRESS;                                                         
    40025488:   52800120    mov w0, #0x9                    // #9                         
}                                                                                         
    4002548c:   d65f03c0    ret                                                           
    return RTEMS_INVALID_NUMBER;                                                          
    40025490:   52800140    mov w0, #0xa                    // #10                        
    40025494:   17fffffa    b   4002547c <rtems_object_get_class_information+0x7c>        
    ...                                                                                   
                                                                                          

0000000040023e20 <rtems_object_set_name>: Objects_Information *information; Objects_Control *the_object; Objects_Id tmpId; Status_Control status; if ( !name ) 40023e20: b40004e1 cbz x1, 40023ebc <rtems_object_set_name+0x9c> {
    40023e24:   a9bd7bfd    stp x29, x30, [sp, #-48]!                                     
    40023e28:   910003fd    mov x29, sp                                                   
    40023e2c:   a90153f3    stp x19, x20, [sp, #16]                                       
    40023e30:   2a0003f3    mov w19, w0                                                   
    40023e34:   f90013f5    str x21, [sp, #32]                                            
    40023e38:   aa0103f5    mov x21, x1                                                   
    return RTEMS_INVALID_ADDRESS;                                                         
                                                                                          
  tmpId = (id == OBJECTS_ID_OF_SELF) ? rtems_task_self() : id;                            
    40023e3c:   340002a0    cbz w0, 40023e90 <rtems_object_set_name+0x70>                 
                                                                                          
  information  = _Objects_Get_information_id( tmpId );                                    
    40023e40:   2a1303e0    mov w0, w19                                                   
    40023e44:   94000273    bl  40024810 <_Objects_Get_information_id>                    
    40023e48:   aa0003f4    mov x20, x0                                                   
  if ( !information )                                                                     
    40023e4c:   b40002e0    cbz x0, 40023ea8 <rtems_object_set_name+0x88>                 
 *                                                                                        
 * @see _Objects_Allocator_unlock() and _Objects_Allocate().                              
 */                                                                                       
RTEMS_INLINE_ROUTINE void _Objects_Allocator_lock( void )                                 
{                                                                                         
  _RTEMS_Lock_allocator();                                                                
    40023e50:   9400007c    bl  40024040 <_RTEMS_Lock_allocator>                          
    return RTEMS_INVALID_ID;                                                              
                                                                                          
  _Objects_Allocator_lock();                                                              
  the_object = _Objects_Get_no_protection( tmpId, information );                          
    40023e54:   aa1403e1    mov x1, x20                                                   
    40023e58:   2a1303e0    mov w0, w19                                                   
    40023e5c:   940002dd    bl  400249d0 <_Objects_Get_no_protection>                     
    40023e60:   aa0003e1    mov x1, x0                                                    
                                                                                          
  if ( the_object == NULL ) {                                                             
    40023e64:   b4000300    cbz x0, 40023ec4 <rtems_object_set_name+0xa4>                 
    _Objects_Allocator_unlock();                                                          
    return RTEMS_INVALID_ID;                                                              
  }                                                                                       
                                                                                          
  status = _Objects_Set_name( information, the_object, name );                            
    40023e68:   aa1503e2    mov x2, x21                                                   
    40023e6c:   aa1403e0    mov x0, x20                                                   
    40023e70:   940002e8    bl  40024a10 <_Objects_Set_name>                              
    40023e74:   2a0003f3    mov w19, w0                                                   
 * previous thread life protection state and thus may not return if the                   
 * executing thread was restarted or deleted in the mean-time.                            
 */                                                                                       
RTEMS_INLINE_ROUTINE void _Objects_Allocator_unlock( void )                               
{                                                                                         
  _RTEMS_Unlock_allocator();                                                              
    40023e78:   94000076    bl  40024050 <_RTEMS_Unlock_allocator>                        
  _Objects_Allocator_unlock();                                                            
  return STATUS_GET_CLASSIC( status );                                                    
    40023e7c:   12001e60    and w0, w19, #0xff                                            
}                                                                                         
    40023e80:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40023e84:   f94013f5    ldr x21, [sp, #32]                                            
    40023e88:   a8c37bfd    ldp x29, x30, [sp], #48                                       
    40023e8c:   d65f03c0    ret                                                           
  tmpId = (id == OBJECTS_ID_OF_SELF) ? rtems_task_self() : id;                            
    40023e90:   94000030    bl  40023f50 <rtems_task_self>                                
    40023e94:   2a0003f3    mov w19, w0                                                   
  information  = _Objects_Get_information_id( tmpId );                                    
    40023e98:   2a1303e0    mov w0, w19                                                   
    40023e9c:   9400025d    bl  40024810 <_Objects_Get_information_id>                    
    40023ea0:   aa0003f4    mov x20, x0                                                   
  if ( !information )                                                                     
    40023ea4:   b5fffd60    cbnz    x0, 40023e50 <rtems_object_set_name+0x30>             <== ALWAYS TAKEN
    return RTEMS_INVALID_ID;                                                              
    40023ea8:   52800080    mov w0, #0x4                    // #4                         
}                                                                                         
    40023eac:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40023eb0:   f94013f5    ldr x21, [sp, #32]                                            
    40023eb4:   a8c37bfd    ldp x29, x30, [sp], #48                                       
    40023eb8:   d65f03c0    ret                                                           
    return RTEMS_INVALID_ADDRESS;                                                         
    40023ebc:   52800120    mov w0, #0x9                    // #9                         
}                                                                                         
    40023ec0:   d65f03c0    ret                                                           
    40023ec4:   94000063    bl  40024050 <_RTEMS_Unlock_allocator>                        
    return RTEMS_INVALID_ID;                                                              
    40023ec8:   52800080    mov w0, #0x4                    // #4                         
    40023ecc:   17ffffed    b   40023e80 <rtems_object_set_name+0x60>                     
                                                                                          

000000004002f660 <rtems_partition_create>: {
    4002f660:   a9b97bfd    stp x29, x30, [sp, #-112]!                                    
    4002f664:   910003fd    mov x29, sp                                                   
    4002f668:   b9004fe4    str w4, [sp, #76]                                             
  if ( !rtems_is_name_valid( name ) ) {                                                   
    4002f66c:   340007a0    cbz w0, 4002f760 <rtems_partition_create+0x100>               
  if ( starting_address == NULL ) {                                                       
    4002f670:   a90263f7    stp x23, x24, [sp, #32]                                       
    4002f674:   f10000bf    cmp x5, #0x0                                                  
    4002f678:   aa0503f7    mov x23, x5                                                   
    4002f67c:   fa401824    ccmp    x1, #0x0, #0x4, ne  // ne = any                       
    4002f680:   54000760    b.eq    4002f76c <rtems_partition_create+0x10c>  // b.none    
  if ( length < buffer_size )                                                             
    4002f684:   f100005f    cmp x2, #0x0                                                  
    4002f688:   a9015bf4    stp x20, x22, [sp, #16]                                       
    4002f68c:   fa4f1860    ccmp    x3, #0xf, #0x0, ne  // ne = any                       
    4002f690:   a9036bf9    stp x25, x26, [sp, #48]                                       
    4002f694:   fa438040    ccmp    x2, x3, #0x0, hi  // hi = pmore                       
    4002f698:   2a0003f6    mov w22, w0                                                   
    4002f69c:   aa0203f4    mov x20, x2                                                   
    4002f6a0:   1a9f27f9    cset    w25, cc  // cc = lo, ul, last                         
    return RTEMS_INVALID_SIZE;                                                            
    4002f6a4:   52800100    mov w0, #0x8                    // #8                         
  if ( length < buffer_size )                                                             
    4002f6a8:   540000c2    b.cs    4002f6c0 <rtems_partition_create+0x60>  // b.hs, b.nlast
    4002f6ac:   a9415bf4    ldp x20, x22, [sp, #16]                                       
    4002f6b0:   a94263f7    ldp x23, x24, [sp, #32]                                       
    4002f6b4:   a9436bf9    ldp x25, x26, [sp, #48]                                       
}                                                                                         
    4002f6b8:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    4002f6bc:   d65f03c0    ret                                                           
  if ( buffer_size < sizeof( Chain_Node ) )                                               
    4002f6c0:   f9002be3    str x3, [sp, #80]                                             
    4002f6c4:   f240087f    tst x3, #0x7                                                  
    4002f6c8:   54ffff21    b.ne    4002f6ac <rtems_partition_create+0x4c>  // b.any      <== NEVER TAKEN
  if ( (uintptr_t) starting_address % CPU_SIZEOF_POINTER != 0 ) {                         
    4002f6cc:   f9002fe1    str x1, [sp, #88]                                             
    4002f6d0:   f240083f    tst x1, #0x7                                                  
    return RTEMS_INVALID_ADDRESS;                                                         
    4002f6d4:   52800120    mov w0, #0x9                    // #9                         
  if ( (uintptr_t) starting_address % CPU_SIZEOF_POINTER != 0 ) {                         
    4002f6d8:   54fffea1    b.ne    4002f6ac <rtems_partition_create+0x4c>  // b.any      
  return (Partition_Control *) _Objects_Allocate( &_Partition_Information );              
    4002f6dc:   b000069a    adrp    x26, 40100000 <_Barrier_Information>                  
    4002f6e0:   9105835a    add x26, x26, #0x160                                          
    4002f6e4:   aa1a03e0    mov x0, x26                                                   
    4002f6e8:   94000a76    bl  400320c0 <_Objects_Allocate>                              
  if ( !the_partition ) {                                                                 
    4002f6ec:   b9404fe4    ldr w4, [sp, #76]                                             
  return (Partition_Control *) _Objects_Allocate( &_Partition_Information );              
    4002f6f0:   aa0003f8    mov x24, x0                                                   
  if ( !the_partition ) {                                                                 
    4002f6f4:   a94507e3    ldp x3, x1, [sp, #80]                                         
    4002f6f8:   b4000420    cbz x0, 4002f77c <rtems_partition_create+0x11c>               
  _Chain_Initialize(                                                                      
    4002f6fc:   9ac30a82    udiv    x2, x20, x3                                           
  the_partition->length                = length;                                          
    4002f700:   a9025301    stp x1, x20, [x24, #32]                                       
  _Chain_Initialize(                                                                      
    4002f704:   91012000    add x0, x0, #0x48                                             
  the_partition->buffer_size           = buffer_size;                                     
    4002f708:   f9001b03    str x3, [x24, #48]                                            
  the_partition->attribute_set         = attribute_set;                                   
    4002f70c:   b9003b04    str w4, [x24, #56]                                            
  the_partition->number_of_used_blocks = 0;                                               
    4002f710:   f900231f    str xzr, [x24, #64]                                           
  _Chain_Initialize(                                                                      
    4002f714:   94000363    bl  400304a0 <_Chain_Initialize>                              
  _Objects_Open(                                                                          
    4002f718:   b90063ff    str wzr, [sp, #96]                                            
    4002f71c:   d2800001    mov x1, #0x0                    // #0                         
    _Objects_Get_index( the_object->id ),                                                 
    4002f720:   b9401302    ldr w2, [x24, #16]                                            
    4002f724:   b3607f21    bfi x1, x25, #32, #32                                         
  information->local_table[ index - OBJECTS_INDEX_MINIMUM ] = the_object;                 
    4002f728:   f9400743    ldr x3, [x26, #8]                                             
    4002f72c:   12003c40    and w0, w2, #0xffff                                           
    4002f730:   51000400    sub w0, w0, #0x1                                              
    4002f734:   b3407ec1    bfxil   x1, x22, #0, #32                                      
  the_object->name = name;                                                                
    4002f738:   f9000f01    str x1, [x24, #24]                                            
  information->local_table[ index - OBJECTS_INDEX_MINIMUM ] = the_object;                 
    4002f73c:   f8207878    str x24, [x3, x0, lsl #3]                                     
  *id = the_partition->Object.id;                                                         
    4002f740:   b90002e2    str w2, [x23]                                                 
  _RTEMS_Unlock_allocator();                                                              
    4002f744:   94000333    bl  40030410 <_RTEMS_Unlock_allocator>                        
  return RTEMS_SUCCESSFUL;                                                                
    4002f748:   52800000    mov w0, #0x0                    // #0                         
    4002f74c:   a9415bf4    ldp x20, x22, [sp, #16]                                       
    4002f750:   a94263f7    ldp x23, x24, [sp, #32]                                       
    4002f754:   a9436bf9    ldp x25, x26, [sp, #48]                                       
}                                                                                         
    4002f758:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    4002f75c:   d65f03c0    ret                                                           
    return RTEMS_INVALID_NAME;                                                            
    4002f760:   52800060    mov w0, #0x3                    // #3                         
}                                                                                         
    4002f764:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    4002f768:   d65f03c0    ret                                                           
    return RTEMS_INVALID_ADDRESS;                                                         
    4002f76c:   52800120    mov w0, #0x9                    // #9                         
    4002f770:   a94263f7    ldp x23, x24, [sp, #32]                                       
}                                                                                         
    4002f774:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    4002f778:   d65f03c0    ret                                                           
    4002f77c:   94000325    bl  40030410 <_RTEMS_Unlock_allocator>                        
    return RTEMS_TOO_MANY;                                                                
    4002f780:   528000a0    mov w0, #0x5                    // #5                         
    4002f784:   a9415bf4    ldp x20, x22, [sp, #16]                                       
    4002f788:   a94263f7    ldp x23, x24, [sp, #32]                                       
    4002f78c:   a9436bf9    ldp x25, x26, [sp, #48]                                       
    4002f790:   17ffffca    b   4002f6b8 <rtems_partition_create+0x58>                    
    ...                                                                                   
                                                                                          

0000000040024cb0 <rtems_rate_monotonic_report_statistics_with_plugin>: #define NANOSECONDS_FMT "%06ld" void rtems_rate_monotonic_report_statistics_with_plugin( const rtems_printer *printer ) {
    40024cb0:   a9b17bfd    stp x29, x30, [sp, #-240]!                                    
  rtems_id                               id;                                              
  rtems_rate_monotonic_period_statistics the_stats;                                       
  rtems_rate_monotonic_period_status     the_status;                                      
  char                                   name[5];                                         
                                                                                          
  rtems_printf( printer, "Period information by period\n" );                              
    40024cb4:   b00000a1    adrp    x1, 40039000 <rtems_test_name+0x228>                  
    40024cb8:   91178021    add x1, x1, #0x5e0                                            
{                                                                                         
    40024cbc:   910003fd    mov x29, sp                                                   
    40024cc0:   a90153f3    stp x19, x20, [sp, #16]                                       
    40024cc4:   a9025bf5    stp x21, x22, [sp, #32]                                       
    40024cc8:   aa0003f5    mov x21, x0                                                   
  rtems_printf( printer, "Period information by period\n" );                              
    40024ccc:   94001111    bl  40029110 <rtems_printf>                                   
  rtems_printf( printer, "--- CPU times are in seconds ---\n" );                          
    40024cd0:   aa1503e0    mov x0, x21                                                   
    40024cd4:   b00000a1    adrp    x1, 40039000 <rtems_test_name+0x228>                  
    40024cd8:   91180021    add x1, x1, #0x600                                            
    40024cdc:   9400110d    bl  40029110 <rtems_printf>                                   
  rtems_printf( printer, "--- Wall times are in seconds ---\n" );                         
    40024ce0:   aa1503e0    mov x0, x21                                                   
    40024ce4:   b00000a1    adrp    x1, 40039000 <rtems_test_name+0x228>                  
    40024ce8:   9118a021    add x1, x1, #0x628                                            
    40024cec:   94001109    bl  40029110 <rtems_printf>                                   
  Be sure to test the various cases.                                                      
  (*print)( context,"\                                                                    
1234567890123456789012345678901234567890123456789012345678901234567890123456789\          
\n");                                                                                     
*/                                                                                        
  rtems_printf( printer,                                                                  
    40024cf0:   aa1503e0    mov x0, x21                                                   
    40024cf4:   b00000a1    adrp    x1, 40039000 <rtems_test_name+0x228>                  
    40024cf8:   91194021    add x1, x1, #0x650                                            
    40024cfc:   94001105    bl  40029110 <rtems_printf>                                   
                                                                                          
  /*                                                                                      
   * Cycle through all possible ids and try to report on each one.  If it                 
   * is a period that is inactive, we just get an error back.  No big deal.               
   */                                                                                     
  maximum_id = _Rate_monotonic_Information.maximum_id;                                    
    40024d00:   900006e0    adrp    x0, 40100000 <_RTEMS_tasks_Information>               
    40024d04:   b9407016    ldr w22, [x0, #112]                                           
  id &= ~OBJECTS_INDEX_MASK;                                                              
    40024d08:   12103ed3    and w19, w22, #0xffff0000                                     
  id += (Objects_Id) OBJECTS_INDEX_MINIMUM << OBJECTS_INDEX_START_BIT;                    
    40024d0c:   11000673    add w19, w19, #0x1                                            
  for (                                                                                   
    40024d10:   6b1302df    cmp w22, w19                                                  
    40024d14:   54000a03    b.cc    40024e54 <rtems_rate_monotonic_report_statistics_with_plugin+0x1a4>  // b.lo, b.ul, b.last<== NEVER TAKEN
      struct timespec *min_cpu = &the_stats.min_cpu_time;                                 
      struct timespec *max_cpu = &the_stats.max_cpu_time;                                 
      struct timespec *total_cpu = &the_stats.total_cpu_time;                             
                                                                                          
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );            
      rtems_printf( printer,                                                              
    40024d18:   d29ef9f4    mov x20, #0xf7cf                    // #63439                 
    40024d1c:   f2bc6a74    movk    x20, #0xe353, lsl #16                                 
    40024d20:   f2d374b4    movk    x20, #0x9ba5, lsl #32                                 
    40024d24:   f2e41894    movk    x20, #0x20c4, lsl #48                                 
    40024d28:   a90363f7    stp x23, x24, [sp, #48]                                       
    rtems_printf( printer,                                                                
    40024d2c:   b00000b7    adrp    x23, 40039000 <rtems_test_name+0x228>                 
    40024d30:   911ba2f7    add x23, x23, #0x6e8                                          
      rtems_printf( printer,                                                              
    40024d34:   b00000b8    adrp    x24, 40039000 <rtems_test_name+0x228>                 
    40024d38:   911c0318    add x24, x24, #0x700                                          
    40024d3c:   14000028    b   40024ddc <rtems_rate_monotonic_report_statistics_with_plugin+0x12c>
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );            
    40024d40:   94000d18    bl  400281a0 <_Timespec_Divide_by_integer>                    
      rtems_printf( printer,                                                              
    40024d44:   a944abe6    ldp x6, x10, [sp, #72]                                        
    40024d48:   aa1803e1    mov x1, x24                                                   
    40024d4c:   a94923e2    ldp x2, x8, [sp, #144]                                        
    40024d50:   aa1503e0    mov x0, x21                                                   
    40024d54:   a94a27e4    ldp x4, x9, [sp, #160]                                        
    40024d58:   9b547d47    smulh   x7, x10, x20                                          
    40024d5c:   9b547d03    smulh   x3, x8, x20                                           
    40024d60:   9347fce7    asr x7, x7, #7                                                
    40024d64:   9b547d25    smulh   x5, x9, x20                                           
    40024d68:   cb8afce7    sub x7, x7, x10, asr #63                                      
    40024d6c:   9347fc63    asr x3, x3, #7                                                
    40024d70:   cb88fc63    sub x3, x3, x8, asr #63                                       
    40024d74:   9347fca5    asr x5, x5, #7                                                
    40024d78:   cb89fca5    sub x5, x5, x9, asr #63                                       
    40024d7c:   940010e5    bl  40029110 <rtems_printf>                                   
      struct timespec  wall_average;                                                      
      struct timespec *min_wall = &the_stats.min_wall_time;                               
      struct timespec *max_wall = &the_stats.max_wall_time;                               
      struct timespec *total_wall = &the_stats.total_wall_time;                           
                                                                                          
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);            
    40024d80:   b9408be1    ldr w1, [sp, #136]                                            
    40024d84:   910123e2    add x2, sp, #0x48                                             
    40024d88:   910383e0    add x0, sp, #0xe0                                             
    40024d8c:   94000d05    bl  400281a0 <_Timespec_Divide_by_integer>                    
      rtems_printf( printer,                                                              
    40024d90:   a944abe6    ldp x6, x10, [sp, #72]                                        
    40024d94:   b00000a1    adrp    x1, 40039000 <rtems_test_name+0x228>                  
    40024d98:   911c8021    add x1, x1, #0x720                                            
    40024d9c:   aa1503e0    mov x0, x21                                                   
    40024da0:   a94c23e2    ldp x2, x8, [sp, #192]                                        
    40024da4:   a94d27e4    ldp x4, x9, [sp, #208]                                        
    40024da8:   9b547d47    smulh   x7, x10, x20                                          
    40024dac:   9b547d03    smulh   x3, x8, x20                                           
    40024db0:   9347fce7    asr x7, x7, #7                                                
    40024db4:   cb8afce7    sub x7, x7, x10, asr #63                                      
    40024db8:   9b547d25    smulh   x5, x9, x20                                           
    40024dbc:   9347fc63    asr x3, x3, #7                                                
    40024dc0:   cb88fc63    sub x3, x3, x8, asr #63                                       
    40024dc4:   9347fca5    asr x5, x5, #7                                                
    40024dc8:   cb89fca5    sub x5, x5, x9, asr #63                                       
    40024dcc:   940010d1    bl  40029110 <rtems_printf>                                   
    ++id                                                                                  
    40024dd0:   11000673    add w19, w19, #0x1                                            
  for (                                                                                   
    40024dd4:   6b1302df    cmp w22, w19                                                  
    40024dd8:   540003c3    b.cc    40024e50 <rtems_rate_monotonic_report_statistics_with_plugin+0x1a0>  // b.lo, b.ul, b.last
    status = rtems_rate_monotonic_get_statistics( id, &the_stats );                       
    40024ddc:   910223e1    add x1, sp, #0x88                                             
    40024de0:   2a1303e0    mov w0, w19                                                   
    40024de4:   94001327    bl  40029a80 <rtems_rate_monotonic_get_statistics>            
    40024de8:   2a0003e2    mov w2, w0                                                    
      (void) rtems_rate_monotonic_get_status( id, &the_status );                          
    40024dec:   910163e1    add x1, sp, #0x58                                             
    40024df0:   2a1303e0    mov w0, w19                                                   
    if ( status != RTEMS_SUCCESSFUL )                                                     
    40024df4:   35fffee2    cbnz    w2, 40024dd0 <rtems_rate_monotonic_report_statistics_with_plugin+0x120>
      (void) rtems_rate_monotonic_get_status( id, &the_status );                          
    40024df8:   9400135e    bl  40029b70 <rtems_rate_monotonic_get_status>                
    rtems_object_get_name( the_status.owner, sizeof(name), name );                        
    40024dfc:   b9405be0    ldr w0, [sp, #88]                                             
    40024e00:   910103e2    add x2, sp, #0x40                                             
    40024e04:   d28000a1    mov x1, #0x5                    // #5                         
    40024e08:   94000092    bl  40025050 <rtems_object_get_name>                          
    rtems_printf( printer,                                                                
    40024e0c:   295117e4    ldp w4, w5, [sp, #136]                                        
    40024e10:   2a1303e2    mov w2, w19                                                   
    40024e14:   aa1703e1    mov x1, x23                                                   
    40024e18:   910103e3    add x3, sp, #0x40                                             
    40024e1c:   aa1503e0    mov x0, x21                                                   
    40024e20:   940010bc    bl  40029110 <rtems_printf>                                   
    if (the_stats.count == 0) {                                                           
    40024e24:   b9408be1    ldr w1, [sp, #136]                                            
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );            
    40024e28:   910123e2    add x2, sp, #0x48                                             
    40024e2c:   9102c3e0    add x0, sp, #0xb0                                             
    if (the_stats.count == 0) {                                                           
    40024e30:   35fff881    cbnz    w1, 40024d40 <rtems_rate_monotonic_report_statistics_with_plugin+0x90>
      rtems_printf( printer, "\n" );                                                      
    40024e34:   aa1503e0    mov x0, x21                                                   
    ++id                                                                                  
    40024e38:   11000673    add w19, w19, #0x1                                            
      rtems_printf( printer, "\n" );                                                      
    40024e3c:   d00000a1    adrp    x1, 4003a000 <_Memory_Information+0x38>               
    40024e40:   91038021    add x1, x1, #0xe0                                             
    40024e44:   940010b3    bl  40029110 <rtems_printf>                                   
  for (                                                                                   
    40024e48:   6b1302df    cmp w22, w19                                                  
    40024e4c:   54fffc82    b.cs    40024ddc <rtems_rate_monotonic_report_statistics_with_plugin+0x12c>  // b.hs, b.nlast<== ALWAYS TAKEN
    40024e50:   a94363f7    ldp x23, x24, [sp, #48]                                       
        _Timespec_Get_seconds( &wall_average ),                                           
          _Timespec_Get_nanoseconds( &wall_average ) / NANOSECONDS_DIVIDER                
      );                                                                                  
    }                                                                                     
  }                                                                                       
}                                                                                         
    40024e54:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40024e58:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40024e5c:   a8cf7bfd    ldp x29, x30, [sp], #240                                      
    40024e60:   d65f03c0    ret                                                           
    ...                                                                                   
                                                                                          

0000000040024e90 <rtems_rate_monotonic_reset_all_statistics>: /* * rtems_rate_monotonic_reset_all_statistics */ void rtems_rate_monotonic_reset_all_statistics( void ) {
    40024e90:   a9be7bfd    stp x29, x30, [sp, #-32]!                                     
    40024e94:   910003fd    mov x29, sp                                                   
    40024e98:   a90153f3    stp x19, x20, [sp, #16]                                       
  _RTEMS_Lock_allocator();                                                                
    40024e9c:   940001b9    bl  40025580 <_RTEMS_Lock_allocator>                          
                                                                                          
    /*                                                                                    
     * Cycle through all possible ids and try to reset each one.  If it                   
     * is a period that is inactive, we just get an error back.  No big deal.             
     */                                                                                   
    maximum_id = _Rate_monotonic_Information.maximum_id;                                  
    40024ea0:   900006e0    adrp    x0, 40100000 <_RTEMS_tasks_Information>               
    40024ea4:   b9407014    ldr w20, [x0, #112]                                           
  id &= ~OBJECTS_INDEX_MASK;                                                              
    40024ea8:   12103e93    and w19, w20, #0xffff0000                                     
  id += (Objects_Id) OBJECTS_INDEX_MINIMUM << OBJECTS_INDEX_START_BIT;                    
    40024eac:   11000673    add w19, w19, #0x1                                            
    for (                                                                                 
    40024eb0:   6b13029f    cmp w20, w19                                                  
    40024eb4:   540000c3    b.cc    40024ecc <rtems_rate_monotonic_reset_all_statistics+0x3c>  // b.lo, b.ul, b.last<== NEVER TAKEN
      id = _Objects_Get_minimum_id( maximum_id ) ;                                        
      id <= maximum_id ;                                                                  
      ++id                                                                                
    ) {                                                                                   
      (void) rtems_rate_monotonic_reset_statistics( id );                                 
    40024eb8:   2a1303e0    mov w0, w19                                                   
      ++id                                                                                
    40024ebc:   11000673    add w19, w19, #0x1                                            
      (void) rtems_rate_monotonic_reset_statistics( id );                                 
    40024ec0:   94000008    bl  40024ee0 <rtems_rate_monotonic_reset_statistics>          
    for (                                                                                 
    40024ec4:   6b13029f    cmp w20, w19                                                  
    40024ec8:   54ffff82    b.cs    40024eb8 <rtems_rate_monotonic_reset_all_statistics+0x28>  // b.hs, b.nlast
    }                                                                                     
                                                                                          
  _Objects_Allocator_unlock();                                                            
}                                                                                         
    40024ecc:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40024ed0:   a8c27bfd    ldp x29, x30, [sp], #32                                       
  _RTEMS_Unlock_allocator();                                                              
    40024ed4:   140001af    b   40025590 <_RTEMS_Unlock_allocator>                        
    ...                                                                                   
                                                                                          

0000000040026390 <rtems_scheduler_ident_by_processor_set>: rtems_status_code rtems_scheduler_ident_by_processor_set( size_t cpusetsize, const cpu_set_t *cpuset, rtems_id *id ) {
    40026390:   a9bd7bfd    stp x29, x30, [sp, #-48]!                                     
    40026394:   910003fd    mov x29, sp                                                   
    40026398:   a90153f3    stp x19, x20, [sp, #16]                                       
  Processor_mask              set;                                                        
  Processor_mask_Copy_status  status;                                                     
  uint32_t                    cpu_index;                                                  
  const Scheduler_Control    *scheduler;                                                  
                                                                                          
  if ( id == NULL ) {                                                                     
    4002639c:   b4000322    cbz x2, 40026400 <rtems_scheduler_ident_by_processor_set+0x70>
    return RTEMS_INVALID_ADDRESS;                                                         
  }                                                                                       
                                                                                          
  status = _Processor_mask_From_cpu_set_t( &set, cpusetsize, cpuset );                    
    400263a0:   aa0003e3    mov x3, x0                                                    
  Processor_mask  *dst,                                                                   
  size_t           src_size,                                                              
  const cpu_set_t *src                                                                    
)                                                                                         
{                                                                                         
  return _Processor_mask_Copy(                                                            
    400263a4:   aa0203f3    mov x19, x2                                                   
    400263a8:   9100a3e0    add x0, sp, #0x28                                             
    400263ac:   aa0103e2    mov x2, x1                                                    
    400263b0:   d2800101    mov x1, #0x8                    // #8                         
    400263b4:   94000823    bl  40028440 <_Processor_mask_Copy>                           
  if ( status == PROCESSOR_MASK_COPY_INVALID_SIZE ) {                                     
    400263b8:   71000c1f    cmp w0, #0x3                                                  
    400263bc:   540002c0    b.eq    40026414 <rtems_scheduler_ident_by_processor_set+0x84>  // b.none
  BIT_AND2( CPU_MAXIMUM_PROCESSORS, a, b, c );                                            
    400263c0:   900000a0    adrp    x0, 4003a000 <_User_extensions_Initial_extensions+0xc0>
    400263c4:   f9434400    ldr x0, [x0, #1672]                                           
  }                                                                                       
                                                                                          
  _Processor_mask_And( &set, &set, _SMP_Get_online_processors() );                        
  cpu_index = _Processor_mask_Find_last_set( &set );                                      
  if ( cpu_index == 0 ) {                                                                 
    return RTEMS_INVALID_NAME;                                                            
    400263c8:   52800074    mov w20, #0x3                       // #3                     
    400263cc:   f94017e1    ldr x1, [sp, #40]                                             
  return (uint32_t) BIT_FLS( CPU_MAXIMUM_PROCESSORS, a );                                 
    400263d0:   ea010000    ands    x0, x0, x1                                            
    400263d4:   540000e0    b.eq    400263f0 <rtems_scheduler_ident_by_processor_set+0x60>  // b.none
    400263d8:   94002f0c    bl  40032008 <flsl>                                           
  if ( cpu_index == 0 ) {                                                                 
    400263dc:   340000a0    cbz w0, 400263f0 <rtems_scheduler_ident_by_processor_set+0x60><== NEVER TAKEN
  }                                                                                       
#else                                                                                     
  _Assert( scheduler != NULL );                                                           
#endif                                                                                    
                                                                                          
  *id = _Scheduler_Build_id( _Scheduler_Get_index( scheduler ) );                         
    400263e0:   52800020    mov w0, #0x1                    // #1                         
    400263e4:   72a1e020    movk    w0, #0xf01, lsl #16                                   
  return RTEMS_SUCCESSFUL;                                                                
    400263e8:   52800014    mov w20, #0x0                       // #0                     
  *id = _Scheduler_Build_id( _Scheduler_Get_index( scheduler ) );                         
    400263ec:   b9000260    str w0, [x19]                                                 
}                                                                                         
    400263f0:   2a1403e0    mov w0, w20                                                   
    400263f4:   a94153f3    ldp x19, x20, [sp, #16]                                       
    400263f8:   a8c37bfd    ldp x29, x30, [sp], #48                                       
    400263fc:   d65f03c0    ret                                                           
    return RTEMS_INVALID_ADDRESS;                                                         
    40026400:   52800134    mov w20, #0x9                       // #9                     
}                                                                                         
    40026404:   2a1403e0    mov w0, w20                                                   
    40026408:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002640c:   a8c37bfd    ldp x29, x30, [sp], #48                                       
    40026410:   d65f03c0    ret                                                           
    return RTEMS_INVALID_SIZE;                                                            
    40026414:   52800114    mov w20, #0x8                       // #8                     
}                                                                                         
    40026418:   2a1403e0    mov w0, w20                                                   
    4002641c:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40026420:   a8c37bfd    ldp x29, x30, [sp], #48                                       
    40026424:   d65f03c0    ret                                                           
    ...                                                                                   
                                                                                          

000000004002a0f0 <rtems_semaphore_obtain>: rtems_status_code rtems_semaphore_obtain( rtems_id id, rtems_option option_set, rtems_interval timeout ) {
    4002a0f0:   a9b97bfd    stp x29, x30, [sp, #-112]!                                    
    4002a0f4:   910003fd    mov x29, sp                                                   
    4002a0f8:   a90153f3    stp x19, x20, [sp, #16]                                       
    4002a0fc:   2a0103f3    mov w19, w1                                                   
  Objects_Id            id,                                                               
  Thread_queue_Context *queue_context                                                     
)                                                                                         
{                                                                                         
  _Thread_queue_Context_initialize( queue_context );                                      
  return (Semaphore_Control *) _Objects_Get(                                              
    4002a100:   9100c3e1    add x1, sp, #0x30                                             
    4002a104:   f90013f5    str x21, [sp, #32]                                            
    4002a108:   2a0203f5    mov w21, w2                                                   
    4002a10c:   d00006a2    adrp    x2, 40100000 <_RTEMS_tasks_Information>               
    4002a110:   9101c042    add x2, x2, #0x70                                             
    4002a114:   940006d3    bl  4002bc60 <_Objects_Get>                                   
  Semaphore_Variant     variant;                                                          
  Status_Control        status;                                                           
                                                                                          
  the_semaphore = _Semaphore_Get( id, &queue_context );                                   
                                                                                          
  if ( the_semaphore == NULL ) {                                                          
    4002a118:   b4000da0    cbz x0, 4002a2cc <rtems_semaphore_obtain+0x1dc>               
    4002a11c:   d00006d4    adrp    x20, 40104000 <_RTEMS_tasks_Objects+0x1b10>           
    4002a120:   913d0294    add x20, x20, #0xf40                                          
 */                                                                                       
RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait (                                           
  rtems_option option_set                                                                 
)                                                                                         
{                                                                                         
   return (option_set & RTEMS_NO_WAIT) ? true : false;                                    
    4002a124:   12000261    and w1, w19, #0x1                                             
    return RTEMS_INVALID_ID;                                                              
#endif                                                                                    
  }                                                                                       
                                                                                          
  executing = _Thread_Executing;                                                          
  wait = !_Options_Is_no_wait( option_set );                                              
    4002a128:   52000023    eor w3, w1, #0x1                                              
    4002a12c:   f9401293    ldr x19, [x20, #32]                                           
                                                                                          
  if ( wait ) {                                                                           
    4002a130:   340003a1    cbz w1, 4002a1a4 <rtems_semaphore_obtain+0xb4>                
  queue_context->enqueue_callout = _Thread_queue_Enqueue_do_nothing_extra;                
    4002a134:   d0000001    adrp    x1, 4002c000 <_Scheduler_priority_Block+0x90>         
    4002a138:   913a8021    add x1, x1, #0xea0                                            
    4002a13c:   f9001fe1    str x1, [sp, #56]                                             
  flags = _Semaphore_Get_flags( the_semaphore );                                          
  variant = _Semaphore_Get_variant( flags );                                              
                                                                                          
  switch ( variant ) {                                                                    
    case SEMAPHORE_VARIANT_MUTEX_INHERIT_PRIORITY:                                        
      status = _CORE_recursive_mutex_Seize(                                               
    4002a140:   91008005    add x5, x0, #0x20                                             
  return (uintptr_t) the_semaphore->Object.Node.previous;                                 
    4002a144:   f9400401    ldr x1, [x0, #8]                                              
  return (Semaphore_Discipline) ( flags & 0x7 );                                          
    4002a148:   12000820    and w0, w1, #0x7                                              
  switch ( variant ) {                                                                    
    4002a14c:   7100041f    cmp w0, #0x1                                                  
    4002a150:   540003c0    b.eq    4002a1c8 <rtems_semaphore_obtain+0xd8>  // b.none     
    4002a154:   7100081f    cmp w0, #0x2                                                  
    4002a158:   54000740    b.eq    4002a240 <rtems_semaphore_obtain+0x150>  // b.none    
    4002a15c:   34000540    cbz w0, 4002a204 <rtems_semaphore_obtain+0x114>               
)                                                                                         
{                                                                                         
  _Assert( _ISR_Get_level() != 0 );                                                       
                                                                                          
  _CORE_semaphore_Acquire_critical( the_semaphore, queue_context );                       
  if ( the_semaphore->count != 0 ) {                                                      
    4002a160:   b94018a2    ldr w2, [x5, #24]                                             
  return &_Thread_queue_Operations_FIFO;                                                  
    4002a164:   721d003f    tst w1, #0x8                                                  
    4002a168:   f0000081    adrp    x1, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a16c:   91360020    add x0, x1, #0xd80                                            
    4002a170:   f0000081    adrp    x1, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a174:   91374021    add x1, x1, #0xdd0                                            
    4002a178:   9a800021    csel    x1, x1, x0, eq  // eq = none                          
    4002a17c:   350009c2    cbnz    w2, 4002a2b4 <rtems_semaphore_obtain+0x1c4>           
    the_semaphore->count -= 1;                                                            
    _CORE_semaphore_Release( the_semaphore, queue_context );                              
    return STATUS_SUCCESSFUL;                                                             
  }                                                                                       
                                                                                          
  if ( !wait ) {                                                                          
    4002a180:   34000bc3    cbz w3, 4002a2f8 <rtems_semaphore_obtain+0x208>               
  queue_context->thread_state = thread_state;                                             
    4002a184:   52800044    mov w4, #0x2                    // #2                         
                                                                                          
  _Thread_queue_Context_set_thread_state(                                                 
    queue_context,                                                                        
    STATES_WAITING_FOR_SEMAPHORE                                                          
  );                                                                                      
  _Thread_queue_Enqueue(                                                                  
    4002a188:   aa0503e0    mov x0, x5                                                    
    4002a18c:   9100c3e3    add x3, sp, #0x30                                             
    4002a190:   aa1303e2    mov x2, x19                                                   
    4002a194:   b90037e4    str w4, [sp, #52]                                             
    4002a198:   94000b4e    bl  4002ced0 <_Thread_queue_Enqueue>                          
    4002a19c:   39423260    ldrb    w0, [x19, #140]                                       
        &queue_context                                                                    
      );                                                                                  
      break;                                                                              
  }                                                                                       
                                                                                          
  return _Status_Get( status );                                                           
    4002a1a0:   14000037    b   4002a27c <rtems_semaphore_obtain+0x18c>                   
  queue_context->enqueue_callout = _Thread_queue_Add_timeout_ticks;                       
    4002a1a4:   f0000001    adrp    x1, 4002d000 <_Thread_queue_Enqueue+0x130>            
    4002a1a8:   9135c021    add x1, x1, #0xd70                                            
    4002a1ac:   f9001fe1    str x1, [sp, #56]                                             
      status = _CORE_recursive_mutex_Seize(                                               
    4002a1b0:   91008005    add x5, x0, #0x20                                             
  return (uintptr_t) the_semaphore->Object.Node.previous;                                 
    4002a1b4:   f9400401    ldr x1, [x0, #8]                                              
  queue_context->Timeout.ticks = ticks;                                                   
    4002a1b8:   b90043f5    str w21, [sp, #64]                                            
  return (Semaphore_Discipline) ( flags & 0x7 );                                          
    4002a1bc:   12000820    and w0, w1, #0x7                                              
  switch ( variant ) {                                                                    
    4002a1c0:   7100041f    cmp w0, #0x1                                                  
    4002a1c4:   54fffc81    b.ne    4002a154 <rtems_semaphore_obtain+0x64>  // b.any      
  return the_mutex->Wait_queue.Queue.owner;                                               
    4002a1c8:   f94004a0    ldr x0, [x5, #8]                                              
                                                                                          
  _CORE_mutex_Acquire_critical( &the_mutex->Recursive.Mutex, queue_context );             
                                                                                          
  owner = _CORE_mutex_Get_owner( &the_mutex->Recursive.Mutex );                           
                                                                                          
  if ( owner == NULL ) {                                                                  
    4002a1cc:   b4000b00    cbz x0, 4002a32c <rtems_semaphore_obtain+0x23c>               
      executing,                                                                          
      queue_context                                                                       
    );                                                                                    
  }                                                                                       
                                                                                          
  if ( owner == executing ) {                                                             
    4002a1d0:   eb00027f    cmp x19, x0                                                   
    4002a1d4:   540005c0    b.eq    4002a28c <rtems_semaphore_obtain+0x19c>  // b.none    <== NEVER TAKEN
    status = ( *nested )( &the_mutex->Recursive );                                        
    _CORE_mutex_Release( &the_mutex->Recursive.Mutex, queue_context );                    
    return status;                                                                        
  }                                                                                       
                                                                                          
  return _CORE_mutex_Seize_slow(                                                          
    4002a1d8:   9100c3e4    add x4, sp, #0x30                                             
    4002a1dc:   aa1303e2    mov x2, x19                                                   
    4002a1e0:   aa0503e0    mov x0, x5                                                    
    4002a1e4:   f0000081    adrp    x1, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a1e8:   91374021    add x1, x1, #0xdd0                                            
    4002a1ec:   94000321    bl  4002ae70 <_CORE_mutex_Seize_slow>                         
    4002a1f0:   12001c00    and w0, w0, #0xff                                             
}                                                                                         
    4002a1f4:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a1f8:   f94013f5    ldr x21, [sp, #32]                                            
    4002a1fc:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    4002a200:   d65f03c0    ret                                                           
  return the_mutex->Wait_queue.Queue.owner;                                               
    4002a204:   f94004a1    ldr x1, [x5, #8]                                              
  if ( owner == NULL ) {                                                                  
    4002a208:   b40008a1    cbz x1, 4002a31c <rtems_semaphore_obtain+0x22c>               
  if ( owner == executing ) {                                                             
    4002a20c:   eb01027f    cmp x19, x1                                                   
    4002a210:   54000680    b.eq    4002a2e0 <rtems_semaphore_obtain+0x1f0>  // b.none    
  return _CORE_mutex_Seize_slow(                                                          
    4002a214:   9100c3e4    add x4, sp, #0x30                                             
    4002a218:   aa1303e2    mov x2, x19                                                   
    4002a21c:   aa0503e0    mov x0, x5                                                    
    4002a220:   f0000081    adrp    x1, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a224:   9137e021    add x1, x1, #0xdf8                                            
    4002a228:   94000312    bl  4002ae70 <_CORE_mutex_Seize_slow>                         
    4002a22c:   12001c00    and w0, w0, #0xff                                             
    4002a230:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a234:   f94013f5    ldr x21, [sp, #32]                                            
    4002a238:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    4002a23c:   d65f03c0    ret                                                           
  return the_mutex->Wait_queue.Queue.owner;                                               
    4002a240:   f94004a2    ldr x2, [x5, #8]                                              
    return &_Thread_queue_Operations_priority;                                            
    4002a244:   721d003f    tst w1, #0x8                                                  
    4002a248:   f0000081    adrp    x1, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a24c:   91374020    add x0, x1, #0xdd0                                            
    4002a250:   f0000081    adrp    x1, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a254:   91360021    add x1, x1, #0xd80                                            
    4002a258:   9a801021    csel    x1, x1, x0, ne  // ne = any                           
  if ( owner == NULL ) {                                                                  
    4002a25c:   b4000562    cbz x2, 4002a308 <rtems_semaphore_obtain+0x218>               
  if ( owner == executing ) {                                                             
    4002a260:   eb02027f    cmp x19, x2                                                   
    4002a264:   54000140    b.eq    4002a28c <rtems_semaphore_obtain+0x19c>  // b.none    
  return _CORE_mutex_Seize_slow(                                                          
    4002a268:   9100c3e4    add x4, sp, #0x30                                             
    4002a26c:   aa1303e2    mov x2, x19                                                   
    4002a270:   aa0503e0    mov x0, x5                                                    
    4002a274:   940002ff    bl  4002ae70 <_CORE_mutex_Seize_slow>                         
    4002a278:   12001c00    and w0, w0, #0xff                                             
    4002a27c:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a280:   f94013f5    ldr x21, [sp, #32]                                            
    4002a284:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    4002a288:   d65f03c0    ret                                                           
  ++the_mutex->nest_level;                                                                
    4002a28c:   b94018a0    ldr w0, [x5, #24]                                             
    4002a290:   11000400    add w0, w0, #0x1                                              
    4002a294:   b90018a0    str w0, [x5, #24]                                             
  _ISR_lock_ISR_enable( &queue_context->Lock_context.Lock_context );                      
    4002a298:   b94033e0    ldr w0, [sp, #48]                                             
    4002a29c:   d51b4220    msr daif, x0                                                  
    4002a2a0:   52800000    mov w0, #0x0                    // #0                         
    4002a2a4:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a2a8:   f94013f5    ldr x21, [sp, #32]                                            
    4002a2ac:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    4002a2b0:   d65f03c0    ret                                                           
    the_semaphore->count -= 1;                                                            
    4002a2b4:   51000442    sub w2, w2, #0x1                                              
    4002a2b8:   b90018a2    str w2, [x5, #24]                                             
    4002a2bc:   b94033e0    ldr w0, [sp, #48]                                             
    4002a2c0:   d51b4220    msr daif, x0                                                  
    return STATUS_SUCCESSFUL;                                                             
    4002a2c4:   52800000    mov w0, #0x0                    // #0                         
    4002a2c8:   17ffffed    b   4002a27c <rtems_semaphore_obtain+0x18c>                   
    return RTEMS_INVALID_ID;                                                              
    4002a2cc:   52800080    mov w0, #0x4                    // #4                         
}                                                                                         
    4002a2d0:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a2d4:   f94013f5    ldr x21, [sp, #32]                                            
    4002a2d8:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    4002a2dc:   d65f03c0    ret                                                           
    4002a2e0:   b94018a1    ldr w1, [x5, #24]                                             
    4002a2e4:   11000421    add w1, w1, #0x1                                              
    4002a2e8:   b90018a1    str w1, [x5, #24]                                             
    4002a2ec:   b94033e1    ldr w1, [sp, #48]                                             
    4002a2f0:   d51b4221    msr daif, x1                                                  
    return status;                                                                        
    4002a2f4:   17ffffe2    b   4002a27c <rtems_semaphore_obtain+0x18c>                   
    4002a2f8:   b94033e0    ldr w0, [sp, #48]                                             
    4002a2fc:   d51b4220    msr daif, x0                                                  
    return STATUS_UNSATISFIED;                                                            
    4002a300:   528001a0    mov w0, #0xd                    // #13                        
    4002a304:   17ffffde    b   4002a27c <rtems_semaphore_obtain+0x18c>                   
  the_mutex->Wait_queue.Queue.owner = owner;                                              
    4002a308:   f90004b3    str x19, [x5, #8]                                             
    4002a30c:   b94033e0    ldr w0, [sp, #48]                                             
    4002a310:   d51b4220    msr daif, x0                                                  
    return STATUS_SUCCESSFUL;                                                             
    4002a314:   52800000    mov w0, #0x0                    // #0                         
    4002a318:   17ffffd9    b   4002a27c <rtems_semaphore_obtain+0x18c>                   
  the_mutex->Wait_queue.Queue.owner = owner;                                              
    4002a31c:   f90004b3    str x19, [x5, #8]                                             
    4002a320:   b94033e1    ldr w1, [sp, #48]                                             
    4002a324:   d51b4221    msr daif, x1                                                  
    return STATUS_SUCCESSFUL;                                                             
    4002a328:   17ffffd5    b   4002a27c <rtems_semaphore_obtain+0x18c>                   
    4002a32c:   f9403661    ldr x1, [x19, #104]                                           
  queue_context->Priority.update_count = 0;                                               
    4002a330:   f9002bff    str xzr, [sp, #80]                                            
  if (                                                                                    
    4002a334:   f94020a0    ldr x0, [x5, #64]                                             
    4002a338:   f9401421    ldr x1, [x1, #40]                                             
    4002a33c:   eb00003f    cmp x1, x0                                                    
    4002a340:   54000223    b.cc    4002a384 <rtems_semaphore_obtain+0x294>  // b.lo, b.ul, b.last
  the_mutex->Wait_queue.Queue.owner = owner;                                              
    4002a344:   f90004b3    str x19, [x5, #8]                                             
  _Thread_Priority_add(                                                                   
    4002a348:   aa1303e0    mov x0, x19                                                   
    4002a34c:   910080a1    add x1, x5, #0x20                                             
    4002a350:   9100c3e2    add x2, sp, #0x30                                             
    4002a354:   94000947    bl  4002c870 <_Thread_Priority_add>                           
  disable_level = cpu_self->thread_dispatch_disable_level;                                
    4002a358:   b9401a80    ldr w0, [x20, #24]                                            
  cpu_self->thread_dispatch_disable_level = disable_level + 1;                            
    4002a35c:   11000400    add w0, w0, #0x1                                              
    4002a360:   b9001a80    str w0, [x20, #24]                                            
  _ISR_lock_ISR_enable( &queue_context->Lock_context.Lock_context );                      
    4002a364:   b94033e0    ldr w0, [sp, #48]                                             
    4002a368:   d51b4220    msr daif, x0                                                  
  _Thread_Priority_update( queue_context );                                               
    4002a36c:   9100c3e0    add x0, sp, #0x30                                             
    4002a370:   940009ac    bl  4002ca20 <_Thread_Priority_update>                        
  _Thread_Dispatch_enable( cpu_self );                                                    
    4002a374:   aa1403e0    mov x0, x20                                                   
    4002a378:   94000a52    bl  4002ccc0 <_Thread_Dispatch_enable>                        
  return STATUS_SUCCESSFUL;                                                               
    4002a37c:   52800000    mov w0, #0x0                    // #0                         
    4002a380:   17ffffbf    b   4002a27c <rtems_semaphore_obtain+0x18c>                   
    4002a384:   b94033e0    ldr w0, [sp, #48]                                             
    4002a388:   d51b4220    msr daif, x0                                                  
    return STATUS_MUTEX_CEILING_VIOLATED;                                                 
    4002a38c:   52800260    mov w0, #0x13                   // #19                        
    4002a390:   17ffffbb    b   4002a27c <rtems_semaphore_obtain+0x18c>                   
    ...                                                                                   
                                                                                          

000000004002a3a0 <rtems_semaphore_release>: #include <rtems/rtems/semimpl.h> #include <rtems/rtems/statusimpl.h> rtems_status_code rtems_semaphore_release( rtems_id id ) {
    4002a3a0:   a9b87bfd    stp x29, x30, [sp, #-128]!                                    
  return (Semaphore_Control *) _Objects_Get(                                              
    4002a3a4:   d00006a2    adrp    x2, 40100000 <_RTEMS_tasks_Information>               
    4002a3a8:   9101c042    add x2, x2, #0x70                                             
    4002a3ac:   910003fd    mov x29, sp                                                   
    4002a3b0:   910103e1    add x1, sp, #0x40                                             
    4002a3b4:   a9025bf5    stp x21, x22, [sp, #32]                                       
    4002a3b8:   9400062a    bl  4002bc60 <_Objects_Get>                                   
  Semaphore_Variant     variant;                                                          
  Status_Control        status;                                                           
                                                                                          
  the_semaphore = _Semaphore_Get( id, &queue_context );                                   
                                                                                          
  if ( the_semaphore == NULL ) {                                                          
    4002a3bc:   b4001440    cbz x0, 4002a644 <rtems_semaphore_release+0x2a4>              
  return (uintptr_t) the_semaphore->Object.Node.previous;                                 
    4002a3c0:   f9400403    ldr x3, [x0, #8]                                              
    4002a3c4:   a90153f3    stp x19, x20, [sp, #16]                                       
    4002a3c8:   d00006d4    adrp    x20, 40104000 <_RTEMS_tasks_Objects+0x1b10>           
    4002a3cc:   913d0294    add x20, x20, #0xf40                                          
  return (Semaphore_Discipline) ( flags & 0x7 );                                          
    4002a3d0:   12000861    and w1, w3, #0x7                                              
    4002a3d4:   aa0003f3    mov x19, x0                                                   
  flags = _Semaphore_Get_flags( the_semaphore );                                          
  variant = _Semaphore_Get_variant( flags );                                              
                                                                                          
  switch ( variant ) {                                                                    
    case SEMAPHORE_VARIANT_MUTEX_INHERIT_PRIORITY:                                        
      status = _CORE_recursive_mutex_Surrender(                                           
    4002a3d8:   91008016    add x22, x0, #0x20                                            
  switch ( variant ) {                                                                    
    4002a3dc:   7100083f    cmp w1, #0x2                                                  
    4002a3e0:   f9401282    ldr x2, [x20, #32]                                            
    4002a3e4:   54000b00    b.eq    4002a544 <rtems_semaphore_release+0x1a4>  // b.none   
    4002a3e8:   54000568    b.hi    4002a494 <rtems_semaphore_release+0xf4>  // b.pmore   
    4002a3ec:   34001001    cbz w1, 4002a5ec <rtems_semaphore_release+0x24c>              
    4002a3f0:   7100043f    cmp w1, #0x1                                                  
    4002a3f4:   54000ce1    b.ne    4002a590 <rtems_semaphore_release+0x1f0>  // b.any    <== NEVER TAKEN
  Per_CPU_Control  *cpu_self;                                                             
  Thread_Control   *new_owner;                                                            
                                                                                          
  _CORE_mutex_Acquire_critical( &the_mutex->Recursive.Mutex, queue_context );             
                                                                                          
  if ( !_CORE_mutex_Is_owner( &the_mutex->Recursive.Mutex, executing ) ) {                
    4002a3f8:   f94006c0    ldr x0, [x22, #8]                                             
    4002a3fc:   eb00005f    cmp x2, x0                                                    
    4002a400:   540007a1    b.ne    4002a4f4 <rtems_semaphore_release+0x154>  // b.any    
    _CORE_mutex_Release( &the_mutex->Recursive.Mutex, queue_context );                    
    return STATUS_NOT_OWNER;                                                              
  }                                                                                       
                                                                                          
  nest_level = the_mutex->Recursive.nest_level;                                           
    4002a404:   b9401ad5    ldr w21, [x22, #24]                                           
                                                                                          
  if ( nest_level > 0 ) {                                                                 
    4002a408:   35001115    cbnz    w21, 4002a628 <rtems_semaphore_release+0x288>         <== NEVER TAKEN
  queue_context->Priority.update_count = 0;                                               
    4002a40c:   a90363f7    stp x23, x24, [sp, #48]                                       
                                                                                          
  _Thread_Resource_count_decrement( executing );                                          
                                                                                          
  _Thread_queue_Context_clear_priority_updates( queue_context );                          
  _Thread_Wait_acquire_default_critical( executing, &lock_context );                      
  _Thread_Priority_remove(                                                                
    4002a410:   910082d8    add x24, x22, #0x20                                           
    4002a414:   aa0203e0    mov x0, x2                                                    
    4002a418:   aa1803e1    mov x1, x24                                                   
    4002a41c:   910103e2    add x2, sp, #0x40                                             
    4002a420:   f90033ff    str xzr, [sp, #96]                                            
    4002a424:   94000937    bl  4002c900 <_Thread_Priority_remove>                        
RTEMS_INLINE_ROUTINE Thread_Control *_Thread_queue_First_locked(                          
  Thread_queue_Control          *the_thread_queue,                                        
  const Thread_queue_Operations *operations                                               
)                                                                                         
{                                                                                         
  Thread_queue_Heads *heads = the_thread_queue->Queue.heads;                              
    4002a428:   f9401260    ldr x0, [x19, #32]                                            
                                                                                          
  if ( heads != NULL ) {                                                                  
    4002a42c:   b40011e0    cbz x0, 4002a668 <rtems_semaphore_release+0x2c8>              
    return ( *operations->first )( heads );                                               
    4002a430:   f0000097    adrp    x23, 4003d000 <_Thread_Control_add_ons+0x20>          
    4002a434:   913742f7    add x23, x23, #0xdd0                                          
    4002a438:   f94012e1    ldr x1, [x23, #32]                                            
    4002a43c:   d63f0020    blr x1                                                        
    4002a440:   aa0003f3    mov x19, x0                                                   
  disable_level = cpu_self->thread_dispatch_disable_level;                                
    4002a444:   b9401a82    ldr w2, [x20, #24]                                            
  the_mutex->Wait_queue.Queue.owner = owner;                                              
    4002a448:   f90006c0    str x0, [x22, #8]                                             
  cpu_self->thread_dispatch_disable_level = disable_level + 1;                            
    4002a44c:   11000442    add w2, w2, #0x1                                              
    4002a450:   b9001a82    str w2, [x20, #24]                                            
                                                                                          
  cpu_self = _Thread_Dispatch_disable_critical(                                           
    &queue_context->Lock_context.Lock_context                                             
  );                                                                                      
                                                                                          
  if ( new_owner != NULL ) {                                                              
    4002a454:   b4001120    cbz x0, 4002a678 <rtems_semaphore_release+0x2d8>              <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                                        
    if ( _Objects_Is_local_id( new_owner->Object.id ) )                                   
#endif                                                                                    
    {                                                                                     
      _Thread_Resource_count_increment( new_owner );                                      
      _Thread_Priority_add(                                                               
    4002a458:   aa1803e1    mov x1, x24                                                   
    4002a45c:   910103e2    add x2, sp, #0x40                                             
    4002a460:   94000904    bl  4002c870 <_Thread_Priority_add>                           
        &the_mutex->Priority_ceiling,                                                     
        queue_context                                                                     
      );                                                                                  
    }                                                                                     
                                                                                          
    _Thread_queue_Extract_critical(                                                       
    4002a464:   910103e3    add x3, sp, #0x40                                             
    4002a468:   aa1303e2    mov x2, x19                                                   
    4002a46c:   aa1703e1    mov x1, x23                                                   
    4002a470:   aa1603e0    mov x0, x22                                                   
    4002a474:   94000b0b    bl  4002d0a0 <_Thread_queue_Extract_critical>                 
    );                                                                                    
  } else {                                                                                
    _CORE_mutex_Release( &the_mutex->Recursive.Mutex, queue_context );                    
  }                                                                                       
                                                                                          
  _Thread_Priority_update( queue_context );                                               
    4002a478:   910103e0    add x0, sp, #0x40                                             
    4002a47c:   94000969    bl  4002ca20 <_Thread_Priority_update>                        
  _Thread_Dispatch_enable( cpu_self );                                                    
    4002a480:   aa1403e0    mov x0, x20                                                   
    4002a484:   94000a0f    bl  4002ccc0 <_Thread_Dispatch_enable>                        
  return STATUS_SUCCESSFUL;                                                               
    4002a488:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a48c:   a94363f7    ldp x23, x24, [sp, #48]                                       
    4002a490:   1400001d    b   4002a504 <rtems_semaphore_release+0x164>                  
    4002a494:   71000c3f    cmp w1, #0x3                                                  
    4002a498:   540007c1    b.ne    4002a590 <rtems_semaphore_release+0x1f0>  // b.any    
  Thread_queue_Heads *heads = the_thread_queue->Queue.heads;                              
    4002a49c:   f9401000    ldr x0, [x0, #32]                                             
    return &_Thread_queue_Operations_priority;                                            
    4002a4a0:   721d007f    tst w3, #0x8                                                  
    4002a4a4:   f0000081    adrp    x1, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a4a8:   91374021    add x1, x1, #0xdd0                                            
    4002a4ac:   f0000093    adrp    x19, 4003d000 <_Thread_Control_add_ons+0x20>          
    4002a4b0:   91360273    add x19, x19, #0xd80                                          
    4002a4b4:   9a811273    csel    x19, x19, x1, ne  // ne = any                         
  if ( heads != NULL ) {                                                                  
    4002a4b8:   b40002e0    cbz x0, 4002a514 <rtems_semaphore_release+0x174>              
    return ( *operations->first )( heads );                                               
    4002a4bc:   f9401261    ldr x1, [x19, #32]                                            
    4002a4c0:   d63f0020    blr x1                                                        
    4002a4c4:   aa0003e2    mov x2, x0                                                    
  if ( the_thread != NULL ) {                                                             
    4002a4c8:   b4000260    cbz x0, 4002a514 <rtems_semaphore_release+0x174>              <== NEVER TAKEN
    _Thread_queue_Extract_critical(                                                       
    4002a4cc:   910103e3    add x3, sp, #0x40                                             
    4002a4d0:   aa1303e1    mov x1, x19                                                   
    4002a4d4:   aa1603e0    mov x0, x22                                                   
    4002a4d8:   52800015    mov w21, #0x0                       // #0                     
    4002a4dc:   94000af1    bl  4002d0a0 <_Thread_queue_Extract_critical>                 
      );                                                                                  
      break;                                                                              
  }                                                                                       
                                                                                          
  return _Status_Get( status );                                                           
}                                                                                         
    4002a4e0:   2a1503e0    mov w0, w21                                                   
    4002a4e4:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a4e8:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    4002a4ec:   a8c87bfd    ldp x29, x30, [sp], #128                                      
    4002a4f0:   d65f03c0    ret                                                           
  _ISR_lock_ISR_enable( &queue_context->Lock_context.Lock_context );                      
    4002a4f4:   b94043e0    ldr w0, [sp, #64]                                             
    4002a4f8:   d51b4220    msr daif, x0                                                  
    return STATUS_NOT_OWNER;                                                              
    4002a4fc:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a500:   528002f5    mov w21, #0x17                      // #23                    
    4002a504:   2a1503e0    mov w0, w21                                                   
    4002a508:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    4002a50c:   a8c87bfd    ldp x29, x30, [sp], #128                                      
    4002a510:   d65f03c0    ret                                                           
    if ( the_semaphore->count < maximum_count )                                           
    4002a514:   b9401ac0    ldr w0, [x22, #24]                                            
    4002a518:   35000060    cbnz    w0, 4002a524 <rtems_semaphore_release+0x184>          
      the_semaphore->count += 1;                                                          
    4002a51c:   52800020    mov w0, #0x1                    // #1                         
    4002a520:   b9001ac0    str w0, [x22, #24]                                            
    4002a524:   b94043e0    ldr w0, [sp, #64]                                             
    4002a528:   d51b4220    msr daif, x0                                                  
  return status;                                                                          
    4002a52c:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a530:   52800015    mov w21, #0x0                       // #0                     
    4002a534:   2a1503e0    mov w0, w21                                                   
    4002a538:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    4002a53c:   a8c87bfd    ldp x29, x30, [sp], #128                                      
    4002a540:   d65f03c0    ret                                                           
  if ( !_CORE_mutex_Is_owner( &the_mutex->Mutex, executing ) ) {                          
    4002a544:   f94006c1    ldr x1, [x22, #8]                                             
    4002a548:   f0000084    adrp    x4, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a54c:   91374080    add x0, x4, #0xdd0                                            
    4002a550:   721d007f    tst w3, #0x8                                                  
    4002a554:   f0000084    adrp    x4, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a558:   91360084    add x4, x4, #0xd80                                            
    4002a55c:   9a801084    csel    x4, x4, x0, ne  // ne = any                           
    4002a560:   eb01005f    cmp x2, x1                                                    
    4002a564:   54fffc81    b.ne    4002a4f4 <rtems_semaphore_release+0x154>  // b.any    <== NEVER TAKEN
  nest_level = the_mutex->nest_level;                                                     
    4002a568:   b9401ad5    ldr w21, [x22, #24]                                           
  if ( nest_level > 0 ) {                                                                 
    4002a56c:   350005f5    cbnz    w21, 4002a628 <rtems_semaphore_release+0x288>         <== NEVER TAKEN
  heads = the_mutex->Mutex.Wait_queue.Queue.heads;                                        
    4002a570:   f9401261    ldr x1, [x19, #32]                                            
  the_mutex->Wait_queue.Queue.owner = owner;                                              
    4002a574:   f90006df    str xzr, [x22, #8]                                            
  if ( heads == NULL ) {                                                                  
    4002a578:   b40002c1    cbz x1, 4002a5d0 <rtems_semaphore_release+0x230>              
  _Thread_queue_Surrender(                                                                
    4002a57c:   910103e3    add x3, sp, #0x40                                             
    4002a580:   aa1603e0    mov x0, x22                                                   
    4002a584:   94000b27    bl  4002d220 <_Thread_queue_Surrender>                        
  return STATUS_SUCCESSFUL;                                                               
    4002a588:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a58c:   17ffffde    b   4002a504 <rtems_semaphore_release+0x164>                  
  Thread_queue_Heads *heads = the_thread_queue->Queue.heads;                              
    4002a590:   f9401260    ldr x0, [x19, #32]                                            
    4002a594:   721d007f    tst w3, #0x8                                                  
    4002a598:   f0000081    adrp    x1, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a59c:   91374021    add x1, x1, #0xdd0                                            
    4002a5a0:   f0000093    adrp    x19, 4003d000 <_Thread_Control_add_ons+0x20>          
    4002a5a4:   91360273    add x19, x19, #0xd80                                          
    4002a5a8:   9a811273    csel    x19, x19, x1, ne  // ne = any                         
  if ( heads != NULL ) {                                                                  
    4002a5ac:   b40000a0    cbz x0, 4002a5c0 <rtems_semaphore_release+0x220>              
    return ( *operations->first )( heads );                                               
    4002a5b0:   f9401261    ldr x1, [x19, #32]                                            
    4002a5b4:   d63f0020    blr x1                                                        
    4002a5b8:   aa0003e2    mov x2, x0                                                    
  if ( the_thread != NULL ) {                                                             
    4002a5bc:   b5fff880    cbnz    x0, 4002a4cc <rtems_semaphore_release+0x12c>          <== ALWAYS TAKEN
    if ( the_semaphore->count < maximum_count )                                           
    4002a5c0:   b9401ac0    ldr w0, [x22, #24]                                            
    4002a5c4:   528001b5    mov w21, #0xd                       // #13                    
    4002a5c8:   3100041f    cmn w0, #0x1                                                  
    4002a5cc:   54000461    b.ne    4002a658 <rtems_semaphore_release+0x2b8>  // b.any    
  _ISR_lock_ISR_enable( &queue_context->Lock_context.Lock_context );                      
    4002a5d0:   b94043e0    ldr w0, [sp, #64]                                             
    4002a5d4:   d51b4220    msr daif, x0                                                  
    4002a5d8:   2a1503e0    mov w0, w21                                                   
  return _Status_Get( status );                                                           
    4002a5dc:   a94153f3    ldp x19, x20, [sp, #16]                                       
}                                                                                         
    4002a5e0:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    4002a5e4:   a8c87bfd    ldp x29, x30, [sp], #128                                      
    4002a5e8:   d65f03c0    ret                                                           
  if ( !_CORE_mutex_Is_owner( &the_mutex->Mutex, executing ) ) {                          
    4002a5ec:   f94006c0    ldr x0, [x22, #8]                                             
    4002a5f0:   eb00005f    cmp x2, x0                                                    
    4002a5f4:   54fff801    b.ne    4002a4f4 <rtems_semaphore_release+0x154>  // b.any    
  nest_level = the_mutex->nest_level;                                                     
    4002a5f8:   b9401ad5    ldr w21, [x22, #24]                                           
  if ( nest_level > 0 ) {                                                                 
    4002a5fc:   35000175    cbnz    w21, 4002a628 <rtems_semaphore_release+0x288>         
  heads = the_mutex->Mutex.Wait_queue.Queue.heads;                                        
    4002a600:   f9401261    ldr x1, [x19, #32]                                            
  the_mutex->Wait_queue.Queue.owner = owner;                                              
    4002a604:   f90006df    str xzr, [x22, #8]                                            
  if ( heads == NULL ) {                                                                  
    4002a608:   b4fffe41    cbz x1, 4002a5d0 <rtems_semaphore_release+0x230>              
  _Thread_queue_Surrender(                                                                
    4002a60c:   910103e3    add x3, sp, #0x40                                             
    4002a610:   aa1603e0    mov x0, x22                                                   
    4002a614:   f0000084    adrp    x4, 4003d000 <_Thread_Control_add_ons+0x20>           
    4002a618:   9137e084    add x4, x4, #0xdf8                                            
    4002a61c:   94000b01    bl  4002d220 <_Thread_queue_Surrender>                        
  return STATUS_SUCCESSFUL;                                                               
    4002a620:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a624:   17ffffb8    b   4002a504 <rtems_semaphore_release+0x164>                  
    the_mutex->nest_level = nest_level - 1;                                               
    4002a628:   510006b5    sub w21, w21, #0x1                                            
    4002a62c:   b9001ad5    str w21, [x22, #24]                                           
    4002a630:   b94043e0    ldr w0, [sp, #64]                                             
    4002a634:   d51b4220    msr daif, x0                                                  
    4002a638:   52800015    mov w21, #0x0                       // #0                     
    4002a63c:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002a640:   17ffffbd    b   4002a534 <rtems_semaphore_release+0x194>                  
    return RTEMS_INVALID_ID;                                                              
    4002a644:   52800095    mov w21, #0x4                       // #4                     
}                                                                                         
    4002a648:   2a1503e0    mov w0, w21                                                   
    4002a64c:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    4002a650:   a8c87bfd    ldp x29, x30, [sp], #128                                      
    4002a654:   d65f03c0    ret                                                           
      the_semaphore->count += 1;                                                          
    4002a658:   11000400    add w0, w0, #0x1                                              
    4002a65c:   52800015    mov w21, #0x0                       // #0                     
    4002a660:   b9001ac0    str w0, [x22, #24]                                            
    4002a664:   17ffffdb    b   4002a5d0 <rtems_semaphore_release+0x230>                  
  disable_level = cpu_self->thread_dispatch_disable_level;                                
    4002a668:   b9401a80    ldr w0, [x20, #24]                                            
  the_mutex->Wait_queue.Queue.owner = owner;                                              
    4002a66c:   f90006df    str xzr, [x22, #8]                                            
  cpu_self->thread_dispatch_disable_level = disable_level + 1;                            
    4002a670:   11000400    add w0, w0, #0x1                                              
    4002a674:   b9001a80    str w0, [x20, #24]                                            
    4002a678:   b94043e0    ldr w0, [sp, #64]                                             
    4002a67c:   d51b4220    msr daif, x0                                                  
}                                                                                         
    4002a680:   17ffff7e    b   4002a478 <rtems_semaphore_release+0xd8>                   
    ...                                                                                   
                                                                                          

0000000040024dc0 <rtems_semaphore_set_priority>: rtems_id semaphore_id, rtems_id scheduler_id, rtems_task_priority new_priority, rtems_task_priority *old_priority ) {
    40024dc0:   a9b87bfd    stp x29, x30, [sp, #-128]!                                    
    40024dc4:   910003fd    mov x29, sp                                                   
    40024dc8:   a90363f7    stp x23, x24, [sp, #48]                                       
  const Scheduler_Control *scheduler;                                                     
  Semaphore_Control       *the_semaphore;                                                 
  Thread_queue_Context     queue_context;                                                 
                                                                                          
  if ( old_priority == NULL ) {                                                           
    40024dcc:   b4000ae3    cbz x3, 40024f28 <rtems_semaphore_set_priority+0x168>         
    40024dd0:   a9025bf5    stp x21, x22, [sp, #32]                                       
    40024dd4:   2a0203f5    mov w21, w2                                                   
{                                                                                         
  uint32_t index;                                                                         
                                                                                          
  index = _Scheduler_Get_index_by_id( id );                                               
                                                                                          
  if ( index >= _Scheduler_Count ) {                                                      
    40024dd8:   52800022    mov w2, #0x1                    // #1                         
    40024ddc:   72a1e022    movk    w2, #0xf01, lsl #16                                   
    40024de0:   6b02003f    cmp w1, w2                                                    
    40024de4:   54000741    b.ne    40024ecc <rtems_semaphore_set_priority+0x10c>  // b.any
  return (Semaphore_Control *) _Objects_Get(                                              
    40024de8:   910103e1    add x1, sp, #0x40                                             
    40024dec:   900006e2    adrp    x2, 40100000 <_RTEMS_tasks_Information>               
    40024df0:   9101c042    add x2, x2, #0x70                                             
    40024df4:   a90153f3    stp x19, x20, [sp, #16]                                       
    40024df8:   aa0303f4    mov x20, x3                                                   
    40024dfc:   94000419    bl  40025e60 <_Objects_Get>                                   
    40024e00:   aa0003f6    mov x22, x0                                                   
    return RTEMS_INVALID_ID;                                                              
  }                                                                                       
                                                                                          
  the_semaphore = _Semaphore_Get( semaphore_id, &queue_context );                         
                                                                                          
  if ( the_semaphore == NULL ) {                                                          
    40024e04:   b4000620    cbz x0, 40024ec8 <rtems_semaphore_set_priority+0x108>         
    40024e08:   f0000093    adrp    x19, 40037000 <_init>                                 
    40024e0c:   910f6273    add x19, x19, #0x3d8                                          
    40024e10:   2a1503f7    mov w23, w21                                                  
  return ( *scheduler->Operations.map_priority )( scheduler, priority );                  
    40024e14:   aa1303e0    mov x0, x19                                                   
    40024e18:   aa1703e1    mov x1, x23                                                   
    40024e1c:   f9401e62    ldr x2, [x19, #56]                                            
    40024e20:   f9403e78    ldr x24, [x19, #120]                                          
    40024e24:   d63f0040    blr x2                                                        
  if ( new_priority != RTEMS_CURRENT_PRIORITY && !valid ) {                               
    40024e28:   34000415    cbz w21, 40024ea8 <rtems_semaphore_set_priority+0xe8>         
    40024e2c:   eb1802ff    cmp x23, x24                                                  
    40024e30:   54000868    b.hi    40024f3c <rtems_semaphore_set_priority+0x17c>  // b.pmore
  return (Semaphore_Discipline) ( flags & 0x7 );                                          
    40024e34:   f94006c1    ldr x1, [x22, #8]                                             
  queue_context->Priority.update_count = 0;                                               
    40024e38:   f90033ff    str xzr, [sp, #96]                                            
    40024e3c:   12000821    and w1, w1, #0x7                                              
  switch ( variant ) {                                                                    
    40024e40:   7100043f    cmp w1, #0x1                                                  
    40024e44:   54000500    b.eq    40024ee4 <rtems_semaphore_set_priority+0x124>  // b.none
      old_priority = 0;                                                                   
    40024e48:   d2800018    mov x24, #0x0                       // #0                     
      sc = RTEMS_NOT_DEFINED;                                                             
    40024e4c:   52800177    mov w23, #0xb                       // #11                    
  disable_level = cpu_self->thread_dispatch_disable_level;                                
    40024e50:   f00006f5    adrp    x21, 40103000 <_RTEMS_tasks_Objects+0xc38>            
    40024e54:   912302b5    add x21, x21, #0x8c0                                          
    40024e58:   b9401aa0    ldr w0, [x21, #24]                                            
  cpu_self->thread_dispatch_disable_level = disable_level + 1;                            
    40024e5c:   11000400    add w0, w0, #0x1                                              
    40024e60:   b9001aa0    str w0, [x21, #24]                                            
  _ISR_lock_ISR_enable( &queue_context->Lock_context.Lock_context );                      
    40024e64:   b94043e0    ldr w0, [sp, #64]                                             
    40024e68:   d51b4220    msr daif, x0                                                  
  _Thread_Priority_update( queue_context );                                               
    40024e6c:   910103e0    add x0, sp, #0x40                                             
    40024e70:   94000760    bl  40026bf0 <_Thread_Priority_update>                        
  _Thread_Dispatch_enable( cpu_self );                                                    
    40024e74:   aa1503e0    mov x0, x21                                                   
    40024e78:   940007da    bl  40026de0 <_Thread_Dispatch_enable>                        
  return ( *scheduler->Operations.unmap_priority )( scheduler, priority );                
    40024e7c:   f9402262    ldr x2, [x19, #64]                                            
    40024e80:   aa1303e0    mov x0, x19                                                   
    40024e84:   aa1803e1    mov x1, x24                                                   
    40024e88:   d63f0040    blr x2                                                        
  return sc;                                                                              
    40024e8c:   a9425bf5    ldp x21, x22, [sp, #32]                                       
RTEMS_INLINE_ROUTINE rtems_task_priority _RTEMS_Priority_From_core(                       
  const Scheduler_Control *scheduler,                                                     
  Priority_Control         priority                                                       
)                                                                                         
{                                                                                         
  return (rtems_task_priority)                                                            
    40024e90:   b9000280    str w0, [x20]                                                 
    40024e94:   a94153f3    ldp x19, x20, [sp, #16]                                       
    scheduler,                                                                            
    new_priority,                                                                         
    old_priority,                                                                         
    &queue_context                                                                        
  );                                                                                      
}                                                                                         
    40024e98:   2a1703e0    mov w0, w23                                                   
    40024e9c:   a94363f7    ldp x23, x24, [sp, #48]                                       
    40024ea0:   a8c87bfd    ldp x29, x30, [sp], #128                                      
    40024ea4:   d65f03c0    ret                                                           
    40024ea8:   f94006c0    ldr x0, [x22, #8]                                             
  queue_context->Priority.update_count = 0;                                               
    40024eac:   f90033ff    str xzr, [sp, #96]                                            
    40024eb0:   12000800    and w0, w0, #0x7                                              
  switch ( variant ) {                                                                    
    40024eb4:   7100041f    cmp w0, #0x1                                                  
    40024eb8:   54fffc81    b.ne    40024e48 <rtems_semaphore_set_priority+0x88>  // b.any<== NEVER TAKEN
      sc = _Semaphore_Is_scheduler_valid(                                                 
    40024ebc:   52800017    mov w23, #0x0                       // #0                     
  return the_mutex->Priority_ceiling.priority;                                            
    40024ec0:   f94032d8    ldr x24, [x22, #96]                                           
      if ( sc == RTEMS_SUCCESSFUL && new_priority != RTEMS_CURRENT_PRIORITY ) {           
    40024ec4:   17ffffe3    b   40024e50 <rtems_semaphore_set_priority+0x90>              
    40024ec8:   a94153f3    ldp x19, x20, [sp, #16]                                       
    return RTEMS_INVALID_ID;                                                              
    40024ecc:   52800097    mov w23, #0x4                       // #4                     
}                                                                                         
    40024ed0:   2a1703e0    mov w0, w23                                                   
    40024ed4:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40024ed8:   a94363f7    ldp x23, x24, [sp, #48]                                       
    40024edc:   a8c87bfd    ldp x29, x30, [sp], #128                                      
    40024ee0:   d65f03c0    ret                                                           
  return the_mutex->Wait_queue.Queue.owner;                                               
    40024ee4:   f94016c2    ldr x2, [x22, #40]                                            
  return the_mutex->Priority_ceiling.priority;                                            
    40024ee8:   910082c1    add x1, x22, #0x20                                            
    40024eec:   f9402038    ldr x24, [x1, #64]                                            
  if ( owner != NULL ) {                                                                  
    40024ef0:   b4000322    cbz x2, 40024f54 <rtems_semaphore_set_priority+0x194>         <== ALWAYS TAKEN
  __asm__ volatile (                                                                      
    40024ef4:   d53b4223    mrs x3, daif                                                  <== NOT EXECUTED
    40024ef8:   d50342df    msr daifset, #0x2                                             <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Wait_acquire(                                           
  Thread_Control       *the_thread,                                                       
  Thread_queue_Context *queue_context                                                     
)                                                                                         
{                                                                                         
  _ISR_lock_ISR_disable( &queue_context->Lock_context.Lock_context );                     
    40024efc:   b90043e3    str w3, [sp, #64]                                             <== NOT EXECUTED
  node->priority = priority;                                                              
    40024f00:   f90032c0    str x0, [x22, #96]                                            <== NOT EXECUTED
  _Thread_Priority_changed(                                                               
    40024f04:   91008021    add x1, x1, #0x20                                             <== NOT EXECUTED
    40024f08:   aa0203e0    mov x0, x2                                                    <== NOT EXECUTED
    40024f0c:   910103e3    add x3, sp, #0x40                                             <== NOT EXECUTED
    40024f10:   52800002    mov w2, #0x0                    // #0                         <== NOT EXECUTED
    40024f14:   94000713    bl  40026b60 <_Thread_Priority_changed>                       <== NOT EXECUTED
  Thread_Control       *the_thread,                                                       
  Thread_queue_Context *queue_context                                                     
)                                                                                         
{                                                                                         
  _Thread_Wait_release_critical( the_thread, queue_context );                             
  _ISR_lock_ISR_enable( &queue_context->Lock_context.Lock_context );                      
    40024f18:   b94043e0    ldr w0, [sp, #64]                                             <== NOT EXECUTED
  __asm__ volatile (                                                                      
    40024f1c:   d51b4220    msr daif, x0                                                  <== NOT EXECUTED
      sc = _Semaphore_Is_scheduler_valid(                                                 
    40024f20:   52800017    mov w23, #0x0                       // #0                     <== NOT EXECUTED
}                                                                                         
    40024f24:   17ffffcb    b   40024e50 <rtems_semaphore_set_priority+0x90>              <== NOT EXECUTED
    return RTEMS_INVALID_ADDRESS;                                                         
    40024f28:   52800137    mov w23, #0x9                       // #9                     
}                                                                                         
    40024f2c:   2a1703e0    mov w0, w23                                                   
    40024f30:   a94363f7    ldp x23, x24, [sp, #48]                                       
    40024f34:   a8c87bfd    ldp x29, x30, [sp], #128                                      
    40024f38:   d65f03c0    ret                                                           
    _ISR_lock_ISR_enable( &queue_context->Lock_context.Lock_context );                    
    40024f3c:   b94043e0    ldr w0, [sp, #64]                                             
    40024f40:   d51b4220    msr daif, x0                                                  
    return RTEMS_INVALID_PRIORITY;                                                        
    40024f44:   52800277    mov w23, #0x13                      // #19                    
    40024f48:   a94153f3    ldp x19, x20, [sp, #16]                                       
    40024f4c:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40024f50:   17ffffd2    b   40024e98 <rtems_semaphore_set_priority+0xd8>              
      sc = _Semaphore_Is_scheduler_valid(                                                 
    40024f54:   52800017    mov w23, #0x0                       // #0                     
    the_mutex->Priority_ceiling.priority = priority_ceiling;                              
    40024f58:   f9002020    str x0, [x1, #64]                                             
    40024f5c:   17ffffbd    b   40024e50 <rtems_semaphore_set_priority+0x90>              
                                                                                          

000000004002ab20 <rtems_status_code_to_errno>: [RTEMS_PROXY_BLOCKING] = EIO }; int rtems_status_code_to_errno(rtems_status_code sc) { if (sc == RTEMS_SUCCESSFUL) { 4002ab20: 35000060 cbnz w0, 4002ab2c <rtems_status_code_to_errno+0xc> return 0;
    4002ab24:   52800000    mov w0, #0x0                    // #0                         
                                                                                          
    errno = eno;                                                                          
                                                                                          
    return -1;                                                                            
  }                                                                                       
}                                                                                         
    4002ab28:   d65f03c0    ret                                                           
{                                                                                         
    4002ab2c:   a9be7bfd    stp x29, x30, [sp, #-32]!                                     
    if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {                                       
    4002ab30:   7100741f    cmp w0, #0x1d                                                 
{                                                                                         
    4002ab34:   910003fd    mov x29, sp                                                   
    4002ab38:   f9000bf3    str x19, [sp, #16]                                            
    int eno = EINVAL;                                                                     
    4002ab3c:   528002d3    mov w19, #0x16                      // #22                    
    if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {                                       
    4002ab40:   54000088    b.hi    4002ab50 <rtems_status_code_to_errno+0x30>  // b.pmore<== NEVER TAKEN
      eno = status_code_to_errno [sc];                                                    
    4002ab44:   d0000081    adrp    x1, 4003c000 <_Scheduler_Table+0x48>                  
    4002ab48:   913c8021    add x1, x1, #0xf20                                            
    4002ab4c:   b8605833    ldr w19, [x1, w0, uxtw #2]                                    
    errno = eno;                                                                          
    4002ab50:   94000f5c    bl  4002e8c0 <__errno>                                        
    4002ab54:   aa0003e1    mov x1, x0                                                    
    return -1;                                                                            
    4002ab58:   12800000    mov w0, #0xffffffff             // #-1                        
    errno = eno;                                                                          
    4002ab5c:   b9000033    str w19, [x1]                                                 
}                                                                                         
    4002ab60:   f9400bf3    ldr x19, [sp, #16]                                            
    4002ab64:   a8c27bfd    ldp x29, x30, [sp], #32                                       
    4002ab68:   d65f03c0    ret                                                           
    4002ab6c:   00000000    udf #0                                                        
                                                                                          

00000000400302f0 <rtems_task_delete>: #include <rtems/score/threadimpl.h> rtems_status_code rtems_task_delete( rtems_id id ) {
    400302f0:   a9b97bfd    stp x29, x30, [sp, #-112]!                                    
    400302f4:   910003fd    mov x29, sp                                                   
  Thread_Control       *the_thread;                                                       
  Thread_Close_context  context;                                                          
  Thread_Control       *executing;                                                        
                                                                                          
  _Thread_queue_Context_initialize( &context.Base );                                      
  the_thread = _Thread_Get( id, &context.Base.Lock_context.Lock_context );                
    400302f8:   9100a3e1    add x1, sp, #0x28                                             
    400302fc:   97ffe881    bl  4002a500 <_Thread_Get>                                    
                                                                                          
  if ( the_thread == NULL ) {                                                             
    40030300:   b4000360    cbz x0, 4003036c <rtems_task_delete+0x7c>                     
    40030304:   f9000bf3    str x19, [sp, #16]                                            
    40030308:   900006b3    adrp    x19, 40104000 <rtems_libio_iops+0x260>                
    4003030c:   91080273    add x19, x19, #0x200                                          
    40030310:   f9401261    ldr x1, [x19, #32]                                            
    return RTEMS_INVALID_ID;                                                              
  }                                                                                       
                                                                                          
  executing = _Thread_Executing;                                                          
                                                                                          
  if ( the_thread == executing ) {                                                        
    40030314:   eb01001f    cmp x0, x1                                                    
    40030318:   540000e0    b.eq    40030334 <rtems_task_delete+0x44>  // b.none          
      THREAD_LIFE_TERMINATING | THREAD_LIFE_DETACHED,                                     
      NULL                                                                                
    );                                                                                    
    _Thread_Dispatch_enable( cpu_self );                                                  
  } else {                                                                                
    _Thread_Close( the_thread, executing, &context );                                     
    4003031c:   9100a3e2    add x2, sp, #0x28                                             
    40030320:   97ffed6c    bl  4002b8d0 <_Thread_Close>                                  
  }                                                                                       
                                                                                          
  return RTEMS_SUCCESSFUL;                                                                
    40030324:   52800000    mov w0, #0x0                    // #0                         
    40030328:   f9400bf3    ldr x19, [sp, #16]                                            
}                                                                                         
    4003032c:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    40030330:   d65f03c0    ret                                                           
  disable_level = cpu_self->thread_dispatch_disable_level;                                
    40030334:   b9401a61    ldr w1, [x19, #24]                                            
  cpu_self->thread_dispatch_disable_level = disable_level + 1;                            
    40030338:   11000421    add w1, w1, #0x1                                              
    4003033c:   b9001a61    str w1, [x19, #24]                                            
    _ISR_lock_ISR_enable( &context.Base.Lock_context.Lock_context );                      
    40030340:   b9402be1    ldr w1, [sp, #40]                                             
    40030344:   d51b4221    msr daif, x1                                                  
    _Thread_Exit(                                                                         
    40030348:   d2800002    mov x2, #0x0                    // #0                         
    4003034c:   52800281    mov w1, #0x14                   // #20                        
    40030350:   97ffed70    bl  4002b910 <_Thread_Exit>                                   
    _Thread_Dispatch_enable( cpu_self );                                                  
    40030354:   aa1303e0    mov x0, x19                                                   
    40030358:   97ffe852    bl  4002a4a0 <_Thread_Dispatch_enable>                        
  return RTEMS_SUCCESSFUL;                                                                
    4003035c:   52800000    mov w0, #0x0                    // #0                         <== NOT EXECUTED
    40030360:   f9400bf3    ldr x19, [sp, #16]                                            <== NOT EXECUTED
}                                                                                         
    40030364:   a8c77bfd    ldp x29, x30, [sp], #112                                      <== NOT EXECUTED
    40030368:   d65f03c0    ret                                                           <== NOT EXECUTED
    return RTEMS_INVALID_ID;                                                              
    4003036c:   52800080    mov w0, #0x4                    // #4                         
}                                                                                         
    40030370:   a8c77bfd    ldp x29, x30, [sp], #112                                      
    40030374:   d65f03c0    ret                                                           
    ...                                                                                   
                                                                                          

0000000040027280 <rtems_task_mode>: bool needs_asr_dispatching; rtems_mode old_mode; executing = _Thread_Get_executing(); if ( !previous_mode_set ) 40027280: b4000de2 cbz x2, 4002743c <rtems_task_mode+0x1bc> {
    40027284:   a9ba7bfd    stp x29, x30, [sp, #-96]!                                     
    40027288:   910003fd    mov x29, sp                                                   
    4002728c:   a90153f3    stp x19, x20, [sp, #16]                                       
    40027290:   2a0103f4    mov w20, w1                                                   
    40027294:   a9025bf5    stp x21, x22, [sp, #32]                                       
    40027298:   aa0203f5    mov x21, x2                                                   
    4002729c:   a90363f7    stp x23, x24, [sp, #48]                                       
    400272a0:   2a0003f7    mov w23, w0                                                   
    400272a4:   f9002bfb    str x27, [sp, #80]                                            
    return RTEMS_NOT_IMPLEMENTED;                                                         
  }                                                                                       
#endif                                                                                    
                                                                                          
#if defined(RTEMS_SMP) || CPU_ENABLE_ROBUST_THREAD_DISPATCH == TRUE                       
  if (                                                                                    
    400272a8:   1200003b    and w27, w1, #0x1                                             
    400272ac:   36000074    tbz w20, #0, 400272b8 <rtems_task_mode+0x38>                  
      && _Modes_Get_interrupt_level( mode_set ) != 0                                      
#if CPU_ENABLE_ROBUST_THREAD_DISPATCH == FALSE                                            
      && _SMP_Need_inter_processor_interrupts()                                           
#endif                                                                                    
  ) {                                                                                     
    return RTEMS_NOT_IMPLEMENTED;                                                         
    400272b0:   52800300    mov w0, #0x18                   // #24                        
      && _Modes_Get_interrupt_level( mode_set ) != 0                                      
    400272b4:   37000ab7    tbnz    w23, #0, 40027408 <rtems_task_mode+0x188>             
    400272b8:   a9046bf9    stp x25, x26, [sp, #64]                                       
    400272bc:   d00006f9    adrp    x25, 40105000 <rtems_libio_iops+0x58>                 
    400272c0:   91080339    add x25, x25, #0x200                                          
  *previous_mode_set = old_mode;                                                          
                                                                                          
  /*                                                                                      
   *  These are generic thread scheduling characteristics.                                
   */                                                                                     
  preempt_enabled = false;                                                                
    400272c4:   52800016    mov w22, #0x0                       // #0                     
    400272c8:   f9401338    ldr x24, [x25, #32]                                           
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;             
    400272cc:   3943a700    ldrb    w0, [x24, #233]                                       
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                                    
    400272d0:   f9411f1a    ldr x26, [x24, #568]                                          
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;             
    400272d4:   7100001f    cmp w0, #0x0                                                  
    400272d8:   1a9f17f3    cset    w19, eq  // eq = none                                 
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )                  
    400272dc:   b940f302    ldr w2, [x24, #240]                                           
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;             
    400272e0:   53185e73    lsl w19, w19, #8                                              
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;                               
    400272e4:   39402340    ldrb    w0, [x26, #8]                                         
    old_mode |= RTEMS_TIMESLICE;                                                          
    400272e8:   7100005f    cmp w2, #0x0                                                  
    400272ec:   32170261    orr w1, w19, #0x200                                           
    400272f0:   1a931033    csel    w19, w1, w19, ne  // ne = any                         
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;                               
    400272f4:   7100001f    cmp w0, #0x0                                                  
    400272f8:   32160260    orr w0, w19, #0x400                                           
    400272fc:   1a930013    csel    w19, w0, w19, eq  // eq = none                        
  old_mode |= _ISR_Get_level();                                                           
    40027300:   940014d8    bl  4002c660 <_CPU_ISR_Get_level>                             
    40027304:   2a000273    orr w19, w19, w0                                              
  *previous_mode_set = old_mode;                                                          
    40027308:   b90002b3    str w19, [x21]                                                
  if ( mask & RTEMS_PREEMPT_MASK ) {                                                      
    4002730c:   364000f4    tbz w20, #8, 40027328 <rtems_task_mode+0xa8>                  
    bool is_preempt_enabled = _Modes_Is_preempt( mode_set );                              
                                                                                          
    preempt_enabled = !executing->is_preemptible && is_preempt_enabled;                   
    40027310:   3943a716    ldrb    w22, [x24, #233]                                      
 */                                                                                       
RTEMS_INLINE_ROUTINE bool _Modes_Is_preempt (                                             
  rtems_mode mode_set                                                                     
)                                                                                         
{                                                                                         
   return (mode_set & RTEMS_PREEMPT_MASK) == RTEMS_PREEMPT;                               
    40027314:   d27802e3    eor x3, x23, #0x100                                           
    40027318:   520002d6    eor w22, w22, #0x1                                            
    4002731c:   53082063    ubfx    w3, w3, #8, #1                                        
    40027320:   0a160076    and w22, w3, w22                                              
    executing->is_preemptible = is_preempt_enabled;                                       
    40027324:   3903a703    strb    w3, [x24, #233]                                       
  }                                                                                       
                                                                                          
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                                    
    40027328:   364800d4    tbz w20, #9, 40027340 <rtems_task_mode+0xc0>                  
    if ( _Modes_Is_timeslice(mode_set) ) {                                                
    4002732c:   36480837    tbz w23, #9, 40027430 <rtems_task_mode+0x1b0>                 
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;          
      executing->cpu_time_budget =                                                        
    40027330:   d00000c0    adrp    x0, 40041000 <status_code_text+0x98>                  
    40027334:   b9420801    ldr w1, [x0, #520]                                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;          
    40027338:   52800020    mov w0, #0x1                    // #1                         
    4002733c:   291d8301    stp w1, w0, [x24, #236]                                       
  }                                                                                       
                                                                                          
  /*                                                                                      
   *  Set the new interrupt level                                                         
   */                                                                                     
  if ( mask & RTEMS_INTERRUPT_MASK ) {                                                    
    40027340:   3500071b    cbnz    w27, 40027420 <rtems_task_mode+0x1a0>                 
                                                                                          
  /*                                                                                      
   *  This is specific to the RTEMS API                                                   
   */                                                                                     
  needs_asr_dispatching = false;                                                          
  if ( mask & RTEMS_ASR_MASK ) {                                                          
    40027344:   365005d4    tbz w20, #10, 400273fc <rtems_task_mode+0x17c>                
    bool is_asr_enabled = !_Modes_Is_asr_disabled( mode_set );                            
    40027348:   d27602e2    eor x2, x23, #0x400                                           
    4002734c:   530a2842    ubfx    w2, w2, #10, #1                                       
  __asm__ volatile (                                                                      
    40027350:   d53b4220    mrs x0, daif                                                  
    40027354:   d50342df    msr daifset, #0x2                                             
                                                                                          
    _Thread_State_acquire( executing, &lock_context );                                    
                                                                                          
    if ( is_asr_enabled != asr->is_enabled ) {                                            
    40027358:   39402343    ldrb    w3, [x26, #8]                                         
    4002735c:   6b02007f    cmp w3, w2                                                    
    40027360:   540004a0    b.eq    400273f4 <rtems_task_mode+0x174>  // b.none           
      asr->is_enabled = is_asr_enabled;                                                   
    40027364:   39002342    strb    w2, [x26, #8]                                         
                                                                                          
RTEMS_INLINE_ROUTINE rtems_signal_set _ASR_Swap_signals( ASR_Information *asr )           
{                                                                                         
  rtems_signal_set new_signals_posted;                                                    
                                                                                          
  new_signals_posted   = asr->signals_pending;                                            
    40027368:   29438f42    ldp w2, w3, [x26, #28]                                        
  asr->signals_pending = asr->signals_posted;                                             
    4002736c:   29038b43    stp w3, w2, [x26, #28]                                        
                                                                                          
      if ( _ASR_Swap_signals( asr ) != 0 ) {                                              
    40027370:   34000423    cbz w3, 400273f4 <rtems_task_mode+0x174>                      
RTEMS_INLINE_ROUTINE void _Chain_Append_if_is_off_chain_unprotected(                      
  Chain_Control *the_chain,                                                               
  Chain_Node    *the_node                                                                 
)                                                                                         
{                                                                                         
  if ( _Chain_Is_node_off_chain( the_node ) ) {                                           
    40027374:   f9401743    ldr x3, [x26, #40]                                            
  action->handler = handler;                                                              
    40027378:   d0000021    adrp    x1, 4002d000 <rtems_filesystem_eval_path_generic+0x20>
    4002737c:   91210021    add x1, x1, #0x840                                            
    40027380:   f9001f41    str x1, [x26, #56]                                            
  } else {                                                                                
    _Atomic_Fetch_or_ulong( &cpu_target->message, 0, ATOMIC_ORDER_RELEASE );              
    _CPU_SMP_Send_interrupt( _Per_CPU_Get_index( cpu_target ) );                          
  }                                                                                       
#else                                                                                     
 cpu_self->dispatch_necessary = true;                                                     
    40027384:   52800024    mov w4, #0x1                    // #1                         
    40027388:   39007324    strb    w4, [x25, #28]                                        
    4002738c:   9100a342    add x2, x26, #0x28                                            
    40027390:   b40005a3    cbz x3, 40027444 <rtems_task_mode+0x1c4>                      <== ALWAYS TAKEN
  __asm__ volatile (                                                                      
    40027394:   92407c00    and x0, x0, #0xffffffff                                       <== NOT EXECUTED
    40027398:   d51b4220    msr daif, x0                                                  <== NOT EXECUTED
  disable_level = cpu_self->thread_dispatch_disable_level;                                
    4002739c:   b9401b20    ldr w0, [x25, #24]                                            
  cpu_self->thread_dispatch_disable_level = disable_level + 1;                            
    400273a0:   11000400    add w0, w0, #0x1                                              
    400273a4:   b9001b20    str w0, [x25, #24]                                            
  __asm__ volatile (                                                                      
    400273a8:   d53b4233    mrs x19, daif                                                 
    400273ac:   d50342df    msr daifset, #0x2                                             
  ( *scheduler->Operations.schedule )( scheduler, the_thread );                           
    400273b0:   900000c0    adrp    x0, 4003f000 <__fputwc+0x60>                          
    400273b4:   913c6000    add x0, x0, #0xf18                                            
    400273b8:   aa1803e1    mov x1, x24                                                   
    400273bc:   f9400802    ldr x2, [x0, #16]                                             
    400273c0:   d63f0040    blr x2                                                        
  __asm__ volatile (                                                                      
    400273c4:   92407e73    and x19, x19, #0xffffffff                                     
    400273c8:   d51b4233    msr daif, x19                                                 
                                                                                          
    cpu_self = _Thread_Dispatch_disable();                                                
    _Thread_State_acquire( executing, &lock_context );                                    
    _Scheduler_Schedule( executing );                                                     
    _Thread_State_release( executing, &lock_context );                                    
    _Thread_Dispatch_direct( cpu_self );                                                  
    400273cc:   aa1903e0    mov x0, x25                                                   
    400273d0:   94000bd4    bl  4002a320 <_Thread_Dispatch_direct>                        
  }                                                                                       
                                                                                          
  return RTEMS_SUCCESSFUL;                                                                
    400273d4:   52800000    mov w0, #0x0                    // #0                         
}                                                                                         
    400273d8:   a94153f3    ldp x19, x20, [sp, #16]                                       
    400273dc:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    400273e0:   a94363f7    ldp x23, x24, [sp, #48]                                       
    400273e4:   a9446bf9    ldp x25, x26, [sp, #64]                                       
    400273e8:   f9402bfb    ldr x27, [sp, #80]                                            
    400273ec:   a8c67bfd    ldp x29, x30, [sp], #96                                       
    400273f0:   d65f03c0    ret                                                           
    400273f4:   92407c00    and x0, x0, #0xffffffff                                       
    400273f8:   d51b4220    msr daif, x0                                                  
  return RTEMS_SUCCESSFUL;                                                                
    400273fc:   52800000    mov w0, #0x0                    // #0                         
  if ( preempt_enabled || needs_asr_dispatching ) {                                       
    40027400:   35fffcf6    cbnz    w22, 4002739c <rtems_task_mode+0x11c>                 
    40027404:   a9446bf9    ldp x25, x26, [sp, #64]                                       
}                                                                                         
    40027408:   a94153f3    ldp x19, x20, [sp, #16]                                       
    4002740c:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40027410:   a94363f7    ldp x23, x24, [sp, #48]                                       
    40027414:   f9402bfb    ldr x27, [sp, #80]                                            
    40027418:   a8c67bfd    ldp x29, x30, [sp], #96                                       
    4002741c:   d65f03c0    ret                                                           
 */                                                                                       
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (                                    
  rtems_mode mode_set                                                                     
)                                                                                         
{                                                                                         
  _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );                               
    40027420:   924002e0    and x0, x23, #0x1                                             
    40027424:   94001487    bl  4002c640 <_CPU_ISR_Set_level>                             
  if ( mask & RTEMS_ASR_MASK ) {                                                          
    40027428:   3657feb4    tbz w20, #10, 400273fc <rtems_task_mode+0x17c>                <== NEVER TAKEN
    4002742c:   17ffffc7    b   40027348 <rtems_task_mode+0xc8>                           
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;                     
    40027430:   b900f31f    str wzr, [x24, #240]                                          
  if ( mask & RTEMS_INTERRUPT_MASK ) {                                                    
    40027434:   34fff89b    cbz w27, 40027344 <rtems_task_mode+0xc4>                      
    40027438:   17fffffa    b   40027420 <rtems_task_mode+0x1a0>                          
    return RTEMS_INVALID_ADDRESS;                                                         
    4002743c:   52800120    mov w0, #0x9                    // #9                         
}                                                                                         
    40027440:   d65f03c0    ret                                                           
  old_last = tail->previous;                                                              
    40027444:   f940bb03    ldr x3, [x24, #368]                                           
    40027448:   9105a301    add x1, x24, #0x168                                           
  the_node->next = tail;                                                                  
    4002744c:   f9001741    str x1, [x26, #40]                                            
  tail->previous = the_node;                                                              
    40027450:   f900bb02    str x2, [x24, #368]                                           
  old_last->next = the_node;                                                              
    40027454:   f9000062    str x2, [x3]                                                  
  the_node->previous = old_last;                                                          
    40027458:   f9001b43    str x3, [x26, #48]                                            
    4002745c:   92407c00    and x0, x0, #0xffffffff                                       
    40027460:   d51b4220    msr daif, x0                                                  
  if ( preempt_enabled || needs_asr_dispatching ) {                                       
    40027464:   17ffffce    b   4002739c <rtems_task_mode+0x11c>                          
    ...                                                                                   
                                                                                          

00000000400274f0 <rtems_task_set_scheduler>: rtems_status_code rtems_task_set_scheduler( rtems_id task_id, rtems_id scheduler_id, rtems_task_priority priority ) {
    400274f0:   a9b77bfd    stp x29, x30, [sp, #-144]!                                    
    400274f4:   910003fd    mov x29, sp                                                   
    400274f8:   a9025bf5    stp x21, x22, [sp, #32]                                       
    400274fc:   2a0003f5    mov w21, w0                                                   
  if ( index >= _Scheduler_Count ) {                                                      
    40027500:   52800020    mov w0, #0x1                    // #1                         
    40027504:   72a1e020    movk    w0, #0xf01, lsl #16                                   
    40027508:   a90363f7    stp x23, x24, [sp, #48]                                       
    4002750c:   6b00003f    cmp w1, w0                                                    
    40027510:   54000581    b.ne    400275c0 <rtems_task_set_scheduler+0xd0>  // b.any    
    40027514:   a90153f3    stp x19, x20, [sp, #16]                                       
    40027518:   d0000094    adrp    x20, 40039000 <__ascii_mbtowc+0x68>                   
    4002751c:   9138e294    add x20, x20, #0xe38                                          
    40027520:   2a0203f3    mov w19, w2                                                   
  return ( *scheduler->Operations.map_priority )( scheduler, priority );                  
    40027524:   aa1403e0    mov x0, x20                                                   
    40027528:   aa1303e1    mov x1, x19                                                   
    return RTEMS_INVALID_ID;                                                              
  }                                                                                       
                                                                                          
  core_priority = _RTEMS_Priority_To_core( scheduler, priority, &valid );                 
  if ( !valid ) {                                                                         
    return RTEMS_INVALID_PRIORITY;                                                        
    4002752c:   52800277    mov w23, #0x13                      // #19                    
    40027530:   f9401e82    ldr x2, [x20, #56]                                            
    40027534:   f9403e96    ldr x22, [x20, #120]                                          
    40027538:   d63f0040    blr x2                                                        
  if ( !valid ) {                                                                         
    4002753c:   eb1302df    cmp x22, x19                                                  
    40027540:   aa0003f6    mov x22, x0                                                   
    40027544:   54000303    b.cc    400275a4 <rtems_task_set_scheduler+0xb4>  // b.lo, b.ul, b.last
  }                                                                                       
                                                                                          
  _Thread_queue_Context_initialize( &queue_context );                                     
  the_thread = _Thread_Get( task_id, &queue_context.Lock_context.Lock_context );          
    40027548:   2a1503e0    mov w0, w21                                                   
    4002754c:   910143e1    add x1, sp, #0x50                                             
    40027550:   94000944    bl  40029a60 <_Thread_Get>                                    
    40027554:   aa0003f3    mov x19, x0                                                   
                                                                                          
  if ( the_thread == NULL ) {                                                             
    40027558:   b4000320    cbz x0, 400275bc <rtems_task_set_scheduler+0xcc>              
  disable_level = cpu_self->thread_dispatch_disable_level;                                
    4002755c:   900006f5    adrp    x21, 40103000 <_RTEMS_tasks_Objects+0xc38>            
    40027560:   912302b5    add x21, x21, #0x8c0                                          
  ISR_lock_Context         lock_context;                                                  
  const Scheduler_Control *old_scheduler;                                                 
                                                                                          
#endif                                                                                    
                                                                                          
  if ( the_thread->Wait.queue != NULL ) {                                                 
    40027564:   f9404e61    ldr x1, [x19, #152]                                           
    40027568:   52800197    mov w23, #0xc                       // #12                    
    4002756c:   b9401aa0    ldr w0, [x21, #24]                                            
  cpu_self->thread_dispatch_disable_level = disable_level + 1;                            
    40027570:   11000400    add w0, w0, #0x1                                              
    40027574:   b9001aa0    str w0, [x21, #24]                                            
    40027578:   b4000301    cbz x1, 400275d8 <rtems_task_set_scheduler+0xe8>              
    4002757c:   b94053e0    ldr w0, [sp, #80]                                             
    40027580:   d51b4220    msr daif, x0                                                  
                                                                                          
  status = _Scheduler_Set( scheduler, the_thread, core_priority );                        
                                                                                          
  _Thread_State_release_critical( the_thread, &state_context );                           
  _Thread_Wait_release( the_thread, &queue_context );                                     
  _Thread_Dispatch_enable( cpu_self );                                                    
    40027584:   aa1503e0    mov x0, x21                                                   
    40027588:   9400091e    bl  40029a00 <_Thread_Dispatch_enable>                        
  return _Status_Get( status );                                                           
}                                                                                         
    4002758c:   2a1703e0    mov w0, w23                                                   
  _Thread_Dispatch_enable( cpu_self );                                                    
    40027590:   a94153f3    ldp x19, x20, [sp, #16]                                       
}                                                                                         
    40027594:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    40027598:   a94363f7    ldp x23, x24, [sp, #48]                                       
    4002759c:   a8c97bfd    ldp x29, x30, [sp], #144                                      
    400275a0:   d65f03c0    ret                                                           
    400275a4:   2a1703e0    mov w0, w23                                                   
    400275a8:   a94153f3    ldp x19, x20, [sp, #16]                                       
    400275ac:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    400275b0:   a94363f7    ldp x23, x24, [sp, #48]                                       
    400275b4:   a8c97bfd    ldp x29, x30, [sp], #144                                      
    400275b8:   d65f03c0    ret                                                           
    400275bc:   a94153f3    ldp x19, x20, [sp, #16]                                       
    return RTEMS_INVALID_ID;                                                              
    400275c0:   52800097    mov w23, #0x4                       // #4                     
}                                                                                         
    400275c4:   2a1703e0    mov w0, w23                                                   
    400275c8:   a9425bf5    ldp x21, x22, [sp, #32]                                       
    400275cc:   a94363f7    ldp x23, x24, [sp, #48]                                       
    400275d0:   a8c97bfd    ldp x29, x30, [sp], #144                                      
    400275d4:   d65f03c0    ret                                                           
  return the_thread->Scheduler.nodes;                                                     
    400275d8:   a9046bf9    stp x25, x26, [sp, #64]                                       
RTEMS_INLINE_ROUTINE void _Priority_Plain_extract(                                        
  Priority_Aggregation *aggregation,                                                      
  Priority_Node        *node                                                              
)                                                                                         
{                                                                                         
  _RBTree_Extract( &aggregation->Contributors, &node->Node.RBTree );                      
    400275dc:   91010278    add x24, x19, #0x40                                           
    400275e0:   aa1803e1    mov x1, x24                                                   
    400275e4:   f9403679    ldr x25, [x19, #104]                                          
    400275e8:   9100c337    add x23, x25, #0x30                                           
    400275ec:   9100233a    add x26, x25, #0x8                                            
    400275f0:   aa1703e0    mov x0, x23                                                   
    400275f4:   940003bb    bl  400284e0 <_RBTree_Extract>                                
 */                                                                                       
RTEMS_INLINE_ROUTINE bool _RBTree_Is_empty(                                               
  const RBTree_Control *the_rbtree                                                        
)                                                                                         
{                                                                                         
  return RB_EMPTY( the_rbtree );                                                          
    400275f8:   f9401b21    ldr x1, [x25, #48]                                            
  _Priority_Plain_extract(                                                                
    &old_scheduler_node->Wait.Priority,                                                   
    &the_thread->Real_priority                                                            
  );                                                                                      
                                                                                          
  if (                                                                                    
    400275fc:   b5000261    cbnz    x1, 40027648 <rtems_task_set_scheduler+0x158>         <== NEVER TAKEN
  _Thread_Scheduler_process_requests( the_thread );                                       
#else                                                                                     
  new_scheduler_node = old_scheduler_node;                                                
#endif                                                                                    
                                                                                          
  the_thread->Start.initial_priority = priority;                                          
    40027600:   f9009e76    str x22, [x19, #312]                                          
  unsigned int seq;                                                                       
                                                                                          
  seq = _SMP_sequence_lock_Write_begin( &node->Priority.Lock );                           
#endif                                                                                    
                                                                                          
  new_priority |= ( prepend_it ? 0 : SCHEDULER_PRIORITY_APPEND_FLAG );                    
    40027604:   b24002c4    orr x4, x22, #0x1                                             
  ( *scheduler->Operations.update_priority )(                                             
    40027608:   f9403662    ldr x2, [x19, #104]                                           
  node->priority = priority;                                                              
    4002760c:   f9001316    str x22, [x24, #32]                                           
  node->priority = priority;                                                              
    40027610:   f9001356    str x22, [x26, #32]                                           
    40027614:   aa1403e0    mov x0, x20                                                   
  RBTree_Control *the_rbtree,                                                             
  RBTree_Node    *the_node                                                                
)                                                                                         
{                                                                                         
  _Assert( _RBTree_Is_node_off_tree( the_node ) );                                        
  RB_ROOT( the_rbtree ) = the_node;                                                       
    40027618:   f9001b38    str x24, [x25, #48]                                           
    4002761c:   aa1303e1    mov x1, x19                                                   
  RB_PARENT( the_node, Node ) = NULL;                                                     
    40027620:   f9000b1f    str xzr, [x24, #16]                                           
  }                                                                                       
#endif                                                                                    
                                                                                          
  _Scheduler_Node_set_priority( new_scheduler_node, priority, false );                    
  _Scheduler_Update_priority( the_thread );                                               
  return STATUS_SUCCESSFUL;                                                               
    40027624:   52800017    mov w23, #0x0                       // #0                     
  RB_LEFT( the_node, Node ) = NULL;                                                       
    40027628:   f900227f    str xzr, [x19, #64]                                           
  ( *scheduler->Operations.update_priority )(                                             
    4002762c:   f9401a83    ldr x3, [x20, #48]                                            
  RB_RIGHT( the_node, Node ) = NULL;                                                      
    40027630:   f900071f    str xzr, [x24, #8]                                            
  RB_COLOR( the_node, Node ) = RB_BLACK;                                                  
    40027634:   b9001b1f    str wzr, [x24, #24]                                           
  node->Priority.value = new_priority;                                                    
    40027638:   f9002724    str x4, [x25, #72]                                            
    4002763c:   d63f0060    blr x3                                                        
    40027640:   a9446bf9    ldp x25, x26, [sp, #64]                                       
  return STATUS_SUCCESSFUL;                                                               
    40027644:   17ffffce    b   4002757c <rtems_task_set_scheduler+0x8c>                  
    _Priority_Plain_insert(                                                               
    40027648:   f9403260    ldr x0, [x19, #96]                                            <== NOT EXECUTED
                                                                                          
  link = _RBTree_Root_reference( the_rbtree );                                            
  parent = NULL;                                                                          
  is_new_minimum = true;                                                                  
                                                                                          
  while ( *link != NULL ) {                                                               
    4002764c:   14000002    b   40027654 <rtems_task_set_scheduler+0x164>                 <== NOT EXECUTED
    40027650:   aa0303e1    mov x1, x3                                                    <== NOT EXECUTED
    parent = *link;                                                                       
                                                                                          
    if ( ( *less )( key, parent ) ) {                                                     
    40027654:   f9401023    ldr x3, [x1, #32]                                             <== NOT EXECUTED
  return &RB_LEFT( the_node, Node );                                                      
    40027658:   91002022    add x2, x1, #0x8                                              <== NOT EXECUTED
    4002765c:   eb03001f    cmp x0, x3                                                    <== NOT EXECUTED
    40027660:   9a812042    csel    x2, x2, x1, cs  // cs = hs, nlast                     <== NOT EXECUTED
  while ( *link != NULL ) {                                                               
    40027664:   f9400043    ldr x3, [x2]                                                  <== NOT EXECUTED
    40027668:   b5ffff43    cbnz    x3, 40027650 <rtems_task_set_scheduler+0x160>         <== NOT EXECUTED
  RB_SET( child, parent, Node );                                                          
    4002766c:   a900871f    stp xzr, x1, [x24, #8]                                        <== NOT EXECUTED
    40027670:   52800023    mov w3, #0x1                    // #1                         <== NOT EXECUTED
      is_new_minimum = false;                                                             
    }                                                                                     
  }                                                                                       
                                                                                          
  _RBTree_Add_child( the_node, parent, link );                                            
  _RBTree_Insert_color( the_rbtree, the_node );                                           
    40027674:   aa1703e0    mov x0, x23                                                   <== NOT EXECUTED
  RB_SET( child, parent, Node );                                                          
    40027678:   f900227f    str xzr, [x19, #64]                                           <== NOT EXECUTED
  _RBTree_Insert_color( the_rbtree, the_node );                                           
    4002767c:   aa1803e1    mov x1, x24                                                   <== NOT EXECUTED
  RB_SET( child, parent, Node );                                                          
    40027680:   b9001b03    str w3, [x24, #24]                                            <== NOT EXECUTED
    return STATUS_RESOURCE_IN_USE;                                                        
    40027684:   52800197    mov w23, #0xc                       // #12                    <== NOT EXECUTED
  *link = child;                                                                          
    40027688:   f9000058    str x24, [x2]                                                 <== NOT EXECUTED
  _RBTree_Insert_color( the_rbtree, the_node );                                           
    4002768c:   940004a9    bl  40028930 <_RBTree_Insert_color>                           <== NOT EXECUTED
    40027690:   a9446bf9    ldp x25, x26, [sp, #64]                                       <== NOT EXECUTED
    40027694:   17ffffba    b   4002757c <rtems_task_set_scheduler+0x8c>                  <== NOT EXECUTED
    ...