=============================================================================== 400145a0 : 400145a0: 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 ff ................ 400145b0: 00 00 00 ff 00 00 00 02 00 00 00 01 00 00 00 02 ................ 400145c0: 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 ................ 400145d0: 28 64 65 66 61 75 6c 74 29 00 00 00 (default)... =============================================================================== 400035a0 : int IMFS_chown( const rtems_filesystem_location_info_t *loc, uid_t owner, gid_t group ) { 400035a0: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED IMFS_jnode_t *jnode; jnode = (IMFS_jnode_t *) loc->node_access; 400035a4: fa 06 20 08 ld [ %i0 + 8 ], %i5 <== NOT EXECUTED jnode->st_uid = owner; 400035a8: 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 ); 400035ac: 90 07 bf f0 add %fp, -16, %o0 <== NOT EXECUTED jnode->st_gid = group; 400035b0: f4 37 60 1e sth %i2, [ %i5 + 0x1e ] <== NOT EXECUTED 400035b4: 40 00 16 18 call 40008e14 <_Timecounter_Getbintime> <== NOT EXECUTED 400035b8: b0 10 20 00 clr %i0 <== NOT EXECUTED return now.sec; 400035bc: 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(); 400035c0: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] <== NOT EXECUTED IMFS_update_ctime( jnode ); return 0; } 400035c4: 81 c7 e0 08 ret <== NOT EXECUTED 400035c8: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4001053c : const char *name, size_t namelen, mode_t mode, void *arg ) { 4001053c: 9d e3 bf a0 save %sp, -96, %sp IMFS_jnode_t *allocated_node; IMFS_jnode_t *node; allocated_node = calloc( 1, node_size + namelen ); 40010540: 90 10 20 01 mov 1, %o0 40010544: 7f ff d2 06 call 40004d5c 40010548: 92 06 80 1c add %i2, %i4, %o1 if ( allocated_node == NULL ) { 4001054c: a0 92 20 00 orcc %o0, 0, %l0 40010550: 02 80 00 1c be 400105c0 40010554: da 07 a0 5c ld [ %fp + 0x5c ], %o5 errno = ENOMEM; return NULL; } node = IMFS_initialize_node( 40010558: 98 10 00 1d mov %i5, %o4 4001055c: 96 10 00 1c mov %i4, %o3 40010560: 94 04 00 1a add %l0, %i2, %o2 40010564: 7f ff d0 c9 call 40004888 40010568: 92 10 00 19 mov %i1, %o1 (char *) allocated_node + node_size, namelen, mode, arg ); if ( node != NULL ) { 4001056c: ba 92 20 00 orcc %o0, 0, %i5 40010570: 02 80 00 0f be 400105ac <== NEVER TAKEN 40010574: 94 10 00 1c mov %i4, %o2 IMFS_jnode_t *parent = parentloc->node_access; memcpy( RTEMS_DECONST( char *, node->name ), name, namelen ); 40010578: d0 07 60 0c ld [ %i5 + 0xc ], %o0 IMFS_jnode_t *parent = parentloc->node_access; 4001057c: f4 06 20 08 ld [ %i0 + 8 ], %i2 memcpy( RTEMS_DECONST( char *, node->name ), name, namelen ); 40010580: 40 00 07 fa call 40012568 40010584: 92 10 00 1b mov %i3, %o1 old_last = tail->previous; 40010588: c2 06 a0 48 ld [ %i2 + 0x48 ], %g1 return &the_chain->Tail.Node; 4001058c: 84 06 a0 44 add %i2, 0x44, %g2 entry_node->Parent = dir_node; 40010590: f4 27 60 08 st %i2, [ %i5 + 8 ] the_node->next = tail; 40010594: c4 27 40 00 st %g2, [ %i5 ] tail->previous = the_node; 40010598: fa 26 a0 48 st %i5, [ %i2 + 0x48 ] old_last->next = the_node; 4001059c: fa 20 40 00 st %i5, [ %g1 ] the_node->previous = old_last; 400105a0: c2 27 60 04 st %g1, [ %i5 + 4 ] } else { free( allocated_node ); } return node; } 400105a4: 81 c7 e0 08 ret 400105a8: 91 e8 00 1d restore %g0, %i5, %o0 free( allocated_node ); 400105ac: 90 10 00 10 mov %l0, %o0 <== NOT EXECUTED 400105b0: 7f ff d2 6c call 40004f60 <== NOT EXECUTED 400105b4: b0 10 00 1d mov %i5, %i0 <== NOT EXECUTED } 400105b8: 81 c7 e0 08 ret <== NOT EXECUTED 400105bc: 81 e8 00 00 restore <== NOT EXECUTED errno = ENOMEM; 400105c0: 40 00 07 ad call 40012474 <__errno> 400105c4: ba 10 20 00 clr %i5 400105c8: 82 10 20 0c mov 0xc, %g1 return NULL; 400105cc: 10 bf ff f6 b 400105a4 400105d0: c2 22 00 00 st %g1, [ %o0 ] =============================================================================== 40003a10 : int IMFS_fchmod( const rtems_filesystem_location_info_t *loc, mode_t mode ) { 40003a10: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED IMFS_jnode_t *jnode; jnode = loc->node_access; 40003a14: fa 06 20 08 ld [ %i0 + 8 ], %i5 <== NOT EXECUTED jnode->st_mode = mode; 40003a18: f2 27 60 14 st %i1, [ %i5 + 0x14 ] <== NOT EXECUTED _Timecounter_Getbintime( &now ); 40003a1c: 40 00 14 fe call 40008e14 <_Timecounter_Getbintime> <== NOT EXECUTED 40003a20: 90 07 bf f0 add %fp, -16, %o0 <== NOT EXECUTED return now.sec; 40003a24: c4 1f bf f0 ldd [ %fp + -16 ], %g2 <== NOT EXECUTED jnode->stat_ctime = _IMFS_get_time(); 40003a28: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] <== NOT EXECUTED IMFS_update_ctime( jnode ); return 0; } 40003a2c: 81 c7 e0 08 ret <== NOT EXECUTED 40003a30: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED =============================================================================== 400285c8 : ((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next)) void IMFS_fsunmount( rtems_filesystem_mount_table_entry_t *temp_mt_entry ) { 400285c8: 9d e3 bf 88 save %sp, -120, %sp <== NOT EXECUTED /* * Traverse tree that starts at the mt_fs_root and deallocate memory * associated memory space */ loc = temp_mt_entry->mt_fs_root->location; 400285cc: c2 06 20 24 ld [ %i0 + 0x24 ], %g1 <== NOT EXECUTED 400285d0: c4 00 60 08 ld [ %g1 + 8 ], %g2 <== NOT EXECUTED 400285d4: f6 00 40 00 ld [ %g1 ], %i3 <== NOT EXECUTED 400285d8: f8 00 60 04 ld [ %g1 + 4 ], %i4 <== NOT EXECUTED 400285dc: c8 00 60 0c ld [ %g1 + 0xc ], %g4 <== NOT EXECUTED 400285e0: c6 00 60 10 ld [ %g1 + 0x10 ], %g3 <== NOT EXECUTED 400285e4: c2 00 60 14 ld [ %g1 + 0x14 ], %g1 <== NOT EXECUTED jnode = (IMFS_jnode_t *)loc.node_access; 400285e8: ba 10 00 02 mov %g2, %i5 <== NOT EXECUTED loc = temp_mt_entry->mt_fs_root->location; 400285ec: c4 27 bf f0 st %g2, [ %fp + -16 ] <== NOT EXECUTED return S_ISDIR( node->st_mode ); 400285f0: 35 00 00 3c sethi %hi(0xf000), %i2 <== NOT EXECUTED 400285f4: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED 400285f8: c2 00 a0 14 ld [ %g2 + 0x14 ], %g1 <== NOT EXECUTED loc->handlers = node->control->handlers; 400285fc: c4 07 60 38 ld [ %i5 + 0x38 ], %g2 <== NOT EXECUTED 40028600: c4 00 80 00 ld [ %g2 ], %g2 <== NOT EXECUTED 40028604: c6 27 bf f8 st %g3, [ %fp + -8 ] <== NOT EXECUTED return S_ISDIR( node->st_mode ); 40028608: 82 08 40 1a and %g1, %i2, %g1 <== NOT EXECUTED 4002860c: f6 27 bf e8 st %i3, [ %fp + -24 ] <== NOT EXECUTED do { next = jnode->Parent; loc.node_access = (void *)jnode; IMFS_Set_handlers( &loc ); if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) { 40028610: 37 00 00 10 sethi %hi(0x4000), %i3 <== NOT EXECUTED loc = temp_mt_entry->mt_fs_root->location; 40028614: f8 27 bf ec st %i4, [ %fp + -20 ] <== NOT EXECUTED if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) { 40028618: 80 a0 40 1b cmp %g1, %i3 <== NOT EXECUTED next = jnode->Parent; 4002861c: f8 07 60 08 ld [ %i5 + 8 ], %i4 <== NOT EXECUTED loc = temp_mt_entry->mt_fs_root->location; 40028620: c8 27 bf f4 st %g4, [ %fp + -12 ] <== NOT EXECUTED loc.node_access = (void *)jnode; 40028624: fa 27 bf f0 st %i5, [ %fp + -16 ] <== NOT EXECUTED if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) { 40028628: 12 80 00 14 bne 40028678 <== NOT EXECUTED 4002862c: c4 27 bf f8 st %g2, [ %fp + -8 ] <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 40028630: c4 07 60 40 ld [ %i5 + 0x40 ], %g2 <== NOT EXECUTED return &the_chain->Tail.Node; 40028634: 82 07 60 44 add %i5, 0x44, %g1 <== NOT EXECUTED 40028638: 80 a0 80 01 cmp %g2, %g1 <== NOT EXECUTED 4002863c: 02 80 00 10 be 4002867c <== NOT EXECUTED 40028640: 92 07 bf e8 add %fp, -24, %o1 <== NOT EXECUTED if ( IMFS_is_directory( jnode ) ) { if ( jnode_has_children( jnode ) ) jnode = jnode_get_first_child( jnode ); } } } while (jnode != NULL); 40028644: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 40028648: 02 80 00 23 be 400286d4 <== NOT EXECUTED 4002864c: b8 10 00 02 mov %g2, %i4 <== NOT EXECUTED 40028650: c2 00 a0 14 ld [ %g2 + 0x14 ], %g1 <== NOT EXECUTED 40028654: ba 10 00 1c mov %i4, %i5 <== NOT EXECUTED loc->handlers = node->control->handlers; 40028658: c4 07 60 38 ld [ %i5 + 0x38 ], %g2 <== NOT EXECUTED 4002865c: c4 00 80 00 ld [ %g2 ], %g2 <== NOT EXECUTED next = jnode->Parent; 40028660: f8 07 60 08 ld [ %i5 + 8 ], %i4 <== NOT EXECUTED loc.node_access = (void *)jnode; 40028664: fa 27 bf f0 st %i5, [ %fp + -16 ] <== NOT EXECUTED return S_ISDIR( node->st_mode ); 40028668: 82 08 40 1a and %g1, %i2, %g1 <== NOT EXECUTED if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) { 4002866c: 80 a0 40 1b cmp %g1, %i3 <== NOT EXECUTED 40028670: 02 bf ff f0 be 40028630 <== NOT EXECUTED 40028674: c4 27 bf f8 st %g2, [ %fp + -8 ] <== NOT EXECUTED result = IMFS_rmnod( NULL, &loc ); 40028678: 92 07 bf e8 add %fp, -24, %o1 <== NOT EXECUTED 4002867c: 7f ff 95 90 call 4000dcbc <== NOT EXECUTED 40028680: 90 10 20 00 clr %o0 <== NOT EXECUTED if ( result != 0 ) 40028684: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40028688: 12 80 00 15 bne 400286dc <== NOT EXECUTED 4002868c: 11 37 ab 6f sethi %hi(0xdeadbc00), %o0 <== NOT EXECUTED IMFS_node_destroy( jnode ); 40028690: 7f ff 95 28 call 4000db30 <== NOT EXECUTED 40028694: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED if ( jnode != NULL ) { 40028698: 80 a7 20 00 cmp %i4, 0 <== NOT EXECUTED 4002869c: 02 80 00 0e be 400286d4 <== NOT EXECUTED 400286a0: 01 00 00 00 nop <== NOT EXECUTED 400286a4: c2 07 20 14 ld [ %i4 + 0x14 ], %g1 <== NOT EXECUTED 400286a8: 84 08 40 1a and %g1, %i2, %g2 <== NOT EXECUTED if ( IMFS_is_directory( jnode ) ) { 400286ac: 80 a0 80 1b cmp %g2, %i3 <== NOT EXECUTED 400286b0: 32 bf ff ea bne,a 40028658 <== NOT EXECUTED 400286b4: ba 10 00 1c mov %i4, %i5 <== NOT EXECUTED 400286b8: c4 07 20 40 ld [ %i4 + 0x40 ], %g2 <== NOT EXECUTED if ( jnode_has_children( jnode ) ) 400286bc: 86 07 20 44 add %i4, 0x44, %g3 <== NOT EXECUTED 400286c0: 80 a0 80 03 cmp %g2, %g3 <== NOT EXECUTED 400286c4: 12 bf ff e1 bne 40028648 <== NOT EXECUTED 400286c8: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED } while (jnode != NULL); 400286cc: 10 bf ff e3 b 40028658 <== NOT EXECUTED 400286d0: ba 10 00 1c mov %i4, %i5 <== NOT EXECUTED } 400286d4: 81 c7 e0 08 ret <== NOT EXECUTED 400286d8: 81 e8 00 00 restore <== NOT EXECUTED rtems_fatal_error_occurred( 0xdeadbeef ); 400286dc: 7f ff e3 07 call 400212f8 <== NOT EXECUTED 400286e0: 90 12 22 ef or %o0, 0x2ef, %o0 <== NOT EXECUTED 400286e4: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 4000c8d8 : int IMFS_initialize( rtems_filesystem_mount_table_entry_t *mt_entry, const void *data ) { 4000c8d8: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) ); 4000c8dc: 92 10 20 58 mov 0x58, %o1 <== NOT EXECUTED 4000c8e0: 40 00 08 23 call 4000e96c <== NOT EXECUTED 4000c8e4: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED IMFS_mount_data mount_data = { 4000c8e8: 03 10 01 8d sethi %hi(0x40063400), %g1 <== NOT EXECUTED 4000c8ec: 82 10 61 7c or %g1, 0x17c, %g1 ! 4006357c <== NOT EXECUTED 4000c8f0: d0 27 bf f4 st %o0, [ %fp + -12 ] <== NOT EXECUTED .fs_info = fs_info, .ops = &IMFS_ops, .mknod_controls = &IMFS_default_mknod_controls }; if ( fs_info == NULL ) { 4000c8f4: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED IMFS_mount_data mount_data = { 4000c8f8: c2 27 bf f8 st %g1, [ %fp + -8 ] <== NOT EXECUTED 4000c8fc: 03 10 01 8d sethi %hi(0x40063400), %g1 <== NOT EXECUTED 4000c900: 82 10 61 6c or %g1, 0x16c, %g1 ! 4006356c <== NOT EXECUTED if ( fs_info == NULL ) { 4000c904: 02 80 00 07 be 4000c920 <== NOT EXECUTED 4000c908: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); } return IMFS_initialize_support( mt_entry, &mount_data ); 4000c90c: 92 07 bf f4 add %fp, -12, %o1 <== NOT EXECUTED 4000c910: 40 00 00 11 call 4000c954 <== NOT EXECUTED 4000c914: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED } 4000c918: 81 c7 e0 08 ret <== NOT EXECUTED 4000c91c: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 4000c920: 40 00 d6 1d call 40042194 <__errno> <== NOT EXECUTED 4000c924: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4000c928: 82 10 20 0c mov 0xc, %g1 <== NOT EXECUTED 4000c92c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4000c930: 81 c7 e0 08 ret <== NOT EXECUTED 4000c934: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004888 : const char *name, size_t namelen, mode_t mode, void *arg ) { 40004888: 9d e3 bf 90 save %sp, -112, %sp struct timeval tv; if ( namelen > IMFS_NAME_MAX ) { 4000488c: 80 a6 e0 ff cmp %i3, 0xff 40004890: 18 80 00 19 bgu 400048f4 <== NEVER TAKEN 40004894: 92 10 20 00 clr %o1 errno = ENAMETOOLONG; return NULL; } gettimeofday( &tv, 0 ); 40004898: 40 00 01 e0 call 40005018 4000489c: 90 07 bf f0 add %fp, -16, %o0 /* * Fill in the basic information */ node->name = name; node->namelen = namelen; node->reference_count = 1; 400048a0: 03 00 00 40 sethi %hi(0x10000), %g1 node->name = name; 400048a4: f4 26 20 0c st %i2, [ %i0 + 0xc ] node->reference_count = 1; 400048a8: 82 10 60 01 or %g1, 1, %g1 node->namelen = namelen; 400048ac: f6 36 20 10 sth %i3, [ %i0 + 0x10 ] node->reference_count = 1; 400048b0: c2 26 20 18 st %g1, [ %i0 + 0x18 ] node->st_nlink = 1; node->control = node_control; 400048b4: 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(); 400048b8: 40 00 01 d2 call 40005000 400048bc: f8 26 20 14 st %i4, [ %i0 + 0x14 ] node->st_gid = getegid(); 400048c0: 40 00 01 ca call 40004fe8 400048c4: d0 36 20 1c sth %o0, [ %i0 + 0x1c ] /* * Now set all the times. */ node->stat_atime = (time_t) tv.tv_sec; 400048c8: c4 1f bf f0 ldd [ %fp + -16 ], %g2 node->st_gid = getegid(); 400048cc: 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 ); 400048d0: 92 10 00 1d mov %i5, %o1 node->stat_atime = (time_t) tv.tv_sec; 400048d4: c4 3e 20 20 std %g2, [ %i0 + 0x20 ] node->stat_mtime = (time_t) tv.tv_sec; 400048d8: c4 3e 20 28 std %g2, [ %i0 + 0x28 ] node->stat_ctime = (time_t) tv.tv_sec; 400048dc: c4 3e 20 30 std %g2, [ %i0 + 0x30 ] return (*node_control->node_initialize)( node, arg ); 400048e0: c2 06 60 04 ld [ %i1 + 4 ], %g1 400048e4: 9f c0 40 00 call %g1 400048e8: 90 10 00 18 mov %i0, %o0 } 400048ec: 81 c7 e0 08 ret 400048f0: 91 e8 00 08 restore %g0, %o0, %o0 errno = ENAMETOOLONG; 400048f4: 40 00 36 e0 call 40012474 <__errno> <== NOT EXECUTED 400048f8: b0 10 20 00 clr %i0 <== NOT EXECUTED 400048fc: 82 10 20 5b mov 0x5b, %g1 <== NOT EXECUTED 40004900: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED return NULL; 40004904: 81 c7 e0 08 ret <== NOT EXECUTED 40004908: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40003a84 : { 40003a84: 9d e3 bf a0 save %sp, -96, %sp IMFS_fs_info_t *fs_info = mount_data->fs_info; 40003a88: fa 06 40 00 ld [ %i1 ], %i5 fs_info->mknod_controls = mount_data->mknod_controls; 40003a8c: c2 06 60 08 ld [ %i1 + 8 ], %g1 40003a90: c2 27 60 50 st %g1, [ %i5 + 0x50 ] root_node = IMFS_initialize_node( 40003a94: 9a 10 20 00 clr %o5 40003a98: d2 00 40 00 ld [ %g1 ], %o1 40003a9c: 96 10 20 00 clr %o3 40003aa0: 19 00 00 10 sethi %hi(0x4000), %o4 40003aa4: 90 10 00 1d mov %i5, %o0 40003aa8: 98 13 21 ed or %o4, 0x1ed, %o4 40003aac: 15 10 00 4f sethi %hi(0x40013c00), %o2 40003ab0: 40 00 03 76 call 40004888 40003ab4: 94 12 a3 58 or %o2, 0x358, %o2 ! 40013f58 mt_entry->ops = mount_data->ops; 40003ab8: c2 06 60 04 ld [ %i1 + 4 ], %g1 loc->handlers = node->control->handlers; 40003abc: c4 02 20 38 ld [ %o0 + 0x38 ], %g2 40003ac0: c2 26 20 0c st %g1, [ %i0 + 0xc ] mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS; 40003ac4: 03 10 00 51 sethi %hi(0x40014400), %g1 40003ac8: 82 10 61 a0 or %g1, 0x1a0, %g1 ! 400145a0 mt_entry->fs_info = fs_info; 40003acc: fa 26 20 08 st %i5, [ %i0 + 8 ] mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS; 40003ad0: c2 26 20 2c st %g1, [ %i0 + 0x2c ] 40003ad4: c4 00 80 00 ld [ %g2 ], %g2 mt_entry->mt_fs_root->location.node_access = root_node; 40003ad8: c2 06 20 24 ld [ %i0 + 0x24 ], %g1 40003adc: d0 20 60 08 st %o0, [ %g1 + 8 ] 40003ae0: c4 20 60 10 st %g2, [ %g1 + 0x10 ] IMFS_determine_bytes_per_block( 40003ae4: 03 10 00 56 sethi %hi(0x40015800), %g1 40003ae8: c6 00 60 90 ld [ %g1 + 0x90 ], %g3 ! 40015890 if (bit_mask == requested_bytes_per_block) { 40003aec: 80 a0 e0 10 cmp %g3, 0x10 40003af0: 02 80 00 0e be 40003b28 <== NEVER TAKEN 40003af4: 80 a0 e0 0f cmp %g3, 0xf if(bit_mask > requested_bytes_per_block) 40003af8: 04 80 00 0b ble 40003b24 <== NEVER TAKEN 40003afc: 82 10 20 20 mov 0x20, %g1 40003b00: 84 10 20 05 mov 5, %g2 if (bit_mask == requested_bytes_per_block) { 40003b04: 80 a0 c0 01 cmp %g3, %g1 40003b08: 22 80 00 09 be,a 40003b2c 40003b0c: 03 10 00 5c sethi %hi(0x40017000), %g1 if(bit_mask > requested_bytes_per_block) 40003b10: 26 80 00 06 bl,a 40003b28 <== NEVER TAKEN 40003b14: 86 10 20 80 mov 0x80, %g3 <== NOT EXECUTED for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) { 40003b18: 84 80 bf ff addcc %g2, -1, %g2 40003b1c: 12 bf ff fa bne 40003b04 <== ALWAYS TAKEN 40003b20: 83 28 60 01 sll %g1, 1, %g1 : default_bytes_per_block); 40003b24: 86 10 20 80 mov 0x80, %g3 <== NOT EXECUTED *dest_bytes_per_block = ((is_valid) 40003b28: 03 10 00 5c sethi %hi(0x40017000), %g1 <== NOT EXECUTED 40003b2c: c6 20 60 a0 st %g3, [ %g1 + 0xa0 ] ! 400170a0 } 40003b30: 81 c7 e0 08 ret 40003b34: 91 e8 20 00 restore %g0, 0, %o0 =============================================================================== 40003c24 : { 40003c24: 9d e3 bf 88 save %sp, -120, %sp <== NOT EXECUTED target = targetloc->node_access; 40003c28: fa 06 60 08 ld [ %i1 + 8 ], %i5 <== NOT EXECUTED if ( target->st_nlink >= LINK_MAX ) 40003c2c: c2 17 60 1a lduh [ %i5 + 0x1a ], %g1 <== NOT EXECUTED 40003c30: 80 a0 60 07 cmp %g1, 7 <== NOT EXECUTED 40003c34: 18 80 00 19 bgu 40003c98 <== NOT EXECUTED 40003c38: 9a 10 21 ff mov 0x1ff, %o5 <== NOT EXECUTED new_node = IMFS_create_node( 40003c3c: fa 23 a0 5c st %i5, [ %sp + 0x5c ] <== NOT EXECUTED 40003c40: 98 10 00 1b mov %i3, %o4 <== NOT EXECUTED 40003c44: 96 10 00 1a mov %i2, %o3 <== NOT EXECUTED 40003c48: 94 10 20 48 mov 0x48, %o2 <== NOT EXECUTED 40003c4c: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 40003c50: 13 10 00 50 sethi %hi(0x40014000), %o1 <== NOT EXECUTED 40003c54: 40 00 32 3a call 4001053c <== NOT EXECUTED 40003c58: 92 12 60 70 or %o1, 0x70, %o1 ! 40014070 <== NOT EXECUTED if ( !new_node ) 40003c5c: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40003c60: 02 80 00 14 be 40003cb0 <== NOT EXECUTED 40003c64: 90 07 bf f0 add %fp, -16, %o0 <== NOT EXECUTED target->reference_count++; 40003c68: c4 17 60 18 lduh [ %i5 + 0x18 ], %g2 <== NOT EXECUTED target->st_nlink++; 40003c6c: c2 17 60 1a lduh [ %i5 + 0x1a ], %g1 <== NOT EXECUTED target->reference_count++; 40003c70: 84 00 a0 01 inc %g2 <== NOT EXECUTED target->st_nlink++; 40003c74: 82 00 60 01 inc %g1 <== NOT EXECUTED target->reference_count++; 40003c78: c4 37 60 18 sth %g2, [ %i5 + 0x18 ] <== NOT EXECUTED target->st_nlink++; 40003c7c: c2 37 60 1a sth %g1, [ %i5 + 0x1a ] <== NOT EXECUTED _Timecounter_Getbintime( &now ); 40003c80: 40 00 14 65 call 40008e14 <_Timecounter_Getbintime> <== NOT EXECUTED 40003c84: b0 10 20 00 clr %i0 <== NOT EXECUTED return now.sec; 40003c88: c4 1f bf f0 ldd [ %fp + -16 ], %g2 <== NOT EXECUTED jnode->stat_ctime = _IMFS_get_time(); 40003c8c: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] <== NOT EXECUTED } 40003c90: 81 c7 e0 08 ret <== NOT EXECUTED 40003c94: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EMLINK ); 40003c98: 40 00 39 f7 call 40012474 <__errno> <== NOT EXECUTED 40003c9c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40003ca0: 82 10 20 1f mov 0x1f, %g1 <== NOT EXECUTED 40003ca4: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40003ca8: 81 c7 e0 08 ret <== NOT EXECUTED 40003cac: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 40003cb0: 40 00 39 f1 call 40012474 <__errno> <== NOT EXECUTED 40003cb4: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40003cb8: 82 10 20 0c mov 0xc, %g1 <== NOT EXECUTED 40003cbc: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40003cc0: 81 c7 e0 08 ret <== NOT EXECUTED 40003cc4: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 400105d4 : const char *path, mode_t mode, const IMFS_node_control *node_control, void *context ) { 400105d4: 9d e3 bf 50 save %sp, -176, %sp int rv = 0; mode &= ~rtems_filesystem_umask; 400105d8: 7f ff d5 d6 call 40005d30 400105dc: 01 00 00 00 nop 400105e0: da 02 20 08 ld [ %o0 + 8 ], %o5 400105e4: b2 2e 40 0d andn %i1, %o5, %i1 switch (mode & S_IFMT) { 400105e8: 03 00 00 3c sethi %hi(0xf000), %g1 400105ec: 05 00 00 18 sethi %hi(0x6000), %g2 400105f0: 82 0e 40 01 and %i1, %g1, %g1 400105f4: 80 a0 40 02 cmp %g1, %g2 400105f8: 02 80 00 0c be 40010628 400105fc: 94 10 20 78 mov 0x78, %o2 40010600: 08 80 00 1d bleu 40010674 <== ALWAYS TAKEN 40010604: 05 00 00 04 sethi %hi(0x1000), %g2 40010608: 05 00 00 20 sethi %hi(0x8000), %g2 <== NOT EXECUTED 4001060c: 80 a0 40 02 cmp %g1, %g2 <== NOT EXECUTED 40010610: 02 80 00 06 be 40010628 <== NOT EXECUTED 40010614: 05 00 00 30 sethi %hi(0xc000), %g2 <== NOT EXECUTED 40010618: 80 a0 40 02 cmp %g1, %g2 <== NOT EXECUTED 4001061c: 12 80 00 1c bne 4001068c <== NOT EXECUTED 40010620: 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 = 40010624: 94 10 20 78 mov 0x78, %o2 ! 78 <_TLS_Alignment+0x77> <== NOT EXECUTED 40010628: 92 10 00 18 mov %i0, %o1 4001062c: 7f ff d7 b5 call 40006500 40010630: 90 07 bf c8 add %fp, -56, %o0 return loc->mt_entry->ops->clonenod_h == IMFS_node_clone; 40010634: c2 02 20 14 ld [ %o0 + 0x14 ], %g1 40010638: c2 00 60 0c ld [ %g1 + 0xc ], %g1 rtems_filesystem_eval_path_start( &ctx, path, eval_flags ); if ( IMFS_is_imfs_instance( currentloc ) ) { 4001063c: c4 00 60 24 ld [ %g1 + 0x24 ], %g2 40010640: 03 10 00 12 sethi %hi(0x40004800), %g1 40010644: 82 10 61 0c or %g1, 0x10c, %g1 ! 4000490c 40010648: 80 a0 80 01 cmp %g2, %g1 4001064c: 02 80 00 16 be 400106a4 40010650: ba 10 00 08 mov %o0, %i5 IMFS_mtime_ctime_update( parent ); } else { rv = -1; } } else { rtems_filesystem_eval_path_error( &ctx, ENOTSUP ); 40010654: 92 10 20 86 mov 0x86, %o1 40010658: 90 07 bf c8 add %fp, -56, %o0 4001065c: 7f ff d6 ee call 40006214 40010660: b0 10 3f ff mov -1, %i0 rv = -1; } rtems_filesystem_eval_path_cleanup( &ctx ); 40010664: 7f ff d7 f1 call 40006628 40010668: 90 07 bf c8 add %fp, -56, %o0 } return rv; } 4001066c: 81 c7 e0 08 ret 40010670: 81 e8 00 00 restore switch (mode & S_IFMT) { 40010674: 80 a0 40 02 cmp %g1, %g2 40010678: 02 bf ff eb be 40010624 <== NEVER TAKEN 4001067c: 05 00 00 08 sethi %hi(0x2000), %g2 40010680: 80 a0 40 02 cmp %g1, %g2 40010684: 02 bf ff e9 be 40010628 <== ALWAYS TAKEN 40010688: 94 10 20 78 mov 0x78, %o2 errno = EINVAL; 4001068c: 40 00 07 7a call 40012474 <__errno> <== NOT EXECUTED 40010690: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40010694: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 40010698: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4001069c: 81 c7 e0 08 ret <== NOT EXECUTED 400106a0: 81 e8 00 00 restore <== NOT EXECUTED IMFS_jnode_t *new_node = IMFS_create_node( 400106a4: f6 23 a0 5c st %i3, [ %sp + 0x5c ] 400106a8: 9a 10 00 19 mov %i1, %o5 400106ac: d8 07 bf d4 ld [ %fp + -44 ], %o4 400106b0: d6 07 bf d0 ld [ %fp + -48 ], %o3 400106b4: 94 10 20 48 mov 0x48, %o2 400106b8: 92 10 00 1a mov %i2, %o1 400106bc: 7f ff ff a0 call 4001053c 400106c0: b0 10 3f ff mov -1, %i0 if ( new_node != NULL ) { 400106c4: 80 a2 20 00 cmp %o0, 0 400106c8: 02 bf ff e7 be 40010664 400106cc: 01 00 00 00 nop IMFS_jnode_t *parent = currentloc->node_access; 400106d0: fa 07 60 08 ld [ %i5 + 8 ], %i5 _Timecounter_Getbintime( &now ); 400106d4: 7f ff e1 d0 call 40008e14 <_Timecounter_Getbintime> 400106d8: 90 07 bf b8 add %fp, -72, %o0 return now.sec; 400106dc: c4 1f bf b8 ldd [ %fp + -72 ], %g2 jnode->stat_mtime = now; 400106e0: c4 3f 60 28 std %g2, [ %i5 + 0x28 ] int rv = 0; 400106e4: b0 10 20 00 clr %i0 jnode->stat_ctime = now; 400106e8: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] rtems_filesystem_eval_path_cleanup( &ctx ); 400106ec: 7f ff d7 cf call 40006628 400106f0: 90 07 bf c8 add %fp, -56, %o0 } 400106f4: 81 c7 e0 08 ret 400106f8: 81 e8 00 00 restore =============================================================================== 40004508 : { 40004508: 9d e3 bf 90 save %sp, -112, %sp if ( last_byte > memfile->File.size ) { 4000450c: c2 06 20 40 ld [ %i0 + 0x40 ], %g1 last_byte = start + my_length; 40004510: 96 07 00 1a add %i4, %i2, %o3 if ( last_byte > memfile->File.size ) { 40004514: 80 a0 40 0b cmp %g1, %o3 40004518: 0a 80 00 54 bcs 40004668 <== ALWAYS TAKEN 4000451c: a0 10 00 18 mov %i0, %l0 start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 40004520: 23 10 00 5c sethi %hi(0x40017000), %l1 <== NOT EXECUTED 40004524: e4 04 60 a0 ld [ %l1 + 0xa0 ], %l2 ! 400170a0 40004528: bb 3c a0 1f sra %l2, 0x1f, %i5 4000452c: 96 10 00 12 mov %l2, %o3 40004530: 94 10 00 1d mov %i5, %o2 40004534: 92 10 00 1a mov %i2, %o1 40004538: 40 00 3a d8 call 40013098 <__moddi3> 4000453c: 90 10 00 19 mov %i1, %o0 block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 40004540: 94 10 00 1d mov %i5, %o2 start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 40004544: a6 10 00 09 mov %o1, %l3 block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 40004548: 96 10 00 12 mov %l2, %o3 4000454c: 92 10 00 1a mov %i2, %o1 40004550: 40 00 3a 47 call 40012e6c <__divdi3> 40004554: 90 10 00 19 mov %i1, %o0 40004558: ba 10 00 12 mov %l2, %i5 4000455c: b4 10 00 09 mov %o1, %i2 if ( start_offset ) { 40004560: 80 a4 e0 00 cmp %l3, 0 40004564: 12 80 00 1a bne 400045cc 40004568: b0 10 20 00 clr %i0 while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 4000456c: 80 a7 00 1d cmp %i4, %i5 40004570: 1a 80 00 0e bcc 400045a8 40004574: 92 10 00 1a mov %i2, %o1 if ( my_length ) { 40004578: 10 80 00 29 b 4000461c 4000457c: 80 a7 20 00 cmp %i4, 0 memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 40004580: 40 00 37 fa call 40012568 40004584: d0 02 00 00 ld [ %o0 ], %o0 while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 40004588: c2 04 60 a0 ld [ %l1 + 0xa0 ], %g1 my_length -= to_copy; 4000458c: b8 27 00 1d sub %i4, %i5, %i4 src += to_copy; 40004590: b6 06 c0 1d add %i3, %i5, %i3 block++; 40004594: b4 06 a0 01 inc %i2 while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 40004598: 80 a0 40 1c cmp %g1, %i4 4000459c: 18 80 00 1f bgu 40004618 400045a0: b0 06 00 1d add %i0, %i5, %i0 block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 ); 400045a4: 92 10 00 1a mov %i2, %o1 400045a8: 94 10 20 00 clr %o2 400045ac: 7f ff fd d4 call 40003cfc 400045b0: 90 10 00 10 mov %l0, %o0 memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 400045b4: 92 10 00 1b mov %i3, %o1 if ( !block_ptr ) 400045b8: 80 a2 20 00 cmp %o0, 0 400045bc: 12 bf ff f1 bne 40004580 <== ALWAYS TAKEN 400045c0: 94 10 00 1d mov %i5, %o2 } 400045c4: 81 c7 e0 08 ret <== NOT EXECUTED 400045c8: 81 e8 00 00 restore <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 ); 400045cc: 94 10 20 00 clr %o2 400045d0: 7f ff fd cb call 40003cfc 400045d4: 90 10 00 10 mov %l0, %o0 if ( !block_ptr ) 400045d8: 80 a2 20 00 cmp %o0, 0 400045dc: 02 bf ff fa be 400045c4 <== NEVER TAKEN 400045e0: a4 24 80 13 sub %l2, %l3, %l2 400045e4: 80 a7 00 12 cmp %i4, %l2 400045e8: 18 80 00 37 bgu 400046c4 400045ec: b0 10 00 1c mov %i4, %i0 memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 400045f0: d0 02 00 00 ld [ %o0 ], %o0 400045f4: 92 10 00 1b mov %i3, %o1 400045f8: 94 10 00 18 mov %i0, %o2 400045fc: 90 02 00 13 add %o0, %l3, %o0 40004600: 40 00 37 da call 40012568 40004604: b6 06 c0 18 add %i3, %i0, %i3 block++; 40004608: b4 06 a0 01 inc %i2 4000460c: fa 04 60 a0 ld [ %l1 + 0xa0 ], %i5 my_length -= to_copy; 40004610: 10 bf ff d7 b 4000456c 40004614: b8 27 00 18 sub %i4, %i0, %i4 if ( my_length ) { 40004618: 80 a7 20 00 cmp %i4, 0 4000461c: 02 80 00 0c be 4000464c 40004620: 94 10 20 00 clr %o2 block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 ); 40004624: 92 10 00 1a mov %i2, %o1 40004628: 7f ff fd b5 call 40003cfc 4000462c: 90 10 00 10 mov %l0, %o0 if ( !block_ptr ) 40004630: 80 a2 20 00 cmp %o0, 0 40004634: 02 bf ff e4 be 400045c4 <== NEVER TAKEN 40004638: 94 10 00 1c mov %i4, %o2 memcpy( &(*block_ptr)[ 0 ], src, my_length ); 4000463c: d0 02 00 00 ld [ %o0 ], %o0 40004640: 92 10 00 1b mov %i3, %o1 40004644: 40 00 37 c9 call 40012568 40004648: b0 06 00 1c add %i0, %i4, %i0 _Timecounter_Getbintime( &now ); 4000464c: 40 00 11 f2 call 40008e14 <_Timecounter_Getbintime> 40004650: 90 07 bf f0 add %fp, -16, %o0 return now.sec; 40004654: c4 1f bf f0 ldd [ %fp + -16 ], %g2 jnode->stat_mtime = now; 40004658: c4 3c 20 28 std %g2, [ %l0 + 0x28 ] jnode->stat_ctime = now; 4000465c: c4 3c 20 30 std %g2, [ %l0 + 0x30 ] } 40004660: 81 c7 e0 08 ret 40004664: 81 e8 00 00 restore bool zero_fill = start > memfile->File.size; 40004668: 80 a6 60 00 cmp %i1, 0 4000466c: 04 80 00 0b ble 40004698 <== ALWAYS TAKEN 40004670: 92 10 20 01 mov 1, %o1 status = IMFS_memfile_extend( memfile, zero_fill, last_byte ); 40004674: 94 10 20 00 clr %o2 <== NOT EXECUTED 40004678: 92 0a 60 01 and %o1, 1, %o1 <== NOT EXECUTED 4000467c: 7f ff fe 49 call 40003fa0 <== NOT EXECUTED 40004680: 90 10 00 10 mov %l0, %o0 <== NOT EXECUTED if ( status ) 40004684: b0 92 20 00 orcc %o0, 0, %i0 <== NOT EXECUTED 40004688: 02 bf ff a7 be 40004524 <== NOT EXECUTED 4000468c: 23 10 00 5c sethi %hi(0x40017000), %l1 <== NOT EXECUTED 40004690: 81 c7 e0 08 ret <== NOT EXECUTED 40004694: 81 e8 00 00 restore <== NOT EXECUTED bool zero_fill = start > memfile->File.size; 40004698: 02 80 00 16 be 400046f0 <== ALWAYS TAKEN 4000469c: 80 a6 80 01 cmp %i2, %g1 400046a0: 92 10 20 00 clr %o1 <== NOT EXECUTED status = IMFS_memfile_extend( memfile, zero_fill, last_byte ); 400046a4: 94 10 20 00 clr %o2 <== NOT EXECUTED 400046a8: 92 0a 60 01 and %o1, 1, %o1 400046ac: 7f ff fe 3d call 40003fa0 400046b0: 90 10 00 10 mov %l0, %o0 if ( status ) 400046b4: b0 92 20 00 orcc %o0, 0, %i0 400046b8: 02 bf ff 9b be 40004524 <== ALWAYS TAKEN 400046bc: 23 10 00 5c sethi %hi(0x40017000), %l1 400046c0: 30 bf ff f4 b,a 40004690 <== NOT EXECUTED memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 400046c4: d0 02 00 00 ld [ %o0 ], %o0 400046c8: b0 10 00 12 mov %l2, %i0 400046cc: 92 10 00 1b mov %i3, %o1 400046d0: 94 10 00 18 mov %i0, %o2 400046d4: 90 02 00 13 add %o0, %l3, %o0 400046d8: 40 00 37 a4 call 40012568 400046dc: b6 06 c0 18 add %i3, %i0, %i3 block++; 400046e0: b4 06 a0 01 inc %i2 400046e4: fa 04 60 a0 ld [ %l1 + 0xa0 ], %i5 my_length -= to_copy; 400046e8: 10 bf ff a1 b 4000456c 400046ec: b8 27 00 18 sub %i4, %i0, %i4 bool zero_fill = start > memfile->File.size; 400046f0: 18 bf ff e2 bgu 40004678 <== NEVER TAKEN 400046f4: 94 10 20 00 clr %o2 400046f8: 10 bf ff ec b 400046a8 400046fc: 92 10 20 00 clr %o1 =============================================================================== 40004764 : const char *name, size_t namelen, mode_t mode, dev_t dev ) { 40004764: 9d e3 bf 80 save %sp, -128, %sp int rv = 0; const IMFS_fs_info_t *fs_info = parentloc->mt_entry->fs_info; 40004768: c2 06 20 14 ld [ %i0 + 0x14 ], %g1 { 4000476c: f8 3f bf e8 std %i4, [ %fp + -24 ] const IMFS_mknod_control *mknod_control = get_control( fs_info->mknod_controls, mode ); 40004770: c4 00 60 08 ld [ %g1 + 8 ], %g2 40004774: c6 00 a0 50 ld [ %g2 + 0x50 ], %g3 if ( S_ISDIR( mode ) ) { 40004778: 03 00 00 3c sethi %hi(0xf000), %g1 4000477c: 05 00 00 10 sethi %hi(0x4000), %g2 40004780: 82 0e c0 01 and %i3, %g1, %g1 40004784: 80 a0 40 02 cmp %g1, %g2 40004788: 02 80 00 1f be 40004804 4000478c: 05 00 00 2c sethi %hi(0xb000), %g2 } else if ( S_ISBLK( mode ) || S_ISCHR( mode ) ) { 40004790: 09 00 00 08 sethi %hi(0x2000), %g4 40004794: 84 0e c0 02 and %i3, %g2, %g2 40004798: 80 a0 80 04 cmp %g2, %g4 4000479c: 22 80 00 07 be,a 400047b8 400047a0: d2 00 e0 04 ld [ %g3 + 4 ], %o1 } else if ( S_ISFIFO( mode ) ) { 400047a4: 05 00 00 04 sethi %hi(0x1000), %g2 400047a8: 80 a0 40 02 cmp %g1, %g2 400047ac: 22 80 00 03 be,a 400047b8 <== NEVER TAKEN 400047b0: d2 00 e0 0c ld [ %g3 + 0xc ], %o1 <== NOT EXECUTED return controls->file; 400047b4: d2 00 e0 08 ld [ %g3 + 8 ], %o1 IMFS_jnode_t *new_node; new_node = IMFS_create_node( 400047b8: 82 07 bf e8 add %fp, -24, %g1 400047bc: c2 23 a0 5c st %g1, [ %sp + 0x5c ] 400047c0: 9a 10 00 1b mov %i3, %o5 400047c4: d4 02 60 10 ld [ %o1 + 0x10 ], %o2 400047c8: 98 10 00 1a mov %i2, %o4 400047cc: 96 10 00 19 mov %i1, %o3 400047d0: 40 00 2f 5b call 4001053c 400047d4: 90 10 00 18 mov %i0, %o0 name, namelen, mode, &dev ); if ( new_node != NULL ) { 400047d8: 80 a2 20 00 cmp %o0, 0 400047dc: 02 80 00 0c be 4000480c <== NEVER TAKEN 400047e0: 01 00 00 00 nop IMFS_jnode_t *parent = parentloc->node_access; 400047e4: fa 06 20 08 ld [ %i0 + 8 ], %i5 _Timecounter_Getbintime( &now ); 400047e8: 40 00 11 8b call 40008e14 <_Timecounter_Getbintime> 400047ec: 90 07 bf f0 add %fp, -16, %o0 return now.sec; 400047f0: c4 1f bf f0 ldd [ %fp + -16 ], %g2 jnode->stat_mtime = now; 400047f4: c4 3f 60 28 std %g2, [ %i5 + 0x28 ] jnode->stat_ctime = now; 400047f8: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] int rv = 0; 400047fc: 81 c7 e0 08 ret 40004800: 91 e8 20 00 restore %g0, 0, %o0 return controls->directory; 40004804: 10 bf ff ed b 400047b8 40004808: d2 00 c0 00 ld [ %g3 ], %o1 } else { rv = -1; } return rv; } 4000480c: 81 c7 e0 08 ret <== NOT EXECUTED 40004810: 91 e8 3f ff restore %g0, -1, %o0 <== NOT EXECUTED =============================================================================== 40013fc8 : 40013fc8: 40 01 3f dc 40 00 3a 34 40 00 49 7c 40 00 49 84 @.?.@.:4@.I|@.I. 40013fd8: 00 00 00 48 ...H =============================================================================== 40013f6c : 40013f6c: 40 01 3f 80 40 00 37 80 40 00 37 98 40 00 49 84 @.?.@.7.@.7.@.I. 40013f7c: 00 00 00 50 ...P =============================================================================== 4001401c : 4001401c: 40 01 45 60 40 00 3a 68 40 00 49 7c 40 00 49 84 @.E`@.:h@.I|@.I. 4001402c: 00 00 00 40 ...@ =============================================================================== 40014080 : 40014080: 40 01 40 94 40 00 3b 38 40 00 49 7c 40 00 43 a4 @.@.@.;8@.I|@.C. 40014090: 00 00 00 58 ...X =============================================================================== 40004814 : #endif #include int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) { 40004814: 9d e3 bf a0 save %sp, -96, %sp int rv = 0; IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 40004818: c2 06 20 20 ld [ %i0 + 0x20 ], %g1 4000481c: c4 00 60 08 ld [ %g1 + 8 ], %g2 return S_ISDIR( node->st_mode ); 40004820: 07 00 00 3c sethi %hi(0xf000), %g3 40004824: c2 00 a0 14 ld [ %g2 + 0x14 ], %g1 40004828: 82 08 40 03 and %g1, %g3, %g1 if ( IMFS_is_directory( node ) ) { 4000482c: 07 00 00 10 sethi %hi(0x4000), %g3 40004830: 80 a0 40 03 cmp %g1, %g3 40004834: 12 80 00 0f bne 40004870 <== NEVER TAKEN 40004838: 01 00 00 00 nop IMFS_directory_t *dir = (IMFS_directory_t *) node; if ( dir->mt_fs == NULL ) { 4000483c: c2 00 a0 4c ld [ %g2 + 0x4c ], %g1 40004840: 80 a0 60 00 cmp %g1, 0 40004844: 12 80 00 05 bne 40004858 <== NEVER TAKEN 40004848: 01 00 00 00 nop dir->mt_fs = mt_entry; 4000484c: f0 20 a0 4c st %i0, [ %g2 + 0x4c ] 40004850: 81 c7 e0 08 ret 40004854: 91 e8 20 00 restore %g0, 0, %o0 } else { errno = EBUSY; 40004858: 40 00 37 07 call 40012474 <__errno> <== NOT EXECUTED 4000485c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004860: 82 10 20 10 mov 0x10, %g1 <== NOT EXECUTED 40004864: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004868: 81 c7 e0 08 ret <== NOT EXECUTED 4000486c: 81 e8 00 00 restore <== NOT EXECUTED rv = -1; } } else { errno = ENOTDIR; 40004870: 40 00 37 01 call 40012474 <__errno> <== NOT EXECUTED 40004874: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004878: 82 10 20 14 mov 0x14, %g1 <== NOT EXECUTED 4000487c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED rv = -1; } return rv; } 40004880: 81 c7 e0 08 ret <== NOT EXECUTED 40004884: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4006494c : 4006494c: 40 06 49 5c 40 00 ca 08 40 00 db 88 40 00 db 90 @.I\@...@...@... =============================================================================== 40004924 : void IMFS_node_destroy( IMFS_jnode_t *node ) { 40004924: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED IMFS_assert( node->reference_count == 0 ); (*node->control->node_destroy)( node ); 40004928: c2 06 20 38 ld [ %i0 + 0x38 ], %g1 <== NOT EXECUTED 4000492c: c2 00 60 0c ld [ %g1 + 0xc ], %g1 <== NOT EXECUTED 40004930: 9f c0 40 00 call %g1 <== NOT EXECUTED 40004934: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED } 40004938: 81 c7 e0 08 ret <== NOT EXECUTED 4000493c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004984 : void IMFS_node_destroy_default( IMFS_jnode_t *node ) { 40004984: 9d e3 bf a0 save %sp, -96, %sp if ( ( node->flags & IMFS_NODE_FLAG_NAME_ALLOCATED ) != 0 ) { 40004988: c2 16 20 12 lduh [ %i0 + 0x12 ], %g1 4000498c: 80 88 60 01 btst 1, %g1 40004990: 12 80 00 04 bne 400049a0 <== NEVER TAKEN 40004994: 01 00 00 00 nop free( RTEMS_DECONST( char *, node->name ) ); } free( node ); 40004998: 40 00 01 72 call 40004f60 4000499c: 81 e8 00 00 restore free( RTEMS_DECONST( char *, node->name ) ); 400049a0: 40 00 01 70 call 40004f60 <== NOT EXECUTED 400049a4: d0 06 20 0c ld [ %i0 + 0xc ], %o0 <== NOT EXECUTED free( node ); 400049a8: 40 00 01 6e call 40004f60 <== NOT EXECUTED 400049ac: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40003798 : { return dir->mt_fs != NULL; } IMFS_jnode_t *IMFS_node_remove_directory( IMFS_jnode_t *node ) { 40003798: 9d e3 bf a0 save %sp, -96, %sp IMFS_directory_t *dir = (IMFS_directory_t *) node; if ( !rtems_chain_is_empty( &dir->Entries ) ) { 4000379c: c4 06 20 40 ld [ %i0 + 0x40 ], %g2 return &the_chain->Tail.Node; 400037a0: 82 06 20 44 add %i0, 0x44, %g1 400037a4: 80 a0 80 01 cmp %g2, %g1 400037a8: 12 80 00 0c bne 400037d8 <== NEVER TAKEN 400037ac: 01 00 00 00 nop errno = ENOTEMPTY; dir = NULL; } else if ( IMFS_is_mount_point( dir ) ) { 400037b0: c2 06 20 4c ld [ %i0 + 0x4c ], %g1 400037b4: 80 a0 60 00 cmp %g1, 0 400037b8: 02 80 00 0c be 400037e8 <== ALWAYS TAKEN 400037bc: 01 00 00 00 nop errno = EBUSY; 400037c0: 40 00 3b 2d call 40012474 <__errno> <== NOT EXECUTED 400037c4: b0 10 20 00 clr %i0 ! 0 <== NOT EXECUTED 400037c8: 82 10 20 10 mov 0x10, %g1 <== NOT EXECUTED 400037cc: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED dir = NULL; } return &dir->Node; } 400037d0: 81 c7 e0 08 ret <== NOT EXECUTED 400037d4: 81 e8 00 00 restore <== NOT EXECUTED errno = ENOTEMPTY; 400037d8: 40 00 3b 27 call 40012474 <__errno> <== NOT EXECUTED 400037dc: b0 10 20 00 clr %i0 <== NOT EXECUTED 400037e0: 82 10 20 5a mov 0x5a, %g1 <== NOT EXECUTED 400037e4: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 400037e8: 81 c7 e0 08 ret 400037ec: 81 e8 00 00 restore =============================================================================== 40004c4c : for( i=0; ((iname[i] != '\0')); i++ ) 40004c4c: 80 a2 a0 00 cmp %o2, 0 <== NOT EXECUTED 40004c50: 02 80 00 16 be 40004ca8 <== NOT EXECUTED 40004c54: c6 02 20 08 ld [ %o0 + 8 ], %g3 <== NOT EXECUTED 40004c58: c2 00 e0 40 ld [ %g3 + 0x40 ], %g1 <== NOT EXECUTED 40004c5c: c4 48 40 00 ldsb [ %g1 ], %g2 <== NOT EXECUTED 40004c60: 90 10 20 00 clr %o0 <== NOT EXECUTED 40004c64: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 40004c68: 12 80 00 07 bne 40004c84 <== NOT EXECUTED 40004c6c: c2 08 40 00 ldub [ %g1 ], %g1 <== NOT EXECUTED 40004c70: 30 80 00 0c b,a 40004ca0 <== NOT EXECUTED 40004c74: c4 48 40 08 ldsb [ %g1 + %o0 ], %g2 <== NOT EXECUTED 40004c78: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 40004c7c: 02 80 00 07 be 40004c98 <== NOT EXECUTED 40004c80: c2 08 40 08 ldub [ %g1 + %o0 ], %g1 <== NOT EXECUTED buf[i] = sym_link->name[i]; 40004c84: c2 2a 40 08 stb %g1, [ %o1 + %o0 ] <== NOT EXECUTED for( i=0; ((iname[i] != '\0')); i++ ) 40004c88: 90 02 20 01 inc %o0 <== NOT EXECUTED 40004c8c: 80 a2 80 08 cmp %o2, %o0 <== NOT EXECUTED 40004c90: 32 bf ff f9 bne,a 40004c74 <== NOT EXECUTED 40004c94: c2 00 e0 40 ld [ %g3 + 0x40 ], %g1 <== NOT EXECUTED } 40004c98: 81 c3 e0 08 retl <== NOT EXECUTED 40004c9c: 01 00 00 00 nop <== NOT EXECUTED 40004ca0: 81 c3 e0 08 retl <== NOT EXECUTED 40004ca4: 01 00 00 00 nop <== NOT EXECUTED for( i=0; ((iname[i] != '\0')); i++ ) 40004ca8: 81 c3 e0 08 retl <== NOT EXECUTED 40004cac: 90 10 20 00 clr %o0 ! 0 <== NOT EXECUTED =============================================================================== 400049b0 : const rtems_filesystem_location_info_t *oldloc, const rtems_filesystem_location_info_t *newparentloc, const char *name, size_t namelen ) { 400049b0: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED IMFS_jnode_t *node = oldloc->node_access; 400049b4: 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 ) { 400049b8: c2 07 60 08 ld [ %i5 + 8 ], %g1 <== NOT EXECUTED 400049bc: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 400049c0: 02 80 00 36 be 40004a98 <== NOT EXECUTED 400049c4: f4 06 a0 08 ld [ %i2 + 8 ], %i2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); } if ( namelen >= IMFS_NAME_MAX ) { 400049c8: 80 a7 20 fe cmp %i4, 0xfe <== NOT EXECUTED 400049cc: 18 80 00 27 bgu 40004a68 <== NOT EXECUTED 400049d0: 01 00 00 00 nop <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); } allocated_name = malloc( namelen ); 400049d4: 40 00 02 d8 call 40005534 <== NOT EXECUTED 400049d8: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED if ( allocated_name == NULL ) { 400049dc: b2 92 20 00 orcc %o0, 0, %i1 <== NOT EXECUTED 400049e0: 02 80 00 28 be 40004a80 <== NOT EXECUTED 400049e4: 94 10 00 1c mov %i4, %o2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); } memcpy( allocated_name, name, namelen ); 400049e8: 40 00 36 e0 call 40012568 <== NOT EXECUTED 400049ec: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED if ( ( node->flags & IMFS_NODE_FLAG_NAME_ALLOCATED ) != 0 ) { 400049f0: c2 17 60 12 lduh [ %i5 + 0x12 ], %g1 <== NOT EXECUTED 400049f4: 80 88 60 01 btst 1, %g1 <== NOT EXECUTED 400049f8: 12 80 00 18 bne 40004a58 <== NOT EXECUTED 400049fc: 01 00 00 00 nop <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 40004a00: c6 07 40 00 ld [ %i5 ], %g3 <== NOT EXECUTED previous = the_node->previous; 40004a04: c4 07 60 04 ld [ %i5 + 4 ], %g2 <== NOT EXECUTED free( RTEMS_DECONST( char *, node->name ) ); } node->name = allocated_name; 40004a08: f2 27 60 0c st %i1, [ %i5 + 0xc ] <== NOT EXECUTED node->namelen = namelen; node->flags |= IMFS_NODE_FLAG_NAME_ALLOCATED; 40004a0c: 82 10 60 01 or %g1, 1, %g1 <== NOT EXECUTED node->namelen = namelen; 40004a10: f8 37 60 10 sth %i4, [ %i5 + 0x10 ] <== NOT EXECUTED return &the_chain->Tail.Node; 40004a14: 88 06 a0 44 add %i2, 0x44, %g4 <== NOT EXECUTED node->flags |= IMFS_NODE_FLAG_NAME_ALLOCATED; 40004a18: c2 37 60 12 sth %g1, [ %i5 + 0x12 ] <== NOT EXECUTED _Timecounter_Getbintime( &now ); 40004a1c: 90 07 bf f0 add %fp, -16, %o0 <== NOT EXECUTED next->previous = previous; 40004a20: 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; 40004a24: b0 10 20 00 clr %i0 <== NOT EXECUTED previous->next = next; 40004a28: 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; 40004a2c: c2 06 a0 48 ld [ %i2 + 0x48 ], %g1 <== NOT EXECUTED entry_node->Parent = dir_node; 40004a30: f4 27 60 08 st %i2, [ %i5 + 8 ] <== NOT EXECUTED the_node->next = tail; 40004a34: c8 27 40 00 st %g4, [ %i5 ] <== NOT EXECUTED tail->previous = the_node; 40004a38: fa 26 a0 48 st %i5, [ %i2 + 0x48 ] <== NOT EXECUTED old_last->next = the_node; 40004a3c: fa 20 40 00 st %i5, [ %g1 ] <== NOT EXECUTED _Timecounter_Getbintime( &now ); 40004a40: 40 00 10 f5 call 40008e14 <_Timecounter_Getbintime> <== NOT EXECUTED 40004a44: c2 27 60 04 st %g1, [ %i5 + 4 ] <== NOT EXECUTED return now.sec; 40004a48: c4 1f bf f0 ldd [ %fp + -16 ], %g2 <== NOT EXECUTED jnode->stat_ctime = _IMFS_get_time(); 40004a4c: c4 3f 60 30 std %g2, [ %i5 + 0x30 ] <== NOT EXECUTED } 40004a50: 81 c7 e0 08 ret <== NOT EXECUTED 40004a54: 81 e8 00 00 restore <== NOT EXECUTED free( RTEMS_DECONST( char *, node->name ) ); 40004a58: 40 00 01 42 call 40004f60 <== NOT EXECUTED 40004a5c: d0 07 60 0c ld [ %i5 + 0xc ], %o0 <== NOT EXECUTED 40004a60: 10 bf ff e8 b 40004a00 <== NOT EXECUTED 40004a64: c2 17 60 12 lduh [ %i5 + 0x12 ], %g1 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 40004a68: 40 00 36 83 call 40012474 <__errno> <== NOT EXECUTED 40004a6c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004a70: 82 10 20 5b mov 0x5b, %g1 <== NOT EXECUTED 40004a74: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004a78: 81 c7 e0 08 ret <== NOT EXECUTED 40004a7c: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 40004a80: 40 00 36 7d call 40012474 <__errno> <== NOT EXECUTED 40004a84: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004a88: 82 10 20 0c mov 0xc, %g1 <== NOT EXECUTED 40004a8c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004a90: 81 c7 e0 08 ret <== NOT EXECUTED 40004a94: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 40004a98: 40 00 36 77 call 40012474 <__errno> <== NOT EXECUTED 40004a9c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004aa0: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 40004aa4: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004aa8: 81 c7 e0 08 ret <== NOT EXECUTED 40004aac: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004ab0 : int IMFS_rmnod( const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *loc ) { 40004ab0: 9d e3 bf a0 save %sp, -96, %sp int rv = 0; IMFS_jnode_t *node = loc->node_access; 40004ab4: d0 06 60 08 ld [ %i1 + 8 ], %o0 node = (*node->control->node_remove)( node ); 40004ab8: c2 02 20 38 ld [ %o0 + 0x38 ], %g1 40004abc: c2 00 60 08 ld [ %g1 + 8 ], %g1 40004ac0: 9f c0 40 00 call %g1 40004ac4: 01 00 00 00 nop if ( node != NULL ) { 40004ac8: 80 a2 20 00 cmp %o0, 0 40004acc: 22 80 00 11 be,a 40004b10 <== NEVER TAKEN 40004ad0: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED --node->reference_count; 40004ad4: c4 12 20 18 lduh [ %o0 + 0x18 ], %g2 --node->st_nlink; 40004ad8: c2 12 20 1a lduh [ %o0 + 0x1a ], %g1 40004adc: 82 00 7f ff add %g1, -1, %g1 --node->reference_count; 40004ae0: 84 00 bf ff add %g2, -1, %g2 --node->st_nlink; 40004ae4: c2 32 20 1a sth %g1, [ %o0 + 0x1a ] --node->reference_count; 40004ae8: c4 32 20 18 sth %g2, [ %o0 + 0x18 ] if ( node->Parent != NULL ) { 40004aec: c2 02 20 08 ld [ %o0 + 8 ], %g1 40004af0: 80 a0 60 00 cmp %g1, 0 40004af4: 02 80 00 07 be 40004b10 <== NEVER TAKEN 40004af8: b0 10 20 00 clr %i0 node->Parent = NULL; 40004afc: c0 22 20 08 clr [ %o0 + 8 ] next = the_node->next; 40004b00: c4 02 00 00 ld [ %o0 ], %g2 previous = the_node->previous; 40004b04: c2 02 20 04 ld [ %o0 + 4 ], %g1 next->previous = previous; 40004b08: c2 20 a0 04 st %g1, [ %g2 + 4 ] previous->next = next; 40004b0c: c4 20 40 00 st %g2, [ %g1 ] 40004b10: 81 c7 e0 08 ret 40004b14: 81 e8 00 00 restore } else { rv = -1; } return rv; } 40004b18: 81 c7 e0 08 ret <== NOT EXECUTED 40004b1c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004be8 : { 40004be8: 9d e3 bf 98 save %sp, -104, %sp sizeof( IMFS_sym_link_t ) + strlen( target ) + 1, 40004bec: 40 00 37 94 call 40012a3c 40004bf0: 90 10 00 1b mov %i3, %o0 new_node = IMFS_create_node( 40004bf4: f6 23 a0 5c st %i3, [ %sp + 0x5c ] 40004bf8: 94 02 20 49 add %o0, 0x49, %o2 40004bfc: 98 10 00 1a mov %i2, %o4 40004c00: 90 10 00 18 mov %i0, %o0 40004c04: 1b 00 00 28 sethi %hi(0xa000), %o5 40004c08: 96 10 00 19 mov %i1, %o3 40004c0c: 9a 13 61 ff or %o5, 0x1ff, %o5 40004c10: 13 10 00 50 sethi %hi(0x40014000), %o1 return 0; 40004c14: b0 10 20 00 clr %i0 new_node = IMFS_create_node( 40004c18: 40 00 2e 49 call 4001053c 40004c1c: 92 12 61 14 or %o1, 0x114, %o1 if ( new_node == NULL ) { 40004c20: 80 a2 20 00 cmp %o0, 0 40004c24: 02 80 00 04 be 40004c34 <== NEVER TAKEN 40004c28: 01 00 00 00 nop } 40004c2c: 81 c7 e0 08 ret 40004c30: 81 e8 00 00 restore rtems_set_errno_and_return_minus_one( ENOMEM ); 40004c34: 40 00 36 10 call 40012474 <__errno> <== NOT EXECUTED 40004c38: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004c3c: 82 10 20 0c mov 0xc, %g1 <== NOT EXECUTED 40004c40: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED } 40004c44: 81 c7 e0 08 ret <== NOT EXECUTED 40004c48: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004cb0 : #endif #include int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) { 40004cb0: 9d e3 bf a0 save %sp, -96, %sp int rv = 0; IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 40004cb4: c2 06 20 20 ld [ %i0 + 0x20 ], %g1 40004cb8: c4 00 60 08 ld [ %g1 + 8 ], %g2 return S_ISDIR( node->st_mode ); 40004cbc: 07 00 00 3c sethi %hi(0xf000), %g3 40004cc0: c2 00 a0 14 ld [ %g2 + 0x14 ], %g1 40004cc4: 82 08 40 03 and %g1, %g3, %g1 if ( IMFS_is_directory( node ) ) { 40004cc8: 07 00 00 10 sethi %hi(0x4000), %g3 40004ccc: 80 a0 40 03 cmp %g1, %g3 40004cd0: 12 80 00 0f bne 40004d0c <== NEVER TAKEN 40004cd4: 01 00 00 00 nop IMFS_directory_t *dir = (IMFS_directory_t *) node; if ( dir->mt_fs == mt_entry ) { 40004cd8: c2 00 a0 4c ld [ %g2 + 0x4c ], %g1 40004cdc: 80 a0 40 18 cmp %g1, %i0 40004ce0: 12 80 00 05 bne 40004cf4 <== NEVER TAKEN 40004ce4: 01 00 00 00 nop dir->mt_fs = NULL; 40004ce8: c0 20 a0 4c clr [ %g2 + 0x4c ] 40004cec: 81 c7 e0 08 ret 40004cf0: 91 e8 20 00 restore %g0, 0, %o0 } else { errno = EINVAL; 40004cf4: 40 00 35 e0 call 40012474 <__errno> <== NOT EXECUTED 40004cf8: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004cfc: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 40004d00: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004d04: 81 c7 e0 08 ret <== NOT EXECUTED 40004d08: 81 e8 00 00 restore <== NOT EXECUTED rv = -1; } } else { errno = ENOTDIR; 40004d0c: 40 00 35 da call 40012474 <__errno> <== NOT EXECUTED 40004d10: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004d14: 82 10 20 14 mov 0x14, %g1 <== NOT EXECUTED 40004d18: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED rv = -1; } return rv; } 40004d1c: 81 c7 e0 08 ret <== NOT EXECUTED 40004d20: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004d24 : int IMFS_utime( const rtems_filesystem_location_info_t *loc, time_t actime, time_t modtime ) { 40004d24: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED IMFS_jnode_t *the_jnode; the_jnode = (IMFS_jnode_t *) loc->node_access; 40004d28: fa 06 20 08 ld [ %i0 + 8 ], %i5 <== NOT EXECUTED { 40004d2c: 84 10 00 1b mov %i3, %g2 <== NOT EXECUTED 40004d30: b0 10 00 19 mov %i1, %i0 <== NOT EXECUTED 40004d34: 86 10 00 1c mov %i4, %g3 <== NOT EXECUTED 40004d38: b2 10 00 1a mov %i2, %i1 <== NOT EXECUTED the_jnode->stat_atime = actime; the_jnode->stat_mtime = modtime; 40004d3c: c4 3f 60 28 std %g2, [ %i5 + 0x28 ] <== NOT EXECUTED the_jnode->stat_ctime = time( NULL ); 40004d40: 90 10 20 00 clr %o0 <== NOT EXECUTED the_jnode->stat_atime = actime; 40004d44: f0 3f 60 20 std %i0, [ %i5 + 0x20 ] <== NOT EXECUTED the_jnode->stat_ctime = time( NULL ); 40004d48: 40 00 37 6d call 40012afc