=============================================================================== 40005224 : #endif #include int IMFS_add_node( const char *path, IMFS_jnode_t *node, void *arg ) { 40005224: f9010113 addi sp,sp,-112 40005228: 06812423 sw s0,104(sp) 4000522c: 06912223 sw s1,100(sp) 40005230: 07212023 sw s2,96(sp) 40005234: 05312e23 sw s3,92(sp) 40005238: 05412c23 sw s4,88(sp) 4000523c: 06112623 sw ra,108(sp) rtems_filesystem_eval_path_context_t ctx; const rtems_filesystem_location_info_t *currentloc; int eval_flags; int rv; mode = node->st_mode; 40005240: 0145aa03 lw s4,20(a1) { 40005244: 00058493 mv s1,a1 40005248: 00050993 mv s3,a0 4000524c: 00060913 mv s2,a2 mode &= ~rtems_filesystem_umask; 40005250: b85ff0ef jal ra,40004dd4 40005254: 00852403 lw s0,8(a0) switch (mode & S_IFMT) { 40005258: 0000f6b7 lui a3,0xf 4000525c: 000067b7 lui a5,0x6 mode &= ~rtems_filesystem_umask; 40005260: fff44413 not s0,s0 40005264: 01447433 and s0,s0,s4 switch (mode & S_IFMT) { 40005268: 00d476b3 and a3,s0,a3 4000526c: 06f68063 beq a3,a5,400052cc 40005270: 04d7f463 bgeu a5,a3,400052b8 40005274: 0000b737 lui a4,0xb <== NOT EXECUTED 40005278: 00e47733 and a4,s0,a4 <== NOT EXECUTED 4000527c: 000087b7 lui a5,0x8 <== NOT EXECUTED 40005280: 04f70663 beq a4,a5,400052cc <== NOT EXECUTED case S_IFIFO: case S_IFREG: case S_IFSOCK: break; default: errno = EINVAL; 40005284: 4440f0ef jal ra,400146c8 <__errno> 40005288: 01600793 li a5,22 4000528c: 00f52023 sw a5,0(a0) return -1; 40005290: fff00413 li s0,-1 rv = -1; } rtems_filesystem_eval_path_cleanup( &ctx ); return rv; } 40005294: 06c12083 lw ra,108(sp) 40005298: 00040513 mv a0,s0 4000529c: 06812403 lw s0,104(sp) 400052a0: 06412483 lw s1,100(sp) 400052a4: 06012903 lw s2,96(sp) 400052a8: 05c12983 lw s3,92(sp) 400052ac: 05812a03 lw s4,88(sp) 400052b0: 07010113 addi sp,sp,112 400052b4: 00008067 ret switch (mode & S_IFMT) { 400052b8: fffff737 lui a4,0xfffff 400052bc: 00e686b3 add a3,a3,a4 400052c0: fff70713 addi a4,a4,-1 # ffffefff 400052c4: 00e6f6b3 and a3,a3,a4 400052c8: fa069ee3 bnez a3,40005284 currentloc = rtems_filesystem_eval_path_start( &ctx, path, eval_flags ); 400052cc: 01800613 li a2,24 400052d0: 00098593 mv a1,s3 400052d4: 01810513 addi a0,sp,24 400052d8: fc1fe0ef jal ra,40004298 return loc->mt_entry->ops->clonenod_h == IMFS_node_clone; 400052dc: 01452703 lw a4,20(a0) if ( IMFS_is_imfs_instance( currentloc ) ) { 400052e0: 400077b7 lui a5,0x40007 400052e4: 91078793 addi a5,a5,-1776 # 40006910 400052e8: 00c72703 lw a4,12(a4) 400052ec: 02472703 lw a4,36(a4) 400052f0: 02f70063 beq a4,a5,40005310 rtems_filesystem_eval_path_error( &ctx, ENOTSUP ); 400052f4: 08600593 li a1,134 400052f8: 01810513 addi a0,sp,24 400052fc: 944ff0ef jal ra,40004440 rv = -1; 40005300: fff00413 li s0,-1 rtems_filesystem_eval_path_cleanup( &ctx ); 40005304: 01810513 addi a0,sp,24 40005308: 9b0ff0ef jal ra,400044b8 return rv; 4000530c: f89ff06f j 40005294 rtems_filesystem_eval_path_set_path( &ctx, node->name, node->namelen ); 40005310: 0104d783 lhu a5,16(s1) ctx->path = path; 40005314: 00c4a703 lw a4,12(s1) ctx->flags = flags; 40005318: 06000693 li a3,96 rtems_filesystem_eval_path_continue( &ctx ); 4000531c: 01810513 addi a0,sp,24 ctx->pathlen = pathlen; 40005320: 00f12e23 sw a5,28(sp) ctx->flags = flags; 40005324: 02d12423 sw a3,40(sp) ctx->path = path; 40005328: 00e12c23 sw a4,24(sp) 4000532c: d41fe0ef jal ra,4000406c return ctx->token; 40005330: 02012783 lw a5,32(sp) if ( rtems_filesystem_eval_path_get_token( &ctx ) == node->name ) { 40005334: 00c4a603 lw a2,12(s1) 40005338: 00f60e63 beq a2,a5,40005354 if ( rtems_filesystem_eval_path_get_token( &ctx ) != NULL ) { 4000533c: fc0782e3 beqz a5,40005300 <== NEVER TAKEN rtems_filesystem_eval_path_error( &ctx, EINVAL ); 40005340: 01600593 li a1,22 40005344: 01810513 addi a0,sp,24 40005348: 8f8ff0ef jal ra,40004440 rv = -1; 4000534c: fff00413 li s0,-1 40005350: fb5ff06f j 40005304 node = IMFS_initialize_node( 40005354: 0104d683 lhu a3,16(s1) 40005358: 0384a583 lw a1,56(s1) 4000535c: 00090793 mv a5,s2 40005360: 00040713 mv a4,s0 40005364: 00048513 mv a0,s1 40005368: 4e0010ef jal ra,40006848 4000536c: 00050793 mv a5,a0 if ( node != NULL ) { 40005370: f80508e3 beqz a0,40005300 parent = currentloc->node_access; 40005374: 03812483 lw s1,56(sp) _Timecounter_Getbintime( &now ); 40005378: 00810513 addi a0,sp,8 rv = 0; 4000537c: 00000413 li s0,0 old_last = tail->previous; 40005380: 0484a703 lw a4,72(s1) return &the_chain->Tail.Node; 40005384: 04448693 addi a3,s1,68 entry_node->Parent = dir_node; 40005388: 0097a423 sw s1,8(a5) the_node->next = tail; 4000538c: 00d7a023 sw a3,0(a5) tail->previous = the_node; 40005390: 04f4a423 sw a5,72(s1) old_last->next = the_node; 40005394: 00f72023 sw a5,0(a4) the_node->previous = old_last; 40005398: 00e7a223 sw a4,4(a5) _Timecounter_Getbintime( &now ); 4000539c: 5e0030ef jal ra,4000897c <_Timecounter_Getbintime> return now.sec; 400053a0: 00812703 lw a4,8(sp) 400053a4: 00c12783 lw a5,12(sp) jnode->stat_mtime = now; 400053a8: 02e4a423 sw a4,40(s1) 400053ac: 02f4a623 sw a5,44(s1) jnode->stat_ctime = now; 400053b0: 02e4a823 sw a4,48(s1) 400053b4: 02f4aa23 sw a5,52(s1) } 400053b8: f4dff06f j 40005304 =============================================================================== 40006964 : void IMFS_do_nothing_destroy( IMFS_jnode_t *node ) { (void) node; } 40006964: 00008067 ret <== NOT EXECUTED =============================================================================== 400057e4 : .eval_token = IMFS_eval_token }; void IMFS_eval_path( rtems_filesystem_eval_path_context_t *ctx ) { rtems_filesystem_eval_path_generic( ctx, NULL, &IMFS_eval_config ); 400057e4: 8a818613 addi a2,gp,-1880 # 40020ce8 400057e8: 00000593 li a1,0 400057ec: 6600906f j 4000ee4c =============================================================================== 400019bc : return NULL; } void IMFS_eval_path_devfs( rtems_filesystem_eval_path_context_t *ctx ) { 400019bc: fe010113 addi sp,sp,-32 400019c0: 01212823 sw s2,16(sp) return ctx->pathlen; 400019c4: 00452903 lw s2,4(a0) 400019c8: 00912a23 sw s1,20(sp) 400019cc: 4000c4b7 lui s1,0x4000c 400019d0: 94048493 addi s1,s1,-1728 # 4000b940 400019d4: 00812c23 sw s0,24(sp) 400019d8: 01312623 sw s3,12(sp) 400019dc: 01412423 sw s4,8(sp) 400019e0: 01512223 sw s5,4(sp) 400019e4: 00112e23 sw ra,28(sp) 400019e8: 00100793 li a5,1 400019ec: 00148413 addi s0,s1,1 rtems_filesystem_location_info_t *currentloc; IMFS_directory_t *dir; IMFS_jnode_t *entry; currentloc = rtems_filesystem_eval_path_get_currentloc( ctx ); dir = currentloc->node_access; 400019f0: 02052a83 lw s5,32(a0) return ctx->path; 400019f4: 00052a03 lw s4,0(a0) { 400019f8: 00050993 mv s3,a0 match = IMFS_devfs_dirs[ i ].len == pathlen 400019fc: 01148493 addi s1,s1,17 && memcmp( IMFS_devfs_dirs[ i ].name, path, pathlen ) == 0; 40001a00: 00f90a63 beq s2,a5,40001a14 for ( i = 0; i < RTEMS_ARRAY_SIZE( IMFS_devfs_dirs ); ++i ) { 40001a04: 00440413 addi s0,s0,4 40001a08: 04848e63 beq s1,s0,40001a64 match = IMFS_devfs_dirs[ i ].len == pathlen 40001a0c: fff44783 lbu a5,-1(s0) && memcmp( IMFS_devfs_dirs[ i ].name, path, pathlen ) == 0; 40001a10: fef91ae3 bne s2,a5,40001a04 40001a14: 00090613 mv a2,s2 40001a18: 000a0593 mv a1,s4 40001a1c: 00040513 mv a0,s0 40001a20: 040090ef jal ra,4000aa60 40001a24: fe0510e3 bnez a0,40001a04 <== NEVER TAKEN eval_flags &= ~RTEMS_FS_EXCLUSIVE; 40001a28: 0109a783 lw a5,16(s3) ctx->pathlen = 0; 40001a2c: 0009a223 sw zero,4(s3) 40001a30: 00000913 li s2,0 40001a34: fbf7f793 andi a5,a5,-65 ctx->flags = flags; 40001a38: 00f9a823 sw a5,16(s3) entry = IMFS_devfs_is_dir( ctx, dir ); if ( entry != NULL ) { 40001a3c: 020a8463 beqz s5,40001a64 <== NEVER TAKEN rtems_filesystem_eval_path_get_path( ctx ), rtems_filesystem_eval_path_get_pathlen( ctx ) ); rtems_filesystem_eval_path_clear_path( ctx ); } } 40001a40: 01c12083 lw ra,28(sp) 40001a44: 01812403 lw s0,24(sp) 40001a48: 01412483 lw s1,20(sp) 40001a4c: 01012903 lw s2,16(sp) 40001a50: 00c12983 lw s3,12(sp) 40001a54: 00812a03 lw s4,8(sp) 40001a58: 00412a83 lw s5,4(sp) 40001a5c: 02010113 addi sp,sp,32 40001a60: 00008067 ret return _Chain_Immutable_head( the_chain )->next; 40001a64: 040aa403 lw s0,64(s5) return &the_chain->Tail.Node; 40001a68: 044a8493 addi s1,s5,68 while ( current != tail ) { 40001a6c: 00941863 bne s0,s1,40001a7c 40001a70: 0980006f j 40001b08 <== NOT EXECUTED return the_node->next; 40001a74: 00042403 lw s0,0(s0) 40001a78: 08848863 beq s1,s0,40001b08 match = entry->namelen == pathlen 40001a7c: 01045783 lhu a5,16(s0) && memcmp( entry->name, path, pathlen ) == 0; 40001a80: ff279ae3 bne a5,s2,40001a74 40001a84: 00c42503 lw a0,12(s0) 40001a88: 00090613 mv a2,s2 40001a8c: 000a0593 mv a1,s4 40001a90: 7d1080ef jal ra,4000aa60 40001a94: fe0510e3 bnez a0,40001a74 if ( ( eval_flags & RTEMS_FS_EXCLUSIVE ) == 0 ) { 40001a98: 0109a783 lw a5,16(s3) 40001a9c: 0407f793 andi a5,a5,64 40001aa0: 02079e63 bnez a5,40001adc <== NEVER TAKEN --dir->Node.reference_count; 40001aa4: 018ad783 lhu a5,24(s5) loc->handlers = node->control->handlers; 40001aa8: 03842703 lw a4,56(s0) currentloc->node_access_2 = IMFS_generic_get_context_by_node( entry ); 40001aac: 04042683 lw a3,64(s0) --dir->Node.reference_count; 40001ab0: fff78793 addi a5,a5,-1 40001ab4: 00fa9c23 sh a5,24(s5) ++entry->reference_count; 40001ab8: 01845783 lhu a5,24(s0) 40001abc: 00072703 lw a4,0(a4) 40001ac0: 00178793 addi a5,a5,1 40001ac4: 00f41c23 sh a5,24(s0) currentloc->node_access = entry; 40001ac8: 0289a023 sw s0,32(s3) currentloc->node_access_2 = IMFS_generic_get_context_by_node( entry ); 40001acc: 02d9a223 sw a3,36(s3) 40001ad0: 02e9a423 sw a4,40(s3) ctx->pathlen = 0; 40001ad4: 0009a223 sw zero,4(s3) } 40001ad8: f69ff06f j 40001a40 } 40001adc: 01812403 lw s0,24(sp) <== NOT EXECUTED 40001ae0: 01c12083 lw ra,28(sp) <== NOT EXECUTED 40001ae4: 01412483 lw s1,20(sp) <== NOT EXECUTED 40001ae8: 01012903 lw s2,16(sp) <== NOT EXECUTED 40001aec: 00812a03 lw s4,8(sp) <== NOT EXECUTED 40001af0: 00412a83 lw s5,4(sp) <== NOT EXECUTED rtems_filesystem_eval_path_error( ctx, EEXIST ); 40001af4: 00098513 mv a0,s3 <== NOT EXECUTED } 40001af8: 00c12983 lw s3,12(sp) <== NOT EXECUTED rtems_filesystem_eval_path_error( ctx, EEXIST ); 40001afc: 01100593 li a1,17 <== NOT EXECUTED } 40001b00: 02010113 addi sp,sp,32 <== NOT EXECUTED rtems_filesystem_eval_path_error( ctx, EEXIST ); 40001b04: a10ff06f j 40000d14 <== NOT EXECUTED ctx->token = token; 40001b08: 0149a423 sw s4,8(s3) ctx->tokenlen = tokenlen; 40001b0c: 0129a623 sw s2,12(s3) ctx->pathlen = 0; 40001b10: 0009a223 sw zero,4(s3) } 40001b14: f2dff06f j 40001a40 =============================================================================== 40006d28 : /* * Traverse tree that starts at the mt_fs_root and deallocate memory * associated memory space */ loc = temp_mt_entry->mt_fs_root->location; 40006d28: 02452783 lw a5,36(a0) { 40006d2c: fc010113 addi sp,sp,-64 40006d30: 02812c23 sw s0,56(sp) loc = temp_mt_entry->mt_fs_root->location; 40006d34: 0087a703 lw a4,8(a5) 40006d38: 0007a803 lw a6,0(a5) 40006d3c: 0047a503 lw a0,4(a5) jnode = (IMFS_jnode_t *)loc.node_access; 40006d40: 00070413 mv s0,a4 loc = temp_mt_entry->mt_fs_root->location; 40006d44: 00c7a583 lw a1,12(a5) 40006d48: 0107a603 lw a2,16(a5) 40006d4c: 0147a683 lw a3,20(a5) return S_ISDIR( node->st_mode ); 40006d50: 01472783 lw a5,20(a4) 40006d54: 00e12823 sw a4,16(sp) loc->handlers = node->control->handlers; 40006d58: 03842703 lw a4,56(s0) { 40006d5c: 03312623 sw s3,44(sp) loc = temp_mt_entry->mt_fs_root->location; 40006d60: 00c12c23 sw a2,24(sp) 40006d64: 00072703 lw a4,0(a4) return S_ISDIR( node->st_mode ); 40006d68: 0000f9b7 lui s3,0xf { 40006d6c: 02912a23 sw s1,52(sp) 40006d70: 03212823 sw s2,48(sp) do { next = jnode->Parent; 40006d74: 00842483 lw s1,8(s0) { 40006d78: 02112e23 sw ra,60(sp) loc.node_access = (void *)jnode; IMFS_Set_handlers( &loc ); if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) { 40006d7c: 00004937 lui s2,0x4 loc = temp_mt_entry->mt_fs_root->location; 40006d80: 01012423 sw a6,8(sp) 40006d84: 00a12623 sw a0,12(sp) 40006d88: 00b12a23 sw a1,20(sp) 40006d8c: 00d12e23 sw a3,28(sp) 40006d90: 0137f7b3 and a5,a5,s3 loc.node_access = (void *)jnode; 40006d94: 00812823 sw s0,16(sp) loc->handlers = node->control->handlers; 40006d98: 00e12c23 sw a4,24(sp) if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) { 40006d9c: 03279e63 bne a5,s2,40006dd8 return _Chain_Immutable_head( the_chain )->next; 40006da0: 04042703 lw a4,64(s0) return &the_chain->Tail.Node; 40006da4: 04440793 addi a5,s0,68 40006da8: 02f70863 beq a4,a5,40006dd8 if ( IMFS_is_directory( jnode ) ) { if ( jnode_has_children( jnode ) ) jnode = jnode_get_first_child( jnode ); } } } while (jnode != NULL); 40006dac: 06070463 beqz a4,40006e14 <== NEVER TAKEN return S_ISDIR( node->st_mode ); 40006db0: 01472783 lw a5,20(a4) 40006db4: 00070493 mv s1,a4 40006db8: 00048413 mv s0,s1 loc->handlers = node->control->handlers; 40006dbc: 03842703 lw a4,56(s0) next = jnode->Parent; 40006dc0: 00842483 lw s1,8(s0) return S_ISDIR( node->st_mode ); 40006dc4: 0137f7b3 and a5,a5,s3 loc->handlers = node->control->handlers; 40006dc8: 00072703 lw a4,0(a4) loc.node_access = (void *)jnode; 40006dcc: 00812823 sw s0,16(sp) 40006dd0: 00e12c23 sw a4,24(sp) if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) { 40006dd4: fd2786e3 beq a5,s2,40006da0 result = IMFS_rmnod( NULL, &loc ); 40006dd8: 00810593 addi a1,sp,8 40006ddc: 00000513 li a0,0 40006de0: ce9fc0ef jal ra,40003ac8 if ( result != 0 ) 40006de4: 04051663 bnez a0,40006e30 <== NEVER TAKEN IMFS_node_destroy( jnode ); 40006de8: 00040513 mv a0,s0 40006dec: b01fc0ef jal ra,400038ec if ( jnode != NULL ) { 40006df0: 02048263 beqz s1,40006e14 return S_ISDIR( node->st_mode ); 40006df4: 0144a783 lw a5,20(s1) 40006df8: 0137f733 and a4,a5,s3 if ( IMFS_is_directory( jnode ) ) { 40006dfc: fb271ee3 bne a4,s2,40006db8 return _Chain_Immutable_head( the_chain )->next; 40006e00: 0404a703 lw a4,64(s1) return &the_chain->Tail.Node; 40006e04: 04448693 addi a3,s1,68 if ( jnode_has_children( jnode ) ) 40006e08: fad712e3 bne a4,a3,40006dac 40006e0c: 00048413 mv s0,s1 40006e10: fadff06f j 40006dbc } 40006e14: 03c12083 lw ra,60(sp) 40006e18: 03812403 lw s0,56(sp) 40006e1c: 03412483 lw s1,52(sp) 40006e20: 03012903 lw s2,48(sp) 40006e24: 02c12983 lw s3,44(sp) 40006e28: 04010113 addi sp,sp,64 40006e2c: 00008067 ret rtems_fatal_error_occurred( 0xdeadbeef ); 40006e30: deadc537 lui a0,0xdeadc <== NOT EXECUTED 40006e34: eef50513 addi a0,a0,-273 # deadbeef <== NOT EXECUTED 40006e38: 8b4fd0ef jal ra,40003eec <== NOT EXECUTED =============================================================================== 400064b0 : { 400064b0: fd010113 addi sp,sp,-48 <== NOT EXECUTED 400064b4: 01412c23 sw s4,24(sp) <== NOT EXECUTED 400064b8: 00050a13 mv s4,a0 <== NOT EXECUTED if ( last_byte > memfile->File.size ) { 400064bc: 04052503 lw a0,64(a0) <== NOT EXECUTED { 400064c0: 02912223 sw s1,36(sp) <== NOT EXECUTED 400064c4: 03212023 sw s2,32(sp) <== NOT EXECUTED 400064c8: 01312e23 sw s3,28(sp) <== NOT EXECUTED 400064cc: 01512a23 sw s5,20(sp) <== NOT EXECUTED 400064d0: 02112623 sw ra,44(sp) <== NOT EXECUTED 400064d4: 02812423 sw s0,40(sp) <== NOT EXECUTED 400064d8: 01612823 sw s6,16(sp) <== NOT EXECUTED last_byte = start + my_length; 400064dc: 00b707b3 add a5,a4,a1 <== NOT EXECUTED { 400064e0: 00058993 mv s3,a1 <== NOT EXECUTED 400064e4: 00070493 mv s1,a4 <== NOT EXECUTED 400064e8: 00060a93 mv s5,a2 <== NOT EXECUTED 400064ec: 00068913 mv s2,a3 <== NOT EXECUTED if ( last_byte > memfile->File.size ) { 400064f0: 14f56263 bltu a0,a5,40006634 <== NOT EXECUTED start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 400064f4: 88c1a403 lw s0,-1908(gp) # 40020ccc <== NOT EXECUTED 400064f8: 00098513 mv a0,s3 <== NOT EXECUTED 400064fc: 000a8593 mv a1,s5 <== NOT EXECUTED 40006500: 41f45b13 srai s6,s0,0x1f <== NOT EXECUTED 40006504: 000b0693 mv a3,s6 <== NOT EXECUTED 40006508: 00040613 mv a2,s0 <== NOT EXECUTED 4000650c: 0080d0ef jal ra,40013514 <__moddi3> <== NOT EXECUTED 40006510: 00050793 mv a5,a0 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 40006514: 000b0693 mv a3,s6 <== NOT EXECUTED 40006518: 00098513 mv a0,s3 <== NOT EXECUTED 4000651c: 000a8593 mv a1,s5 <== NOT EXECUTED 40006520: 00040613 mv a2,s0 <== NOT EXECUTED start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 40006524: 00078a93 mv s5,a5 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 40006528: 3010c0ef jal ra,40013028 <__divdi3> <== NOT EXECUTED 4000652c: 00050993 mv s3,a0 <== NOT EXECUTED copied = 0; 40006530: 00000b13 li s6,0 <== NOT EXECUTED if ( start_offset ) { 40006534: 0a0a9c63 bnez s5,400065ec <== NOT EXECUTED while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 40006538: 0284ee63 bltu s1,s0,40006574 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 ); 4000653c: 00098593 mv a1,s3 <== NOT EXECUTED 40006540: 00000613 li a2,0 <== NOT EXECUTED 40006544: 000a0513 mv a0,s4 <== NOT EXECUTED 40006548: 895ff0ef jal ra,40005ddc <== NOT EXECUTED memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 4000654c: 00090593 mv a1,s2 <== NOT EXECUTED 40006550: 00040613 mv a2,s0 <== NOT EXECUTED my_length -= to_copy; 40006554: 408484b3 sub s1,s1,s0 <== NOT EXECUTED if ( !block_ptr ) 40006558: 06050463 beqz a0,400065c0 <== NOT EXECUTED memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 4000655c: 00052503 lw a0,0(a0) <== NOT EXECUTED src += to_copy; 40006560: 00890933 add s2,s2,s0 <== NOT EXECUTED block++; 40006564: 00198993 addi s3,s3,1 <== NOT EXECUTED memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 40006568: 6f00e0ef jal ra,40014c58 <== NOT EXECUTED copied += to_copy; 4000656c: 008b0b33 add s6,s6,s0 <== NOT EXECUTED while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 40006570: fc84f6e3 bgeu s1,s0,4000653c <== NOT EXECUTED if ( my_length ) { 40006574: 02048663 beqz s1,400065a0 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 ); 40006578: 00000613 li a2,0 <== NOT EXECUTED 4000657c: 00098593 mv a1,s3 <== NOT EXECUTED 40006580: 000a0513 mv a0,s4 <== NOT EXECUTED 40006584: 859ff0ef jal ra,40005ddc <== NOT EXECUTED if ( !block_ptr ) 40006588: 02050c63 beqz a0,400065c0 <== NOT EXECUTED memcpy( &(*block_ptr)[ 0 ], src, my_length ); 4000658c: 00052503 lw a0,0(a0) <== NOT EXECUTED 40006590: 00048613 mv a2,s1 <== NOT EXECUTED 40006594: 00090593 mv a1,s2 <== NOT EXECUTED 40006598: 6c00e0ef jal ra,40014c58 <== NOT EXECUTED copied += to_copy; 4000659c: 009b0b33 add s6,s6,s1 <== NOT EXECUTED _Timecounter_Getbintime( &now ); 400065a0: 00010513 mv a0,sp <== NOT EXECUTED 400065a4: 3d8020ef jal ra,4000897c <_Timecounter_Getbintime> <== NOT EXECUTED return now.sec; 400065a8: 00012703 lw a4,0(sp) <== NOT EXECUTED 400065ac: 00412783 lw a5,4(sp) <== NOT EXECUTED jnode->stat_mtime = now; 400065b0: 02ea2423 sw a4,40(s4) <== NOT EXECUTED 400065b4: 02fa2623 sw a5,44(s4) <== NOT EXECUTED jnode->stat_ctime = now; 400065b8: 02ea2823 sw a4,48(s4) <== NOT EXECUTED 400065bc: 02fa2a23 sw a5,52(s4) <== NOT EXECUTED } 400065c0: 02c12083 lw ra,44(sp) <== NOT EXECUTED 400065c4: 02812403 lw s0,40(sp) <== NOT EXECUTED 400065c8: 02412483 lw s1,36(sp) <== NOT EXECUTED 400065cc: 02012903 lw s2,32(sp) <== NOT EXECUTED 400065d0: 01c12983 lw s3,28(sp) <== NOT EXECUTED 400065d4: 01812a03 lw s4,24(sp) <== NOT EXECUTED 400065d8: 01412a83 lw s5,20(sp) <== NOT EXECUTED 400065dc: 000b0513 mv a0,s6 <== NOT EXECUTED 400065e0: 01012b03 lw s6,16(sp) <== NOT EXECUTED 400065e4: 03010113 addi sp,sp,48 <== NOT EXECUTED 400065e8: 00008067 ret <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 ); 400065ec: 00050593 mv a1,a0 <== NOT EXECUTED 400065f0: 00000613 li a2,0 <== NOT EXECUTED 400065f4: 000a0513 mv a0,s4 <== NOT EXECUTED 400065f8: fe4ff0ef jal ra,40005ddc <== NOT EXECUTED return copied; 400065fc: 00000b13 li s6,0 <== NOT EXECUTED if ( !block_ptr ) 40006600: fc0500e3 beqz a0,400065c0 <== NOT EXECUTED to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset; 40006604: 415407b3 sub a5,s0,s5 <== NOT EXECUTED 40006608: 00048b13 mv s6,s1 <== NOT EXECUTED 4000660c: 0697ec63 bltu a5,s1,40006684 <== NOT EXECUTED memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 40006610: 00052503 lw a0,0(a0) <== NOT EXECUTED 40006614: 00090593 mv a1,s2 <== NOT EXECUTED 40006618: 000b0613 mv a2,s6 <== NOT EXECUTED 4000661c: 01550533 add a0,a0,s5 <== NOT EXECUTED 40006620: 6380e0ef jal ra,40014c58 <== NOT EXECUTED src += to_copy; 40006624: 01690933 add s2,s2,s6 <== NOT EXECUTED block++; 40006628: 00198993 addi s3,s3,1 <== NOT EXECUTED my_length -= to_copy; 4000662c: 416484b3 sub s1,s1,s6 <== NOT EXECUTED while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 40006630: f09ff06f j 40006538 <== NOT EXECUTED bool zero_fill = start > memfile->File.size; 40006634: 00100593 li a1,1 <== NOT EXECUTED 40006638: 02c05263 blez a2,4000665c <== NOT EXECUTED status = IMFS_memfile_extend( memfile, zero_fill, last_byte ); 4000663c: 00078613 mv a2,a5 <== NOT EXECUTED 40006640: 00000693 li a3,0 <== NOT EXECUTED 40006644: 0015f593 andi a1,a1,1 <== NOT EXECUTED 40006648: 000a0513 mv a0,s4 <== NOT EXECUTED 4000664c: a31ff0ef jal ra,4000607c <== NOT EXECUTED 40006650: 00050b13 mv s6,a0 <== NOT EXECUTED if ( status ) 40006654: ea0500e3 beqz a0,400064f4 <== NOT EXECUTED 40006658: f69ff06f j 400065c0 <== NOT EXECUTED bool zero_fill = start > memfile->File.size; 4000665c: 02060863 beqz a2,4000668c <== NOT EXECUTED 40006660: 00000593 li a1,0 <== NOT EXECUTED status = IMFS_memfile_extend( memfile, zero_fill, last_byte ); 40006664: 00078613 mv a2,a5 <== NOT EXECUTED 40006668: 00000693 li a3,0 <== NOT EXECUTED 4000666c: 0015f593 andi a1,a1,1 <== NOT EXECUTED 40006670: 000a0513 mv a0,s4 <== NOT EXECUTED 40006674: a09ff0ef jal ra,4000607c <== NOT EXECUTED 40006678: 00050b13 mv s6,a0 <== NOT EXECUTED if ( status ) 4000667c: e6050ce3 beqz a0,400064f4 <== NOT EXECUTED 40006680: f41ff06f j 400065c0 <== NOT EXECUTED 40006684: 00078b13 mv s6,a5 <== NOT EXECUTED 40006688: f89ff06f j 40006610 <== NOT EXECUTED bool zero_fill = start > memfile->File.size; 4000668c: fb3568e3 bltu a0,s3,4000663c <== NOT EXECUTED 40006690: fd1ff06f j 40006660 <== NOT EXECUTED =============================================================================== 400067e0 : #include int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) { int rv = 0; IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 400067e0: 02052783 lw a5,32(a0) { 400067e4: ff010113 addi sp,sp,-16 400067e8: 00112623 sw ra,12(sp) IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 400067ec: 0087a703 lw a4,8(a5) # f008 return S_ISDIR( node->st_mode ); 400067f0: 0000f7b7 lui a5,0xf if ( IMFS_is_directory( node ) ) { 400067f4: 000046b7 lui a3,0x4 400067f8: 01472603 lw a2,20(a4) 400067fc: 00c7f7b3 and a5,a5,a2 40006800: 02d79a63 bne a5,a3,40006834 IMFS_directory_t *dir = (IMFS_directory_t *) node; if ( dir->mt_fs == NULL ) { 40006804: 04c72783 lw a5,76(a4) 40006808: 00079c63 bnez a5,40006820 <== NEVER TAKEN dir->mt_fs = mt_entry; 4000680c: 04a72623 sw a0,76(a4) int rv = 0; 40006810: 00000513 li a0,0 errno = ENOTDIR; rv = -1; } return rv; } 40006814: 00c12083 lw ra,12(sp) 40006818: 01010113 addi sp,sp,16 4000681c: 00008067 ret errno = EBUSY; 40006820: 6a90d0ef jal ra,400146c8 <__errno> <== NOT EXECUTED 40006824: 01000793 li a5,16 <== NOT EXECUTED 40006828: 00f52023 sw a5,0(a0) <== NOT EXECUTED rv = -1; 4000682c: fff00513 li a0,-1 <== NOT EXECUTED 40006830: fe5ff06f j 40006814 <== NOT EXECUTED errno = ENOTDIR; 40006834: 6950d0ef jal ra,400146c8 <__errno> 40006838: 01400793 li a5,20 4000683c: 00f52023 sw a5,0(a0) rv = -1; 40006840: fff00513 li a0,-1 return rv; 40006844: fd1ff06f j 40006814 =============================================================================== 40006928 : void IMFS_node_destroy( IMFS_jnode_t *node ) { IMFS_assert( node->reference_count == 0 ); (*node->control->node_destroy)( node ); 40006928: 03852783 lw a5,56(a0) <== NOT EXECUTED 4000692c: 00c7a783 lw a5,12(a5) <== NOT EXECUTED 40006930: 00078067 jr a5 <== NOT EXECUTED =============================================================================== 4000f3a4 : IMFS_jnode_t *IMFS_node_remove_directory( IMFS_jnode_t *node ) { IMFS_directory_t *dir = (IMFS_directory_t *) node; if ( !rtems_chain_is_empty( &dir->Entries ) ) { 4000f3a4: 04052703 lw a4,64(a0) { 4000f3a8: ff010113 addi sp,sp,-16 4000f3ac: 00112623 sw ra,12(sp) return &the_chain->Tail.Node; 4000f3b0: 04450793 addi a5,a0,68 if ( !rtems_chain_is_empty( &dir->Entries ) ) { 4000f3b4: 02f70063 beq a4,a5,4000f3d4 errno = ENOTEMPTY; 4000f3b8: 310050ef jal ra,400146c8 <__errno> 4000f3bc: 05a00793 li a5,90 4000f3c0: 00f52023 sw a5,0(a0) dir = NULL; 4000f3c4: 00000513 li a0,0 errno = EBUSY; dir = NULL; } return &dir->Node; } 4000f3c8: 00c12083 lw ra,12(sp) 4000f3cc: 01010113 addi sp,sp,16 4000f3d0: 00008067 ret } else if ( IMFS_is_mount_point( dir ) ) { 4000f3d4: 04c52783 lw a5,76(a0) 4000f3d8: fe0788e3 beqz a5,4000f3c8 <== ALWAYS TAKEN errno = EBUSY; 4000f3dc: 2ec050ef jal ra,400146c8 <__errno> <== NOT EXECUTED } 4000f3e0: 00c12083 lw ra,12(sp) <== NOT EXECUTED errno = EBUSY; 4000f3e4: 01000793 li a5,16 <== NOT EXECUTED 4000f3e8: 00f52023 sw a5,0(a0) <== NOT EXECUTED dir = NULL; 4000f3ec: 00000513 li a0,0 <== NOT EXECUTED } 4000f3f0: 01010113 addi sp,sp,16 <== NOT EXECUTED 4000f3f4: 00008067 ret <== NOT EXECUTED =============================================================================== 40006d14 : sym_link = loc->node_access; 40006d14: 00852683 lw a3,8(a0) for( i=0; ((iname[i] != '\0')); i++ ) 40006d18: 00000513 li a0,0 40006d1c: 00061a63 bnez a2,40006d30 <== ALWAYS TAKEN 40006d20: 0280006f j 40006d48 <== NOT EXECUTED buf[i] = sym_link->name[i]; 40006d24: 00f70023 sb a5,0(a4) for( i=0; ((iname[i] != '\0')); i++ ) 40006d28: 00150513 addi a0,a0,1 40006d2c: 00c50e63 beq a0,a2,40006d48 40006d30: 0406a783 lw a5,64(a3) buf[i] = sym_link->name[i]; 40006d34: 00a58733 add a4,a1,a0 for( i=0; ((iname[i] != '\0')); i++ ) 40006d38: 00a787b3 add a5,a5,a0 40006d3c: 0007c783 lbu a5,0(a5) 40006d40: fe0792e3 bnez a5,40006d24 40006d44: 00008067 ret } 40006d48: 00008067 ret =============================================================================== 400069a8 : const rtems_filesystem_location_info_t *oldloc, const rtems_filesystem_location_info_t *newparentloc, const char *name, size_t namelen ) { 400069a8: fd010113 addi sp,sp,-48 400069ac: 02812423 sw s0,40(sp) /* * FIXME: Due to insufficient checks we can create inaccessible nodes with * this operation. */ node = oldloc->node_access; 400069b0: 0085a403 lw s0,8(a1) { 400069b4: 01312e23 sw s3,28(sp) 400069b8: 02112623 sw ra,44(sp) new_parent = newparentloc->node_access; if ( node->Parent == NULL ) { 400069bc: 00842783 lw a5,8(s0) { 400069c0: 02912223 sw s1,36(sp) 400069c4: 03212023 sw s2,32(sp) 400069c8: 01412c23 sw s4,24(sp) 400069cc: 01512a23 sw s5,20(sp) new_parent = newparentloc->node_access; 400069d0: 00862983 lw s3,8(a2) # 1008 <_ISR_Stack_size+0x8> if ( node->Parent == NULL ) { 400069d4: 10078663 beqz a5,40006ae0 <== NEVER TAKEN rtems_set_errno_and_return_minus_one( EINVAL ); } if ( namelen >= IMFS_NAME_MAX ) { 400069d8: 0fe00793 li a5,254 400069dc: 00070913 mv s2,a4 400069e0: 0ee7e663 bltu a5,a4,40006acc rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); } control = malloc( sizeof( *control ) + namelen ); 400069e4: 01470513 addi a0,a4,20 400069e8: 00068a13 mv s4,a3 400069ec: e18fc0ef jal ra,40003004 400069f0: 00050493 mv s1,a0 if ( control == NULL ) { 400069f4: 10050063 beqz a0,40006af4 <== NEVER TAKEN rtems_set_errno_and_return_minus_one( ENOMEM ); } memcpy( control->name, name, namelen ); 400069f8: 01450a93 addi s5,a0,20 400069fc: 000a0593 mv a1,s4 40006a00: 00090613 mv a2,s2 40006a04: 000a8513 mv a0,s5 40006a08: 2500e0ef jal ra,40014c58 if ( node->control->node_destroy == IMFS_renamed_destroy ) { 40006a0c: 03842503 lw a0,56(s0) 40006a10: 40007a37 lui s4,0x40007 40006a14: 96ca0a13 addi s4,s4,-1684 # 4000696c 40006a18: 00c52783 lw a5,12(a0) 40006a1c: 09478e63 beq a5,s4,40006ab8 IMFS_restore_replaced_control( node ); } control->Base = *node->control; 40006a20: 00052583 lw a1,0(a0) 40006a24: 00452603 lw a2,4(a0) 40006a28: 00852683 lw a3,8(a0) next = the_node->next; 40006a2c: 00042703 lw a4,0(s0) previous = the_node->previous; 40006a30: 00442783 lw a5,4(s0) control->Base.node_destroy = IMFS_renamed_destroy; control->replaced = node->control; 40006a34: 00a4a823 sw a0,16(s1) control->Base = *node->control; 40006a38: 00b4a023 sw a1,0(s1) 40006a3c: 00c4a223 sw a2,4(s1) 40006a40: 00d4a423 sw a3,8(s1) control->Base.node_destroy = IMFS_renamed_destroy; 40006a44: 0144a623 sw s4,12(s1) node->control = &control->Base; 40006a48: 02942c23 sw s1,56(s0) node->name = control->name; 40006a4c: 01542623 sw s5,12(s0) node->namelen = namelen; 40006a50: 01241823 sh s2,16(s0) next->previous = previous; 40006a54: 00f72223 sw a5,4(a4) previous->next = next; 40006a58: 00e7a023 sw a4,0(a5) old_last = tail->previous; 40006a5c: 0489a783 lw a5,72(s3) return &the_chain->Tail.Node; 40006a60: 04498713 addi a4,s3,68 the_node->next = tail; 40006a64: 00e42023 sw a4,0(s0) entry_node->Parent = dir_node; 40006a68: 01342423 sw s3,8(s0) tail->previous = the_node; 40006a6c: 0489a423 sw s0,72(s3) old_last->next = the_node; 40006a70: 0087a023 sw s0,0(a5) the_node->previous = old_last; 40006a74: 00f42223 sw a5,4(s0) _Timecounter_Getbintime( &now ); 40006a78: 00010513 mv a0,sp 40006a7c: 701010ef jal ra,4000897c <_Timecounter_Getbintime> jnode->stat_ctime = _IMFS_get_time(); 40006a80: 00012703 lw a4,0(sp) 40006a84: 00412783 lw a5,4(sp) IMFS_remove_from_directory( node ); IMFS_add_to_directory( new_parent, node ); IMFS_update_ctime( node ); return 0; 40006a88: 00000513 li a0,0 40006a8c: 02e42823 sw a4,48(s0) 40006a90: 02f42a23 sw a5,52(s0) } 40006a94: 02c12083 lw ra,44(sp) 40006a98: 02812403 lw s0,40(sp) 40006a9c: 02412483 lw s1,36(sp) 40006aa0: 02012903 lw s2,32(sp) 40006aa4: 01c12983 lw s3,28(sp) 40006aa8: 01812a03 lw s4,24(sp) 40006aac: 01412a83 lw s5,20(sp) 40006ab0: 03010113 addi sp,sp,48 40006ab4: 00008067 ret node->control = control->replaced; 40006ab8: 01052783 lw a5,16(a0) 40006abc: 02f42c23 sw a5,56(s0) free( control ); 40006ac0: ff1fb0ef jal ra,40002ab0 control->Base = *node->control; 40006ac4: 03842503 lw a0,56(s0) } 40006ac8: f59ff06f j 40006a20 rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 40006acc: 3fd0d0ef jal ra,400146c8 <__errno> 40006ad0: 05b00793 li a5,91 40006ad4: 00f52023 sw a5,0(a0) 40006ad8: fff00513 li a0,-1 40006adc: fb9ff06f j 40006a94 rtems_set_errno_and_return_minus_one( EINVAL ); 40006ae0: 3e90d0ef jal ra,400146c8 <__errno> <== NOT EXECUTED 40006ae4: 01600793 li a5,22 <== NOT EXECUTED 40006ae8: 00f52023 sw a5,0(a0) <== NOT EXECUTED 40006aec: fff00513 li a0,-1 <== NOT EXECUTED 40006af0: fa5ff06f j 40006a94 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 40006af4: 3d50d0ef jal ra,400146c8 <__errno> <== NOT EXECUTED 40006af8: 00c00793 li a5,12 <== NOT EXECUTED 40006afc: 00f52023 sw a5,0(a0) <== NOT EXECUTED 40006b00: fff00513 li a0,-1 <== NOT EXECUTED 40006b04: f91ff06f j 40006a94 <== NOT EXECUTED =============================================================================== 40006bf0 : struct stat *buf ) { const IMFS_file_t *file = loc->node_access; buf->st_size = file->File.size; 40006bf0: 00852783 lw a5,8(a0) <== NOT EXECUTED buf->st_blksize = imfs_memfile_bytes_per_block; 40006bf4: 88c1a703 lw a4,-1908(gp) # 40020ccc <== NOT EXECUTED buf->st_size = file->File.size; 40006bf8: 0407a683 lw a3,64(a5) <== NOT EXECUTED 40006bfc: 0205a623 sw zero,44(a1) <== NOT EXECUTED buf->st_blksize = imfs_memfile_bytes_per_block; 40006c00: 06e5a023 sw a4,96(a1) <== NOT EXECUTED buf->st_size = file->File.size; 40006c04: 02d5a423 sw a3,40(a1) <== NOT EXECUTED return IMFS_stat( loc, buf ); 40006c08: f6dff06f j 40006b74 <== NOT EXECUTED =============================================================================== 40006d4c : #include int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) { int rv = 0; IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 40006d4c: 02052783 lw a5,32(a0) { 40006d50: ff010113 addi sp,sp,-16 40006d54: 00112623 sw ra,12(sp) IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 40006d58: 0087a703 lw a4,8(a5) return S_ISDIR( node->st_mode ); 40006d5c: 0000f7b7 lui a5,0xf if ( IMFS_is_directory( node ) ) { 40006d60: 000046b7 lui a3,0x4 40006d64: 01472603 lw a2,20(a4) 40006d68: 00c7f7b3 and a5,a5,a2 40006d6c: 02d79a63 bne a5,a3,40006da0 IMFS_directory_t *dir = (IMFS_directory_t *) node; if ( dir->mt_fs == mt_entry ) { 40006d70: 04c72783 lw a5,76(a4) 40006d74: 00a79c63 bne a5,a0,40006d8c dir->mt_fs = NULL; 40006d78: 04072623 sw zero,76(a4) int rv = 0; 40006d7c: 00000513 li a0,0 errno = ENOTDIR; rv = -1; } return rv; } 40006d80: 00c12083 lw ra,12(sp) 40006d84: 01010113 addi sp,sp,16 40006d88: 00008067 ret errno = EINVAL; 40006d8c: 13d0d0ef jal ra,400146c8 <__errno> <== NOT EXECUTED 40006d90: 01600793 li a5,22 <== NOT EXECUTED 40006d94: 00f52023 sw a5,0(a0) <== NOT EXECUTED rv = -1; 40006d98: fff00513 li a0,-1 <== NOT EXECUTED 40006d9c: fe5ff06f j 40006d80 <== NOT EXECUTED errno = ENOTDIR; 40006da0: 1290d0ef jal ra,400146c8 <__errno> <== NOT EXECUTED 40006da4: 01400793 li a5,20 <== NOT EXECUTED 40006da8: 00f52023 sw a5,0(a0) <== NOT EXECUTED rv = -1; 40006dac: fff00513 li a0,-1 <== NOT EXECUTED return rv; 40006db0: fd1ff06f j 40006d80 <== NOT EXECUTED =============================================================================== 4000f288 : rtems_libio_t *iop, off_t length ) { return 0; } 4000f288: 00000513 li a0,0 <== NOT EXECUTED 4000f28c: 00008067 ret <== NOT EXECUTED =============================================================================== 40003040 : int rtems_tarfs_load( const char *mountpoint, uint8_t *tar_image, size_t tar_size ) { 40003040: e2010113 addi sp,sp,-480 40003044: 1c912a23 sw s1,468(sp) 40003048: 1d212823 sw s2,464(sp) 4000304c: 1d312623 sw s3,460(sp) 40003050: 1c112e23 sw ra,476(sp) 40003054: 1c812c23 sw s0,472(sp) 40003058: 1d412423 sw s4,456(sp) 4000305c: 00050993 mv s3,a0 40003060: 00058493 mv s1,a1 40003064: 00060913 mv s2,a2 char buf[ 156 + UNTAR_FILE_NAME_SIZE ]; size_t len; Untar_HeaderContext ctx; unsigned long ptr; len = strlen( mountpoint ); 40003068: 22c0c0ef jal ra,4000f294 if ( len >= sizeof( buf ) - UNTAR_FILE_NAME_SIZE - 2 ) { 4000306c: 09900793 li a5,153 40003070: 0aa7e463 bltu a5,a0,40003118 return -1; } eval_flags = RTEMS_FS_FOLLOW_LINK; loc = rtems_filesystem_eval_path_start( &eval_ctx, mountpoint, eval_flags ); 40003074: 01800613 li a2,24 40003078: 00098593 mv a1,s3 4000307c: 00050413 mv s0,a0 40003080: 00810513 addi a0,sp,8 40003084: 891fe0ef jal ra,40001914 return loc->mt_entry->ops->clonenod_h == IMFS_node_clone; 40003088: 01452783 lw a5,20(a0) is_imfs = IMFS_is_imfs_instance( loc ); rtems_filesystem_eval_path_cleanup( &eval_ctx ); 4000308c: 00810513 addi a0,sp,8 40003090: 00c7a783 lw a5,12(a5) 40003094: 0247aa03 lw s4,36(a5) 40003098: a9dfe0ef jal ra,40001b34 if ( !is_imfs ) { 4000309c: 400047b7 lui a5,0x40004 400030a0: ec078793 addi a5,a5,-320 # 40003ec0 400030a4: 06fa1a63 bne s4,a5,40003118 return -1; } ctx.printer = NULL; ctx.file_path = memcpy( buf, mountpoint, len ); 400030a8: 00040613 mv a2,s0 400030ac: 00098593 mv a1,s3 400030b0: 0c010513 addi a0,sp,192 ctx.printer = NULL; 400030b4: 0a012e23 sw zero,188(sp) ctx.file_path = memcpy( buf, mountpoint, len ); 400030b8: 5a80b0ef jal ra,4000e660 400030bc: 04a12023 sw a0,64(sp) if ( len > 0 && ctx.file_path[ len - 1 ] != '/') { 400030c0: 06041e63 bnez s0,4000313c <== ALWAYS TAKEN ctx.file_path[ len ] = '/'; ctx.file_name = ctx.file_path + len + 1; } else { ctx.file_name = ctx.file_path + len; 400030c4: 04a12223 sw a0,68(sp) 400030c8: 00000413 li s0,0 return -1; } ptr += 512; if ( ctx.linkflag == REGTYPE ) { 400030cc: 03000993 li s3,48 400030d0: 0140006f j 400030e4 retval = Untar_ProcessHeader( &ctx, (const char *) &tar_image[ ptr ] ); 400030d4: 6dc010ef jal ra,400047b0 if ( retval != UNTAR_SUCCESSFUL ) { 400030d8: 04051063 bnez a0,40003118 <== NEVER TAKEN if ( ctx.linkflag == REGTYPE ) { 400030dc: 0b814783 lbu a5,184(sp) 400030e0: 09378063 beq a5,s3,40003160 retval = Untar_ProcessHeader( &ctx, (const char *) &tar_image[ ptr ] ); 400030e4: 008485b3 add a1,s1,s0 while ( ptr + 512 <= tar_size ) { 400030e8: 20040413 addi s0,s0,512 retval = Untar_ProcessHeader( &ctx, (const char *) &tar_image[ ptr ] ); 400030ec: 04010513 addi a0,sp,64 while ( ptr + 512 <= tar_size ) { 400030f0: fe8972e3 bgeu s2,s0,400030d4 ptr += 512 * ctx.nblocks; } } return 0; } 400030f4: 1dc12083 lw ra,476(sp) 400030f8: 1d812403 lw s0,472(sp) 400030fc: 1d412483 lw s1,468(sp) 40003100: 1d012903 lw s2,464(sp) 40003104: 1cc12983 lw s3,460(sp) 40003108: 1c812a03 lw s4,456(sp) return 0; 4000310c: 00000513 li a0,0 } 40003110: 1e010113 addi sp,sp,480 40003114: 00008067 ret 40003118: 1dc12083 lw ra,476(sp) 4000311c: 1d812403 lw s0,472(sp) 40003120: 1d412483 lw s1,468(sp) 40003124: 1d012903 lw s2,464(sp) 40003128: 1cc12983 lw s3,460(sp) 4000312c: 1c812a03 lw s4,456(sp) return -1; 40003130: fff00513 li a0,-1 } 40003134: 1e010113 addi sp,sp,480 40003138: 00008067 ret ctx.file_path[ len ] = '/'; 4000313c: 008507b3 add a5,a0,s0 if ( len > 0 && ctx.file_path[ len - 1 ] != '/') { 40003140: fff7c683 lbu a3,-1(a5) 40003144: 02f00713 li a4,47 40003148: 04e68063 beq a3,a4,40003188 ctx.file_name = ctx.file_path + len + 1; 4000314c: 00140413 addi s0,s0,1 <== NOT EXECUTED 40003150: 00850433 add s0,a0,s0 <== NOT EXECUTED ctx.file_path[ len ] = '/'; 40003154: 00e78023 sb a4,0(a5) <== NOT EXECUTED ctx.file_name = ctx.file_path + len + 1; 40003158: 04812223 sw s0,68(sp) <== NOT EXECUTED 4000315c: f6dff06f j 400030c8 <== NOT EXECUTED retval = IMFS_make_linearfile( 40003160: 0b012683 lw a3,176(sp) 40003164: 0ac12583 lw a1,172(sp) 40003168: 04012503 lw a0,64(sp) 4000316c: 00848633 add a2,s1,s0 40003170: 020000ef jal ra,40003190 if ( retval != 0 ) { 40003174: fa0512e3 bnez a0,40003118 <== NEVER TAKEN ptr += 512 * ctx.nblocks; 40003178: 0b412783 lw a5,180(sp) 4000317c: 00979793 slli a5,a5,0x9 40003180: 00f40433 add s0,s0,a5 40003184: f61ff06f j 400030e4 40003188: 00078513 mv a0,a5 4000318c: f39ff06f j 400030c4