=============================================================================== 0000000040027ad0 <_IO_Initialize_all_drivers>: #include bool _IO_All_drivers_initialized; void _IO_Initialize_all_drivers( void ) { 40027ad0: a9be7bfd stp x29, x30, [sp, #-32]! rtems_device_major_number major; _IO_All_drivers_initialized = true; 40027ad4: b00006e0 adrp x0, 40104000 { 40027ad8: 910003fd mov x29, sp 40027adc: a90153f3 stp x19, x20, [sp, #16] for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) 40027ae0: d00000c1 adrp x1, 40041000 <__trunctfdf2+0x170> 40027ae4: f9454834 ldr x20, [x1, #2704] _IO_All_drivers_initialized = true; 40027ae8: 52800021 mov w1, #0x1 // #1 40027aec: 39075001 strb w1, [x0, #468] for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) 40027af0: b4000134 cbz x20, 40027b14 <_IO_Initialize_all_drivers+0x44> <== NEVER TAKEN 40027af4: 52800013 mov w19, #0x0 // #0 (void) rtems_io_initialize( major, 0, NULL ); 40027af8: 2a1303e0 mov w0, w19 for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) 40027afc: 11000673 add w19, w19, #0x1 (void) rtems_io_initialize( major, 0, NULL ); 40027b00: d2800002 mov x2, #0x0 // #0 40027b04: 52800001 mov w1, #0x0 // #0 40027b08: 94000006 bl 40027b20 for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) 40027b0c: eb33429f cmp x20, w19, uxtw 40027b10: 54ffff48 b.hi 40027af8 <_IO_Initialize_all_drivers+0x28> // b.pmore } 40027b14: a94153f3 ldp x19, x20, [sp, #16] 40027b18: a8c27bfd ldp x29, x30, [sp], #32 40027b1c: d65f03c0 ret =============================================================================== 00000000400252f0 : rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) { 400252f0: a9bb7bfd stp x29, x30, [sp, #-80]! 400252f4: 910003fd mov x29, sp 400252f8: a90153f3 stp x19, x20, [sp, #16] 400252fc: 2a0203f4 mov w20, w2 40025300: a9025bf5 stp x21, x22, [sp, #32] 40025304: aa0003f6 mov x22, x0 40025308: 2a0103f5 mov w21, w1 4002530c: f9001bf7 str x23, [sp, #48] 40025310: aa0303f7 mov x23, x3 40025314: d503201f nop rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_chain_node *node = NULL; while ( sc == RTEMS_SUCCESSFUL && (node = rtems_chain_get( chain )) == NULL 40025318: aa1603e0 mov x0, x22 4002531c: 9400002d bl 400253d0 ) { rtems_event_set out; sc = rtems_event_receive( 40025320: 910133e3 add x3, sp, #0x4c && (node = rtems_chain_get( chain )) == NULL 40025324: aa0003f3 mov x19, x0 sc = rtems_event_receive( 40025328: 2a1403e2 mov w2, w20 4002532c: 2a1503e0 mov w0, w21 40025330: 52800001 mov w1, #0x0 // #0 && (node = rtems_chain_get( chain )) == NULL 40025334: b5000133 cbnz x19, 40025358 sc = rtems_event_receive( 40025338: 97fffec2 bl 40024e40 while ( 4002533c: 34fffee0 cbz w0, 40025318 <== NEVER TAKEN } *node_ptr = node; return sc; } 40025340: a9425bf5 ldp x21, x22, [sp, #32] *node_ptr = node; 40025344: f90002f3 str x19, [x23] } 40025348: a94153f3 ldp x19, x20, [sp, #16] 4002534c: f9401bf7 ldr x23, [sp, #48] 40025350: a8c57bfd ldp x29, x30, [sp], #80 40025354: d65f03c0 ret 40025358: a9425bf5 ldp x21, x22, [sp, #32] *node_ptr = node; 4002535c: f90002f3 str x19, [x23] 40025360: 52800000 mov w0, #0x0 // #0 } 40025364: a94153f3 ldp x19, x20, [sp, #16] 40025368: f9401bf7 ldr x23, [sp, #48] 4002536c: a8c57bfd ldp x29, x30, [sp], #80 40025370: d65f03c0 ret ... =============================================================================== 000000004002c790 : 4002c790: 900006a0 adrp x0, 40100000 <== NOT EXECUTED 4002c794: 9118c001 add x1, x0, #0x630 <== NOT EXECUTED return info->objects_per_block | RTEMS_UNLIMITED_OBJECTS; 4002c798: 794c6000 ldrh w0, [x0, #1584] <== NOT EXECUTED 4002c79c: 79404421 ldrh w1, [x1, #34] <== NOT EXECUTED 4002c7a0: 7100003f cmp w1, #0x0 <== NOT EXECUTED 4002c7a4: 32010021 orr w1, w1, #0x80000000 <== NOT EXECUTED 4002c7a8: 1a810000 csel w0, w0, w1, eq // eq = none <== NOT EXECUTED uint32_t rtems_configuration_get_maximum_extensions( void ) { return get_config_max( &_Extension_Information ); } 4002c7ac: d65f03c0 ret <== NOT EXECUTED =============================================================================== 0000000040028ea0 : RTEMS_SYSINIT_IDLE_THREADS, RTEMS_SYSINIT_ORDER_MIDDLE ); void rtems_initialize_executive(void) { 40028ea0: a9be7bfd stp x29, x30, [sp, #-32]! 40028ea4: 910003fd mov x29, sp 40028ea8: a90153f3 stp x19, x20, [sp, #16] const rtems_sysinit_item *item; /* Invoke the registered system initialization handlers */ RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) { 40028eac: f00000b4 adrp x20, 4003f000 <_Linker_set__Sysinit__Console_simple_Initialize> 40028eb0: 91008294 add x20, x20, #0x20 RTEMS_INLINE_ROUTINE uintptr_t _Linker_set_Obfuscate( const void *ptr ) { uintptr_t addr; addr = (uintptr_t) ptr; 40028eb4: d00000b3 adrp x19, 4003e000 40028eb8: 913ea273 add x19, x19, #0xfa8 40028ebc: eb14027f cmp x19, x20 40028ec0: 540000c0 b.eq 40028ed8 // b.none <== NEVER TAKEN 40028ec4: d503201f nop ( *item->handler )(); 40028ec8: f8408660 ldr x0, [x19], #8 40028ecc: d63f0000 blr x0 RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) { 40028ed0: eb14027f cmp x19, x20 40028ed4: 54ffffa1 b.ne 40028ec8 // b.any 40028ed8: b00006e0 adrp x0, 40105000 40028edc: 52800041 mov w1, #0x2 // #2 40028ee0: b90a0801 str w1, [x0, #2568] _System_state_Set( SYSTEM_STATE_UP ); _SMP_Request_start_multitasking(); _Thread_Start_multitasking(); 40028ee4: 940005c7 bl 4002a600 <_Thread_Start_multitasking> ... =============================================================================== 00000000400263d0 : rtems_status_code rtems_io_register_driver( rtems_device_major_number major, const rtems_driver_address_table *driver_table, rtems_device_major_number *registered_major ) { 400263d0: a9bc7bfd stp x29, x30, [sp, #-64]! 400263d4: 910003fd mov x29, sp 400263d8: a90153f3 stp x19, x20, [sp, #16] 400263dc: 2a0003f3 mov w19, w0 400263e0: aa0103f4 mov x20, x1 400263e4: a9025bf5 stp x21, x22, [sp, #32] 400263e8: aa0203f5 mov x21, x2 400263ec: f9001bf7 str x23, [sp, #48] rtems_device_major_number major_limit = _IO_Number_of_drivers; 400263f0: 900000b7 adrp x23, 4003a000 <__sfp_handle_exceptions+0x40> 400263f4: f9429af6 ldr x22, [x23, #1328] ISR_lock_Context lock_context; if ( rtems_interrupt_is_in_progress() ) 400263f8: 940002b2 bl 40026ec0 <_ISR_Is_in_progress> 400263fc: 72001c1f tst w0, #0xff 40026400: 540002c1 b.ne 40026458 // b.any return RTEMS_CALLED_FROM_ISR; if ( registered_major == NULL ) 40026404: b40003b5 cbz x21, 40026478 return RTEMS_INVALID_ADDRESS; /* Set it to an invalid value */ *registered_major = major_limit; 40026408: b90002b6 str w22, [x21] if ( driver_table == NULL ) 4002640c: b4000374 cbz x20, 40026478 return table->initialization_entry == NULL && table->open_entry == NULL; 40026410: f9400280 ldr x0, [x20] 40026414: b40002e0 cbz x0, 40026470 return RTEMS_INVALID_ADDRESS; if ( rtems_io_is_empty_table( driver_table ) ) return RTEMS_INVALID_ADDRESS; if ( major >= major_limit ) 40026418: 6b1302df cmp w22, w19 4002641c: 540009c9 b.ls 40026554 // b.plast __asm__ volatile ( 40026420: d53b4223 mrs x3, daif 40026424: d50342df msr daifset, #0x2 return RTEMS_INVALID_NUMBER; _IO_Driver_registration_acquire( &lock_context ); if ( major == 0 ) { 40026428: 34000773 cbz w19, 40026514 _IO_Driver_registration_release( &lock_context ); return sc; } major = *registered_major; } else { rtems_driver_address_table *const table = _IO_Driver_address_table + major; 4002642c: 52800600 mov w0, #0x30 // #48 40026430: 900006e1 adrp x1, 40102000 <_Configuration_Scheduler_priority_dflt+0x15d0> 40026434: 91096021 add x1, x1, #0x258 40026438: 9ba07e60 umull x0, w19, w0 4002643c: 8b000022 add x2, x1, x0 return table->initialization_entry == NULL && table->open_entry == NULL; 40026440: f8606820 ldr x0, [x1, x0] 40026444: b4000260 cbz x0, 40026490 __asm__ volatile ( 40026448: 92407c63 and x3, x3, #0xffffffff 4002644c: d51b4223 msr daif, x3 if ( !rtems_io_is_empty_table( table ) ) { _IO_Driver_registration_release( &lock_context ); return RTEMS_RESOURCE_IN_USE; 40026450: 52800180 mov w0, #0xc // #12 40026454: 14000002 b 4002645c return RTEMS_CALLED_FROM_ISR; 40026458: 52800240 mov w0, #0x12 // #18 /* The driver will be initialized together with all other drivers * in a later stage by _IO_Initialize_all_drivers(). */ return RTEMS_SUCCESSFUL; } } 4002645c: a94153f3 ldp x19, x20, [sp, #16] 40026460: a9425bf5 ldp x21, x22, [sp, #32] 40026464: f9401bf7 ldr x23, [sp, #48] 40026468: a8c47bfd ldp x29, x30, [sp], #64 4002646c: d65f03c0 ret return table->initialization_entry == NULL && table->open_entry == NULL; 40026470: f9400680 ldr x0, [x20, #8] 40026474: b5fffd20 cbnz x0, 40026418 return RTEMS_INVALID_ADDRESS; 40026478: 52800120 mov w0, #0x9 // #9 } 4002647c: a94153f3 ldp x19, x20, [sp, #16] 40026480: a9425bf5 ldp x21, x22, [sp, #32] 40026484: f9401bf7 ldr x23, [sp, #48] 40026488: a8c47bfd ldp x29, x30, [sp], #64 4002648c: d65f03c0 ret return table->initialization_entry == NULL && table->open_entry == NULL; 40026490: f9400440 ldr x0, [x2, #8] 40026494: b5fffda0 cbnz x0, 40026448 _IO_Driver_address_table [major] = *driver_table; 40026498: 2a1303e2 mov w2, w19 4002649c: d2800600 mov x0, #0x30 // #48 *registered_major = major; 400264a0: b90002b3 str w19, [x21] _IO_Driver_address_table [major] = *driver_table; 400264a4: f9400284 ldr x4, [x20] 400264a8: 9b007c42 mul x2, x2, x0 400264ac: 8b020020 add x0, x1, x2 400264b0: f8226824 str x4, [x1, x2] 400264b4: f9400681 ldr x1, [x20, #8] 400264b8: f9000401 str x1, [x0, #8] 400264bc: f9400a81 ldr x1, [x20, #16] 400264c0: f9000801 str x1, [x0, #16] 400264c4: f9400e81 ldr x1, [x20, #24] 400264c8: f9000c01 str x1, [x0, #24] 400264cc: f9401281 ldr x1, [x20, #32] 400264d0: f9001001 str x1, [x0, #32] 400264d4: f9401681 ldr x1, [x20, #40] 400264d8: f9001401 str x1, [x0, #40] 400264dc: 92407c63 and x3, x3, #0xffffffff 400264e0: d51b4223 msr daif, x3 if ( _IO_All_drivers_initialized ) { 400264e4: b00006e0 adrp x0, 40103000 <_Thread_Heads+0x8> 400264e8: 39617001 ldrb w1, [x0, #2140] return RTEMS_SUCCESSFUL; 400264ec: 52800000 mov w0, #0x0 // #0 if ( _IO_All_drivers_initialized ) { 400264f0: 34fffb61 cbz w1, 4002645c <== NEVER TAKEN return rtems_io_initialize( major, 0, NULL ); 400264f4: 2a1303e0 mov w0, w19 400264f8: d2800002 mov x2, #0x0 // #0 } 400264fc: a94153f3 ldp x19, x20, [sp, #16] return rtems_io_initialize( major, 0, NULL ); 40026500: 52800001 mov w1, #0x0 // #0 } 40026504: a9425bf5 ldp x21, x22, [sp, #32] 40026508: f9401bf7 ldr x23, [sp, #48] 4002650c: a8c47bfd ldp x29, x30, [sp], #64 return rtems_io_initialize( major, 0, NULL ); 40026510: 17ffff9c b 40026380 rtems_device_major_number n = _IO_Number_of_drivers; 40026514: f9429ae5 ldr x5, [x23, #1328] 40026518: 2a0503e4 mov w4, w5 for ( m = 0; m < n; ++m ) { 4002651c: 34000325 cbz w5, 40026580 <== NEVER TAKEN 40026520: 900006e1 adrp x1, 40102000 <_Configuration_Scheduler_priority_dflt+0x15d0> 40026524: 91096021 add x1, x1, #0x258 40026528: aa0103e0 mov x0, x1 4002652c: 14000005 b 40026540 40026530: 11000673 add w19, w19, #0x1 40026534: 9100c000 add x0, x0, #0x30 40026538: 6b13009f cmp w4, w19 4002653c: 54000180 b.eq 4002656c // b.none return table->initialization_entry == NULL && table->open_entry == NULL; 40026540: f9400002 ldr x2, [x0] 40026544: b5ffff62 cbnz x2, 40026530 40026548: f9400402 ldr x2, [x0, #8] 4002654c: b5ffff22 cbnz x2, 40026530 40026550: 17ffffd2 b 40026498 return RTEMS_INVALID_NUMBER; 40026554: 52800140 mov w0, #0xa // #10 } 40026558: a94153f3 ldp x19, x20, [sp, #16] 4002655c: a9425bf5 ldp x21, x22, [sp, #32] 40026560: f9401bf7 ldr x23, [sp, #48] 40026564: a8c47bfd ldp x29, x30, [sp], #64 40026568: d65f03c0 ret *major = m; 4002656c: b90002a5 str w5, [x21] 40026570: 92407c63 and x3, x3, #0xffffffff 40026574: d51b4223 msr daif, x3 return RTEMS_TOO_MANY; 40026578: 528000a0 mov w0, #0x5 // #5 return sc; 4002657c: 17ffffb8 b 4002645c *major = m; 40026580: b90002bf str wzr, [x21] <== NOT EXECUTED if ( m != n ) 40026584: 17fffffb b 40026570 <== NOT EXECUTED ... =============================================================================== 0000000040024770 : return big_enough; } void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size) { 40024770: a9bb7bfd stp x29, x30, [sp, #-80]! 40024774: 910003fd mov x29, sp void *ptr = NULL; rtems_chain_control *free_chain = &control->free_chunk_chain; rtems_rbtree_control *chunk_tree = &control->chunk_tree; uintptr_t alignment = control->alignment; 40024778: f9401c02 ldr x2, [x0, #56] { 4002477c: a9025bf5 stp x21, x22, [sp, #32] uintptr_t excess = value % alignment; 40024780: 9ac20835 udiv x21, x1, x2 40024784: 9b0286b5 msub x21, x21, x2, x1 if (excess > 0) { 40024788: b40004b5 cbz x21, 4002481c value += alignment - excess; 4002478c: 8b010042 add x2, x2, x1 40024790: cb150055 sub x21, x2, x21 uintptr_t aligned_size = align_up(alignment, size); if (size > 0 && size <= aligned_size) { 40024794: eb15003f cmp x1, x21 40024798: 1a9f87e2 cset w2, ls // ls = plast 4002479c: f100003f cmp x1, #0x0 400247a0: 7a401844 ccmp w2, #0x0, #0x4, ne // ne = any 400247a4: 54000340 b.eq 4002480c // b.none return _Chain_Immutable_head( the_chain )->next; 400247a8: aa0003e1 mov x1, x0 400247ac: a90153f3 stp x19, x20, [sp, #16] 400247b0: f8408433 ldr x19, [x1], #8 while (current != tail && big_enough == NULL) { 400247b4: eb01027f cmp x19, x1 400247b8: 54000280 b.eq 40024808 // b.none 400247bc: d503201f nop if (free_chunk->size >= size) { 400247c0: f9401e74 ldr x20, [x19, #56] 400247c4: eb1402bf cmp x21, x20 400247c8: 54000188 b.hi 400247f8 // b.pmore rtems_rbheap_chunk *free_chunk = search_free_chunk(free_chain, aligned_size); if (free_chunk != NULL) { uintptr_t free_size = free_chunk->size; if (free_size > aligned_size) { 400247cc: eb15029f cmp x20, x21 400247d0: 540002c8 b.hi 40024828 // b.pmore previous = the_node->previous; 400247d4: a9400662 ldp x2, x1, [x19] ptr = (void *) new_chunk->begin; } } else { rtems_chain_extract_unprotected(&free_chunk->chain_node); rtems_chain_set_off_chain(&free_chunk->chain_node); ptr = (void *) free_chunk->begin; 400247d8: f9401a60 ldr x0, [x19, #48] next->previous = previous; 400247dc: f9000441 str x1, [x2, #8] } } } return ptr; } 400247e0: a9425bf5 ldp x21, x22, [sp, #32] previous->next = next; 400247e4: f9000022 str x2, [x1] node->next = NULL; 400247e8: f900027f str xzr, [x19] return ptr; 400247ec: a94153f3 ldp x19, x20, [sp, #16] } 400247f0: a8c57bfd ldp x29, x30, [sp], #80 400247f4: d65f03c0 ret return the_node->next; 400247f8: f9400273 ldr x19, [x19] while (current != tail && big_enough == NULL) { 400247fc: eb13003f cmp x1, x19 40024800: 54fffe01 b.ne 400247c0 // b.any <== NEVER TAKEN 40024804: d503201f nop 40024808: a94153f3 ldp x19, x20, [sp, #16] void *ptr = NULL; 4002480c: d2800000 mov x0, #0x0 // #0 } 40024810: a9425bf5 ldp x21, x22, [sp, #32] 40024814: a8c57bfd ldp x29, x30, [sp], #80 40024818: d65f03c0 ret 4002481c: aa0103f5 mov x21, x1 40024820: 52800022 mov w2, #0x1 // #1 40024824: 17ffffde b 4002479c return _Chain_Immutable_head( the_chain )->next; 40024828: f9400c16 ldr x22, [x0, #24] return &the_chain->Tail.Node; 4002482c: a90363f7 stp x23, x24, [sp, #48] 40024830: 91008017 add x23, x0, #0x20 return _Chain_Immutable_head( the_chain )->next; 40024834: 91006018 add x24, x0, #0x18 if ( !_Chain_Is_empty(the_chain)) 40024838: eb1702df cmp x22, x23 4002483c: 540002c0 b.eq 40024894 // b.none new_first = old_first->next; 40024840: f94002c1 ldr x1, [x22] head->next = new_first; 40024844: f9000c01 str x1, [x0, #24] new_chunk->begin = free_chunk->begin + new_free_size; 40024848: f9401a62 ldr x2, [x19, #48] uintptr_t new_free_size = free_size - aligned_size; 4002484c: cb150294 sub x20, x20, x21 new_first->previous = head; 40024850: f9000438 str x24, [x1, #8] node->next = NULL; 40024854: aa1603e1 mov x1, x22 free_chunk->size = new_free_size; 40024858: f9001e74 str x20, [x19, #56] new_chunk->begin = free_chunk->begin + new_free_size; 4002485c: 8b140054 add x20, x2, x20 new_chunk->size = aligned_size; 40024860: a90356d4 stp x20, x21, [x22, #48] rtems_rbtree_insert(tree, &chunk->tree_node, chunk_compare, true); 40024864: 52800023 mov w3, #0x1 // #1 40024868: 9100c000 add x0, x0, #0x30 4002486c: f801043f str xzr, [x1], #16 40024870: 90000002 adrp x2, 40024000 40024874: 91184042 add x2, x2, #0x610 40024878: 940000aa bl 40024b20 ptr = (void *) new_chunk->begin; 4002487c: a94153f3 ldp x19, x20, [sp, #16] 40024880: f9401ac0 ldr x0, [x22, #48] } 40024884: a9425bf5 ldp x21, x22, [sp, #32] 40024888: a94363f7 ldp x23, x24, [sp, #48] 4002488c: a8c57bfd ldp x29, x30, [sp], #80 40024890: d65f03c0 ret (*control->extend_descriptors)(control); 40024894: f9402001 ldr x1, [x0, #64] 40024898: f90027e0 str x0, [sp, #72] 4002489c: d63f0020 blr x1 return _Chain_Immutable_head( the_chain )->next; 400248a0: f94027e0 ldr x0, [sp, #72] 400248a4: f9400c16 ldr x22, [x0, #24] if ( !_Chain_Is_empty(the_chain)) 400248a8: eb1602ff cmp x23, x22 400248ac: 54fffca1 b.ne 40024840 // b.any void *ptr = NULL; 400248b0: d2800000 mov x0, #0x0 // #0 400248b4: a94153f3 ldp x19, x20, [sp, #16] 400248b8: a94363f7 ldp x23, x24, [sp, #48] 400248bc: 17ffffd5 b 40024810 =============================================================================== 0000000040024a90 : const rtems_rbtree_control *the_rbtree, const rtems_rbtree_node *the_node, rtems_rbtree_compare compare, bool is_unique ) { 40024a90: a9bc7bfd stp x29, x30, [sp, #-64]! 40024a94: 910003fd mov x29, sp 40024a98: a90153f3 stp x19, x20, [sp, #16] */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Root( const RBTree_Control *the_rbtree ) { return RB_ROOT( the_rbtree ); 40024a9c: f9400013 ldr x19, [x0] 40024aa0: a9025bf5 stp x21, x22, [sp, #32] rtems_rbtree_node *iter_node = rtems_rbtree_root( the_rbtree ); rtems_rbtree_node *found = NULL; while ( iter_node != NULL ) { 40024aa4: b4000353 cbz x19, 40024b0c <== NEVER TAKEN 40024aa8: aa0103f4 mov x20, x1 40024aac: aa0203f5 mov x21, x2 40024ab0: f9001bf7 str x23, [sp, #48] 40024ab4: 12001c77 and w23, w3, #0xff rtems_rbtree_node *found = NULL; 40024ab8: d2800016 mov x22, #0x0 // #0 40024abc: d503201f nop rtems_rbtree_compare_result compare_result = ( *compare )( the_node, iter_node ); 40024ac0: aa1303e1 mov x1, x19 40024ac4: aa1403e0 mov x0, x20 40024ac8: d63f02a0 blr x21 if ( rtems_rbtree_is_equal( compare_result ) ) { 40024acc: f100001f cmp x0, #0x0 40024ad0: b5000160 cbnz x0, 40024afc 40024ad4: aa1303f6 mov x22, x19 found = iter_node; if ( is_unique ) 40024ad8: 35000077 cbnz w23, 40024ae4 */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Left( const RBTree_Node *the_node ) { return RB_LEFT( the_node, Node ); 40024adc: f9400273 ldr x19, [x19] while ( iter_node != NULL ) { 40024ae0: b5ffff13 cbnz x19, 40024ac0 } else { iter_node = rtems_rbtree_left( iter_node ); } } return found; 40024ae4: f9401bf7 ldr x23, [sp, #48] } 40024ae8: aa1603e0 mov x0, x22 40024aec: a94153f3 ldp x19, x20, [sp, #16] 40024af0: a9425bf5 ldp x21, x22, [sp, #32] 40024af4: a8c47bfd ldp x29, x30, [sp], #64 40024af8: d65f03c0 ret if ( rtems_rbtree_is_greater( compare_result ) ) { 40024afc: 54ffff0d b.le 40024adc */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Right( const RBTree_Node *the_node ) { return RB_RIGHT( the_node, Node ); 40024b00: f9400673 ldr x19, [x19, #8] while ( iter_node != NULL ) { 40024b04: b5fffdf3 cbnz x19, 40024ac0 40024b08: 17fffff7 b 40024ae4 rtems_rbtree_node *found = NULL; 40024b0c: d2800016 mov x22, #0x0 // #0 <== NOT EXECUTED 40024b10: 17fffff6 b 40024ae8 <== NOT EXECUTED ... =============================================================================== 0000000040025760 : 40025760: f900001f str xzr, [x0] rtems_rbtree_initialize_empty( the_rbtree ); count = number_nodes; next = starting_address; while ( count-- ) { 40025764: b4000363 cbz x3, 400257d0 <== NEVER TAKEN { 40025768: a9bc7bfd stp x29, x30, [sp, #-64]! 4002576c: 910003fd mov x29, sp 40025770: a90153f3 stp x19, x20, [sp, #16] 40025774: aa0203f3 mov x19, x2 40025778: d1000474 sub x20, x3, #0x1 4002577c: a9025bf5 stp x21, x22, [sp, #32] 40025780: aa0003f5 mov x21, x0 40025784: aa0403f6 mov x22, x4 40025788: a90363f7 stp x23, x24, [sp, #48] 4002578c: aa0103f7 mov x23, x1 40025790: 12001cb8 and w24, w5, #0xff 40025794: d503201f nop rtems_rbtree_insert( the_rbtree, next, compare, is_unique ); 40025798: aa1303e1 mov x1, x19 while ( count-- ) { 4002579c: d1000694 sub x20, x20, #0x1 rtems_rbtree_insert( the_rbtree, next, compare, is_unique ); 400257a0: 2a1803e3 mov w3, w24 400257a4: aa1703e2 mov x2, x23 400257a8: aa1503e0 mov x0, x21 400257ac: 94000031 bl 40025870 RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( const void *base, uintptr_t offset ) { return (void *)((uintptr_t)base + offset); 400257b0: 8b160273 add x19, x19, x22 while ( count-- ) { 400257b4: b100069f cmn x20, #0x1 400257b8: 54ffff01 b.ne 40025798 // b.any next = (rtems_rbtree_node *) _Addresses_Add_offset( next, node_size ); } } 400257bc: a94153f3 ldp x19, x20, [sp, #16] 400257c0: a9425bf5 ldp x21, x22, [sp, #32] 400257c4: a94363f7 ldp x23, x24, [sp, #48] 400257c8: a8c47bfd ldp x29, x30, [sp], #64 400257cc: d65f03c0 ret 400257d0: d65f03c0 ret <== NOT EXECUTED ...