RTEMS-5
Annotated Report
Fri Aug 10 14:10:46 2018
400145a0 <IMFS_LIMITS_AND_OPTIONS>:
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 <IMFS_chown>:
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 <IMFS_create_node>:
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 <calloc>
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 <IMFS_create_node+0x84>
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 <IMFS_initialize_node>
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 <IMFS_create_node+0x70>
<== 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 <memcpy>
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 <free>
<== 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 <IMFS_create_node+0x68>
400105d0: c2 22 00 00 st %g1, [ %o0 ]
40003a10 <IMFS_fchmod>:
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_fsunmount>:
((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 <IMFS_fsunmount+0xb0>
<== 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 <IMFS_fsunmount+0xb4>
<== 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 <IMFS_fsunmount+0x10c>
<== 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 <IMFS_fsunmount+0x68>
<== 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 <IMFS_rmnod>
<== 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 <IMFS_fsunmount+0x114>
<== NOT EXECUTED
4002868c: 11 37 ab 6f sethi %hi(0xdeadbc00), %o0
<== NOT EXECUTED
IMFS_node_destroy( jnode );
40028690: 7f ff 95 28 call 4000db30 <IMFS_node_destroy>
<== 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 <IMFS_fsunmount+0x10c>
<== 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 <IMFS_fsunmount+0x90>
<== 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 <IMFS_fsunmount+0x80>
<== NOT EXECUTED
400286c8: 80 a0 a0 00 cmp %g2, 0
<== NOT EXECUTED
} while (jnode != NULL);
400286cc: 10 bf ff e3 b 40028658 <IMFS_fsunmount+0x90>
<== 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 <rtems_fatal_error_occurred>
<== NOT EXECUTED
400286e0: 90 12 22 ef or %o0, 0x2ef, %o0
<== NOT EXECUTED
400286e4: 01 00 00 00 nop
<== NOT EXECUTED
4000c8d8 <IMFS_initialize>:
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 <calloc>
<== 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 <IMFS_ops>
<== 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 <IMFS_default_mknod_controls>
<== NOT EXECUTED
if ( fs_info == NULL ) {
4000c904: 02 80 00 07 be 4000c920 <IMFS_initialize+0x48>
<== 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 <IMFS_initialize_support>
<== 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 <IMFS_initialize_node>:
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 <IMFS_initialize_node+0x6c>
<== NEVER TAKEN
40004894: 92 10 20 00 clr %o1
errno = ENAMETOOLONG;
return NULL;
}
gettimeofday( &tv, 0 );
40004898: 40 00 01 e0 call 40005018 <gettimeofday>
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 <geteuid>
400048bc: f8 26 20 14 st %i4, [ %i0 + 0x14 ]
node->st_gid = getegid();
400048c0: 40 00 01 ca call 40004fe8 <getegid>
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 <IMFS_initialize_support>:
{
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 <IMFS_initialize_node>
40003ab4: 94 12 a3 58 or %o2, 0x358, %o2 ! 40013f58 <rtems_test_name+0xf8>
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 <IMFS_LIMITS_AND_OPTIONS>
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 <imfs_rq_memfile_bytes_per_block>
if (bit_mask == requested_bytes_per_block) {
40003aec: 80 a0 e0 10 cmp %g3, 0x10
40003af0: 02 80 00 0e be 40003b28 <IMFS_initialize_support+0xa4>
<== NEVER TAKEN
40003af4: 80 a0 e0 0f cmp %g3, 0xf
if(bit_mask > requested_bytes_per_block)
40003af8: 04 80 00 0b ble 40003b24 <IMFS_initialize_support+0xa0>
<== 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 <IMFS_initialize_support+0xa8>
40003b0c: 03 10 00 5c sethi %hi(0x40017000), %g1
if(bit_mask > requested_bytes_per_block)
40003b10: 26 80 00 06 bl,a 40003b28 <IMFS_initialize_support+0xa4>
<== 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 <IMFS_initialize_support+0x80>
<== 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 <imfs_memfile_bytes_per_block>
}
40003b30: 81 c7 e0 08 ret
40003b34: 91 e8 20 00 restore %g0, 0, %o0
40003c24 <IMFS_link>:
{
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 <IMFS_link+0x74>
<== 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 <IMFS_create_node>
<== NOT EXECUTED
40003c58: 92 12 60 70 or %o1, 0x70, %o1 ! 40014070 <IMFS_node_control_hard_link>
<== NOT EXECUTED
if ( !new_node )
40003c5c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40003c60: 02 80 00 14 be 40003cb0 <IMFS_link+0x8c>
<== 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 <IMFS_make_generic_node>:
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 <rtems_current_user_env_get>
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 <IMFS_make_generic_node+0x54>
400105fc: 94 10 20 78 mov 0x78, %o2
40010600: 08 80 00 1d bleu 40010674 <IMFS_make_generic_node+0xa0>
<== 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 <IMFS_make_generic_node+0x54>
<== 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 <IMFS_make_generic_node+0xb8>
<== 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 <rtems_filesystem_eval_path_start>
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 <IMFS_node_clone>
40010648: 80 a0 80 01 cmp %g2, %g1
4001064c: 02 80 00 16 be 400106a4 <IMFS_make_generic_node+0xd0>
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 <rtems_filesystem_eval_path_error>
40010660: b0 10 3f ff mov -1, %i0
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
40010664: 7f ff d7 f1 call 40006628 <rtems_filesystem_eval_path_cleanup>
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 <IMFS_make_generic_node+0x50>
<== 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 <IMFS_make_generic_node+0x54>
<== 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 <IMFS_create_node>
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 <IMFS_make_generic_node+0x90>
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 <rtems_filesystem_eval_path_cleanup>
400106f0: 90 07 bf c8 add %fp, -56, %o0
}
400106f4: 81 c7 e0 08 ret
400106f8: 81 e8 00 00 restore
40004508 <IMFS_memfile_write>:
{
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 <IMFS_memfile_write+0x160>
<== 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 <imfs_memfile_bytes_per_block>
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 <IMFS_memfile_write+0xc4>
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 <IMFS_memfile_write+0xa0>
40004574: 92 10 00 1a mov %i2, %o1
if ( my_length ) {
40004578: 10 80 00 29 b 4000461c <IMFS_memfile_write+0x114>
4000457c: 80 a7 20 00 cmp %i4, 0
memcpy( &(*block_ptr)[ 0 ], src, to_copy );
40004580: 40 00 37 fa call 40012568 <memcpy>
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 <IMFS_memfile_write+0x110>
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 <IMFS_memfile_get_block_pointer>
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 <IMFS_memfile_write+0x78>
<== 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 <IMFS_memfile_get_block_pointer>
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 <IMFS_memfile_write+0xbc>
<== 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 <IMFS_memfile_write+0x1bc>
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 <memcpy>
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 <IMFS_memfile_write+0x64>
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 <IMFS_memfile_write+0x144>
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 <IMFS_memfile_get_block_pointer>
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 <IMFS_memfile_write+0xbc>
<== 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 <memcpy>
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 <IMFS_memfile_write+0x190>
<== 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 <IMFS_memfile_extend>
<== 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 <IMFS_memfile_write+0x1c>
<== 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 <IMFS_memfile_write+0x1e8>
<== 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 <IMFS_memfile_extend>
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 <IMFS_memfile_write+0x1c>
<== ALWAYS TAKEN
400046bc: 23 10 00 5c sethi %hi(0x40017000), %l1
400046c0: 30 bf ff f4 b,a 40004690 <IMFS_memfile_write+0x188>
<== 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 <memcpy>
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 <IMFS_memfile_write+0x64>
400046ec: b8 27 00 18 sub %i4, %i0, %i4
bool zero_fill = start > memfile->File.size;
400046f0: 18 bf ff e2 bgu 40004678 <IMFS_memfile_write+0x170>
<== NEVER TAKEN
400046f4: 94 10 20 00 clr %o2
400046f8: 10 bf ff ec b 400046a8 <IMFS_memfile_write+0x1a0>
400046fc: 92 10 20 00 clr %o1
40004764 <IMFS_mknod>:
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 <IMFS_mknod+0xa0>
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 <IMFS_mknod+0x54>
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 <IMFS_mknod+0x54>
<== 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 <IMFS_create_node>
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 <IMFS_mknod+0xa8>
<== 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 <IMFS_mknod+0x54>
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 <IMFS_mknod_control_device>:
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 <IMFS_mknod_control_dir_default>:
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 <IMFS_mknod_control_enosys>:
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 <IMFS_mknod_control_memfile>:
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 <IMFS_mount>:
#endif
#include <rtems/imfs.h>
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 <IMFS_mount+0x5c>
<== 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 <IMFS_mount+0x44>
<== 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 <IMFS_node_control_linfile>:
4006494c: 40 06 49 5c 40 00 ca 08 40 00 db 88 40 00 db 90 @.I\@...@...@...
40004924 <IMFS_node_destroy>:
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 <IMFS_node_destroy_default>:
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 <IMFS_node_destroy_default+0x1c>
<== NEVER TAKEN
40004994: 01 00 00 00 nop
free( RTEMS_DECONST( char *, node->name ) );
}
free( node );
40004998: 40 00 01 72 call 40004f60 <free>
4000499c: 81 e8 00 00 restore
free( RTEMS_DECONST( char *, node->name ) );
400049a0: 40 00 01 70 call 40004f60 <free>
<== NOT EXECUTED
400049a4: d0 06 20 0c ld [ %i0 + 0xc ], %o0
<== NOT EXECUTED
free( node );
400049a8: 40 00 01 6e call 40004f60 <free>
<== NOT EXECUTED
400049ac: 81 e8 00 00 restore
<== NOT EXECUTED
40003798 <IMFS_node_remove_directory>:
{
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 <IMFS_node_remove_directory+0x40>
<== 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 <IMFS_node_remove_directory+0x50>
<== 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 <PROM_START>
<== 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 <IMFS_readlink>:
for( i=0; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )
40004c4c: 80 a2 a0 00 cmp %o2, 0
<== NOT EXECUTED
40004c50: 02 80 00 16 be 40004ca8 <IMFS_readlink+0x5c>
<== 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 <IMFS_readlink+0x38>
<== NOT EXECUTED
40004c6c: c2 08 40 00 ldub [ %g1 ], %g1
<== NOT EXECUTED
40004c70: 30 80 00 0c b,a 40004ca0 <IMFS_readlink+0x54>
<== 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 <IMFS_readlink+0x4c>
<== 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; ((i<bufsize) && (sym_link->name[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 <IMFS_readlink+0x28>
<== 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; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )
40004ca8: 81 c3 e0 08 retl
<== NOT EXECUTED
40004cac: 90 10 20 00 clr %o0 ! 0 <PROM_START>
<== NOT EXECUTED
400049b0 <IMFS_rename>:
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 <IMFS_rename+0xe8>
<== 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 <IMFS_rename+0xb8>
<== 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 <malloc>
<== 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 <IMFS_rename+0xd0>
<== 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 <memcpy>
<== 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 <IMFS_rename+0xa8>
<== 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 <free>
<== NOT EXECUTED
40004a5c: d0 07 60 0c ld [ %i5 + 0xc ], %o0
<== NOT EXECUTED
40004a60: 10 bf ff e8 b 40004a00 <IMFS_rename+0x50>
<== 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 <IMFS_rmnod>:
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 <IMFS_rmnod+0x60>
<== 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 <IMFS_rmnod+0x60>
<== 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 <IMFS_symlink>:
{
40004be8: 9d e3 bf 98 save %sp, -104, %sp
sizeof( IMFS_sym_link_t ) + strlen( target ) + 1,
40004bec: 40 00 37 94 call 40012a3c <strlen>
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 <IMFS_create_node>
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 <IMFS_symlink+0x4c>
<== 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 <IMFS_unmount>:
#endif
#include <rtems/imfs.h>
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 <IMFS_unmount+0x5c>
<== 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 <IMFS_unmount+0x44>
<== 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 <IMFS_utime>:
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 <time>
<== NOT EXECUTED
40004d4c: b0 10 20 00 clr %i0
<== NOT EXECUTED
40004d50: d0 3f 60 30 std %o0, [ %i5 + 0x30 ]
<== NOT EXECUTED
return 0;
}
40004d54: 81 c7 e0 08 ret
<== NOT EXECUTED
40004d58: 81 e8 00 00 restore
<== NOT EXECUTED
4001043c <device_ftruncate>:
rtems_libio_t *iop,
off_t length
)
{
return 0;
}
4001043c: 81 c3 e0 08 retl
<== NOT EXECUTED
40010440: 90 10 20 00 clr %o0
<== NOT EXECUTED
4000cb98 <rtems_tarfs_load>:
int rtems_tarfs_load(
const char *mountpoint,
uint8_t *tar_image,
size_t tar_size
)
{
4000cb98: 9d e3 bd 78 save %sp, -648, %sp
unsigned long nblocks;
int rv = 0;
int eval_flags = RTEMS_FS_FOLLOW_LINK;
rtems_filesystem_eval_path_context_t ctx;
rtems_filesystem_location_info_t rootloc;
rtems_filesystem_location_info_t *currentloc =
4000cb9c: 94 10 20 18 mov 0x18, %o2
4000cba0: 92 10 00 18 mov %i0, %o1
4000cba4: 40 00 1a fe call 4001379c <rtems_filesystem_eval_path_start>
4000cba8: 90 07 be 00 add %fp, -512, %o0
rtems_filesystem_location_copy_and_detach(
4000cbac: 92 07 be 18 add %fp, -488, %o1
4000cbb0: aa 10 00 08 mov %o0, %l5
4000cbb4: 40 00 1c 93 call 40013e00 <rtems_filesystem_location_copy_and_detach>
4000cbb8: 90 07 bd e8 add %fp, -536, %o0
return loc->mt_entry->ops->clonenod_h == IMFS_node_clone;
4000cbbc: c2 07 bd fc ld [ %fp + -516 ], %g1
4000cbc0: c2 00 60 0c ld [ %g1 + 0xc ], %g1
ctx->flags = flags;
4000cbc4: 84 10 20 60 mov 0x60, %g2
4000cbc8: c4 27 be 10 st %g2, [ %fp + -496 ]
rtems_filesystem_eval_path_set_flags(
&ctx,
RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE
);
if ( !IMFS_is_imfs_instance( &rootloc ) ) {
4000cbcc: c4 00 60 24 ld [ %g1 + 0x24 ], %g2
4000cbd0: 03 10 00 36 sethi %hi(0x4000d800), %g1
4000cbd4: 82 10 63 18 or %g1, 0x318, %g1 ! 4000db18 <IMFS_node_clone>
4000cbd8: 80 a0 80 01 cmp %g2, %g1
4000cbdc: 02 80 00 0a be 4000cc04 <rtems_tarfs_load+0x6c>
4000cbe0: 2f 10 01 8f sethi %hi(0x40063c00), %l7
rv = -1;
4000cbe4: b8 10 3f ff mov -1, %i4
rv = symlink(linkto, full_filename);
}
}
rtems_filesystem_location_free( &rootloc );
4000cbe8: 40 00 13 d3 call 40011b34 <rtems_filesystem_location_free>
4000cbec: 90 07 bd e8 add %fp, -536, %o0
rtems_filesystem_eval_path_cleanup( &ctx );
4000cbf0: 90 07 be 00 add %fp, -512, %o0
4000cbf4: 40 00 1b 34 call 400138c4 <rtems_filesystem_eval_path_cleanup>
4000cbf8: b0 10 00 1c mov %i4, %i0
return rv;
}
4000cbfc: 81 c7 e0 08 ret
4000cc00: 81 e8 00 00 restore
if ( !rtems_filesystem_location_is_null( currentloc ) ) {
4000cc04: 82 15 e1 e0 or %l7, 0x1e0, %g1
4000cc08: c2 27 bd e4 st %g1, [ %fp + -540 ]
IMFS_linearfile_t *linfile = (IMFS_linearfile_t *)
4000cc0c: 03 10 01 92 sethi %hi(0x40064800), %g1
4000cc10: 82 10 61 4c or %g1, 0x14c, %g1 ! 4006494c <IMFS_node_control_linfile>
4000cc14: c2 27 bd e0 st %g1, [ %fp + -544 ]
if (strncmp(&hdr_ptr[257], "ustar", 5))
4000cc18: 29 10 01 8d sethi %hi(0x40063400), %l4
4000cc1c: ba 10 20 00 clr %i5
4000cc20: a8 15 22 30 or %l4, 0x230, %l4
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
4000cc24: a4 07 be 98 add %fp, -360, %l2
strncpy(full_filename, mountpoint, 255);
4000cc28: a2 07 bf 00 add %fp, -256, %l1
if (offset + 512 > tar_size)
4000cc2c: b6 07 62 00 add %i5, 0x200, %i3
4000cc30: 80 a6 c0 1a cmp %i3, %i2
4000cc34: 18 80 00 2c bgu 4000cce4 <rtems_tarfs_load+0x14c>
<== NEVER TAKEN
4000cc38: 2d 00 00 20 sethi %hi(0x8000), %l6
hdr_ptr = (char *) &tar_image[offset];
4000cc3c: ba 06 40 1d add %i1, %i5, %i5
if (strncmp(&hdr_ptr[257], "ustar", 5))
4000cc40: 94 10 20 05 mov 5, %o2
4000cc44: 92 10 00 14 mov %l4, %o1
4000cc48: 40 00 f1 da call 400493b0 <strncmp>
4000cc4c: 90 07 61 01 add %i5, 0x101, %o0
4000cc50: 80 a2 20 00 cmp %o0, 0
4000cc54: 12 80 00 24 bne 4000cce4 <rtems_tarfs_load+0x14c>
4000cc58: 94 10 20 63 mov 0x63, %o2
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
4000cc5c: 92 10 00 1d mov %i5, %o1
4000cc60: 40 00 f2 1e call 400494d8 <strncpy>
4000cc64: 90 10 00 12 mov %l2, %o0
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
4000cc68: 92 10 20 08 mov 8, %o1
filename[MAX_NAME_FIELD_SIZE] = '\0';
4000cc6c: c0 2f be fb clrb [ %fp + -261 ]
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
4000cc70: 90 07 60 64 add %i5, 0x64, %o0
4000cc74: 40 00 6b c8 call 40027b94 <_rtems_octal2ulong>
4000cc78: f8 0f 60 9c ldub [ %i5 + 0x9c ], %i4
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
4000cc7c: 92 10 20 0c mov 0xc, %o1
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
4000cc80: a6 10 00 08 mov %o0, %l3
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
4000cc84: 40 00 6b c4 call 40027b94 <_rtems_octal2ulong>
4000cc88: 90 07 60 7c add %i5, 0x7c, %o0
hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);
4000cc8c: 92 10 20 08 mov 8, %o1
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
4000cc90: a0 10 00 08 mov %o0, %l0
hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);
4000cc94: 40 00 6b c0 call 40027b94 <_rtems_octal2ulong>
4000cc98: 90 07 60 94 add %i5, 0x94, %o0
4000cc9c: ae 10 00 08 mov %o0, %l7
if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)
4000cca0: 40 00 6b d3 call 40027bec <_rtems_tar_header_checksum>
4000cca4: 90 10 00 1d mov %i5, %o0
4000cca8: 80 a2 00 17 cmp %o0, %l7
4000ccac: 12 80 00 0e bne 4000cce4 <rtems_tarfs_load+0x14c>
<== NEVER TAKEN
4000ccb0: b8 0f 20 ff and %i4, 0xff, %i4
if (linkflag == DIRTYPE) {
4000ccb4: 80 a7 20 35 cmp %i4, 0x35
4000ccb8: 02 80 00 2e be 4000cd70 <rtems_tarfs_load+0x1d8>
4000ccbc: 80 a7 20 30 cmp %i4, 0x30
else if (linkflag == REGTYPE) {
4000ccc0: 02 80 00 63 be 4000ce4c <rtems_tarfs_load+0x2b4>
4000ccc4: 80 a7 20 32 cmp %i4, 0x32
else if (linkflag == SYMTYPE) {
4000ccc8: 02 80 00 0f be 4000cd04 <rtems_tarfs_load+0x16c>
<== ALWAYS TAKEN
4000cccc: 94 10 20 ff mov 0xff, %o2
{
4000ccd0: ba 10 00 1b mov %i3, %i5
<== NOT EXECUTED
if (offset + 512 > tar_size)
4000ccd4: b6 07 62 00 add %i5, 0x200, %i3
4000ccd8: 80 a6 c0 1a cmp %i3, %i2
4000ccdc: 28 bf ff d9 bleu,a 4000cc40 <rtems_tarfs_load+0xa8>
<== ALWAYS TAKEN
4000cce0: ba 06 40 1d add %i1, %i5, %i5
rtems_filesystem_location_free( &rootloc );
4000cce4: 40 00 13 94 call 40011b34 <rtems_filesystem_location_free>
4000cce8: 90 07 bd e8 add %fp, -536, %o0
4000ccec: b8 10 20 00 clr %i4
rtems_filesystem_eval_path_cleanup( &ctx );
4000ccf0: 90 07 be 00 add %fp, -512, %o0
4000ccf4: 40 00 1a f4 call 400138c4 <rtems_filesystem_eval_path_cleanup>
4000ccf8: b0 10 00 1c mov %i4, %i0
}
4000ccfc: 81 c7 e0 08 ret
4000cd00: 81 e8 00 00 restore
strncpy(full_filename, mountpoint, 255);
4000cd04: 92 10 00 18 mov %i0, %o1
4000cd08: 40 00 f1 f4 call 400494d8 <strncpy>
4000cd0c: 90 10 00 11 mov %l1, %o0
if (full_filename[(len=strlen(full_filename))-1] != '/')
4000cd10: 40 00 f1 48 call 40049230 <strlen>
4000cd14: 90 10 00 11 mov %l1, %o0
4000cd18: 82 07 80 08 add %fp, %o0, %g1
4000cd1c: c2 48 7e ff ldsb [ %g1 + -257 ], %g1
4000cd20: 80 a0 60 2f cmp %g1, 0x2f
4000cd24: 02 80 00 06 be 4000cd3c <rtems_tarfs_load+0x1a4>
<== ALWAYS TAKEN
4000cd28: ba 07 60 9d add %i5, 0x9d, %i5
strcat(full_filename, "/");
4000cd2c: 82 10 20 2f mov 0x2f, %g1
<== NOT EXECUTED
4000cd30: c2 2c 40 08 stb %g1, [ %l1 + %o0 ]
<== NOT EXECUTED
4000cd34: 82 04 40 08 add %l1, %o0, %g1
<== NOT EXECUTED
4000cd38: c0 28 60 01 clrb [ %g1 + 1 ]
<== NOT EXECUTED
strncat(full_filename, filename, 256-len-1);
4000cd3c: 92 10 00 12 mov %l2, %o1
4000cd40: 94 10 20 fe mov 0xfe, %o2
4000cd44: 94 22 80 08 sub %o2, %o0, %o2
4000cd48: 40 00 f1 6a call 400492f0 <strncat>
4000cd4c: 90 10 00 11 mov %l1, %o0
rv = symlink(linkto, full_filename);
4000cd50: 90 10 00 1d mov %i5, %o0
4000cd54: 92 10 00 11 mov %l1, %o1
4000cd58: 40 00 1c d8 call 400140b8 <symlink>
4000cd5c: ba 10 00 1b mov %i3, %i5
while ( rv == 0 ) {
4000cd60: 80 a2 20 00 cmp %o0, 0
4000cd64: 02 bf ff b2 be 4000cc2c <rtems_tarfs_load+0x94>
<== ALWAYS TAKEN
4000cd68: b8 10 00 08 mov %o0, %i4
4000cd6c: 30 bf ff 9f b,a 4000cbe8 <rtems_tarfs_load+0x50>
<== NOT EXECUTED
strncpy(full_filename, mountpoint, 255);
4000cd70: 94 10 20 ff mov 0xff, %o2
4000cd74: 92 10 00 18 mov %i0, %o1
4000cd78: 40 00 f1 d8 call 400494d8 <strncpy>
4000cd7c: 90 10 00 11 mov %l1, %o0
if (full_filename[(len=strlen(full_filename))-1] != '/')
4000cd80: 40 00 f1 2c call 40049230 <strlen>
4000cd84: 90 10 00 11 mov %l1, %o0
4000cd88: 84 07 80 08 add %fp, %o0, %g2
4000cd8c: c4 48 be ff ldsb [ %g2 + -257 ], %g2
4000cd90: 80 a0 a0 2f cmp %g2, 0x2f
4000cd94: 02 80 00 06 be 4000cdac <rtems_tarfs_load+0x214>
<== ALWAYS TAKEN
4000cd98: 82 10 00 08 mov %o0, %g1
strcat(full_filename, "/");
4000cd9c: 84 10 20 2f mov 0x2f, %g2
<== NOT EXECUTED
4000cda0: c4 2c 40 08 stb %g2, [ %l1 + %o0 ]
<== NOT EXECUTED
4000cda4: 84 04 40 08 add %l1, %o0, %g2
<== NOT EXECUTED
4000cda8: c0 28 a0 01 clrb [ %g2 + 1 ]
<== NOT EXECUTED
strncat(full_filename, filename, 256-len-1);
4000cdac: 92 10 00 12 mov %l2, %o1
4000cdb0: 90 10 00 11 mov %l1, %o0
4000cdb4: 94 10 20 fe mov 0xfe, %o2
4000cdb8: 40 00 f1 4e call 400492f0 <strncat>
4000cdbc: 94 22 80 01 sub %o2, %g1, %o2
if ( mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO) != 0 ) {
4000cdc0: 92 10 21 ff mov 0x1ff, %o1
4000cdc4: 40 00 14 ed call 40012178 <mkdir>
4000cdc8: 90 10 00 11 mov %l1, %o0
4000cdcc: 80 a2 20 00 cmp %o0, 0
4000cdd0: 02 bf ff c1 be 4000ccd4 <rtems_tarfs_load+0x13c>
<== ALWAYS TAKEN
4000cdd4: ba 10 00 1b mov %i3, %i5
if (errno == EEXIST) {
4000cdd8: 40 00 d4 ef call 40042194 <__errno>
<== NOT EXECUTED
4000cddc: 01 00 00 00 nop
<== NOT EXECUTED
4000cde0: c2 02 00 00 ld [ %o0 ], %g1
<== NOT EXECUTED
4000cde4: 80 a0 60 11 cmp %g1, 0x11
<== NOT EXECUTED
4000cde8: 12 bf ff 7f bne 4000cbe4 <rtems_tarfs_load+0x4c>
<== NOT EXECUTED
4000cdec: 92 07 be 38 add %fp, -456, %o1
<== NOT EXECUTED
if ( stat(full_filename, &stat_buf) == 0 ) {
4000cdf0: 40 00 18 cc call 40013120 <stat>
<== NOT EXECUTED
4000cdf4: 90 10 00 11 mov %l1, %o0
<== NOT EXECUTED
4000cdf8: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000cdfc: 12 bf ff 7a bne 4000cbe4 <rtems_tarfs_load+0x4c>
<== NOT EXECUTED
4000ce00: 05 00 00 3c sethi %hi(0xf000), %g2
<== NOT EXECUTED
if ( S_ISDIR(stat_buf.st_mode) ) {
4000ce04: c2 07 be 44 ld [ %fp + -444 ], %g1
<== NOT EXECUTED
4000ce08: 82 08 40 02 and %g1, %g2, %g1
<== NOT EXECUTED
4000ce0c: 05 00 00 10 sethi %hi(0x4000), %g2
<== NOT EXECUTED
4000ce10: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4000ce14: 02 bf ff b0 be 4000ccd4 <rtems_tarfs_load+0x13c>
<== NOT EXECUTED
4000ce18: ba 10 00 1b mov %i3, %i5
<== NOT EXECUTED
if ( unlink(full_filename) != -1 ) {
4000ce1c: 40 00 1c b8 call 400140fc <unlink>
<== NOT EXECUTED
4000ce20: 90 10 00 11 mov %l1, %o0
<== NOT EXECUTED
4000ce24: 80 a2 3f ff cmp %o0, -1
<== NOT EXECUTED
4000ce28: 02 bf ff 6f be 4000cbe4 <rtems_tarfs_load+0x4c>
<== NOT EXECUTED
4000ce2c: 92 10 21 ff mov 0x1ff, %o1
<== NOT EXECUTED
if ( mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO) == 0 )
4000ce30: 40 00 14 d2 call 40012178 <mkdir>
<== NOT EXECUTED
4000ce34: 90 10 00 11 mov %l1, %o0
<== NOT EXECUTED
4000ce38: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000ce3c: 12 bf ff 6a bne 4000cbe4 <rtems_tarfs_load+0x4c>
<== NOT EXECUTED
4000ce40: ba 10 00 1b mov %i3, %i5
<== NOT EXECUTED
if (offset + 512 > tar_size)
4000ce44: 10 bf ff a5 b 4000ccd8 <rtems_tarfs_load+0x140>
<== NOT EXECUTED
4000ce48: b6 07 62 00 add %i5, 0x200, %i3
<== NOT EXECUTED
rtems_filesystem_location_free( currentloc );
4000ce4c: 40 00 13 3a call 40011b34 <rtems_filesystem_location_free>
4000ce50: 90 10 00 15 mov %l5, %o0
rtems_filesystem_location_clone( currentloc, &rootloc );
4000ce54: 92 07 bd e8 add %fp, -536, %o1
4000ce58: 40 00 11 a7 call 400114f4 <rtems_filesystem_location_clone>
4000ce5c: 90 10 00 15 mov %l5, %o0
rtems_filesystem_eval_path_set_path(
4000ce60: 40 00 f0 f4 call 40049230 <strlen>
4000ce64: 90 10 00 12 mov %l2, %o0
ctx->path = path;
4000ce68: e4 27 be 00 st %l2, [ %fp + -512 ]
ctx->pathlen = pathlen;
4000ce6c: d0 27 be 04 st %o0, [ %fp + -508 ]
rtems_filesystem_eval_path_continue( &ctx );
4000ce70: 40 00 19 d8 call 400135d0 <rtems_filesystem_eval_path_continue>
4000ce74: 90 07 be 00 add %fp, -512, %o0
if ( !rtems_filesystem_location_is_null( currentloc ) ) {
4000ce78: c2 05 60 10 ld [ %l5 + 0x10 ], %g1
4000ce7c: c4 07 bd e4 ld [ %fp + -540 ], %g2
4000ce80: 80 a0 40 02 cmp %g1, %g2
4000ce84: 02 80 00 0f be 4000cec0 <rtems_tarfs_load+0x328>
<== NEVER TAKEN
4000ce88: 9a 0c e1 ff and %l3, 0x1ff, %o5
IMFS_linearfile_t *linfile = (IMFS_linearfile_t *)
4000ce8c: c0 23 a0 5c clr [ %sp + 0x5c ]
4000ce90: d8 07 be 0c ld [ %fp + -500 ], %o4
4000ce94: d6 07 be 08 ld [ %fp + -504 ], %o3
4000ce98: d2 07 bd e0 ld [ %fp + -544 ], %o1
4000ce9c: 9a 13 40 16 or %o5, %l6, %o5
4000cea0: 94 10 20 58 mov 0x58, %o2
4000cea4: 40 00 6d a3 call 40028530 <IMFS_create_node>
4000cea8: 90 10 00 15 mov %l5, %o0
if ( linfile != NULL ) {
4000ceac: 80 a2 20 00 cmp %o0, 0
4000ceb0: 02 80 00 04 be 4000cec0 <rtems_tarfs_load+0x328>
<== NEVER TAKEN
4000ceb4: 82 06 40 1b add %i1, %i3, %g1
linfile->File.size = file_size;
4000ceb8: e0 22 20 40 st %l0, [ %o0 + 0x40 ]
linfile->direct = &tar_image[offset];
4000cebc: c2 22 20 48 st %g1, [ %o0 + 0x48 ]
nblocks = (((file_size) + 511) & ~511) / 512;
4000cec0: a0 04 21 ff add %l0, 0x1ff, %l0
offset += 512 * nblocks;
4000cec4: a0 0c 3e 00 and %l0, -512, %l0
4000cec8: b6 04 00 1b add %l0, %i3, %i3
{
4000cecc: 10 bf ff 82 b 4000ccd4 <rtems_tarfs_load+0x13c>
4000ced0: ba 10 00 1b mov %i3, %i5