=============================================================================== 4001192c : 4001192c: 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 ff ................ 4001193c: 00 00 00 ff 00 00 00 02 00 00 00 01 00 00 00 02 ................ 4001194c: 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 ................ 4001195c: 00 00 00 00 4e 4f 4e 42 4c 4f 43 4b 00 00 00 00 ....NONBLOCK.... 4001196c: 00 00 00 00 41 50 50 45 4e 44 00 00 52 45 41 44 ....APPEND..READ 4001197c: 00 00 00 00 57 52 49 54 45 00 00 00 52 45 41 44 ....WRITE...READ 4001198c: 2f 57 52 49 54 45 00 00 /WRITE.. =============================================================================== 40003260 : int IMFS_chown( const rtems_filesystem_location_info_t *loc, uid_t owner, gid_t group ) { 40003260: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED IMFS_jnode_t *jnode; jnode = (IMFS_jnode_t *) loc->node_access; 40003264: fa 06 20 08 ld [ %i0 + 8 ], %i5 <== NOT EXECUTED jnode->st_uid = owner; 40003268: f2 37 60 1c sth %i1, [ %i5 + 0x1c ] <== NOT EXECUTED static inline time_t _IMFS_get_time( void ) { struct bintime now; /* Use most efficient way to get the time in seconds (CLOCK_REALTIME) */ _Timecounter_Getbintime( &now ); 4000326c: 90 07 bf f0 add %fp, -16, %o0 <== NOT EXECUTED jnode->st_gid = group; 40003270: f4 37 60 1e sth %i2, [ %i5 + 0x1e ] <== NOT EXECUTED 40003274: 40 00 17 7d call 40009068 <_Timecounter_Getbintime> <== NOT EXECUTED 40003278: b0 10 20 00 clr %i0 <== NOT EXECUTED return now.sec; 4000327c: c4 1f bf f0 ldd [ %fp + -16 ], %g2 <== NOT EXECUTED jnode->stat_mtime = _IMFS_get_time(); } static inline void IMFS_update_ctime( IMFS_jnode_t *jnode ) { jnode->stat_ctime = _IMFS_get_time(); 40003280: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] <== NOT EXECUTED IMFS_update_ctime( jnode ); return 0; } 40003284: 81 c7 e0 08 ret <== NOT EXECUTED 40003288: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000de68 : const char *name, size_t namelen, mode_t mode, void *arg ) { 4000de68: 9d e3 bf a0 save %sp, -96, %sp IMFS_jnode_t *allocated_node; IMFS_jnode_t *node; allocated_node = calloc( 1, node_size + namelen ); 4000de6c: 90 10 20 01 mov 1, %o0 4000de70: 7f ff da eb call 40004a1c 4000de74: 92 06 80 1c add %i2, %i4, %o1 if ( allocated_node == NULL ) { 4000de78: a0 92 20 00 orcc %o0, 0, %l0 4000de7c: 02 80 00 1c be 4000deec <== NEVER TAKEN 4000de80: da 07 a0 5c ld [ %fp + 0x5c ], %o5 errno = ENOMEM; return NULL; } node = IMFS_initialize_node( 4000de84: 98 10 00 1d mov %i5, %o4 4000de88: 96 10 00 1c mov %i4, %o3 4000de8c: 94 04 00 1a add %l0, %i2, %o2 4000de90: 7f ff d9 ae call 40004548 4000de94: 92 10 00 19 mov %i1, %o1 (char *) allocated_node + node_size, namelen, mode, arg ); if ( node != NULL ) { 4000de98: ba 92 20 00 orcc %o0, 0, %i5 4000de9c: 02 80 00 0f be 4000ded8 4000dea0: 94 10 00 1c mov %i4, %o2 IMFS_jnode_t *parent = parentloc->node_access; memcpy( RTEMS_DECONST( char *, node->name ), name, namelen ); 4000dea4: d0 07 60 0c ld [ %i5 + 0xc ], %o0 IMFS_jnode_t *parent = parentloc->node_access; 4000dea8: f4 06 20 08 ld [ %i0 + 8 ], %i2 memcpy( RTEMS_DECONST( char *, node->name ), name, namelen ); 4000deac: 40 00 06 18 call 4000f70c 4000deb0: 92 10 00 1b mov %i3, %o1 old_last = tail->previous; 4000deb4: c2 06 a0 48 ld [ %i2 + 0x48 ], %g1 return &the_chain->Tail.Node; 4000deb8: 84 06 a0 44 add %i2, 0x44, %g2 entry_node->Parent = dir_node; 4000debc: f4 27 60 08 st %i2, [ %i5 + 8 ] the_node->next = tail; 4000dec0: c4 27 40 00 st %g2, [ %i5 ] tail->previous = the_node; 4000dec4: fa 26 a0 48 st %i5, [ %i2 + 0x48 ] old_last->next = the_node; 4000dec8: fa 20 40 00 st %i5, [ %g1 ] the_node->previous = old_last; 4000decc: c2 27 60 04 st %g1, [ %i5 + 4 ] } else { free( allocated_node ); } return node; } 4000ded0: 81 c7 e0 08 ret 4000ded4: 91 e8 00 1d restore %g0, %i5, %o0 free( allocated_node ); 4000ded8: 90 10 00 10 mov %l0, %o0 4000dedc: 7f ff db 1b call 40004b48 4000dee0: b0 10 00 1d mov %i5, %i0 } 4000dee4: 81 c7 e0 08 ret 4000dee8: 81 e8 00 00 restore errno = ENOMEM; 4000deec: 40 00 05 7b call 4000f4d8 <__errno> <== NOT EXECUTED 4000def0: ba 10 20 00 clr %i5 <== NOT EXECUTED 4000def4: 82 10 20 0c mov 0xc, %g1 <== NOT EXECUTED return NULL; 4000def8: 10 bf ff f6 b 4000ded0 <== NOT EXECUTED 4000defc: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED =============================================================================== 400036d0 : int IMFS_fchmod( const rtems_filesystem_location_info_t *loc, mode_t mode ) { 400036d0: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED IMFS_jnode_t *jnode; jnode = loc->node_access; 400036d4: fa 06 20 08 ld [ %i0 + 8 ], %i5 <== NOT EXECUTED jnode->st_mode = mode; 400036d8: f2 27 60 14 st %i1, [ %i5 + 0x14 ] <== NOT EXECUTED _Timecounter_Getbintime( &now ); 400036dc: 40 00 16 63 call 40009068 <_Timecounter_Getbintime> <== NOT EXECUTED 400036e0: 90 07 bf f0 add %fp, -16, %o0 <== NOT EXECUTED return now.sec; 400036e4: c4 1f bf f0 ldd [ %fp + -16 ], %g2 <== NOT EXECUTED jnode->stat_ctime = _IMFS_get_time(); 400036e8: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] <== NOT EXECUTED IMFS_update_ctime( jnode ); return 0; } 400036ec: 81 c7 e0 08 ret <== NOT EXECUTED 400036f0: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED =============================================================================== 40004548 : const char *name, size_t namelen, mode_t mode, void *arg ) { 40004548: 9d e3 bf 90 save %sp, -112, %sp struct timeval tv; if ( namelen > IMFS_NAME_MAX ) { 4000454c: 80 a6 e0 ff cmp %i3, 0xff 40004550: 18 80 00 19 bgu 400045b4 <== NEVER TAKEN 40004554: 92 10 20 00 clr %o1 errno = ENAMETOOLONG; return NULL; } gettimeofday( &tv, 0 ); 40004558: 40 00 01 aa call 40004c00 4000455c: 90 07 bf f0 add %fp, -16, %o0 /* * Fill in the basic information */ node->name = name; node->namelen = namelen; node->reference_count = 1; 40004560: 03 00 00 40 sethi %hi(0x10000), %g1 node->name = name; 40004564: f4 26 20 0c st %i2, [ %i0 + 0xc ] node->reference_count = 1; 40004568: 82 10 60 01 or %g1, 1, %g1 node->namelen = namelen; 4000456c: f6 36 20 10 sth %i3, [ %i0 + 0x10 ] node->reference_count = 1; 40004570: c2 26 20 18 st %g1, [ %i0 + 0x18 ] node->st_nlink = 1; node->control = node_control; 40004574: f2 26 20 38 st %i1, [ %i0 + 0x38 ] /* * Fill in the mode and permission information for the jnode structure. */ node->st_mode = mode; node->st_uid = geteuid(); 40004578: 40 00 01 9c call 40004be8 4000457c: f8 26 20 14 st %i4, [ %i0 + 0x14 ] node->st_gid = getegid(); 40004580: 40 00 01 94 call 40004bd0 40004584: d0 36 20 1c sth %o0, [ %i0 + 0x1c ] /* * Now set all the times. */ node->stat_atime = (time_t) tv.tv_sec; 40004588: c4 1f bf f0 ldd [ %fp + -16 ], %g2 node->st_gid = getegid(); 4000458c: d0 36 20 1e sth %o0, [ %i0 + 0x1e ] node->stat_mtime = (time_t) tv.tv_sec; node->stat_ctime = (time_t) tv.tv_sec; return (*node_control->node_initialize)( node, arg ); 40004590: 92 10 00 1d mov %i5, %o1 node->stat_atime = (time_t) tv.tv_sec; 40004594: c4 3e 20 20 std %g2, [ %i0 + 0x20 ] node->stat_mtime = (time_t) tv.tv_sec; 40004598: c4 3e 20 28 std %g2, [ %i0 + 0x28 ] node->stat_ctime = (time_t) tv.tv_sec; 4000459c: c4 3e 20 30 std %g2, [ %i0 + 0x30 ] return (*node_control->node_initialize)( node, arg ); 400045a0: c2 06 60 04 ld [ %i1 + 4 ], %g1 400045a4: 9f c0 40 00 call %g1 400045a8: 90 10 00 18 mov %i0, %o0 } 400045ac: 81 c7 e0 08 ret 400045b0: 91 e8 00 08 restore %g0, %o0, %o0 errno = ENAMETOOLONG; 400045b4: 40 00 2b c9 call 4000f4d8 <__errno> <== NOT EXECUTED 400045b8: b0 10 20 00 clr %i0 <== NOT EXECUTED 400045bc: 82 10 20 5b mov 0x5b, %g1 <== NOT EXECUTED 400045c0: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED return NULL; 400045c4: 81 c7 e0 08 ret <== NOT EXECUTED 400045c8: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40003744 : { 40003744: 9d e3 bf a0 save %sp, -96, %sp IMFS_fs_info_t *fs_info = mount_data->fs_info; 40003748: fa 06 40 00 ld [ %i1 ], %i5 fs_info->mknod_controls = mount_data->mknod_controls; 4000374c: c2 06 60 08 ld [ %i1 + 8 ], %g1 40003750: c2 27 60 50 st %g1, [ %i5 + 0x50 ] root_node = IMFS_initialize_node( 40003754: 9a 10 20 00 clr %o5 40003758: d2 00 40 00 ld [ %g1 ], %o1 4000375c: 96 10 20 00 clr %o3 40003760: 19 00 00 10 sethi %hi(0x4000), %o4 40003764: 90 10 00 1d mov %i5, %o0 40003768: 98 13 21 ed or %o4, 0x1ed, %o4 4000376c: 15 10 00 44 sethi %hi(0x40011000), %o2 40003770: 40 00 03 76 call 40004548 40003774: 94 12 a0 00 mov %o2, %o2 ! 40011000 mt_entry->ops = mount_data->ops; 40003778: c2 06 60 04 ld [ %i1 + 4 ], %g1 loc->handlers = node->control->handlers; 4000377c: c4 02 20 38 ld [ %o0 + 0x38 ], %g2 40003780: c2 26 20 0c st %g1, [ %i0 + 0xc ] mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS; 40003784: 03 10 00 46 sethi %hi(0x40011800), %g1 40003788: 82 10 61 2c or %g1, 0x12c, %g1 ! 4001192c mt_entry->fs_info = fs_info; 4000378c: fa 26 20 08 st %i5, [ %i0 + 8 ] mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS; 40003790: c2 26 20 2c st %g1, [ %i0 + 0x2c ] 40003794: c4 00 80 00 ld [ %g2 ], %g2 mt_entry->mt_fs_root->location.node_access = root_node; 40003798: c2 06 20 24 ld [ %i0 + 0x24 ], %g1 4000379c: d0 20 60 08 st %o0, [ %g1 + 8 ] 400037a0: c4 20 60 10 st %g2, [ %g1 + 0x10 ] IMFS_determine_bytes_per_block( 400037a4: 03 10 00 4b sethi %hi(0x40012c00), %g1 400037a8: c6 00 63 68 ld [ %g1 + 0x368 ], %g3 ! 40012f68 if (bit_mask == requested_bytes_per_block) { 400037ac: 80 a0 e0 10 cmp %g3, 0x10 400037b0: 02 80 00 0e be 400037e8 <== NEVER TAKEN 400037b4: 80 a0 e0 0f cmp %g3, 0xf if(bit_mask > requested_bytes_per_block) 400037b8: 04 80 00 0b ble 400037e4 <== NEVER TAKEN 400037bc: 82 10 20 20 mov 0x20, %g1 400037c0: 84 10 20 05 mov 5, %g2 if (bit_mask == requested_bytes_per_block) { 400037c4: 80 a0 c0 01 cmp %g3, %g1 400037c8: 22 80 00 09 be,a 400037ec 400037cc: 03 10 00 51 sethi %hi(0x40014400), %g1 if(bit_mask > requested_bytes_per_block) 400037d0: 26 80 00 06 bl,a 400037e8 <== NEVER TAKEN 400037d4: 86 10 20 80 mov 0x80, %g3 <== NOT EXECUTED for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) { 400037d8: 84 80 bf ff addcc %g2, -1, %g2 400037dc: 12 bf ff fa bne 400037c4 <== ALWAYS TAKEN 400037e0: 83 28 60 01 sll %g1, 1, %g1 : default_bytes_per_block); 400037e4: 86 10 20 80 mov 0x80, %g3 <== NOT EXECUTED *dest_bytes_per_block = ((is_valid) 400037e8: 03 10 00 51 sethi %hi(0x40014400), %g1 <== NOT EXECUTED 400037ec: c6 20 63 c4 st %g3, [ %g1 + 0x3c4 ] ! 400147c4 } 400037f0: 81 c7 e0 08 ret 400037f4: 91 e8 20 00 restore %g0, 0, %o0 =============================================================================== 400038e4 : { 400038e4: 9d e3 bf 88 save %sp, -120, %sp <== NOT EXECUTED target = targetloc->node_access; 400038e8: fa 06 60 08 ld [ %i1 + 8 ], %i5 <== NOT EXECUTED if ( target->st_nlink >= LINK_MAX ) 400038ec: c2 17 60 1a lduh [ %i5 + 0x1a ], %g1 <== NOT EXECUTED 400038f0: 80 a0 60 07 cmp %g1, 7 <== NOT EXECUTED 400038f4: 18 80 00 19 bgu 40003958 <== NOT EXECUTED 400038f8: 9a 10 21 ff mov 0x1ff, %o5 <== NOT EXECUTED new_node = IMFS_create_node( 400038fc: fa 23 a0 5c st %i5, [ %sp + 0x5c ] <== NOT EXECUTED 40003900: 98 10 00 1b mov %i3, %o4 <== NOT EXECUTED 40003904: 96 10 00 1a mov %i2, %o3 <== NOT EXECUTED 40003908: 94 10 20 48 mov 0x48, %o2 <== NOT EXECUTED 4000390c: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 40003910: 13 10 00 44 sethi %hi(0x40011000), %o1 <== NOT EXECUTED 40003914: 40 00 29 55 call 4000de68 <== NOT EXECUTED 40003918: 92 12 61 08 or %o1, 0x108, %o1 ! 40011108 <== NOT EXECUTED if ( !new_node ) 4000391c: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40003920: 02 80 00 14 be 40003970 <== NOT EXECUTED 40003924: 90 07 bf f0 add %fp, -16, %o0 <== NOT EXECUTED target->reference_count++; 40003928: c4 17 60 18 lduh [ %i5 + 0x18 ], %g2 <== NOT EXECUTED target->st_nlink++; 4000392c: c2 17 60 1a lduh [ %i5 + 0x1a ], %g1 <== NOT EXECUTED target->reference_count++; 40003930: 84 00 a0 01 inc %g2 <== NOT EXECUTED target->st_nlink++; 40003934: 82 00 60 01 inc %g1 <== NOT EXECUTED target->reference_count++; 40003938: c4 37 60 18 sth %g2, [ %i5 + 0x18 ] <== NOT EXECUTED target->st_nlink++; 4000393c: c2 37 60 1a sth %g1, [ %i5 + 0x1a ] <== NOT EXECUTED _Timecounter_Getbintime( &now ); 40003940: 40 00 15 ca call 40009068 <_Timecounter_Getbintime> <== NOT EXECUTED 40003944: b0 10 20 00 clr %i0 <== NOT EXECUTED return now.sec; 40003948: c4 1f bf f0 ldd [ %fp + -16 ], %g2 <== NOT EXECUTED jnode->stat_ctime = _IMFS_get_time(); 4000394c: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] <== NOT EXECUTED } 40003950: 81 c7 e0 08 ret <== NOT EXECUTED 40003954: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EMLINK ); 40003958: 40 00 2e e0 call 4000f4d8 <__errno> <== NOT EXECUTED 4000395c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40003960: 82 10 20 1f mov 0x1f, %g1 <== NOT EXECUTED 40003964: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40003968: 81 c7 e0 08 ret <== NOT EXECUTED 4000396c: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 40003970: 40 00 2e da call 4000f4d8 <__errno> <== NOT EXECUTED 40003974: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40003978: 82 10 20 0c mov 0xc, %g1 <== NOT EXECUTED 4000397c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40003980: 81 c7 e0 08 ret <== NOT EXECUTED 40003984: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000df00 : const char *path, mode_t mode, const IMFS_node_control *node_control, void *context ) { 4000df00: 9d e3 bf 50 save %sp, -176, %sp int rv = 0; mode &= ~rtems_filesystem_umask; 4000df04: 7f ff de 1f call 40005780 4000df08: 01 00 00 00 nop 4000df0c: da 02 20 08 ld [ %o0 + 8 ], %o5 4000df10: b2 2e 40 0d andn %i1, %o5, %i1 switch (mode & S_IFMT) { 4000df14: 03 00 00 3c sethi %hi(0xf000), %g1 4000df18: 05 00 00 18 sethi %hi(0x6000), %g2 4000df1c: 82 0e 40 01 and %i1, %g1, %g1 4000df20: 80 a0 40 02 cmp %g1, %g2 4000df24: 02 80 00 0c be 4000df54 <== NEVER TAKEN 4000df28: 94 10 20 78 mov 0x78, %o2 4000df2c: 08 80 00 1d bleu 4000dfa0 <== ALWAYS TAKEN 4000df30: 05 00 00 04 sethi %hi(0x1000), %g2 4000df34: 05 00 00 20 sethi %hi(0x8000), %g2 <== NOT EXECUTED 4000df38: 80 a0 40 02 cmp %g1, %g2 <== NOT EXECUTED 4000df3c: 02 80 00 06 be 4000df54 <== NOT EXECUTED 4000df40: 05 00 00 30 sethi %hi(0xc000), %g2 <== NOT EXECUTED 4000df44: 80 a0 40 02 cmp %g1, %g2 <== NOT EXECUTED 4000df48: 12 80 00 1c bne 4000dfb8 <== NOT EXECUTED 4000df4c: 01 00 00 00 nop <== NOT EXECUTED if ( rv == 0 ) { rtems_filesystem_eval_path_context_t ctx; int eval_flags = RTEMS_FS_FOLLOW_LINK | RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE; const rtems_filesystem_location_info_t *currentloc = 4000df50: 94 10 20 78 mov 0x78, %o2 ! 78 <_TLS_Alignment+0x77> <== NOT EXECUTED 4000df54: 92 10 00 18 mov %i0, %o1 4000df58: 7f ff df b8 call 40005e38 4000df5c: 90 07 bf c8 add %fp, -56, %o0 return loc->mt_entry->ops->clonenod_h == IMFS_node_clone; 4000df60: c2 02 20 14 ld [ %o0 + 0x14 ], %g1 4000df64: c2 00 60 0c ld [ %g1 + 0xc ], %g1 rtems_filesystem_eval_path_start( &ctx, path, eval_flags ); if ( IMFS_is_imfs_instance( currentloc ) ) { 4000df68: c4 00 60 24 ld [ %g1 + 0x24 ], %g2 4000df6c: 03 10 00 11 sethi %hi(0x40004400), %g1 4000df70: 82 10 61 cc or %g1, 0x1cc, %g1 ! 400045cc 4000df74: 80 a0 80 01 cmp %g2, %g1 4000df78: 02 80 00 16 be 4000dfd0 <== ALWAYS TAKEN 4000df7c: ba 10 00 08 mov %o0, %i5 IMFS_mtime_ctime_update( parent ); } else { rv = -1; } } else { rtems_filesystem_eval_path_error( &ctx, ENOTSUP ); 4000df80: 92 10 20 86 mov 0x86, %o1 <== NOT EXECUTED 4000df84: 90 07 bf c8 add %fp, -56, %o0 <== NOT EXECUTED 4000df88: 7f ff de f1 call 40005b4c <== NOT EXECUTED 4000df8c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED rv = -1; } rtems_filesystem_eval_path_cleanup( &ctx ); 4000df90: 7f ff df b6 call 40005e68 <== NOT EXECUTED 4000df94: 90 07 bf c8 add %fp, -56, %o0 <== NOT EXECUTED } return rv; } 4000df98: 81 c7 e0 08 ret <== NOT EXECUTED 4000df9c: 81 e8 00 00 restore <== NOT EXECUTED switch (mode & S_IFMT) { 4000dfa0: 80 a0 40 02 cmp %g1, %g2 4000dfa4: 02 bf ff eb be 4000df50 <== NEVER TAKEN 4000dfa8: 05 00 00 08 sethi %hi(0x2000), %g2 4000dfac: 80 a0 40 02 cmp %g1, %g2 4000dfb0: 02 bf ff e9 be 4000df54 <== ALWAYS TAKEN 4000dfb4: 94 10 20 78 mov 0x78, %o2 errno = EINVAL; 4000dfb8: 40 00 05 48 call 4000f4d8 <__errno> <== NOT EXECUTED 4000dfbc: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4000dfc0: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 4000dfc4: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4000dfc8: 81 c7 e0 08 ret <== NOT EXECUTED 4000dfcc: 81 e8 00 00 restore <== NOT EXECUTED IMFS_jnode_t *new_node = IMFS_create_node( 4000dfd0: f6 23 a0 5c st %i3, [ %sp + 0x5c ] 4000dfd4: 9a 10 00 19 mov %i1, %o5 4000dfd8: d8 07 bf d4 ld [ %fp + -44 ], %o4 4000dfdc: d6 07 bf d0 ld [ %fp + -48 ], %o3 4000dfe0: 94 10 20 48 mov 0x48, %o2 4000dfe4: 92 10 00 1a mov %i2, %o1 4000dfe8: 7f ff ff a0 call 4000de68 4000dfec: b0 10 3f ff mov -1, %i0 if ( new_node != NULL ) { 4000dff0: 80 a2 20 00 cmp %o0, 0 4000dff4: 02 bf ff e7 be 4000df90 <== NEVER TAKEN 4000dff8: 01 00 00 00 nop IMFS_jnode_t *parent = currentloc->node_access; 4000dffc: fa 07 60 08 ld [ %i5 + 8 ], %i5 _Timecounter_Getbintime( &now ); 4000e000: 7f ff ec 1a call 40009068 <_Timecounter_Getbintime> 4000e004: 90 07 bf b8 add %fp, -72, %o0 return now.sec; 4000e008: c4 1f bf b8 ldd [ %fp + -72 ], %g2 jnode->stat_mtime = now; 4000e00c: c4 3f 60 28 std %g2, [ %i5 + 0x28 ] int rv = 0; 4000e010: b0 10 20 00 clr %i0 jnode->stat_ctime = now; 4000e014: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] rtems_filesystem_eval_path_cleanup( &ctx ); 4000e018: 7f ff df 94 call 40005e68 4000e01c: 90 07 bf c8 add %fp, -56, %o0 } 4000e020: 81 c7 e0 08 ret 4000e024: 81 e8 00 00 restore =============================================================================== 400041c8 : { 400041c8: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED if ( last_byte > memfile->File.size ) { 400041cc: c2 06 20 40 ld [ %i0 + 0x40 ], %g1 <== NOT EXECUTED last_byte = start + my_length; 400041d0: 96 07 00 1a add %i4, %i2, %o3 <== NOT EXECUTED if ( last_byte > memfile->File.size ) { 400041d4: 80 a0 40 0b cmp %g1, %o3 <== NOT EXECUTED 400041d8: 0a 80 00 54 bcs 40004328 <== NOT EXECUTED 400041dc: a0 10 00 18 mov %i0, %l0 <== NOT EXECUTED start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 400041e0: 23 10 00 51 sethi %hi(0x40014400), %l1 <== NOT EXECUTED 400041e4: e4 04 63 c4 ld [ %l1 + 0x3c4 ], %l2 ! 400147c4 <== NOT EXECUTED 400041e8: bb 3c a0 1f sra %l2, 0x1f, %i5 <== NOT EXECUTED 400041ec: 96 10 00 12 mov %l2, %o3 <== NOT EXECUTED 400041f0: 94 10 00 1d mov %i5, %o2 <== NOT EXECUTED 400041f4: 92 10 00 1a mov %i2, %o1 <== NOT EXECUTED 400041f8: 40 00 2f be call 400100f0 <__moddi3> <== NOT EXECUTED 400041fc: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 40004200: 94 10 00 1d mov %i5, %o2 <== NOT EXECUTED start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 40004204: a6 10 00 09 mov %o1, %l3 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 40004208: 96 10 00 12 mov %l2, %o3 <== NOT EXECUTED 4000420c: 92 10 00 1a mov %i2, %o1 <== NOT EXECUTED 40004210: 40 00 2f 2d call 4000fec4 <__divdi3> <== NOT EXECUTED 40004214: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED 40004218: ba 10 00 12 mov %l2, %i5 <== NOT EXECUTED 4000421c: b4 10 00 09 mov %o1, %i2 <== NOT EXECUTED if ( start_offset ) { 40004220: 80 a4 e0 00 cmp %l3, 0 <== NOT EXECUTED 40004224: 12 80 00 1a bne 4000428c <== NOT EXECUTED 40004228: b0 10 20 00 clr %i0 <== NOT EXECUTED while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 4000422c: 80 a7 00 1d cmp %i4, %i5 <== NOT EXECUTED 40004230: 1a 80 00 0e bcc 40004268 <== NOT EXECUTED 40004234: 92 10 00 1a mov %i2, %o1 <== NOT EXECUTED if ( my_length ) { 40004238: 10 80 00 29 b 400042dc <== NOT EXECUTED 4000423c: 80 a7 20 00 cmp %i4, 0 <== NOT EXECUTED memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 40004240: 40 00 2d 33 call 4000f70c <== NOT EXECUTED 40004244: d0 02 00 00 ld [ %o0 ], %o0 <== NOT EXECUTED while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 40004248: c2 04 63 c4 ld [ %l1 + 0x3c4 ], %g1 <== NOT EXECUTED my_length -= to_copy; 4000424c: b8 27 00 1d sub %i4, %i5, %i4 <== NOT EXECUTED src += to_copy; 40004250: b6 06 c0 1d add %i3, %i5, %i3 <== NOT EXECUTED block++; 40004254: b4 06 a0 01 inc %i2 <== NOT EXECUTED while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 40004258: 80 a0 40 1c cmp %g1, %i4 <== NOT EXECUTED 4000425c: 18 80 00 1f bgu 400042d8 <== NOT EXECUTED 40004260: b0 06 00 1d add %i0, %i5, %i0 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 ); 40004264: 92 10 00 1a mov %i2, %o1 <== NOT EXECUTED 40004268: 94 10 20 00 clr %o2 <== NOT EXECUTED 4000426c: 7f ff fd d4 call 400039bc <== NOT EXECUTED 40004270: 90 10 00 10 mov %l0, %o0 <== NOT EXECUTED memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 40004274: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED if ( !block_ptr ) 40004278: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000427c: 12 bf ff f1 bne 40004240 <== NOT EXECUTED 40004280: 94 10 00 1d mov %i5, %o2 <== NOT EXECUTED } 40004284: 81 c7 e0 08 ret <== NOT EXECUTED 40004288: 81 e8 00 00 restore <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 ); 4000428c: 94 10 20 00 clr %o2 <== NOT EXECUTED 40004290: 7f ff fd cb call 400039bc <== NOT EXECUTED 40004294: 90 10 00 10 mov %l0, %o0 <== NOT EXECUTED if ( !block_ptr ) 40004298: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000429c: 02 bf ff fa be 40004284 <== NOT EXECUTED 400042a0: a4 24 80 13 sub %l2, %l3, %l2 <== NOT EXECUTED 400042a4: 80 a7 00 12 cmp %i4, %l2 <== NOT EXECUTED 400042a8: 18 80 00 37 bgu 40004384 <== NOT EXECUTED 400042ac: b0 10 00 1c mov %i4, %i0 <== NOT EXECUTED memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 400042b0: d0 02 00 00 ld [ %o0 ], %o0 <== NOT EXECUTED 400042b4: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED 400042b8: 94 10 00 18 mov %i0, %o2 <== NOT EXECUTED 400042bc: 90 02 00 13 add %o0, %l3, %o0 <== NOT EXECUTED 400042c0: 40 00 2d 13 call 4000f70c <== NOT EXECUTED 400042c4: b6 06 c0 18 add %i3, %i0, %i3 <== NOT EXECUTED block++; 400042c8: b4 06 a0 01 inc %i2 <== NOT EXECUTED 400042cc: fa 04 63 c4 ld [ %l1 + 0x3c4 ], %i5 <== NOT EXECUTED my_length -= to_copy; 400042d0: 10 bf ff d7 b 4000422c <== NOT EXECUTED 400042d4: b8 27 00 18 sub %i4, %i0, %i4 <== NOT EXECUTED if ( my_length ) { 400042d8: 80 a7 20 00 cmp %i4, 0 <== NOT EXECUTED 400042dc: 02 80 00 0c be 4000430c <== NOT EXECUTED 400042e0: 94 10 20 00 clr %o2 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 ); 400042e4: 92 10 00 1a mov %i2, %o1 <== NOT EXECUTED 400042e8: 7f ff fd b5 call 400039bc <== NOT EXECUTED 400042ec: 90 10 00 10 mov %l0, %o0 <== NOT EXECUTED if ( !block_ptr ) 400042f0: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 400042f4: 02 bf ff e4 be 40004284 <== NOT EXECUTED 400042f8: 94 10 00 1c mov %i4, %o2 <== NOT EXECUTED memcpy( &(*block_ptr)[ 0 ], src, my_length ); 400042fc: d0 02 00 00 ld [ %o0 ], %o0 <== NOT EXECUTED 40004300: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED 40004304: 40 00 2d 02 call 4000f70c <== NOT EXECUTED 40004308: b0 06 00 1c add %i0, %i4, %i0 <== NOT EXECUTED _Timecounter_Getbintime( &now ); 4000430c: 40 00 13 57 call 40009068 <_Timecounter_Getbintime> <== NOT EXECUTED 40004310: 90 07 bf f0 add %fp, -16, %o0 <== NOT EXECUTED return now.sec; 40004314: c4 1f bf f0 ldd [ %fp + -16 ], %g2 <== NOT EXECUTED jnode->stat_mtime = now; 40004318: c4 3c 20 28 std %g2, [ %l0 + 0x28 ] <== NOT EXECUTED jnode->stat_ctime = now; 4000431c: c4 3c 20 30 std %g2, [ %l0 + 0x30 ] <== NOT EXECUTED } 40004320: 81 c7 e0 08 ret <== NOT EXECUTED 40004324: 81 e8 00 00 restore <== NOT EXECUTED bool zero_fill = start > memfile->File.size; 40004328: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED 4000432c: 04 80 00 0b ble 40004358 <== NOT EXECUTED 40004330: 92 10 20 01 mov 1, %o1 <== NOT EXECUTED status = IMFS_memfile_extend( memfile, zero_fill, last_byte ); 40004334: 94 10 20 00 clr %o2 <== NOT EXECUTED 40004338: 92 0a 60 01 and %o1, 1, %o1 <== NOT EXECUTED 4000433c: 7f ff fe 49 call 40003c60 <== NOT EXECUTED 40004340: 90 10 00 10 mov %l0, %o0 <== NOT EXECUTED if ( status ) 40004344: b0 92 20 00 orcc %o0, 0, %i0 <== NOT EXECUTED 40004348: 02 bf ff a7 be 400041e4 <== NOT EXECUTED 4000434c: 23 10 00 51 sethi %hi(0x40014400), %l1 <== NOT EXECUTED 40004350: 81 c7 e0 08 ret <== NOT EXECUTED 40004354: 81 e8 00 00 restore <== NOT EXECUTED bool zero_fill = start > memfile->File.size; 40004358: 02 80 00 16 be 400043b0 <== NOT EXECUTED 4000435c: 80 a6 80 01 cmp %i2, %g1 <== NOT EXECUTED 40004360: 92 10 20 00 clr %o1 <== NOT EXECUTED status = IMFS_memfile_extend( memfile, zero_fill, last_byte ); 40004364: 94 10 20 00 clr %o2 <== NOT EXECUTED 40004368: 92 0a 60 01 and %o1, 1, %o1 <== NOT EXECUTED 4000436c: 7f ff fe 3d call 40003c60 <== NOT EXECUTED 40004370: 90 10 00 10 mov %l0, %o0 <== NOT EXECUTED if ( status ) 40004374: b0 92 20 00 orcc %o0, 0, %i0 <== NOT EXECUTED 40004378: 02 bf ff 9b be 400041e4 <== NOT EXECUTED 4000437c: 23 10 00 51 sethi %hi(0x40014400), %l1 <== NOT EXECUTED 40004380: 30 bf ff f4 b,a 40004350 <== NOT EXECUTED memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 40004384: d0 02 00 00 ld [ %o0 ], %o0 <== NOT EXECUTED 40004388: b0 10 00 12 mov %l2, %i0 <== NOT EXECUTED 4000438c: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED 40004390: 94 10 00 18 mov %i0, %o2 <== NOT EXECUTED 40004394: 90 02 00 13 add %o0, %l3, %o0 <== NOT EXECUTED 40004398: 40 00 2c dd call 4000f70c <== NOT EXECUTED 4000439c: b6 06 c0 18 add %i3, %i0, %i3 <== NOT EXECUTED block++; 400043a0: b4 06 a0 01 inc %i2 <== NOT EXECUTED 400043a4: fa 04 63 c4 ld [ %l1 + 0x3c4 ], %i5 <== NOT EXECUTED my_length -= to_copy; 400043a8: 10 bf ff a1 b 4000422c <== NOT EXECUTED 400043ac: b8 27 00 18 sub %i4, %i0, %i4 <== NOT EXECUTED bool zero_fill = start > memfile->File.size; 400043b0: 18 bf ff e2 bgu 40004338 <== NOT EXECUTED 400043b4: 94 10 20 00 clr %o2 <== NOT EXECUTED 400043b8: 10 bf ff ec b 40004368 <== NOT EXECUTED 400043bc: 92 10 20 00 clr %o1 <== NOT EXECUTED =============================================================================== 40011060 : 40011060: 40 01 10 74 40 00 36 f4 40 00 46 3c 40 00 46 44 @..t@.6.@.F<@.FD 40011070: 00 00 00 48 ...H =============================================================================== 40011004 : 40011004: 40 01 10 18 40 00 34 40 40 00 34 58 40 00 46 44 @...@.4@@.4X@.FD 40011014: 00 00 00 50 ...P =============================================================================== 400110b4 : 400110b4: 40 01 18 ec 40 00 37 28 40 00 46 3c 40 00 46 44 @...@.7(@.F<@.FD 400110c4: 00 00 00 40 ...@ =============================================================================== 40012368 : 40012368: 40 01 23 7c 40 00 36 9c 40 00 44 e0 40 00 44 e8 @.#|@.6.@.D.@.D. 40012378: 00 00 00 48 ...H =============================================================================== 40011118 : 40011118: 40 01 11 2c 40 00 37 f8 40 00 46 3c 40 00 40 64 @..,@.7.@.F<@.@d 40011128: 00 00 00 58 ...X =============================================================================== 400044d4 : #endif #include int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) { 400044d4: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED int rv = 0; IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 400044d8: c2 06 20 20 ld [ %i0 + 0x20 ], %g1 <== NOT EXECUTED 400044dc: c4 00 60 08 ld [ %g1 + 8 ], %g2 <== NOT EXECUTED return S_ISDIR( node->st_mode ); 400044e0: 07 00 00 3c sethi %hi(0xf000), %g3 <== NOT EXECUTED 400044e4: c2 00 a0 14 ld [ %g2 + 0x14 ], %g1 <== NOT EXECUTED 400044e8: 82 08 40 03 and %g1, %g3, %g1 <== NOT EXECUTED if ( IMFS_is_directory( node ) ) { 400044ec: 07 00 00 10 sethi %hi(0x4000), %g3 <== NOT EXECUTED 400044f0: 80 a0 40 03 cmp %g1, %g3 <== NOT EXECUTED 400044f4: 12 80 00 0f bne 40004530 <== NOT EXECUTED 400044f8: 01 00 00 00 nop <== NOT EXECUTED IMFS_directory_t *dir = (IMFS_directory_t *) node; if ( dir->mt_fs == NULL ) { 400044fc: c2 00 a0 4c ld [ %g2 + 0x4c ], %g1 <== NOT EXECUTED 40004500: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 40004504: 12 80 00 05 bne 40004518 <== NOT EXECUTED 40004508: 01 00 00 00 nop <== NOT EXECUTED dir->mt_fs = mt_entry; 4000450c: f0 20 a0 4c st %i0, [ %g2 + 0x4c ] <== NOT EXECUTED 40004510: 81 c7 e0 08 ret <== NOT EXECUTED 40004514: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED } else { errno = EBUSY; 40004518: 40 00 2b f0 call 4000f4d8 <__errno> <== NOT EXECUTED 4000451c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004520: 82 10 20 10 mov 0x10, %g1 <== NOT EXECUTED 40004524: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004528: 81 c7 e0 08 ret <== NOT EXECUTED 4000452c: 81 e8 00 00 restore <== NOT EXECUTED rv = -1; } } else { errno = ENOTDIR; 40004530: 40 00 2b ea call 4000f4d8 <__errno> <== NOT EXECUTED 40004534: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004538: 82 10 20 14 mov 0x14, %g1 <== NOT EXECUTED 4000453c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED rv = -1; } return rv; } 40004540: 81 c7 e0 08 ret <== NOT EXECUTED 40004544: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 400045e4 : void IMFS_node_destroy( IMFS_jnode_t *node ) { 400045e4: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED IMFS_assert( node->reference_count == 0 ); (*node->control->node_destroy)( node ); 400045e8: c2 06 20 38 ld [ %i0 + 0x38 ], %g1 <== NOT EXECUTED 400045ec: c2 00 60 0c ld [ %g1 + 0xc ], %g1 <== NOT EXECUTED 400045f0: 9f c0 40 00 call %g1 <== NOT EXECUTED 400045f4: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED } 400045f8: 81 c7 e0 08 ret <== NOT EXECUTED 400045fc: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004644 : void IMFS_node_destroy_default( IMFS_jnode_t *node ) { 40004644: 9d e3 bf a0 save %sp, -96, %sp if ( ( node->flags & IMFS_NODE_FLAG_NAME_ALLOCATED ) != 0 ) { 40004648: c2 16 20 12 lduh [ %i0 + 0x12 ], %g1 4000464c: 80 88 60 01 btst 1, %g1 40004650: 12 80 00 04 bne 40004660 <== NEVER TAKEN 40004654: 01 00 00 00 nop free( RTEMS_DECONST( char *, node->name ) ); } free( node ); 40004658: 40 00 01 3c call 40004b48 4000465c: 81 e8 00 00 restore free( RTEMS_DECONST( char *, node->name ) ); 40004660: 40 00 01 3a call 40004b48 <== NOT EXECUTED 40004664: d0 06 20 0c ld [ %i0 + 0xc ], %o0 <== NOT EXECUTED free( node ); 40004668: 40 00 01 38 call 40004b48 <== NOT EXECUTED 4000466c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40003458 : { return dir->mt_fs != NULL; } IMFS_jnode_t *IMFS_node_remove_directory( IMFS_jnode_t *node ) { 40003458: 9d e3 bf a0 save %sp, -96, %sp IMFS_directory_t *dir = (IMFS_directory_t *) node; if ( !rtems_chain_is_empty( &dir->Entries ) ) { 4000345c: c4 06 20 40 ld [ %i0 + 0x40 ], %g2 return &the_chain->Tail.Node; 40003460: 82 06 20 44 add %i0, 0x44, %g1 40003464: 80 a0 80 01 cmp %g2, %g1 40003468: 12 80 00 0c bne 40003498 <== NEVER TAKEN 4000346c: 01 00 00 00 nop errno = ENOTEMPTY; dir = NULL; } else if ( IMFS_is_mount_point( dir ) ) { 40003470: c2 06 20 4c ld [ %i0 + 0x4c ], %g1 40003474: 80 a0 60 00 cmp %g1, 0 40003478: 02 80 00 0c be 400034a8 <== ALWAYS TAKEN 4000347c: 01 00 00 00 nop errno = EBUSY; 40003480: 40 00 30 16 call 4000f4d8 <__errno> <== NOT EXECUTED 40003484: b0 10 20 00 clr %i0 ! 0 <== NOT EXECUTED 40003488: 82 10 20 10 mov 0x10, %g1 <== NOT EXECUTED 4000348c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED dir = NULL; } return &dir->Node; } 40003490: 81 c7 e0 08 ret <== NOT EXECUTED 40003494: 81 e8 00 00 restore <== NOT EXECUTED errno = ENOTEMPTY; 40003498: 40 00 30 10 call 4000f4d8 <__errno> <== NOT EXECUTED 4000349c: b0 10 20 00 clr %i0 <== NOT EXECUTED 400034a0: 82 10 20 5a mov 0x5a, %g1 <== NOT EXECUTED 400034a4: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 400034a8: 81 c7 e0 08 ret 400034ac: 81 e8 00 00 restore =============================================================================== 4000490c : for( i=0; ((iname[i] != '\0')); i++ ) 4000490c: 80 a2 a0 00 cmp %o2, 0 <== NOT EXECUTED 40004910: 02 80 00 16 be 40004968 <== NOT EXECUTED 40004914: c6 02 20 08 ld [ %o0 + 8 ], %g3 <== NOT EXECUTED 40004918: c2 00 e0 40 ld [ %g3 + 0x40 ], %g1 <== NOT EXECUTED 4000491c: c4 48 40 00 ldsb [ %g1 ], %g2 <== NOT EXECUTED 40004920: 90 10 20 00 clr %o0 <== NOT EXECUTED 40004924: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 40004928: 12 80 00 07 bne 40004944 <== NOT EXECUTED 4000492c: c2 08 40 00 ldub [ %g1 ], %g1 <== NOT EXECUTED 40004930: 30 80 00 0c b,a 40004960 <== NOT EXECUTED 40004934: c4 48 40 08 ldsb [ %g1 + %o0 ], %g2 <== NOT EXECUTED 40004938: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4000493c: 02 80 00 07 be 40004958 <== NOT EXECUTED 40004940: c2 08 40 08 ldub [ %g1 + %o0 ], %g1 <== NOT EXECUTED buf[i] = sym_link->name[i]; 40004944: c2 2a 40 08 stb %g1, [ %o1 + %o0 ] <== NOT EXECUTED for( i=0; ((iname[i] != '\0')); i++ ) 40004948: 90 02 20 01 inc %o0 <== NOT EXECUTED 4000494c: 80 a2 80 08 cmp %o2, %o0 <== NOT EXECUTED 40004950: 32 bf ff f9 bne,a 40004934 <== NOT EXECUTED 40004954: c2 00 e0 40 ld [ %g3 + 0x40 ], %g1 <== NOT EXECUTED } 40004958: 81 c3 e0 08 retl <== NOT EXECUTED 4000495c: 01 00 00 00 nop <== NOT EXECUTED 40004960: 81 c3 e0 08 retl <== NOT EXECUTED 40004964: 01 00 00 00 nop <== NOT EXECUTED for( i=0; ((iname[i] != '\0')); i++ ) 40004968: 81 c3 e0 08 retl <== NOT EXECUTED 4000496c: 90 10 20 00 clr %o0 ! 0 <== NOT EXECUTED =============================================================================== 40004670 : const rtems_filesystem_location_info_t *oldloc, const rtems_filesystem_location_info_t *newparentloc, const char *name, size_t namelen ) { 40004670: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED IMFS_jnode_t *node = oldloc->node_access; 40004674: fa 06 60 08 ld [ %i1 + 8 ], %i5 <== NOT EXECUTED /* * FIXME: Due to insufficient checks we can create inaccessible nodes with * this operation. */ if ( node->Parent == NULL ) { 40004678: c2 07 60 08 ld [ %i5 + 8 ], %g1 <== NOT EXECUTED 4000467c: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 40004680: 02 80 00 36 be 40004758 <== NOT EXECUTED 40004684: f4 06 a0 08 ld [ %i2 + 8 ], %i2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); } if ( namelen >= IMFS_NAME_MAX ) { 40004688: 80 a7 20 fe cmp %i4, 0xfe <== NOT EXECUTED 4000468c: 18 80 00 27 bgu 40004728 <== NOT EXECUTED 40004690: 01 00 00 00 nop <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); } allocated_name = malloc( namelen ); 40004694: 40 00 02 3c call 40004f84 <== NOT EXECUTED 40004698: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED if ( allocated_name == NULL ) { 4000469c: b2 92 20 00 orcc %o0, 0, %i1 <== NOT EXECUTED 400046a0: 02 80 00 28 be 40004740 <== NOT EXECUTED 400046a4: 94 10 00 1c mov %i4, %o2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); } memcpy( allocated_name, name, namelen ); 400046a8: 40 00 2c 19 call 4000f70c <== NOT EXECUTED 400046ac: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED if ( ( node->flags & IMFS_NODE_FLAG_NAME_ALLOCATED ) != 0 ) { 400046b0: c2 17 60 12 lduh [ %i5 + 0x12 ], %g1 <== NOT EXECUTED 400046b4: 80 88 60 01 btst 1, %g1 <== NOT EXECUTED 400046b8: 12 80 00 18 bne 40004718 <== NOT EXECUTED 400046bc: 01 00 00 00 nop <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 400046c0: c6 07 40 00 ld [ %i5 ], %g3 <== NOT EXECUTED previous = the_node->previous; 400046c4: c4 07 60 04 ld [ %i5 + 4 ], %g2 <== NOT EXECUTED free( RTEMS_DECONST( char *, node->name ) ); } node->name = allocated_name; 400046c8: f2 27 60 0c st %i1, [ %i5 + 0xc ] <== NOT EXECUTED node->namelen = namelen; node->flags |= IMFS_NODE_FLAG_NAME_ALLOCATED; 400046cc: 82 10 60 01 or %g1, 1, %g1 <== NOT EXECUTED node->namelen = namelen; 400046d0: f8 37 60 10 sth %i4, [ %i5 + 0x10 ] <== NOT EXECUTED return &the_chain->Tail.Node; 400046d4: 88 06 a0 44 add %i2, 0x44, %g4 <== NOT EXECUTED node->flags |= IMFS_NODE_FLAG_NAME_ALLOCATED; 400046d8: c2 37 60 12 sth %g1, [ %i5 + 0x12 ] <== NOT EXECUTED _Timecounter_Getbintime( &now ); 400046dc: 90 07 bf f0 add %fp, -16, %o0 <== NOT EXECUTED next->previous = previous; 400046e0: c4 20 e0 04 st %g2, [ %g3 + 4 ] <== NOT EXECUTED IMFS_remove_from_directory( node ); IMFS_add_to_directory( new_parent, node ); IMFS_update_ctime( node ); return 0; 400046e4: b0 10 20 00 clr %i0 <== NOT EXECUTED previous->next = next; 400046e8: c6 20 80 00 st %g3, [ %g2 ] <== NOT EXECUTED Chain_Node *old_last; _Assert( _Chain_Is_node_off_chain( the_node ) ); tail = _Chain_Tail( the_chain ); old_last = tail->previous; 400046ec: c2 06 a0 48 ld [ %i2 + 0x48 ], %g1 <== NOT EXECUTED entry_node->Parent = dir_node; 400046f0: f4 27 60 08 st %i2, [ %i5 + 8 ] <== NOT EXECUTED the_node->next = tail; 400046f4: c8 27 40 00 st %g4, [ %i5 ] <== NOT EXECUTED tail->previous = the_node; 400046f8: fa 26 a0 48 st %i5, [ %i2 + 0x48 ] <== NOT EXECUTED old_last->next = the_node; 400046fc: fa 20 40 00 st %i5, [ %g1 ] <== NOT EXECUTED _Timecounter_Getbintime( &now ); 40004700: 40 00 12 5a call 40009068 <_Timecounter_Getbintime> <== NOT EXECUTED 40004704: c2 27 60 04 st %g1, [ %i5 + 4 ] <== NOT EXECUTED return now.sec; 40004708: c4 1f bf f0 ldd [ %fp + -16 ], %g2 <== NOT EXECUTED jnode->stat_ctime = _IMFS_get_time(); 4000470c: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] <== NOT EXECUTED } 40004710: 81 c7 e0 08 ret <== NOT EXECUTED 40004714: 81 e8 00 00 restore <== NOT EXECUTED free( RTEMS_DECONST( char *, node->name ) ); 40004718: 40 00 01 0c call 40004b48 <== NOT EXECUTED 4000471c: d0 07 60 0c ld [ %i5 + 0xc ], %o0 <== NOT EXECUTED 40004720: 10 bf ff e8 b 400046c0 <== NOT EXECUTED 40004724: c2 17 60 12 lduh [ %i5 + 0x12 ], %g1 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 40004728: 40 00 2b 6c call 4000f4d8 <__errno> <== NOT EXECUTED 4000472c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004730: 82 10 20 5b mov 0x5b, %g1 <== NOT EXECUTED 40004734: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004738: 81 c7 e0 08 ret <== NOT EXECUTED 4000473c: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 40004740: 40 00 2b 66 call 4000f4d8 <__errno> <== NOT EXECUTED 40004744: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004748: 82 10 20 0c mov 0xc, %g1 <== NOT EXECUTED 4000474c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004750: 81 c7 e0 08 ret <== NOT EXECUTED 40004754: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 40004758: 40 00 2b 60 call 4000f4d8 <__errno> <== NOT EXECUTED 4000475c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004760: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 40004764: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004768: 81 c7 e0 08 ret <== NOT EXECUTED 4000476c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004770 : int IMFS_rmnod( const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *loc ) { 40004770: 9d e3 bf a0 save %sp, -96, %sp int rv = 0; IMFS_jnode_t *node = loc->node_access; 40004774: d0 06 60 08 ld [ %i1 + 8 ], %o0 node = (*node->control->node_remove)( node ); 40004778: c2 02 20 38 ld [ %o0 + 0x38 ], %g1 4000477c: c2 00 60 08 ld [ %g1 + 8 ], %g1 40004780: 9f c0 40 00 call %g1 40004784: 01 00 00 00 nop if ( node != NULL ) { 40004788: 80 a2 20 00 cmp %o0, 0 4000478c: 22 80 00 11 be,a 400047d0 <== NEVER TAKEN 40004790: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED --node->reference_count; 40004794: c4 12 20 18 lduh [ %o0 + 0x18 ], %g2 --node->st_nlink; 40004798: c2 12 20 1a lduh [ %o0 + 0x1a ], %g1 4000479c: 82 00 7f ff add %g1, -1, %g1 --node->reference_count; 400047a0: 84 00 bf ff add %g2, -1, %g2 --node->st_nlink; 400047a4: c2 32 20 1a sth %g1, [ %o0 + 0x1a ] --node->reference_count; 400047a8: c4 32 20 18 sth %g2, [ %o0 + 0x18 ] if ( node->Parent != NULL ) { 400047ac: c2 02 20 08 ld [ %o0 + 8 ], %g1 400047b0: 80 a0 60 00 cmp %g1, 0 400047b4: 02 80 00 07 be 400047d0 <== NEVER TAKEN 400047b8: b0 10 20 00 clr %i0 node->Parent = NULL; 400047bc: c0 22 20 08 clr [ %o0 + 8 ] next = the_node->next; 400047c0: c4 02 00 00 ld [ %o0 ], %g2 previous = the_node->previous; 400047c4: c2 02 20 04 ld [ %o0 + 4 ], %g1 next->previous = previous; 400047c8: c2 20 a0 04 st %g1, [ %g2 + 4 ] previous->next = next; 400047cc: c4 20 40 00 st %g2, [ %g1 ] 400047d0: 81 c7 e0 08 ret 400047d4: 81 e8 00 00 restore } else { rv = -1; } return rv; } 400047d8: 81 c7 e0 08 ret <== NOT EXECUTED 400047dc: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 400048a8 : { 400048a8: 9d e3 bf 98 save %sp, -104, %sp <== NOT EXECUTED sizeof( IMFS_sym_link_t ) + strlen( target ) + 1, 400048ac: 40 00 2c ba call 4000fb94 <== NOT EXECUTED 400048b0: 90 10 00 1b mov %i3, %o0 <== NOT EXECUTED new_node = IMFS_create_node( 400048b4: f6 23 a0 5c st %i3, [ %sp + 0x5c ] <== NOT EXECUTED 400048b8: 94 02 20 49 add %o0, 0x49, %o2 <== NOT EXECUTED 400048bc: 98 10 00 1a mov %i2, %o4 <== NOT EXECUTED 400048c0: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 400048c4: 1b 00 00 28 sethi %hi(0xa000), %o5 <== NOT EXECUTED 400048c8: 96 10 00 19 mov %i1, %o3 <== NOT EXECUTED 400048cc: 9a 13 61 ff or %o5, 0x1ff, %o5 <== NOT EXECUTED 400048d0: 13 10 00 44 sethi %hi(0x40011000), %o1 <== NOT EXECUTED return 0; 400048d4: b0 10 20 00 clr %i0 <== NOT EXECUTED new_node = IMFS_create_node( 400048d8: 40 00 25 64 call 4000de68 <== NOT EXECUTED 400048dc: 92 12 61 ac or %o1, 0x1ac, %o1 <== NOT EXECUTED if ( new_node == NULL ) { 400048e0: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 400048e4: 02 80 00 04 be 400048f4 <== NOT EXECUTED 400048e8: 01 00 00 00 nop <== NOT EXECUTED } 400048ec: 81 c7 e0 08 ret <== NOT EXECUTED 400048f0: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 400048f4: 40 00 2a f9 call 4000f4d8 <__errno> <== NOT EXECUTED 400048f8: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 400048fc: 82 10 20 0c mov 0xc, %g1 <== NOT EXECUTED 40004900: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED } 40004904: 81 c7 e0 08 ret <== NOT EXECUTED 40004908: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004970 : #endif #include int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) { 40004970: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED int rv = 0; IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 40004974: c2 06 20 20 ld [ %i0 + 0x20 ], %g1 <== NOT EXECUTED 40004978: c4 00 60 08 ld [ %g1 + 8 ], %g2 <== NOT EXECUTED return S_ISDIR( node->st_mode ); 4000497c: 07 00 00 3c sethi %hi(0xf000), %g3 <== NOT EXECUTED 40004980: c2 00 a0 14 ld [ %g2 + 0x14 ], %g1 <== NOT EXECUTED 40004984: 82 08 40 03 and %g1, %g3, %g1 <== NOT EXECUTED if ( IMFS_is_directory( node ) ) { 40004988: 07 00 00 10 sethi %hi(0x4000), %g3 <== NOT EXECUTED 4000498c: 80 a0 40 03 cmp %g1, %g3 <== NOT EXECUTED 40004990: 12 80 00 0f bne 400049cc <== NOT EXECUTED 40004994: 01 00 00 00 nop <== NOT EXECUTED IMFS_directory_t *dir = (IMFS_directory_t *) node; if ( dir->mt_fs == mt_entry ) { 40004998: c2 00 a0 4c ld [ %g2 + 0x4c ], %g1 <== NOT EXECUTED 4000499c: 80 a0 40 18 cmp %g1, %i0 <== NOT EXECUTED 400049a0: 12 80 00 05 bne 400049b4 <== NOT EXECUTED 400049a4: 01 00 00 00 nop <== NOT EXECUTED dir->mt_fs = NULL; 400049a8: c0 20 a0 4c clr [ %g2 + 0x4c ] <== NOT EXECUTED 400049ac: 81 c7 e0 08 ret <== NOT EXECUTED 400049b0: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED } else { errno = EINVAL; 400049b4: 40 00 2a c9 call 4000f4d8 <__errno> <== NOT EXECUTED 400049b8: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 400049bc: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 400049c0: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 400049c4: 81 c7 e0 08 ret <== NOT EXECUTED 400049c8: 81 e8 00 00 restore <== NOT EXECUTED rv = -1; } } else { errno = ENOTDIR; 400049cc: 40 00 2a c3 call 4000f4d8 <__errno> <== NOT EXECUTED 400049d0: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 400049d4: 82 10 20 14 mov 0x14, %g1 <== NOT EXECUTED 400049d8: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED rv = -1; } return rv; } 400049dc: 81 c7 e0 08 ret <== NOT EXECUTED 400049e0: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 400049e4 : int IMFS_utime( const rtems_filesystem_location_info_t *loc, time_t actime, time_t modtime ) { 400049e4: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED IMFS_jnode_t *the_jnode; the_jnode = (IMFS_jnode_t *) loc->node_access; 400049e8: fa 06 20 08 ld [ %i0 + 8 ], %i5 <== NOT EXECUTED { 400049ec: 84 10 00 1b mov %i3, %g2 <== NOT EXECUTED 400049f0: b0 10 00 19 mov %i1, %i0 <== NOT EXECUTED 400049f4: 86 10 00 1c mov %i4, %g3 <== NOT EXECUTED 400049f8: b2 10 00 1a mov %i2, %i1 <== NOT EXECUTED the_jnode->stat_atime = actime; the_jnode->stat_mtime = modtime; 400049fc: c4 3f 60 28 std %g2, [ %i5 + 0x28 ] <== NOT EXECUTED the_jnode->stat_ctime = time( NULL ); 40004a00: 90 10 20 00 clr %o0 <== NOT EXECUTED the_jnode->stat_atime = actime; 40004a04: f0 3f 60 20 std %i0, [ %i5 + 0x20 ] <== NOT EXECUTED the_jnode->stat_ctime = time( NULL ); 40004a08: 40 00 2c 93 call 4000fc54