=============================================================================== 0000000040026a20 : if (!control->buffer) 40026a20: f9400001 ldr x1, [x0] 40026a24: b4000901 cbz x1, 40026b44 int rtems_rfs_bitmap_create_search (rtems_rfs_bitmap_control* control) { 40026a28: a9be7bfd stp x29, x30, [sp, #-32]! rc = rtems_rfs_buffer_handle_request (control->fs, 40026a2c: 52800023 mov w3, #0x1 // #1 { 40026a30: 910003fd mov x29, sp rc = rtems_rfs_buffer_handle_request (control->fs, 40026a34: b9401002 ldr w2, [x0, #16] { 40026a38: f9000bf3 str x19, [sp, #16] 40026a3c: aa0003f3 mov x19, x0 rc = rtems_rfs_buffer_handle_request (control->fs, 40026a40: f9400400 ldr x0, [x0, #8] 40026a44: 94000163 bl 40026fd0 if (rc) 40026a48: 7100001f cmp w0, #0x0 40026a4c: 35000760 cbnz w0, 40026b38 <== NEVER TAKEN *map = rtems_rfs_buffer_data (control->buffer); 40026a50: f9400260 ldr x0, [x19] 40026a54: f9400400 ldr x0, [x0, #8] 40026a58: f9401c05 ldr x5, [x0, #56] rc = rtems_rfs_bitmap_load_map (control, &map); if (rc > 0) return rc; control->free = 0; 40026a5c: f900127f str xzr, [x19, #32] search_map = control->search_bits; 40026a60: f940166a ldr x10, [x19, #40] size = control->size; bit = 0; rtems_rfs_bitmap_check(control, search_map); *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR; 40026a64: 12800009 mov w9, #0xffffffff // #-1 size = control->size; 40026a68: f9400e63 ldr x3, [x19, #24] *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR; 40026a6c: b9000149 str w9, [x10] while (size) 40026a70: b40005c3 cbz x3, 40026b28 <== NEVER TAKEN 40026a74: 910010a5 add x5, x5, #0x4 { rtems_rfs_bitmap_element bits; int available; if (size < rtems_rfs_bitmap_element_bits ()) 40026a78: f1007c7f cmp x3, #0x1f bit = 0; 40026a7c: 52800006 mov w6, #0x0 // #0 mask >>= (rtems_rfs_bitmap_element_bits () - size); 40026a80: 5280040b mov w11, #0x20 // #32 return RTEMS_RFS_BITMAP_TEST_BIT (target, bit); 40026a84: 52800028 mov w8, #0x1 // #1 { bits = rtems_rfs_bitmap_merge (*map, 40026a88: b85fc0a4 ldur w4, [x5, #-4] if (size < rtems_rfs_bitmap_element_bits ()) 40026a8c: 54000208 b.hi 40026acc // b.pmore mask >>= (rtems_rfs_bitmap_element_bits () - size); 40026a90: 4b030161 sub w1, w11, w3 RTEMS_RFS_BITMAP_ELEMENT_SET, rtems_rfs_bitmap_mask_section (0, size)); available = size; 40026a94: 2a0303e0 mov w0, w3 40026a98: aa0303e7 mov x7, x3 mask >>= (rtems_rfs_bitmap_element_bits () - size); 40026a9c: 1ac12521 lsr w1, w9, w1 40026aa0: 0a010084 and w4, w4, w1 { bits = *map; available = rtems_rfs_bitmap_element_bits (); } if (rtems_rfs_bitmap_match (bits, RTEMS_RFS_BITMAP_ELEMENT_SET)) 40026aa4: 350001a4 cbnz w4, 40026ad8 for (b = 0; b < available; b++) if (!rtems_rfs_bitmap_test (bits, b)) control->free++; } size -= available; 40026aa8: cb070063 sub x3, x3, x7 /* Iterate from 0 to 1 less than the number of bits in an element */ if (bit == (rtems_rfs_bitmap_element_bits () - 1)) 40026aac: 71007cdf cmp w6, #0x1f 40026ab0: 54000300 b.eq 40026b10 // b.none rtems_rfs_bitmap_check(control, search_map); *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR; } } else bit++; 40026ab4: 110004c6 add w6, w6, #0x1 while (size) 40026ab8: b4000383 cbz x3, 40026b28 40026abc: 910010a5 add x5, x5, #0x4 bits = rtems_rfs_bitmap_merge (*map, 40026ac0: b85fc0a4 ldur w4, [x5, #-4] if (size < rtems_rfs_bitmap_element_bits ()) 40026ac4: f1007c7f cmp x3, #0x1f 40026ac8: 54fffe49 b.ls 40026a90 // b.plast 40026acc: d2800407 mov x7, #0x20 // #32 available = rtems_rfs_bitmap_element_bits (); 40026ad0: 2a0703e0 mov w0, w7 if (rtems_rfs_bitmap_match (bits, RTEMS_RFS_BITMAP_ELEMENT_SET)) 40026ad4: 34fffea4 cbz w4, 40026aa8 for (b = 0; b < available; b++) 40026ad8: 52800001 mov w1, #0x0 // #0 40026adc: d503201f nop return RTEMS_RFS_BITMAP_TEST_BIT (target, bit); 40026ae0: 1ac12102 lsl w2, w8, w1 if (!rtems_rfs_bitmap_test (bits, b)) 40026ae4: 11000421 add w1, w1, #0x1 40026ae8: 6a04005f tst w2, w4 40026aec: 54000080 b.eq 40026afc // b.none control->free++; 40026af0: f9401262 ldr x2, [x19, #32] 40026af4: 91000442 add x2, x2, #0x1 40026af8: f9001262 str x2, [x19, #32] for (b = 0; b < available; b++) 40026afc: 6b01001f cmp w0, w1 40026b00: 54ffff01 b.ne 40026ae0 // b.any size -= available; 40026b04: cb070063 sub x3, x3, x7 if (bit == (rtems_rfs_bitmap_element_bits () - 1)) 40026b08: 71007cdf cmp w6, #0x1f 40026b0c: 54fffd41 b.ne 40026ab4 // b.any if (size > 0) 40026b10: b40000c3 cbz x3, 40026b28 search_map++; 40026b14: 9100114a add x10, x10, #0x4 40026b18: 910010a5 add x5, x5, #0x4 bit = 0; 40026b1c: 52800006 mov w6, #0x0 // #0 *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR; 40026b20: b9000149 str w9, [x10] while (size) 40026b24: 17ffffe7 b 40026ac0 map++; } return 0; 40026b28: 52800000 mov w0, #0x0 // #0 } 40026b2c: f9400bf3 ldr x19, [sp, #16] 40026b30: a8c27bfd ldp x29, x30, [sp], #32 40026b34: d65f03c0 ret if (rc > 0) 40026b38: 54ffffac b.gt 40026b2c <== NOT EXECUTED *map = NULL; 40026b3c: d2800005 mov x5, #0x0 // #0 <== NOT EXECUTED 40026b40: 17ffffc7 b 40026a5c <== NOT EXECUTED return ENXIO; 40026b44: 528000c0 mov w0, #0x6 // #6 } 40026b48: d65f03c0 ret 40026b4c: 00000000 udf #0 =============================================================================== 0000000040026920 : int rtems_rfs_bitmap_map_alloc (rtems_rfs_bitmap_control* control, rtems_rfs_bitmap_bit seed, bool* allocated, rtems_rfs_bitmap_bit* bit) { 40026920: a9bc7bfd stp x29, x30, [sp, #-64]! 40026924: 910003fd mov x29, sp 40026928: a90153f3 stp x19, x20, [sp, #16] 4002692c: 2a0103f3 mov w19, w1 40026930: a9025bf5 stp x21, x22, [sp, #32] 40026934: aa0003f6 mov x22, x0 * seed up then from the seed down a window number of bits, then repeat the * process from the window distance from the seed, again above then * below. Keep moving out until all bits have been searched. */ upper_seed = seed; lower_seed = seed; 40026938: 2a0103f5 mov w21, w1 { 4002693c: a90363f7 stp x23, x24, [sp, #48] 40026940: aa0203f7 mov x23, x2 40026944: aa0303f8 mov x24, x3 *allocated = false; 40026948: 3900005f strb wzr, [x2] * we have searched all of the map. The seed may not be aligned to a window * boundary so we may need to search a partial window and this may also not * be balanced for the upper or lower seeds. We move to the limits, search * then return false if no clear bits are found. */ while (((upper_seed >= 0) && (upper_seed < control->size)) 4002694c: d503201f nop 40026950: 37f802d3 tbnz w19, #31, 400269a8 40026954: f9400ec0 ldr x0, [x22, #24] 40026958: 93407e74 sxtw x20, w19 4002695c: eb00029f cmp x20, x0 40026960: 54000242 b.cs 400269a8 // b.hs, b.nlast /* * Search up first so bits allocated in succession are grouped together. */ if (upper_seed < control->size) { *bit = upper_seed; 40026964: b9000313 str w19, [x24] rc = rtems_rfs_search_map_for_clear_bit (control, bit, allocated, 40026968: aa1703e2 mov x2, x23 4002696c: aa1803e1 mov x1, x24 40026970: aa1603e0 mov x0, x22 40026974: 52800023 mov w3, #0x1 // #1 40026978: 97fffe4e bl 400262b0 window, 1); if ((rc > 0) || *allocated) 4002697c: 7100001f cmp w0, #0x0 40026980: 5400042c b.gt 40026a04 <== NEVER TAKEN 40026984: 394002e0 ldrb w0, [x23] 40026988: 350003e0 cbnz w0, 40026a04 break; } if (lower_seed >= 0) 4002698c: 36f801d5 tbz w21, #31, 400269c4 /* * Do not bound the limits at the edges of the map. Do not update if an * edge has been passed. */ if (upper_seed < control->size) 40026990: f9400ec0 ldr x0, [x22, #24] 40026994: eb00029f cmp x20, x0 40026998: 54fffdc2 b.cs 40026950 // b.hs, b.nlast<== NEVER TAKEN upper_seed += window; 4002699c: 11200273 add w19, w19, #0x800 while (((upper_seed >= 0) && (upper_seed < control->size)) 400269a0: 36fffdb3 tbz w19, #31, 40026954 <== ALWAYS TAKEN 400269a4: d503201f nop || ((lower_seed >= 0) && (lower_seed < control->size))) 400269a8: 37f802f5 tbnz w21, #31, 40026a04 400269ac: f9400ec0 ldr x0, [x22, #24] 400269b0: eb35c01f cmp x0, w21, sxtw 400269b4: 54000289 b.ls 40026a04 // b.plast if (upper_seed < control->size) 400269b8: 93407e74 sxtw x20, w19 400269bc: eb00029f cmp x20, x0 400269c0: 54fffd23 b.cc 40026964 // b.lo, b.ul, b.last<== NEVER TAKEN *bit = lower_seed; 400269c4: b9000315 str w21, [x24] rc = rtems_rfs_search_map_for_clear_bit (control, bit, allocated, 400269c8: aa1703e2 mov x2, x23 400269cc: aa1803e1 mov x1, x24 400269d0: aa1603e0 mov x0, x22 400269d4: 12800003 mov w3, #0xffffffff // #-1 400269d8: 97fffe36 bl 400262b0 if ((rc > 0) || *allocated) 400269dc: 7100001f cmp w0, #0x0 400269e0: 5400012c b.gt 40026a04 <== NEVER TAKEN 400269e4: 394002e0 ldrb w0, [x23] 400269e8: 350000e0 cbnz w0, 40026a04 if (upper_seed < control->size) 400269ec: f9400ec1 ldr x1, [x22, #24] upper_seed += window; 400269f0: 11200260 add w0, w19, #0x800 if (lower_seed >= 0) lower_seed -= window; 400269f4: 512002b5 sub w21, w21, #0x800 upper_seed += window; 400269f8: eb01029f cmp x20, x1 400269fc: 1a933013 csel w19, w0, w19, cc // cc = lo, ul, last lower_seed -= window; 40026a00: 17ffffd4 b 40026950 } return 0; } 40026a04: 52800000 mov w0, #0x0 // #0 40026a08: a94153f3 ldp x19, x20, [sp, #16] 40026a0c: a9425bf5 ldp x21, x22, [sp, #32] 40026a10: a94363f7 ldp x23, x24, [sp, #48] 40026a14: a8c47bfd ldp x29, x30, [sp], #64 40026a18: d65f03c0 ret 40026a1c: 00000000 udf #0 =============================================================================== 0000000040026600 : { 40026600: a9be7bfd stp x29, x30, [sp, #-32]! 40026604: 910003fd mov x29, sp 40026608: a90153f3 stp x19, x20, [sp, #16] 4002660c: 2a0103f4 mov w20, w1 if (!control->buffer) 40026610: f9400001 ldr x1, [x0] 40026614: b4000561 cbz x1, 400266c0 rc = rtems_rfs_buffer_handle_request (control->fs, 40026618: b9401002 ldr w2, [x0, #16] 4002661c: aa0003f3 mov x19, x0 40026620: f9400400 ldr x0, [x0, #8] 40026624: 52800023 mov w3, #0x1 // #1 40026628: 9400026a bl 40026fd0 if (rc) 4002662c: 7100001f cmp w0, #0x0 40026630: 35000420 cbnz w0, 400266b4 <== NEVER TAKEN *map = rtems_rfs_buffer_data (control->buffer); 40026634: f9400260 ldr x0, [x19] 40026638: f9400400 ldr x0, [x0, #8] 4002663c: f9401c04 ldr x4, [x0, #56] return EINVAL; 40026640: 528002c0 mov w0, #0x16 // #22 if (bit >= control->size) 40026644: f9400e61 ldr x1, [x19, #24] 40026648: eb34c03f cmp x1, w20, sxtw 4002664c: 540002e9 b.ls 400266a8 // b.plast index = rtems_rfs_bitmap_map_index (bit); 40026650: 13057e82 asr w2, w20, #5 map[index] = rtems_rfs_bitmap_clear (element, 1 << offset); 40026654: 52800023 mov w3, #0x1 // #1 40026658: 1ad42061 lsl w1, w3, w20 return 0; 4002665c: 52800000 mov w0, #0x0 // #0 element = map[index]; 40026660: 93407c46 sxtw x6, w2 search_map = control->search_bits; 40026664: f9401667 ldr x7, [x19, #40] element = map[index]; 40026668: b8667885 ldr w5, [x4, x6, lsl #2] return RTEMS_RFS_BITMAP_CLEAR_BITS (target, bits); 4002666c: 2a050021 orr w1, w1, w5 map[index] = rtems_rfs_bitmap_clear (element, 1 << offset); 40026670: b8267881 str w1, [x4, x6, lsl #2] if (rtems_rfs_bitmap_match(element, map[index])) 40026674: 6b0100bf cmp w5, w1 40026678: 54000180 b.eq 400266a8 // b.none <== NEVER TAKEN index = rtems_rfs_bitmap_map_index (bit); 4002667c: 130a7e94 asr w20, w20, #10 search_map[index] = rtems_rfs_bitmap_clear (search_map[index], 1 << offset); 40026680: 1ac22062 lsl w2, w3, w2 rtems_rfs_buffer_mark_dirty (control->buffer); 40026684: f9400265 ldr x5, [x19] search_map[index] = rtems_rfs_bitmap_clear (search_map[index], 1 << offset); 40026688: 93407e94 sxtw x20, w20 control->free++; 4002668c: f9401261 ldr x1, [x19, #32] return RTEMS_RFS_BITMAP_CLEAR_BITS (target, bits); 40026690: b87478e4 ldr w4, [x7, x20, lsl #2] control->free++; 40026694: 91000421 add x1, x1, #0x1 return RTEMS_RFS_BITMAP_CLEAR_BITS (target, bits); 40026698: 2a020082 orr w2, w4, w2 search_map[index] = rtems_rfs_bitmap_clear (search_map[index], 1 << offset); 4002669c: b83478e2 str w2, [x7, x20, lsl #2] rtems_rfs_buffer_mark_dirty (control->buffer); 400266a0: 390000a3 strb w3, [x5] control->free++; 400266a4: f9001261 str x1, [x19, #32] } 400266a8: a94153f3 ldp x19, x20, [sp, #16] 400266ac: a8c27bfd ldp x29, x30, [sp], #32 400266b0: d65f03c0 ret if (rc > 0) 400266b4: 54ffffac b.gt 400266a8 <== NOT EXECUTED *map = NULL; 400266b8: d2800004 mov x4, #0x0 // #0 <== NOT EXECUTED 400266bc: 17ffffe1 b 40026640 <== NOT EXECUTED return ENXIO; 400266c0: 528000c0 mov w0, #0x6 // #6 } 400266c4: a94153f3 ldp x19, x20, [sp, #16] 400266c8: a8c27bfd ldp x29, x30, [sp], #32 400266cc: d65f03c0 ret =============================================================================== 0000000040026840 : if (!control->buffer) 40026840: f9400001 ldr x1, [x0] 40026844: b4000641 cbz x1, 4002690c { 40026848: a9bd7bfd stp x29, x30, [sp, #-48]! rc = rtems_rfs_buffer_handle_request (control->fs, 4002684c: 52800023 mov w3, #0x1 // #1 { 40026850: 910003fd mov x29, sp rc = rtems_rfs_buffer_handle_request (control->fs, 40026854: b9401002 ldr w2, [x0, #16] { 40026858: a90153f3 stp x19, x20, [sp, #16] 4002685c: aa0003f3 mov x19, x0 rc = rtems_rfs_buffer_handle_request (control->fs, 40026860: f9400400 ldr x0, [x0, #8] { 40026864: a9025bf5 stp x21, x22, [sp, #32] rc = rtems_rfs_buffer_handle_request (control->fs, 40026868: 940001da bl 40026fd0 if (rc) 4002686c: 7100001f cmp w0, #0x0 40026870: 35000460 cbnz w0, 400268fc <== NEVER TAKEN *map = rtems_rfs_buffer_data (control->buffer); 40026874: f9400276 ldr x22, [x19] 40026878: f94006c0 ldr x0, [x22, #8] 4002687c: f9401c00 ldr x0, [x0, #56] map[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR; 40026880: 52801fe1 mov w1, #0xff // #255 elements = rtems_rfs_bitmap_elements (control->size); 40026884: f9400e62 ldr x2, [x19, #24] control->free = control->size; 40026888: f9001262 str x2, [x19, #32] elements = rtems_rfs_bitmap_elements (control->size); 4002688c: d1000454 sub x20, x2, #0x1 40026890: d345fe95 lsr x21, x20, #5 40026894: 910006b5 add x21, x21, #0x1 map[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR; 40026898: d37ef6a2 lsl x2, x21, #2 4002689c: 94005dc4 bl 4003dfac last_search_bit = rtems_rfs_bitmap_map_offset (elements); 400268a0: 720012b5 ands w21, w21, #0x1f elements = rtems_rfs_bitmap_elements (elements); 400268a4: d34afe82 lsr x2, x20, #10 mask >>= (rtems_rfs_bitmap_element_bits () - size); 400268a8: 4b1503f4 neg w20, w21 400268ac: 12800000 mov w0, #0xffffffff // #-1 elements = rtems_rfs_bitmap_elements (elements); 400268b0: 91000455 add x21, x2, #0x1 mask >>= (rtems_rfs_bitmap_element_bits () - size); 400268b4: 1ad42414 lsr w20, w0, w20 400268b8: 1a801294 csel w20, w20, w0, ne // ne = any control->search_bits[elements - 1] = 400268bc: f9401663 ldr x3, [x19, #40] for (e = 0; e < (elements - 1); e++) 400268c0: b40000c2 cbz x2, 400268d8 control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR; 400268c4: aa0303e0 mov x0, x3 400268c8: d37ef442 lsl x2, x2, #2 400268cc: 52801fe1 mov w1, #0xff // #255 400268d0: 94005db7 bl 4003dfac 400268d4: aa0003e3 mov x3, x0 control->search_bits[elements - 1] = 400268d8: 8b150875 add x21, x3, x21, lsl #2 rtems_rfs_buffer_mark_dirty (control->buffer); 400268dc: 52800021 mov w1, #0x1 // #1 return 0; 400268e0: 52800000 mov w0, #0x0 // #0 control->search_bits[elements - 1] = 400268e4: b81fc2b4 stur w20, [x21, #-4] rtems_rfs_buffer_mark_dirty (control->buffer); 400268e8: 390002c1 strb w1, [x22] } 400268ec: a94153f3 ldp x19, x20, [sp, #16] 400268f0: a9425bf5 ldp x21, x22, [sp, #32] 400268f4: a8c37bfd ldp x29, x30, [sp], #48 400268f8: d65f03c0 ret if (rc > 0) 400268fc: 54ffff8c b.gt 400268ec <== NOT EXECUTED *map = NULL; 40026900: d2800000 mov x0, #0x0 // #0 <== NOT EXECUTED *map = rtems_rfs_buffer_data (control->buffer); 40026904: f9400276 ldr x22, [x19] <== NOT EXECUTED 40026908: 17ffffde b 40026880 <== NOT EXECUTED return ENXIO; 4002690c: 528000c0 mov w0, #0x6 // #6 } 40026910: d65f03c0 ret ... =============================================================================== 0000000040026520 : { 40026520: a9be7bfd stp x29, x30, [sp, #-32]! 40026524: 910003fd mov x29, sp 40026528: a90153f3 stp x19, x20, [sp, #16] 4002652c: 2a0103f4 mov w20, w1 if (!control->buffer) 40026530: f9400001 ldr x1, [x0] 40026534: b40005e1 cbz x1, 400265f0 rc = rtems_rfs_buffer_handle_request (control->fs, 40026538: b9401002 ldr w2, [x0, #16] 4002653c: aa0003f3 mov x19, x0 40026540: f9400400 ldr x0, [x0, #8] 40026544: 52800023 mov w3, #0x1 // #1 40026548: 940002a2 bl 40026fd0 if (rc) 4002654c: 7100001f cmp w0, #0x0 40026550: 350004a0 cbnz w0, 400265e4 <== NEVER TAKEN *map = rtems_rfs_buffer_data (control->buffer); 40026554: f9400260 ldr x0, [x19] 40026558: f9400400 ldr x0, [x0, #8] 4002655c: f9401c02 ldr x2, [x0, #56] return EINVAL; 40026560: 528002c0 mov w0, #0x16 // #22 if (bit >= control->size) 40026564: f9400e61 ldr x1, [x19, #24] 40026568: eb34c03f cmp x1, w20, sxtw 4002656c: 540002e9 b.ls 400265c8 // b.plast index = rtems_rfs_bitmap_map_index (bit); 40026570: 13057e85 asr w5, w20, #5 map[index] = rtems_rfs_bitmap_set (element, 1 << offset); 40026574: 52800021 mov w1, #0x1 // #1 40026578: 1ad42020 lsl w0, w1, w20 element = map[index]; 4002657c: 93407ca4 sxtw x4, w5 search_map = control->search_bits; 40026580: f9401666 ldr x6, [x19, #40] element = map[index]; 40026584: b8647843 ldr w3, [x2, x4, lsl #2] return RTEMS_RFS_BITMAP_SET_BITS (target, bits); 40026588: 0a200060 bic w0, w3, w0 map[index] = rtems_rfs_bitmap_set (element, 1 << offset); 4002658c: b8247840 str w0, [x2, x4, lsl #2] if (rtems_rfs_bitmap_match(element, map[index])) 40026590: 6b00007f cmp w3, w0 40026594: 54000200 b.eq 400265d4 // b.none rtems_rfs_buffer_mark_dirty (control->buffer); 40026598: f9400263 ldr x3, [x19] control->free--; 4002659c: f9401262 ldr x2, [x19, #32] 400265a0: d1000442 sub x2, x2, #0x1 400265a4: f9001262 str x2, [x19, #32] rtems_rfs_buffer_mark_dirty (control->buffer); 400265a8: 39000061 strb w1, [x3] if (rtems_rfs_bitmap_match(map[index], RTEMS_RFS_BITMAP_ELEMENT_SET)) 400265ac: 35000140 cbnz w0, 400265d4 index = rtems_rfs_bitmap_map_index (bit); 400265b0: 130a7e94 asr w20, w20, #10 search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset); 400265b4: 1ac52021 lsl w1, w1, w5 400265b8: 93407e94 sxtw x20, w20 return RTEMS_RFS_BITMAP_SET_BITS (target, bits); 400265bc: b87478c2 ldr w2, [x6, x20, lsl #2] 400265c0: 0a210041 bic w1, w2, w1 search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset); 400265c4: b83478c1 str w1, [x6, x20, lsl #2] } 400265c8: a94153f3 ldp x19, x20, [sp, #16] 400265cc: a8c27bfd ldp x29, x30, [sp], #32 400265d0: d65f03c0 ret return 0; 400265d4: 52800000 mov w0, #0x0 // #0 } 400265d8: a94153f3 ldp x19, x20, [sp, #16] 400265dc: a8c27bfd ldp x29, x30, [sp], #32 400265e0: d65f03c0 ret if (rc > 0) 400265e4: 54ffff2c b.gt 400265c8 <== NOT EXECUTED *map = NULL; 400265e8: d2800002 mov x2, #0x0 // #0 <== NOT EXECUTED 400265ec: 17ffffdd b 40026560 <== NOT EXECUTED return ENXIO; 400265f0: 528000c0 mov w0, #0x6 // #6 } 400265f4: a94153f3 ldp x19, x20, [sp, #16] 400265f8: a8c27bfd ldp x29, x30, [sp], #32 400265fc: d65f03c0 ret =============================================================================== 0000000040026790 : if (!control->buffer) 40026790: f9400001 ldr x1, [x0] 40026794: b4000501 cbz x1, 40026834 { 40026798: a9bd7bfd stp x29, x30, [sp, #-48]! rc = rtems_rfs_buffer_handle_request (control->fs, 4002679c: 52800023 mov w3, #0x1 // #1 { 400267a0: 910003fd mov x29, sp rc = rtems_rfs_buffer_handle_request (control->fs, 400267a4: b9401002 ldr w2, [x0, #16] { 400267a8: a90153f3 stp x19, x20, [sp, #16] 400267ac: aa0003f3 mov x19, x0 rc = rtems_rfs_buffer_handle_request (control->fs, 400267b0: f9400400 ldr x0, [x0, #8] { 400267b4: f90013f5 str x21, [sp, #32] rc = rtems_rfs_buffer_handle_request (control->fs, 400267b8: 94000206 bl 40026fd0 if (rc) 400267bc: 7100001f cmp w0, #0x0 400267c0: 35000320 cbnz w0, 40026824 <== NEVER TAKEN *map = rtems_rfs_buffer_data (control->buffer); 400267c4: f9400275 ldr x21, [x19] 400267c8: f94006a0 ldr x0, [x21, #8] 400267cc: f9401c00 ldr x0, [x0, #56] control->free = 0; 400267d0: f900127f str xzr, [x19, #32] elements = rtems_rfs_bitmap_elements (control->size); 400267d4: f9400e74 ldr x20, [x19, #24] map[e] = RTEMS_RFS_BITMAP_ELEMENT_SET; 400267d8: 52800001 mov w1, #0x0 // #0 elements = rtems_rfs_bitmap_elements (control->size); 400267dc: d1000694 sub x20, x20, #0x1 400267e0: d345fe82 lsr x2, x20, #5 400267e4: 91000442 add x2, x2, #0x1 map[e] = RTEMS_RFS_BITMAP_ELEMENT_SET; 400267e8: d37ef442 lsl x2, x2, #2 400267ec: 94005df0 bl 4003dfac control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_SET; 400267f0: f9401660 ldr x0, [x19, #40] elements = rtems_rfs_bitmap_elements (elements); 400267f4: d34afe82 lsr x2, x20, #10 400267f8: 91000442 add x2, x2, #0x1 control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_SET; 400267fc: 52800001 mov w1, #0x0 // #0 40026800: d37ef442 lsl x2, x2, #2 40026804: 94005dea bl 4003dfac rtems_rfs_buffer_mark_dirty (control->buffer); 40026808: 52800021 mov w1, #0x1 // #1 return 0; 4002680c: 52800000 mov w0, #0x0 // #0 rtems_rfs_buffer_mark_dirty (control->buffer); 40026810: 390002a1 strb w1, [x21] } 40026814: a94153f3 ldp x19, x20, [sp, #16] 40026818: f94013f5 ldr x21, [sp, #32] 4002681c: a8c37bfd ldp x29, x30, [sp], #48 40026820: d65f03c0 ret if (rc > 0) 40026824: 54ffff8c b.gt 40026814 <== NOT EXECUTED *map = NULL; 40026828: d2800000 mov x0, #0x0 // #0 <== NOT EXECUTED *map = rtems_rfs_buffer_data (control->buffer); 4002682c: f9400275 ldr x21, [x19] <== NOT EXECUTED 40026830: 17ffffe8 b 400267d0 <== NOT EXECUTED return ENXIO; 40026834: 528000c0 mov w0, #0x6 // #6 } 40026838: d65f03c0 ret 4002683c: 00000000 udf #0 =============================================================================== 00000000400266d0 : { 400266d0: a9bd7bfd stp x29, x30, [sp, #-48]! 400266d4: 910003fd mov x29, sp 400266d8: a90153f3 stp x19, x20, [sp, #16] 400266dc: 2a0103f4 mov w20, w1 if (!control->buffer) 400266e0: f9400001 ldr x1, [x0] 400266e4: b4000481 cbz x1, 40026774 rc = rtems_rfs_buffer_handle_request (control->fs, 400266e8: aa0003f3 mov x19, x0 400266ec: 52800023 mov w3, #0x1 // #1 400266f0: f9400400 ldr x0, [x0, #8] 400266f4: f90013f5 str x21, [sp, #32] 400266f8: aa0203f5 mov x21, x2 400266fc: b9401262 ldr w2, [x19, #16] 40026700: 94000234 bl 40026fd0 if (rc) 40026704: 7100001f cmp w0, #0x0 40026708: 35000280 cbnz w0, 40026758 <== NEVER TAKEN *map = rtems_rfs_buffer_data (control->buffer); 4002670c: f9400260 ldr x0, [x19] 40026710: f9400400 ldr x0, [x0, #8] 40026714: f9401c02 ldr x2, [x0, #56] return EINVAL; 40026718: 528002c0 mov w0, #0x16 // #22 if (bit >= control->size) 4002671c: f9400e61 ldr x1, [x19, #24] 40026720: eb34c03f cmp x1, w20, sxtw 40026724: 540001c9 b.ls 4002675c // b.plast index = rtems_rfs_bitmap_map_index (bit); 40026728: 13057e83 asr w3, w20, #5 return RTEMS_RFS_BITMAP_TEST_BIT (target, bit); 4002672c: 52800021 mov w1, #0x1 // #1 40026730: 1ad42034 lsl w20, w1, w20 return 0; 40026734: 52800000 mov w0, #0x0 // #0 return RTEMS_RFS_BITMAP_TEST_BIT (target, bit); 40026738: b863d841 ldr w1, [x2, w3, sxtw #2] 4002673c: 6a01029f tst w20, w1 40026740: 1a9f17e1 cset w1, eq // eq = none 40026744: 390002a1 strb w1, [x21] } 40026748: a94153f3 ldp x19, x20, [sp, #16] return 0; 4002674c: f94013f5 ldr x21, [sp, #32] } 40026750: a8c37bfd ldp x29, x30, [sp], #48 40026754: d65f03c0 ret if (rc > 0) 40026758: 540000ad b.le 4002676c <== NOT EXECUTED } 4002675c: a94153f3 ldp x19, x20, [sp, #16] 40026760: f94013f5 ldr x21, [sp, #32] 40026764: a8c37bfd ldp x29, x30, [sp], #48 40026768: d65f03c0 ret *map = NULL; 4002676c: d2800002 mov x2, #0x0 // #0 <== NOT EXECUTED 40026770: 17ffffea b 40026718 <== NOT EXECUTED return ENXIO; 40026774: 528000c0 mov w0, #0x6 // #6 } 40026778: a94153f3 ldp x19, x20, [sp, #16] 4002677c: a8c37bfd ldp x29, x30, [sp], #48 40026780: d65f03c0 ret ... =============================================================================== 0000000040033e90 : { 40033e90: a9bc7bfd stp x29, x30, [sp, #-64]! 40033e94: 910003fd mov x29, sp 40033e98: a90153f3 stp x19, x20, [sp, #16] 40033e9c: aa0103f3 mov x19, x1 if (map->dirty && map->inode) 40033ea0: 39400021 ldrb w1, [x1] { 40033ea4: a9025bf5 stp x21, x22, [sp, #32] 40033ea8: aa0003f4 mov x20, x0 40033eac: f9001bf7 str x23, [sp, #48] int rc = 0; 40033eb0: 52800017 mov w23, #0x0 // #0 if (map->dirty && map->inode) 40033eb4: 34000101 cbz w1, 40033ed4 40033eb8: f9400661 ldr x1, [x19, #8] int rc = 0; 40033ebc: 52800017 mov w23, #0x0 // #0 if (map->dirty && map->inode) 40033ec0: b40000a1 cbz x1, 40033ed4 <== NEVER TAKEN brc = rtems_rfs_inode_load (fs, map->inode); 40033ec4: 97ffd36f bl 40028c80 40033ec8: 2a0003f7 mov w23, w0 if (brc > 0) 40033ecc: 7100001f cmp w0, #0x0 40033ed0: 540002cd b.le 40033f28 <== ALWAYS TAKEN map->inode = NULL; 40033ed4: f900067f str xzr, [x19, #8] brc = rtems_rfs_buffer_handle_close (fs, &map->singly_buffer); 40033ed8: 91010276 add x22, x19, #0x40 rtems_rfs_buffer_handle_release (fs, handle); 40033edc: aa1603e1 mov x1, x22 40033ee0: aa1403e0 mov x0, x20 40033ee4: 97ffcceb bl 40027290 handle->dirty = false; 40033ee8: 3901027f strb wzr, [x19, #64] handle->bnum = 0; 40033eec: b900467f str wzr, [x19, #68] brc = rtems_rfs_buffer_handle_close (fs, &map->doubly_buffer); 40033ef0: 91014275 add x21, x19, #0x50 handle->buffer = NULL; 40033ef4: f900267f str xzr, [x19, #72] rtems_rfs_buffer_handle_release (fs, handle); 40033ef8: aa1503e1 mov x1, x21 40033efc: aa1403e0 mov x0, x20 40033f00: 97ffcce4 bl 40027290 handle->dirty = false; 40033f04: 3901427f strb wzr, [x19, #80] } 40033f08: 2a1703e0 mov w0, w23 40033f0c: a9425bf5 ldp x21, x22, [sp, #32] 40033f10: f9401bf7 ldr x23, [sp, #48] handle->bnum = 0; 40033f14: b900567f str wzr, [x19, #84] handle->buffer = NULL; 40033f18: f9002e7f str xzr, [x19, #88] 40033f1c: a94153f3 ldp x19, x20, [sp, #16] 40033f20: a8c47bfd ldp x29, x30, [sp], #64 40033f24: d65f03c0 ret 40033f28: 91004268 add x8, x19, #0x10 40033f2c: d2800380 mov x0, #0x1c // #28 rtems_rfs_buffer_mark_dirty (&handle->buffer); 40033f30: 52800027 mov w7, #0x1 // #1 rtems_rfs_inode_set_block (map->inode, b, map->blocks[b]); 40033f34: f9400661 ldr x1, [x19, #8] 40033f38: b8606902 ldr w2, [x8, x0] rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno); 40033f3c: f9400c23 ldr x3, [x1, #24] 40033f40: 53187c46 lsr w6, w2, #24 40033f44: 53107c45 lsr w5, w2, #16 40033f48: 53087c44 lsr w4, w2, #8 40033f4c: 38206866 strb w6, [x3, x0] 40033f50: f9400c23 ldr x3, [x1, #24] 40033f54: 8b000063 add x3, x3, x0 40033f58: 39000465 strb w5, [x3, #1] 40033f5c: f9400c23 ldr x3, [x1, #24] 40033f60: 8b000063 add x3, x3, x0 40033f64: 39000864 strb w4, [x3, #2] 40033f68: f9400c23 ldr x3, [x1, #24] 40033f6c: 8b000063 add x3, x3, x0 for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++) 40033f70: 91001000 add x0, x0, #0x4 40033f74: f100c01f cmp x0, #0x30 40033f78: 39000c62 strb w2, [x3, #3] rtems_rfs_buffer_mark_dirty (&handle->buffer); 40033f7c: 39008027 strb w7, [x1, #32] 40033f80: 54fffda1 b.ne 40033f34 // b.any rtems_rfs_inode_set_block_count (map->inode, map->size.count); 40033f84: f9400661 ldr x1, [x19, #8] brc = rtems_rfs_inode_unload (fs, map->inode, true); 40033f88: aa1403e0 mov x0, x20 rtems_rfs_inode_set_block_count (map->inode, map->size.count); 40033f8c: b9401263 ldr w3, [x19, #16] brc = rtems_rfs_inode_unload (fs, map->inode, true); 40033f90: 52800022 mov w2, #0x1 // #1 rtems_rfs_write_u32 (&handle->node->block_count, block_count); 40033f94: f9400c24 ldr x4, [x1, #24] 40033f98: 53187c68 lsr w8, w3, #24 40033f9c: 53107c66 lsr w6, w3, #16 40033fa0: 53087c65 lsr w5, w3, #8 40033fa4: 39003088 strb w8, [x4, #12] 40033fa8: f9400c24 ldr x4, [x1, #24] 40033fac: 39003486 strb w6, [x4, #13] 40033fb0: f9400c24 ldr x4, [x1, #24] 40033fb4: 39003885 strb w5, [x4, #14] 40033fb8: f9400c24 ldr x4, [x1, #24] 40033fbc: 39003c83 strb w3, [x4, #15] rtems_rfs_buffer_mark_dirty (&handle->buffer); 40033fc0: 39008027 strb w7, [x1, #32] rtems_rfs_inode_set_block_offset (map->inode, map->size.offset); 40033fc4: f9400661 ldr x1, [x19, #8] 40033fc8: b9401663 ldr w3, [x19, #20] rtems_rfs_write_u16 (&handle->node->block_offset, block_offset); 40033fcc: f9400c24 ldr x4, [x1, #24] 40033fd0: d3483c65 ubfx x5, x3, #8, #8 40033fd4: 39002885 strb w5, [x4, #10] 40033fd8: f9400c24 ldr x4, [x1, #24] 40033fdc: 39002c83 strb w3, [x4, #11] rtems_rfs_buffer_mark_dirty (&handle->buffer); 40033fe0: 39008027 strb w7, [x1, #32] rtems_rfs_inode_set_last_map_block (map->inode, map->last_map_block); 40033fe4: f9400661 ldr x1, [x19, #8] 40033fe8: b9402663 ldr w3, [x19, #36] rtems_rfs_write_u32 (&handle->node->last_map_block, last_map_block); 40033fec: f9400c24 ldr x4, [x1, #24] 40033ff0: 53187c68 lsr w8, w3, #24 40033ff4: 53107c66 lsr w6, w3, #16 40033ff8: 53087c65 lsr w5, w3, #8 40033ffc: 3900c088 strb w8, [x4, #48] 40034000: f9400c24 ldr x4, [x1, #24] 40034004: 3900c486 strb w6, [x4, #49] 40034008: f9400c24 ldr x4, [x1, #24] 4003400c: 3900c885 strb w5, [x4, #50] 40034010: f9400c24 ldr x4, [x1, #24] 40034014: 3900cc83 strb w3, [x4, #51] rtems_rfs_buffer_mark_dirty (&handle->buffer); 40034018: 39008027 strb w7, [x1, #32] rtems_rfs_inode_set_last_data_block (map->inode, map->last_data_block); 4003401c: f9400661 ldr x1, [x19, #8] 40034020: b9402a63 ldr w3, [x19, #40] rtems_rfs_write_u32 (&handle->node->last_data_block, last_data_block); 40034024: f9400c24 ldr x4, [x1, #24] 40034028: 53187c68 lsr w8, w3, #24 4003402c: 53107c66 lsr w6, w3, #16 40034030: 53087c65 lsr w5, w3, #8 40034034: 3900d088 strb w8, [x4, #52] 40034038: f9400c24 ldr x4, [x1, #24] 4003403c: 3900d486 strb w6, [x4, #53] 40034040: f9400c24 ldr x4, [x1, #24] 40034044: 3900d885 strb w5, [x4, #54] 40034048: f9400c24 ldr x4, [x1, #24] 4003404c: 3900dc83 strb w3, [x4, #55] rtems_rfs_buffer_mark_dirty (&handle->buffer); 40034050: 39008027 strb w7, [x1, #32] brc = rtems_rfs_inode_unload (fs, map->inode, true); 40034054: f9400661 ldr x1, [x19, #8] 40034058: 97ffd372 bl 40028e20 if (brc > 0) 4003405c: 7100001f cmp w0, #0x0 40034060: 1a9fa017 csel w23, w0, wzr, ge // ge = tcont map->dirty = false; 40034064: 3900027f strb wzr, [x19] 40034068: 17ffff9b b 40033ed4 4003406c: 00000000 udf #0 =============================================================================== 0000000040034070 : { 40034070: a9bb7bfd stp x29, x30, [sp, #-80]! 40034074: 910003fd mov x29, sp 40034078: a90153f3 stp x19, x20, [sp, #16] 4003407c: aa0103f3 mov x19, x1 40034080: a9025bf5 stp x21, x22, [sp, #32] 40034084: aa0203f6 mov x22, x2 40034088: aa0003f5 mov x21, x0 4003408c: f9001bf7 str x23, [sp, #48] 40034090: aa0303f7 mov x23, x3 *block = 0; 40034094: b900007f str wzr, [x3] if (rtems_rfs_block_pos_block_past_end (bpos, &map->size)) 40034098: b9400041 ldr w1, [x2] 4003409c: b9401265 ldr w5, [x19, #16] 400340a0: 34000061 cbz w1, 400340ac return ENXIO; 400340a4: 528000c0 mov w0, #0x6 // #6 if (rtems_rfs_block_pos_block_past_end (bpos, &map->size)) 400340a8: 34000265 cbz w5, 400340f4 <== NEVER TAKEN 400340ac: 6b05003f cmp w1, w5 return ENXIO; 400340b0: 528000c0 mov w0, #0x6 // #6 if (rtems_rfs_block_pos_block_past_end (bpos, &map->size)) 400340b4: 54000202 b.cs 400340f4 // b.hs, b.nlast if ((bpos->bno == map->bpos.bno) && (map->bpos.block != 0)) 400340b8: b9401a60 ldr w0, [x19, #24] 400340bc: 6b00003f cmp w1, w0 400340c0: 54000600 b.eq 40034180 // b.none if (map->size.count <= RTEMS_RFS_INODE_BLOCKS) 400340c4: 710014bf cmp w5, #0x5 400340c8: 54000208 b.hi 40034108 // b.pmore <== ALWAYS TAKEN *block = map->blocks[bpos->bno]; 400340cc: 8b214a61 add x1, x19, w1, uxtw #2 400340d0: b9402c20 ldr w0, [x1, #44] 400340d4: b90002e0 str w0, [x23] rtems_rfs_block_copy_bpos (&map->bpos, bpos); 400340d8: b9400ac1 ldr w1, [x22, #8] map->bpos.block = *block; 400340dc: 52800000 mov w0, #0x0 // #0 rtems_rfs_block_copy_bpos (&map->bpos, bpos); 400340e0: 29400ac3 ldp w3, w2, [x22] 400340e4: 29030a63 stp w3, w2, [x19, #24] 400340e8: b9002261 str w1, [x19, #32] map->bpos.block = *block; 400340ec: b94002e1 ldr w1, [x23] 400340f0: b9002261 str w1, [x19, #32] } 400340f4: a94153f3 ldp x19, x20, [sp, #16] 400340f8: a9425bf5 ldp x21, x22, [sp, #32] 400340fc: f9401bf7 ldr x23, [sp, #48] 40034100: a8c57bfd ldp x29, x30, [sp], #80 40034104: d65f03c0 ret if (map->size.count <= fs->block_map_singly_blocks) 40034108: a9460aa3 ldp x3, x2, [x21, #96] direct = bpos->bno % fs->blocks_per_block; 4003410c: 2a0103e1 mov w1, w1 if (map->size.count <= fs->block_map_singly_blocks) 40034110: 2a0503e5 mov w5, w5 direct = bpos->bno % fs->blocks_per_block; 40034114: 9ac30820 udiv x0, x1, x3 if (map->size.count <= fs->block_map_singly_blocks) 40034118: eb0200bf cmp x5, x2 singly = bpos->bno / fs->blocks_per_block; 4003411c: b9004fe0 str w0, [sp, #76] direct = bpos->bno % fs->blocks_per_block; 40034120: 9b038414 msub x20, x0, x3, x1 if (map->size.count <= fs->block_map_singly_blocks) 40034124: 54000389 b.ls 40034194 // b.plast <== ALWAYS TAKEN singly %= fs->blocks_per_block; 40034128: 9ac30801 udiv x1, x0, x3 <== NOT EXECUTED if (map->size.count < fs->block_map_doubly_blocks) 4003412c: f9403aa2 ldr x2, [x21, #112] <== NOT EXECUTED singly %= fs->blocks_per_block; 40034130: 9b038023 msub x3, x1, x3, x0 <== NOT EXECUTED if (map->size.count < fs->block_map_doubly_blocks) 40034134: eb0200bf cmp x5, x2 <== NOT EXECUTED singly %= fs->blocks_per_block; 40034138: b9004fe3 str w3, [sp, #76] <== NOT EXECUTED rc = ENXIO; 4003413c: 528000c0 mov w0, #0x6 // #6 <== NOT EXECUTED if (map->size.count < fs->block_map_doubly_blocks) 40034140: 54fffda2 b.cs 400340f4 // b.hs, b.nlast<== NOT EXECUTED rc = rtems_rfs_block_find_indirect (fs, 40034144: 8b010a62 add x2, x19, x1, lsl #2 <== NOT EXECUTED 40034148: 910133e4 add x4, sp, #0x4c <== NOT EXECUTED 4003414c: 91014261 add x1, x19, #0x50 <== NOT EXECUTED 40034150: aa1503e0 mov x0, x21 <== NOT EXECUTED 40034154: b9402c42 ldr w2, [x2, #44] <== NOT EXECUTED 40034158: 97fffe92 bl 40033ba0 <== NOT EXECUTED if (rc == 0) 4003415c: 35fffcc0 cbnz w0, 400340f4 <== NOT EXECUTED rc = rtems_rfs_block_find_indirect (fs, 40034160: b9404fe2 ldr w2, [sp, #76] <== NOT EXECUTED 40034164: 2a1403e3 mov w3, w20 <== NOT EXECUTED 40034168: aa1503e0 mov x0, x21 <== NOT EXECUTED 4003416c: aa1703e4 mov x4, x23 <== NOT EXECUTED 40034170: 91010261 add x1, x19, #0x40 <== NOT EXECUTED 40034174: 97fffe8b bl 40033ba0 <== NOT EXECUTED if (rc == 0) 40034178: 34fffb00 cbz w0, 400340d8 <== NOT EXECUTED 4003417c: 17ffffde b 400340f4 <== NOT EXECUTED if ((bpos->bno == map->bpos.bno) && (map->bpos.block != 0)) 40034180: b9402260 ldr w0, [x19, #32] 40034184: 35fffa80 cbnz w0, 400340d4 <== NEVER TAKEN if (map->size.count <= RTEMS_RFS_INODE_BLOCKS) 40034188: 710014bf cmp w5, #0x5 4003418c: 54fffbe8 b.hi 40034108 // b.pmore <== NEVER TAKEN 40034190: 17ffffcf b 400340cc rc = rtems_rfs_block_find_indirect (fs, 40034194: 8b000a62 add x2, x19, x0, lsl #2 40034198: 2a1403e3 mov w3, w20 4003419c: aa1503e0 mov x0, x21 400341a0: aa1703e4 mov x4, x23 400341a4: 91010261 add x1, x19, #0x40 400341a8: b9402c42 ldr w2, [x2, #44] 400341ac: 97fffe7d bl 40033ba0 if (rc == 0) 400341b0: 34fff940 cbz w0, 400340d8 <== ALWAYS TAKEN 400341b4: 17ffffd0 b 400340f4 <== NOT EXECUTED ... =============================================================================== 0000000040034230 : { 40034230: a9b87bfd stp x29, x30, [sp, #-128]! 40034234: 910003fd mov x29, sp 40034238: a90153f3 stp x19, x20, [sp, #16] 4003423c: aa0103f3 mov x19, x1 40034240: a9025bf5 stp x21, x22, [sp, #32] 40034244: aa0203f6 mov x22, x2 40034248: a90573fb stp x27, x28, [sp, #80] 4003424c: aa0003fc mov x28, x0 if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW)) 40034250: d2840000 mov x0, #0x2000 // #8192 { 40034254: f90033e3 str x3, [sp, #96] if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW)) 40034258: 97ffd9fe bl 4002aa50 4003425c: 72001c1f tst w0, #0xff 40034260: 54001941 b.ne 40034588 // b.any <== NEVER TAKEN if ((map->size.count + blocks) >= rtems_rfs_fs_max_block_map_blocks (fs)) 40034264: b9401260 ldr w0, [x19, #16] return EFBIG; 40034268: 52800374 mov w20, #0x1b // #27 if ((map->size.count + blocks) >= rtems_rfs_fs_max_block_map_blocks (fs)) 4003426c: f9403b81 ldr x1, [x28, #112] 40034270: 8b160000 add x0, x0, x22 40034274: eb01001f cmp x0, x1 40034278: 54001502 b.cs 40034518 // b.hs, b.nlast<== NEVER TAKEN for (b = 0; b < blocks; b++) 4003427c: b4001976 cbz x22, 400345a8 <== NEVER TAKEN rc = rtems_rfs_group_bitmap_alloc (fs, map->last_data_block, 40034280: b9402a61 ldr w1, [x19, #40] 40034284: d280001b mov x27, #0x0 // #0 rtems_rfs_block_set_number (&map->singly_buffer, direct, block); 40034288: 52800035 mov w21, #0x1 // #1 4003428c: a90363f7 stp x23, x24, [sp, #48] rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer, 40034290: 91010278 add x24, x19, #0x40 40034294: a9046bf9 stp x25, x26, [sp, #64] rc = rtems_rfs_buffer_handle_request (fs, 40034298: 91014279 add x25, x19, #0x50 4003429c: 1400000e b 400342d4 map->blocks[map->size.count] = block; 400342a0: 8b224a60 add x0, x19, w2, uxtw #2 400342a4: b9407be1 ldr w1, [sp, #120] 400342a8: b9002c01 str w1, [x0, #44] map->size.count++; 400342ac: 11000442 add w2, w2, #0x1 map->size.offset = 0; 400342b0: 29027e62 stp w2, wzr, [x19, #16] if (b == 0) 400342b4: b500007b cbnz x27, 400342c0 <== NEVER TAKEN *new_block = block; 400342b8: f94033e0 ldr x0, [sp, #96] 400342bc: b9000001 str w1, [x0] map->dirty = true; 400342c0: 39000275 strb w21, [x19] for (b = 0; b < blocks; b++) 400342c4: 9100077b add x27, x27, #0x1 map->last_data_block = block; 400342c8: b9002a61 str w1, [x19, #40] for (b = 0; b < blocks; b++) 400342cc: eb1b02df cmp x22, x27 400342d0: 54001680 b.eq 400345a0 // b.none <== ALWAYS TAKEN rc = rtems_rfs_group_bitmap_alloc (fs, map->last_data_block, 400342d4: 9101e3e3 add x3, sp, #0x78 400342d8: aa1c03e0 mov x0, x28 400342dc: 52800002 mov w2, #0x0 // #0 400342e0: 97ffd168 bl 40028880 400342e4: 2a0003f4 mov w20, w0 if (rc > 0) 400342e8: 7100001f cmp w0, #0x0 400342ec: 540016cc b.gt 400345c4 if (map->size.count < RTEMS_RFS_INODE_BLOCKS) 400342f0: b9401262 ldr w2, [x19, #16] 400342f4: 7100105f cmp w2, #0x4 400342f8: 54fffd49 b.ls 400342a0 // b.plast if (map->size.count < fs->block_map_singly_blocks) 400342fc: a946039a ldp x26, x0, [x28, #96] direct = map->size.count % fs->blocks_per_block; 40034300: 2a0203e1 mov w1, w2 40034304: 9ada0823 udiv x3, x1, x26 if (map->size.count < fs->block_map_singly_blocks) 40034308: eb00003f cmp x1, x0 direct = map->size.count % fs->blocks_per_block; 4003430c: 9b1a8477 msub x23, x3, x26, x1 if (map->size.count < fs->block_map_singly_blocks) 40034310: 54000522 b.cs 400343b4 // b.hs, b.nlast<== NEVER TAKEN if ((direct == 0) || 40034314: b4000097 cbz x23, 40034324 <== NEVER TAKEN ((singly == 0) && (direct == RTEMS_RFS_INODE_BLOCKS))) 40034318: 7100007f cmp w3, #0x0 if ((direct == 0) || 4003431c: 7a450ae0 ccmp w23, #0x5, #0x0, eq // eq = none 40034320: 54001081 b.ne 40034530 // b.any upping = map->size.count == RTEMS_RFS_INODE_BLOCKS; 40034324: 7100145f cmp w2, #0x5 &map->blocks[singly], 40034328: 91002c63 add x3, x3, #0xb rc = rtems_rfs_block_map_indirect_alloc (fs, map, 4003432c: 1a9f17e4 cset w4, eq // eq = none 40034330: aa1803e2 mov x2, x24 40034334: 8b030a63 add x3, x19, x3, lsl #2 40034338: aa1303e1 mov x1, x19 4003433c: aa1c03e0 mov x0, x28 40034340: 97fffdb4 bl 40033a10 40034344: 2a0003f4 mov w20, w0 if (rc > 0) 40034348: 7100029f cmp w20, #0x0 4003434c: 54000dac b.gt 40034500 <== NEVER TAKEN rtems_rfs_block_set_number (&map->singly_buffer, direct, block); 40034350: f9402660 ldr x0, [x19, #72] 40034354: d37ef6e1 lsl x1, x23, #2 40034358: 3941efe2 ldrb w2, [sp, #123] 4003435c: f9401c00 ldr x0, [x0, #56] 40034360: 38216802 strb w2, [x0, x1] 40034364: f9402660 ldr x0, [x19, #72] 40034368: 7940f7e2 ldrh w2, [sp, #122] 4003436c: f9401c00 ldr x0, [x0, #56] 40034370: 8b010000 add x0, x0, x1 40034374: 39000402 strb w2, [x0, #1] 40034378: f9402660 ldr x0, [x19, #72] 4003437c: b9407be2 ldr w2, [sp, #120] 40034380: f9401c00 ldr x0, [x0, #56] 40034384: 53087c42 lsr w2, w2, #8 40034388: 8b010000 add x0, x0, x1 4003438c: 39000802 strb w2, [x0, #2] 40034390: f9402660 ldr x0, [x19, #72] 40034394: b9407be2 ldr w2, [sp, #120] 40034398: f9401c00 ldr x0, [x0, #56] 4003439c: 8b010001 add x1, x0, x1 400343a0: 39000c22 strb w2, [x1, #3] 400343a4: 39010275 strb w21, [x19, #64] map->size.count++; 400343a8: b9401262 ldr w2, [x19, #16] *new_block = block; 400343ac: b9407be1 ldr w1, [sp, #120] 400343b0: 17ffffbf b 400342ac doubly = singly / fs->blocks_per_block; 400343b4: 9ada0866 udiv x6, x3, x26 <== NOT EXECUTED singly %= fs->blocks_per_block; 400343b8: 9b1a8cda msub x26, x6, x26, x3 <== NOT EXECUTED if (direct == 0) 400343bc: b5000697 cbnz x23, 4003448c <== NOT EXECUTED rc = rtems_rfs_block_map_indirect_alloc (fs, map, 400343c0: 9101f3e3 add x3, sp, #0x7c <== NOT EXECUTED 400343c4: aa1803e2 mov x2, x24 <== NOT EXECUTED 400343c8: aa1303e1 mov x1, x19 <== NOT EXECUTED 400343cc: aa1c03e0 mov x0, x28 <== NOT EXECUTED 400343d0: 52800004 mov w4, #0x0 // #0 <== NOT EXECUTED 400343d4: f90037e6 str x6, [sp, #104] <== NOT EXECUTED 400343d8: 97fffd8e bl 40033a10 <== NOT EXECUTED 400343dc: 2a0003f4 mov w20, w0 <== NOT EXECUTED if (rc > 0) 400343e0: 7100001f cmp w0, #0x0 <== NOT EXECUTED 400343e4: f94037e6 ldr x6, [sp, #104] <== NOT EXECUTED 400343e8: 540008cc b.gt 40034500 <== NOT EXECUTED if ((singly == 0) || 400343ec: b400009a cbz x26, 400343fc <== NOT EXECUTED ((doubly == 0) && (singly == RTEMS_RFS_INODE_BLOCKS))) 400343f0: 710000df cmp w6, #0x0 <== NOT EXECUTED if ((singly == 0) || 400343f4: 7a450b40 ccmp w26, #0x5, #0x0, eq // eq = none <== NOT EXECUTED 400343f8: 54000ac1 b.ne 40034550 // b.any <== NOT EXECUTED upping = map->size.count == fs->block_map_singly_blocks; 400343fc: f9403780 ldr x0, [x28, #104] <== NOT EXECUTED &map->blocks[doubly], 40034400: 91002cc3 add x3, x6, #0xb <== NOT EXECUTED upping = map->size.count == fs->block_map_singly_blocks; 40034404: b9401264 ldr w4, [x19, #16] <== NOT EXECUTED rc = rtems_rfs_block_map_indirect_alloc (fs, map, 40034408: aa1903e2 mov x2, x25 <== NOT EXECUTED 4003440c: 8b030a63 add x3, x19, x3, lsl #2 <== NOT EXECUTED 40034410: aa1303e1 mov x1, x19 <== NOT EXECUTED upping = map->size.count == fs->block_map_singly_blocks; 40034414: eb00009f cmp x4, x0 <== NOT EXECUTED rc = rtems_rfs_block_map_indirect_alloc (fs, map, 40034418: aa1c03e0 mov x0, x28 <== NOT EXECUTED 4003441c: 1a9f17e4 cset w4, eq // eq = none <== NOT EXECUTED 40034420: 97fffd7c bl 40033a10 <== NOT EXECUTED 40034424: 2a0003f4 mov w20, w0 <== NOT EXECUTED if (rc > 0) 40034428: 7100001f cmp w0, #0x0 <== NOT EXECUTED 4003442c: 54000a4c b.gt 40034574 <== NOT EXECUTED rtems_rfs_block_set_number (&map->doubly_buffer, 40034430: f9402e60 ldr x0, [x19, #88] <== NOT EXECUTED 40034434: d37ef75a lsl x26, x26, #2 <== NOT EXECUTED 40034438: 3941ffe1 ldrb w1, [sp, #127] <== NOT EXECUTED 4003443c: f9401c00 ldr x0, [x0, #56] <== NOT EXECUTED 40034440: 383a6801 strb w1, [x0, x26] <== NOT EXECUTED 40034444: f9402e60 ldr x0, [x19, #88] <== NOT EXECUTED 40034448: 7940ffe1 ldrh w1, [sp, #126] <== NOT EXECUTED 4003444c: f9401c00 ldr x0, [x0, #56] <== NOT EXECUTED 40034450: 8b1a0000 add x0, x0, x26 <== NOT EXECUTED 40034454: 39000401 strb w1, [x0, #1] <== NOT EXECUTED 40034458: f9402e60 ldr x0, [x19, #88] <== NOT EXECUTED 4003445c: b9407fe1 ldr w1, [sp, #124] <== NOT EXECUTED 40034460: f9401c00 ldr x0, [x0, #56] <== NOT EXECUTED 40034464: 53087c21 lsr w1, w1, #8 <== NOT EXECUTED 40034468: 8b1a0000 add x0, x0, x26 <== NOT EXECUTED 4003446c: 39000801 strb w1, [x0, #2] <== NOT EXECUTED 40034470: f9402e60 ldr x0, [x19, #88] <== NOT EXECUTED 40034474: b9407fe1 ldr w1, [sp, #124] <== NOT EXECUTED 40034478: f9401c00 ldr x0, [x0, #56] <== NOT EXECUTED 4003447c: 8b1a001a add x26, x0, x26 <== NOT EXECUTED 40034480: 39000f41 strb w1, [x26, #3] <== NOT EXECUTED 40034484: 39014275 strb w21, [x19, #80] <== NOT EXECUTED 40034488: 17ffffb2 b 40034350 <== NOT EXECUTED rc = rtems_rfs_buffer_handle_request (fs, 4003448c: 8b060a66 add x6, x19, x6, lsl #2 <== NOT EXECUTED 40034490: aa1903e1 mov x1, x25 <== NOT EXECUTED 40034494: aa1c03e0 mov x0, x28 <== NOT EXECUTED 40034498: 52800023 mov w3, #0x1 // #1 <== NOT EXECUTED 4003449c: b9402cc2 ldr w2, [x6, #44] <== NOT EXECUTED 400344a0: 97ffcacc bl 40026fd0 <== NOT EXECUTED 400344a4: 2a0003f4 mov w20, w0 <== NOT EXECUTED if (rc > 0) 400344a8: 7100001f cmp w0, #0x0 <== NOT EXECUTED 400344ac: 540002ac b.gt 40034500 <== NOT EXECUTED singly_block = rtems_rfs_block_get_number (&map->doubly_buffer, 400344b0: f9402e62 ldr x2, [x19, #88] <== NOT EXECUTED 400344b4: d37ef75a lsl x26, x26, #2 <== NOT EXECUTED rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer, 400344b8: aa1803e1 mov x1, x24 <== NOT EXECUTED 400344bc: aa1c03e0 mov x0, x28 <== NOT EXECUTED 400344c0: 52800023 mov w3, #0x1 // #1 <== NOT EXECUTED singly_block = rtems_rfs_block_get_number (&map->doubly_buffer, 400344c4: f9401c42 ldr x2, [x2, #56] <== NOT EXECUTED 400344c8: 8b1a0047 add x7, x2, x26 <== NOT EXECUTED 400344cc: 387a6844 ldrb w4, [x2, x26] <== NOT EXECUTED 400344d0: 394008e6 ldrb w6, [x7, #2] <== NOT EXECUTED 400344d4: 39400ce8 ldrb w8, [x7, #3] <== NOT EXECUTED 400344d8: 394004e2 ldrb w2, [x7, #1] <== NOT EXECUTED 400344dc: 53185cc6 lsl w6, w6, #8 <== NOT EXECUTED 400344e0: 2a046104 orr w4, w8, w4, lsl #24 <== NOT EXECUTED 400344e4: 2a0240c2 orr w2, w6, w2, lsl #16 <== NOT EXECUTED 400344e8: 2a040042 orr w2, w2, w4 <== NOT EXECUTED 400344ec: b9007fe2 str w2, [sp, #124] <== NOT EXECUTED rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer, 400344f0: 97ffcab8 bl 40026fd0 <== NOT EXECUTED 400344f4: 2a0003f4 mov w20, w0 <== NOT EXECUTED if (rc > 0) 400344f8: 7100029f cmp w20, #0x0 <== NOT EXECUTED 400344fc: 54fff2ad b.le 40034350 <== NOT EXECUTED rtems_rfs_group_bitmap_free (fs, false, block); 40034500: b9407be2 ldr w2, [sp, #120] <== NOT EXECUTED 40034504: aa1c03e0 mov x0, x28 <== NOT EXECUTED 40034508: 52800001 mov w1, #0x0 // #0 <== NOT EXECUTED 4003450c: 97ffd175 bl 40028ae0 <== NOT EXECUTED return rc; 40034510: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 40034514: a9446bf9 ldp x25, x26, [sp, #64] <== NOT EXECUTED } 40034518: 2a1403e0 mov w0, w20 <== NOT EXECUTED 4003451c: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40034520: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 40034524: a94573fb ldp x27, x28, [sp, #80] <== NOT EXECUTED 40034528: a8c87bfd ldp x29, x30, [sp], #128 <== NOT EXECUTED 4003452c: d65f03c0 ret <== NOT EXECUTED rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer, 40034530: 8b030a7a add x26, x19, x3, lsl #2 40034534: aa1803e1 mov x1, x24 40034538: aa1c03e0 mov x0, x28 4003453c: 52800023 mov w3, #0x1 // #1 40034540: b9402f42 ldr w2, [x26, #44] 40034544: 97ffcaa3 bl 40026fd0 40034548: 2a0003f4 mov w20, w0 if (rc > 0) 4003454c: 17ffff7f b 40034348 rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer, 40034550: 8b060a66 add x6, x19, x6, lsl #2 <== NOT EXECUTED 40034554: aa1903e1 mov x1, x25 <== NOT EXECUTED 40034558: aa1c03e0 mov x0, x28 <== NOT EXECUTED 4003455c: 52800023 mov w3, #0x1 // #1 <== NOT EXECUTED 40034560: b9402cc2 ldr w2, [x6, #44] <== NOT EXECUTED 40034564: 97ffca9b bl 40026fd0 <== NOT EXECUTED 40034568: 2a0003f4 mov w20, w0 <== NOT EXECUTED if (rc > 0) 4003456c: 7100001f cmp w0, #0x0 <== NOT EXECUTED 40034570: 54fff60d b.le 40034430 <== NOT EXECUTED rtems_rfs_group_bitmap_free (fs, false, singly_block); 40034574: b9407fe2 ldr w2, [sp, #124] <== NOT EXECUTED 40034578: aa1c03e0 mov x0, x28 <== NOT EXECUTED 4003457c: 52800001 mov w1, #0x0 // #0 <== NOT EXECUTED 40034580: 97ffd158 bl 40028ae0 <== NOT EXECUTED rtems_rfs_group_bitmap_free (fs, false, block); 40034584: 17ffffdf b 40034500 <== NOT EXECUTED printf ("rtems-rfs: block-map-grow: entry: blocks=%zd count=%" PRIu32 "\n", 40034588: b9401262 ldr w2, [x19, #16] <== NOT EXECUTED 4003458c: aa1603e1 mov x1, x22 <== NOT EXECUTED 40034590: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40034594: 91140000 add x0, x0, #0x500 <== NOT EXECUTED 40034598: 97ffb79e bl 40022410 <__wrap_printf> <== NOT EXECUTED 4003459c: 17ffff32 b 40034264 <== NOT EXECUTED 400345a0: a94363f7 ldp x23, x24, [sp, #48] 400345a4: a9446bf9 ldp x25, x26, [sp, #64] return 0; 400345a8: 52800014 mov w20, #0x0 // #0 } 400345ac: 2a1403e0 mov w0, w20 400345b0: a94153f3 ldp x19, x20, [sp, #16] 400345b4: a9425bf5 ldp x21, x22, [sp, #32] 400345b8: a94573fb ldp x27, x28, [sp, #80] 400345bc: a8c87bfd ldp x29, x30, [sp], #128 400345c0: d65f03c0 ret 400345c4: 2a1403e0 mov w0, w20 400345c8: a94153f3 ldp x19, x20, [sp, #16] 400345cc: a9425bf5 ldp x21, x22, [sp, #32] 400345d0: a94363f7 ldp x23, x24, [sp, #48] 400345d4: a9446bf9 ldp x25, x26, [sp, #64] 400345d8: a94573fb ldp x27, x28, [sp, #80] 400345dc: a8c87bfd ldp x29, x30, [sp], #128 400345e0: d65f03c0 ret ... =============================================================================== 0000000040033d00 : { 40033d00: a9bc7bfd stp x29, x30, [sp, #-64]! 40033d04: 910003fd mov x29, sp 40033d08: a90153f3 stp x19, x20, [sp, #16] 40033d0c: aa0203f3 mov x19, x2 40033d10: aa0103f4 mov x20, x1 40033d14: a9025bf5 stp x21, x22, [sp, #32] 40033d18: aa0003f6 mov x22, x0 40033d1c: a90363f7 stp x23, x24, [sp, #48] handle->dirty = false; 40033d20: 91010058 add x24, x2, #0x40 40033d24: 91014057 add x23, x2, #0x50 map->dirty = false; 40033d28: 3900005f strb wzr, [x2] * @param[in] size is a pointer to the block size. */ static inline void rtems_rfs_block_set_size_zero (rtems_rfs_block_size* size) { size->count = 0; 40033d2c: a900fc5f stp xzr, xzr, [x2, #8] bpos->bno = 0; 40033d30: f8018c5f str xzr, [x2, #24]! bpos->block = 0; 40033d34: b900085f str wzr, [x2, #8] 40033d38: 3901027f strb wzr, [x19, #64] handle->bnum = 0; 40033d3c: b900071f str wzr, [x24, #4] handle->buffer = NULL; 40033d40: f900071f str xzr, [x24, #8] handle->dirty = false; 40033d44: 3901427f strb wzr, [x19, #80] handle->bnum = 0; 40033d48: b90006ff str wzr, [x23, #4] handle->buffer = NULL; 40033d4c: f90006ff str xzr, [x23, #8] rc = rtems_rfs_inode_load (fs, inode); 40033d50: 97ffd3cc bl 40028c80 if (rc > 0) 40033d54: 7100001f cmp w0, #0x0 40033d58: 5400076c b.gt 40033e44 <== NEVER TAKEN map->inode = inode; 40033d5c: 9100b261 add x1, x19, #0x2c 40033d60: d2800004 mov x4, #0x0 // #0 40033d64: f9400e87 ldr x7, [x20, #24] 40033d68: f9000674 str x20, [x19, #8] return rtems_rfs_read_u32 (&handle->node->data.blocks[block]); 40033d6c: 8b0400e5 add x5, x7, x4 40033d70: 394070a8 ldrb w8, [x5, #28] 40033d74: 394074a6 ldrb w6, [x5, #29] 40033d78: 394078a2 ldrb w2, [x5, #30] 40033d7c: 39407ca3 ldrb w3, [x5, #31] 40033d80: aa062105 orr x5, x8, x6, lsl #8 40033d84: aa0240a2 orr x2, x5, x2, lsl #16 40033d88: aa036043 orr x3, x2, x3, lsl #24 40033d8c: 5ac00863 rev w3, w3 map->blocks[b] = rtems_rfs_inode_get_block (inode, b); 40033d90: b8246823 str w3, [x1, x4] for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++) 40033d94: 91001084 add x4, x4, #0x4 40033d98: f100509f cmp x4, #0x14 40033d9c: 54fffe81 b.ne 40033d6c // b.any return rtems_rfs_read_u32 (&handle->node->block_count); 40033da0: 394030e6 ldrb w6, [x7, #12] rc = rtems_rfs_inode_unload (fs, inode, false); 40033da4: aa1603e0 mov x0, x22 40033da8: 394034e5 ldrb w5, [x7, #13] 40033dac: aa1403e1 mov x1, x20 40033db0: 394038e4 ldrb w4, [x7, #14] 40033db4: 52800002 mov w2, #0x0 // #0 40033db8: 39403ce3 ldrb w3, [x7, #15] 40033dbc: aa0520c5 orr x5, x6, x5, lsl #8 40033dc0: aa0440a4 orr x4, x5, x4, lsl #16 40033dc4: aa036083 orr x3, x4, x3, lsl #24 40033dc8: 5ac00863 rev w3, w3 } 40033dcc: a9425bf5 ldp x21, x22, [sp, #32] 40033dd0: a94363f7 ldp x23, x24, [sp, #48] map->size.count = rtems_rfs_inode_get_block_count (inode); 40033dd4: b9001263 str w3, [x19, #16] map->size.offset = rtems_rfs_inode_get_block_offset (inode); 40033dd8: 394028e4 ldrb w4, [x7, #10] 40033ddc: 39402ce3 ldrb w3, [x7, #11] 40033de0: aa032083 orr x3, x4, x3, lsl #8 40033de4: 5ac00463 rev16 w3, w3 40033de8: 12003c63 and w3, w3, #0xffff 40033dec: b9001663 str w3, [x19, #20] return rtems_rfs_read_u32 (&handle->node->last_map_block); 40033df0: 3940c0e6 ldrb w6, [x7, #48] 40033df4: 3940c4e5 ldrb w5, [x7, #49] 40033df8: 3940c8e4 ldrb w4, [x7, #50] 40033dfc: 3940cce3 ldrb w3, [x7, #51] 40033e00: aa0520c5 orr x5, x6, x5, lsl #8 40033e04: aa0440a4 orr x4, x5, x4, lsl #16 40033e08: aa036083 orr x3, x4, x3, lsl #24 40033e0c: 5ac00863 rev w3, w3 map->last_map_block = rtems_rfs_inode_get_last_map_block (inode); 40033e10: b9002663 str w3, [x19, #36] return rtems_rfs_read_u32 (&handle->node->last_data_block); 40033e14: 3940d0e6 ldrb w6, [x7, #52] 40033e18: 3940d4e5 ldrb w5, [x7, #53] 40033e1c: 3940d8e4 ldrb w4, [x7, #54] 40033e20: 3940dce3 ldrb w3, [x7, #55] 40033e24: aa0520c5 orr x5, x6, x5, lsl #8 40033e28: aa0440a4 orr x4, x5, x4, lsl #16 40033e2c: aa036083 orr x3, x4, x3, lsl #24 40033e30: 5ac00863 rev w3, w3 map->last_data_block = rtems_rfs_inode_get_last_data_block (inode); 40033e34: b9002a63 str w3, [x19, #40] } 40033e38: a94153f3 ldp x19, x20, [sp, #16] 40033e3c: a8c47bfd ldp x29, x30, [sp], #64 rc = rtems_rfs_inode_unload (fs, inode, false); 40033e40: 17ffd3f8 b 40028e20 40033e44: 2a0003f5 mov w21, w0 <== NOT EXECUTED rtems_rfs_buffer_handle_release (fs, handle); 40033e48: aa1803e1 mov x1, x24 <== NOT EXECUTED 40033e4c: aa1603e0 mov x0, x22 <== NOT EXECUTED 40033e50: 97ffcd10 bl 40027290 <== NOT EXECUTED handle->dirty = false; 40033e54: 3901027f strb wzr, [x19, #64] <== NOT EXECUTED rtems_rfs_buffer_handle_release (fs, handle); 40033e58: aa1703e1 mov x1, x23 <== NOT EXECUTED handle->bnum = 0; 40033e5c: b900071f str wzr, [x24, #4] <== NOT EXECUTED rtems_rfs_buffer_handle_release (fs, handle); 40033e60: aa1603e0 mov x0, x22 <== NOT EXECUTED handle->buffer = NULL; 40033e64: f900071f str xzr, [x24, #8] <== NOT EXECUTED rtems_rfs_buffer_handle_release (fs, handle); 40033e68: 97ffcd0a bl 40027290 <== NOT EXECUTED handle->dirty = false; 40033e6c: 3901427f strb wzr, [x19, #80] <== NOT EXECUTED } 40033e70: 2a1503e0 mov w0, w21 <== NOT EXECUTED 40033e74: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40033e78: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED handle->bnum = 0; 40033e7c: b90006ff str wzr, [x23, #4] <== NOT EXECUTED handle->buffer = NULL; 40033e80: f90006ff str xzr, [x23, #8] <== NOT EXECUTED 40033e84: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 40033e88: a8c47bfd ldp x29, x30, [sp], #64 <== NOT EXECUTED 40033e8c: d65f03c0 ret <== NOT EXECUTED =============================================================================== 00000000400345f0 : int rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, size_t blocks) { 400345f0: a9b97bfd stp x29, x30, [sp, #-112]! 400345f4: 910003fd mov x29, sp 400345f8: a90153f3 stp x19, x20, [sp, #16] 400345fc: aa0203f3 mov x19, x2 40034600: a9046bf9 stp x25, x26, [sp, #64] 40034604: aa0103fa mov x26, x1 40034608: a90573fb stp x27, x28, [sp, #80] 4003460c: aa0003fb mov x27, x0 if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK)) 40034610: d2880000 mov x0, #0x4000 // #16384 40034614: 97ffd90f bl 4002aa50 40034618: 72001c1f tst w0, #0xff 4003461c: 540012a1 b.ne 40034870 // b.any <== NEVER TAKEN printf ("rtems-rfs: block-map-shrink: entry: blocks=%zd count=%" PRIu32 "\n", blocks, map->size.count); if (map->size.count == 0) 40034620: b9401343 ldr w3, [x26, #16] 40034624: 340011a3 cbz w3, 40034858 return 0; if (blocks > map->size.count) 40034628: 2a0303e1 mov w1, w3 4003462c: eb13003f cmp x1, x19 40034630: 9a939033 csel x19, x1, x19, ls // ls = plast blocks = map->size.count; while (blocks) 40034634: b40014f3 cbz x19, 400348d0 <== NEVER TAKEN rtems_rfs_block_no doubly_singly; doubly = singly / fs->blocks_per_block; doubly_singly = singly % fs->blocks_per_block; rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer, 40034638: 52800034 mov w20, #0x1 // #1 4003463c: a9025bf5 stp x21, x22, [sp, #32] 40034640: 91014356 add x22, x26, #0x50 doubly_singly); /* * Read the singly indirect table and get the block number. */ rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer, 40034644: 91010355 add x21, x26, #0x40 40034648: a90363f7 stp x23, x24, [sp, #48] 4003464c: 14000011 b 40034690 block_to_free = map->blocks[block]; 40034650: 8b214b41 add x1, x26, w1, uxtw #2 40034654: b9402c3c ldr w28, [x1, #44] map->blocks[block] = 0; 40034658: b9002c3f str wzr, [x1, #44] { rc = EIO; break; } } rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free); 4003465c: 2a1c03e2 mov w2, w28 40034660: aa1b03e0 mov x0, x27 40034664: 52800001 mov w1, #0x0 // #0 40034668: 97ffd11e bl 40028ae0 if (rc > 0) 4003466c: 7100001f cmp w0, #0x0 40034670: 540009ac b.gt 400347a4 <== NEVER TAKEN return rc; map->size.count--; 40034674: b9401343 ldr w3, [x26, #16] while (blocks) 40034678: f1000673 subs x19, x19, #0x1 map->size.offset = 0; map->last_data_block = block_to_free; map->dirty = true; 4003467c: 39000354 strb w20, [x26] map->size.count--; 40034680: 51000463 sub w3, w3, #0x1 map->size.offset = 0; 40034684: 29027f43 stp w3, wzr, [x26, #16] map->last_data_block = block_to_free; 40034688: b9002b5c str w28, [x26, #40] while (blocks) 4003468c: 54000d20 b.eq 40034830 // b.none block = map->size.count - 1; 40034690: 51000461 sub w1, w3, #0x1 if (block < RTEMS_RFS_INODE_BLOCKS) 40034694: 7100103f cmp w1, #0x4 40034698: 54fffdc9 b.ls 40034650 // b.plast if (block < fs->block_map_singly_blocks) 4003469c: a9460377 ldp x23, x0, [x27, #96] direct = block % fs->blocks_per_block; 400346a0: 9ad7083c udiv x28, x1, x23 if (block < fs->block_map_singly_blocks) 400346a4: eb00003f cmp x1, x0 direct = block % fs->blocks_per_block; 400346a8: 9b178798 msub x24, x28, x23, x1 if (block < fs->block_map_singly_blocks) 400346ac: 540008a3 b.cc 400347c0 // b.lo, b.ul, b.last<== ALWAYS TAKEN else if (block < fs->block_map_doubly_blocks) 400346b0: f9403b60 ldr x0, [x27, #112] <== NOT EXECUTED 400346b4: eb00003f cmp x1, x0 <== NOT EXECUTED 400346b8: 54000bc2 b.cs 40034830 // b.hs, b.nlast<== NOT EXECUTED doubly = singly / fs->blocks_per_block; 400346bc: 9ad70b99 udiv x25, x28, x23 <== NOT EXECUTED rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer, 400346c0: aa1603e1 mov x1, x22 <== NOT EXECUTED 400346c4: aa1b03e0 mov x0, x27 <== NOT EXECUTED 400346c8: 52800023 mov w3, #0x1 // #1 <== NOT EXECUTED 400346cc: 8b190b42 add x2, x26, x25, lsl #2 <== NOT EXECUTED doubly_singly = singly % fs->blocks_per_block; 400346d0: 9b17f337 msub x23, x25, x23, x28 <== NOT EXECUTED rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer, 400346d4: b9402c42 ldr w2, [x2, #44] <== NOT EXECUTED 400346d8: 97ffca3e bl 40026fd0 <== NOT EXECUTED if (rc > 0) 400346dc: 7100001f cmp w0, #0x0 <== NOT EXECUTED 400346e0: 5400062c b.gt 400347a4 <== NOT EXECUTED singly = rtems_rfs_block_get_number (&map->doubly_buffer, 400346e4: f9402f44 ldr x4, [x26, #88] <== NOT EXECUTED 400346e8: d37ef6e2 lsl x2, x23, #2 <== NOT EXECUTED rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer, 400346ec: aa1503e1 mov x1, x21 <== NOT EXECUTED 400346f0: aa1b03e0 mov x0, x27 <== NOT EXECUTED 400346f4: 52800023 mov w3, #0x1 // #1 <== NOT EXECUTED singly = rtems_rfs_block_get_number (&map->doubly_buffer, 400346f8: f9401c84 ldr x4, [x4, #56] <== NOT EXECUTED 400346fc: 8b020085 add x5, x4, x2 <== NOT EXECUTED 40034700: 38626882 ldrb w2, [x4, x2] <== NOT EXECUTED 40034704: 394008a6 ldrb w6, [x5, #2] <== NOT EXECUTED 40034708: 39400ca4 ldrb w4, [x5, #3] <== NOT EXECUTED 4003470c: 394004a5 ldrb w5, [x5, #1] <== NOT EXECUTED 40034710: 53185cc6 lsl w6, w6, #8 <== NOT EXECUTED 40034714: 2a026084 orr w4, w4, w2, lsl #24 <== NOT EXECUTED 40034718: 2a0540c2 orr w2, w6, w5, lsl #16 <== NOT EXECUTED 4003471c: 2a040042 orr w2, w2, w4 <== NOT EXECUTED rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer, 40034720: b9006fe2 str w2, [sp, #108] <== NOT EXECUTED 40034724: 97ffca2b bl 40026fd0 <== NOT EXECUTED if (rc > 0) 40034728: 7100001f cmp w0, #0x0 <== NOT EXECUTED 4003472c: 540003cc b.gt 400347a4 <== NOT EXECUTED block_to_free = rtems_rfs_block_get_number (&map->singly_buffer, 40034730: f9402741 ldr x1, [x26, #72] <== NOT EXECUTED 40034734: d37ef700 lsl x0, x24, #2 <== NOT EXECUTED if (direct == 0) 40034738: b9406fe2 ldr w2, [sp, #108] <== NOT EXECUTED block_to_free = rtems_rfs_block_get_number (&map->singly_buffer, 4003473c: f9401c21 ldr x1, [x1, #56] <== NOT EXECUTED 40034740: 8b000023 add x3, x1, x0 <== NOT EXECUTED 40034744: 38606820 ldrb w0, [x1, x0] <== NOT EXECUTED 40034748: 39400861 ldrb w1, [x3, #2] <== NOT EXECUTED 4003474c: 39400c64 ldrb w4, [x3, #3] <== NOT EXECUTED 40034750: 3940047c ldrb w28, [x3, #1] <== NOT EXECUTED 40034754: 53185c21 lsl w1, w1, #8 <== NOT EXECUTED 40034758: 2a006080 orr w0, w4, w0, lsl #24 <== NOT EXECUTED 4003475c: 2a1c403c orr w28, w1, w28, lsl #16 <== NOT EXECUTED 40034760: 2a00039c orr w28, w28, w0 <== NOT EXECUTED if (direct == 0) 40034764: b5fff7d8 cbnz x24, 4003465c <== NOT EXECUTED rc = rtems_rfs_group_bitmap_free (fs, false, singly); 40034768: aa1b03e0 mov x0, x27 <== NOT EXECUTED 4003476c: 52800001 mov w1, #0x0 // #0 <== NOT EXECUTED 40034770: b9006fe2 str w2, [sp, #108] <== NOT EXECUTED 40034774: 97ffd0db bl 40028ae0 <== NOT EXECUTED if (rc > 0) 40034778: 7100001f cmp w0, #0x0 <== NOT EXECUTED 4003477c: 5400014c b.gt 400347a4 <== NOT EXECUTED map->last_map_block = singly; 40034780: b9406fe2 ldr w2, [sp, #108] <== NOT EXECUTED rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->doubly_buffer, 40034784: 2a1703e4 mov w4, w23 <== NOT EXECUTED map->last_map_block = singly; 40034788: b9002742 str w2, [x26, #36] <== NOT EXECUTED rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->doubly_buffer, 4003478c: 2a1903e3 mov w3, w25 <== NOT EXECUTED 40034790: aa1a03e1 mov x1, x26 <== NOT EXECUTED 40034794: aa1b03e0 mov x0, x27 <== NOT EXECUTED 40034798: aa1603e2 mov x2, x22 <== NOT EXECUTED 4003479c: 97fffc6d bl 40033950 <== NOT EXECUTED if (rc) 400347a0: 34fff5e0 cbz w0, 4003465c <== NOT EXECUTED */ if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size)) rtems_rfs_block_size_get_bpos (&map->size, &map->bpos); return 0; } 400347a4: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 400347a8: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 400347ac: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 400347b0: a9446bf9 ldp x25, x26, [sp, #64] <== NOT EXECUTED 400347b4: a94573fb ldp x27, x28, [sp, #80] <== NOT EXECUTED 400347b8: a8c77bfd ldp x29, x30, [sp], #112 <== NOT EXECUTED 400347bc: d65f03c0 ret <== NOT EXECUTED rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer, 400347c0: 8b1c0b42 add x2, x26, x28, lsl #2 400347c4: aa1503e1 mov x1, x21 400347c8: aa1b03e0 mov x0, x27 400347cc: 52800023 mov w3, #0x1 // #1 400347d0: b9402c42 ldr w2, [x2, #44] 400347d4: 97ffc9ff bl 40026fd0 if (rc > 0) 400347d8: 7100001f cmp w0, #0x0 400347dc: 54fffe4c b.gt 400347a4 <== NEVER TAKEN block_to_free = rtems_rfs_block_get_number (&map->singly_buffer, 400347e0: f9402740 ldr x0, [x26, #72] 400347e4: d37ef705 lsl x5, x24, #2 rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer, 400347e8: 2a1c03e3 mov w3, w28 400347ec: 2a1803e4 mov w4, w24 400347f0: aa1503e2 mov x2, x21 400347f4: aa1a03e1 mov x1, x26 block_to_free = rtems_rfs_block_get_number (&map->singly_buffer, 400347f8: f9401c06 ldr x6, [x0, #56] rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer, 400347fc: aa1b03e0 mov x0, x27 block_to_free = rtems_rfs_block_get_number (&map->singly_buffer, 40034800: 8b0500c7 add x7, x6, x5 40034804: 386568c5 ldrb w5, [x6, x5] 40034808: 39400ce8 ldrb w8, [x7, #3] 4003480c: 394008e6 ldrb w6, [x7, #2] 40034810: 394004fc ldrb w28, [x7, #1] 40034814: 2a056105 orr w5, w8, w5, lsl #24 40034818: 53185cc6 lsl w6, w6, #8 4003481c: 2a1c40dc orr w28, w6, w28, lsl #16 40034820: 2a05039c orr w28, w28, w5 rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer, 40034824: 97fffc4b bl 40033950 if (rc) 40034828: 34fff1a0 cbz w0, 4003465c <== ALWAYS TAKEN 4003482c: 17ffffde b 400347a4 <== NOT EXECUTED if (map->size.count == 0) 40034830: 340002c3 cbz w3, 40034888 <== ALWAYS TAKEN if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size)) 40034834: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 40034838: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 4003483c: b9401b40 ldr w0, [x26, #24] <== NOT EXECUTED 40034840: 6b03001f cmp w0, w3 <== NOT EXECUTED 40034844: 54000422 b.cs 400348c8 // b.hs, b.nlast<== NOT EXECUTED 40034848: 51000461 sub w1, w3, #0x1 <== NOT EXECUTED 4003484c: 6b00003f cmp w1, w0 <== NOT EXECUTED 40034850: 54000320 b.eq 400348b4 // b.none<== NOT EXECUTED 40034854: d503201f nop <== NOT EXECUTED return 0; 40034858: 52800000 mov w0, #0x0 // #0 } 4003485c: a94153f3 ldp x19, x20, [sp, #16] 40034860: a9446bf9 ldp x25, x26, [sp, #64] 40034864: a94573fb ldp x27, x28, [sp, #80] 40034868: a8c77bfd ldp x29, x30, [sp], #112 4003486c: d65f03c0 ret printf ("rtems-rfs: block-map-shrink: entry: blocks=%zd count=%" PRIu32 "\n", 40034870: b9401342 ldr w2, [x26, #16] <== NOT EXECUTED 40034874: aa1303e1 mov x1, x19 <== NOT EXECUTED 40034878: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 4003487c: 9114e000 add x0, x0, #0x538 <== NOT EXECUTED 40034880: 97ffb6e4 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40034884: 17ffff67 b 40034620 <== NOT EXECUTED rtems_rfs_block_size_get_bpos (&map->size, &map->bpos); 40034888: b9401740 ldr w0, [x26, #20] 4003488c: a9425bf5 ldp x21, x22, [sp, #32] 40034890: a94363f7 ldp x23, x24, [sp, #48] map->last_data_block = 0; 40034894: 2904ff5f stp wzr, wzr, [x26, #36] rtems_rfs_block_size_get_bpos (&map->size, &map->bpos); 40034898: 29030343 stp w3, w0, [x26, #24] 4003489c: b900235f str wzr, [x26, #32] 400348a0: 34fffdc0 cbz w0, 40034858 <== ALWAYS TAKEN 400348a4: 51000463 sub w3, w3, #0x1 <== NOT EXECUTED return 0; 400348a8: 52800000 mov w0, #0x0 // #0 <== NOT EXECUTED rtems_rfs_block_size_get_bpos (&map->size, &map->bpos); 400348ac: b9001b43 str w3, [x26, #24] <== NOT EXECUTED 400348b0: 17ffffeb b 4003485c <== NOT EXECUTED if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size)) 400348b4: b9401740 ldr w0, [x26, #20] <== NOT EXECUTED 400348b8: b9401f41 ldr w1, [x26, #28] <== NOT EXECUTED 400348bc: 6b00003f cmp w1, w0 <== NOT EXECUTED 400348c0: 54fffcc9 b.ls 40034858 // b.plast<== NOT EXECUTED 400348c4: 17fffff5 b 40034898 <== NOT EXECUTED rtems_rfs_block_size_get_bpos (&map->size, &map->bpos); 400348c8: b9401740 ldr w0, [x26, #20] <== NOT EXECUTED 400348cc: 17fffff3 b 40034898 <== NOT EXECUTED if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size)) 400348d0: b9401b40 ldr w0, [x26, #24] <== NOT EXECUTED 400348d4: 17ffffdb b 40034840 <== NOT EXECUTED ... =============================================================================== 0000000040034940 : int rtems_rfs_buffer_bdbuf_release (rtems_rfs_buffer* buffer, bool modified) { 40034940: a9be7bfd stp x29, x30, [sp, #-32]! 40034944: 910003fd mov x29, sp 40034948: a90153f3 stp x19, x20, [sp, #16] 4003494c: 12001c34 and w20, w1, #0xff 40034950: aa0003f3 mov x19, x0 rtems_status_code sc; int rc = 0; if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE)) 40034954: d2800800 mov x0, #0x40 // #64 40034958: 97ffd83e bl 4002aa50 4003495c: 72001c1f tst w0, #0xff 40034960: 54000180 b.eq 40034990 // b.none<== ALWAYS TAKEN printf ("rtems-rfs: bdbuf-release: block=%" PRIuPTR " bdbuf=%" PRIu32 " %s\n", 40034964: b9403262 ldr w2, [x19, #48] <== NOT EXECUTED 40034968: 7100029f cmp w20, #0x0 <== NOT EXECUTED 4003496c: f9402e61 ldr x1, [x19, #88] <== NOT EXECUTED 40034970: d00000a4 adrp x4, 4004a000 <== NOT EXECUTED 40034974: 9115e084 add x4, x4, #0x578 <== NOT EXECUTED 40034978: f0000083 adrp x3, 40047000 <== NOT EXECUTED 4003497c: 912fa063 add x3, x3, #0xbe8 <== NOT EXECUTED 40034980: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40034984: 9a831083 csel x3, x4, x3, ne // ne = any <== NOT EXECUTED 40034988: 91162000 add x0, x0, #0x588 <== NOT EXECUTED 4003498c: 97ffb6a1 bl 40022410 <__wrap_printf> <== NOT EXECUTED ((intptr_t) buffer->user), buffer->block, modified ? "(modified)" : ""); if (modified) sc = rtems_bdbuf_release_modified (buffer); 40034990: aa1303e0 mov x0, x19 if (modified) 40034994: 34000114 cbz w20, 400349b4 sc = rtems_bdbuf_release_modified (buffer); 40034998: 97fff452 bl 40031ae0 #if RTEMS_RFS_BUFFER_ERRORS printf ("rtems-rfs: buffer-release: bdbuf-%s: %s(%d)\n", modified ? "modified" : "not-modified", rtems_status_text (sc), sc); #endif rc = EIO; 4003499c: 7100001f cmp w0, #0x0 400349a0: 528000a0 mov w0, #0x5 // #5 } return rc; } 400349a4: 1a9f1000 csel w0, w0, wzr, ne // ne = any 400349a8: a94153f3 ldp x19, x20, [sp, #16] 400349ac: a8c27bfd ldp x29, x30, [sp], #32 400349b0: d65f03c0 ret sc = rtems_bdbuf_release (buffer); 400349b4: 97fff40b bl 400319e0 rc = EIO; 400349b8: 7100001f cmp w0, #0x0 400349bc: 528000a0 mov w0, #0x5 // #5 } 400349c0: 1a9f1000 csel w0, w0, wzr, ne // ne = any 400349c4: a94153f3 ldp x19, x20, [sp, #16] 400349c8: a8c27bfd ldp x29, x30, [sp], #32 400349cc: d65f03c0 ret =============================================================================== 00000000400276b0 : { 400276b0: a9be7bfd stp x29, x30, [sp, #-32]! 400276b4: 910003fd mov x29, sp 400276b8: a90153f3 stp x19, x20, [sp, #16] 400276bc: aa0003f3 mov x19, x0 if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE)) 400276c0: d2800200 mov x0, #0x10 // #16 400276c4: 94000ce3 bl 4002aa50 400276c8: 72001c1f tst w0, #0xff 400276cc: 54000581 b.ne 4002777c // b.any <== NEVER TAKEN rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_media_block_size (fs)); 400276d0: f9401261 ldr x1, [x19, #32] 400276d4: aa1303e0 mov x0, x19 400276d8: b9402c21 ldr w1, [x1, #44] 400276dc: 97ffffa9 bl 40027580 400276e0: 2a0003f4 mov w20, w0 if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE)) 400276e4: 7100001f cmp w0, #0x0 400276e8: 5400010c b.gt 40027708 <== NEVER TAKEN if (close (fs->device) < 0) 400276ec: b9401a60 ldr w0, [x19, #24] 400276f0: 94002be4 bl 40032680 400276f4: 37f80260 tbnz w0, #31, 40027740 <== NEVER TAKEN } 400276f8: 2a1403e0 mov w0, w20 400276fc: a94153f3 ldp x19, x20, [sp, #16] 40027700: a8c27bfd ldp x29, x30, [sp], #32 40027704: d65f03c0 ret if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE)) 40027708: d2800200 mov x0, #0x10 // #16 <== NOT EXECUTED 4002770c: 94000cd1 bl 4002aa50 <== NOT EXECUTED 40027710: 72001c1f tst w0, #0xff <== NOT EXECUTED 40027714: 54fffec0 b.eq 400276ec // b.none <== NOT EXECUTED printf ("rtems-rfs: buffer-close: set media block size failed: %d: %s\n", 40027718: 2a1403e0 mov w0, w20 <== NOT EXECUTED 4002771c: 94005d40 bl 4003ec1c <== NOT EXECUTED 40027720: b0000101 adrp x1, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40027724: aa0003e2 mov x2, x0 <== NOT EXECUTED 40027728: 913a8020 add x0, x1, #0xea0 <== NOT EXECUTED 4002772c: 2a1403e1 mov w1, w20 <== NOT EXECUTED 40027730: 97ffeb38 bl 40022410 <__wrap_printf> <== NOT EXECUTED if (close (fs->device) < 0) 40027734: b9401a60 ldr w0, [x19, #24] <== NOT EXECUTED 40027738: 94002bd2 bl 40032680 <== NOT EXECUTED 4002773c: 36fffde0 tbz w0, #31, 400276f8 <== NOT EXECUTED rc = errno; 40027740: 94005853 bl 4003d88c <__errno> <== NOT EXECUTED 40027744: aa0003e1 mov x1, x0 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE)) 40027748: d2800200 mov x0, #0x10 // #16 <== NOT EXECUTED rc = errno; 4002774c: b9400034 ldr w20, [x1] <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE)) 40027750: 94000cc0 bl 4002aa50 <== NOT EXECUTED 40027754: 72001c1f tst w0, #0xff <== NOT EXECUTED 40027758: 54fffd00 b.eq 400276f8 // b.none <== NOT EXECUTED printf ("rtems-rfs: buffer-close: file close failed: %d: %s\n", 4002775c: 2a1403e0 mov w0, w20 <== NOT EXECUTED 40027760: 94005d2f bl 4003ec1c <== NOT EXECUTED 40027764: b0000101 adrp x1, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40027768: aa0003e2 mov x2, x0 <== NOT EXECUTED 4002776c: 913b8020 add x0, x1, #0xee0 <== NOT EXECUTED 40027770: 2a1403e1 mov w1, w20 <== NOT EXECUTED 40027774: 97ffeb27 bl 40022410 <__wrap_printf> <== NOT EXECUTED return rc; 40027778: 17ffffe0 b 400276f8 <== NOT EXECUTED printf ("rtems-rfs: buffer-close: closing\n"); 4002777c: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40027780: 9139e000 add x0, x0, #0xe78 <== NOT EXECUTED 40027784: 97ffeb47 bl 400224a0 <__wrap_puts> <== NOT EXECUTED 40027788: 17ffffd2 b 400276d0 <== NOT EXECUTED 4002778c: 00000000 udf #0 =============================================================================== 0000000040026db0 : rtems_rfs_buffer_handle_release (rtems_rfs_file_system* fs, 40026db0: a9be7bfd stp x29, x30, [sp, #-32]! <== NOT EXECUTED 40026db4: 910003fd mov x29, sp <== NOT EXECUTED 40026db8: a90153f3 stp x19, x20, [sp, #16] <== NOT EXECUTED 40026dbc: aa0003f3 mov x19, x0 <== NOT EXECUTED 40026dc0: aa0103f4 mov x20, x1 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE)) 40026dc4: d2804000 mov x0, #0x200 // #512 <== NOT EXECUTED 40026dc8: 94000f22 bl 4002aa50 <== NOT EXECUTED 40026dcc: 72001c1f tst w0, #0xff <== NOT EXECUTED 40026dd0: 54000240 b.eq 40026e18 // b.none<== NOT EXECUTED printf ("rtems-rfs: buffer-release: block=%" PRIu32 " %s refs=%d %s\n", 40026dd4: f9400683 ldr x3, [x20, #8] <== NOT EXECUTED 40026dd8: b0000100 adrp x0, 40047000 <== NOT EXECUTED 40026ddc: 912fa000 add x0, x0, #0xbe8 <== NOT EXECUTED 40026de0: 39400281 ldrb w1, [x20] <== NOT EXECUTED 40026de4: d0000102 adrp x2, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40026de8: 9129a042 add x2, x2, #0xa68 <== NOT EXECUTED 40026dec: b9405463 ldr w3, [x3, #84] <== NOT EXECUTED 40026df0: 7100003f cmp w1, #0x0 <== NOT EXECUTED 40026df4: b9400681 ldr w1, [x20, #4] <== NOT EXECUTED 40026df8: 9a801042 csel x2, x2, x0, ne // ne = any <== NOT EXECUTED 40026dfc: 7100007f cmp w3, #0x0 <== NOT EXECUTED 40026e00: d0000104 adrp x4, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40026e04: 9129c084 add x4, x4, #0xa70 <== NOT EXECUTED 40026e08: 9a800084 csel x4, x4, x0, eq // eq = none <== NOT EXECUTED 40026e0c: d0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40026e10: 912a0000 add x0, x0, #0xa80 <== NOT EXECUTED 40026e14: 97ffed7f bl 40022410 <__wrap_printf> <== NOT EXECUTED if (rtems_rfs_buffer_refs (handle) > 0) 40026e18: f9400682 ldr x2, [x20, #8] <== NOT EXECUTED 40026e1c: b9405440 ldr w0, [x2, #84] <== NOT EXECUTED 40026e20: 7100001f cmp w0, #0x0 <== NOT EXECUTED 40026e24: 5400006d b.le 40026e30 <== NOT EXECUTED rtems_rfs_buffer_refs_down (handle); 40026e28: 51000400 sub w0, w0, #0x1 <== NOT EXECUTED 40026e2c: b9005440 str w0, [x2, #84] <== NOT EXECUTED if (rtems_rfs_buffer_refs (handle) == 0) 40026e30: 350003c0 cbnz w0, 40026ea8 <== NOT EXECUTED previous = the_node->previous; 40026e34: a9400c44 ldp x4, x3, [x2] <== NOT EXECUTED fs->buffers_count--; 40026e38: b9409a61 ldr w1, [x19, #152] <== NOT EXECUTED if (rtems_rfs_fs_no_local_cache (fs)) 40026e3c: b9400265 ldr w5, [x19] <== NOT EXECUTED next->previous = previous; 40026e40: f9000483 str x3, [x4, #8] <== NOT EXECUTED fs->buffers_count--; 40026e44: 51000421 sub w1, w1, #0x1 <== NOT EXECUTED previous->next = next; 40026e48: f9000064 str x4, [x3] <== NOT EXECUTED 40026e4c: b9009a61 str w1, [x19, #152] <== NOT EXECUTED if (rtems_rfs_fs_no_local_cache (fs)) 40026e50: 37080505 tbnz w5, #1, 40026ef0 <== NOT EXECUTED if ((fs->release_count + 40026e54: b940ba61 ldr w1, [x19, #184] <== NOT EXECUTED 40026e58: b940da64 ldr w4, [x19, #216] <== NOT EXECUTED 40026e5c: b9407a63 ldr w3, [x19, #120] <== NOT EXECUTED 40026e60: 0b040021 add w1, w1, w4 <== NOT EXECUTED 40026e64: 6b03003f cmp w1, w3 <== NOT EXECUTED 40026e68: 54000542 b.cs 40026f10 // b.hs, b.nlast<== NOT EXECUTED if (rtems_rfs_buffer_dirty (handle)) 40026e6c: 39400281 ldrb w1, [x20] <== NOT EXECUTED 40026e70: 34000261 cbz w1, 40026ebc <== NOT EXECUTED old_last = tail->previous; 40026e74: f9406a64 ldr x4, [x19, #208] <== NOT EXECUTED 40026e78: 91032263 add x3, x19, #0xc8 <== NOT EXECUTED fs->release_modified_count++; 40026e7c: b940da61 ldr w1, [x19, #216] <== NOT EXECUTED the_node->next = tail; 40026e80: f9000043 str x3, [x2] <== NOT EXECUTED tail->previous = the_node; 40026e84: f9006a62 str x2, [x19, #208] <== NOT EXECUTED 40026e88: 11000421 add w1, w1, #0x1 <== NOT EXECUTED old_last->next = the_node; 40026e8c: f9000082 str x2, [x4] <== NOT EXECUTED the_node->previous = old_last; 40026e90: f9000444 str x4, [x2, #8] <== NOT EXECUTED 40026e94: b900da61 str w1, [x19, #216] <== NOT EXECUTED handle->buffer = NULL; 40026e98: f900069f str xzr, [x20, #8] <== NOT EXECUTED } 40026e9c: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40026ea0: a8c27bfd ldp x29, x30, [sp], #32 <== NOT EXECUTED 40026ea4: d65f03c0 ret <== NOT EXECUTED handle->buffer = NULL; 40026ea8: f900069f str xzr, [x20, #8] <== NOT EXECUTED int rc = 0; 40026eac: 52800000 mov w0, #0x0 // #0 <== NOT EXECUTED } 40026eb0: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40026eb4: a8c27bfd ldp x29, x30, [sp], #32 <== NOT EXECUTED 40026eb8: d65f03c0 ret <== NOT EXECUTED old_last = tail->previous; 40026ebc: f9405a64 ldr x4, [x19, #176] <== NOT EXECUTED 40026ec0: 9102a263 add x3, x19, #0xa8 <== NOT EXECUTED fs->release_count++; 40026ec4: b940ba61 ldr w1, [x19, #184] <== NOT EXECUTED the_node->next = tail; 40026ec8: f9000043 str x3, [x2] <== NOT EXECUTED tail->previous = the_node; 40026ecc: f9005a62 str x2, [x19, #176] <== NOT EXECUTED 40026ed0: 11000421 add w1, w1, #0x1 <== NOT EXECUTED old_last->next = the_node; 40026ed4: f9000082 str x2, [x4] <== NOT EXECUTED the_node->previous = old_last; 40026ed8: f9000444 str x4, [x2, #8] <== NOT EXECUTED 40026edc: b900ba61 str w1, [x19, #184] <== NOT EXECUTED handle->buffer = NULL; 40026ee0: f900069f str xzr, [x20, #8] <== NOT EXECUTED } 40026ee4: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40026ee8: a8c27bfd ldp x29, x30, [sp], #32 <== NOT EXECUTED 40026eec: d65f03c0 ret <== NOT EXECUTED rc = rtems_rfs_buffer_io_release (handle->buffer, 40026ef0: 39400281 ldrb w1, [x20] <== NOT EXECUTED 40026ef4: aa0203e0 mov x0, x2 <== NOT EXECUTED handle->buffer->user = (void*) 0; 40026ef8: f9002c5f str xzr, [x2, #88] <== NOT EXECUTED rc = rtems_rfs_buffer_io_release (handle->buffer, 40026efc: 94003691 bl 40034940 <== NOT EXECUTED handle->buffer = NULL; 40026f00: f900069f str xzr, [x20, #8] <== NOT EXECUTED } 40026f04: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40026f08: a8c27bfd ldp x29, x30, [sp], #32 <== NOT EXECUTED 40026f0c: d65f03c0 ret <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE)) 40026f10: d2804000 mov x0, #0x200 // #512 <== NOT EXECUTED 40026f14: 94000ecf bl 4002aa50 <== NOT EXECUTED 40026f18: 72001c1f tst w0, #0xff <== NOT EXECUTED 40026f1c: 54000481 b.ne 40026fac // b.any<== NOT EXECUTED if (fs->release_count > fs->release_modified_count) 40026f20: b940ba62 ldr w2, [x19, #184] <== NOT EXECUTED 40026f24: b940da61 ldr w1, [x19, #216] <== NOT EXECUTED 40026f28: 6b01005f cmp w2, w1 <== NOT EXECUTED 40026f2c: 540001a9 b.ls 40026f60 // b.plast<== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 40026f30: f9405260 ldr x0, [x19, #160] <== NOT EXECUTED return &the_chain->Tail.Node; 40026f34: 9102a261 add x1, x19, #0xa8 <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 40026f38: 91028263 add x3, x19, #0xa0 <== NOT EXECUTED if ( !_Chain_Is_empty(the_chain)) 40026f3c: eb01001f cmp x0, x1 <== NOT EXECUTED 40026f40: 540002e0 b.eq 40026f9c // b.none<== NOT EXECUTED new_first = old_first->next; 40026f44: f9400001 ldr x1, [x0] <== NOT EXECUTED head->next = new_first; 40026f48: f9005261 str x1, [x19, #160] <== NOT EXECUTED new_first->previous = head; 40026f4c: f9000423 str x3, [x1, #8] <== NOT EXECUTED fs->release_count--; 40026f50: 51000442 sub w2, w2, #0x1 <== NOT EXECUTED modified = false; 40026f54: 52800001 mov w1, #0x0 // #0 <== NOT EXECUTED fs->release_count--; 40026f58: b900ba62 str w2, [x19, #184] <== NOT EXECUTED modified = false; 40026f5c: 1400000c b 40026f8c <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 40026f60: f9406260 ldr x0, [x19, #192] <== NOT EXECUTED return &the_chain->Tail.Node; 40026f64: 91032262 add x2, x19, #0xc8 <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 40026f68: 91030263 add x3, x19, #0xc0 <== NOT EXECUTED if ( !_Chain_Is_empty(the_chain)) 40026f6c: eb02001f cmp x0, x2 <== NOT EXECUTED 40026f70: 540001a0 b.eq 40026fa4 // b.none<== NOT EXECUTED new_first = old_first->next; 40026f74: f9400002 ldr x2, [x0] <== NOT EXECUTED head->next = new_first; 40026f78: f9006262 str x2, [x19, #192] <== NOT EXECUTED new_first->previous = head; 40026f7c: f9000443 str x3, [x2, #8] <== NOT EXECUTED fs->release_modified_count--; 40026f80: 51000422 sub w2, w1, #0x1 <== NOT EXECUTED modified = true; 40026f84: 52800021 mov w1, #0x1 // #1 <== NOT EXECUTED fs->release_modified_count--; 40026f88: b900da62 str w2, [x19, #216] <== NOT EXECUTED buffer->user = (void*) 0; 40026f8c: f9002c1f str xzr, [x0, #88] <== NOT EXECUTED rc = rtems_rfs_buffer_io_release (buffer, modified); 40026f90: 9400366c bl 40034940 <== NOT EXECUTED rtems_rfs_buffer_link (handle)); 40026f94: f9400682 ldr x2, [x20, #8] <== NOT EXECUTED 40026f98: 17ffffb5 b 40026e6c <== NOT EXECUTED return NULL; 40026f9c: d2800000 mov x0, #0x0 // #0 <== NOT EXECUTED 40026fa0: 17ffffec b 40026f50 <== NOT EXECUTED 40026fa4: d2800000 mov x0, #0x0 // #0 <== NOT EXECUTED 40026fa8: 17fffff6 b 40026f80 <== NOT EXECUTED printf ("rtems-rfs: buffer-release: local cache overflow:" 40026fac: b940ba62 ldr w2, [x19, #184] <== NOT EXECUTED 40026fb0: d0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40026fb4: 912ae000 add x0, x0, #0xab8 <== NOT EXECUTED 40026fb8: b940da61 ldr w1, [x19, #216] <== NOT EXECUTED 40026fbc: 0b010041 add w1, w2, w1 <== NOT EXECUTED 40026fc0: 97ffed14 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40026fc4: 17ffffd7 b 40026f20 <== NOT EXECUTED ... =============================================================================== 0000000040026fd0 : { 40026fd0: a9bb7bfd stp x29, x30, [sp, #-80]! 40026fd4: 910003fd mov x29, sp 40026fd8: a90153f3 stp x19, x20, [sp, #16] 40026fdc: aa0003f4 mov x20, x0 40026fe0: aa0103f3 mov x19, x1 if (rtems_rfs_buffer_handle_has_block (handle)) 40026fe4: f9400420 ldr x0, [x1, #8] { 40026fe8: a9025bf5 stp x21, x22, [sp, #32] 40026fec: 2a0203f5 mov w21, w2 40026ff0: f9001bf7 str x23, [sp, #48] 40026ff4: 12001c77 and w23, w3, #0xff if (rtems_rfs_buffer_handle_has_block (handle)) 40026ff8: b4000260 cbz x0, 40027044 if (block && (rtems_rfs_buffer_bnum (handle) == block)) 40026ffc: 34000082 cbz w2, 4002700c <== NEVER TAKEN 40027000: b9400420 ldr w0, [x1, #4] 40027004: 6b02001f cmp w0, w2 40027008: 54000d60 b.eq 400271b4 // b.none if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST)) 4002700c: d2802000 mov x0, #0x100 // #256 40027010: 94000e90 bl 4002aa50 40027014: 72001c1f tst w0, #0xff 40027018: 54000c01 b.ne 40027198 // b.any<== NEVER TAKEN if (rtems_rfs_buffer_handle_has_block (handle)) 4002701c: f9400660 ldr x0, [x19, #8] 40027020: b40000e0 cbz x0, 4002703c <== NEVER TAKEN 40027024: aa1303e1 mov x1, x19 40027028: aa1403e0 mov x0, x20 4002702c: 97ffff61 bl 40026db0 40027030: 2a0003f6 mov w22, w0 if (rc > 0) 40027034: 7100001f cmp w0, #0x0 40027038: 540005cc b.gt 400270f0 <== NEVER TAKEN handle->dirty = false; 4002703c: 3900027f strb wzr, [x19] handle->bnum = 0; 40027040: b900067f str wzr, [x19, #4] if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST)) 40027044: d2802000 mov x0, #0x100 // #256 40027048: 94000e82 bl 4002aa50 4002704c: 72001c1f tst w0, #0xff 40027050: 54000961 b.ne 4002717c // b.any<== NEVER TAKEN if (fs->buffers_count) 40027054: b9409a80 ldr w0, [x20, #152] 40027058: 35000700 cbnz w0, 40027138 if (!rtems_rfs_fs_no_local_cache (fs) && 4002705c: b9400280 ldr w0, [x20] !rtems_rfs_buffer_handle_has_block (handle)) 40027060: f9400661 ldr x1, [x19, #8] if (!rtems_rfs_fs_no_local_cache (fs) && 40027064: 37080520 tbnz w0, #1, 40027108 40027068: b4000b81 cbz x1, 400271d8 rtems_rfs_buffer_refs_up (handle); 4002706c: b9405424 ldr w4, [x1, #84] old_last = tail->previous; 40027070: 91022280 add x0, x20, #0x88 fs->buffers_count++; 40027074: b9409a83 ldr w3, [x20, #152] handle->buffer->user = (void*) ((intptr_t) block); 40027078: 2a1503e2 mov w2, w21 rtems_rfs_buffer_refs_up (handle); 4002707c: 11000484 add w4, w4, #0x1 40027080: b9005424 str w4, [x1, #84] 40027084: f9404a84 ldr x4, [x20, #144] the_node->next = tail; 40027088: f9000020 str x0, [x1] tail->previous = the_node; 4002708c: f9004a81 str x1, [x20, #144] fs->buffers_count++; 40027090: 11000463 add w3, w3, #0x1 if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST)) 40027094: d2802000 mov x0, #0x100 // #256 old_last->next = the_node; 40027098: f9000081 str x1, [x4] the_node->previous = old_last; 4002709c: f9000424 str x4, [x1, #8] fs->buffers_count++; 400270a0: b9009a83 str w3, [x20, #152] handle->buffer->user = (void*) ((intptr_t) block); 400270a4: f9002c22 str x2, [x1, #88] handle->bnum = block; 400270a8: b9000675 str w21, [x19, #4] if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST)) 400270ac: 94000e69 bl 4002aa50 400270b0: 72001c1f tst w0, #0xff 400270b4: 54000800 b.eq 400271b4 // b.none<== ALWAYS TAKEN block, read ? "read" : "get", handle->buffer->block, 400270b8: f9400664 ldr x4, [x19, #8] <== NOT EXECUTED printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n", 400270bc: 710002ff cmp w23, #0x0 <== NOT EXECUTED 400270c0: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 400270c4: 912be000 add x0, x0, #0xaf8 <== NOT EXECUTED 400270c8: b0000102 adrp x2, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 400270cc: 912bc042 add x2, x2, #0xaf0 <== NOT EXECUTED 400270d0: b9403083 ldr w3, [x4, #48] <== NOT EXECUTED 400270d4: 9a801042 csel x2, x2, x0, ne // ne = any <== NOT EXECUTED 400270d8: b9405484 ldr w4, [x4, #84] <== NOT EXECUTED 400270dc: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 400270e0: 2a1503e1 mov w1, w21 <== NOT EXECUTED 400270e4: 912f4000 add x0, x0, #0xbd0 <== NOT EXECUTED return 0; 400270e8: 52800016 mov w22, #0x0 // #0 <== NOT EXECUTED printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n", 400270ec: 97ffecc9 bl 40022410 <__wrap_printf> <== NOT EXECUTED } 400270f0: 2a1603e0 mov w0, w22 <== NOT EXECUTED 400270f4: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 400270f8: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 400270fc: f9401bf7 ldr x23, [sp, #48] <== NOT EXECUTED 40027100: a8c57bfd ldp x29, x30, [sp], #80 <== NOT EXECUTED 40027104: d65f03c0 ret <== NOT EXECUTED if (!rtems_rfs_buffer_handle_has_block (handle)) 40027108: b5fffb21 cbnz x1, 4002706c <== NEVER TAKEN rc = rtems_rfs_buffer_io_request (fs, block, read, &handle->buffer); 4002710c: 91002263 add x3, x19, #0x8 40027110: 2a1703e2 mov w2, w23 40027114: 2a1503e1 mov w1, w21 40027118: aa1403e0 mov x0, x20 4002711c: 940035f5 bl 400348f0 40027120: 2a0003f6 mov w22, w0 if (rc > 0) 40027124: 7100001f cmp w0, #0x0 40027128: 5400076c b.gt 40027214 <== NEVER TAKEN rtems_chain_set_off_chain (rtems_rfs_buffer_link(handle)); 4002712c: f9400661 ldr x1, [x19, #8] node->next = NULL; 40027130: f900003f str xzr, [x1] RTEMS_INLINE_ROUTINE void rtems_chain_set_off_chain( rtems_chain_node *node ) { _Chain_Set_off_chain( node ); } 40027134: 17ffffce b 4002706c handle->buffer = rtems_rfs_scan_chain (&fs->buffers, 40027138: 2a1503e2 mov w2, w21 4002713c: 91026281 add x1, x20, #0x98 40027140: 91020280 add x0, x20, #0x80 40027144: 97fffea3 bl 40026bd0 40027148: f9000660 str x0, [x19, #8] if (rtems_rfs_buffer_handle_has_block (handle) && 4002714c: b4000420 cbz x0, 400271d0 rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST)) 40027150: d2802000 mov x0, #0x100 // #256 40027154: 94000e3f bl 4002aa50 if (rtems_rfs_buffer_handle_has_block (handle) && 40027158: 72001c1f tst w0, #0xff 4002715c: 54fff800 b.eq 4002705c // b.none<== ALWAYS TAKEN rtems_rfs_buffer_refs (handle) + 1); 40027160: f9400661 ldr x1, [x19, #8] <== NOT EXECUTED printf ("rtems-rfs: buffer-request: buffer shared: refs: %d\n", 40027164: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40027168: 912d8000 add x0, x0, #0xb60 <== NOT EXECUTED 4002716c: b9405421 ldr w1, [x1, #84] <== NOT EXECUTED 40027170: 11000421 add w1, w1, #0x1 <== NOT EXECUTED 40027174: 97ffeca7 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40027178: 17ffffb9 b 4002705c <== NOT EXECUTED printf ("rtems-rfs: buffer-request: block=%" PRIu32 "\n", block); 4002717c: 2a1503e1 mov w1, w21 <== NOT EXECUTED 40027180: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40027184: 912ce000 add x0, x0, #0xb38 <== NOT EXECUTED 40027188: 97ffeca2 bl 40022410 <__wrap_printf> <== NOT EXECUTED if (fs->buffers_count) 4002718c: b9409a80 ldr w0, [x20, #152] <== NOT EXECUTED 40027190: 34fff660 cbz w0, 4002705c <== NOT EXECUTED 40027194: 17ffffe9 b 40027138 <== NOT EXECUTED printf ("rtems-rfs: buffer-request: handle has buffer: %" PRIu32 "\n", 40027198: b9400661 ldr w1, [x19, #4] <== NOT EXECUTED 4002719c: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 400271a0: 912c0000 add x0, x0, #0xb00 <== NOT EXECUTED 400271a4: 97ffec9b bl 40022410 <__wrap_printf> <== NOT EXECUTED if (rtems_rfs_buffer_handle_has_block (handle)) 400271a8: f9400660 ldr x0, [x19, #8] <== NOT EXECUTED 400271ac: b5fff3c0 cbnz x0, 40027024 <== NOT EXECUTED 400271b0: 17ffffa3 b 4002703c <== NOT EXECUTED return 0; 400271b4: 52800016 mov w22, #0x0 // #0 } 400271b8: 2a1603e0 mov w0, w22 400271bc: a94153f3 ldp x19, x20, [sp, #16] 400271c0: a9425bf5 ldp x21, x22, [sp, #32] 400271c4: f9401bf7 ldr x23, [sp, #48] 400271c8: a8c57bfd ldp x29, x30, [sp], #80 400271cc: d65f03c0 ret if (!rtems_rfs_fs_no_local_cache (fs) && 400271d0: b9400280 ldr w0, [x20] 400271d4: 370ff9c0 tbnz w0, #1, 4002710c if (fs->release_count) 400271d8: b940ba80 ldr w0, [x20, #184] 400271dc: 35000440 cbnz w0, 40027264 if (!rtems_rfs_buffer_handle_has_block (handle) && 400271e0: b940da80 ldr w0, [x20, #216] 400271e4: 34fff940 cbz w0, 4002710c handle->buffer = rtems_rfs_scan_chain (&fs->release_modified, 400271e8: 91036281 add x1, x20, #0xd8 400271ec: 2a1503e2 mov w2, w21 400271f0: 91030280 add x0, x20, #0xc0 400271f4: 97fffe77 bl 40026bd0 400271f8: f9000660 str x0, [x19, #8] 400271fc: aa0003e1 mov x1, x0 40027200: f90027e0 str x0, [sp, #72] if (rtems_rfs_buffer_handle_has_block (handle)) 40027204: b4fff840 cbz x0, 4002710c rtems_rfs_buffer_mark_dirty (handle); 40027208: 52800020 mov w0, #0x1 // #1 4002720c: 39000260 strb w0, [x19] 40027210: 17ffff97 b 4002706c if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST)) 40027214: d2802000 mov x0, #0x100 // #256 <== NOT EXECUTED 40027218: 94000e0e bl 4002aa50 <== NOT EXECUTED 4002721c: 72001c1f tst w0, #0xff <== NOT EXECUTED 40027220: 54fff680 b.eq 400270f0 // b.none<== NOT EXECUTED printf ("rtems-rfs: buffer-request: block=%" PRIu32 ": bdbuf-%s: %d: %s\n", 40027224: 710002ff cmp w23, #0x0 <== NOT EXECUTED 40027228: b0000101 adrp x1, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 4002722c: 912be021 add x1, x1, #0xaf8 <== NOT EXECUTED 40027230: b0000113 adrp x19, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40027234: 912bc273 add x19, x19, #0xaf0 <== NOT EXECUTED 40027238: 2a1603e0 mov w0, w22 <== NOT EXECUTED 4002723c: 9a811273 csel x19, x19, x1, ne // ne = any <== NOT EXECUTED 40027240: 94005e77 bl 4003ec1c <== NOT EXECUTED 40027244: aa0003e4 mov x4, x0 <== NOT EXECUTED 40027248: aa1303e2 mov x2, x19 <== NOT EXECUTED 4002724c: 2a1503e1 mov w1, w21 <== NOT EXECUTED 40027250: 2a1603e3 mov w3, w22 <== NOT EXECUTED 40027254: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40027258: 912e6000 add x0, x0, #0xb98 <== NOT EXECUTED 4002725c: 97ffec6d bl 40022410 <__wrap_printf> <== NOT EXECUTED 40027260: 17ffffa4 b 400270f0 <== NOT EXECUTED handle->buffer = rtems_rfs_scan_chain (&fs->release, 40027264: 9102e281 add x1, x20, #0xb8 40027268: 2a1503e2 mov w2, w21 4002726c: 91028280 add x0, x20, #0xa0 40027270: 97fffe58 bl 40026bd0 40027274: f9000660 str x0, [x19, #8] 40027278: aa0003e1 mov x1, x0 if (!rtems_rfs_buffer_handle_has_block (handle) && 4002727c: b5ffef80 cbnz x0, 4002706c 40027280: 17ffffd8 b 400271e0 ... =============================================================================== 00000000400272b0 : { 400272b0: a9b67bfd stp x29, x30, [sp, #-160]! 400272b4: 910003fd mov x29, sp 400272b8: a90153f3 stp x19, x20, [sp, #16] 400272bc: aa0003f4 mov x20, x0 400272c0: aa0103f3 mov x19, x1 if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC)) 400272c4: d2800400 mov x0, #0x20 // #32 { 400272c8: f90013f5 str x21, [sp, #32] if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC)) 400272cc: 94000de1 bl 4002aa50 400272d0: 72001c1f tst w0, #0xff 400272d4: 540004e1 b.ne 40027370 // b.any <== NEVER TAKEN fs->device = open (name, O_RDWR); 400272d8: aa1403e0 mov x0, x20 400272dc: 52800041 mov w1, #0x2 // #2 400272e0: 94002e84 bl 40032cf0 400272e4: b9001a60 str w0, [x19, #24] if (fs->device < 0) 400272e8: 37f80560 tbnz w0, #31, 40027394 <== NEVER TAKEN if (fstat (fs->device, &st) < 0) 400272ec: 9100e3e1 add x1, sp, #0x38 400272f0: 94002d40 bl 400327f0 400272f4: 37f80940 tbnz w0, #31, 4002741c <== NEVER TAKEN if (!S_ISBLK (st.st_mode)) 400272f8: b9404be0 ldr w0, [sp, #72] 400272fc: 12140c00 and w0, w0, #0xf000 40027300: 7140181f cmp w0, #0x6, lsl #12 40027304: 54000221 b.ne 40027348 // b.any <== NEVER TAKEN static inline int rtems_disk_fd_get_disk_device( int fd, rtems_disk_device **dd_ptr ) { return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr); 40027308: b9401a60 ldr w0, [x19, #24] 4002730c: 91008262 add x2, x19, #0x20 40027310: d2884121 mov x1, #0x4209 // #16905 40027314: f2a80101 movk x1, #0x4008, lsl #16 40027318: 94002d96 bl 40032970 4002731c: 2a0003f5 mov w21, w0 if (rv != 0) 40027320: 350006c0 cbnz w0, 400273f8 <== NEVER TAKEN if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC)) 40027324: d2800400 mov x0, #0x20 // #32 40027328: 94000dca bl 4002aa50 4002732c: 72001c1f tst w0, #0xff 40027330: 54000501 b.ne 400273d0 // b.any <== NEVER TAKEN } 40027334: 2a1503e0 mov w0, w21 40027338: a94153f3 ldp x19, x20, [sp, #16] 4002733c: f94013f5 ldr x21, [sp, #32] 40027340: a8ca7bfd ldp x29, x30, [sp], #160 40027344: d65f03c0 ret if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN)) 40027348: d2800100 mov x0, #0x8 // #8 <== NOT EXECUTED 4002734c: 94000dc1 bl 4002aa50 <== NOT EXECUTED 40027350: 72001c1f tst w0, #0xff <== NOT EXECUTED 40027354: 54000321 b.ne 400273b8 // b.any <== NOT EXECUTED return ENXIO; 40027358: 528000d5 mov w21, #0x6 // #6 <== NOT EXECUTED } 4002735c: 2a1503e0 mov w0, w21 <== NOT EXECUTED 40027360: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40027364: f94013f5 ldr x21, [sp, #32] <== NOT EXECUTED 40027368: a8ca7bfd ldp x29, x30, [sp], #160 <== NOT EXECUTED 4002736c: d65f03c0 ret <== NOT EXECUTED printf ("rtems-rfs: buffer-open: opening: %s\n", name); 40027370: aa1403e1 mov x1, x20 <== NOT EXECUTED 40027374: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40027378: 91304000 add x0, x0, #0xc10 <== NOT EXECUTED 4002737c: 97ffec25 bl 40022410 <__wrap_printf> <== NOT EXECUTED fs->device = open (name, O_RDWR); 40027380: aa1403e0 mov x0, x20 <== NOT EXECUTED 40027384: 52800041 mov w1, #0x2 // #2 <== NOT EXECUTED 40027388: 94002e5a bl 40032cf0 <== NOT EXECUTED 4002738c: b9001a60 str w0, [x19, #24] <== NOT EXECUTED if (fs->device < 0) 40027390: 36fffae0 tbz w0, #31, 400272ec <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN)) 40027394: d2800100 mov x0, #0x8 // #8 <== NOT EXECUTED 40027398: 94000dae bl 4002aa50 <== NOT EXECUTED 4002739c: 72001c1f tst w0, #0xff <== NOT EXECUTED 400273a0: 54fffdc0 b.eq 40027358 // b.none <== NOT EXECUTED printf ("rtems-rfs: buffer-open: cannot open file\n"); 400273a4: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 400273a8: 9130e000 add x0, x0, #0xc38 <== NOT EXECUTED return ENXIO; 400273ac: 528000d5 mov w21, #0x6 // #6 <== NOT EXECUTED printf ("rtems-rfs: buffer-open: cannot open file\n"); 400273b0: 97ffec3c bl 400224a0 <__wrap_puts> <== NOT EXECUTED 400273b4: 17ffffe0 b 40027334 <== NOT EXECUTED printf ("rtems-rfs: buffer-open: '%s' is not a block device\n", name); 400273b8: aa1403e1 mov x1, x20 <== NOT EXECUTED 400273bc: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED return ENXIO; 400273c0: 528000d5 mov w21, #0x6 // #6 <== NOT EXECUTED printf ("rtems-rfs: buffer-open: '%s' is not a block device\n", name); 400273c4: 91326000 add x0, x0, #0xc98 <== NOT EXECUTED 400273c8: 97ffec12 bl 40022410 <__wrap_printf> <== NOT EXECUTED 400273cc: 17ffffda b 40027334 <== NOT EXECUTED rtems_rfs_fs_media_blocks (fs), 400273d0: f9401262 ldr x2, [x19, #32] <== NOT EXECUTED printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n", 400273d4: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 400273d8: 91340000 add x0, x0, #0xd00 <== NOT EXECUTED 400273dc: 29450841 ldp w1, w2, [x2, #40] <== NOT EXECUTED 400273e0: 97ffec0c bl 40022410 <__wrap_printf> <== NOT EXECUTED } 400273e4: 2a1503e0 mov w0, w21 <== NOT EXECUTED 400273e8: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 400273ec: f94013f5 ldr x21, [sp, #32] <== NOT EXECUTED 400273f0: a8ca7bfd ldp x29, x30, [sp], #160 <== NOT EXECUTED 400273f4: d65f03c0 ret <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN)) 400273f8: d2800100 mov x0, #0x8 // #8 <== NOT EXECUTED 400273fc: 94000d95 bl 4002aa50 <== NOT EXECUTED 40027400: 72001c1f tst w0, #0xff <== NOT EXECUTED 40027404: 54fffaa0 b.eq 40027358 // b.none <== NOT EXECUTED printf ("rtems-rfs: buffer-open: cannot obtain the disk\n"); 40027408: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 4002740c: 91334000 add x0, x0, #0xcd0 <== NOT EXECUTED return ENXIO; 40027410: 528000d5 mov w21, #0x6 // #6 <== NOT EXECUTED printf ("rtems-rfs: buffer-open: cannot obtain the disk\n"); 40027414: 97ffec23 bl 400224a0 <__wrap_puts> <== NOT EXECUTED 40027418: 17ffffc7 b 40027334 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN)) 4002741c: d2800100 mov x0, #0x8 // #8 <== NOT EXECUTED 40027420: 94000d8c bl 4002aa50 <== NOT EXECUTED 40027424: 72001c1f tst w0, #0xff <== NOT EXECUTED 40027428: 54fff980 b.eq 40027358 // b.none <== NOT EXECUTED name, strerror (errno)); 4002742c: 94005918 bl 4003d88c <__errno> <== NOT EXECUTED printf ("rtems-rfs: buffer-open: stat '%s' failed: %s\n", 40027430: b9400000 ldr w0, [x0] <== NOT EXECUTED return ENXIO; 40027434: 528000d5 mov w21, #0x6 // #6 <== NOT EXECUTED printf ("rtems-rfs: buffer-open: stat '%s' failed: %s\n", 40027438: 94005df9 bl 4003ec1c <== NOT EXECUTED 4002743c: aa0003e2 mov x2, x0 <== NOT EXECUTED 40027440: aa1403e1 mov x1, x20 <== NOT EXECUTED 40027444: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40027448: 9131a000 add x0, x0, #0xc68 <== NOT EXECUTED 4002744c: 97ffebf1 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40027450: 17ffffb9 b 40027334 <== NOT EXECUTED ... =============================================================================== 0000000040027580 : { 40027580: a9bd7bfd stp x29, x30, [sp, #-48]! 40027584: 910003fd mov x29, sp 40027588: a90153f3 stp x19, x20, [sp, #16] 4002758c: aa0003f3 mov x19, x0 if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE)) 40027590: d2808000 mov x0, #0x400 // #1024 { 40027594: b9002fe1 str w1, [sp, #44] if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE)) 40027598: 94000d2e bl 4002aa50 4002759c: 72001c1f tst w0, #0xff 400275a0: 540007a1 b.ne 40027694 // b.any<== NEVER TAKEN rc = rtems_rfs_buffers_release (fs); 400275a4: aa1303e0 mov x0, x19 400275a8: 97ffffd6 bl 40027500 400275ac: 2a0003f4 mov w20, w0 if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE)) 400275b0: 7100001f cmp w0, #0x0 400275b4: 5400020c b.gt 400275f4 <== NEVER TAKEN rc = rtems_rfs_buffer_sync (fs); 400275b8: aa1303e0 mov x0, x19 400275bc: 97ffffa9 bl 40027460 400275c0: 2a0003f4 mov w20, w0 if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE)) 400275c4: 7100001f cmp w0, #0x0 400275c8: 5400038c b.gt 40027638 <== NEVER TAKEN rc = fs->disk->ioctl (fs->disk, RTEMS_BLKIO_SETBLKSIZE, &size); 400275cc: f9401260 ldr x0, [x19, #32] 400275d0: 52884081 mov w1, #0x4204 // #16900 400275d4: 72b00081 movk w1, #0x8004, lsl #16 400275d8: 9100b3e2 add x2, sp, #0x2c 400275dc: f9402403 ldr x3, [x0, #72] 400275e0: d63f0060 blr x3 if (rc < 0) 400275e4: 37f804e0 tbnz w0, #31, 40027680 <== NEVER TAKEN } 400275e8: a94153f3 ldp x19, x20, [sp, #16] 400275ec: a8c37bfd ldp x29, x30, [sp], #48 400275f0: d65f03c0 ret if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE)) 400275f4: d2808000 mov x0, #0x400 // #1024 <== NOT EXECUTED 400275f8: 94000d16 bl 4002aa50 <== NOT EXECUTED 400275fc: 72001c1f tst w0, #0xff <== NOT EXECUTED 40027600: 54fffdc0 b.eq 400275b8 // b.none<== NOT EXECUTED printf ("rtems-rfs: buffer-setblksize: buffer release failed: %d: %s\n", 40027604: 2a1403e0 mov w0, w20 <== NOT EXECUTED 40027608: 94005d85 bl 4003ec1c <== NOT EXECUTED 4002760c: 2a1403e1 mov w1, w20 <== NOT EXECUTED 40027610: aa0003e2 mov x2, x0 <== NOT EXECUTED 40027614: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 40027618: 9137e000 add x0, x0, #0xdf8 <== NOT EXECUTED 4002761c: 97ffeb7d bl 40022410 <__wrap_printf> <== NOT EXECUTED rc = rtems_rfs_buffer_sync (fs); 40027620: aa1303e0 mov x0, x19 <== NOT EXECUTED 40027624: 97ffff8f bl 40027460 <== NOT EXECUTED 40027628: 2a0003f4 mov w20, w0 <== NOT EXECUTED if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE)) 4002762c: 7100001f cmp w0, #0x0 <== NOT EXECUTED 40027630: 54fffced b.le 400275cc <== NOT EXECUTED 40027634: d503201f nop <== NOT EXECUTED 40027638: d2808000 mov x0, #0x400 // #1024 <== NOT EXECUTED 4002763c: 94000d05 bl 4002aa50 <== NOT EXECUTED 40027640: 72001c1f tst w0, #0xff <== NOT EXECUTED 40027644: 54fffc40 b.eq 400275cc // b.none<== NOT EXECUTED printf ("rtems-rfs: buffer-setblksize: device sync failed: %d: %s\n", 40027648: 2a1403e0 mov w0, w20 <== NOT EXECUTED 4002764c: 94005d74 bl 4003ec1c <== NOT EXECUTED 40027650: 2a1403e1 mov w1, w20 <== NOT EXECUTED 40027654: aa0003e2 mov x2, x0 <== NOT EXECUTED 40027658: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 4002765c: 9138e000 add x0, x0, #0xe38 <== NOT EXECUTED 40027660: 97ffeb6c bl 40022410 <__wrap_printf> <== NOT EXECUTED rc = fs->disk->ioctl (fs->disk, RTEMS_BLKIO_SETBLKSIZE, &size); 40027664: f9401260 ldr x0, [x19, #32] <== NOT EXECUTED 40027668: 52884081 mov w1, #0x4204 // #16900 <== NOT EXECUTED 4002766c: 72b00081 movk w1, #0x8004, lsl #16 <== NOT EXECUTED 40027670: 9100b3e2 add x2, sp, #0x2c <== NOT EXECUTED 40027674: f9402403 ldr x3, [x0, #72] <== NOT EXECUTED 40027678: d63f0060 blr x3 <== NOT EXECUTED if (rc < 0) 4002767c: 36fffb60 tbz w0, #31, 400275e8 <== NOT EXECUTED rc = errno; 40027680: 94005883 bl 4003d88c <__errno> <== NOT EXECUTED 40027684: b9400000 ldr w0, [x0] <== NOT EXECUTED } 40027688: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 4002768c: a8c37bfd ldp x29, x30, [sp], #48 <== NOT EXECUTED 40027690: d65f03c0 ret <== NOT EXECUTED printf ("rtems-rfs: buffer-setblksize: block size: %" PRIu32 "\n", size); 40027694: b9402fe1 ldr w1, [sp, #44] <== NOT EXECUTED 40027698: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 4002769c: 91372000 add x0, x0, #0xdc8 <== NOT EXECUTED 400276a0: 97ffeb5c bl 40022410 <__wrap_printf> <== NOT EXECUTED 400276a4: 17ffffc0 b 400275a4 <== NOT EXECUTED ... =============================================================================== 0000000040027460 : { 40027460: a9be7bfd stp x29, x30, [sp, #-32]! 40027464: 910003fd mov x29, sp 40027468: a90153f3 stp x19, x20, [sp, #16] 4002746c: aa0003f3 mov x19, x0 if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC)) 40027470: d2800400 mov x0, #0x20 // #32 40027474: 94000d77 bl 4002aa50 40027478: 72001c1f tst w0, #0xff 4002747c: 54000141 b.ne 400274a4 // b.any <== NEVER TAKEN sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs)); 40027480: f9401260 ldr x0, [x19, #32] int result = 0; 40027484: 52800014 mov w20, #0x0 // #0 sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs)); 40027488: 940029ba bl 40031b70 4002748c: 2a0003f3 mov w19, w0 if (sc != RTEMS_SUCCESSFUL) 40027490: 350001a0 cbnz w0, 400274c4 <== NEVER TAKEN } 40027494: 2a1403e0 mov w0, w20 40027498: a94153f3 ldp x19, x20, [sp, #16] 4002749c: a8c27bfd ldp x29, x30, [sp], #32 400274a0: d65f03c0 ret printf ("rtems-rfs: buffer-sync: syncing\n"); 400274a4: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 400274a8: 9134c000 add x0, x0, #0xd30 <== NOT EXECUTED 400274ac: 97ffebfd bl 400224a0 <__wrap_puts> <== NOT EXECUTED int result = 0; 400274b0: 52800014 mov w20, #0x0 // #0 <== NOT EXECUTED sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs)); 400274b4: f9401260 ldr x0, [x19, #32] <== NOT EXECUTED 400274b8: 940029ae bl 40031b70 <== NOT EXECUTED 400274bc: 2a0003f3 mov w19, w0 <== NOT EXECUTED if (sc != RTEMS_SUCCESSFUL) 400274c0: 34fffea0 cbz w0, 40027494 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC)) 400274c4: d2800400 mov x0, #0x20 // #32 <== NOT EXECUTED result = EIO; 400274c8: 528000b4 mov w20, #0x5 // #5 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC)) 400274cc: 94000d61 bl 4002aa50 <== NOT EXECUTED 400274d0: 72001c1f tst w0, #0xff <== NOT EXECUTED 400274d4: 54fffe00 b.eq 40027494 // b.none <== NOT EXECUTED printf ("rtems-rfs: buffer-sync: device sync failed: %s\n", 400274d8: 2a1303e0 mov w0, w19 <== NOT EXECUTED 400274dc: 94000d65 bl 4002aa70 <== NOT EXECUTED 400274e0: b0000102 adrp x2, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 400274e4: aa0003e1 mov x1, x0 <== NOT EXECUTED 400274e8: 91354040 add x0, x2, #0xd50 <== NOT EXECUTED 400274ec: 97ffebc9 bl 40022410 <__wrap_printf> <== NOT EXECUTED } 400274f0: 2a1403e0 mov w0, w20 <== NOT EXECUTED 400274f4: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 400274f8: a8c27bfd ldp x29, x30, [sp], #32 <== NOT EXECUTED 400274fc: d65f03c0 ret <== NOT EXECUTED =============================================================================== 0000000040027500 : int rtems_rfs_buffers_release (rtems_rfs_file_system* fs) { 40027500: a9be7bfd stp x29, x30, [sp, #-32]! 40027504: 910003fd mov x29, sp 40027508: a90153f3 stp x19, x20, [sp, #16] 4002750c: aa0003f3 mov x19, x0 int rrc = 0; int rc; if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE)) 40027510: d2800800 mov x0, #0x40 // #64 40027514: 94000d4f bl 4002aa50 40027518: 72001c1f tst w0, #0xff 4002751c: 54000241 b.ne 40027564 // b.any <== NEVER TAKEN printf ("rtems-rfs: buffers-release: active:%" PRIu32 " " "release:%" PRIu32 " release-modified:%" PRIu32 "\n", fs->buffers_count, fs->release_count, fs->release_modified_count); rc = rtems_rfs_release_chain (&fs->release, 40027520: 9102e261 add x1, x19, #0xb8 40027524: 52800002 mov w2, #0x0 // #0 40027528: 91028260 add x0, x19, #0xa0 4002752c: 97fffdf5 bl 40026d00 &fs->release_count, false); if ((rc > 0) && (rrc == 0)) rrc = rc; rc = rtems_rfs_release_chain (&fs->release_modified, 40027530: 91036261 add x1, x19, #0xd8 rc = rtems_rfs_release_chain (&fs->release, 40027534: 2a0003f4 mov w20, w0 rc = rtems_rfs_release_chain (&fs->release_modified, 40027538: 52800022 mov w2, #0x1 // #1 4002753c: 91030260 add x0, x19, #0xc0 40027540: 97fffdf0 bl 40026d00 &fs->release_modified_count, true); if ((rc > 0) && (rrc == 0)) 40027544: 7100001f cmp w0, #0x0 40027548: 7a40ca80 ccmp w20, #0x0, #0x0, gt 4002754c: 5400006d b.le 40027558 <== NEVER TAKEN 40027550: 7100029f cmp w20, #0x0 40027554: 1a9fa280 csel w0, w20, wzr, ge // ge = tcont rrc = rc; return rrc; } 40027558: a94153f3 ldp x19, x20, [sp, #16] 4002755c: a8c27bfd ldp x29, x30, [sp], #32 40027560: d65f03c0 ret printf ("rtems-rfs: buffers-release: active:%" PRIu32 " " 40027564: b9409a61 ldr w1, [x19, #152] <== NOT EXECUTED 40027568: b0000100 adrp x0, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 4002756c: 91360000 add x0, x0, #0xd80 <== NOT EXECUTED 40027570: b940ba62 ldr w2, [x19, #184] <== NOT EXECUTED 40027574: b940da63 ldr w3, [x19, #216] <== NOT EXECUTED 40027578: 97ffeba6 bl 40022410 <__wrap_printf> <== NOT EXECUTED 4002757c: 17ffffe9 b 40027520 <== NOT EXECUTED =============================================================================== 0000000040034f60 : rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, const char* name, size_t length, rtems_rfs_ino ino) { 40034f60: a9b17bfd stp x29, x30, [sp, #-240]! 40034f64: 910003fd mov x29, sp 40034f68: a90153f3 stp x19, x20, [sp, #16] 40034f6c: a9025bf5 stp x21, x22, [sp, #32] 40034f70: aa0103f5 mov x21, x1 40034f74: aa0303f6 mov x22, x3 40034f78: a90363f7 stp x23, x24, [sp, #48] 40034f7c: aa0203f7 mov x23, x2 40034f80: 2a0403f8 mov w24, w4 40034f84: a9046bf9 stp x25, x26, [sp, #64] 40034f88: aa0003fa mov x26, x0 rtems_rfs_block_map map; rtems_rfs_block_pos bpos; rtems_rfs_buffer_handle buffer; int rc; if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY)) 40034f8c: d2a40000 mov x0, #0x20000000 // #536870912 40034f90: 97ffd6b0 bl 4002aa50 40034f94: 72001c1f tst w0, #0xff 40034f98: 54001481 b.ne 40035228 // b.any <== NEVER TAKEN for (c = 0; c < length; c++) printf ("%c", name[c]); printf (", len=%zd\n", length); } rc = rtems_rfs_block_map_open (fs, dir, &map); 40034f9c: aa1503e1 mov x1, x21 40034fa0: 910243e2 add x2, sp, #0x90 40034fa4: aa1a03e0 mov x0, x26 40034fa8: 97fffb56 bl 40033d00 40034fac: 2a0003f4 mov w20, w0 if (rc > 0) 40034fb0: 7100001f cmp w0, #0x0 40034fb4: 5400064c b.gt 4003507c <== NEVER TAKEN handle->dirty = false; 40034fb8: a90573fb stp x27, x28, [sp, #80] int elength; elength = rtems_rfs_dir_entry_length (entry); eino = rtems_rfs_dir_entry_ino (entry); if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) 40034fbc: 529ffffc mov w28, #0xffff // #65535 bpos->boff = 0; 40034fc0: 290e7fff stp wzr, wzr, [sp, #112] bpos->block = 0; 40034fc4: b9007bff str wzr, [sp, #120] 40034fc8: 390203ff strb wzr, [sp, #128] handle->bnum = 0; 40034fcc: b90087ff str wzr, [sp, #132] handle->buffer = NULL; 40034fd0: f90047ff str xzr, [sp, #136] rc = rtems_rfs_block_map_find (fs, &map, &bpos, &block); 40034fd4: 9101b3e3 add x3, sp, #0x6c 40034fd8: 9101c3e2 add x2, sp, #0x70 40034fdc: 910243e1 add x1, sp, #0x90 40034fe0: aa1a03e0 mov x0, x26 40034fe4: 97fffc23 bl 40034070 40034fe8: 2a0003f4 mov w20, w0 if (rc > 0) 40034fec: 7100001f cmp w0, #0x0 40034ff0: 540013ed b.le 4003526c if (rc != ENXIO) 40034ff4: 7100181f cmp w0, #0x6 40034ff8: 54001801 b.ne 400352f8 // b.any <== NEVER TAKEN rc = rtems_rfs_block_map_grow (fs, &map, 1, &block); 40034ffc: 9101b3e3 add x3, sp, #0x6c 40035000: 910243e1 add x1, sp, #0x90 40035004: aa1a03e0 mov x0, x26 40035008: d2800022 mov x2, #0x1 // #1 4003500c: 97fffc89 bl 40034230 40035010: 2a0003f4 mov w20, w0 if (rc > 0) 40035014: 7100001f cmp w0, #0x0 40035018: 5400154c b.gt 400352c0 <== NEVER TAKEN bpos.bno++; 4003501c: 294d93e2 ldp w2, w4, [sp, #108] rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read); 40035020: 910203e1 add x1, sp, #0x80 40035024: aa1a03e0 mov x0, x26 40035028: 52800003 mov w3, #0x0 // #0 bpos.bno++; 4003502c: 11000484 add w4, w4, #0x1 40035030: b90073e4 str w4, [sp, #112] rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read); 40035034: 97ffc7e7 bl 40026fd0 40035038: 2a0003f4 mov w20, w0 if (rc > 0) 4003503c: 7100001f cmp w0, #0x0 40035040: 540002cd b.le 40035098 <== ALWAYS TAKEN if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY)) 40035044: d2a40000 mov x0, #0x20000000 // #536870912 <== NOT EXECUTED 40035048: 97ffd682 bl 4002aa50 <== NOT EXECUTED 4003504c: 72001c1f tst w0, #0xff <== NOT EXECUTED 40035050: 54001701 b.ne 40035330 // b.any <== NOT EXECUTED rtems_rfs_buffer_handle_release (fs, handle); 40035054: 910203e1 add x1, sp, #0x80 <== NOT EXECUTED 40035058: aa1a03e0 mov x0, x26 <== NOT EXECUTED 4003505c: 97ffc88d bl 40027290 <== NOT EXECUTED handle->dirty = false; 40035060: 390203ff strb wzr, [sp, #128] <== NOT EXECUTED offset += elength; } } rtems_rfs_buffer_handle_close (fs, &buffer); rtems_rfs_block_map_close (fs, &map); 40035064: 910243e1 add x1, sp, #0x90 <== NOT EXECUTED 40035068: aa1a03e0 mov x0, x26 <== NOT EXECUTED handle->bnum = 0; 4003506c: b90087ff str wzr, [sp, #132] <== NOT EXECUTED handle->buffer = NULL; 40035070: f90047ff str xzr, [sp, #136] <== NOT EXECUTED 40035074: 97fffb87 bl 40033e90 <== NOT EXECUTED return rc; 40035078: a94573fb ldp x27, x28, [sp, #80] <== NOT EXECUTED } 4003507c: 2a1403e0 mov w0, w20 <== NOT EXECUTED 40035080: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40035084: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 40035088: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 4003508c: a9446bf9 ldp x25, x26, [sp, #64] <== NOT EXECUTED 40035090: a8cf7bfd ldp x29, x30, [sp], #240 <== NOT EXECUTED 40035094: d65f03c0 ret <== NOT EXECUTED entry = rtems_rfs_buffer_data (&buffer); 40035098: f94047e0 ldr x0, [sp, #136] memset (entry, 0xff, rtems_rfs_fs_block_size (fs)); 4003509c: 52801fe1 mov w1, #0xff // #255 400350a0: f9400b42 ldr x2, [x26, #16] entry = rtems_rfs_buffer_data (&buffer); 400350a4: f9401c13 ldr x19, [x0, #56] memset (entry, 0xff, rtems_rfs_fs_block_size (fs)); 400350a8: aa1303e0 mov x0, x19 400350ac: 940023c0 bl 4003dfac while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 400350b0: f9400b47 ldr x7, [x26, #16] 400350b4: f10028e6 subs x6, x7, #0xa 400350b8: 54fff8e0 b.eq 40034fd4 // b.none <== NEVER TAKEN offset = 0; 400350bc: 5280001b mov w27, #0x0 // #0 while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 400350c0: d2800004 mov x4, #0x0 // #0 400350c4: 1400000f b 40035100 if (rtems_rfs_dir_entry_valid (fs, elength, eino)) 400350c8: 71002b3f cmp w25, #0xa 400350cc: 5400082d b.le 400351d0 <== NEVER TAKEN 400350d0: b9403340 ldr w0, [x26, #48] entry += elength; 400350d4: 8b252273 add x19, x19, w5, uxth if (rtems_rfs_dir_entry_valid (fs, elength, eino)) 400350d8: 6b19001f cmp w0, w25 400350dc: 540007a9 b.ls 400351d0 // b.plast <== NEVER TAKEN 400350e0: 34000794 cbz w20, 400351d0 <== NEVER TAKEN 400350e4: b9402b40 ldr w0, [x26, #40] 400350e8: 6b14001f cmp w0, w20 400350ec: 54000723 b.cc 400351d0 // b.lo, b.ul, b.last<== NEVER TAKEN offset += elength; 400350f0: 0b19037b add w27, w27, w25 while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 400350f4: 93407f64 sxtw x4, w27 400350f8: eb0400df cmp x6, x4 400350fc: 54fff6c9 b.ls 40034fd4 // b.plast <== NEVER TAKEN entry += elength; 40035100: 39402262 ldrb w2, [x19, #8] 40035104: 39402665 ldrb w5, [x19, #9] 40035108: 39400260 ldrb w0, [x19] 4003510c: 39400661 ldrb w1, [x19, #1] 40035110: 39400a63 ldrb w3, [x19, #2] 40035114: aa052045 orr x5, x2, x5, lsl #8 40035118: 39400e74 ldrb w20, [x19, #3] 4003511c: 5ac004a5 rev16 w5, w5 40035120: aa012001 orr x1, x0, x1, lsl #8 40035124: 12003cb9 and w25, w5, #0xffff eino = rtems_rfs_dir_entry_ino (entry); 40035128: aa034023 orr x3, x1, x3, lsl #16 if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) 4003512c: 6b1c033f cmp w25, w28 40035130: aa146074 orr x20, x3, x20, lsl #24 40035134: 5ac00a94 rev w20, w20 40035138: 54fffc81 b.ne 400350c8 // b.any (rtems_rfs_fs_block_size (fs) - offset)) 4003513c: cb0400e4 sub x4, x7, x4 if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) < 40035140: 91002ac0 add x0, x22, #0xa 40035144: eb04001f cmp x0, x4 40035148: 54fff462 b.cs 40034fd4 // b.hs, b.nlast<== NEVER TAKEN hash = rtems_rfs_dir_hash (name, length); 4003514c: aa1603e1 mov x1, x22 40035150: aa1703e0 mov x0, x23 40035154: 940002eb bl 40035d00 40035158: 2a0003e3 mov w3, w0 rtems_rfs_dir_set_entry_length (entry, 4003515c: 11002ac4 add w4, w22, #0xa rtems_rfs_dir_set_entry_hash (entry, hash); 40035160: 53187c08 lsr w8, w0, #24 40035164: 53107c07 lsr w7, w0, #16 40035168: 53087c06 lsr w6, w0, #8 rtems_rfs_dir_set_entry_length (entry, 4003516c: d3483c85 ubfx x5, x4, #8, #8 rtems_rfs_dir_set_entry_ino (entry, ino); 40035170: 53087f09 lsr w9, w24, #8 40035174: 53187f01 lsr w1, w24, #24 40035178: 53107f00 lsr w0, w24, #16 4003517c: 39000261 strb w1, [x19] memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length); 40035180: aa1603e2 mov x2, x22 rtems_rfs_dir_set_entry_ino (entry, ino); 40035184: 39000660 strb w0, [x19, #1] memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length); 40035188: aa1703e1 mov x1, x23 rtems_rfs_dir_set_entry_ino (entry, ino); 4003518c: 39000a69 strb w9, [x19, #2] memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length); 40035190: 91002a60 add x0, x19, #0xa rtems_rfs_dir_set_entry_ino (entry, ino); 40035194: 39000e78 strb w24, [x19, #3] return 0; 40035198: 52800014 mov w20, #0x0 // #0 rtems_rfs_dir_set_entry_hash (entry, hash); 4003519c: 39001268 strb w8, [x19, #4] 400351a0: 39001667 strb w7, [x19, #5] 400351a4: 39001a66 strb w6, [x19, #6] 400351a8: 39001e63 strb w3, [x19, #7] rtems_rfs_dir_set_entry_length (entry, 400351ac: 39002265 strb w5, [x19, #8] 400351b0: 39002664 strb w4, [x19, #9] memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length); 400351b4: 94002328 bl 4003de54 rtems_rfs_buffer_mark_dirty (&buffer); 400351b8: 52800022 mov w2, #0x1 // #1 rtems_rfs_buffer_handle_release (fs, handle); 400351bc: 910203e1 add x1, sp, #0x80 400351c0: aa1a03e0 mov x0, x26 400351c4: 390203e2 strb w2, [sp, #128] 400351c8: 97ffc832 bl 40027290 handle->dirty = false; 400351cc: 14000009 b 400351f0 if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY)) 400351d0: d2a40000 mov x0, #0x20000000 // #536870912 <== NOT EXECUTED 400351d4: 97ffd61f bl 4002aa50 <== NOT EXECUTED 400351d8: 72001c1f tst w0, #0xff <== NOT EXECUTED 400351dc: 54000621 b.ne 400352a0 // b.any <== NOT EXECUTED return EIO; 400351e0: 528000b4 mov w20, #0x5 // #5 <== NOT EXECUTED rtems_rfs_buffer_handle_release (fs, handle); 400351e4: 910203e1 add x1, sp, #0x80 <== NOT EXECUTED 400351e8: aa1a03e0 mov x0, x26 <== NOT EXECUTED 400351ec: 97ffc829 bl 40027290 <== NOT EXECUTED rtems_rfs_block_map_close (fs, &map); 400351f0: 910243e1 add x1, sp, #0x90 400351f4: aa1a03e0 mov x0, x26 handle->dirty = false; 400351f8: 390203ff strb wzr, [sp, #128] handle->bnum = 0; 400351fc: b90087ff str wzr, [sp, #132] handle->buffer = NULL; 40035200: f90047ff str xzr, [sp, #136] 40035204: 97fffb23 bl 40033e90 } 40035208: 2a1403e0 mov w0, w20 4003520c: a94153f3 ldp x19, x20, [sp, #16] 40035210: a9425bf5 ldp x21, x22, [sp, #32] 40035214: a94363f7 ldp x23, x24, [sp, #48] 40035218: a9446bf9 ldp x25, x26, [sp, #64] return EIO; 4003521c: a94573fb ldp x27, x28, [sp, #80] } 40035220: a8cf7bfd ldp x29, x30, [sp], #240 40035224: d65f03c0 ret printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=", 40035228: b94012a1 ldr w1, [x21, #16] <== NOT EXECUTED 4003522c: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40035230: 91220000 add x0, x0, #0x880 <== NOT EXECUTED 40035234: 97ffb477 bl 40022410 <__wrap_printf> <== NOT EXECUTED for (c = 0; c < length; c++) 40035238: b4000116 cbz x22, 40035258 <== NOT EXECUTED 4003523c: aa1703f3 mov x19, x23 <== NOT EXECUTED 40035240: 8b1602f4 add x20, x23, x22 <== NOT EXECUTED 40035244: d503201f nop <== NOT EXECUTED printf ("%c", name[c]); 40035248: 38401660 ldrb w0, [x19], #1 <== NOT EXECUTED 4003524c: 9400236d bl 4003e000 <== NOT EXECUTED for (c = 0; c < length; c++) 40035250: eb14027f cmp x19, x20 <== NOT EXECUTED 40035254: 54ffffa1 b.ne 40035248 // b.any <== NOT EXECUTED printf (", len=%zd\n", length); 40035258: aa1603e1 mov x1, x22 <== NOT EXECUTED 4003525c: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40035260: 9122a000 add x0, x0, #0x8a8 <== NOT EXECUTED 40035264: 97ffb46b bl 40022410 <__wrap_printf> <== NOT EXECUTED 40035268: 17ffff4d b 40034f9c <== NOT EXECUTED bpos.bno++; 4003526c: 294d93e2 ldp w2, w4, [sp, #108] rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read); 40035270: 910203e1 add x1, sp, #0x80 40035274: aa1a03e0 mov x0, x26 40035278: 52800023 mov w3, #0x1 // #1 bpos.bno++; 4003527c: 11000484 add w4, w4, #0x1 40035280: b90073e4 str w4, [sp, #112] rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read); 40035284: 97ffc753 bl 40026fd0 40035288: 2a0003f4 mov w20, w0 if (rc > 0) 4003528c: 7100001f cmp w0, #0x0 40035290: 54ffedac b.gt 40035044 <== NEVER TAKEN entry = rtems_rfs_buffer_data (&buffer); 40035294: f94047e0 ldr x0, [sp, #136] 40035298: f9401c13 ldr x19, [x0, #56] if (!read) 4003529c: 17ffff85 b 400350b0 printf ("rtems-rfs: dir-add-entry: " 400352a0: b94012a1 ldr w1, [x21, #16] <== NOT EXECUTED 400352a4: 2a1b03e4 mov w4, w27 <== NOT EXECUTED 400352a8: 2a1403e3 mov w3, w20 <== NOT EXECUTED 400352ac: 2a1903e2 mov w2, w25 <== NOT EXECUTED 400352b0: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 400352b4: 91264000 add x0, x0, #0x990 <== NOT EXECUTED 400352b8: 97ffb456 bl 40022410 <__wrap_printf> <== NOT EXECUTED 400352bc: 17ffffc9 b 400351e0 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY)) 400352c0: d2a40000 mov x0, #0x20000000 // #536870912 <== NOT EXECUTED 400352c4: 97ffd5e3 bl 4002aa50 <== NOT EXECUTED 400352c8: 72001c1f tst w0, #0xff <== NOT EXECUTED 400352cc: 54ffec40 b.eq 40035054 // b.none <== NOT EXECUTED printf ("rtems-rfs: dir-add-entry: " 400352d0: b94012b3 ldr w19, [x21, #16] <== NOT EXECUTED 400352d4: 2a1403e0 mov w0, w20 <== NOT EXECUTED 400352d8: 94002651 bl 4003ec1c <== NOT EXECUTED 400352dc: aa0003e3 mov x3, x0 <== NOT EXECUTED 400352e0: 2a1303e1 mov w1, w19 <== NOT EXECUTED 400352e4: 2a1403e2 mov w2, w20 <== NOT EXECUTED 400352e8: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 400352ec: 91240000 add x0, x0, #0x900 <== NOT EXECUTED 400352f0: 97ffb448 bl 40022410 <__wrap_printf> <== NOT EXECUTED 400352f4: 17ffff58 b 40035054 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY)) 400352f8: d2a40000 mov x0, #0x20000000 // #536870912 <== NOT EXECUTED 400352fc: 97ffd5d5 bl 4002aa50 <== NOT EXECUTED 40035300: 72001c1f tst w0, #0xff <== NOT EXECUTED 40035304: 54ffea80 b.eq 40035054 // b.none <== NOT EXECUTED printf ("rtems-rfs: dir-add-entry: " 40035308: b94012b3 ldr w19, [x21, #16] <== NOT EXECUTED 4003530c: 2a1403e0 mov w0, w20 <== NOT EXECUTED 40035310: 94002643 bl 4003ec1c <== NOT EXECUTED 40035314: aa0003e3 mov x3, x0 <== NOT EXECUTED 40035318: 2a1303e1 mov w1, w19 <== NOT EXECUTED 4003531c: 2a1403e2 mov w2, w20 <== NOT EXECUTED 40035320: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40035324: 9122e000 add x0, x0, #0x8b8 <== NOT EXECUTED 40035328: 97ffb43a bl 40022410 <__wrap_printf> <== NOT EXECUTED 4003532c: 17ffff4a b 40035054 <== NOT EXECUTED printf ("rtems-rfs: dir-add-entry: " 40035330: b94012b3 ldr w19, [x21, #16] <== NOT EXECUTED 40035334: 2a1403e0 mov w0, w20 <== NOT EXECUTED 40035338: 94002639 bl 4003ec1c <== NOT EXECUTED 4003533c: aa0003e3 mov x3, x0 <== NOT EXECUTED 40035340: 2a1303e1 mov w1, w19 <== NOT EXECUTED 40035344: 2a1403e2 mov w2, w20 <== NOT EXECUTED 40035348: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 4003534c: 91252000 add x0, x0, #0x948 <== NOT EXECUTED 40035350: 97ffb430 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40035354: 17ffff40 b 40035054 <== NOT EXECUTED ... =============================================================================== 0000000040035360 : int rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, rtems_rfs_ino ino, uint32_t offset) { 40035360: a9b17bfd stp x29, x30, [sp, #-240]! 40035364: 910003fd mov x29, sp 40035368: a9025bf5 stp x21, x22, [sp, #32] 4003536c: aa0103f6 mov x22, x1 40035370: a9046bf9 stp x25, x26, [sp, #64] 40035374: aa0003f9 mov x25, x0 rtems_rfs_block_no block; rtems_rfs_buffer_handle buffer; bool search; int rc; if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY)) 40035378: d2a80000 mov x0, #0x40000000 // #1073741824 { 4003537c: a90573fb stp x27, x28, [sp, #80] 40035380: 2a0203fc mov w28, w2 40035384: 2a0303fb mov w27, w3 if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY)) 40035388: 97ffd5b2 bl 4002aa50 4003538c: 72001c1f tst w0, #0xff 40035390: 54000ec1 b.ne 40035568 // b.any <== NEVER TAKEN printf ("rtems-rfs: dir-del-entry: dir=%" PRId32 ", entry=%" PRId32 " offset=%" PRIu32 "\n", rtems_rfs_inode_ino (dir), ino, offset); rc = rtems_rfs_block_map_open (fs, dir, &map); 40035394: aa1603e1 mov x1, x22 40035398: 910243e2 add x2, sp, #0x90 4003539c: aa1903e0 mov x0, x25 400353a0: 97fffa58 bl 40033d00 400353a4: 2a0003fa mov w26, w0 if (rc > 0) 400353a8: 7100001f cmp w0, #0x0 400353ac: 540000ed b.le 400353c8 <== ALWAYS TAKEN } rtems_rfs_buffer_handle_close (fs, &buffer); rtems_rfs_block_map_close (fs, &map); return rc; } 400353b0: 2a1a03e0 mov w0, w26 <== NOT EXECUTED 400353b4: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 400353b8: a9446bf9 ldp x25, x26, [sp, #64] <== NOT EXECUTED 400353bc: a94573fb ldp x27, x28, [sp, #80] <== NOT EXECUTED 400353c0: a8cf7bfd ldp x29, x30, [sp], #240 <== NOT EXECUTED 400353c4: d65f03c0 ret <== NOT EXECUTED rc = rtems_rfs_block_map_seek (fs, &map, offset, &block); 400353c8: 2a1b03e0 mov w0, w27 400353cc: 9101f3e3 add x3, sp, #0x7c 400353d0: aa0003e2 mov x2, x0 400353d4: 910243e1 add x1, sp, #0x90 400353d8: f90037e0 str x0, [sp, #104] 400353dc: aa1903e0 mov x0, x25 400353e0: 97fffb78 bl 400341c0 400353e4: 2a0003fa mov w26, w0 if (rc > 0) 400353e8: 7100001f cmp w0, #0x0 400353ec: 54000dec b.gt 400355a8 <== NEVER TAKEN handle->dirty = false; 400353f0: a90153f3 stp x19, x20, [sp, #16] 400353f4: a90363f7 stp x23, x24, [sp, #48] if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) 400353f8: 529ffff7 mov w23, #0xffff // #65535 400353fc: 390203ff strb wzr, [sp, #128] handle->bnum = 0; 40035400: b90087ff str wzr, [sp, #132] handle->buffer = NULL; 40035404: f90047ff str xzr, [sp, #136] rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true); 40035408: b9407fe2 ldr w2, [sp, #124] 4003540c: 910203e1 add x1, sp, #0x80 40035410: aa1903e0 mov x0, x25 40035414: 52800023 mov w3, #0x1 // #1 40035418: 97ffc6ee bl 40026fd0 4003541c: 2a0003fa mov w26, w0 if (rc > 0) 40035420: 7100001f cmp w0, #0x0 40035424: 540018ec b.gt 40035740 <== NEVER TAKEN eoffset = offset % rtems_rfs_fs_block_size (fs); 40035428: f9400b23 ldr x3, [x25, #16] if (search) 4003542c: 340006db cbz w27, 40035504 <== NEVER TAKEN eoffset = offset % rtems_rfs_fs_block_size (fs); 40035430: f94037e0 ldr x0, [sp, #104] 40035434: 9ac30813 udiv x19, x0, x3 40035438: 9b038273 msub x19, x19, x3, x0 4003543c: 2a1303f8 mov w24, w19 entry = rtems_rfs_buffer_data (&buffer) + eoffset; 40035440: 93407e60 sxtw x0, w19 40035444: f94047e1 ldr x1, [sp, #136] while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40035448: d1002862 sub x2, x3, #0xa 4003544c: eb00005f cmp x2, x0 entry = rtems_rfs_buffer_data (&buffer) + eoffset; 40035450: f9401c33 ldr x19, [x1, #56] 40035454: 8b000273 add x19, x19, x0 while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40035458: 54000248 b.hi 400354a0 // b.pmore <== ALWAYS TAKEN 4003545c: 14000020 b 400354dc <== NOT EXECUTED if (rtems_rfs_dir_entry_valid (fs, elength, eino)) 40035460: 71002abf cmp w21, #0xa 40035464: 5400056d b.le 40035510 <== NEVER TAKEN 40035468: b9403321 ldr w1, [x25, #48] 4003546c: 6b15003f cmp w1, w21 40035470: 54000509 b.ls 40035510 // b.plast <== NEVER TAKEN 40035474: 340004f4 cbz w20, 40035510 <== NEVER TAKEN 40035478: b9402b20 ldr w0, [x25, #40] 4003547c: 6b14001f cmp w0, w20 40035480: 54000483 b.cc 40035510 // b.lo, b.ul, b.last<== NEVER TAKEN if (ino == rtems_rfs_dir_entry_ino (entry)) 40035484: 6b14039f cmp w28, w20 40035488: 54000a80 b.eq 400355d8 // b.none <== ALWAYS TAKEN eoffset += elength; 4003548c: 0b150318 add w24, w24, w21 <== NOT EXECUTED if (!search) 40035490: 350014fb cbnz w27, 4003572c <== NOT EXECUTED entry += elength; 40035494: 8b242273 add x19, x19, w4, uxth <== NOT EXECUTED while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40035498: eb38c05f cmp x2, w24, sxtw <== NOT EXECUTED 4003549c: 54000209 b.ls 400354dc // b.plast <== NOT EXECUTED entry += elength; 400354a0: 39402267 ldrb w7, [x19, #8] 400354a4: 39402664 ldrb w4, [x19, #9] 400354a8: 39400266 ldrb w6, [x19] 400354ac: 39400665 ldrb w5, [x19, #1] 400354b0: 39400a61 ldrb w1, [x19, #2] 400354b4: aa0420e4 orr x4, x7, x4, lsl #8 400354b8: 39400e74 ldrb w20, [x19, #3] 400354bc: 5ac00484 rev16 w4, w4 400354c0: aa0520c5 orr x5, x6, x5, lsl #8 400354c4: 12003c95 and w21, w4, #0xffff eino = rtems_rfs_dir_entry_ino (entry); 400354c8: aa0140a1 orr x1, x5, x1, lsl #16 if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) 400354cc: 6b1702bf cmp w21, w23 400354d0: aa146034 orr x20, x1, x20, lsl #24 400354d4: 5ac00a94 rev w20, w20 400354d8: 54fffc41 b.ne 40035460 // b.any <== ALWAYS TAKEN if (rc == 0) 400354dc: 3500025a cbnz w26, 40035524 <== NOT EXECUTED rc = rtems_rfs_block_map_next_block (fs, &map, &block); 400354e0: 9101f3e2 add x2, sp, #0x7c <== NOT EXECUTED 400354e4: 910243e1 add x1, sp, #0x90 <== NOT EXECUTED 400354e8: aa1903e0 mov x0, x25 <== NOT EXECUTED 400354ec: 97fffb45 bl 40034200 <== NOT EXECUTED 400354f0: 2a0003fa mov w26, w0 <== NOT EXECUTED if (rc == ENXIO) 400354f4: 7100181f cmp w0, #0x6 <== NOT EXECUTED 400354f8: 54001400 b.eq 40035778 // b.none <== NOT EXECUTED while (rc == 0) 400354fc: 34fff860 cbz w0, 40035408 <== NOT EXECUTED 40035500: 14000009 b 40035524 <== NOT EXECUTED 40035504: d2800000 mov x0, #0x0 // #0 <== NOT EXECUTED eoffset = 0; 40035508: 52800018 mov w24, #0x0 // #0 <== NOT EXECUTED 4003550c: 17ffffce b 40035444 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY)) 40035510: d2a80000 mov x0, #0x40000000 // #1073741824 <== NOT EXECUTED rc = EIO; 40035514: 528000ba mov w26, #0x5 // #5 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY)) 40035518: 97ffd54e bl 4002aa50 <== NOT EXECUTED 4003551c: 72001c1f tst w0, #0xff <== NOT EXECUTED 40035520: 54000321 b.ne 40035584 // b.any <== NOT EXECUTED rtems_rfs_buffer_handle_release (fs, handle); 40035524: 910203e1 add x1, sp, #0x80 <== NOT EXECUTED 40035528: aa1903e0 mov x0, x25 <== NOT EXECUTED 4003552c: 97ffc759 bl 40027290 <== NOT EXECUTED handle->dirty = false; 40035530: 390203ff strb wzr, [sp, #128] <== NOT EXECUTED rtems_rfs_block_map_close (fs, &map); 40035534: 910243e1 add x1, sp, #0x90 <== NOT EXECUTED 40035538: aa1903e0 mov x0, x25 <== NOT EXECUTED handle->bnum = 0; 4003553c: b90087ff str wzr, [sp, #132] <== NOT EXECUTED handle->buffer = NULL; 40035540: f90047ff str xzr, [sp, #136] <== NOT EXECUTED 40035544: 97fffa53 bl 40033e90 <== NOT EXECUTED return rc; 40035548: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 4003554c: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED } 40035550: 2a1a03e0 mov w0, w26 40035554: a9425bf5 ldp x21, x22, [sp, #32] 40035558: a9446bf9 ldp x25, x26, [sp, #64] 4003555c: a94573fb ldp x27, x28, [sp, #80] 40035560: a8cf7bfd ldp x29, x30, [sp], #240 40035564: d65f03c0 ret printf ("rtems-rfs: dir-del-entry: dir=%" PRId32 ", entry=%" PRId32 " offset=%" PRIu32 "\n", 40035568: b94012c1 ldr w1, [x22, #16] <== NOT EXECUTED 4003556c: 2a1b03e3 mov w3, w27 <== NOT EXECUTED 40035570: 2a1c03e2 mov w2, w28 <== NOT EXECUTED 40035574: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40035578: 91276000 add x0, x0, #0x9d8 <== NOT EXECUTED 4003557c: 97ffb3a5 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40035580: 17ffff85 b 40035394 <== NOT EXECUTED printf ("rtems-rfs: dir-del-entry: " 40035584: b94012c1 ldr w1, [x22, #16] <== NOT EXECUTED 40035588: 2a1803e5 mov w5, w24 <== NOT EXECUTED 4003558c: b9407fe4 ldr w4, [sp, #124] <== NOT EXECUTED 40035590: 2a1403e3 mov w3, w20 <== NOT EXECUTED 40035594: 2a1503e2 mov w2, w21 <== NOT EXECUTED 40035598: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 4003559c: 91296000 add x0, x0, #0xa58 <== NOT EXECUTED 400355a0: 97ffb39c bl 40022410 <__wrap_printf> <== NOT EXECUTED while (rc == 0) 400355a4: 17ffffe0 b 40035524 <== NOT EXECUTED rc = ENOENT; 400355a8: 7100181f cmp w0, #0x6 <== NOT EXECUTED 400355ac: 52800042 mov w2, #0x2 // #2 <== NOT EXECUTED rtems_rfs_block_map_close (fs, &map); 400355b0: 910243e1 add x1, sp, #0x90 <== NOT EXECUTED rc = ENOENT; 400355b4: 1a82135a csel w26, w26, w2, ne // ne = any <== NOT EXECUTED rtems_rfs_block_map_close (fs, &map); 400355b8: aa1903e0 mov x0, x25 <== NOT EXECUTED 400355bc: 97fffa35 bl 40033e90 <== NOT EXECUTED } 400355c0: 2a1a03e0 mov w0, w26 <== NOT EXECUTED 400355c4: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 400355c8: a9446bf9 ldp x25, x26, [sp, #64] <== NOT EXECUTED 400355cc: a94573fb ldp x27, x28, [sp, #80] <== NOT EXECUTED 400355d0: a8cf7bfd ldp x29, x30, [sp], #240 <== NOT EXECUTED 400355d4: d65f03c0 ret <== NOT EXECUTED remaining = rtems_rfs_fs_block_size (fs) - (eoffset + elength); 400355d8: 0b150317 add w23, w24, w21 memmove (entry, entry + elength, remaining); 400355dc: 8b352261 add x1, x19, w21, uxth 400355e0: 4b170077 sub w23, w3, w23 400355e4: aa1303e0 mov x0, x19 400355e8: aa1703e2 mov x2, x23 400355ec: 92403eba and x26, x21, #0xffff 400355f0: 94002234 bl 4003dec0 memset (entry + remaining, 0xff, elength); 400355f4: aa1a03e2 mov x2, x26 400355f8: 8b170260 add x0, x19, x23 400355fc: 52801fe1 mov w1, #0xff // #255 40035600: 9400226b bl 4003dfac elength = rtems_rfs_dir_entry_length (entry); 40035604: 39402261 ldrb w1, [x19, #8] if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY)) 40035608: d2a80000 mov x0, #0x40000000 // #1073741824 4003560c: 39402673 ldrb w19, [x19, #9] 40035610: aa132033 orr x19, x1, x19, lsl #8 40035614: 97ffd50f bl 4002aa50 40035618: 5ac00673 rev16 w19, w19 4003561c: 72001c1f tst w0, #0xff 40035620: 12003e73 and w19, w19, #0xffff 40035624: 54000260 b.eq 40035670 // b.none <== ALWAYS TAKEN rtems_rfs_block_map_last (&map) ? "yes" : "no"); 40035628: b940a3e0 ldr w0, [sp, #160] <== NOT EXECUTED 4003562c: b940abe2 ldr w2, [sp, #168] <== NOT EXECUTED printf ("rtems-rfs: dir-del-entry: " 40035630: b9407fe3 ldr w3, [sp, #124] <== NOT EXECUTED rtems_rfs_block_map_last (&map) ? "yes" : "no"); 40035634: 2a000041 orr w1, w2, w0 <== NOT EXECUTED 40035638: 340007e1 cbz w1, 40035734 <== NOT EXECUTED 4003563c: 51000400 sub w0, w0, #0x1 <== NOT EXECUTED printf ("rtems-rfs: dir-del-entry: " 40035640: 900000a1 adrp x1, 40049000 <== NOT EXECUTED 40035644: 91252021 add x1, x1, #0x948 <== NOT EXECUTED 40035648: 6b00005f cmp w2, w0 <== NOT EXECUTED 4003564c: 900000a5 adrp x5, 40049000 <== NOT EXECUTED 40035650: 912500a5 add x5, x5, #0x940 <== NOT EXECUTED 40035654: 9a8100a5 csel x5, x5, x1, eq // eq = none <== NOT EXECUTED 40035658: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 4003565c: 2a1403e1 mov w1, w20 <== NOT EXECUTED 40035660: 2a1803e4 mov w4, w24 <== NOT EXECUTED 40035664: 912aa000 add x0, x0, #0xaa8 <== NOT EXECUTED 40035668: 2a1303e2 mov w2, w19 <== NOT EXECUTED 4003566c: 97ffb369 bl 40022410 <__wrap_printf> <== NOT EXECUTED if ((elength == RTEMS_RFS_DIR_ENTRY_EMPTY) && 40035670: 7100031f cmp w24, #0x0 40035674: 529fffe0 mov w0, #0xffff // #65535 40035678: 7a400260 ccmp w19, w0, #0x0, eq // eq = none 4003567c: 54000321 b.ne 400356e0 // b.any <== ALWAYS TAKEN (eoffset == 0) && rtems_rfs_block_map_last (&map)) 40035680: b940a3e0 ldr w0, [sp, #160] <== NOT EXECUTED 40035684: b940abe1 ldr w1, [sp, #168] <== NOT EXECUTED 40035688: 2a000022 orr w2, w1, w0 <== NOT EXECUTED 4003568c: 35000482 cbnz w2, 4003571c <== NOT EXECUTED rc = rtems_rfs_block_map_shrink (fs, &map, 1); 40035690: 910243e1 add x1, sp, #0x90 <== NOT EXECUTED 40035694: aa1903e0 mov x0, x25 <== NOT EXECUTED 40035698: d2800022 mov x2, #0x1 // #1 <== NOT EXECUTED 4003569c: 97fffbd5 bl 400345f0 <== NOT EXECUTED 400356a0: 2a0003f3 mov w19, w0 <== NOT EXECUTED if (rc > 0) 400356a4: 7100001f cmp w0, #0x0 <== NOT EXECUTED 400356a8: 540001cd b.le 400356e0 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY)) 400356ac: d2a80000 mov x0, #0x40000000 // #1073741824 <== NOT EXECUTED 400356b0: 97ffd4e8 bl 4002aa50 <== NOT EXECUTED 400356b4: 72001c1f tst w0, #0xff <== NOT EXECUTED 400356b8: 54000140 b.eq 400356e0 // b.none <== NOT EXECUTED printf ("rtems-rfs: dir-del-entry: " 400356bc: b94012d4 ldr w20, [x22, #16] <== NOT EXECUTED 400356c0: 2a1303e0 mov w0, w19 <== NOT EXECUTED 400356c4: 94002556 bl 4003ec1c <== NOT EXECUTED 400356c8: aa0003e3 mov x3, x0 <== NOT EXECUTED 400356cc: 2a1403e1 mov w1, w20 <== NOT EXECUTED 400356d0: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 400356d4: 912c2000 add x0, x0, #0xb08 <== NOT EXECUTED 400356d8: 2a1303e2 mov w2, w19 <== NOT EXECUTED 400356dc: 97ffb34d bl 40022410 <__wrap_printf> <== NOT EXECUTED rtems_rfs_buffer_mark_dirty (&buffer); 400356e0: 52800022 mov w2, #0x1 // #1 rtems_rfs_buffer_handle_release (fs, handle); 400356e4: 910203e1 add x1, sp, #0x80 400356e8: aa1903e0 mov x0, x25 400356ec: 390203e2 strb w2, [sp, #128] 400356f0: 97ffc6e8 bl 40027290 return 0; 400356f4: 5280001a mov w26, #0x0 // #0 rtems_rfs_block_map_close (fs, &map); 400356f8: 910243e1 add x1, sp, #0x90 400356fc: aa1903e0 mov x0, x25 handle->dirty = false; 40035700: 390203ff strb wzr, [sp, #128] handle->bnum = 0; 40035704: b90087ff str wzr, [sp, #132] handle->buffer = NULL; 40035708: f90047ff str xzr, [sp, #136] rtems_rfs_block_map_close (fs, &map); 4003570c: 97fff9e1 bl 40033e90 return rc; 40035710: a94153f3 ldp x19, x20, [sp, #16] 40035714: a94363f7 ldp x23, x24, [sp, #48] 40035718: 17ffff8e b 40035550 (eoffset == 0) && rtems_rfs_block_map_last (&map)) 4003571c: 51000400 sub w0, w0, #0x1 <== NOT EXECUTED 40035720: 6b00003f cmp w1, w0 <== NOT EXECUTED 40035724: 54fffde1 b.ne 400356e0 // b.any <== NOT EXECUTED 40035728: 17ffffda b 40035690 <== NOT EXECUTED rc = EIO; 4003572c: 528000ba mov w26, #0x5 // #5 <== NOT EXECUTED while (rc == 0) 40035730: 17ffff7d b 40035524 <== NOT EXECUTED printf ("rtems-rfs: dir-del-entry: " 40035734: 900000a5 adrp x5, 40049000 <== NOT EXECUTED 40035738: 912500a5 add x5, x5, #0x940 <== NOT EXECUTED 4003573c: 17ffffc7 b 40035658 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY)) 40035740: d2a80000 mov x0, #0x40000000 // #1073741824 <== NOT EXECUTED 40035744: 97ffd4c3 bl 4002aa50 <== NOT EXECUTED 40035748: 72001c1f tst w0, #0xff <== NOT EXECUTED 4003574c: 54ffeec0 b.eq 40035524 // b.none <== NOT EXECUTED printf ("rtems-rfs: dir-del-entry: " 40035750: b94012d3 ldr w19, [x22, #16] <== NOT EXECUTED 40035754: 2a1a03e0 mov w0, w26 <== NOT EXECUTED 40035758: 94002531 bl 4003ec1c <== NOT EXECUTED 4003575c: aa0003e3 mov x3, x0 <== NOT EXECUTED 40035760: 2a1303e1 mov w1, w19 <== NOT EXECUTED 40035764: 2a1a03e2 mov w2, w26 <== NOT EXECUTED 40035768: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 4003576c: 91284000 add x0, x0, #0xa10 <== NOT EXECUTED 40035770: 97ffb328 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40035774: 17ffff6c b 40035524 <== NOT EXECUTED rc = ENOENT; 40035778: 5280005a mov w26, #0x2 // #2 <== NOT EXECUTED 4003577c: 17ffff6a b 40035524 <== NOT EXECUTED =============================================================================== 0000000040035ab0 : int rtems_rfs_dir_empty (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir) { 40035ab0: a9b37bfd stp x29, x30, [sp, #-208]! 40035ab4: 910003fd mov x29, sp 40035ab8: a9025bf5 stp x21, x22, [sp, #32] 40035abc: aa0103f5 mov x21, x1 40035ac0: a90363f7 stp x23, x24, [sp, #48] 40035ac4: aa0003f8 mov x24, x0 rtems_rfs_buffer_handle buffer; rtems_rfs_block_no block; bool empty; int rc; if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) 40035ac8: d2b00000 mov x0, #0x80000000 // #2147483648 { 40035acc: a9046bf9 stp x25, x26, [sp, #64] if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) 40035ad0: 97ffd3e0 bl 4002aa50 40035ad4: 72001c1f tst w0, #0xff 40035ad8: 54000f61 b.ne 40035cc4 // b.any <== NEVER TAKEN printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir)); empty = true; rc = rtems_rfs_block_map_open (fs, dir, &map); 40035adc: aa1503e1 mov x1, x21 40035ae0: 9101c3e2 add x2, sp, #0x70 40035ae4: aa1803e0 mov x0, x24 40035ae8: 97fff886 bl 40033d00 40035aec: 2a0003fa mov w26, w0 if (rc > 0) 40035af0: 7100001f cmp w0, #0x0 40035af4: 540000ed b.le 40035b10 <== ALWAYS TAKEN rc = ENOTEMPTY; rtems_rfs_buffer_handle_close (fs, &buffer); rtems_rfs_block_map_close (fs, &map); return rc; } 40035af8: 2a1a03e0 mov w0, w26 <== NOT EXECUTED 40035afc: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 40035b00: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 40035b04: a9446bf9 ldp x25, x26, [sp, #64] <== NOT EXECUTED 40035b08: a8cd7bfd ldp x29, x30, [sp], #208 <== NOT EXECUTED 40035b0c: d65f03c0 ret <== NOT EXECUTED rc = rtems_rfs_block_map_seek (fs, &map, 0, &block); 40035b10: 910173e3 add x3, sp, #0x5c 40035b14: 9101c3e1 add x1, sp, #0x70 40035b18: aa1803e0 mov x0, x24 40035b1c: d2800002 mov x2, #0x0 // #0 40035b20: 97fff9a8 bl 400341c0 40035b24: 2a0003fa mov w26, w0 if (rc > 0) 40035b28: 7100001f cmp w0, #0x0 40035b2c: 54000d6c b.gt 40035cd8 <== NEVER TAKEN printf ("rtems-rfs: dir-empty: " 40035b30: b00000b6 adrp x22, 4004a000 40035b34: 913142d6 add x22, x22, #0xc50 if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) 40035b38: 529ffff9 mov w25, #0xffff // #65535 40035b3c: a90153f3 stp x19, x20, [sp, #16] handle->dirty = false; 40035b40: 390183ff strb wzr, [sp, #96] handle->bnum = 0; 40035b44: b90067ff str wzr, [sp, #100] handle->buffer = NULL; 40035b48: f90037ff str xzr, [sp, #104] rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true); 40035b4c: b9405fe2 ldr w2, [sp, #92] 40035b50: 910183e1 add x1, sp, #0x60 40035b54: aa1803e0 mov x0, x24 40035b58: 52800023 mov w3, #0x1 // #1 40035b5c: 97ffc51d bl 40026fd0 40035b60: 2a0003fa mov w26, w0 if (rc > 0) 40035b64: 7100001f cmp w0, #0x0 40035b68: 5400068c b.gt 40035c38 <== NEVER TAKEN entry = rtems_rfs_buffer_data (&buffer); 40035b6c: f94037e0 ldr x0, [sp, #104] while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40035b70: f9400b07 ldr x7, [x24, #16] entry = rtems_rfs_buffer_data (&buffer); 40035b74: f9401c05 ldr x5, [x0, #56] while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40035b78: f10028e7 subs x7, x7, #0xa 40035b7c: 54000920 b.eq 40035ca0 // b.none <== NEVER TAKEN offset = 0; 40035b80: 52800017 mov w23, #0x0 // #0 40035b84: 1400000d b 40035bb8 (entry[RTEMS_RFS_DIR_ENTRY_SIZE] != '.')) && 40035b88: 7100329f cmp w20, #0xc 40035b8c: 54000501 b.ne 40035c2c // b.any ((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 2)) || 40035b90: 394028a1 ldrb w1, [x5, #10] 40035b94: 7100b83f cmp w1, #0x2e 40035b98: 540004a1 b.ne 40035c2c // b.any <== NEVER TAKEN (entry[RTEMS_RFS_DIR_ENTRY_SIZE] != '.') || 40035b9c: 39402ca1 ldrb w1, [x5, #11] 40035ba0: 7100b83f cmp w1, #0x2e 40035ba4: 54000441 b.ne 40035c2c // b.any <== NEVER TAKEN offset += elength; 40035ba8: 0b1402f7 add w23, w23, w20 entry += elength; 40035bac: 8b2620a5 add x5, x5, w6, uxth while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40035bb0: eb37c0ff cmp x7, w23, sxtw 40035bb4: 54000769 b.ls 40035ca0 // b.plast <== NEVER TAKEN elength = rtems_rfs_dir_entry_length (entry); 40035bb8: 394020a4 ldrb w4, [x5, #8] 40035bbc: 394024a6 ldrb w6, [x5, #9] 40035bc0: 394000a2 ldrb w2, [x5] 40035bc4: 394004a1 ldrb w1, [x5, #1] 40035bc8: 394008a3 ldrb w3, [x5, #2] 40035bcc: aa062086 orr x6, x4, x6, lsl #8 40035bd0: 39400cb3 ldrb w19, [x5, #3] 40035bd4: 5ac004c6 rev16 w6, w6 40035bd8: aa012041 orr x1, x2, x1, lsl #8 40035bdc: 12003cd4 and w20, w6, #0xffff eino = rtems_rfs_dir_entry_ino (entry); 40035be0: aa034023 orr x3, x1, x3, lsl #16 if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) 40035be4: 6b19029f cmp w20, w25 40035be8: aa136073 orr x19, x3, x19, lsl #24 40035bec: 5ac00a73 rev w19, w19 40035bf0: 54000580 b.eq 40035ca0 // b.none if (rtems_rfs_dir_entry_valid (fs, elength, eino)) 40035bf4: 71002a9f cmp w20, #0xa 40035bf8: 5400040d b.le 40035c78 <== NEVER TAKEN 40035bfc: b9403301 ldr w1, [x24, #48] 40035c00: 6b14003f cmp w1, w20 40035c04: 540003a9 b.ls 40035c78 // b.plast <== NEVER TAKEN 40035c08: 34000393 cbz w19, 40035c78 <== NEVER TAKEN 40035c0c: b9402b01 ldr w1, [x24, #40] 40035c10: 6b13003f cmp w1, w19 40035c14: 54000323 b.cc 40035c78 // b.lo, b.ul, b.last<== NEVER TAKEN if (((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 1)) || 40035c18: 71002e9f cmp w20, #0xb 40035c1c: 54fffb61 b.ne 40035b88 // b.any 40035c20: 394028a0 ldrb w0, [x5, #10] 40035c24: 7100b81f cmp w0, #0x2e 40035c28: 54fffc00 b.eq 40035ba8 // b.none <== ALWAYS TAKEN rc = ENOTEMPTY; 40035c2c: 7100035f cmp w26, #0x0 40035c30: 52800b40 mov w0, #0x5a // #90 40035c34: 1a80135a csel w26, w26, w0, ne // ne = any rtems_rfs_buffer_handle_release (fs, handle); 40035c38: 910183e1 add x1, sp, #0x60 40035c3c: aa1803e0 mov x0, x24 40035c40: 97ffc594 bl 40027290 handle->dirty = false; 40035c44: 390183ff strb wzr, [sp, #96] rtems_rfs_block_map_close (fs, &map); 40035c48: 9101c3e1 add x1, sp, #0x70 40035c4c: aa1803e0 mov x0, x24 handle->bnum = 0; 40035c50: b90067ff str wzr, [sp, #100] handle->buffer = NULL; 40035c54: f90037ff str xzr, [sp, #104] 40035c58: 97fff88e bl 40033e90 } 40035c5c: 2a1a03e0 mov w0, w26 return rc; 40035c60: a94153f3 ldp x19, x20, [sp, #16] } 40035c64: a9425bf5 ldp x21, x22, [sp, #32] 40035c68: a94363f7 ldp x23, x24, [sp, #48] 40035c6c: a9446bf9 ldp x25, x26, [sp, #64] 40035c70: a8cd7bfd ldp x29, x30, [sp], #208 40035c74: d65f03c0 ret if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_EMPTY)) 40035c78: d2c00020 mov x0, #0x100000000 // #4294967296 <== NOT EXECUTED 40035c7c: 97ffd375 bl 4002aa50 <== NOT EXECUTED 40035c80: 72001c1f tst w0, #0xff <== NOT EXECUTED 40035c84: 540000e0 b.eq 40035ca0 // b.none <== NOT EXECUTED printf ("rtems-rfs: dir-empty: " 40035c88: b94012a1 ldr w1, [x21, #16] <== NOT EXECUTED 40035c8c: 2a1703e4 mov w4, w23 <== NOT EXECUTED 40035c90: 2a1303e3 mov w3, w19 <== NOT EXECUTED 40035c94: 2a1403e2 mov w2, w20 <== NOT EXECUTED 40035c98: aa1603e0 mov x0, x22 <== NOT EXECUTED 40035c9c: 97ffb1dd bl 40022410 <__wrap_printf> <== NOT EXECUTED rc = rtems_rfs_block_map_next_block (fs, &map, &block); 40035ca0: 910173e2 add x2, sp, #0x5c 40035ca4: 9101c3e1 add x1, sp, #0x70 40035ca8: aa1803e0 mov x0, x24 40035cac: 97fff955 bl 40034200 if (rc > 0) 40035cb0: 7100001f cmp w0, #0x0 40035cb4: 54fff4cd b.le 40035b4c <== NEVER TAKEN rc = 0; 40035cb8: 7100181f cmp w0, #0x6 40035cbc: 1a9f101a csel w26, w0, wzr, ne // ne = any 40035cc0: 17ffffde b 40035c38 printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir)); 40035cc4: b94012a1 ldr w1, [x21, #16] <== NOT EXECUTED 40035cc8: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40035ccc: 9130c000 add x0, x0, #0xc30 <== NOT EXECUTED 40035cd0: 97ffb1d0 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40035cd4: 17ffff82 b 40035adc <== NOT EXECUTED rtems_rfs_block_map_close (fs, &map); 40035cd8: 9101c3e1 add x1, sp, #0x70 <== NOT EXECUTED 40035cdc: aa1803e0 mov x0, x24 <== NOT EXECUTED 40035ce0: 97fff86c bl 40033e90 <== NOT EXECUTED } 40035ce4: 2a1a03e0 mov w0, w26 <== NOT EXECUTED 40035ce8: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 40035cec: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 40035cf0: a9446bf9 ldp x25, x26, [sp, #64] <== NOT EXECUTED 40035cf4: a8cd7bfd ldp x29, x30, [sp], #208 <== NOT EXECUTED 40035cf8: d65f03c0 ret <== NOT EXECUTED 40035cfc: 00000000 udf #0 =============================================================================== 0000000040035d00 : */ #define initval (20010928) uint32_t rtems_rfs_dir_hash (const void *key, size_t length) { 40035d00: aa0003e3 mov x3, x0 uint32_t a,b,c; /* internal state */ union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */ /* Set up the internal state */ a = b = c = 0xdeadbeef + ((uint32_t)length) + initval; 40035d04: 5282d3e0 mov w0, #0x169f // #5791 40035d08: 72bbfbe0 movk w0, #0xdfdf, lsl #16 40035d0c: 0b000026 add w6, w1, w0 } else { /* need to read the key one byte at a time */ const uint8_t *k = (const uint8_t *)key; /*--------------- all but the last block: affect some 32 bits of (a,b,c) */ while (length > 12) 40035d10: f100303f cmp x1, #0xc a = b = c = 0xdeadbeef + ((uint32_t)length) + initval; 40035d14: 2a0603e7 mov w7, w6 40035d18: 2a0603eb mov w11, w6 while (length > 12) 40035d1c: 54000629 b.ls 40035de0 // b.plast <== ALWAYS TAKEN b += ((uint32_t)k[5])<<8; b += ((uint32_t)k[6])<<16; b += ((uint32_t)k[7])<<24; c += k[8]; c += ((uint32_t)k[9])<<8; c += ((uint32_t)k[10])<<16; 40035d20: 39402864 ldrb w4, [x3, #10] <== NOT EXECUTED c += ((uint32_t)k[11])<<24; mix(a,b,c); length -= 12; 40035d24: d1003021 sub x1, x1, #0xc <== NOT EXECUTED c += k[8]; 40035d28: 39402068 ldrb w8, [x3, #8] <== NOT EXECUTED while (length > 12) 40035d2c: f100303f cmp x1, #0xc <== NOT EXECUTED c += ((uint32_t)k[9])<<8; 40035d30: 39402462 ldrb w2, [x3, #9] <== NOT EXECUTED c += ((uint32_t)k[11])<<24; 40035d34: 39402c60 ldrb w0, [x3, #11] <== NOT EXECUTED c += ((uint32_t)k[10])<<16; 40035d38: 53103c84 lsl w4, w4, #16 <== NOT EXECUTED a += ((uint32_t)k[2])<<16; 40035d3c: 3940086a ldrb w10, [x3, #2] <== NOT EXECUTED a += ((uint32_t)k[1])<<8; 40035d40: 39400465 ldrb w5, [x3, #1] <== NOT EXECUTED c += ((uint32_t)k[11])<<24; 40035d44: 0b022082 add w2, w4, w2, lsl #8 <== NOT EXECUTED 40035d48: 0b006100 add w0, w8, w0, lsl #24 <== NOT EXECUTED b += ((uint32_t)k[6])<<16; 40035d4c: 39401869 ldrb w9, [x3, #6] <== NOT EXECUTED c += ((uint32_t)k[11])<<24; 40035d50: 0b000040 add w0, w2, w0 <== NOT EXECUTED a += ((uint32_t)k[2])<<16; 40035d54: 53103d4a lsl w10, w10, #16 <== NOT EXECUTED c += ((uint32_t)k[11])<<24; 40035d58: 0b060000 add w0, w0, w6 <== NOT EXECUTED b += ((uint32_t)k[5])<<8; 40035d5c: 39401464 ldrb w4, [x3, #5] <== NOT EXECUTED b += ((uint32_t)k[7])<<24; 40035d60: 39401c68 ldrb w8, [x3, #7] <== NOT EXECUTED mix(a,b,c); 40035d64: 0b052145 add w5, w10, w5, lsl #8 <== NOT EXECUTED b += k[4]; 40035d68: 3940106c ldrb w12, [x3, #4] <== NOT EXECUTED b += ((uint32_t)k[6])<<16; 40035d6c: 53103d22 lsl w2, w9, #16 <== NOT EXECUTED a += ((uint32_t)k[3])<<24; 40035d70: 39400c66 ldrb w6, [x3, #3] <== NOT EXECUTED b += ((uint32_t)k[7])<<24; 40035d74: 0b042042 add w2, w2, w4, lsl #8 <== NOT EXECUTED a += k[0]; 40035d78: 3840c46a ldrb w10, [x3], #12 <== NOT EXECUTED 40035d7c: 4b0000e7 sub w7, w7, w0 <== NOT EXECUTED b += ((uint32_t)k[7])<<24; 40035d80: 0b086188 add w8, w12, w8, lsl #24 <== NOT EXECUTED 40035d84: 0b080042 add w2, w2, w8 <== NOT EXECUTED mix(a,b,c); 40035d88: 0b066146 add w6, w10, w6, lsl #24 <== NOT EXECUTED b += ((uint32_t)k[7])<<24; 40035d8c: 0b0b0042 add w2, w2, w11 <== NOT EXECUTED mix(a,b,c); 40035d90: 0b0600a5 add w5, w5, w6 <== NOT EXECUTED 40035d94: 0b000044 add w4, w2, w0 <== NOT EXECUTED 40035d98: 0b0700a5 add w5, w5, w7 <== NOT EXECUTED 40035d9c: 4ac070a0 eor w0, w5, w0, ror #28 <== NOT EXECUTED 40035da0: 4b000042 sub w2, w2, w0 <== NOT EXECUTED 40035da4: 0b040005 add w5, w0, w4 <== NOT EXECUTED 40035da8: 4ac06840 eor w0, w2, w0, ror #26 <== NOT EXECUTED 40035dac: 4b000082 sub w2, w4, w0 <== NOT EXECUTED 40035db0: 0b050004 add w4, w0, w5 <== NOT EXECUTED 40035db4: 4ac06040 eor w0, w2, w0, ror #24 <== NOT EXECUTED 40035db8: 4b0000a5 sub w5, w5, w0 <== NOT EXECUTED 40035dbc: 0b040002 add w2, w0, w4 <== NOT EXECUTED 40035dc0: 4ac040a0 eor w0, w5, w0, ror #16 <== NOT EXECUTED 40035dc4: 4b000084 sub w4, w4, w0 <== NOT EXECUTED 40035dc8: 0b020007 add w7, w0, w2 <== NOT EXECUTED 40035dcc: 4ac03480 eor w0, w4, w0, ror #13 <== NOT EXECUTED 40035dd0: 4b000042 sub w2, w2, w0 <== NOT EXECUTED 40035dd4: 0b07000b add w11, w0, w7 <== NOT EXECUTED 40035dd8: 4ac07046 eor w6, w2, w0, ror #28 <== NOT EXECUTED while (length > 12) 40035ddc: 54fffa28 b.hi 40035d20 // b.pmore <== NOT EXECUTED k += 12; } /*-------------------------------- last block: affect all 32 bits of (c) */ switch(length) /* all the case statements fall through */ 40035de0: f1001c3f cmp x1, #0x7 40035de4: 540007e0 b.eq 40035ee0 // b.none <== NEVER TAKEN 40035de8: 540005c8 b.hi 40035ea0 // b.pmore 40035dec: f100103f cmp x1, #0x4 40035df0: 54000520 b.eq 40035e94 // b.none 40035df4: 54000448 b.hi 40035e7c // b.pmore <== NEVER TAKEN 40035df8: f100083f cmp x1, #0x2 40035dfc: 540000a0 b.eq 40035e10 // b.none 40035e00: f1000c3f cmp x1, #0x3 40035e04: 54000741 b.ne 40035eec // b.any <== ALWAYS TAKEN case 8 : b+=((uint32_t)k[7])<<24; case 7 : b+=((uint32_t)k[6])<<16; case 6 : b+=((uint32_t)k[5])<<8; case 5 : b+=k[4]; case 4 : a+=((uint32_t)k[3])<<24; case 3 : a+=((uint32_t)k[2])<<16; 40035e08: 39400860 ldrb w0, [x3, #2] 40035e0c: 0b0040e7 add w7, w7, w0, lsl #16 case 2 : a+=((uint32_t)k[1])<<8; 40035e10: 39400460 ldrb w0, [x3, #1] 40035e14: 0b0020e7 add w7, w7, w0, lsl #8 break; case 0 : return c; } } final(a,b,c); 40035e18: 4a0b00c0 eor w0, w6, w11 case 1 : a+=k[0]; 40035e1c: 39400061 ldrb w1, [x3] final(a,b,c); 40035e20: 138b4966 ror w6, w11, #18 40035e24: 4b060006 sub w6, w0, w6 case 1 : a+=k[0]; 40035e28: 0b070021 add w1, w1, w7 final(a,b,c); 40035e2c: 4a0100c1 eor w1, w6, w1 40035e30: 138654c0 ror w0, w6, #21 40035e34: 4b000021 sub w1, w1, w0 40035e38: 4a0b0020 eor w0, w1, w11 40035e3c: 13811c22 ror w2, w1, #7 40035e40: 4b020000 sub w0, w0, w2 40035e44: 4a0000c6 eor w6, w6, w0 40035e48: 13804002 ror w2, w0, #16 40035e4c: 4b0200c6 sub w6, w6, w2 40035e50: 4a060021 eor w1, w1, w6 40035e54: 138670c2 ror w2, w6, #28 40035e58: 4b020021 sub w1, w1, w2 40035e5c: 4a010000 eor w0, w0, w1 40035e60: 13814821 ror w1, w1, #18 40035e64: 4b010001 sub w1, w0, w1 40035e68: 4a0100c0 eor w0, w6, w1 40035e6c: 13812021 ror w1, w1, #8 40035e70: 4b010006 sub w6, w0, w1 return c; } 40035e74: 2a0603e0 mov w0, w6 40035e78: d65f03c0 ret switch(length) /* all the case statements fall through */ 40035e7c: f100143f cmp x1, #0x5 <== NOT EXECUTED 40035e80: 54000060 b.eq 40035e8c // b.none <== NOT EXECUTED case 6 : b+=((uint32_t)k[5])<<8; 40035e84: 39401460 ldrb w0, [x3, #5] 40035e88: 0b00216b add w11, w11, w0, lsl #8 case 5 : b+=k[4]; 40035e8c: 39401060 ldrb w0, [x3, #4] 40035e90: 0b00016b add w11, w11, w0 case 4 : a+=((uint32_t)k[3])<<24; 40035e94: 39400c60 ldrb w0, [x3, #3] 40035e98: 0b0060e7 add w7, w7, w0, lsl #24 40035e9c: 17ffffdb b 40035e08 switch(length) /* all the case statements fall through */ 40035ea0: f100283f cmp x1, #0xa 40035ea4: 54000120 b.eq 40035ec8 // b.none 40035ea8: 54000289 b.ls 40035ef8 // b.plast <== ALWAYS TAKEN 40035eac: f1002c3f cmp x1, #0xb <== NOT EXECUTED 40035eb0: 54000080 b.eq 40035ec0 // b.none <== NOT EXECUTED case 12: c+=((uint32_t)k[11])<<24; 40035eb4: 39402c60 ldrb w0, [x3, #11] <== NOT EXECUTED 40035eb8: 0b0060c6 add w6, w6, w0, lsl #24 <== NOT EXECUTED 40035ebc: d503201f nop <== NOT EXECUTED case 11: c+=((uint32_t)k[10])<<16; 40035ec0: 39402860 ldrb w0, [x3, #10] <== NOT EXECUTED 40035ec4: 0b0040c6 add w6, w6, w0, lsl #16 <== NOT EXECUTED case 10: c+=((uint32_t)k[9])<<8; 40035ec8: 39402460 ldrb w0, [x3, #9] 40035ecc: 0b0020c6 add w6, w6, w0, lsl #8 case 9 : c+=k[8]; 40035ed0: 39402060 ldrb w0, [x3, #8] 40035ed4: 0b0000c6 add w6, w6, w0 case 8 : b+=((uint32_t)k[7])<<24; 40035ed8: 39401c60 ldrb w0, [x3, #7] 40035edc: 0b00616b add w11, w11, w0, lsl #24 case 7 : b+=((uint32_t)k[6])<<16; 40035ee0: 39401860 ldrb w0, [x3, #6] 40035ee4: 0b00416b add w11, w11, w0, lsl #16 40035ee8: 17ffffe7 b 40035e84 switch(length) /* all the case statements fall through */ 40035eec: f100043f cmp x1, #0x1 40035ef0: 54fff940 b.eq 40035e18 // b.none <== ALWAYS TAKEN 40035ef4: 17ffffe0 b 40035e74 <== NOT EXECUTED 40035ef8: f100203f cmp x1, #0x8 40035efc: 54fffee0 b.eq 40035ed8 // b.none 40035f00: f100243f cmp x1, #0x9 40035f04: 54fffb81 b.ne 40035e74 // b.any <== NEVER TAKEN case 9 : c+=k[8]; 40035f08: 39402060 ldrb w0, [x3, #8] 40035f0c: 0b0000c6 add w6, w6, w0 40035f10: 17fffff2 b 40035ed8 ... =============================================================================== 00000000400349d0 : rtems_rfs_inode_handle* inode, const char* name, int length, rtems_rfs_ino* ino, uint32_t* offset) { 400349d0: a9b07bfd stp x29, x30, [sp, #-256]! 400349d4: 910003fd mov x29, sp 400349d8: a90153f3 stp x19, x20, [sp, #16] 400349dc: aa0403f4 mov x20, x4 400349e0: a9025bf5 stp x21, x22, [sp, #32] 400349e4: a90363f7 stp x23, x24, [sp, #48] 400349e8: aa0203f8 mov x24, x2 400349ec: 93407c77 sxtw x23, w3 400349f0: a9046bf9 stp x25, x26, [sp, #64] 400349f4: aa0003fa mov x26, x0 rtems_rfs_block_map map; rtems_rfs_buffer_handle entries; int rc; if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) 400349f8: d2a08000 mov x0, #0x4000000 // #67108864 { 400349fc: f90033e1 str x1, [sp, #96] 40034a00: f9003be5 str x5, [sp, #112] if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) 40034a04: 97ffd813 bl 4002aa50 40034a08: 72001c1f tst w0, #0xff 40034a0c: 54001d01 b.ne 40034dac // b.any <== NEVER TAKEN printf ("%c", name[c]); printf (", len=%d\n", length); } *ino = RTEMS_RFS_EMPTY_INO; *offset = 0; 40034a10: f9403be0 ldr x0, [sp, #112] *ino = RTEMS_RFS_EMPTY_INO; 40034a14: b900029f str wzr, [x20] rc = rtems_rfs_block_map_open (fs, inode, &map); 40034a18: f94033e1 ldr x1, [sp, #96] 40034a1c: 910283e2 add x2, sp, #0xa0 *offset = 0; 40034a20: b900001f str wzr, [x0] rc = rtems_rfs_block_map_open (fs, inode, &map); 40034a24: aa1a03e0 mov x0, x26 40034a28: 97fffcb6 bl 40033d00 40034a2c: 2a0003f6 mov w22, w0 if (rc > 0) 40034a30: 7100001f cmp w0, #0x0 40034a34: 5400192c b.gt 40034d58 <== NEVER TAKEN uint32_t hash; /* * Calculate the hash of the look up string. */ hash = rtems_rfs_dir_hash (name, length); 40034a38: aa1703e1 mov x1, x23 40034a3c: aa1803e0 mov x0, x24 handle->dirty = false; 40034a40: 390243ff strb wzr, [sp, #144] handle->bnum = 0; 40034a44: b90097ff str wzr, [sp, #148] handle->buffer = NULL; 40034a48: f9004fff str xzr, [sp, #152] 40034a4c: 940004ad bl 40035d00 /* * Locate the first block. The map points to the start after open so just * seek 0. If an error the block will be 0. */ rc = rtems_rfs_block_map_seek (fs, &map, 0, &block); 40034a50: 910233e3 add x3, sp, #0x8c hash = rtems_rfs_dir_hash (name, length); 40034a54: 2a0003f5 mov w21, w0 rc = rtems_rfs_block_map_seek (fs, &map, 0, &block); 40034a58: 910283e1 add x1, sp, #0xa0 40034a5c: aa1a03e0 mov x0, x26 40034a60: d2800002 mov x2, #0x0 // #0 40034a64: 97fffdd7 bl 400341c0 40034a68: 2a0003f6 mov w22, w0 if (rc > 0) 40034a6c: 7100001f cmp w0, #0x0 40034a70: 54001c6c b.gt 40034dfc <== NEVER TAKEN 40034a74: a90573fb stp x27, x28, [sp, #80] while ((rc == 0) && block) { uint8_t* entry; if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n", 40034a78: d00000bc adrp x28, 4004a000 40034a7c: 911a2380 add x0, x28, #0x688 40034a80: f9003fe0 str x0, [sp, #120] } if (ehash == hash) { if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) printf ("rtems-rfs: dir-lookup-ino: " 40034a84: d00000bb adrp x27, 4004a000 40034a88: 911d2360 add x0, x27, #0x748 40034a8c: f90037e0 str x0, [sp, #104] while ((rc == 0) && block) 40034a90: 35000c96 cbnz w22, 40034c20 <== NEVER TAKEN 40034a94: b9408fe0 ldr w0, [sp, #140] 40034a98: 34001fe0 cbz w0, 40034e94 <== NEVER TAKEN if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) 40034a9c: d2a08000 mov x0, #0x4000000 // #67108864 40034aa0: 97ffd7ec bl 4002aa50 40034aa4: 72001c1f tst w0, #0xff 40034aa8: 540014c1 b.ne 40034d40 // b.any <== NEVER TAKEN rc = rtems_rfs_buffer_handle_request (fs, &entries, block, true); 40034aac: b9408fe2 ldr w2, [sp, #140] 40034ab0: 910243e1 add x1, sp, #0x90 40034ab4: aa1a03e0 mov x0, x26 40034ab8: 52800023 mov w3, #0x1 // #1 40034abc: 97ffc945 bl 40026fd0 40034ac0: 2a0003f6 mov w22, w0 if (rc > 0) 40034ac4: 7100001f cmp w0, #0x0 40034ac8: 5400206c b.gt 40034ed4 <== NEVER TAKEN entry = rtems_rfs_buffer_data (&entries); 40034acc: f9404fe0 ldr x0, [sp, #152] map.bpos.boff = 0; 40034ad0: b900bfff str wzr, [sp, #188] while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40034ad4: f9400b45 ldr x5, [x26, #16] entry = rtems_rfs_buffer_data (&entries); 40034ad8: f9401c13 ldr x19, [x0, #56] while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40034adc: f10028bf cmp x5, #0xa 40034ae0: 540007c0 b.eq 40034bd8 // b.none <== NEVER TAKEN if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) 40034ae4: 529ffffb mov w27, #0xffff // #65535 40034ae8: 14000008 b 40034b08 rtems_rfs_block_map_close (fs, &map); return 0; } } map.bpos.boff += elength; 40034aec: b940bfe0 ldr w0, [sp, #188] while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40034af0: d10028a1 sub x1, x5, #0xa entry += elength; 40034af4: 8b392273 add x19, x19, w25, uxth map.bpos.boff += elength; 40034af8: 0b000387 add w7, w28, w0 40034afc: b900bfe7 str w7, [sp, #188] while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40034b00: eb27403f cmp x1, w7, uxtw 40034b04: 540006a9 b.ls 40034bd8 // b.plast <== NEVER TAKEN if (ehash == hash) 40034b08: 39400260 ldrb w0, [x19] 40034b0c: 39400666 ldrb w6, [x19, #1] 40034b10: 39400a64 ldrb w4, [x19, #2] 40034b14: 39401262 ldrb w2, [x19, #4] 40034b18: aa062006 orr x6, x0, x6, lsl #8 40034b1c: 39401663 ldrb w3, [x19, #5] 40034b20: 39400e61 ldrb w1, [x19, #3] 40034b24: aa0440c4 orr x4, x6, x4, lsl #16 40034b28: 39402267 ldrb w7, [x19, #8] 40034b2c: 39402666 ldrb w6, [x19, #9] 40034b30: aa032043 orr x3, x2, x3, lsl #8 40034b34: 39401a60 ldrb w0, [x19, #6] 40034b38: aa016081 orr x1, x4, x1, lsl #24 40034b3c: 39401e62 ldrb w2, [x19, #7] 40034b40: 5ac00821 rev w1, w1 40034b44: aa0620e6 orr x6, x7, x6, lsl #8 *ino = rtems_rfs_dir_entry_ino (entry); 40034b48: b9000281 str w1, [x20] 40034b4c: 5ac004d9 rev16 w25, w6 40034b50: aa004060 orr x0, x3, x0, lsl #16 40034b54: aa026002 orr x2, x0, x2, lsl #24 40034b58: 12003f3c and w28, w25, #0xffff 40034b5c: 5ac00842 rev w2, w2 if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY) 40034b60: 6b1b039f cmp w28, w27 40034b64: 540003a0 b.eq 40034bd8 // b.none if (rtems_rfs_dir_entry_valid (fs, elength, *ino)) 40034b68: 71002b9f cmp w28, #0xa 40034b6c: 5400050d b.le 40034c0c <== NEVER TAKEN 40034b70: b9403340 ldr w0, [x26, #48] 40034b74: 7100003f cmp w1, #0x0 40034b78: 7a5c1000 ccmp w0, w28, #0x0, ne // ne = any 40034b7c: 54000489 b.ls 40034c0c // b.plast <== NEVER TAKEN 40034b80: b9402b40 ldr w0, [x26, #40] 40034b84: 6b00003f cmp w1, w0 40034b88: 54000428 b.hi 40034c0c // b.pmore <== NEVER TAKEN if (ehash == hash) 40034b8c: 6b0202bf cmp w21, w2 40034b90: 54fffae1 b.ne 40034aec // b.any if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 40034b94: d2a10000 mov x0, #0x8000000 // #134217728 40034b98: 97ffd7ae bl 4002aa50 40034b9c: 72001c1f tst w0, #0xff 40034ba0: 54000761 b.ne 40034c8c // b.any <== NEVER TAKEN if (memcmp (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length) == 0) 40034ba4: aa1703e2 mov x2, x23 40034ba8: aa1803e1 mov x1, x24 40034bac: 91002a60 add x0, x19, #0xa 40034bb0: 94002485 bl 4003ddc4 40034bb4: 34000900 cbz w0, 40034cd4 <== ALWAYS TAKEN map.bpos.boff += elength; 40034bb8: b940bfe0 ldr w0, [sp, #188] <== NOT EXECUTED entry += elength; 40034bbc: 8b392273 add x19, x19, w25, uxth <== NOT EXECUTED 40034bc0: f9400b45 ldr x5, [x26, #16] <== NOT EXECUTED map.bpos.boff += elength; 40034bc4: 0b000387 add w7, w28, w0 <== NOT EXECUTED 40034bc8: b900bfe7 str w7, [sp, #188] <== NOT EXECUTED while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE)) 40034bcc: d10028a1 sub x1, x5, #0xa <== NOT EXECUTED 40034bd0: eb27403f cmp x1, w7, uxtw <== NOT EXECUTED 40034bd4: 54fff9a8 b.hi 40034b08 // b.pmore <== NOT EXECUTED } if (rc == 0) 40034bd8: 35000256 cbnz w22, 40034c20 <== NEVER TAKEN { rc = rtems_rfs_block_map_next_block (fs, &map, &block); 40034bdc: 910233e2 add x2, sp, #0x8c 40034be0: 910283e1 add x1, sp, #0xa0 40034be4: aa1a03e0 mov x0, x26 40034be8: 97fffd86 bl 40034200 if ((rc > 0) && (rc != ENXIO)) 40034bec: 7100001f cmp w0, #0x0 rc = rtems_rfs_block_map_next_block (fs, &map, &block); 40034bf0: 2a0003f6 mov w22, w0 if ((rc > 0) && (rc != ENXIO)) 40034bf4: 7a46c804 ccmp w0, #0x6, #0x4, gt 40034bf8: 54001301 b.ne 40034e58 // b.any <== NEVER TAKEN if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) printf ("rtems-rfs: dir-lookup-ino: " "block map next block failed in ino %" PRIu32 ": %d: %s\n", rtems_rfs_inode_ino (inode), rc, strerror (rc)); } if (rc == ENXIO) 40034bfc: 7100181f cmp w0, #0x6 40034c00: 54fff481 b.ne 40034a90 // b.any <== NEVER TAKEN rc = ENOENT; 40034c04: 52800056 mov w22, #0x2 // #2 40034c08: 14000006 b 40034c20 if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) 40034c0c: d2a08000 mov x0, #0x4000000 // #67108864 <== NOT EXECUTED 40034c10: 97ffd790 bl 4002aa50 <== NOT EXECUTED 40034c14: 72001c1f tst w0, #0xff <== NOT EXECUTED 40034c18: 54000261 b.ne 40034c64 // b.any <== NOT EXECUTED rc = EIO; 40034c1c: 528000b6 mov w22, #0x5 // #5 <== NOT EXECUTED rtems_rfs_buffer_handle_release (fs, handle); 40034c20: 910243e1 add x1, sp, #0x90 40034c24: aa1a03e0 mov x0, x26 40034c28: 97ffc99a bl 40027290 handle->dirty = false; 40034c2c: 390243ff strb wzr, [sp, #144] rtems_rfs_inode_ino (inode), rc, strerror (rc)); } } rtems_rfs_buffer_handle_close (fs, &entries); rtems_rfs_block_map_close (fs, &map); 40034c30: 910283e1 add x1, sp, #0xa0 40034c34: aa1a03e0 mov x0, x26 handle->bnum = 0; 40034c38: b90097ff str wzr, [sp, #148] handle->buffer = NULL; 40034c3c: f9004fff str xzr, [sp, #152] 40034c40: 97fffc94 bl 40033e90 return rc; 40034c44: a94573fb ldp x27, x28, [sp, #80] } 40034c48: 2a1603e0 mov w0, w22 40034c4c: a94153f3 ldp x19, x20, [sp, #16] 40034c50: a9425bf5 ldp x21, x22, [sp, #32] 40034c54: a94363f7 ldp x23, x24, [sp, #48] 40034c58: a9446bf9 ldp x25, x26, [sp, #64] 40034c5c: a8d07bfd ldp x29, x30, [sp], #256 40034c60: d65f03c0 ret printf ("rtems-rfs: dir-lookup-ino: " 40034c64: f94033e1 ldr x1, [sp, #96] <== NOT EXECUTED 40034c68: 2a1c03e2 mov w2, w28 <== NOT EXECUTED 40034c6c: b9400283 ldr w3, [x20] <== NOT EXECUTED 40034c70: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40034c74: 911c0000 add x0, x0, #0x700 <== NOT EXECUTED 40034c78: b940bfe4 ldr w4, [sp, #188] <== NOT EXECUTED 40034c7c: b9401021 ldr w1, [x1, #16] <== NOT EXECUTED rc = EIO; 40034c80: 528000b6 mov w22, #0x5 // #5 <== NOT EXECUTED printf ("rtems-rfs: dir-lookup-ino: " 40034c84: 97ffb5e3 bl 40022410 <__wrap_printf> <== NOT EXECUTED while ((rc == 0) && block) 40034c88: 17ffffe6 b 40034c20 <== NOT EXECUTED printf ("rtems-rfs: dir-lookup-ino: " 40034c8c: 39400263 ldrb w3, [x19] <== NOT EXECUTED 40034c90: 2a1c03e4 mov w4, w28 <== NOT EXECUTED 40034c94: 39400661 ldrb w1, [x19, #1] <== NOT EXECUTED 40034c98: 39400a6a ldrb w10, [x19, #2] <== NOT EXECUTED 40034c9c: 39400e65 ldrb w5, [x19, #3] <== NOT EXECUTED 40034ca0: aa012061 orr x1, x3, x1, lsl #8 <== NOT EXECUTED 40034ca4: aa0a402a orr x10, x1, x10, lsl #16 <== NOT EXECUTED 40034ca8: a94603e1 ldp x1, x0, [sp, #96] <== NOT EXECUTED 40034cac: aa056145 orr x5, x10, x5, lsl #24 <== NOT EXECUTED 40034cb0: 29570fe2 ldp w2, w3, [sp, #184] <== NOT EXECUTED 40034cb4: 5ac008a5 rev w5, w5 <== NOT EXECUTED 40034cb8: b9401021 ldr w1, [x1, #16] <== NOT EXECUTED 40034cbc: 97ffb5d5 bl 40022410 <__wrap_printf> <== NOT EXECUTED if (memcmp (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length) == 0) 40034cc0: aa1703e2 mov x2, x23 <== NOT EXECUTED 40034cc4: aa1803e1 mov x1, x24 <== NOT EXECUTED 40034cc8: 91002a60 add x0, x19, #0xa <== NOT EXECUTED 40034ccc: 9400243e bl 4003ddc4 <== NOT EXECUTED 40034cd0: 35fff740 cbnz w0, 40034bb8 <== NOT EXECUTED *offset = rtems_rfs_block_map_pos (fs, &map); 40034cd4: 9102e3e1 add x1, sp, #0xb8 40034cd8: aa1a03e0 mov x0, x26 40034cdc: 97fffbf9 bl 40033cc0 40034ce0: f9403be1 ldr x1, [sp, #112] 40034ce4: b9000020 str w0, [x1] if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_FOUND)) 40034ce8: d2a20000 mov x0, #0x10000000 // #268435456 40034cec: 97ffd759 bl 4002aa50 40034cf0: 72001c1f tst w0, #0xff 40034cf4: 54001221 b.ne 40034f38 // b.any <== NEVER TAKEN rtems_rfs_buffer_handle_release (fs, handle); 40034cf8: 910243e1 add x1, sp, #0x90 40034cfc: aa1a03e0 mov x0, x26 40034d00: 97ffc964 bl 40027290 return 0; 40034d04: 52800016 mov w22, #0x0 // #0 rtems_rfs_block_map_close (fs, &map); 40034d08: 910283e1 add x1, sp, #0xa0 40034d0c: aa1a03e0 mov x0, x26 handle->dirty = false; 40034d10: 390243ff strb wzr, [sp, #144] handle->bnum = 0; 40034d14: b90097ff str wzr, [sp, #148] handle->buffer = NULL; 40034d18: f9004fff str xzr, [sp, #152] 40034d1c: 97fffc5d bl 40033e90 } 40034d20: 2a1603e0 mov w0, w22 40034d24: a94153f3 ldp x19, x20, [sp, #16] 40034d28: a9425bf5 ldp x21, x22, [sp, #32] 40034d2c: a94363f7 ldp x23, x24, [sp, #48] 40034d30: a9446bf9 ldp x25, x26, [sp, #64] return 0; 40034d34: a94573fb ldp x27, x28, [sp, #80] } 40034d38: a8d07bfd ldp x29, x30, [sp], #256 40034d3c: d65f03c0 ret printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n", 40034d40: f94033e1 ldr x1, [sp, #96] <== NOT EXECUTED 40034d44: b940bbe2 ldr w2, [sp, #184] <== NOT EXECUTED 40034d48: f9403fe0 ldr x0, [sp, #120] <== NOT EXECUTED 40034d4c: b9401021 ldr w1, [x1, #16] <== NOT EXECUTED 40034d50: 97ffb5b0 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40034d54: 17ffff56 b 40034aac <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) 40034d58: d2a08000 mov x0, #0x4000000 // #67108864 <== NOT EXECUTED 40034d5c: 97ffd73d bl 4002aa50 <== NOT EXECUTED 40034d60: 72001c1f tst w0, #0xff <== NOT EXECUTED 40034d64: 54fff720 b.eq 40034c48 // b.none <== NOT EXECUTED printf ("rtems-rfs: dir-lookup-ino: map open failed for ino %" PRIu32 ": %d: %s", 40034d68: f94033e0 ldr x0, [sp, #96] <== NOT EXECUTED 40034d6c: b9401013 ldr w19, [x0, #16] <== NOT EXECUTED 40034d70: 2a1603e0 mov w0, w22 <== NOT EXECUTED 40034d74: 940027aa bl 4003ec1c <== NOT EXECUTED 40034d78: aa0003e3 mov x3, x0 <== NOT EXECUTED 40034d7c: 2a1303e1 mov w1, w19 <== NOT EXECUTED 40034d80: 2a1603e2 mov w2, w22 <== NOT EXECUTED 40034d84: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40034d88: 91182000 add x0, x0, #0x608 <== NOT EXECUTED 40034d8c: 97ffb5a1 bl 40022410 <__wrap_printf> <== NOT EXECUTED } 40034d90: 2a1603e0 mov w0, w22 <== NOT EXECUTED 40034d94: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40034d98: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 40034d9c: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 40034da0: a9446bf9 ldp x25, x26, [sp, #64] <== NOT EXECUTED 40034da4: a8d07bfd ldp x29, x30, [sp], #256 <== NOT EXECUTED 40034da8: d65f03c0 ret <== NOT EXECUTED printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=", 40034dac: f94033e0 ldr x0, [sp, #96] <== NOT EXECUTED 40034db0: b9401001 ldr w1, [x0, #16] <== NOT EXECUTED 40034db4: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40034db8: 91170000 add x0, x0, #0x5c0 <== NOT EXECUTED 40034dbc: 97ffb595 bl 40022410 <__wrap_printf> <== NOT EXECUTED for (c = 0; c < length; c++) 40034dc0: 710002ff cmp w23, #0x0 <== NOT EXECUTED 40034dc4: 5400012d b.le 40034de8 <== NOT EXECUTED 40034dc8: 510006f5 sub w21, w23, #0x1 <== NOT EXECUTED 40034dcc: 91000700 add x0, x24, #0x1 <== NOT EXECUTED 40034dd0: 8b0002b5 add x21, x21, x0 <== NOT EXECUTED 40034dd4: aa1803f3 mov x19, x24 <== NOT EXECUTED printf ("%c", name[c]); 40034dd8: 38401660 ldrb w0, [x19], #1 <== NOT EXECUTED 40034ddc: 94002489 bl 4003e000 <== NOT EXECUTED for (c = 0; c < length; c++) 40034de0: eb1302bf cmp x21, x19 <== NOT EXECUTED 40034de4: 54ffffa1 b.ne 40034dd8 // b.any <== NOT EXECUTED printf (", len=%d\n", length); 40034de8: 2a1703e1 mov w1, w23 <== NOT EXECUTED 40034dec: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40034df0: 9117e000 add x0, x0, #0x5f8 <== NOT EXECUTED 40034df4: 97ffb587 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40034df8: 17ffff06 b 40034a10 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) 40034dfc: d2a08000 mov x0, #0x4000000 // #67108864 <== NOT EXECUTED 40034e00: 97ffd714 bl 4002aa50 <== NOT EXECUTED 40034e04: 72001c1f tst w0, #0xff <== NOT EXECUTED 40034e08: 54000881 b.ne 40034f18 // b.any <== NOT EXECUTED rc = ENOENT; 40034e0c: 71001adf cmp w22, #0x6 <== NOT EXECUTED 40034e10: 52800040 mov w0, #0x2 // #2 <== NOT EXECUTED rtems_rfs_buffer_handle_release (fs, handle); 40034e14: 910243e1 add x1, sp, #0x90 <== NOT EXECUTED 40034e18: 1a8012d6 csel w22, w22, w0, ne // ne = any <== NOT EXECUTED 40034e1c: aa1a03e0 mov x0, x26 <== NOT EXECUTED 40034e20: 97ffc91c bl 40027290 <== NOT EXECUTED handle->dirty = false; 40034e24: 390243ff strb wzr, [sp, #144] <== NOT EXECUTED rtems_rfs_block_map_close (fs, &map); 40034e28: 910283e1 add x1, sp, #0xa0 <== NOT EXECUTED 40034e2c: aa1a03e0 mov x0, x26 <== NOT EXECUTED handle->bnum = 0; 40034e30: b90097ff str wzr, [sp, #148] <== NOT EXECUTED handle->buffer = NULL; 40034e34: f9004fff str xzr, [sp, #152] <== NOT EXECUTED 40034e38: 97fffc16 bl 40033e90 <== NOT EXECUTED } 40034e3c: 2a1603e0 mov w0, w22 <== NOT EXECUTED 40034e40: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40034e44: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 40034e48: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 40034e4c: a9446bf9 ldp x25, x26, [sp, #64] <== NOT EXECUTED 40034e50: a8d07bfd ldp x29, x30, [sp], #256 <== NOT EXECUTED 40034e54: d65f03c0 ret <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) 40034e58: d2a08000 mov x0, #0x4000000 // #67108864 <== NOT EXECUTED 40034e5c: 97ffd6fd bl 4002aa50 <== NOT EXECUTED 40034e60: 72001c1f tst w0, #0xff <== NOT EXECUTED 40034e64: 54ffe160 b.eq 40034a90 // b.none <== NOT EXECUTED printf ("rtems-rfs: dir-lookup-ino: " 40034e68: f94033e0 ldr x0, [sp, #96] <== NOT EXECUTED 40034e6c: b9401013 ldr w19, [x0, #16] <== NOT EXECUTED 40034e70: 2a1603e0 mov w0, w22 <== NOT EXECUTED 40034e74: 9400276a bl 4003ec1c <== NOT EXECUTED 40034e78: aa0003e3 mov x3, x0 <== NOT EXECUTED 40034e7c: 2a1303e1 mov w1, w19 <== NOT EXECUTED 40034e80: 2a1603e2 mov w2, w22 <== NOT EXECUTED 40034e84: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40034e88: 911fc000 add x0, x0, #0x7f0 <== NOT EXECUTED 40034e8c: 97ffb561 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40034e90: 17ffff00 b 40034a90 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) 40034e94: d2a08000 mov x0, #0x4000000 // #67108864 <== NOT EXECUTED 40034e98: 97ffd6ee bl 4002aa50 <== NOT EXECUTED 40034e9c: 72001c1f tst w0, #0xff <== NOT EXECUTED 40034ea0: 54ffebe0 b.eq 40034c1c // b.none <== NOT EXECUTED printf ("rtems-rfs: dir-lookup-ino: block is 0 in ino %" PRIu32 ": %d: %s\n", 40034ea4: f94033e0 ldr x0, [sp, #96] <== NOT EXECUTED 40034ea8: b9401013 ldr w19, [x0, #16] <== NOT EXECUTED 40034eac: 528000a0 mov w0, #0x5 // #5 <== NOT EXECUTED 40034eb0: 9400275b bl 4003ec1c <== NOT EXECUTED 40034eb4: aa0003e3 mov x3, x0 <== NOT EXECUTED 40034eb8: 528000a2 mov w2, #0x5 // #5 <== NOT EXECUTED 40034ebc: 2a1303e1 mov w1, w19 <== NOT EXECUTED rc = EIO; 40034ec0: 2a0203f6 mov w22, w2 <== NOT EXECUTED printf ("rtems-rfs: dir-lookup-ino: block is 0 in ino %" PRIu32 ": %d: %s\n", 40034ec4: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40034ec8: 91210000 add x0, x0, #0x840 <== NOT EXECUTED 40034ecc: 97ffb551 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40034ed0: 17ffff54 b 40034c20 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO)) 40034ed4: d2a08000 mov x0, #0x4000000 // #67108864 <== NOT EXECUTED 40034ed8: 97ffd6de bl 4002aa50 <== NOT EXECUTED 40034edc: 72001c1f tst w0, #0xff <== NOT EXECUTED 40034ee0: 54ffea00 b.eq 40034c20 // b.none <== NOT EXECUTED printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " block=%" PRId32 ": %d: %s\n", 40034ee4: f94033e1 ldr x1, [sp, #96] <== NOT EXECUTED 40034ee8: 2a1603e0 mov w0, w22 <== NOT EXECUTED 40034eec: b9408ff4 ldr w20, [sp, #140] <== NOT EXECUTED 40034ef0: b9401033 ldr w19, [x1, #16] <== NOT EXECUTED 40034ef4: 9400274a bl 4003ec1c <== NOT EXECUTED 40034ef8: 2a1403e2 mov w2, w20 <== NOT EXECUTED 40034efc: aa0003e4 mov x4, x0 <== NOT EXECUTED 40034f00: 2a1303e1 mov w1, w19 <== NOT EXECUTED 40034f04: 2a1603e3 mov w3, w22 <== NOT EXECUTED 40034f08: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40034f0c: 911b0000 add x0, x0, #0x6c0 <== NOT EXECUTED 40034f10: 97ffb540 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40034f14: 17ffff43 b 40034c20 <== NOT EXECUTED printf ("rtems-rfs: dir-lookup-ino: block map find failed: %d: %s\n", 40034f18: 2a1603e0 mov w0, w22 <== NOT EXECUTED 40034f1c: 94002740 bl 4003ec1c <== NOT EXECUTED 40034f20: d00000a1 adrp x1, 4004a000 <== NOT EXECUTED 40034f24: aa0003e2 mov x2, x0 <== NOT EXECUTED 40034f28: 91192020 add x0, x1, #0x648 <== NOT EXECUTED 40034f2c: 2a1603e1 mov w1, w22 <== NOT EXECUTED 40034f30: 97ffb538 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40034f34: 17ffffb6 b 40034e0c <== NOT EXECUTED printf ("rtems-rfs: dir-lookup-ino: " 40034f38: f94033e1 ldr x1, [sp, #96] <== NOT EXECUTED 40034f3c: f9403be0 ldr x0, [sp, #112] <== NOT EXECUTED 40034f40: b9400282 ldr w2, [x20] <== NOT EXECUTED 40034f44: b9401021 ldr w1, [x1, #16] <== NOT EXECUTED 40034f48: b9400003 ldr w3, [x0] <== NOT EXECUTED 40034f4c: d00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40034f50: 911ea000 add x0, x0, #0x7a8 <== NOT EXECUTED 40034f54: 97ffb52f bl 40022410 <__wrap_printf> <== NOT EXECUTED 40034f58: 17ffff68 b 40034cf8 <== NOT EXECUTED 40034f5c: 00000000 udf #0 =============================================================================== 0000000040035780 : rtems_rfs_dir_read (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, rtems_rfs_pos_rel offset, struct dirent* dirent, size_t* length) { 40035780: a9b27bfd stp x29, x30, [sp, #-224]! 40035784: 910003fd mov x29, sp 40035788: a90153f3 stp x19, x20, [sp, #16] 4003578c: a9025bf5 stp x21, x22, [sp, #32] 40035790: aa0003f5 mov x21, x0 40035794: aa0403f6 mov x22, x4 rtems_rfs_block_map map; rtems_rfs_buffer_handle buffer; rtems_rfs_block_no block; int rc; if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) 40035798: d2b00000 mov x0, #0x80000000 // #2147483648 { 4003579c: a90363f7 stp x23, x24, [sp, #48] 400357a0: aa0103f8 mov x24, x1 400357a4: aa0203f7 mov x23, x2 400357a8: a9046bf9 stp x25, x26, [sp, #64] 400357ac: aa0303fa mov x26, x3 if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) 400357b0: 97ffd4a8 bl 4002aa50 400357b4: 72001c1f tst w0, #0xff 400357b8: 54000d01 b.ne 40035958 // b.any <== NEVER TAKEN printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n", rtems_rfs_inode_ino (dir), offset); *length = 0; 400357bc: f90002df str xzr, [x22] rc = rtems_rfs_block_map_open (fs, dir, &map); 400357c0: 910203e2 add x2, sp, #0x80 400357c4: aa1803e1 mov x1, x24 400357c8: aa1503e0 mov x0, x21 400357cc: 97fff94d bl 40033d00 400357d0: 2a0003f3 mov w19, w0 if (rc > 0) 400357d4: 7100001f cmp w0, #0x0 400357d8: 5400098c b.gt 40035908 <== NEVER TAKEN return rc; if (((rtems_rfs_fs_block_size (fs) - 400357dc: f9400aa2 ldr x2, [x21, #16] (offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE)) offset = (((offset / rtems_rfs_fs_block_size (fs)) + 1) * rtems_rfs_fs_block_size (fs)); rc = rtems_rfs_block_map_seek (fs, &map, offset, &block); 400357e0: 9101b3e3 add x3, sp, #0x6c 400357e4: 910203e1 add x1, sp, #0x80 400357e8: aa1503e0 mov x0, x21 (offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE)) 400357ec: 9ac20ae4 udiv x4, x23, x2 400357f0: 9b02dc85 msub x5, x4, x2, x23 offset = (((offset / rtems_rfs_fs_block_size (fs)) + 1) * 400357f4: 9b020884 madd x4, x4, x2, x2 if (((rtems_rfs_fs_block_size (fs) - 400357f8: cb050042 sub x2, x2, x5 offset = (((offset / rtems_rfs_fs_block_size (fs)) + 1) * 400357fc: f1002c5f cmp x2, #0xb 40035800: 9a973097 csel x23, x4, x23, cc // cc = lo, ul, last rc = rtems_rfs_block_map_seek (fs, &map, offset, &block); 40035804: aa1703e2 mov x2, x23 40035808: 97fffa6e bl 400341c0 4003580c: 2a0003f3 mov w19, w0 if (rc > 0) 40035810: 7100001f cmp w0, #0x0 40035814: 5400088c b.gt 40035924 <== NEVER TAKEN entry += map.bpos.boff; elength = rtems_rfs_dir_entry_length (entry); eino = rtems_rfs_dir_entry_ino (entry); if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY) 40035818: 529ffff9 mov w25, #0xffff // #65535 4003581c: a90573fb stp x27, x28, [sp, #80] } *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff; if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n", 40035820: b00000bb adrp x27, 4004a000 40035824: 912fe37b add x27, x27, #0xbf8 handle->dirty = false; 40035828: 3901c3ff strb wzr, [sp, #112] handle->bnum = 0; 4003582c: b90077ff str wzr, [sp, #116] handle->buffer = NULL; 40035830: f9003fff str xzr, [sp, #120] while (rc == 0) 40035834: 14000009 b 40035858 offset, *length); rc = rtems_rfs_block_map_next_block (fs, &map, &block); 40035838: 9101b3e2 add x2, sp, #0x6c 4003583c: 910203e1 add x1, sp, #0x80 40035840: aa1503e0 mov x0, x21 40035844: 97fffa6f bl 40034200 40035848: 2a0003f3 mov w19, w0 if (rc == ENXIO) 4003584c: 7100181f cmp w0, #0x6 40035850: 54000460 b.eq 400358dc // b.none <== ALWAYS TAKEN while (rc == 0) 40035854: 35000460 cbnz w0, 400358e0 <== NOT EXECUTED rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true); 40035858: b9406fe2 ldr w2, [sp, #108] 4003585c: 9101c3e1 add x1, sp, #0x70 40035860: aa1503e0 mov x0, x21 40035864: 52800023 mov w3, #0x1 // #1 40035868: 97ffc5da bl 40026fd0 4003586c: 2a0003f3 mov w19, w0 if (rc > 0) 40035870: 7100027f cmp w19, #0x0 if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) 40035874: d2b00000 mov x0, #0x80000000 // #2147483648 if (rc > 0) 40035878: 5400034c b.gt 400358e0 <== NEVER TAKEN entry = rtems_rfs_buffer_data (&buffer); 4003587c: f9403fe1 ldr x1, [sp, #120] entry += map.bpos.boff; 40035880: b9409fe3 ldr w3, [sp, #156] entry = rtems_rfs_buffer_data (&buffer); 40035884: f9401c3c ldr x28, [x1, #56] entry += map.bpos.boff; 40035888: 8b03039c add x28, x28, x3 elength = rtems_rfs_dir_entry_length (entry); 4003588c: 39402381 ldrb w1, [x28, #8] 40035890: 39402794 ldrb w20, [x28, #9] 40035894: aa142034 orr x20, x1, x20, lsl #8 40035898: 5ac00694 rev16 w20, w20 4003589c: 12003e94 and w20, w20, #0xffff if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY) 400358a0: 6b19029f cmp w20, w25 400358a4: 54000661 b.ne 40035970 // b.any *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff; 400358a8: f9400aa2 ldr x2, [x21, #16] 400358ac: f94002c1 ldr x1, [x22] 400358b0: cb030042 sub x2, x2, x3 400358b4: 8b020021 add x1, x1, x2 400358b8: f90002c1 str x1, [x22] if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) 400358bc: 97ffd465 bl 4002aa50 400358c0: 72001c1f tst w0, #0xff 400358c4: 54fffba0 b.eq 40035838 // b.none <== ALWAYS TAKEN printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n", 400358c8: f94002c2 ldr x2, [x22] <== NOT EXECUTED 400358cc: aa1703e1 mov x1, x23 <== NOT EXECUTED 400358d0: aa1b03e0 mov x0, x27 <== NOT EXECUTED 400358d4: 97ffb2cf bl 40022410 <__wrap_printf> <== NOT EXECUTED 400358d8: 17ffffd8 b 40035838 <== NOT EXECUTED rc = ENOENT; 400358dc: 52800053 mov w19, #0x2 // #2 rtems_rfs_buffer_handle_release (fs, handle); 400358e0: 9101c3e1 add x1, sp, #0x70 400358e4: aa1503e0 mov x0, x21 400358e8: 97ffc66a bl 40027290 handle->dirty = false; 400358ec: 3901c3ff strb wzr, [sp, #112] } rtems_rfs_buffer_handle_close (fs, &buffer); rtems_rfs_block_map_close (fs, &map); 400358f0: 910203e1 add x1, sp, #0x80 400358f4: aa1503e0 mov x0, x21 handle->bnum = 0; 400358f8: b90077ff str wzr, [sp, #116] handle->buffer = NULL; 400358fc: f9003fff str xzr, [sp, #120] 40035900: 97fff964 bl 40033e90 40035904: a94573fb ldp x27, x28, [sp, #80] return rc; } 40035908: 2a1303e0 mov w0, w19 4003590c: a94153f3 ldp x19, x20, [sp, #16] 40035910: a9425bf5 ldp x21, x22, [sp, #32] 40035914: a94363f7 ldp x23, x24, [sp, #48] 40035918: a9446bf9 ldp x25, x26, [sp, #64] 4003591c: a8ce7bfd ldp x29, x30, [sp], #224 40035920: d65f03c0 ret rc = ENOENT; 40035924: 7100181f cmp w0, #0x6 <== NOT EXECUTED 40035928: 52800042 mov w2, #0x2 // #2 <== NOT EXECUTED rtems_rfs_block_map_close (fs, &map); 4003592c: 910203e1 add x1, sp, #0x80 <== NOT EXECUTED rc = ENOENT; 40035930: 1a821273 csel w19, w19, w2, ne // ne = any <== NOT EXECUTED rtems_rfs_block_map_close (fs, &map); 40035934: aa1503e0 mov x0, x21 <== NOT EXECUTED 40035938: 97fff956 bl 40033e90 <== NOT EXECUTED } 4003593c: 2a1303e0 mov w0, w19 <== NOT EXECUTED 40035940: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 40035944: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 40035948: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 4003594c: a9446bf9 ldp x25, x26, [sp, #64] <== NOT EXECUTED 40035950: a8ce7bfd ldp x29, x30, [sp], #224 <== NOT EXECUTED 40035954: d65f03c0 ret <== NOT EXECUTED printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n", 40035958: b9401301 ldr w1, [x24, #16] <== NOT EXECUTED 4003595c: aa1703e2 mov x2, x23 <== NOT EXECUTED 40035960: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40035964: 912d4000 add x0, x0, #0xb50 <== NOT EXECUTED 40035968: 97ffb2aa bl 40022410 <__wrap_printf> <== NOT EXECUTED 4003596c: 17ffff94 b 400357bc <== NOT EXECUTED 40035970: 39400382 ldrb w2, [x28] if (rtems_rfs_dir_entry_valid (fs, elength, eino)) 40035974: 71002a9f cmp w20, #0xa 40035978: 39400781 ldrb w1, [x28, #1] 4003597c: 39400b80 ldrb w0, [x28, #2] 40035980: 39400f97 ldrb w23, [x28, #3] 40035984: aa012041 orr x1, x2, x1, lsl #8 40035988: aa004020 orr x0, x1, x0, lsl #16 4003598c: aa176017 orr x23, x0, x23, lsl #24 40035990: 5ac00af7 rev w23, w23 40035994: 540000ad b.le 400359a8 <== NEVER TAKEN 40035998: b94032a0 ldr w0, [x21, #48] 4003599c: 710002ff cmp w23, #0x0 400359a0: 7a541000 ccmp w0, w20, #0x0, ne // ne = any 400359a4: 540001c8 b.hi 400359dc // b.pmore <== ALWAYS TAKEN if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) 400359a8: d2b00000 mov x0, #0x80000000 // #2147483648 <== NOT EXECUTED rc = EIO; 400359ac: 528000b3 mov w19, #0x5 // #5 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) 400359b0: 97ffd428 bl 4002aa50 <== NOT EXECUTED 400359b4: 72001c1f tst w0, #0xff <== NOT EXECUTED 400359b8: 54fff940 b.eq 400358e0 // b.none <== NOT EXECUTED printf ("rtems-rfs: dir-read: " 400359bc: b9401301 ldr w1, [x24, #16] <== NOT EXECUTED 400359c0: 2a1703e3 mov w3, w23 <== NOT EXECUTED 400359c4: b9409fe4 ldr w4, [sp, #156] <== NOT EXECUTED 400359c8: 2a1403e2 mov w2, w20 <== NOT EXECUTED 400359cc: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 400359d0: 912de000 add x0, x0, #0xb78 <== NOT EXECUTED 400359d4: 97ffb28f bl 40022410 <__wrap_printf> <== NOT EXECUTED 400359d8: 17ffffc2 b 400358e0 <== NOT EXECUTED if (rtems_rfs_dir_entry_valid (fs, elength, eino)) 400359dc: b9402aa0 ldr w0, [x21, #40] 400359e0: 6b17001f cmp w0, w23 400359e4: 54fffe23 b.cc 400359a8 // b.lo, b.ul, b.last<== NEVER TAKEN memset (dirent, 0, sizeof (struct dirent)); 400359e8: d2802318 mov x24, #0x118 // #280 400359ec: aa1803e2 mov x2, x24 400359f0: 52800001 mov w1, #0x0 // #0 400359f4: aa1a03e0 mov x0, x26 400359f8: 9400216d bl 4003dfac memcpy (dirent->d_name, entry + RTEMS_RFS_DIR_ENTRY_SIZE, elength); 400359fc: 91005b57 add x23, x26, #0x16 dirent->d_off = rtems_rfs_block_get_pos (fs, &map.bpos); 40035a00: 910263e1 add x1, sp, #0x98 40035a04: aa1503e0 mov x0, x21 40035a08: 97fff8ae bl 40033cc0 40035a0c: f9000740 str x0, [x26, #8] dirent->d_reclen = sizeof (struct dirent); 40035a10: 79002358 strh w24, [x26, #16] elength -= RTEMS_RFS_DIR_ENTRY_SIZE; 40035a14: 51002a84 sub w4, w20, #0xa *length += elength; 40035a18: f94002c2 ldr x2, [x22] 40035a1c: 52801fe3 mov w3, #0xff // #255 remaining = rtems_rfs_fs_block_size (fs) - (map.bpos.boff + elength); 40035a20: b9409fe6 ldr w6, [sp, #156] memcpy (dirent->d_name, entry + RTEMS_RFS_DIR_ENTRY_SIZE, elength); 40035a24: 91002b81 add x1, x28, #0xa 40035a28: aa1703e0 mov x0, x23 *length += elength; 40035a2c: 8b342045 add x5, x2, w20, uxth 40035a30: f90002c5 str x5, [x22] remaining = rtems_rfs_fs_block_size (fs) - (map.bpos.boff + elength); 40035a34: f9400aa2 ldr x2, [x21, #16] 40035a38: 4b060042 sub w2, w2, w6 40035a3c: 4b140054 sub w20, w2, w20 *length += remaining; 40035a40: 71002e9f cmp w20, #0xb 40035a44: 8b34c0b4 add x20, x5, w20, sxtw 40035a48: 9a85b282 csel x2, x20, x5, lt // lt = tstop 40035a4c: 6b03009f cmp w4, w3 40035a50: 1a83d094 csel w20, w4, w3, le 40035a54: f90002c2 str x2, [x22] memcpy (dirent->d_name, entry + RTEMS_RFS_DIR_ENTRY_SIZE, elength); 40035a58: 93407e82 sxtw x2, w20 40035a5c: 940020fe bl 4003de54 dirent->d_ino = rtems_rfs_dir_entry_ino (entry); 40035a60: 39400383 ldrb w3, [x28] if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) 40035a64: d2b00000 mov x0, #0x80000000 // #2147483648 40035a68: 39400784 ldrb w4, [x28, #1] 40035a6c: 39400b82 ldrb w2, [x28, #2] 40035a70: 39400f81 ldrb w1, [x28, #3] 40035a74: aa042064 orr x4, x3, x4, lsl #8 dirent->d_namlen = elength; 40035a78: 79002b54 strh w20, [x26, #20] 40035a7c: aa024082 orr x2, x4, x2, lsl #16 40035a80: aa016041 orr x1, x2, x1, lsl #24 dirent->d_ino = rtems_rfs_dir_entry_ino (entry); 40035a84: 5ac00821 rev w1, w1 40035a88: f9000341 str x1, [x26] if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ)) 40035a8c: 97ffd3f1 bl 4002aa50 40035a90: 72001c1f tst w0, #0xff 40035a94: 54fff260 b.eq 400358e0 // b.none <== ALWAYS TAKEN printf ("rtems-rfs: dir-read: found off:%" PRIooff_t 40035a98: a9400742 ldp x2, x1, [x26] <== NOT EXECUTED 40035a9c: aa1703e3 mov x3, x23 <== NOT EXECUTED 40035aa0: b00000a0 adrp x0, 4004a000 <== NOT EXECUTED 40035aa4: 912f0000 add x0, x0, #0xbc0 <== NOT EXECUTED 40035aa8: 97ffb25a bl 40022410 <__wrap_printf> <== NOT EXECUTED 40035aac: 17ffff8d b 400358e0 <== NOT EXECUTED =============================================================================== 0000000040036240 : { 40036240: a9bc7bfd stp x29, x30, [sp, #-64]! 40036244: 910003fd mov x29, sp 40036248: a90153f3 stp x19, x20, [sp, #16] 4003624c: aa0103f3 mov x19, x1 40036250: a9025bf5 stp x21, x22, [sp, #32] 40036254: aa0003f5 mov x21, x0 if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE)) 40036258: d2c00200 mov x0, #0x1000000000 // #68719476736 4003625c: 97ffd1fd bl 4002aa50 40036260: 72001c1f tst w0, #0xff 40036264: 54000e21 b.ne 40036428 // b.any <== NEVER TAKEN if (handle->shared->references > 0) 40036268: f9401660 ldr x0, [x19, #40] 4003626c: b9401014 ldr w20, [x0, #16] 40036270: 7100029f cmp w20, #0x0 40036274: 5400006d b.le 40036280 <== NEVER TAKEN handle->shared->references--; 40036278: 51000694 sub w20, w20, #0x1 4003627c: b9001014 str w20, [x0, #16] rc = rtems_rfs_buffer_handle_close (fs, &handle->buffer); 40036280: 91002276 add x22, x19, #0x8 if (handle->shared->references == 0) 40036284: 34000194 cbz w20, 400362b4 <== ALWAYS TAKEN 40036288: aa1603e1 mov x1, x22 <== NOT EXECUTED 4003628c: aa1503e0 mov x0, x21 <== NOT EXECUTED 40036290: 97ffc400 bl 40027290 <== NOT EXECUTED rrc = 0; 40036294: 52800014 mov w20, #0x0 // #0 <== NOT EXECUTED free (handle); 40036298: aa1303e0 mov x0, x19 <== NOT EXECUTED 4003629c: 97ffb145 bl 400227b0 <== NOT EXECUTED } 400362a0: 2a1403e0 mov w0, w20 <== NOT EXECUTED 400362a4: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 400362a8: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 400362ac: a8c47bfd ldp x29, x30, [sp], #64 <== NOT EXECUTED 400362b0: d65f03c0 ret <== NOT EXECUTED if (!rtems_rfs_inode_is_loaded (&handle->shared->inode)) 400362b4: f9401802 ldr x2, [x0, #48] 400362b8: a90363f7 stp x23, x24, [sp, #48] 400362bc: 91006001 add x1, x0, #0x18 400362c0: b4001162 cbz x2, 400364ec <== ALWAYS TAKEN rtems_rfs_inode_set_atime (&handle->shared->inode, 400362c4: b940c000 ldr w0, [x0, #192] rtems_rfs_buffer_mark_dirty (&handle->buffer); 400362c8: 52800023 mov w3, #0x1 // #1 rtems_rfs_write_u32 (&handle->node->atime, atime); 400362cc: 53187c04 lsr w4, w0, #24 400362d0: 39004044 strb w4, [x2, #16] 400362d4: 53107c05 lsr w5, w0, #16 400362d8: 53087c04 lsr w4, w0, #8 400362dc: f9400c22 ldr x2, [x1, #24] 400362e0: 39004445 strb w5, [x2, #17] 400362e4: f9400c22 ldr x2, [x1, #24] 400362e8: 39004844 strb w4, [x2, #18] 400362ec: f9400c22 ldr x2, [x1, #24] 400362f0: 39004c40 strb w0, [x2, #19] rtems_rfs_buffer_mark_dirty (&handle->buffer); 400362f4: 39008023 strb w3, [x1, #32] rtems_rfs_inode_set_mtime (&handle->shared->inode, 400362f8: f9401661 ldr x1, [x19, #40] rtems_rfs_write_u32 (&handle->node->mtime, mtime); 400362fc: 91006020 add x0, x1, #0x18 40036300: f9400c02 ldr x2, [x0, #24] 40036304: b940c421 ldr w1, [x1, #196] 40036308: 53187c26 lsr w6, w1, #24 4003630c: 39005046 strb w6, [x2, #20] 40036310: 53107c25 lsr w5, w1, #16 40036314: 53087c24 lsr w4, w1, #8 40036318: f9400c02 ldr x2, [x0, #24] 4003631c: 39005445 strb w5, [x2, #21] 40036320: f9400c02 ldr x2, [x0, #24] 40036324: 39005844 strb w4, [x2, #22] 40036328: f9400c02 ldr x2, [x0, #24] 4003632c: 39005c41 strb w1, [x2, #23] rtems_rfs_buffer_mark_dirty (&handle->buffer); 40036330: 39008003 strb w3, [x0, #32] rtems_rfs_inode_set_ctime (&handle->shared->inode, 40036334: f9401661 ldr x1, [x19, #40] rtems_rfs_write_u32 (&handle->node->ctime, ctime); 40036338: 91006020 add x0, x1, #0x18 4003633c: f9400c02 ldr x2, [x0, #24] 40036340: b940c821 ldr w1, [x1, #200] 40036344: 53187c26 lsr w6, w1, #24 40036348: 39006046 strb w6, [x2, #24] 4003634c: 53107c25 lsr w5, w1, #16 40036350: 53087c24 lsr w4, w1, #8 40036354: f9400c02 ldr x2, [x0, #24] 40036358: 39006445 strb w5, [x2, #25] 4003635c: f9400c02 ldr x2, [x0, #24] 40036360: 39006844 strb w4, [x2, #26] 40036364: f9400c02 ldr x2, [x0, #24] 40036368: 39006c41 strb w1, [x2, #27] rtems_rfs_buffer_mark_dirty (&handle->buffer); 4003636c: 39008003 strb w3, [x0, #32] if (!rtems_rfs_block_size_equal (&handle->shared->size, 40036370: f9401662 ldr x2, [x19, #40] 40036374: 91016041 add x1, x2, #0x58 40036378: f9405c44 ldr x4, [x2, #184] 4003637c: f9403440 ldr x0, [x2, #104] 40036380: eb00009f cmp x4, x0 40036384: 54000080 b.eq 40036394 // b.none <== ALWAYS TAKEN */ static inline void rtems_rfs_block_map_set_size (rtems_rfs_block_map* map, rtems_rfs_block_size* size) { rtems_rfs_block_copy_size (&map->size, size); 40036388: 29570044 ldp w4, w0, [x2, #184] <== NOT EXECUTED 4003638c: 29020024 stp w4, w0, [x1, #16] <== NOT EXECUTED map->dirty = true; 40036390: 39016043 strb w3, [x2, #88] <== NOT EXECUTED rc = rtems_rfs_block_map_close (fs, &handle->shared->map); 40036394: aa1503e0 mov x0, x21 40036398: 97fff6be bl 40033e90 4003639c: 2a0003f7 mov w23, w0 if (rc > 0) 400363a0: 7100001f cmp w0, #0x0 400363a4: 5400096c b.gt 400364d0 <== NEVER TAKEN rc = rtems_rfs_inode_close (fs, &handle->shared->inode); 400363a8: f9401661 ldr x1, [x19, #40] 400363ac: aa1503e0 mov x0, x21 400363b0: 91006021 add x1, x1, #0x18 400363b4: 97ffcadb bl 40028f20 400363b8: 2a0003f7 mov w23, w0 if (rc > 0) 400363bc: 7100001f cmp w0, #0x0 400363c0: 5400040c b.gt 40036440 <== NEVER TAKEN rtems_chain_extract_unprotected (&handle->shared->link); 400363c4: f9401660 ldr x0, [x19, #40] previous = the_node->previous; 400363c8: a9400402 ldp x2, x1, [x0] next->previous = previous; 400363cc: f9000441 str x1, [x2, #8] previous->next = next; 400363d0: f9000022 str x2, [x1] free (handle->shared); 400363d4: 97ffb0f7 bl 400227b0 400363d8: aa1603e1 mov x1, x22 400363dc: aa1503e0 mov x0, x21 400363e0: 97ffc3ac bl 40027290 handle->dirty = false; 400363e4: 3900227f strb wzr, [x19, #8] handle->bnum = 0; 400363e8: b90006df str wzr, [x22, #4] if (rrc > 0) 400363ec: 7100029f cmp w20, #0x0 handle->buffer = NULL; 400363f0: f90006df str xzr, [x22, #8] 400363f4: 540000ad b.le 40036408 <== ALWAYS TAKEN if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE)) 400363f8: d2c00200 mov x0, #0x1000000000 // #68719476736 <== NOT EXECUTED 400363fc: 97ffd195 bl 4002aa50 <== NOT EXECUTED 40036400: 72001c1f tst w0, #0xff <== NOT EXECUTED 40036404: 54000481 b.ne 40036494 // b.any <== NOT EXECUTED free (handle); 40036408: aa1303e0 mov x0, x19 4003640c: a94363f7 ldp x23, x24, [sp, #48] 40036410: 97ffb0e8 bl 400227b0 } 40036414: 2a1403e0 mov w0, w20 40036418: a94153f3 ldp x19, x20, [sp, #16] 4003641c: a9425bf5 ldp x21, x22, [sp, #32] 40036420: a8c47bfd ldp x29, x30, [sp], #64 40036424: d65f03c0 ret printf ("rtems-rfs: file-close: entry: ino=%" PRId32 "\n", 40036428: f9401661 ldr x1, [x19, #40] <== NOT EXECUTED 4003642c: 900000a0 adrp x0, 4004a000 <== NOT EXECUTED 40036430: 91360000 add x0, x0, #0xd80 <== NOT EXECUTED 40036434: b9402821 ldr w1, [x1, #40] <== NOT EXECUTED 40036438: 97ffaff6 bl 40022410 <__wrap_printf> <== NOT EXECUTED 4003643c: 17ffff8b b 40036268 <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE)) 40036440: d2c00200 mov x0, #0x1000000000 // #68719476736 <== NOT EXECUTED 40036444: 97ffd183 bl 4002aa50 <== NOT EXECUTED 40036448: 72001c1f tst w0, #0xff <== NOT EXECUTED 4003644c: 540005e1 b.ne 40036508 // b.any <== NOT EXECUTED rtems_chain_extract_unprotected (&handle->shared->link); 40036450: f9401660 ldr x0, [x19, #40] <== NOT EXECUTED previous = the_node->previous; 40036454: a9400402 ldp x2, x1, [x0] <== NOT EXECUTED if (rrc == 0) 40036458: 35fffbb4 cbnz w20, 400363cc <== NOT EXECUTED next->previous = previous; 4003645c: f9000441 str x1, [x2, #8] <== NOT EXECUTED 40036460: 2a1703f4 mov w20, w23 <== NOT EXECUTED previous->next = next; 40036464: f9000022 str x2, [x1] <== NOT EXECUTED free (handle->shared); 40036468: 97ffb0d2 bl 400227b0 <== NOT EXECUTED rtems_rfs_buffer_handle_release (fs, handle); 4003646c: aa1603e1 mov x1, x22 <== NOT EXECUTED 40036470: aa1503e0 mov x0, x21 <== NOT EXECUTED 40036474: 97ffc387 bl 40027290 <== NOT EXECUTED handle->dirty = false; 40036478: 3900227f strb wzr, [x19, #8] <== NOT EXECUTED handle->bnum = 0; 4003647c: b90006df str wzr, [x22, #4] <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE)) 40036480: d2c00200 mov x0, #0x1000000000 // #68719476736 <== NOT EXECUTED handle->buffer = NULL; 40036484: f90006df str xzr, [x22, #8] <== NOT EXECUTED 40036488: 97ffd172 bl 4002aa50 <== NOT EXECUTED 4003648c: 72001c1f tst w0, #0xff <== NOT EXECUTED 40036490: 54fffbc0 b.eq 40036408 // b.none <== NOT EXECUTED printf ("rtems-rfs: file-close: result: %d: %s\n", rrc, strerror (rrc)); 40036494: 2a1403e0 mov w0, w20 <== NOT EXECUTED 40036498: 940021e1 bl 4003ec1c <== NOT EXECUTED 4003649c: 900000a1 adrp x1, 4004a000 <== NOT EXECUTED 400364a0: aa0003e2 mov x2, x0 <== NOT EXECUTED 400364a4: 91388020 add x0, x1, #0xe20 <== NOT EXECUTED 400364a8: 2a1403e1 mov w1, w20 <== NOT EXECUTED 400364ac: 97ffafd9 bl 40022410 <__wrap_printf> <== NOT EXECUTED free (handle); 400364b0: aa1303e0 mov x0, x19 <== NOT EXECUTED 400364b4: a94363f7 ldp x23, x24, [sp, #48] <== NOT EXECUTED 400364b8: 97ffb0be bl 400227b0 <== NOT EXECUTED } 400364bc: 2a1403e0 mov w0, w20 <== NOT EXECUTED 400364c0: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 400364c4: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 400364c8: a8c47bfd ldp x29, x30, [sp], #64 <== NOT EXECUTED 400364cc: d65f03c0 ret <== NOT EXECUTED if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE)) 400364d0: d2c00200 mov x0, #0x1000000000 // #68719476736 <== NOT EXECUTED 400364d4: 97ffd15f bl 4002aa50 <== NOT EXECUTED 400364d8: 72001c1f tst w0, #0xff <== NOT EXECUTED 400364dc: 540002c1 b.ne 40036534 // b.any <== NOT EXECUTED if (rrc == 0) 400364e0: 7100029f cmp w20, #0x0 <== NOT EXECUTED 400364e4: 1a971294 csel w20, w20, w23, ne // ne = any <== NOT EXECUTED 400364e8: 17ffffb0 b 400363a8 <== NOT EXECUTED rrc = rtems_rfs_inode_load (fs, &handle->shared->inode); 400364ec: aa1503e0 mov x0, x21 400364f0: 97ffc9e4 bl 40028c80 if (rrc == 0) 400364f4: 34000360 cbz w0, 40036560 <== ALWAYS TAKEN rc = rtems_rfs_block_map_close (fs, &handle->shared->map); 400364f8: f9401662 ldr x2, [x19, #40] <== NOT EXECUTED 400364fc: 2a0003f4 mov w20, w0 <== NOT EXECUTED 40036500: 91016041 add x1, x2, #0x58 <== NOT EXECUTED 40036504: 17ffffa4 b 40036394 <== NOT EXECUTED printf ("rtems-rfs: file-close: inode close error: ino=%" PRId32 ": %d: %s\n", 40036508: f9401661 ldr x1, [x19, #40] <== NOT EXECUTED 4003650c: 2a1703e0 mov w0, w23 <== NOT EXECUTED 40036510: b9402838 ldr w24, [x1, #40] <== NOT EXECUTED 40036514: 940021c2 bl 4003ec1c <== NOT EXECUTED 40036518: 900000a2 adrp x2, 4004a000 <== NOT EXECUTED 4003651c: aa0003e3 mov x3, x0 <== NOT EXECUTED 40036520: 2a1803e1 mov w1, w24 <== NOT EXECUTED 40036524: 91378040 add x0, x2, #0xde0 <== NOT EXECUTED 40036528: 2a1703e2 mov w2, w23 <== NOT EXECUTED 4003652c: 97ffafb9 bl 40022410 <__wrap_printf> <== NOT EXECUTED 40036530: 17ffffc8 b 40036450 <== NOT EXECUTED printf ("rtems-rfs: file-close: map close error: ino=%" PRId32 ": %d: %s\n", 40036534: f9401661 ldr x1, [x19, #40] <== NOT EXECUTED 40036538: 2a1703e0 mov w0, w23 <== NOT EXECUTED 4003653c: b9402838 ldr w24, [x1, #40] <== NOT EXECUTED 40036540: 940021b7 bl 4003ec1c <== NOT EXECUTED 40036544: 900000a2 adrp x2, 4004a000 <== NOT EXECUTED 40036548: aa0003e3 mov x3, x0 <== NOT EXECUTED 4003654c: 2a1803e1 mov w1, w24 <== NOT EXECUTED 40036550: 9136a040 add x0, x2, #0xda8 <== NOT EXECUTED 40036554: 2a1703e2 mov w2, w23 <== NOT EXECUTED 40036558: 97ffafae bl 40022410 <__wrap_printf> <== NOT EXECUTED 4003655c: 17ffffe1 b 400364e0 <== NOT EXECUTED rtems_rfs_inode_set_atime (&handle->shared->inode, 40036560: f9401660 ldr x0, [x19, #40] rtems_rfs_write_u32 (&handle->node->atime, atime); 40036564: 91006001 add x1, x0, #0x18 40036568: f9401802 ldr x2, [x0, #48] 4003656c: 17ffff56 b 400362c4 =============================================================================== 0000000040036e40 : return &the_chain->Tail.Node; 40036e40: 9103a003 add x3, x0, #0xe8 return _Chain_Immutable_head( the_chain )->next; 40036e44: f9407000 ldr x0, [x0, #224] while (!rtems_chain_is_tail (&fs->file_shares, node)) 40036e48: eb03001f cmp x0, x3 40036e4c: 540000a1 b.ne 40036e60 // b.any 40036e50: 14000008 b 40036e70 return the_node->next; 40036e54: f9400000 ldr x0, [x0] <== NOT EXECUTED 40036e58: eb03001f cmp x0, x3 <== NOT EXECUTED 40036e5c: 540000a0 b.eq 40036e70 // b.none <== NOT EXECUTED if (shared->inode.ino == ino) 40036e60: b9402802 ldr w2, [x0, #40] 40036e64: 6b01005f cmp w2, w1 40036e68: 54ffff61 b.ne 40036e54 // b.any <== NEVER TAKEN return shared; node = rtems_chain_next (node); } return NULL; } 40036e6c: d65f03c0 ret return NULL; 40036e70: d2800000 mov x0, #0x0 // #0 } 40036e74: d65f03c0 ret ... =============================================================================== 0000000040036810 : { 40036810: a9bb7bfd stp x29, x30, [sp, #-80]! 40036814: 910003fd mov x29, sp 40036818: a90153f3 stp x19, x20, [sp, #16] 4003681c: aa0003f3 mov x19, x0 if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO)) 40036820: d2c00400 mov x0, #0x2000000000 // #137438953472 { 40036824: a9025bf5 stp x21, x22, [sp, #32] 40036828: aa0103f5 mov x21, x1 4003682c: 12001c56 and w22, w2, #0xff if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO)) 40036830: 97ffd088 bl 4002aa50 40036834: 72001c1f tst w0, #0xff 40036838: 54000160 b.eq 40036864 // b.none <== ALWAYS TAKEN printf ("rtems-rfs: file-io: end: %s size=%zu\n", 4003683c: 710002df cmp w22, #0x0 <== NOT EXECUTED 40036840: 900000a1 adrp x1, 4004a000 <== NOT EXECUTED 40036844: 91392021 add x1, x1, #0xe48 <== NOT EXECUTED 40036848: d0000082 adrp x2, 40048000 <_Scheduler_Table+0x60> <== NOT EXECUTED 4003684c: 912bc042 add x2, x2, #0xaf0 <== NOT EXECUTED 40036850: 900000a0 adrp x0, 4004a000 <== NOT EXECUTED 40036854: 9a811041 csel x1, x2, x1, ne // ne = any <== NOT EXECUTED 40036858: 913c2000 add x0, x0, #0xf08 <== NOT EXECUTED 4003685c: aa1503e2 mov x2, x21 <== NOT EXECUTED 40036860: 97ffaeec bl 40022410 <__wrap_printf> <== NOT EXECUTED if (rtems_rfs_buffer_handle_has_block (&handle->buffer)) 40036864: f9400a61 ldr x1, [x19, #16] rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle), 40036868: f9401662 ldr x2, [x19, #40] 4003686c: f9406840 ldr x0, [x2, #208] if (rtems_rfs_buffer_handle_has_block (&handle->buffer)) 40036870: b4000f01 cbz x1, 40036a50 <== NEVER TAKEN rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle), 40036874: 91002261 add x1, x19, #0x8 if (!read) 40036878: 340008d6 cbz w22, 40036990 rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle), 4003687c: 97ffc285 bl 40027290 40036880: 2a0003f4 mov w20, w0 if (rc > 0) 40036884: 7100001f cmp w0, #0x0 40036888: 54000f2c b.gt 40036a6c <== NEVER TAKEN rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) 4003688c: f9401662 ldr x2, [x19, #40] 40036890: a90363f7 stp x23, x24, [sp, #48] 40036894: f9406840 ldr x0, [x2, #208] 40036898: f90023f9 str x25, [sp, #64] 4003689c: f9400803 ldr x3, [x0, #16] handle->bpos.boff += size; 400368a0: b9401e60 ldr w0, [x19, #28] 400368a4: 0b150001 add w1, w0, w21 400368a8: b9001e61 str w1, [x19, #28] if (handle->bpos.boff >= 400368ac: eb21407f cmp x3, w1, uxtw 400368b0: 540000a8 b.hi 400368c4 // b.pmore handle->bpos.bno++; 400368b4: b9401a60 ldr w0, [x19, #24] handle->bpos.boff -= rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)); 400368b8: 4b030021 sub w1, w1, w3 handle->bpos.bno++; 400368bc: 11000400 add w0, w0, #0x1 handle->bpos.boff -= rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)); 400368c0: 29030660 stp w0, w1, [x19, #24] mtime = !read; 400368c4: 520002c4 eor w4, w22, #0x1 length = false; 400368c8: 52800003 mov w3, #0x0 // #0 if (!read && 400368cc: 35000156 cbnz w22, 400368f4 rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle), 400368d0: b9401a61 ldr w1, [x19, #24] 400368d4: b9406840 ldr w0, [x2, #104] if (!read && 400368d8: 34000881 cbz w1, 400369e8 rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle), 400368dc: 35000860 cbnz w0, 400369e8 <== ALWAYS TAKEN 400368e0: b9401e60 ldr w0, [x19, #28] map->dirty = true; 400368e4: 52800021 mov w1, #0x1 // #1 length = true; 400368e8: 52800023 mov w3, #0x1 // #1 400368ec: 39016041 strb w1, [x2, #88] map->size.offset = offset; 400368f0: b9006c40 str w0, [x2, #108] atime = rtems_rfs_file_update_atime (handle); 400368f4: b9400261 ldr w1, [x19] if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO)) 400368f8: d2c00400 mov x0, #0x2000000000 // #137438953472 mtime = rtems_rfs_file_update_mtime (handle) && mtime; 400368fc: d27f0037 eor x23, x1, #0x2 length = rtems_rfs_file_update_length (handle) && length; 40036900: d27e0038 eor x24, x1, #0x4 atime = rtems_rfs_file_update_atime (handle); 40036904: 12000035 and w21, w1, #0x1 mtime = rtems_rfs_file_update_mtime (handle) && mtime; 40036908: d34106e1 ubfx x1, x23, #1, #1 length = rtems_rfs_file_update_length (handle) && length; 4003690c: 0a580878 and w24, w3, w24, lsr #2 mtime = rtems_rfs_file_update_mtime (handle) && mtime; 40036910: 0a010097 and w23, w4, w1 40036914: 520002b9 eor w25, w21, #0x1 if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO)) 40036918: 97ffd04e bl 4002aa50 4003691c: 72001c1f tst w0, #0xff 40036920: 540001e0 b.eq 4003695c // b.none <== ALWAYS TAKEN printf ("rtems-rfs: file-io: end: pos=%" PRIu32 ":%" PRIu32 " %c %c %c\n", 40036924: 710002bf cmp w21, #0x0 <== NOT EXECUTED 40036928: 528005a5 mov w5, #0x2d // #45 <== NOT EXECUTED 4003692c: 52800823 mov w3, #0x41 // #65 <== NOT EXECUTED 40036930: 1a850063 csel w3, w3, w5, eq // eq = none <== NOT EXECUTED 40036934: 29430a61 ldp w1, w2, [x19, #24] <== NOT EXECUTED 40036938: 710002ff cmp w23, #0x0 <== NOT EXECUTED 4003693c: 528009a4 mov w4, #0x4d // #77 <== NOT EXECUTED 40036940: 1a851084 csel w4, w4, w5, ne // ne = any <== NOT EXECUTED 40036944: 7100031f cmp w24, #0x0 <== NOT EXECUTED 40036948: 52800986 mov w6, #0x4c // #76 <== NOT EXECUTED 4003694c: 900000a0 adrp x0, 4004a000 <== NOT EXECUTED 40036950: 1a8510c5 csel w5, w6, w5, ne // ne = any <== NOT EXECUTED 40036954: 913de000 add x0, x0, #0xf78 <== NOT EXECUTED 40036958: 97ffaeae bl 40022410 <__wrap_printf> <== NOT EXECUTED if (atime || mtime) 4003695c: 2a170320 orr w0, w25, w23 40036960: 350005a0 cbnz w0, 40036a14 <== ALWAYS TAKEN if (length) 40036964: 34000698 cbz w24, 40036a34 <== ALWAYS TAKEN rtems_rfs_block_map_count (rtems_rfs_file_map (handle)); 40036968: f9401660 ldr x0, [x19, #40] handle->shared->size.offset = 4003696c: a94363f7 ldp x23, x24, [sp, #48] handle->shared->size.count = 40036970: f9403401 ldr x1, [x0, #104] 40036974: f94023f9 ldr x25, [sp, #64] 40036978: f9005c01 str x1, [x0, #184] } 4003697c: 2a1403e0 mov w0, w20 40036980: a94153f3 ldp x19, x20, [sp, #16] 40036984: a9425bf5 ldp x21, x22, [sp, #32] 40036988: a8c57bfd ldp x29, x30, [sp], #80 4003698c: d65f03c0 ret rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle)); 40036990: 52800022 mov w2, #0x1 // #1 40036994: 39002262 strb w2, [x19, #8] rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle), 40036998: 97ffc23e bl 40027290 4003699c: 2a0003f4 mov w20, w0 if (rc > 0) 400369a0: 7100001f cmp w0, #0x0 400369a4: 54fff74d b.le 4003688c <== ALWAYS TAKEN printf ( 400369a8: 900000b3 adrp x19, 4004a000 <== NOT EXECUTED 400369ac: 91392273 add x19, x19, #0xe48 <== NOT EXECUTED 400369b0: 2a1403e0 mov w0, w20 <== NOT EXECUTED 400369b4: 9400209a bl 4003ec1c <== NOT EXECUTED 400369b8: aa1503e2 mov x2, x21 <== NOT EXECUTED 400369bc: aa0003e4 mov x4, x0 <== NOT EXECUTED 400369c0: aa1303e1 mov x1, x19 <== NOT EXECUTED 400369c4: 2a1403e3 mov w3, w20 <== NOT EXECUTED 400369c8: 900000a0 adrp x0, 4004a000 <== NOT EXECUTED 400369cc: 913cc000 add x0, x0, #0xf30 <== NOT EXECUTED 400369d0: 97ffae90 bl 40022410 <__wrap_printf> <== NOT EXECUTED } 400369d4: 2a1403e0 mov w0, w20 <== NOT EXECUTED 400369d8: a94153f3 ldp x19, x20, [sp, #16] <== NOT EXECUTED 400369dc: a9425bf5 ldp x21, x22, [sp, #32] <== NOT EXECUTED 400369e0: a8c57bfd ldp x29, x30, [sp], #80 <== NOT EXECUTED 400369e4: d65f03c0 ret <== NOT EXECUTED rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle), 400369e8: 6b00003f cmp w1, w0 400369ec: 54fff7a2 b.cs 400368e0 // b.hs, b.nlast 400369f0: 51000400 sub w0, w0, #0x1 length = false; 400369f4: 52800003 mov w3, #0x0 // #0 rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle), 400369f8: 6b00003f cmp w1, w0 400369fc: 54fff7c1 b.ne 400368f4 // b.any <== NEVER TAKEN 40036a00: b9406c41 ldr w1, [x2, #108] 40036a04: b9401e60 ldr w0, [x19, #28] 40036a08: 6b01001f cmp w0, w1 40036a0c: 54fff749 b.ls 400368f4 // b.plast <== NEVER TAKEN 40036a10: 17ffffb5 b 400368e4 time_t now = time (NULL); 40036a14: d2800000 mov x0, #0x0 // #0 40036a18: 94002e7c bl 40042408