RTEMS 4.11Annotated Report
Sat Dec 22 23:44:04 2012
000450e0 <IMFS_dump_directory>:
*/
static void IMFS_dump_directory(
IMFS_jnode_t *the_directory,
int level
)
{
450e0: 4e56 ffd8 linkw %fp,#-40
450e4: 206e 0008 moveal %fp@(8),%a0
450e8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
const Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Immutable_tail( the_chain ));
450ec: 2608 movel %a0,%d3
450ee: 49f9 0005 24a6 lea 524a6 <fputs>,%a4
450f4: 0683 0000 0052 addil #82,%d3
450fa: 242e 000c movel %fp@(12),%d2
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
450fe: 2668 004e moveal %a0@(78),%a3
IMFS_assert( level >= 0 );
IMFS_assert( IMFS_is_directory( the_directory ) );
the_chain = &the_directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
45102: b68b cmpl %a3,%d3
45104: 6700 008e beqw 45194 <IMFS_dump_directory+0xb4>
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( IMFS_is_directory( the_jnode ) )
IMFS_dump_directory( the_jnode, level + 1 );
45108: 2c02 movel %d2,%d6
4510a: 45f9 0005 2ff6 lea 52ff6 <fwrite>,%a2
case IMFS_FIFO:
fprintf(stdout, " FIFO not printed\n" );
return;
default:
fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );
45110: 283c 0005 2352 movel #336722,%d4
return;
}
puts("");
45116: 4bf9 0005 3d60 lea 53d60 <puts>,%a5
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( IMFS_is_directory( the_jnode ) )
IMFS_dump_directory( the_jnode, level + 1 );
4511c: 5286 addql #1,%d6
4511e: 2a3c 0004 50e0 movel #282848,%d5
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
the_jnode = (IMFS_jnode_t *) the_node;
for ( i=0 ; i<=level ; i++ )
45124: 4287 clrl %d7
45126: 4a82 tstl %d2
45128: 6d24 blts 4514e <IMFS_dump_directory+0x6e> <== NEVER TAKEN
fprintf(stdout, "...." );
4512a: 2079 0006 3ff0 moveal 63ff0 <_impure_ptr>,%a0
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
the_jnode = (IMFS_jnode_t *) the_node;
for ( i=0 ; i<=level ; i++ )
45130: 5287 addql #1,%d7
fprintf(stdout, "...." );
45132: 2f28 0008 movel %a0@(8),%sp@-
45136: 4878 0004 pea 4 <CONTEXT_ARG>
4513a: 4878 0001 pea 1 <ADD>
4513e: 4879 0006 2719 pea 62719 <map.6766+0x11>
45144: 4e92 jsr %a2@
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
the_jnode = (IMFS_jnode_t *) the_node;
for ( i=0 ; i<=level ; i++ )
45146: 4fef 0010 lea %sp@(16),%sp
4514a: be82 cmpl %d2,%d7
4514c: 6fdc bles 4512a <IMFS_dump_directory+0x4a>
IMFS_jnode_t *the_jnode
)
{
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
4514e: 2079 0006 3ff0 moveal 63ff0 <_impure_ptr>,%a0
45154: 2f28 0008 movel %a0@(8),%sp@-
45158: 486b 000c pea %a3@(12)
4515c: 4e94 jsr %a4@
rtems_chain_extract_unprotected( &node->Node );
}
static inline IMFS_jnode_types_t IMFS_type( const IMFS_jnode_t *node )
{
return node->control->imfs_type;
4515e: 206b 004a moveal %a3@(74),%a0
switch( IMFS_type( the_jnode ) ) {
45162: 508f addql #8,%sp
45164: 7206 moveq #6,%d1
45166: 2010 movel %a0@,%d0
45168: b280 cmpl %d0,%d1
4516a: 6446 bccs 451b2 <IMFS_dump_directory+0xd2> <== ALWAYS TAKEN
case IMFS_FIFO:
fprintf(stdout, " FIFO not printed\n" );
return;
default:
fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );
4516c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4516e: 4879 0006 2773 pea 62773 <map.6766+0x6b> <== NOT EXECUTED
45174: 2079 0006 3ff0 moveal 63ff0 <_impure_ptr>,%a0 <== NOT EXECUTED
4517a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4517e: 2044 moveal %d4,%a0 <== NOT EXECUTED
45180: 4e90 jsr %a0@ <== NOT EXECUTED
}
static inline bool IMFS_is_directory( const IMFS_jnode_t *node )
{
return node->control->imfs_type == IMFS_DIRECTORY;
45182: 206b 004a moveal %a3@(74),%a0 <== NOT EXECUTED
45186: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
the_jnode = (IMFS_jnode_t *) the_node;
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( IMFS_is_directory( the_jnode ) )
4518a: 4a90 tstl %a0@ <== NOT EXECUTED
4518c: 6710 beqs 4519e <IMFS_dump_directory+0xbe> <== NOT EXECUTED
the_chain = &the_directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
4518e: 2653 moveal %a3@,%a3
IMFS_assert( level >= 0 );
IMFS_assert( IMFS_is_directory( the_directory ) );
the_chain = &the_directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
45190: b68b cmpl %a3,%d3
45192: 6690 bnes 45124 <IMFS_dump_directory+0x44>
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( IMFS_is_directory( the_jnode ) )
IMFS_dump_directory( the_jnode, level + 1 );
}
}
45194: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5
4519a: 4e5e unlk %fp
4519c: 4e75 rts
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( IMFS_is_directory( the_jnode ) )
IMFS_dump_directory( the_jnode, level + 1 );
4519e: 2f06 movel %d6,%sp@-
451a0: 2045 moveal %d5,%a0
451a2: 2f0b movel %a3,%sp@-
451a4: 4e90 jsr %a0@
the_chain = &the_directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
451a6: 2653 moveal %a3@,%a3
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( IMFS_is_directory( the_jnode ) )
IMFS_dump_directory( the_jnode, level + 1 );
451a8: 508f addql #8,%sp
IMFS_assert( level >= 0 );
IMFS_assert( IMFS_is_directory( the_directory ) );
the_chain = &the_directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
451aa: b68b cmpl %a3,%d3
451ac: 6600 ff76 bnew 45124 <IMFS_dump_directory+0x44>
451b0: 60e2 bras 45194 <IMFS_dump_directory+0xb4>
)
{
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
switch( IMFS_type( the_jnode ) ) {
451b2: 303b 0a08 movew %pc@(451bc <IMFS_dump_directory+0xdc>,%d0:l:2),%d0
451b6: 48c0 extl %d0
451b8: 4efb 0802 jmp %pc@(451bc <IMFS_dump_directory+0xdc>,%d0:l)
451bc: 0090 006e 000e oril #7208974,%d0 <== NOT EXECUTED
451c2: 000e .short 0x000e <== NOT EXECUTED
451c4: 00de .short 0x00de <== NOT EXECUTED
451c6: 0036 .short 0x0036 <== NOT EXECUTED
451c8: 00b2 2079 0006 oril #544800774,%d2 <== NOT EXECUTED
case IMFS_HARD_LINK:
fprintf(stdout, " links not printed\n" );
return;
case IMFS_SYM_LINK:
fprintf(stdout, " links not printed\n" );
451ce: 3ff0 .short 0x3ff0
451d0: 2f28 0008 movel %a0@(8),%sp@-
451d4: 4878 0013 pea 13 <INVALID_OPERATION+0x3>
451d8: 4878 0001 pea 1 <ADD>
451dc: 4879 0006 274c pea 6274c <map.6766+0x44>
451e2: 4e92 jsr %a2@
451e4: 206b 004a moveal %a3@(74),%a0
451e8: 4fef 0010 lea %sp@(16),%sp
the_jnode = (IMFS_jnode_t *) the_node;
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( IMFS_is_directory( the_jnode ) )
451ec: 4a90 tstl %a0@
451ee: 669e bnes 4518e <IMFS_dump_directory+0xae> <== ALWAYS TAKEN
451f0: 60ac bras 4519e <IMFS_dump_directory+0xbe> <== NOT EXECUTED
fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",
the_jnode->info.device.major, the_jnode->info.device.minor );
break;
case IMFS_LINEAR_FILE:
fprintf(stdout, " (file %" PRId32 " %p)",
451f2: 2f2b 0056 movel %a3@(86),%sp@-
451f6: 2f2b 0052 movel %a3@(82),%sp@-
451fa: 2079 0006 3ff0 moveal 63ff0 <_impure_ptr>,%a0
45200: 4879 0006 2731 pea 62731 <map.6766+0x29>
45206: 2f28 0008 movel %a0@(8),%sp@-
4520a: 2044 moveal %d4,%a0
4520c: 4e90 jsr %a0@
4520e: 4fef 0010 lea %sp@(16),%sp
default:
fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );
return;
}
puts("");
45212: 4879 0006 2f5a pea 62f5a <rtems_termios_baud_table+0x10a>
45218: 4e95 jsr %a5@
4521a: 588f addql #4,%sp
4521c: 206b 004a moveal %a3@(74),%a0
the_jnode = (IMFS_jnode_t *) the_node;
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( IMFS_is_directory( the_jnode ) )
45220: 4a90 tstl %a0@
45222: 6600 ff6a bnew 4518e <IMFS_dump_directory+0xae>
45226: 6000 ff76 braw 4519e <IMFS_dump_directory+0xbe>
case IMFS_DIRECTORY:
fprintf(stdout, "/" );
break;
case IMFS_DEVICE:
fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",
4522a: 2f2b 0052 movel %a3@(82),%sp@-
4522e: 2f2b 004e movel %a3@(78),%sp@-
the_jnode->info.device.major, the_jnode->info.device.minor );
break;
case IMFS_LINEAR_FILE:
fprintf(stdout, " (file %" PRId32 " %p)",
45232: 2079 0006 3ff0 moveal 63ff0 <_impure_ptr>,%a0
case IMFS_DIRECTORY:
fprintf(stdout, "/" );
break;
case IMFS_DEVICE:
fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",
45238: 4879 0006 271e pea 6271e <map.6766+0x16>
the_jnode->info.device.major, the_jnode->info.device.minor );
break;
case IMFS_LINEAR_FILE:
fprintf(stdout, " (file %" PRId32 " %p)",
4523e: 2f28 0008 movel %a0@(8),%sp@-
45242: 2044 moveal %d4,%a0
45244: 4e90 jsr %a0@
45246: 4fef 0010 lea %sp@(16),%sp
4524a: 60c6 bras 45212 <IMFS_dump_directory+0x132>
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
switch( IMFS_type( the_jnode ) ) {
case IMFS_DIRECTORY:
fprintf(stdout, "/" );
4524c: 2079 0006 3ff0 moveal 63ff0 <_impure_ptr>,%a0
45252: 2f28 0008 movel %a0@(8),%sp@-
45256: 4878 002f pea 2f <OPER2+0x1b>
4525a: 4eb9 0005 23d0 jsr 523d0 <fputc>
45260: 508f addql #8,%sp
default:
fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );
return;
}
puts("");
45262: 4879 0006 2f5a pea 62f5a <rtems_termios_baud_table+0x10a>
45268: 4e95 jsr %a5@
4526a: 588f addql #4,%sp
4526c: 60ae bras 4521c <IMFS_dump_directory+0x13c>
case IMFS_SYM_LINK:
fprintf(stdout, " links not printed\n" );
return;
case IMFS_FIFO:
fprintf(stdout, " FIFO not printed\n" );
4526e: 2079 0006 3ff0 moveal 63ff0 <_impure_ptr>,%a0
45274: 2f28 0008 movel %a0@(8),%sp@-
45278: 4878 0012 pea 12 <INVALID_OPERATION+0x2>
4527c: 4878 0001 pea 1 <ADD>
45280: 4879 0006 2760 pea 62760 <map.6766+0x58>
45286: 4e92 jsr %a2@
45288: 206b 004a moveal %a3@(74),%a0
4528c: 4fef 0010 lea %sp@(16),%sp
the_jnode = (IMFS_jnode_t *) the_node;
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( IMFS_is_directory( the_jnode ) )
45290: 4a90 tstl %a0@
45292: 6600 fefa bnew 4518e <IMFS_dump_directory+0xae>
45296: 6000 ff06 braw 4519e <IMFS_dump_directory+0xbe> <== NOT EXECUTED
the_jnode->info.file.indirect,
the_jnode->info.file.doubly_indirect,
the_jnode->info.file.triply_indirect
);
#else
fprintf(stdout, " (file %" PRId32 ")",
4529a: 2f2b 0052 movel %a3@(82),%sp@-
4529e: 2079 0006 3ff0 moveal 63ff0 <_impure_ptr>,%a0
452a4: 4879 0006 2740 pea 62740 <map.6766+0x38>
452aa: 2f28 0008 movel %a0@(8),%sp@-
452ae: 2044 moveal %d4,%a0
452b0: 4e90 jsr %a0@
452b2: 4fef 000c lea %sp@(12),%sp
default:
fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );
return;
}
puts("");
452b6: 4879 0006 2f5a pea 62f5a <rtems_termios_baud_table+0x10a>
452bc: 4e95 jsr %a5@
452be: 588f addql #4,%sp
452c0: 6000 ff5a braw 4521c <IMFS_dump_directory+0x13c>
0004b0e2 <IMFS_eval_token>:
rtems_filesystem_eval_path_generic_status status =
RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
rtems_filesystem_location_info_t *currentloc =
rtems_filesystem_eval_path_get_currentloc( ctx );
IMFS_jnode_t *dir = currentloc->node_access;
bool access_ok = rtems_filesystem_eval_path_check_access(
4b0e2: 4280 clrl %d0
rtems_filesystem_eval_path_context_t *ctx,
void *arg,
const char *token,
size_t tokenlen
)
{
4b0e4: 4e56 ffe0 linkw %fp,#-32
4b0e8: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
4b0ec: 286e 0008 moveal %fp@(8),%a4
rtems_filesystem_eval_path_generic_status status =
RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
rtems_filesystem_location_info_t *currentloc =
rtems_filesystem_eval_path_get_currentloc( ctx );
IMFS_jnode_t *dir = currentloc->node_access;
bool access_ok = rtems_filesystem_eval_path_check_access(
4b0f0: 263c 0004 be14 movel #310804,%d3
4b0f6: 2043 moveal %d3,%a0
{
rtems_filesystem_eval_path_generic_status status =
RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
rtems_filesystem_location_info_t *currentloc =
rtems_filesystem_eval_path_get_currentloc( ctx );
IMFS_jnode_t *dir = currentloc->node_access;
4b0f8: 266c 0020 moveal %a4@(32),%a3
bool access_ok = rtems_filesystem_eval_path_check_access(
4b0fc: 302b 003c movew %a3@(60),%d0
rtems_filesystem_eval_path_context_t *ctx,
void *arg,
const char *token,
size_t tokenlen
)
{
4b100: 282e 0010 movel %fp@(16),%d4
rtems_filesystem_eval_path_generic_status status =
RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
rtems_filesystem_location_info_t *currentloc =
rtems_filesystem_eval_path_get_currentloc( ctx );
IMFS_jnode_t *dir = currentloc->node_access;
bool access_ok = rtems_filesystem_eval_path_check_access(
4b104: 2f00 movel %d0,%sp@-
rtems_filesystem_eval_path_context_t *ctx,
void *arg,
const char *token,
size_t tokenlen
)
{
4b106: 242e 0014 movel %fp@(20),%d2
rtems_filesystem_eval_path_generic_status status =
RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
rtems_filesystem_location_info_t *currentloc =
rtems_filesystem_eval_path_get_currentloc( ctx );
IMFS_jnode_t *dir = currentloc->node_access;
bool access_ok = rtems_filesystem_eval_path_check_access(
4b10a: 302b 003a movew %a3@(58),%d0
4b10e: 2f00 movel %d0,%sp@-
4b110: 2f2b 002e movel %a3@(46),%sp@-
4b114: 4878 0001 pea 1 <ADD>
4b118: 2f0c movel %a4,%sp@-
4b11a: 4e90 jsr %a0@
dir->st_mode,
dir->st_uid,
dir->st_gid
);
if ( access_ok ) {
4b11c: 4fef 0014 lea %sp@(20),%sp
4b120: 4a00 tstb %d0
4b122: 660c bnes 4b130 <IMFS_eval_token+0x4e>
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
4b124: 7001 moveq #1,%d0
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;
}
}
return status;
}
4b126: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
4b12c: 4e5e unlk %fp
4b12e: 4e75 rts
static inline bool rtems_filesystem_is_current_directory(
const char *token,
size_t tokenlen
)
{
return tokenlen == 1 && token [0] == '.';
4b130: 7001 moveq #1,%d0
4b132: b082 cmpl %d2,%d0
4b134: 6700 012c beqw 4b262 <IMFS_eval_token+0x180>
static inline bool rtems_filesystem_is_parent_directory(
const char *token,
size_t tokenlen
)
{
return tokenlen == 2 && token [0] == '.' && token [1] == '.';
4b138: 7002 moveq #2,%d0
4b13a: b082 cmpl %d2,%d0
4b13c: 6700 00bc beqw 4b1fa <IMFS_eval_token+0x118>
if ( rtems_filesystem_is_parent_directory( token, tokenlen ) ) {
return dir->Parent;
} else {
rtems_chain_control *entries = &dir->info.directory.Entries;
rtems_chain_node *current = rtems_chain_first( entries );
rtems_chain_node *tail = rtems_chain_tail( entries );
4b140: 2a0b movel %a3,%d5
4b142: 0685 0000 0052 addil #82,%d5
4b148: 4bf9 0004 f4a4 lea 4f4a4 <strncmp>,%a5
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
4b14e: 246b 004e moveal %a3@(78),%a2
while ( current != tail ) {
4b152: ba8a cmpl %a2,%d5
4b154: 6700 0098 beqw 4b1ee <IMFS_eval_token+0x10c>
IMFS_jnode_t *entry = (IMFS_jnode_t *) current;
bool match = strncmp( entry->name, token, tokenlen ) == 0
4b158: 2f02 movel %d2,%sp@-
4b15a: 2f04 movel %d4,%sp@-
4b15c: 486a 000c pea %a2@(12)
4b160: 4e95 jsr %a5@
4b162: 4fef 000c lea %sp@(12),%sp
&& entry->name [tokenlen] == '\0';
4b166: 4a80 tstl %d0
4b168: 667c bnes 4b1e6 <IMFS_eval_token+0x104>
4b16a: 4a32 280c tstb %a2@(0000000c,%d2:l)
4b16e: 6676 bnes 4b1e6 <IMFS_eval_token+0x104>
rtems_chain_extract_unprotected( &node->Node );
}
static inline IMFS_jnode_types_t IMFS_type( const IMFS_jnode_t *node )
{
return node->control->imfs_type;
4b170: 206a 004a moveal %a2@(74),%a0
bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
IMFS_jnode_types_t type = IMFS_type( entry );
rtems_filesystem_eval_path_clear_token( ctx );
if ( type == IMFS_HARD_LINK && (follow_hard_link || !terminal)) {
4b174: 7802 moveq #2,%d4
if ( access_ok ) {
IMFS_jnode_t *entry = IMFS_search_in_directory( dir, token, tokenlen );
if ( entry != NULL ) {
bool terminal = !rtems_filesystem_eval_path_has_path( ctx );
4b176: 4aac 0004 tstl %a4@(4)
4b17a: 57c0 seq %d0
4b17c: 2210 movel %a0@,%d1
4b17e: 4480 negl %d0
};
void IMFS_eval_path( rtems_filesystem_eval_path_context_t *ctx )
{
rtems_filesystem_eval_path_generic( ctx, NULL, &IMFS_eval_config );
}
4b180: 242c 0010 movel %a4@(16),%d2
static inline void rtems_filesystem_eval_path_clear_token(
rtems_filesystem_eval_path_context_t *ctx
)
{
ctx->tokenlen = 0;
4b184: 42ac 000c clrl %a4@(12)
bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
IMFS_jnode_types_t type = IMFS_type( entry );
rtems_filesystem_eval_path_clear_token( ctx );
if ( type == IMFS_HARD_LINK && (follow_hard_link || !terminal)) {
4b188: b881 cmpl %d1,%d4
4b18a: 6700 00ea beqw 4b276 <IMFS_eval_token+0x194>
entry = entry->info.hard_link.link_node;
}
if ( type == IMFS_SYM_LINK && (follow_sym_link || !terminal)) {
4b18e: 7803 moveq #3,%d4
4b190: b881 cmpl %d1,%d4
4b192: 6700 008e beqw 4b222 <IMFS_eval_token+0x140>
IMFS_jnode_types_t type
)
{
rtems_filesystem_global_location_t **fs_root_ptr = NULL;
if ( type == IMFS_DIRECTORY ) {
4b196: 4a81 tstl %d1
4b198: 6600 0096 bnew 4b230 <IMFS_eval_token+0x14e>
if ( node->info.directory.mt_fs != NULL ) {
4b19c: 2a6a 005a moveal %a2@(90),%a5
4b1a0: 4a8d tstl %a5
4b1a2: 6700 008c beqw 4b230 <IMFS_eval_token+0x14e>
if ( !terminal ) {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;
}
} else {
access_ok = rtems_filesystem_eval_path_check_access(
4b1a6: 4280 clrl %d0
4b1a8: 2043 moveal %d3,%a0
4b1aa: 302a 003c movew %a2@(60),%d0
4b1ae: 2f00 movel %d0,%sp@-
4b1b0: 302a 003a movew %a2@(58),%d0
4b1b4: 2f00 movel %d0,%sp@-
4b1b6: 2f2a 002e movel %a2@(46),%sp@-
4b1ba: 4878 0001 pea 1 <ADD>
4b1be: 2f0c movel %a4,%sp@-
4b1c0: 4e90 jsr %a0@
RTEMS_FS_PERMS_EXEC,
entry->st_mode,
entry->st_uid,
entry->st_gid
);
if ( access_ok ) {
4b1c2: 4fef 0014 lea %sp@(20),%sp
4b1c6: 4a00 tstb %d0
4b1c8: 6700 ff5a beqw 4b124 <IMFS_eval_token+0x42>
rtems_filesystem_eval_path_restart( ctx, fs_root_ptr );
4b1cc: 486d 0024 pea %a5@(36)
4b1d0: 2f0c movel %a4,%sp@-
4b1d2: 4eb9 0004 4540 jsr 44540 <rtems_filesystem_eval_path_restart>
4b1d8: 508f addql #8,%sp
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
4b1da: 7001 moveq #1,%d0
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;
}
}
return status;
}
4b1dc: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
4b1e2: 4e5e unlk %fp
4b1e4: 4e75 rts
};
void IMFS_eval_path( rtems_filesystem_eval_path_context_t *ctx )
{
rtems_filesystem_eval_path_generic( ctx, NULL, &IMFS_eval_config );
}
4b1e6: 2452 moveal %a2@,%a2
} else {
rtems_chain_control *entries = &dir->info.directory.Entries;
rtems_chain_node *current = rtems_chain_first( entries );
rtems_chain_node *tail = rtems_chain_tail( entries );
while ( current != tail ) {
4b1e8: b5c5 cmpal %d5,%a2
4b1ea: 6600 ff6c bnew 4b158 <IMFS_eval_token+0x76>
rtems_filesystem_eval_path_restart( ctx, fs_root_ptr );
}
}
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;
4b1ee: 7002 moveq #2,%d0
}
}
return status;
}
4b1f0: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
4b1f6: 4e5e unlk %fp
4b1f8: 4e75 rts
static inline bool rtems_filesystem_is_parent_directory(
const char *token,
size_t tokenlen
)
{
return tokenlen == 2 && token [0] == '.' && token [1] == '.';
4b1fa: 2044 moveal %d4,%a0
4b1fc: 722e moveq #46,%d1
4b1fe: 1010 moveb %a0@,%d0
4b200: 49c0 extbl %d0
4b202: b280 cmpl %d0,%d1
4b204: 6600 ff3a bnew 4b140 <IMFS_eval_token+0x5e>
4b208: 1028 0001 moveb %a0@(1),%d0
4b20c: 49c0 extbl %d0
4b20e: b280 cmpl %d0,%d1
4b210: 6600 ff2e bnew 4b140 <IMFS_eval_token+0x5e>
{
if ( rtems_filesystem_is_current_directory( token, tokenlen ) ) {
return dir;
} else {
if ( rtems_filesystem_is_parent_directory( token, tokenlen ) ) {
return dir->Parent;
4b214: 246b 0008 moveal %a3@(8),%a2
);
if ( access_ok ) {
IMFS_jnode_t *entry = IMFS_search_in_directory( dir, token, tokenlen );
if ( entry != NULL ) {
4b218: 4a8a tstl %a2
4b21a: 6600 ff54 bnew 4b170 <IMFS_eval_token+0x8e>
rtems_filesystem_eval_path_restart( ctx, fs_root_ptr );
}
}
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;
4b21e: 7002 moveq #2,%d0
4b220: 60ce bras 4b1f0 <IMFS_eval_token+0x10e>
if ( type == IMFS_HARD_LINK && (follow_hard_link || !terminal)) {
entry = entry->info.hard_link.link_node;
}
if ( type == IMFS_SYM_LINK && (follow_sym_link || !terminal)) {
4b222: 0802 0004 btst #4,%d2
4b226: 6600 008a bnew 4b2b2 <IMFS_eval_token+0x1d0>
4b22a: 4a00 tstb %d0
4b22c: 6700 0084 beqw 4b2b2 <IMFS_eval_token+0x1d0>
static inline void IMFS_Set_handlers( rtems_filesystem_location_info_t *loc )
{
IMFS_jnode_t *node = (IMFS_jnode_t *) loc->node_access;
loc->handlers = node->control->handlers;
4b230: 206a 004a moveal %a2@(74),%a0
} else {
rtems_filesystem_global_location_t **fs_root_ptr =
IMFS_is_mount_point( entry, type );
if ( fs_root_ptr == NULL ) {
--dir->reference_count;
4b234: 322b 0032 movew %a3@(50),%d1
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
4b238: 0280 0000 00ff andil #255,%d0
} else {
rtems_filesystem_global_location_t **fs_root_ptr =
IMFS_is_mount_point( entry, type );
if ( fs_root_ptr == NULL ) {
--dir->reference_count;
4b23e: 5381 subql #1,%d1
4b240: 3741 0032 movew %d1,%a3@(50)
++entry->reference_count;
4b244: 322a 0032 movew %a2@(50),%d1
4b248: 5281 addql #1,%d1
4b24a: 3541 0032 movew %d1,%a2@(50)
currentloc->node_access = entry;
4b24e: 294a 0020 movel %a2,%a4@(32)
4b252: 2968 0004 0028 movel %a0@(4),%a4@(40)
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;
}
}
return status;
}
4b258: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
4b25e: 4e5e unlk %fp
4b260: 4e75 rts
static inline bool rtems_filesystem_is_current_directory(
const char *token,
size_t tokenlen
)
{
return tokenlen == 1 && token [0] == '.';
4b262: 2044 moveal %d4,%a0
4b264: 722e moveq #46,%d1
4b266: 1010 moveb %a0@,%d0
4b268: 49c0 extbl %d0
4b26a: b280 cmpl %d0,%d1
4b26c: 6600 fed2 bnew 4b140 <IMFS_eval_token+0x5e>
4b270: 244b moveal %a3,%a2
4b272: 6000 fefc braw 4b170 <IMFS_eval_token+0x8e>
bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
IMFS_jnode_types_t type = IMFS_type( entry );
rtems_filesystem_eval_path_clear_token( ctx );
if ( type == IMFS_HARD_LINK && (follow_hard_link || !terminal)) {
4b276: 44c2 movew %d2,%ccr
4b278: 6a2e bpls 4b2a8 <IMFS_eval_token+0x1c6>
entry = entry->info.hard_link.link_node;
4b27a: 246a 004e moveal %a2@(78),%a2
4b27e: 206a 004a moveal %a2@(74),%a0
} else {
rtems_filesystem_global_location_t **fs_root_ptr =
IMFS_is_mount_point( entry, type );
if ( fs_root_ptr == NULL ) {
--dir->reference_count;
4b282: 322b 0032 movew %a3@(50),%d1
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
4b286: 0280 0000 00ff andil #255,%d0
} else {
rtems_filesystem_global_location_t **fs_root_ptr =
IMFS_is_mount_point( entry, type );
if ( fs_root_ptr == NULL ) {
--dir->reference_count;
4b28c: 5381 subql #1,%d1
4b28e: 3741 0032 movew %d1,%a3@(50)
++entry->reference_count;
4b292: 322a 0032 movew %a2@(50),%d1
4b296: 5281 addql #1,%d1
4b298: 3541 0032 movew %d1,%a2@(50)
4b29c: 2968 0004 0028 movel %a0@(4),%a4@(40)
currentloc->node_access = entry;
4b2a2: 294a 0020 movel %a2,%a4@(32)
4b2a6: 60b0 bras 4b258 <IMFS_eval_token+0x176>
bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
IMFS_jnode_types_t type = IMFS_type( entry );
rtems_filesystem_eval_path_clear_token( ctx );
if ( type == IMFS_HARD_LINK && (follow_hard_link || !terminal)) {
4b2a8: 4a00 tstb %d0
4b2aa: 6684 bnes 4b230 <IMFS_eval_token+0x14e> <== ALWAYS TAKEN
entry = entry->info.hard_link.link_node;
4b2ac: 246a 004e moveal %a2@(78),%a2 <== NOT EXECUTED
4b2b0: 60cc bras 4b27e <IMFS_eval_token+0x19c> <== NOT EXECUTED
}
if ( type == IMFS_SYM_LINK && (follow_sym_link || !terminal)) {
const char *target = entry->info.sym_link.name;
4b2b2: 242a 004e movel %a2@(78),%d2
rtems_filesystem_eval_path_recursive( ctx, target, strlen( target ) );
4b2b6: 2f02 movel %d2,%sp@-
4b2b8: 4eb9 0004 f488 jsr 4f488 <strlen>
4b2be: 2e80 movel %d0,%sp@
4b2c0: 2f02 movel %d2,%sp@-
4b2c2: 2f0c movel %a4,%sp@-
4b2c4: 4eb9 0004 45b4 jsr 445b4 <rtems_filesystem_eval_path_recursive>
if ( type == IMFS_HARD_LINK && (follow_hard_link || !terminal)) {
entry = entry->info.hard_link.link_node;
}
if ( type == IMFS_SYM_LINK && (follow_sym_link || !terminal)) {
4b2ca: 4fef 000c lea %sp@(12),%sp
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
4b2ce: 7001 moveq #1,%d0
4b2d0: 6000 fe54 braw 4b126 <IMFS_eval_token+0x44>
000433c6 <IMFS_fifo_ioctl>:
static int IMFS_fifo_ioctl(
rtems_libio_t *iop,
ioctl_command_t command,
void *buffer
)
{
433c6: 4e56 0000 linkw %fp,#0
433ca: 206e 0008 moveal %fp@(8),%a0
433ce: 202e 000c movel %fp@(12),%d0
433d2: 226e 0010 moveal %fp@(16),%a1
433d6: 2f02 movel %d2,%sp@-
int err;
if (command == FIONBIO) {
433d8: 0c80 8004 667e cmpil #-2147195266,%d0
433de: 6724 beqs 43404 <IMFS_fifo_ioctl+0x3e>
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
return 0;
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
433e0: 2f08 movel %a0,%sp@-
433e2: 2068 0018 moveal %a0@(24),%a0
433e6: 2f09 movel %a1,%sp@-
433e8: 2f00 movel %d0,%sp@-
433ea: 2f28 004e movel %a0@(78),%sp@-
433ee: 4eb9 0004 dfb8 jsr 4dfb8 <pipe_ioctl>
IMFS_FIFO_RETURN(err);
433f4: 4fef 0010 lea %sp@(16),%sp
433f8: 4a80 tstl %d0
433fa: 6d44 blts 43440 <IMFS_fifo_ioctl+0x7a>
}
433fc: 242e fffc movel %fp@(-4),%d2
43400: 4e5e unlk %fp
43402: 4e75 rts
)
{
int err;
if (command == FIONBIO) {
if (buffer == NULL)
43404: 4a89 tstl %a1
43406: 6722 beqs 4342a <IMFS_fifo_ioctl+0x64>
err = -EFAULT;
else {
if (*(int *)buffer)
iop->flags |= LIBIO_FLAGS_NO_DELAY;
43408: 4280 clrl %d0
if (command == FIONBIO) {
if (buffer == NULL)
err = -EFAULT;
else {
if (*(int *)buffer)
4340a: 4a91 tstl %a1@
4340c: 670e beqs 4341c <IMFS_fifo_ioctl+0x56>
iop->flags |= LIBIO_FLAGS_NO_DELAY;
4340e: 7201 moveq #1,%d1
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
43410: 242e fffc movel %fp@(-4),%d2
43414: 4e5e unlk %fp
if (command == FIONBIO) {
if (buffer == NULL)
err = -EFAULT;
else {
if (*(int *)buffer)
iop->flags |= LIBIO_FLAGS_NO_DELAY;
43416: 83a8 000c orl %d1,%a0@(12)
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
4341a: 4e75 rts
err = -EFAULT;
else {
if (*(int *)buffer)
iop->flags |= LIBIO_FLAGS_NO_DELAY;
else
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
4341c: 72fe moveq #-2,%d1
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
4341e: 242e fffc movel %fp@(-4),%d2
43422: 4e5e unlk %fp
err = -EFAULT;
else {
if (*(int *)buffer)
iop->flags |= LIBIO_FLAGS_NO_DELAY;
else
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
43424: c3a8 000c andl %d1,%a0@(12)
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
43428: 4e75 rts
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
4342a: 4eb9 0004 fd8c jsr 4fd8c <__errno>
)
{
int err;
if (command == FIONBIO) {
if (buffer == NULL)
43430: 740e moveq #14,%d2
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
43432: 2040 moveal %d0,%a0
43434: 70ff moveq #-1,%d0
43436: 2082 movel %d2,%a0@
}
43438: 242e fffc movel %fp@(-4),%d2
4343c: 4e5e unlk %fp
4343e: 4e75 rts
43440: 2400 movel %d0,%d2
43442: 4482 negl %d2
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
43444: 4eb9 0004 fd8c jsr 4fd8c <__errno>
4344a: 2040 moveal %d0,%a0
4344c: 70ff moveq #-1,%d0
4344e: 2082 movel %d2,%a0@
43450: 60e6 bras 43438 <IMFS_fifo_ioctl+0x72>
...
00043280 <IMFS_fifo_write>:
static ssize_t IMFS_fifo_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
43280: 4e56 fff8 linkw %fp,#-8
43284: 206e 0008 moveal %fp@(8),%a0
43288: 2f0a movel %a2,%sp@-
4328a: 2f02 movel %d2,%sp@-
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
4328c: 2f08 movel %a0,%sp@-
4328e: 2f2e 0010 movel %fp@(16),%sp@-
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
43292: 2468 0018 moveal %a0@(24),%a2
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
43296: 2f2e 000c movel %fp@(12),%sp@-
4329a: 2f2a 004e movel %a2@(78),%sp@-
4329e: 4eb9 0004 ddc8 jsr 4ddc8 <pipe_write>
if (err > 0) {
432a4: 4fef 0010 lea %sp@(16),%sp
size_t count
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
432a8: 2400 movel %d0,%d2
if (err > 0) {
432aa: 6f28 bles 432d4 <IMFS_fifo_write+0x54>
IMFS_mtime_ctime_update(jnode);
432ac: 42a7 clrl %sp@-
432ae: 486e fff8 pea %fp@(-8)
432b2: 4eb9 0004 4424 jsr 44424 <gettimeofday>
432b8: 202e fff8 movel %fp@(-8),%d0
432bc: 508f addql #8,%sp
432be: 2540 0042 movel %d0,%a2@(66)
432c2: 2540 0046 movel %d0,%a2@(70)
}
IMFS_FIFO_RETURN(err);
}
432c6: 2002 movel %d2,%d0
432c8: 242e fff0 movel %fp@(-16),%d2
432cc: 246e fff4 moveal %fp@(-12),%a2
432d0: 4e5e unlk %fp
432d2: 4e75 rts
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
if (err > 0) {
IMFS_mtime_ctime_update(jnode);
}
IMFS_FIFO_RETURN(err);
432d4: 4a80 tstl %d0
432d6: 67ee beqs 432c6 <IMFS_fifo_write+0x46> <== NEVER TAKEN
432d8: 4eb9 0004 fd8c jsr 4fd8c <__errno>
432de: 4482 negl %d2
432e0: 2040 moveal %d0,%a0
432e2: 2082 movel %d2,%a0@
432e4: 74ff moveq #-1,%d2
}
432e6: 2002 movel %d2,%d0
432e8: 242e fff0 movel %fp@(-16),%d2
432ec: 246e fff4 moveal %fp@(-12),%a2
432f0: 4e5e unlk %fp <== NOT EXECUTED
0004b338 <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
)
{
4b338: 4e56 ffd4 linkw %fp,#-44
/*
* Traverse tree that starts at the mt_fs_root and deallocate memory
* associated memory space
*/
loc = temp_mt_entry->mt_fs_root->location;
4b33c: 206e 0008 moveal %fp@(8),%a0
4b340: 2268 0024 moveal %a0@(36),%a1
4b344: 2049 moveal %a1,%a0
((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next))
void IMFS_fsunmount(
rtems_filesystem_mount_table_entry_t *temp_mt_entry
)
{
4b346: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
/*
* Traverse tree that starts at the mt_fs_root and deallocate memory
* associated memory space
*/
loc = temp_mt_entry->mt_fs_root->location;
4b34a: 49ee ffe8 lea %fp@(-24),%a4
next = jnode->Parent;
loc.node_access = (void *)jnode;
IMFS_Set_handlers( &loc );
if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
result = IMFS_rmnod( NULL, &loc );
4b34e: 243c 0004 2bb0 movel #273328,%d2
if ( result != 0 )
rtems_fatal_error_occurred( 0xdeadbeef );
IMFS_node_destroy( jnode );
4b354: 4bf9 0004 2834 lea 42834 <IMFS_node_destroy>,%a5
/*
* Traverse tree that starts at the mt_fs_root and deallocate memory
* associated memory space
*/
loc = temp_mt_entry->mt_fs_root->location;
4b35a: 2898 movel %a0@+,%a4@
4b35c: 2d58 ffec movel %a0@+,%fp@(-20)
4b360: 2d58 fff0 movel %a0@+,%fp@(-16)
4b364: 2d58 fff4 movel %a0@+,%fp@(-12)
4b368: 2d58 fff8 movel %a0@+,%fp@(-8)
jnode = (IMFS_jnode_t *)loc.node_access;
4b36c: 246e fff0 moveal %fp@(-16),%a2
/*
* Traverse tree that starts at the mt_fs_root and deallocate memory
* associated memory space
*/
loc = temp_mt_entry->mt_fs_root->location;
4b370: 2d50 fffc movel %a0@,%fp@(-4)
4b374: 206a 004a moveal %a2@(74),%a0
4b378: 2010 movel %a0@,%d0
/*
* Set this to null to indicate that it is being unmounted.
*/
temp_mt_entry->mt_fs_root->location.node_access = NULL;
4b37a: 42a9 0008 clrl %a1@(8)
do {
next = jnode->Parent;
4b37e: 266a 0008 moveal %a2@(8),%a3
4b382: 2d68 0004 fff8 movel %a0@(4),%fp@(-8)
loc.node_access = (void *)jnode;
4b388: 2d4a fff0 movel %a2,%fp@(-16)
IMFS_Set_handlers( &loc );
if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
4b38c: 4a80 tstl %d0
4b38e: 662e bnes 4b3be <IMFS_fsunmount+0x86> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4b390: 200a movel %a2,%d0
4b392: 0680 0000 0052 addil #82,%d0
4b398: b0aa 004e cmpl %a2@(78),%d0
4b39c: 6720 beqs 4b3be <IMFS_fsunmount+0x86>
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4b39e: 246a 004e moveal %a2@(78),%a2
if ( IMFS_is_directory( jnode ) ) {
if ( jnode_has_children( jnode ) )
jnode = jnode_get_first_child( jnode );
}
}
} while (jnode != NULL);
4b3a2: 4a8a tstl %a2
4b3a4: 674e beqs 4b3f4 <IMFS_fsunmount+0xbc> <== NEVER TAKEN
4b3a6: 206a 004a moveal %a2@(74),%a0
*/
temp_mt_entry->mt_fs_root->location.node_access = NULL;
do {
next = jnode->Parent;
4b3aa: 266a 0008 moveal %a2@(8),%a3
4b3ae: 2010 movel %a0@,%d0
4b3b0: 2d68 0004 fff8 movel %a0@(4),%fp@(-8)
loc.node_access = (void *)jnode;
4b3b6: 2d4a fff0 movel %a2,%fp@(-16)
IMFS_Set_handlers( &loc );
if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
4b3ba: 4a80 tstl %d0
4b3bc: 67d2 beqs 4b390 <IMFS_fsunmount+0x58>
result = IMFS_rmnod( NULL, &loc );
4b3be: 2f0c movel %a4,%sp@-
4b3c0: 2042 moveal %d2,%a0
4b3c2: 42a7 clrl %sp@-
4b3c4: 4e90 jsr %a0@
if ( result != 0 )
4b3c6: 508f addql #8,%sp
4b3c8: 4a80 tstl %d0
4b3ca: 6632 bnes 4b3fe <IMFS_fsunmount+0xc6> <== NEVER TAKEN
rtems_fatal_error_occurred( 0xdeadbeef );
IMFS_node_destroy( jnode );
4b3cc: 2f0a movel %a2,%sp@-
4b3ce: 4e95 jsr %a5@
jnode = next;
}
if ( jnode != NULL ) {
4b3d0: 588f addql #4,%sp
4b3d2: 4a8b tstl %a3
4b3d4: 671e beqs 4b3f4 <IMFS_fsunmount+0xbc>
4b3d6: 206b 004a moveal %a3@(74),%a0
if ( IMFS_is_directory( jnode ) ) {
4b3da: 244b moveal %a3,%a2
4b3dc: 2010 movel %a0@,%d0
4b3de: 669e bnes 4b37e <IMFS_fsunmount+0x46> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4b3e0: 220b movel %a3,%d1
4b3e2: 0681 0000 0052 addil #82,%d1
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4b3e8: 246b 004e moveal %a3@(78),%a2
if ( jnode_has_children( jnode ) )
4b3ec: b28a cmpl %a2,%d1
4b3ee: 66b2 bnes 4b3a2 <IMFS_fsunmount+0x6a>
4b3f0: 244b moveal %a3,%a2
4b3f2: 608a bras 4b37e <IMFS_fsunmount+0x46>
jnode = jnode_get_first_child( jnode );
}
}
} while (jnode != NULL);
}
4b3f4: 4cee 3c04 ffd4 moveml %fp@(-44),%d2/%a2-%a5
4b3fa: 4e5e unlk %fp
4b3fc: 4e75 rts
IMFS_Set_handlers( &loc );
if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
result = IMFS_rmnod( NULL, &loc );
if ( result != 0 )
rtems_fatal_error_occurred( 0xdeadbeef );
4b3fe: 2f3c dead beef movel #-559038737,%sp@- <== NOT EXECUTED
4b404: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred> <== NOT EXECUTED
...
0004270c <IMFS_initialize_support>:
int IMFS_initialize_support(
rtems_filesystem_mount_table_entry_t *mt_entry,
const rtems_filesystem_operations_table *op_table,
const IMFS_node_control *const node_controls [IMFS_TYPE_COUNT]
)
{
4270c: 4e56 fff4 linkw %fp,#-12
42710: 48d7 1c00 moveml %a2-%a4,%sp@
static int imfs_instance;
int rv = 0;
IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );
42714: 4878 0024 pea 24 <OPER2+0x10>
42718: 4878 0001 pea 1 <ADD>
int IMFS_initialize_support(
rtems_filesystem_mount_table_entry_t *mt_entry,
const rtems_filesystem_operations_table *op_table,
const IMFS_node_control *const node_controls [IMFS_TYPE_COUNT]
)
{
4271c: 266e 0008 moveal %fp@(8),%a3
static int imfs_instance;
int rv = 0;
IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );
42720: 4eb9 0004 2e28 jsr 42e28 <calloc>
if ( fs_info != NULL ) {
42726: 508f addql #8,%sp
)
{
static int imfs_instance;
int rv = 0;
IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );
42728: 2440 moveal %d0,%a2
if ( fs_info != NULL ) {
4272a: 4a80 tstl %d0
4272c: 6700 00c2 beqw 427f0 <IMFS_initialize_support+0xe4>
IMFS_jnode_t *root_node;
fs_info->instance = imfs_instance++;
42730: 2039 0005 f0f4 movel 5f0f4 <imfs_instance.6455>,%d0
42736: 2200 movel %d0,%d1
42738: 5281 addql #1,%d1
memcpy(
4273a: 206e 0010 moveal %fp@(16),%a0
IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );
if ( fs_info != NULL ) {
IMFS_jnode_t *root_node;
fs_info->instance = imfs_instance++;
4273e: 23c1 0005 f0f4 movel %d1,5f0f4 <imfs_instance.6455>
memcpy(
42744: 2558 0008 movel %a0@+,%a2@(8)
42748: 2558 000c movel %a0@+,%a2@(12)
4274c: 2558 0010 movel %a0@+,%a2@(16)
42750: 2558 0014 movel %a0@+,%a2@(20)
42754: 2558 0018 movel %a0@+,%a2@(24)
42758: 2558 001c movel %a0@+,%a2@(28)
4275c: 2550 0020 movel %a0@,%a2@(32)
fs_info->node_controls,
node_controls,
sizeof( fs_info->node_controls )
);
root_node = IMFS_allocate_node(
42760: 42a7 clrl %sp@-
42762: 4878 41ed pea 41ed <D_MAX_EXP+0x39ee>
42766: 42a7 clrl %sp@-
42768: 4879 0005 d40e pea 5d40e <rtems_termios_baud_table+0x10a>
4276e: 2f2a 0008 movel %a2@(8),%sp@-
IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );
if ( fs_info != NULL ) {
IMFS_jnode_t *root_node;
fs_info->instance = imfs_instance++;
42772: 2480 movel %d0,%a2@
fs_info->node_controls,
node_controls,
sizeof( fs_info->node_controls )
);
root_node = IMFS_allocate_node(
42774: 2f0a movel %a2,%sp@-
42776: 4eb9 0004 af8c jsr 4af8c <IMFS_allocate_node>
"",
0,
(S_IFDIR | 0755),
NULL
);
if ( root_node != NULL ) {
4277c: 4fef 0018 lea %sp@(24),%sp
42780: 4a80 tstl %d0
42782: 6700 0084 beqw 42808 <IMFS_initialize_support+0xfc>
static inline void IMFS_Set_handlers( rtems_filesystem_location_info_t *loc )
{
IMFS_jnode_t *node = (IMFS_jnode_t *) loc->node_access;
loc->handlers = node->control->handlers;
42786: 2840 moveal %d0,%a4
mt_entry->fs_info = fs_info;
mt_entry->ops = op_table;
mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
42788: 223c 0005 d646 movel #382534,%d1
4278e: 226c 004a moveal %a4@(74),%a1
mt_entry->mt_fs_root->location.node_access = root_node;
42792: 206b 0024 moveal %a3@(36),%a0
(S_IFDIR | 0755),
NULL
);
if ( root_node != NULL ) {
mt_entry->fs_info = fs_info;
mt_entry->ops = op_table;
42796: 276e 000c 000c movel %fp@(12),%a3@(12)
mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
4279c: 2741 002a movel %d1,%a3@(42)
errno = ENOMEM;
rv = -1;
}
if ( rv == 0 ) {
IMFS_determine_bytes_per_block(
427a0: 2239 0005 e25c movel 5e25c <imfs_rq_memfile_bytes_per_block>,%d1
0,
(S_IFDIR | 0755),
NULL
);
if ( root_node != NULL ) {
mt_entry->fs_info = fs_info;
427a6: 274a 0008 movel %a2,%a3@(8)
427aa: 2169 0004 0010 movel %a1@(4),%a0@(16)
mt_entry->ops = op_table;
mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
mt_entry->mt_fs_root->location.node_access = root_node;
427b0: 2140 0008 movel %d0,%a0@(8)
/*
* check, whether requested bytes per block is valid
*/
for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
if (bit_mask == requested_bytes_per_block) {
427b4: 7010 moveq #16,%d0
427b6: b081 cmpl %d1,%d0
427b8: 6724 beqs 427de <IMFS_initialize_support+0xd2>
is_valid = true;
break;
}
if(bit_mask > requested_bytes_per_block)
427ba: 103c 000f moveb #15,%d0
427be: b081 cmpl %d1,%d0
427c0: 6c16 bges 427d8 <IMFS_initialize_support+0xcc>
427c2: 307c 0005 moveaw #5,%a0
427c6: 103c 0020 moveb #32,%d0
427ca: 5388 subql #1,%a0
/*
* check, whether requested bytes per block is valid
*/
for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
if (bit_mask == requested_bytes_per_block) {
427cc: b081 cmpl %d1,%d0
427ce: 670e beqs 427de <IMFS_initialize_support+0xd2>
is_valid = true;
break;
}
if(bit_mask > requested_bytes_per_block)
427d0: 6e06 bgts 427d8 <IMFS_initialize_support+0xcc> <== NEVER TAKEN
int bit_mask;
/*
* check, whether requested bytes per block is valid
*/
for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
427d2: d080 addl %d0,%d0
427d4: 4a88 tstl %a0
427d6: 66f2 bnes 427ca <IMFS_initialize_support+0xbe> <== ALWAYS TAKEN
if(bit_mask > requested_bytes_per_block)
break;
}
*dest_bytes_per_block = ((is_valid)
? requested_bytes_per_block
: default_bytes_per_block);
427d8: 223c 0000 0080 movel #128,%d1
const IMFS_node_control *const node_controls [IMFS_TYPE_COUNT]
)
{
static int imfs_instance;
int rv = 0;
427de: 4280 clrl %d0
IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK
);
}
return rv;
}
427e0: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4
break;
}
if(bit_mask > requested_bytes_per_block)
break;
}
*dest_bytes_per_block = ((is_valid)
427e6: 23c1 0005 f0f0 movel %d1,5f0f0 <imfs_memfile_bytes_per_block>
IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK
);
}
return rv;
}
427ec: 4e5e unlk %fp
427ee: 4e75 rts
} else {
errno = ENOMEM;
rv = -1;
}
} else {
errno = ENOMEM;
427f0: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
427f6: 2840 moveal %d0,%a4 <== NOT EXECUTED
427f8: 700c moveq #12,%d0 <== NOT EXECUTED
427fa: 2880 movel %d0,%a4@ <== NOT EXECUTED
if(bit_mask > requested_bytes_per_block)
break;
}
*dest_bytes_per_block = ((is_valid)
? requested_bytes_per_block
: default_bytes_per_block);
427fc: 70ff moveq #-1,%d0 <== NOT EXECUTED
IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK
);
}
return rv;
}
427fe: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED
42804: 4e5e unlk %fp <== NOT EXECUTED
42806: 4e75 rts <== NOT EXECUTED
mt_entry->ops = op_table;
mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
mt_entry->mt_fs_root->location.node_access = root_node;
IMFS_Set_handlers( &mt_entry->mt_fs_root->location );
} else {
errno = ENOMEM;
42808: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
4280e: 720c moveq #12,%d1 <== NOT EXECUTED
42810: 2040 moveal %d0,%a0 <== NOT EXECUTED
if(bit_mask > requested_bytes_per_block)
break;
}
*dest_bytes_per_block = ((is_valid)
? requested_bytes_per_block
: default_bytes_per_block);
42812: 70ff moveq #-1,%d0 <== NOT EXECUTED
mt_entry->ops = op_table;
mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
mt_entry->mt_fs_root->location.node_access = root_node;
IMFS_Set_handlers( &mt_entry->mt_fs_root->location );
} else {
errno = ENOMEM;
42814: 2081 movel %d1,%a0@ <== NOT EXECUTED
42816: 60e6 bras 427fe <IMFS_initialize_support+0xf2> <== NOT EXECUTED
000445ac <IMFS_make_generic_node>:
const char *path,
mode_t mode,
const IMFS_node_control *node_control,
void *context
)
{
445ac: 4e56 ff98 linkw %fp,#-104
int rv = 0;
mode &= ~rtems_filesystem_umask;
445b0: 2079 0006 2e88 moveal 62e88 <rtems_current_user_env>,%a0
const char *path,
mode_t mode,
const IMFS_node_control *node_control,
void *context
)
{
445b6: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
int rv = 0;
mode &= ~rtems_filesystem_umask;
445ba: 2428 0008 movel %a0@(8),%d2
445be: 4682 notl %d2
445c0: c4ae 000c andl %fp@(12),%d2
switch (mode & S_IFMT) {
445c4: 2002 movel %d2,%d0
445c6: 0280 0000 f000 andil #61440,%d0
445cc: 0c80 0000 2000 cmpil #8192,%d0
445d2: 6734 beqs 44608 <IMFS_make_generic_node+0x5c>
445d4: 632a blss 44600 <IMFS_make_generic_node+0x54> <== NEVER TAKEN
445d6: 0c80 0000 6000 cmpil #24576,%d0
445dc: 672a beqs 44608 <IMFS_make_generic_node+0x5c>
445de: 0c80 0000 8000 cmpil #32768,%d0
445e4: 6722 beqs 44608 <IMFS_make_generic_node+0x5c> <== NEVER TAKEN
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
} else {
errno = EINVAL;
445e6: 4eb9 0005 30b4 jsr 530b4 <__errno>
rv = -1;
445ec: 74ff moveq #-1,%d2
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
} else {
errno = EINVAL;
445ee: 2040 moveal %d0,%a0
445f0: 7016 moveq #22,%d0
445f2: 2080 movel %d0,%a0@
rv = -1;
}
}
return rv;
}
445f4: 2002 movel %d2,%d0
445f6: 4cee 0c1c ff98 moveml %fp@(-104),%d2-%d4/%a2-%a3
445fc: 4e5e unlk %fp
445fe: 4e75 rts
{
int rv = 0;
mode &= ~rtems_filesystem_umask;
switch (mode & S_IFMT) {
44600: 0c80 0000 1000 cmpil #4096,%d0 <== NOT EXECUTED
44606: 66de bnes 445e6 <IMFS_make_generic_node+0x3a> <== NOT EXECUTED
rv = -1;
break;
}
if ( rv == 0 ) {
if ( node_control->imfs_type == IMFS_GENERIC ) {
44608: 206e 0010 moveal %fp@(16),%a0
4460c: 7007 moveq #7,%d0
4460e: b090 cmpl %a0@,%d0
44610: 66d4 bnes 445e6 <IMFS_make_generic_node+0x3a>
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 =
44612: 4878 0078 pea 78 <DBL_MANT_DIG+0x43>
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
44616: 260e movel %fp,%d3
44618: 0683 ffff ffc8 addil #-56,%d3
if ( node_control->imfs_type == IMFS_GENERIC ) {
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 =
4461e: 2f2e 0008 movel %fp@(8),%sp@-
44622: 2f03 movel %d3,%sp@-
44624: 4eb9 0004 6772 jsr 46772 <rtems_filesystem_eval_path_start>
4462a: 2440 moveal %d0,%a2
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
if ( IMFS_is_imfs_instance( currentloc ) ) {
4462c: 2f00 movel %d0,%sp@-
4462e: 4eb9 0004 4556 jsr 44556 <IMFS_is_imfs_instance>
44634: 4fef 0010 lea %sp@(16),%sp
44638: 4a00 tstb %d0
4463a: 676e beqs 446aa <IMFS_make_generic_node+0xfe>
IMFS_types_union info;
IMFS_jnode_t *new_node;
info.generic.context = context;
new_node = IMFS_create_node_with_control(
4463c: 486e ffb4 pea %fp@(-76)
if ( IMFS_is_imfs_instance( currentloc ) ) {
IMFS_types_union info;
IMFS_jnode_t *new_node;
info.generic.context = context;
44640: 2d6e 0014 ffb4 movel %fp@(20),%fp@(-76)
new_node = IMFS_create_node_with_control(
44646: 2f02 movel %d2,%sp@-
44648: 2f2e ffd4 movel %fp@(-44),%sp@-
4464c: 2f2e ffd0 movel %fp@(-48),%sp@-
44650: 2f2e 0010 movel %fp@(16),%sp@-
44654: 2f0a movel %a2,%sp@-
44656: 4eb9 0004 fe1a jsr 4fe1a <IMFS_create_node_with_control>
rtems_filesystem_eval_path_get_tokenlen( &ctx ),
mode,
&info
);
if ( new_node != NULL ) {
4465c: 4fef 0018 lea %sp@(24),%sp
44660: 4a80 tstl %d0
44662: 6762 beqs 446c6 <IMFS_make_generic_node+0x11a>
IMFS_jnode_t *parent = currentloc->node_access;
44664: 246a 0008 moveal %a2@(8),%a2
IMFS_update_ctime( parent );
44668: 280e movel %fp,%d4
4466a: 0684 ffff ffac addil #-84,%d4
44670: 47f9 0004 5084 lea 45084 <gettimeofday>,%a3
44676: 4282 clrl %d2
44678: 42a7 clrl %sp@-
4467a: 2f04 movel %d4,%sp@-
4467c: 4e93 jsr %a3@
4467e: 256e ffac 0046 movel %fp@(-84),%a2@(70)
IMFS_update_mtime( parent );
44684: 42a7 clrl %sp@-
44686: 2f04 movel %d4,%sp@-
44688: 4e93 jsr %a3@
4468a: 256e ffac 0042 movel %fp@(-84),%a2@(66)
44690: 4fef 0010 lea %sp@(16),%sp
} else {
rtems_filesystem_eval_path_error( &ctx, ENOTSUP );
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
44694: 2f03 movel %d3,%sp@-
44696: 4eb9 0004 68c6 jsr 468c6 <rtems_filesystem_eval_path_cleanup>
4469c: 588f addql #4,%sp
rv = -1;
}
}
return rv;
}
4469e: 2002 movel %d2,%d0
446a0: 4cee 0c1c ff98 moveml %fp@(-104),%d2-%d4/%a2-%a3
446a6: 4e5e unlk %fp
446a8: 4e75 rts
IMFS_update_mtime( parent );
} else {
rv = -1;
}
} else {
rtems_filesystem_eval_path_error( &ctx, ENOTSUP );
446aa: 4878 0086 pea 86 <DBL_MANT_DIG+0x51>
rv = -1;
446ae: 74ff moveq #-1,%d2
IMFS_update_mtime( parent );
} else {
rv = -1;
}
} else {
rtems_filesystem_eval_path_error( &ctx, ENOTSUP );
446b0: 2f03 movel %d3,%sp@-
446b2: 4eb9 0004 641a jsr 4641a <rtems_filesystem_eval_path_error>
446b8: 508f addql #8,%sp
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
446ba: 2f03 movel %d3,%sp@-
446bc: 4eb9 0004 68c6 jsr 468c6 <rtems_filesystem_eval_path_cleanup>
446c2: 588f addql #4,%sp
446c4: 60d8 bras 4469e <IMFS_make_generic_node+0xf2>
446c6: 2f03 movel %d3,%sp@-
IMFS_jnode_t *parent = currentloc->node_access;
IMFS_update_ctime( parent );
IMFS_update_mtime( parent );
} else {
rv = -1;
446c8: 74ff moveq #-1,%d2
} else {
rtems_filesystem_eval_path_error( &ctx, ENOTSUP );
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
446ca: 4eb9 0004 68c6 jsr 468c6 <rtems_filesystem_eval_path_cleanup>
446d0: 588f addql #4,%sp
446d2: 60ca bras 4469e <IMFS_make_generic_node+0xf2>
0004d18e <IMFS_memfile_addblock>:
*/
MEMFILE_STATIC int IMFS_memfile_addblock(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4d18e: 4e56 0000 linkw %fp,#0
4d192: 2f0a movel %a2,%sp@-
4d194: 2f02 movel %d2,%sp@-
IMFS_assert( IMFS_type( the_jnode ) == IMFS_MEMORY_FILE );
/*
* Obtain the pointer for the specified block number
*/
block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 );
4d196: 4878 0001 pea 1 <ADD>
if ( *block_entry_ptr )
return 0;
4d19a: 4282 clrl %d2
IMFS_assert( IMFS_type( the_jnode ) == IMFS_MEMORY_FILE );
/*
* Obtain the pointer for the specified block number
*/
block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 );
4d19c: 2f2e 000c movel %fp@(12),%sp@-
4d1a0: 2f2e 0008 movel %fp@(8),%sp@-
4d1a4: 4eb9 0004 cd58 jsr 4cd58 <IMFS_memfile_get_block_pointer>
if ( *block_entry_ptr )
4d1aa: 4fef 000c lea %sp@(12),%sp
IMFS_assert( IMFS_type( the_jnode ) == IMFS_MEMORY_FILE );
/*
* Obtain the pointer for the specified block number
*/
block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 );
4d1ae: 2440 moveal %d0,%a2
if ( *block_entry_ptr )
4d1b0: 4a92 tstl %a2@
4d1b2: 670e beqs 4d1c2 <IMFS_memfile_addblock+0x34>
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
}
4d1b4: 2002 movel %d2,%d0
4d1b6: 242e fff8 movel %fp@(-8),%d2
4d1ba: 246e fffc moveal %fp@(-4),%a2
4d1be: 4e5e unlk %fp
4d1c0: 4e75 rts
return 0;
/*
* There is no memory for this block number so allocate it.
*/
memory = memfile_alloc_block();
4d1c2: 4eb9 0004 cd34 jsr 4cd34 <memfile_alloc_block>
if ( !memory )
4d1c8: 4a80 tstl %d0
4d1ca: 6710 beqs 4d1dc <IMFS_memfile_addblock+0x4e> <== NEVER TAKEN
return 1;
*block_entry_ptr = memory;
4d1cc: 2480 movel %d0,%a2@
return 0;
}
4d1ce: 2002 movel %d2,%d0
4d1d0: 242e fff8 movel %fp@(-8),%d2
4d1d4: 246e fffc moveal %fp@(-4),%a2
4d1d8: 4e5e unlk %fp
4d1da: 4e75 rts
/*
* There is no memory for this block number so allocate it.
*/
memory = memfile_alloc_block();
if ( !memory )
return 1;
4d1dc: 7401 moveq #1,%d2 <== NOT EXECUTED
*block_entry_ptr = memory;
return 0;
}
4d1de: 2002 movel %d2,%d0 <== NOT EXECUTED
4d1e0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4d1e4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4d1e8: 4e5e unlk %fp <== NOT EXECUTED
0004d390 <IMFS_memfile_extend>:
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
bool zero_fill,
off_t new_length
)
{
4d390: 4e56 ffd0 linkw %fp,#-48
4d394: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
IMFS_assert( IMFS_type( the_jnode ) == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4d398: 2679 0005 f0f0 moveal 5f0f0 <imfs_memfile_bytes_per_block>,%a3
4d39e: 260b movel %a3,%d3
4d3a0: e48b lsrl #2,%d3
4d3a2: 2403 movel %d3,%d2
4d3a4: 5282 addql #1,%d2
4d3a6: 4c03 2800 mulsl %d3,%d2
4d3aa: 200b movel %a3,%d0
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
bool zero_fill,
off_t new_length
)
{
4d3ac: 246e 0008 moveal %fp@(8),%a2
IMFS_assert( IMFS_type( the_jnode ) == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4d3b0: 5282 addql #1,%d2
4d3b2: 4c03 2800 mulsl %d3,%d2
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
bool zero_fill,
off_t new_length
)
{
4d3b6: 1a2e 000f moveb %fp@(15),%d5
IMFS_assert( IMFS_type( the_jnode ) == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4d3ba: 5382 subql #1,%d2
4d3bc: 4c00 2800 mulsl %d0,%d2
4d3c0: 4280 clrl %d0
4d3c2: 2202 movel %d2,%d1
4d3c4: 242e 0010 movel %fp@(16),%d2
4d3c8: 262e 0014 movel %fp@(20),%d3
4d3cc: 9681 subl %d1,%d3
4d3ce: 9580 subxl %d0,%d2
4d3d0: 6c00 012e bgew 4d500 <IMFS_memfile_extend+0x170>
rtems_set_errno_and_return_minus_one( EFBIG );
/*
* Verify new file size is actually larger than current size
*/
if ( new_length <= the_jnode->info.file.size )
4d3d4: 242a 004e movel %a2@(78),%d2
4d3d8: 262a 0052 movel %a2@(82),%d3
4d3dc: 202e 0010 movel %fp@(16),%d0
4d3e0: 222e 0014 movel %fp@(20),%d1
4d3e4: 9283 subl %d3,%d1
4d3e6: 9182 subxl %d2,%d0
4d3e8: 6f00 00da blew 4d4c4 <IMFS_memfile_extend+0x134>
return 0;
/*
* Calculate the number of range of blocks to allocate
*/
new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d3ec: 49f9 0005 a79c lea 5a79c <__divdi3>,%a4
4d3f2: 2e0b movel %a3,%d7
4d3f4: 5bc6 smi %d6
4d3f6: 49c6 extbl %d6
4d3f8: 2f07 movel %d7,%sp@-
4d3fa: 2f06 movel %d6,%sp@-
4d3fc: 2f2e 0014 movel %fp@(20),%sp@-
4d400: 2f2e 0010 movel %fp@(16),%sp@-
4d404: 4e94 jsr %a4@
4d406: 4fef 0010 lea %sp@(16),%sp
4d40a: 2801 movel %d1,%d4
old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d40c: 2f07 movel %d7,%sp@-
4d40e: 2f06 movel %d6,%sp@-
4d410: 2f03 movel %d3,%sp@-
4d412: 2f02 movel %d2,%sp@-
offset = the_jnode->info.file.size - old_blocks * IMFS_MEMFILE_BYTES_PER_BLOCK;
4d414: 2403 movel %d3,%d2
/*
* Calculate the number of range of blocks to allocate
*/
new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK;
old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d416: 4e94 jsr %a4@
4d418: 4fef 0010 lea %sp@(16),%sp
offset = the_jnode->info.file.size - old_blocks * IMFS_MEMFILE_BYTES_PER_BLOCK;
4d41c: 200b movel %a3,%d0
4d41e: 4c01 0800 mulsl %d1,%d0
/*
* Calculate the number of range of blocks to allocate
*/
new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK;
old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d422: 2c01 movel %d1,%d6
offset = the_jnode->info.file.size - old_blocks * IMFS_MEMFILE_BYTES_PER_BLOCK;
4d424: 9480 subl %d0,%d2
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
4d426: b284 cmpl %d4,%d1
4d428: 622c bhis 4d456 <IMFS_memfile_extend+0xc6> <== NEVER TAKEN
4d42a: 2e01 movel %d1,%d7
4d42c: 47f9 0004 d18e lea 4d18e <IMFS_memfile_addblock>,%a3
if ( !IMFS_memfile_addblock( the_jnode, block ) ) {
if ( zero_fill ) {
size_t count = IMFS_MEMFILE_BYTES_PER_BLOCK - offset;
block_p *block_ptr =
4d432: 4bf9 0004 cd58 lea 4cd58 <IMFS_memfile_get_block_pointer>,%a5
IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
memset( &(*block_ptr) [offset], 0, count);
4d438: 49f9 0004 e9d4 lea 4e9d4 <memset>,%a4
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
if ( !IMFS_memfile_addblock( the_jnode, block ) ) {
4d43e: 2f07 movel %d7,%sp@-
4d440: 2f0a movel %a2,%sp@-
4d442: 4e93 jsr %a3@
4d444: 508f addql #8,%sp
4d446: 4a80 tstl %d0
4d448: 6600 0086 bnew 4d4d0 <IMFS_memfile_extend+0x140>
if ( zero_fill ) {
4d44c: 4a05 tstb %d5
4d44e: 6648 bnes 4d498 <IMFS_memfile_extend+0x108>
offset = the_jnode->info.file.size - old_blocks * IMFS_MEMFILE_BYTES_PER_BLOCK;
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
4d450: 5287 addql #1,%d7
4d452: be84 cmpl %d4,%d7
4d454: 63e8 blss 4d43e <IMFS_memfile_extend+0xae>
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
IMFS_update_ctime(the_jnode);
4d456: 42a7 clrl %sp@-
4d458: 240e movel %fp,%d2
4d45a: 5182 subql #8,%d2
4d45c: 47f9 0004 315c lea 4315c <gettimeofday>,%a3
}
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
4d462: 202e 0010 movel %fp@(16),%d0
4d466: 222e 0014 movel %fp@(20),%d1
4d46a: 2540 004e movel %d0,%a2@(78)
4d46e: 2541 0052 movel %d1,%a2@(82)
IMFS_update_ctime(the_jnode);
4d472: 2f02 movel %d2,%sp@-
4d474: 4e93 jsr %a3@
4d476: 256e fff8 0046 movel %fp@(-8),%a2@(70)
IMFS_update_mtime(the_jnode);
4d47c: 42a7 clrl %sp@-
4d47e: 2f02 movel %d2,%sp@-
4d480: 4e93 jsr %a3@
4d482: 256e fff8 0042 movel %fp@(-8),%a2@(66)
return 0;
4d488: 4fef 0010 lea %sp@(16),%sp
4d48c: 4280 clrl %d0
}
4d48e: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
4d494: 4e5e unlk %fp
4d496: 4e75 rts
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
if ( !IMFS_memfile_addblock( the_jnode, block ) ) {
if ( zero_fill ) {
size_t count = IMFS_MEMFILE_BYTES_PER_BLOCK - offset;
block_p *block_ptr =
4d498: 42a7 clrl %sp@-
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
if ( !IMFS_memfile_addblock( the_jnode, block ) ) {
if ( zero_fill ) {
size_t count = IMFS_MEMFILE_BYTES_PER_BLOCK - offset;
4d49a: 2639 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d3
4d4a0: 9682 subl %d2,%d3
block_p *block_ptr =
4d4a2: 2f07 movel %d7,%sp@-
offset = the_jnode->info.file.size - old_blocks * IMFS_MEMFILE_BYTES_PER_BLOCK;
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
4d4a4: 5287 addql #1,%d7
if ( !IMFS_memfile_addblock( the_jnode, block ) ) {
if ( zero_fill ) {
size_t count = IMFS_MEMFILE_BYTES_PER_BLOCK - offset;
block_p *block_ptr =
4d4a6: 2f0a movel %a2,%sp@-
4d4a8: 4e95 jsr %a5@
IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
memset( &(*block_ptr) [offset], 0, count);
4d4aa: 2040 moveal %d0,%a0
4d4ac: 2f03 movel %d3,%sp@-
4d4ae: 42a7 clrl %sp@-
4d4b0: d490 addl %a0@,%d2
4d4b2: 2f02 movel %d2,%sp@-
offset = 0;
4d4b4: 4282 clrl %d2
if ( zero_fill ) {
size_t count = IMFS_MEMFILE_BYTES_PER_BLOCK - offset;
block_p *block_ptr =
IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
memset( &(*block_ptr) [offset], 0, count);
4d4b6: 4e94 jsr %a4@
4d4b8: 4fef 0018 lea %sp@(24),%sp
offset = the_jnode->info.file.size - old_blocks * IMFS_MEMFILE_BYTES_PER_BLOCK;
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
4d4bc: be84 cmpl %d4,%d7
4d4be: 6300 ff7e blsw 4d43e <IMFS_memfile_extend+0xae>
4d4c2: 6092 bras 4d456 <IMFS_memfile_extend+0xc6>
/*
* Verify new file size is actually larger than current size
*/
if ( new_length <= the_jnode->info.file.size )
return 0;
4d4c4: 4280 clrl %d0 <== NOT EXECUTED
the_jnode->info.file.size = new_length;
IMFS_update_ctime(the_jnode);
IMFS_update_mtime(the_jnode);
return 0;
}
4d4c6: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d4cc: 4e5e unlk %fp <== NOT EXECUTED
4d4ce: 4e75 rts <== NOT EXECUTED
4d4d0: 47f9 0004 d368 lea 4d368 <IMFS_memfile_remove_block>,%a3 <== NOT EXECUTED
memset( &(*block_ptr) [offset], 0, count);
offset = 0;
}
} else {
for ( ; block>=old_blocks ; block-- ) {
4d4d6: bc87 cmpl %d7,%d6 <== NOT EXECUTED
4d4d8: 620e bhis 4d4e8 <IMFS_memfile_extend+0x158> <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4d4da: 2f07 movel %d7,%sp@- <== NOT EXECUTED
memset( &(*block_ptr) [offset], 0, count);
offset = 0;
}
} else {
for ( ; block>=old_blocks ; block-- ) {
4d4dc: 5387 subql #1,%d7 <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4d4de: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d4e0: 4e93 jsr %a3@ <== NOT EXECUTED
memset( &(*block_ptr) [offset], 0, count);
offset = 0;
}
} else {
for ( ; block>=old_blocks ; block-- ) {
4d4e2: 508f addql #8,%sp <== NOT EXECUTED
4d4e4: be86 cmpl %d6,%d7 <== NOT EXECUTED
4d4e6: 64f2 bccs 4d4da <IMFS_memfile_extend+0x14a> <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
}
rtems_set_errno_and_return_minus_one( ENOSPC );
4d4e8: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
4d4ee: 721c moveq #28,%d1 <== NOT EXECUTED
4d4f0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d4f2: 70ff moveq #-1,%d0 <== NOT EXECUTED
the_jnode->info.file.size = new_length;
IMFS_update_ctime(the_jnode);
IMFS_update_mtime(the_jnode);
return 0;
}
4d4f4: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
}
} else {
for ( ; block>=old_blocks ; block-- ) {
IMFS_memfile_remove_block( the_jnode, block );
}
rtems_set_errno_and_return_minus_one( ENOSPC );
4d4fa: 2081 movel %d1,%a0@ <== NOT EXECUTED
the_jnode->info.file.size = new_length;
IMFS_update_ctime(the_jnode);
IMFS_update_mtime(the_jnode);
return 0;
}
4d4fc: 4e5e unlk %fp <== NOT EXECUTED
4d4fe: 4e75 rts <== NOT EXECUTED
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
rtems_set_errno_and_return_minus_one( EFBIG );
4d500: 4eb9 0004 e144 jsr 4e144 <__errno>
4d506: 741b moveq #27,%d2
4d508: 2040 moveal %d0,%a0
4d50a: 70ff moveq #-1,%d0
4d50c: 2082 movel %d2,%a0@
the_jnode->info.file.size = new_length;
IMFS_update_ctime(the_jnode);
IMFS_update_mtime(the_jnode);
return 0;
}
4d50e: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
4d514: 4e5e unlk %fp <== NOT EXECUTED
0004cd58 <IMFS_memfile_get_block_pointer>:
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4cd58: 4e56 fff0 linkw %fp,#-16
my_block = block;
/*
* Is the block number in the simple indirect portion?
*/
if ( my_block <= LAST_INDIRECT ) {
4cd5c: 2239 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d1
4cd62: e489 lsrl #2,%d1
4cd64: 2001 movel %d1,%d0
4cd66: 5380 subql #1,%d0
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4cd68: 48d7 041c moveml %d2-%d4/%a2,%sp@
4cd6c: 246e 0008 moveal %fp@(8),%a2
4cd70: 242e 000c movel %fp@(12),%d2
my_block = block;
/*
* Is the block number in the simple indirect portion?
*/
if ( my_block <= LAST_INDIRECT ) {
4cd74: b082 cmpl %d2,%d0
4cd76: 6522 bcss 4cd9a <IMFS_memfile_get_block_pointer+0x42>
p = info->indirect;
4cd78: 206a 0056 moveal %a2@(86),%a0
if ( malloc_it ) {
4cd7c: 4aae 0010 tstl %fp@(16)
4cd80: 6700 00a8 beqw 4ce2a <IMFS_memfile_get_block_pointer+0xd2>
if ( !p ) {
4cd84: 4a88 tstl %a0
4cd86: 6700 010a beqw 4ce92 <IMFS_memfile_get_block_pointer+0x13a>
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4cd8a: 41f0 2c00 lea %a0@(00000000,%d2:l:4),%a0
4cd8e: 2008 movel %a0,%d0
/*
* This means the requested block number is out of range.
*/
return 0;
}
4cd90: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
4cd96: 4e5e unlk %fp
4cd98: 4e75 rts
/*
* Is the block number in the doubly indirect portion?
*/
if ( my_block <= LAST_DOUBLY_INDIRECT ) {
4cd9a: 2001 movel %d1,%d0
4cd9c: 5280 addql #1,%d0
4cd9e: 4c01 0800 mulsl %d1,%d0
4cda2: 2040 moveal %d0,%a0
4cda4: 5388 subql #1,%a0
4cda6: b1c2 cmpal %d2,%a0
4cda8: 6450 bccs 4cdfa <IMFS_memfile_get_block_pointer+0xa2>
}
/*
* Is the block number in the triply indirect portion?
*/
if ( my_block <= LAST_TRIPLY_INDIRECT ) {
4cdaa: 2600 movel %d0,%d3
4cdac: 5283 addql #1,%d3
4cdae: 4c01 3800 mulsl %d1,%d3
4cdb2: 5383 subql #1,%d3
4cdb4: b682 cmpl %d2,%d3
4cdb6: 6578 bcss 4ce30 <IMFS_memfile_get_block_pointer+0xd8><== NEVER TAKEN
my_block -= FIRST_TRIPLY_INDIRECT;
4cdb8: 9480 subl %d0,%d2
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
4cdba: 4c41 2004 remul %d1,%d4,%d2
4cdbe: 4c41 2002 remul %d1,%d2,%d2
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;
doubly %= IMFS_MEMFILE_BLOCK_SLOTS;
p = info->triply_indirect;
4cdc2: 206a 005e moveal %a2@(94),%a0
if ( my_block <= LAST_TRIPLY_INDIRECT ) {
my_block -= FIRST_TRIPLY_INDIRECT;
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;
4cdc6: 4c41 2003 remul %d1,%d3,%d2
4cdca: 4c41 2002 remul %d1,%d2,%d2
doubly %= IMFS_MEMFILE_BLOCK_SLOTS;
p = info->triply_indirect;
if ( malloc_it ) {
4cdce: 4aae 0010 tstl %fp@(16)
4cdd2: 6600 008c bnew 4ce60 <IMFS_memfile_get_block_pointer+0x108>
p1[ doubly ] = (block_p) p2;
}
return (block_p *)&p2[ singly ];
}
if ( !p )
4cdd6: 4a88 tstl %a0
4cdd8: 6756 beqs 4ce30 <IMFS_memfile_get_block_pointer+0xd8><== NEVER TAKEN
return 0;
p1 = (block_p *) p[ triply ];
4cdda: 2070 2c00 moveal %a0@(00000000,%d2:l:4),%a0
if ( !p1 )
4cdde: 4a88 tstl %a0
4cde0: 674e beqs 4ce30 <IMFS_memfile_get_block_pointer+0xd8><== NEVER TAKEN
return 0;
p2 = (block_p *)p1[ doubly ];
4cde2: 2070 3c00 moveal %a0@(00000000,%d3:l:4),%a0
if ( !p2 )
4cde6: 4a88 tstl %a0
4cde8: 6746 beqs 4ce30 <IMFS_memfile_get_block_pointer+0xd8><== NEVER TAKEN
return 0;
return (block_p *)&p2[ singly ];
4cdea: 41f0 4c00 lea %a0@(00000000,%d4:l:4),%a0
4cdee: 2008 movel %a0,%d0
/*
* This means the requested block number is out of range.
*/
return 0;
}
4cdf0: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
4cdf6: 4e5e unlk %fp
4cdf8: 4e75 rts
/*
* Is the block number in the doubly indirect portion?
*/
if ( my_block <= LAST_DOUBLY_INDIRECT ) {
my_block -= FIRST_DOUBLY_INDIRECT;
4cdfa: 9481 subl %d1,%d2
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
4cdfc: 206a 005a moveal %a2@(90),%a0
*/
if ( my_block <= LAST_DOUBLY_INDIRECT ) {
my_block -= FIRST_DOUBLY_INDIRECT;
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
4ce00: 4c41 2003 remul %d1,%d3,%d2
4ce04: 4c41 2002 remul %d1,%d2,%d2
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
if ( malloc_it ) {
4ce08: 4aae 0010 tstl %fp@(16)
4ce0c: 662e bnes 4ce3c <IMFS_memfile_get_block_pointer+0xe4>
}
return (block_p *)&p1[ singly ];
}
if ( !p )
4ce0e: 4a88 tstl %a0
4ce10: 671e beqs 4ce30 <IMFS_memfile_get_block_pointer+0xd8><== NEVER TAKEN
return 0;
p = (block_p *)p[ doubly ];
4ce12: 2070 2c00 moveal %a0@(00000000,%d2:l:4),%a0
if ( !p )
4ce16: 4a88 tstl %a0
4ce18: 6716 beqs 4ce30 <IMFS_memfile_get_block_pointer+0xd8><== NEVER TAKEN
return 0;
return (block_p *)&p[ singly ];
4ce1a: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0
4ce1e: 2008 movel %a0,%d0
/*
* This means the requested block number is out of range.
*/
return 0;
}
4ce20: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
4ce26: 4e5e unlk %fp
4ce28: 4e75 rts
info->indirect = p;
}
return &info->indirect[ my_block ];
}
if ( !p )
4ce2a: 4a88 tstl %a0
4ce2c: 6600 ff5c bnew 4cd8a <IMFS_memfile_get_block_pointer+0x32>
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
if ( !p )
return 0;
4ce30: 4280 clrl %d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4ce32: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
4ce38: 4e5e unlk %fp <== NOT EXECUTED
4ce3a: 4e75 rts <== NOT EXECUTED
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
if ( malloc_it ) {
if ( !p ) {
4ce3c: 4a88 tstl %a0
4ce3e: 676c beqs 4ceac <IMFS_memfile_get_block_pointer+0x154>
if ( !p )
return 0;
info->doubly_indirect = p;
}
p1 = (block_p *)p[ doubly ];
4ce40: 45f0 2c00 lea %a0@(00000000,%d2:l:4),%a2
4ce44: 2052 moveal %a2@,%a0
if ( !p1 ) {
4ce46: 4a88 tstl %a0
4ce48: 66d0 bnes 4ce1a <IMFS_memfile_get_block_pointer+0xc2>
p1 = memfile_alloc_block();
4ce4a: 4eb9 0004 cd34 jsr 4cd34 <memfile_alloc_block>
4ce50: 2040 moveal %d0,%a0
if ( !p1 )
4ce52: 4a80 tstl %d0
4ce54: 67da beqs 4ce30 <IMFS_memfile_get_block_pointer+0xd8><== NEVER TAKEN
return 0;
p[ doubly ] = (block_p) p1;
4ce56: 2480 movel %d0,%a2@
p = (block_p *)p[ doubly ];
if ( !p )
return 0;
return (block_p *)&p[ singly ];
4ce58: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0
4ce5c: 2008 movel %a0,%d0
4ce5e: 60c0 bras 4ce20 <IMFS_memfile_get_block_pointer+0xc8>
doubly %= IMFS_MEMFILE_BLOCK_SLOTS;
p = info->triply_indirect;
if ( malloc_it ) {
if ( !p ) {
4ce60: 4a88 tstl %a0
4ce62: 676a beqs 4cece <IMFS_memfile_get_block_pointer+0x176>
if ( !p )
return 0;
info->triply_indirect = p;
}
p1 = (block_p *) p[ triply ];
4ce64: 45f0 2c00 lea %a0@(00000000,%d2:l:4),%a2
4ce68: 2052 moveal %a2@,%a0
if ( !p1 ) {
4ce6a: 4a88 tstl %a0
4ce6c: 677c beqs 4ceea <IMFS_memfile_get_block_pointer+0x192>
if ( !p1 )
return 0;
p[ triply ] = (block_p) p1;
}
p2 = (block_p *)p1[ doubly ];
4ce6e: 45f0 3c00 lea %a0@(00000000,%d3:l:4),%a2
4ce72: 2052 moveal %a2@,%a0
if ( !p2 ) {
4ce74: 4a88 tstl %a0
4ce76: 6600 ff72 bnew 4cdea <IMFS_memfile_get_block_pointer+0x92>
p2 = memfile_alloc_block();
4ce7a: 4eb9 0004 cd34 jsr 4cd34 <memfile_alloc_block>
4ce80: 2040 moveal %d0,%a0
if ( !p2 )
4ce82: 4a80 tstl %d0
4ce84: 67aa beqs 4ce30 <IMFS_memfile_get_block_pointer+0xd8><== NEVER TAKEN
return 0;
p1[ doubly ] = (block_p) p2;
4ce86: 2480 movel %d0,%a2@
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4ce88: 41f0 4c00 lea %a0@(00000000,%d4:l:4),%a0
4ce8c: 2008 movel %a0,%d0
4ce8e: 6000 ff60 braw 4cdf0 <IMFS_memfile_get_block_pointer+0x98>
p = info->indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4ce92: 4eb9 0004 cd34 jsr 4cd34 <memfile_alloc_block>
4ce98: 2040 moveal %d0,%a0
if ( !p )
4ce9a: 4a80 tstl %d0
4ce9c: 6792 beqs 4ce30 <IMFS_memfile_get_block_pointer+0xd8><== NEVER TAKEN
return 0;
info->indirect = p;
4ce9e: 2540 0056 movel %d0,%a2@(86)
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4cea2: 41f0 2c00 lea %a0@(00000000,%d2:l:4),%a0
4cea6: 2008 movel %a0,%d0
4cea8: 6000 fee6 braw 4cd90 <IMFS_memfile_get_block_pointer+0x38>
p = info->doubly_indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4ceac: 4eb9 0004 cd34 jsr 4cd34 <memfile_alloc_block>
4ceb2: 2040 moveal %d0,%a0
if ( !p )
4ceb4: 4a80 tstl %d0
4ceb6: 6700 ff78 beqw 4ce30 <IMFS_memfile_get_block_pointer+0xd8>
return 0;
info->doubly_indirect = p;
4ceba: 2540 005a movel %d0,%a2@(90)
}
p1 = (block_p *)p[ doubly ];
4cebe: 45f0 2c00 lea %a0@(00000000,%d2:l:4),%a2
4cec2: 2052 moveal %a2@,%a0
if ( !p1 ) {
4cec4: 4a88 tstl %a0
4cec6: 6600 ff52 bnew 4ce1a <IMFS_memfile_get_block_pointer+0xc2>
4ceca: 6000 ff7e braw 4ce4a <IMFS_memfile_get_block_pointer+0xf2>
p = info->triply_indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4cece: 4eb9 0004 cd34 jsr 4cd34 <memfile_alloc_block>
4ced4: 2040 moveal %d0,%a0
if ( !p )
4ced6: 4a80 tstl %d0
4ced8: 6700 ff56 beqw 4ce30 <IMFS_memfile_get_block_pointer+0xd8>
return 0;
info->triply_indirect = p;
4cedc: 2540 005e movel %d0,%a2@(94)
}
p1 = (block_p *) p[ triply ];
4cee0: 45f0 2c00 lea %a0@(00000000,%d2:l:4),%a2
4cee4: 2052 moveal %a2@,%a0
if ( !p1 ) {
4cee6: 4a88 tstl %a0
4cee8: 6684 bnes 4ce6e <IMFS_memfile_get_block_pointer+0x116><== NEVER TAKEN
p1 = memfile_alloc_block();
4ceea: 4eb9 0004 cd34 jsr 4cd34 <memfile_alloc_block>
4cef0: 2040 moveal %d0,%a0
if ( !p1 )
4cef2: 4a80 tstl %d0
4cef4: 6700 ff3a beqw 4ce30 <IMFS_memfile_get_block_pointer+0xd8>
return 0;
p[ triply ] = (block_p) p1;
4cef8: 2480 movel %d0,%a2@
}
p2 = (block_p *)p1[ doubly ];
4cefa: 45f0 3c00 lea %a0@(00000000,%d3:l:4),%a2
4cefe: 2052 moveal %a2@,%a0
if ( !p2 ) {
4cf00: 4a88 tstl %a0
4cf02: 6600 fee6 bnew 4cdea <IMFS_memfile_get_block_pointer+0x92>
4cf06: 6000 ff72 braw 4ce7a <IMFS_memfile_get_block_pointer+0x122>
0004cf0a <IMFS_memfile_read>:
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {
4cf0a: 7005 moveq #5,%d0
IMFS_jnode_t *the_jnode,
off_t start,
unsigned char *destination,
unsigned int length
)
{
4cf0c: 4e56 ffd0 linkw %fp,#-48
4cf10: 226e 0018 moveal %fp@(24),%a1
4cf14: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4cf18: 246e 0008 moveal %fp@(8),%a2
rtems_chain_extract_unprotected( &node->Node );
}
static inline IMFS_jnode_types_t IMFS_type( const IMFS_jnode_t *node )
{
return node->control->imfs_type;
4cf1c: 206a 004a moveal %a2@(74),%a0
4cf20: 242e 000c movel %fp@(12),%d2
4cf24: 262e 0010 movel %fp@(16),%d3
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {
4cf28: b090 cmpl %a0@,%d0
4cf2a: 6700 0180 beqw 4d0ac <IMFS_memfile_read+0x1a2>
/*
* If the last byte we are supposed to read is past the end of this
* in memory file, then shorten the length to read.
*/
last_byte = start + length;
4cf2e: 2009 movel %a1,%d0
4cf30: d083 addl %d3,%d0
if ( last_byte > the_jnode->info.file.size )
4cf32: 2a00 movel %d0,%d5
4cf34: 4284 clrl %d4
4cf36: 202a 004e movel %a2@(78),%d0
4cf3a: 222a 0052 movel %a2@(82),%d1
4cf3e: 2c04 movel %d4,%d6
4cf40: 2e05 movel %d5,%d7
4cf42: 9e81 subl %d1,%d7
4cf44: 9d80 subxl %d0,%d6
4cf46: 6f00 0112 blew 4d05a <IMFS_memfile_read+0x150>
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4cf4a: 2c39 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d6
* If the last byte we are supposed to read is past the end of this
* in memory file, then shorten the length to read.
*/
last_byte = start + length;
if ( last_byte > the_jnode->info.file.size )
my_length = the_jnode->info.file.size - start;
4cf50: 2e01 movel %d1,%d7
4cf52: 9e83 subl %d3,%d7
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4cf54: 2a06 movel %d6,%d5
4cf56: 5bc4 smi %d4
4cf58: 49c4 extbl %d4
4cf5a: 2f05 movel %d5,%sp@-
4cf5c: 2f04 movel %d4,%sp@-
4cf5e: 2f03 movel %d3,%sp@-
4cf60: 2f02 movel %d2,%sp@-
4cf62: 4eb9 0005 abfc jsr 5abfc <__moddi3>
4cf68: 4fef 0010 lea %sp@(16),%sp
4cf6c: 2641 moveal %d1,%a3
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4cf6e: 2f05 movel %d5,%sp@-
4cf70: 2f04 movel %d4,%sp@-
4cf72: 2f03 movel %d3,%sp@-
4cf74: 2f02 movel %d2,%sp@-
4cf76: 4eb9 0005 a79c jsr 5a79c <__divdi3>
4cf7c: 4fef 0010 lea %sp@(16),%sp
4cf80: 2401 movel %d1,%d2
if ( start_offset ) {
4cf82: 4a8b tstl %a3
4cf84: 6700 0110 beqw 4d096 <IMFS_memfile_read+0x18c>
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;
4cf88: 9c8b subl %a3,%d6
4cf8a: 2807 movel %d7,%d4
4cf8c: bc87 cmpl %d7,%d6
4cf8e: 6500 0174 bcsw 4d104 <IMFS_memfile_read+0x1fa>
if ( to_copy > my_length )
to_copy = my_length;
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4cf92: 42a7 clrl %sp@-
4cf94: 2f02 movel %d2,%sp@-
4cf96: 2f0a movel %a2,%sp@-
4cf98: 4eb9 0004 cd58 jsr 4cd58 <IMFS_memfile_get_block_pointer>
if ( !block_ptr )
4cf9e: 4fef 000c lea %sp@(12),%sp
4cfa2: 4a80 tstl %d0
4cfa4: 6700 0190 beqw 4d136 <IMFS_memfile_read+0x22c>
return copied;
memcpy( dest, &(*block_ptr)[ start_offset ], to_copy );
4cfa8: 2f04 movel %d4,%sp@-
4cfaa: 2040 moveal %d0,%a0
4cfac: d7d0 addal %a0@,%a3
dest += to_copy;
block++;
4cfae: 5282 addql #1,%d2
my_length -= to_copy;
4cfb0: 9e84 subl %d4,%d7
if ( to_copy > my_length )
to_copy = my_length;
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ start_offset ], to_copy );
4cfb2: 2f0b movel %a3,%sp@-
4cfb4: 2f2e 0014 movel %fp@(20),%sp@-
dest += to_copy;
4cfb8: 262e 0014 movel %fp@(20),%d3
4cfbc: d684 addl %d4,%d3
if ( to_copy > my_length )
to_copy = my_length;
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ start_offset ], to_copy );
4cfbe: 4eb9 0004 e964 jsr 4e964 <memcpy>
4cfc4: 2c39 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d6
4cfca: 4fef 000c lea %sp@(12),%sp
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
4cfce: bc87 cmpl %d7,%d6
4cfd0: 623c bhis 4d00e <IMFS_memfile_read+0x104>
4cfd2: 47f9 0004 cd58 lea 4cd58 <IMFS_memfile_get_block_pointer>,%a3
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4cfd8: 49f9 0004 e964 lea 4e964 <memcpy>,%a4
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4cfde: 42a7 clrl %sp@-
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
dest += to_copy;
block++;
my_length -= to_copy;
4cfe0: 9e86 subl %d6,%d7
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4cfe2: 2f02 movel %d2,%sp@-
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
dest += to_copy;
block++;
4cfe4: 5282 addql #1,%d2
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4cfe6: 2f0a movel %a2,%sp@-
4cfe8: 4e93 jsr %a3@
if ( !block_ptr )
4cfea: 4fef 000c lea %sp@(12),%sp
4cfee: 4a80 tstl %d0
4cff0: 6700 00ae beqw 4d0a0 <IMFS_memfile_read+0x196>
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4cff4: 2040 moveal %d0,%a0
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4cff6: d886 addl %d6,%d4
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4cff8: 2f06 movel %d6,%sp@-
4cffa: 2f10 movel %a0@,%sp@-
4cffc: 2f03 movel %d3,%sp@-
dest += to_copy;
4cffe: d686 addl %d6,%d3
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4d000: 4e94 jsr %a4@
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
4d002: 4fef 000c lea %sp@(12),%sp
4d006: beb9 0005 f0f0 cmpl 5f0f0 <imfs_memfile_bytes_per_block>,%d7
4d00c: 64d0 bccs 4cfde <IMFS_memfile_read+0xd4>
/*
* Phase 3: possibly the first part of one block
*/
IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );
if ( my_length ) {
4d00e: 4a87 tstl %d7
4d010: 6728 beqs 4d03a <IMFS_memfile_read+0x130>
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d012: 42a7 clrl %sp@-
4d014: 2f02 movel %d2,%sp@-
4d016: 2f0a movel %a2,%sp@-
4d018: 4eb9 0004 cd58 jsr 4cd58 <IMFS_memfile_get_block_pointer>
if ( !block_ptr )
4d01e: 4fef 000c lea %sp@(12),%sp
4d022: 4a80 tstl %d0
4d024: 677a beqs 4d0a0 <IMFS_memfile_read+0x196> <== NEVER TAKEN
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], my_length );
4d026: 2040 moveal %d0,%a0
copied += my_length;
4d028: d887 addl %d7,%d4
if ( my_length ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], my_length );
4d02a: 2f07 movel %d7,%sp@-
4d02c: 2f10 movel %a0@,%sp@-
4d02e: 2f03 movel %d3,%sp@-
4d030: 4eb9 0004 e964 jsr 4e964 <memcpy>
copied += my_length;
4d036: 4fef 000c lea %sp@(12),%sp
}
IMFS_update_atime( the_jnode );
4d03a: 42a7 clrl %sp@-
4d03c: 486e fff8 pea %fp@(-8)
4d040: 4eb9 0004 315c jsr 4315c <gettimeofday>
4d046: 256e fff8 003e movel %fp@(-8),%a2@(62)
return copied;
4d04c: 2004 movel %d4,%d0
4d04e: 508f addql #8,%sp
}
4d050: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
4d056: 4e5e unlk %fp
4d058: 4e75 rts
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d05a: 2c39 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d6
/*
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
4d060: 2e09 movel %a1,%d7
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d062: 2a06 movel %d6,%d5
4d064: 5bc4 smi %d4
4d066: 49c4 extbl %d4
4d068: 2f05 movel %d5,%sp@-
4d06a: 2f04 movel %d4,%sp@-
4d06c: 2f03 movel %d3,%sp@-
4d06e: 2f02 movel %d2,%sp@-
4d070: 4eb9 0005 abfc jsr 5abfc <__moddi3>
4d076: 4fef 0010 lea %sp@(16),%sp
4d07a: 2641 moveal %d1,%a3
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d07c: 2f05 movel %d5,%sp@-
4d07e: 2f04 movel %d4,%sp@-
4d080: 2f03 movel %d3,%sp@-
4d082: 2f02 movel %d2,%sp@-
4d084: 4eb9 0005 a79c jsr 5a79c <__divdi3>
4d08a: 4fef 0010 lea %sp@(16),%sp
4d08e: 2401 movel %d1,%d2
if ( start_offset ) {
4d090: 4a8b tstl %a3
4d092: 6600 fef4 bnew 4cf88 <IMFS_memfile_read+0x7e>
unsigned int last_byte;
unsigned int copied;
unsigned int start_offset;
unsigned char *dest;
dest = destination;
4d096: 262e 0014 movel %fp@(20),%d3
*/
last_byte = start + length;
if ( last_byte > the_jnode->info.file.size )
my_length = the_jnode->info.file.size - start;
copied = 0;
4d09a: 4284 clrl %d4
4d09c: 6000 ff30 braw 4cfce <IMFS_memfile_read+0xc4>
IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );
if ( my_length ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
4d0a0: 2004 movel %d4,%d0 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4d0a2: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d0a8: 4e5e unlk %fp <== NOT EXECUTED
4d0aa: 4e75 rts <== NOT EXECUTED
if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {
unsigned char *file_ptr;
file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;
if (my_length > (the_jnode->info.linearfile.size - start))
4d0ac: 2a49 moveal %a1,%a5
4d0ae: 99cc subal %a4,%a4
4d0b0: 282a 004e movel %a2@(78),%d4
4d0b4: 2a2a 0052 movel %a2@(82),%d5
my_length = length;
if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {
unsigned char *file_ptr;
file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;
4d0b8: 206a 0056 moveal %a2@(86),%a0
if (my_length > (the_jnode->info.linearfile.size - start))
4d0bc: 2c04 movel %d4,%d6
4d0be: 2e05 movel %d5,%d7
4d0c0: 200c movel %a4,%d0
4d0c2: 220d movel %a5,%d1
4d0c4: 9e83 subl %d3,%d7
4d0c6: 9d82 subxl %d2,%d6
4d0c8: 9287 subl %d7,%d1
4d0ca: 9186 subxl %d6,%d0
4d0cc: 6f3c bles 4d10a <IMFS_memfile_read+0x200> <== NEVER TAKEN
my_length = the_jnode->info.linearfile.size - start;
4d0ce: 2805 movel %d5,%d4
4d0d0: 9883 subl %d3,%d4
memcpy(dest, &file_ptr[start], my_length);
4d0d2: 2f04 movel %d4,%sp@-
4d0d4: 4870 3800 pea %a0@(00000000,%d3:l)
4d0d8: 2f2e 0014 movel %fp@(20),%sp@-
4d0dc: 4eb9 0004 e964 jsr 4e964 <memcpy>
IMFS_update_atime( the_jnode );
4d0e2: 42a7 clrl %sp@-
4d0e4: 486e fff8 pea %fp@(-8)
4d0e8: 4eb9 0004 315c jsr 4315c <gettimeofday>
4d0ee: 256e fff8 003e movel %fp@(-8),%a2@(62)
return my_length;
4d0f4: 2004 movel %d4,%d0
4d0f6: 4fef 0014 lea %sp@(20),%sp
}
IMFS_update_atime( the_jnode );
return copied;
}
4d0fa: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
4d100: 4e5e unlk %fp
4d102: 4e75 rts
4d104: 2806 movel %d6,%d4
4d106: 6000 fe8a braw 4cf92 <IMFS_memfile_read+0x88>
/*
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
4d10a: 2809 movel %a1,%d4 <== NOT EXECUTED
file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;
if (my_length > (the_jnode->info.linearfile.size - start))
my_length = the_jnode->info.linearfile.size - start;
memcpy(dest, &file_ptr[start], my_length);
4d10c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d10e: 4870 3800 pea %a0@(00000000,%d3:l) <== NOT EXECUTED
4d112: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4d116: 4eb9 0004 e964 jsr 4e964 <memcpy> <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4d11c: 42a7 clrl %sp@- <== NOT EXECUTED
4d11e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4d122: 4eb9 0004 315c jsr 4315c <gettimeofday> <== NOT EXECUTED
4d128: 256e fff8 003e movel %fp@(-8),%a2@(62) <== NOT EXECUTED
return my_length;
4d12e: 2004 movel %d4,%d0 <== NOT EXECUTED
4d130: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4d134: 60c4 bras 4d0fa <IMFS_memfile_read+0x1f0> <== NOT EXECUTED
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;
if ( to_copy > my_length )
to_copy = my_length;
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
4d136: 4280 clrl %d0 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4d138: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d13e: 4e5e unlk %fp <== NOT EXECUTED
0004d252 <IMFS_memfile_remove>:
* is better to stick to simple, easy to understand algorithms.
*/
IMFS_jnode_t *IMFS_memfile_remove(
IMFS_jnode_t *the_jnode
)
{
4d252: 4e56 ffe0 linkw %fp,#-32
4d256: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
/*
* Eventually this could be set smarter at each call to
* memfile_free_blocks_in_table to greatly speed this up.
*/
to_free = IMFS_MEMFILE_BLOCK_SLOTS;
4d25a: 2839 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d4
4d260: e48c lsrl #2,%d4
* is better to stick to simple, easy to understand algorithms.
*/
IMFS_jnode_t *IMFS_memfile_remove(
IMFS_jnode_t *the_jnode
)
{
4d262: 286e 0008 moveal %fp@(8),%a4
* + doubly indirect
* + triply indirect
*/
info = &the_jnode->info.file;
if ( info->indirect ) {
4d266: 4aac 0056 tstl %a4@(86)
4d26a: 670c beqs 4d278 <IMFS_memfile_remove+0x26>
memfile_free_blocks_in_table( &info->indirect, to_free );
4d26c: 2f04 movel %d4,%sp@-
4d26e: 486c 0056 pea %a4@(86)
4d272: 4eba ff92 jsr %pc@(4d206 <memfile_free_blocks_in_table>)
4d276: 508f addql #8,%sp
}
if ( info->doubly_indirect ) {
4d278: 206c 005a moveal %a4@(90),%a0
4d27c: 4a88 tstl %a0
4d27e: 674a beqs 4d2ca <IMFS_memfile_remove+0x78>
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d280: 2639 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d3
4d286: 2003 movel %d3,%d0
4d288: e488 lsrl #2,%d0
4d28a: 47fa ff7a lea %pc@(4d206 <memfile_free_blocks_in_table>),%a3
4d28e: 6730 beqs 4d2c0 <IMFS_memfile_remove+0x6e> <== NEVER TAKEN
4d290: 4280 clrl %d0
4d292: 4282 clrl %d2
4d294: 47fa ff70 lea %pc@(4d206 <memfile_free_blocks_in_table>),%a3
4d298: 5282 addql #1,%d2
if ( info->doubly_indirect[i] ) {
4d29a: 41f0 0c00 lea %a0@(00000000,%d0:l:4),%a0
4d29e: 4a90 tstl %a0@
4d2a0: 670e beqs 4d2b0 <IMFS_memfile_remove+0x5e> <== NEVER TAKEN
memfile_free_blocks_in_table(
4d2a2: 2f04 movel %d4,%sp@-
4d2a4: 2f08 movel %a0,%sp@-
4d2a6: 4e93 jsr %a3@
4d2a8: 2639 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d3
4d2ae: 508f addql #8,%sp
if ( info->indirect ) {
memfile_free_blocks_in_table( &info->indirect, to_free );
}
if ( info->doubly_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d2b0: 2203 movel %d3,%d1
4d2b2: 2002 movel %d2,%d0
4d2b4: e489 lsrl #2,%d1
4d2b6: b282 cmpl %d2,%d1
4d2b8: 6306 blss 4d2c0 <IMFS_memfile_remove+0x6e>
4d2ba: 206c 005a moveal %a4@(90),%a0
4d2be: 60d8 bras 4d298 <IMFS_memfile_remove+0x46>
if ( info->doubly_indirect[i] ) {
memfile_free_blocks_in_table(
(block_p **)&info->doubly_indirect[i], to_free );
}
}
memfile_free_blocks_in_table( &info->doubly_indirect, to_free );
4d2c0: 2f04 movel %d4,%sp@-
4d2c2: 486c 005a pea %a4@(90)
4d2c6: 4e93 jsr %a3@
4d2c8: 508f addql #8,%sp
}
if ( info->triply_indirect ) {
4d2ca: 206c 005e moveal %a4@(94),%a0
4d2ce: 4a88 tstl %a0
4d2d0: 677a beqs 4d34c <IMFS_memfile_remove+0xfa>
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d2d2: 2639 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d3
4d2d8: 2003 movel %d3,%d0
4d2da: e488 lsrl #2,%d0
4d2dc: 677a beqs 4d358 <IMFS_memfile_remove+0x106> <== NEVER TAKEN
p = (block_p *) info->triply_indirect[i];
4d2de: 2450 moveal %a0@,%a2
if ( !p ) /* ensure we have a valid pointer */
4d2e0: 4a8a tstl %a2
4d2e2: 6774 beqs 4d358 <IMFS_memfile_remove+0x106> <== NEVER TAKEN
}
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
p = (block_p *) info->triply_indirect[i];
4d2e4: 4286 clrl %d6
if ( !p ) /* ensure we have a valid pointer */
4d2e6: 4285 clrl %d5
4d2e8: 47fa ff1c lea %pc@(4d206 <memfile_free_blocks_in_table>),%a3
break;
for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {
4d2ec: 4a80 tstl %d0
4d2ee: 6726 beqs 4d316 <IMFS_memfile_remove+0xc4> <== NEVER TAKEN
4d2f0: 4281 clrl %d1
4d2f2: 4282 clrl %d2
4d2f4: 5282 addql #1,%d2
if ( p[j] ) {
4d2f6: 41f2 1c00 lea %a2@(00000000,%d1:l:4),%a0
4d2fa: 4a90 tstl %a0@
4d2fc: 670e beqs 4d30c <IMFS_memfile_remove+0xba> <== NEVER TAKEN
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
4d2fe: 2f04 movel %d4,%sp@-
4d300: 2f08 movel %a0,%sp@-
4d302: 4e93 jsr %a3@
4d304: 2639 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d3
4d30a: 508f addql #8,%sp
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
p = (block_p *) info->triply_indirect[i];
if ( !p ) /* ensure we have a valid pointer */
break;
for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {
4d30c: 2003 movel %d3,%d0
4d30e: 2202 movel %d2,%d1
4d310: e488 lsrl #2,%d0
4d312: b082 cmpl %d2,%d0
4d314: 62de bhis 4d2f4 <IMFS_memfile_remove+0xa2>
if ( p[j] ) {
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
}
}
memfile_free_blocks_in_table(
4d316: 2f04 movel %d4,%sp@-
4d318: dcac 005e addl %a4@(94),%d6
memfile_free_blocks_in_table( &info->doubly_indirect, to_free );
}
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d31c: 5285 addql #1,%d5
for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {
if ( p[j] ) {
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
}
}
memfile_free_blocks_in_table(
4d31e: 2f06 movel %d6,%sp@-
4d320: 4e93 jsr %a3@
memfile_free_blocks_in_table( &info->doubly_indirect, to_free );
}
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d322: 2639 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d3
4d328: 2003 movel %d3,%d0
4d32a: 508f addql #8,%sp
4d32c: e488 lsrl #2,%d0
4d32e: b085 cmpl %d5,%d0
4d330: 6310 blss 4d342 <IMFS_memfile_remove+0xf0>
* a significant difference in the performance of this routine.
*
* Regardless until the IMFS implementation is proven, it
* is better to stick to simple, easy to understand algorithms.
*/
IMFS_jnode_t *IMFS_memfile_remove(
4d332: 2c05 movel %d5,%d6
}
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
p = (block_p *) info->triply_indirect[i];
4d334: 206c 005e moveal %a4@(94),%a0
* a significant difference in the performance of this routine.
*
* Regardless until the IMFS implementation is proven, it
* is better to stick to simple, easy to understand algorithms.
*/
IMFS_jnode_t *IMFS_memfile_remove(
4d338: e58e lsll #2,%d6
}
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
p = (block_p *) info->triply_indirect[i];
4d33a: 2470 6800 moveal %a0@(00000000,%d6:l),%a2
if ( !p ) /* ensure we have a valid pointer */
4d33e: 4a8a tstl %a2
4d340: 66aa bnes 4d2ec <IMFS_memfile_remove+0x9a> <== ALWAYS TAKEN
}
}
memfile_free_blocks_in_table(
(block_p **)&info->triply_indirect[i], to_free );
}
memfile_free_blocks_in_table(
4d342: 2f04 movel %d4,%sp@-
4d344: 486c 005e pea %a4@(94)
4d348: 4e93 jsr %a3@
4d34a: 508f addql #8,%sp
(block_p **)&info->triply_indirect, to_free );
}
return the_jnode;
}
4d34c: 200c movel %a4,%d0
4d34e: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4
4d354: 4e5e unlk %fp
4d356: 4e75 rts
}
}
memfile_free_blocks_in_table(
(block_p **)&info->triply_indirect[i], to_free );
}
memfile_free_blocks_in_table(
4d358: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d35a: 486c 005e pea %a4@(94) <== NOT EXECUTED
4d35e: 47fa fea6 lea %pc@(4d206 <memfile_free_blocks_in_table>),%a3<== NOT EXECUTED
4d362: 4e93 jsr %a3@ <== NOT EXECUTED
4d364: 508f addql #8,%sp <== NOT EXECUTED
4d366: 60e4 bras 4d34c <IMFS_memfile_remove+0xfa> <== NOT EXECUTED
0004d368 <IMFS_memfile_remove_block>:
*/
MEMFILE_STATIC int IMFS_memfile_remove_block(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4d368: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
block_p *block_ptr;
block_p ptr;
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d36c: 42a7 clrl %sp@- <== NOT EXECUTED
4d36e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4d372: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d376: 4eb9 0004 cd58 jsr 4cd58 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
IMFS_assert( block_ptr );
ptr = *block_ptr;
4d37c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d37e: 2210 movel %a0@,%d1 <== NOT EXECUTED
*block_ptr = 0;
4d380: 4290 clrl %a0@ <== NOT EXECUTED
memfile_free_block( ptr );
4d382: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d384: 4eb9 0004 d1ec jsr 4d1ec <memfile_free_block> <== NOT EXECUTED
return 1;
}
4d38a: 7001 moveq #1,%d0 <== NOT EXECUTED
4d38c: 4e5e unlk %fp <== NOT EXECUTED
0004d518 <IMFS_memfile_write>:
* If the last byte we are supposed to write is past the end of this
* in memory file, then extend the length.
*/
last_byte = start + my_length;
if ( last_byte > the_jnode->info.file.size ) {
4d518: 4280 clrl %d0
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d51a: 4e56 ffd4 linkw %fp,#-44
4d51e: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@
4d522: 242e 000c movel %fp@(12),%d2
4d526: 262e 0010 movel %fp@(16),%d3
4d52a: 286e 0018 moveal %fp@(24),%a4
/*
* If the last byte we are supposed to write is past the end of this
* in memory file, then extend the length.
*/
last_byte = start + my_length;
4d52e: 41f4 3800 lea %a4@(00000000,%d3:l),%a0
if ( last_byte > the_jnode->info.file.size ) {
4d532: 2208 movel %a0,%d1
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d534: 246e 0008 moveal %fp@(8),%a2
* If the last byte we are supposed to write is past the end of this
* in memory file, then extend the length.
*/
last_byte = start + my_length;
if ( last_byte > the_jnode->info.file.size ) {
4d538: 2c00 movel %d0,%d6
4d53a: 2e01 movel %d1,%d7
4d53c: 282a 004e movel %a2@(78),%d4
4d540: 2a2a 0052 movel %a2@(82),%d5
4d544: 9e85 subl %d5,%d7
4d546: 9d84 subxl %d4,%d6
4d548: 6e00 0124 bgtw 4d66e <IMFS_memfile_write+0x156>
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d54c: 2e39 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d7
4d552: 2a07 movel %d7,%d5
4d554: 5bc4 smi %d4
4d556: 49c4 extbl %d4
4d558: 2f05 movel %d5,%sp@-
4d55a: 2f04 movel %d4,%sp@-
4d55c: 2f03 movel %d3,%sp@-
4d55e: 2f02 movel %d2,%sp@-
4d560: 4eb9 0005 abfc jsr 5abfc <__moddi3>
4d566: 4fef 0010 lea %sp@(16),%sp
4d56a: 2641 moveal %d1,%a3
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d56c: 2f05 movel %d5,%sp@-
4d56e: 2f04 movel %d4,%sp@-
4d570: 2f03 movel %d3,%sp@-
4d572: 2f02 movel %d2,%sp@-
4d574: 4eb9 0005 a79c jsr 5a79c <__divdi3>
4d57a: 4fef 0010 lea %sp@(16),%sp
4d57e: 2401 movel %d1,%d2
if ( start_offset ) {
4d580: 4a8b tstl %a3
4d582: 6700 00de beqw 4d662 <IMFS_memfile_write+0x14a>
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;
4d586: 9e8b subl %a3,%d7
4d588: b9c7 cmpal %d7,%a4
4d58a: 6402 bccs 4d58e <IMFS_memfile_write+0x76>
4d58c: 2e0c movel %a4,%d7
if ( to_copy > my_length )
to_copy = my_length;
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d58e: 42a7 clrl %sp@-
4d590: 2f02 movel %d2,%sp@-
4d592: 2f0a movel %a2,%sp@-
4d594: 4eb9 0004 cd58 jsr 4cd58 <IMFS_memfile_get_block_pointer>
if ( !block_ptr )
4d59a: 4fef 000c lea %sp@(12),%sp
4d59e: 4a80 tstl %d0
4d5a0: 6700 013a beqw 4d6dc <IMFS_memfile_write+0x1c4>
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d5a4: 2f07 movel %d7,%sp@-
4d5a6: 2f2e 0014 movel %fp@(20),%sp@-
4d5aa: 2040 moveal %d0,%a0
4d5ac: d7d0 addal %a0@,%a3
src += to_copy;
block++;
my_length -= to_copy;
4d5ae: 2c0c movel %a4,%d6
4d5b0: 9c87 subl %d7,%d6
copied += to_copy;
4d5b2: 2807 movel %d7,%d4
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
src += to_copy;
block++;
4d5b4: 5282 addql #1,%d2
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
src += to_copy;
4d5b6: 262e 0014 movel %fp@(20),%d3
4d5ba: d687 addl %d7,%d3
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d5bc: 2f0b movel %a3,%sp@-
4d5be: 4eb9 0004 e964 jsr 4e964 <memcpy>
4d5c4: 2e39 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d7
4d5ca: 4fef 000c lea %sp@(12),%sp
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
4d5ce: be86 cmpl %d6,%d7
4d5d0: 623c bhis 4d60e <IMFS_memfile_write+0xf6>
4d5d2: 47f9 0004 cd58 lea 4cd58 <IMFS_memfile_get_block_pointer>,%a3
if ( !block_ptr )
return copied;
#if 0
fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
#endif
memcpy( &(*block_ptr)[ 0 ], src, to_copy );
4d5d8: 49f9 0004 e964 lea 4e964 <memcpy>,%a4
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d5de: 42a7 clrl %sp@-
fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
#endif
memcpy( &(*block_ptr)[ 0 ], src, to_copy );
src += to_copy;
block++;
my_length -= to_copy;
4d5e0: 9c87 subl %d7,%d6
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d5e2: 2f02 movel %d2,%sp@-
#if 0
fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
#endif
memcpy( &(*block_ptr)[ 0 ], src, to_copy );
src += to_copy;
block++;
4d5e4: 5282 addql #1,%d2
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d5e6: 2f0a movel %a2,%sp@-
4d5e8: 4e93 jsr %a3@
if ( !block_ptr )
4d5ea: 4fef 000c lea %sp@(12),%sp
4d5ee: 4a80 tstl %d0
4d5f0: 6700 00de beqw 4d6d0 <IMFS_memfile_write+0x1b8>
return copied;
#if 0
fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
#endif
memcpy( &(*block_ptr)[ 0 ], src, to_copy );
4d5f4: 2f07 movel %d7,%sp@-
4d5f6: 2040 moveal %d0,%a0
* IMFS_memfile_write
*
* This routine writes the specified data buffer into the in memory
* file pointed to by the_jnode. The file is extended as needed.
*/
MEMFILE_STATIC ssize_t IMFS_memfile_write(
4d5f8: d887 addl %d7,%d4
if ( !block_ptr )
return copied;
#if 0
fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
#endif
memcpy( &(*block_ptr)[ 0 ], src, to_copy );
4d5fa: 2f03 movel %d3,%sp@-
4d5fc: 2f10 movel %a0@,%sp@-
src += to_copy;
4d5fe: d687 addl %d7,%d3
if ( !block_ptr )
return copied;
#if 0
fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
#endif
memcpy( &(*block_ptr)[ 0 ], src, to_copy );
4d600: 4e94 jsr %a4@
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
4d602: 4fef 000c lea %sp@(12),%sp
4d606: bcb9 0005 f0f0 cmpl 5f0f0 <imfs_memfile_bytes_per_block>,%d6
4d60c: 64d0 bccs 4d5de <IMFS_memfile_write+0xc6>
* Phase 3: possibly the first part of one block
*/
IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );
to_copy = my_length;
if ( my_length ) {
4d60e: 4a86 tstl %d6
4d610: 672a beqs 4d63c <IMFS_memfile_write+0x124>
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d612: 42a7 clrl %sp@-
4d614: 2f02 movel %d2,%sp@-
4d616: 2f0a movel %a2,%sp@-
4d618: 4eb9 0004 cd58 jsr 4cd58 <IMFS_memfile_get_block_pointer>
if ( !block_ptr )
4d61e: 4fef 000c lea %sp@(12),%sp
4d622: 4a80 tstl %d0
4d624: 6700 00aa beqw 4d6d0 <IMFS_memfile_write+0x1b8>
return copied;
#if 0
fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
#endif
memcpy( &(*block_ptr)[ 0 ], src, my_length );
4d628: 2f06 movel %d6,%sp@-
4d62a: 2040 moveal %d0,%a0
my_length = 0;
copied += to_copy;
4d62c: d886 addl %d6,%d4
if ( !block_ptr )
return copied;
#if 0
fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
#endif
memcpy( &(*block_ptr)[ 0 ], src, my_length );
4d62e: 2f03 movel %d3,%sp@-
4d630: 2f10 movel %a0@,%sp@-
4d632: 4eb9 0004 e964 jsr 4e964 <memcpy>
my_length = 0;
copied += to_copy;
4d638: 4fef 000c lea %sp@(12),%sp
}
IMFS_mtime_ctime_update( the_jnode );
4d63c: 42a7 clrl %sp@-
4d63e: 486e fff8 pea %fp@(-8)
4d642: 4eb9 0004 315c jsr 4315c <gettimeofday>
4d648: 222e fff8 movel %fp@(-8),%d1
return copied;
4d64c: 508f addql #8,%sp
4d64e: 2004 movel %d4,%d0
memcpy( &(*block_ptr)[ 0 ], src, my_length );
my_length = 0;
copied += to_copy;
}
IMFS_mtime_ctime_update( the_jnode );
4d650: 2541 0042 movel %d1,%a2@(66)
4d654: 2541 0046 movel %d1,%a2@(70)
return copied;
}
4d658: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4
4d65e: 4e5e unlk %fp
4d660: 4e75 rts
unsigned int last_byte;
unsigned int start_offset;
int copied;
const unsigned char *src;
src = source;
4d662: 262e 0014 movel %fp@(20),%d3
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
if ( start_offset ) {
4d666: 2c0c movel %a4,%d6
status = IMFS_memfile_extend( the_jnode, zero_fill, last_byte );
if ( status )
return status;
}
copied = 0;
4d668: 4284 clrl %d4
4d66a: 6000 ff62 braw 4d5ce <IMFS_memfile_write+0xb6>
last_byte = start + my_length;
if ( last_byte > the_jnode->info.file.size ) {
bool zero_fill = start > the_jnode->info.file.size;
status = IMFS_memfile_extend( the_jnode, zero_fill, last_byte );
4d66e: 2f08 movel %a0,%sp@-
* in memory file, then extend the length.
*/
last_byte = start + my_length;
if ( last_byte > the_jnode->info.file.size ) {
bool zero_fill = start > the_jnode->info.file.size;
4d670: b484 cmpl %d4,%d2
4d672: 6606 bnes 4d67a <IMFS_memfile_write+0x162> <== NEVER TAKEN
4d674: b685 cmpl %d5,%d3
4d676: 52c4 shi %d4
4d678: 6002 bras 4d67c <IMFS_memfile_write+0x164>
4d67a: 5ec4 sgt %d4 <== NOT EXECUTED
status = IMFS_memfile_extend( the_jnode, zero_fill, last_byte );
4d67c: 2f00 movel %d0,%sp@-
* in memory file, then extend the length.
*/
last_byte = start + my_length;
if ( last_byte > the_jnode->info.file.size ) {
bool zero_fill = start > the_jnode->info.file.size;
4d67e: 49c4 extbl %d4
status = IMFS_memfile_extend( the_jnode, zero_fill, last_byte );
4d680: 4484 negl %d4
4d682: 2f04 movel %d4,%sp@-
4d684: 2f0a movel %a2,%sp@-
4d686: 4eb9 0004 d390 jsr 4d390 <IMFS_memfile_extend>
if ( status )
4d68c: 4fef 0010 lea %sp@(16),%sp
4d690: 4a80 tstl %d0
4d692: 66c4 bnes 4d658 <IMFS_memfile_write+0x140>
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d694: 2e39 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%d7
4d69a: 2a07 movel %d7,%d5
4d69c: 5bc4 smi %d4
4d69e: 49c4 extbl %d4
4d6a0: 2f05 movel %d5,%sp@-
4d6a2: 2f04 movel %d4,%sp@-
4d6a4: 2f03 movel %d3,%sp@-
4d6a6: 2f02 movel %d2,%sp@-
4d6a8: 4eb9 0005 abfc jsr 5abfc <__moddi3>
4d6ae: 4fef 0010 lea %sp@(16),%sp
4d6b2: 2641 moveal %d1,%a3
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d6b4: 2f05 movel %d5,%sp@-
4d6b6: 2f04 movel %d4,%sp@-
4d6b8: 2f03 movel %d3,%sp@-
4d6ba: 2f02 movel %d2,%sp@-
4d6bc: 4eb9 0005 a79c jsr 5a79c <__divdi3>
4d6c2: 4fef 0010 lea %sp@(16),%sp
4d6c6: 2401 movel %d1,%d2
if ( start_offset ) {
4d6c8: 4a8b tstl %a3
4d6ca: 6600 feba bnew 4d586 <IMFS_memfile_write+0x6e>
4d6ce: 6092 bras 4d662 <IMFS_memfile_write+0x14a>
IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );
to_copy = my_length;
if ( my_length ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
4d6d0: 2004 movel %d4,%d0 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d6d2: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4d6d8: 4e5e unlk %fp <== NOT EXECUTED
4d6da: 4e75 rts <== NOT EXECUTED
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;
if ( to_copy > my_length )
to_copy = my_length;
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
4d6dc: 4280 clrl %d0 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d6de: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4d6e4: 4e5e unlk %fp <== NOT EXECUTED
0004293c <IMFS_mknod>:
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
4293c: 4e56 ffd8 linkw %fp,#-40
42940: 222e 0014 movel %fp@(20),%d1
dev_t dev,
IMFS_jnode_types_t *type,
IMFS_types_union *info
)
{
if ( S_ISDIR( mode ) ) {
42944: 2001 movel %d1,%d0
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
42946: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
dev_t dev,
IMFS_jnode_types_t *type,
IMFS_types_union *info
)
{
if ( S_ISDIR( mode ) ) {
4294a: 0280 0000 f000 andil #61440,%d0
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
42950: 246e 0008 moveal %fp@(8),%a2
42954: 242e 0018 movel %fp@(24),%d2
42958: 206e 001c moveal %fp@(28),%a0
dev_t dev,
IMFS_jnode_types_t *type,
IMFS_types_union *info
)
{
if ( S_ISDIR( mode ) ) {
4295c: 0c80 0000 4000 cmpil #16384,%d0
42962: 6700 009c beqw 42a00 <IMFS_mknod+0xc4>
*type = IMFS_DIRECTORY;
} else if ( S_ISREG( mode ) ) {
42966: 0c80 0000 8000 cmpil #32768,%d0
4296c: 6700 0096 beqw 42a04 <IMFS_mknod+0xc8>
*type = IMFS_MEMORY_FILE;
} else if ( S_ISBLK( mode ) || S_ISCHR( mode ) ) {
42970: 0c80 0000 6000 cmpil #24576,%d0
42976: 6774 beqs 429ec <IMFS_mknod+0xb0>
42978: 0c80 0000 2000 cmpil #8192,%d0
4297e: 676c beqs 429ec <IMFS_mknod+0xb0>
rtems_filesystem_split_dev_t(
dev,
info->device.major,
info->device.minor
);
} else if (S_ISFIFO( mode )) {
42980: 0c80 0000 1000 cmpil #4096,%d0
42986: 6772 beqs 429fa <IMFS_mknod+0xbe> <== ALWAYS TAKEN
42988: 486e ffec pea %fp@(-20)
size_t namelen,
mode_t mode,
const IMFS_types_union *info
)
{
const IMFS_fs_info_t *fs_info =
4298c: 206a 0014 moveal %a2@(20),%a0
(const IMFS_fs_info_t *) parentloc->mt_entry->fs_info;
return IMFS_create_node_with_control(
42990: 2f01 movel %d1,%sp@-
42992: 2f2e 0010 movel %fp@(16),%sp@-
42996: 2f2e 000c movel %fp@(12),%sp@-
4299a: 2068 0008 moveal %a0@(8),%a0
4299e: 2f30 9c08 movel %a0@(00000008,%a1:l:4),%sp@-
429a2: 2f0a movel %a2,%sp@-
429a4: 4eb9 0004 b06a jsr 4b06a <IMFS_create_node_with_control>
IMFS_jnode_t *new_node;
get_type_and_info_by_mode_and_dev( mode, dev, &type, &info );
new_node = IMFS_create_node( parentloc, type, name, namelen, mode, &info );
if ( new_node != NULL ) {
429aa: 4fef 0018 lea %sp@(24),%sp
429ae: 4a80 tstl %d0
429b0: 675a beqs 42a0c <IMFS_mknod+0xd0>
IMFS_jnode_t *parent = parentloc->node_access;
IMFS_update_ctime( parent );
429b2: 42a7 clrl %sp@-
get_type_and_info_by_mode_and_dev( mode, dev, &type, &info );
new_node = IMFS_create_node( parentloc, type, name, namelen, mode, &info );
if ( new_node != NULL ) {
IMFS_jnode_t *parent = parentloc->node_access;
429b4: 246a 0008 moveal %a2@(8),%a2
IMFS_update_ctime( parent );
429b8: 240e movel %fp,%d2
429ba: 0682 ffff ffe4 addil #-28,%d2
429c0: 47f9 0004 315c lea 4315c <gettimeofday>,%a3
429c6: 2f02 movel %d2,%sp@-
429c8: 4e93 jsr %a3@
429ca: 256e ffe4 0046 movel %fp@(-28),%a2@(70)
IMFS_update_mtime( parent );
429d0: 42a7 clrl %sp@-
429d2: 2f02 movel %d2,%sp@-
429d4: 4e93 jsr %a3@
429d6: 256e ffe4 0042 movel %fp@(-28),%a2@(66)
429dc: 4fef 0010 lea %sp@(16),%sp
size_t namelen,
mode_t mode,
dev_t dev
)
{
int rv = 0;
429e0: 4280 clrl %d0
} else {
rv = -1;
}
return rv;
}
429e2: 4cee 0c04 ffd8 moveml %fp@(-40),%d2/%a2-%a3
429e8: 4e5e unlk %fp
429ea: 4e75 rts
*type = IMFS_DIRECTORY;
} else if ( S_ISREG( mode ) ) {
*type = IMFS_MEMORY_FILE;
} else if ( S_ISBLK( mode ) || S_ISCHR( mode ) ) {
*type = IMFS_DEVICE;
rtems_filesystem_split_dev_t(
429ec: 2d42 ffec movel %d2,%fp@(-20)
if ( S_ISDIR( mode ) ) {
*type = IMFS_DIRECTORY;
} else if ( S_ISREG( mode ) ) {
*type = IMFS_MEMORY_FILE;
} else if ( S_ISBLK( mode ) || S_ISCHR( mode ) ) {
*type = IMFS_DEVICE;
429f0: 327c 0001 moveaw #1,%a1
rtems_filesystem_split_dev_t(
429f4: 2d48 fff0 movel %a0,%fp@(-16)
429f8: 608e bras 42988 <IMFS_mknod+0x4c>
dev,
info->device.major,
info->device.minor
);
} else if (S_ISFIFO( mode )) {
*type = IMFS_FIFO;
429fa: 327c 0006 moveaw #6,%a1
429fe: 6088 bras 42988 <IMFS_mknod+0x4c>
IMFS_jnode_types_t *type,
IMFS_types_union *info
)
{
if ( S_ISDIR( mode ) ) {
*type = IMFS_DIRECTORY;
42a00: 93c9 subal %a1,%a1
42a02: 6084 bras 42988 <IMFS_mknod+0x4c>
} else if ( S_ISREG( mode ) ) {
*type = IMFS_MEMORY_FILE;
42a04: 327c 0004 moveaw #4,%a1
42a08: 6000 ff7e braw 42988 <IMFS_mknod+0x4c>
IMFS_jnode_t *parent = parentloc->node_access;
IMFS_update_ctime( parent );
IMFS_update_mtime( parent );
} else {
rv = -1;
42a0c: 70ff moveq #-1,%d0
}
return rv;
}
42a0e: 4cee 0c04 ffd8 moveml %fp@(-40),%d2/%a2-%a3
42a14: 4e5e unlk %fp <== NOT EXECUTED
00042a18 <IMFS_mount>:
#endif
#include "imfs.h"
int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry )
{
42a18: 4e56 0000 linkw %fp,#0
42a1c: 226e 0008 moveal %fp@(8),%a1
int rv = 0;
IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;
42a20: 2069 0020 moveal %a1@(32),%a0
42a24: 2068 0008 moveal %a0@(8),%a0
#endif
#include "imfs.h"
int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry )
{
42a28: 2f0a movel %a2,%sp@-
int rv = 0;
IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;
if ( IMFS_is_directory( node ) ) {
42a2a: 2468 004a moveal %a0@(74),%a2
42a2e: 4a92 tstl %a2@
42a30: 662a bnes 42a5c <IMFS_mount+0x44>
if ( node->info.directory.mt_fs == NULL ) {
42a32: 4aa8 005a tstl %a0@(90)
42a36: 660e bnes 42a46 <IMFS_mount+0x2e> <== NEVER TAKEN
node->info.directory.mt_fs = mt_entry;
42a38: 2149 005a movel %a1,%a0@(90)
errno = ENOTDIR;
rv = -1;
}
return rv;
}
42a3c: 246e fffc moveal %fp@(-4),%a2
#include "imfs.h"
int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry )
{
int rv = 0;
42a40: 4280 clrl %d0
errno = ENOTDIR;
rv = -1;
}
return rv;
}
42a42: 4e5e unlk %fp
42a44: 4e75 rts
if ( IMFS_is_directory( node ) ) {
if ( node->info.directory.mt_fs == NULL ) {
node->info.directory.mt_fs = mt_entry;
} else {
errno = EBUSY;
42a46: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
errno = ENOTDIR;
rv = -1;
}
return rv;
}
42a4c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( IMFS_is_directory( node ) ) {
if ( node->info.directory.mt_fs == NULL ) {
node->info.directory.mt_fs = mt_entry;
} else {
errno = EBUSY;
42a50: 2040 moveal %d0,%a0 <== NOT EXECUTED
42a52: 7210 moveq #16,%d1 <== NOT EXECUTED
rv = -1;
42a54: 70ff moveq #-1,%d0 <== NOT EXECUTED
errno = ENOTDIR;
rv = -1;
}
return rv;
}
42a56: 4e5e unlk %fp <== NOT EXECUTED
if ( IMFS_is_directory( node ) ) {
if ( node->info.directory.mt_fs == NULL ) {
node->info.directory.mt_fs = mt_entry;
} else {
errno = EBUSY;
42a58: 2081 movel %d1,%a0@ <== NOT EXECUTED
errno = ENOTDIR;
rv = -1;
}
return rv;
}
42a5a: 4e75 rts <== NOT EXECUTED
} else {
errno = EBUSY;
rv = -1;
}
} else {
errno = ENOTDIR;
42a5c: 4eb9 0004 e144 jsr 4e144 <__errno>
rv = -1;
}
return rv;
}
42a62: 246e fffc moveal %fp@(-4),%a2
} else {
errno = EBUSY;
rv = -1;
}
} else {
errno = ENOTDIR;
42a66: 2040 moveal %d0,%a0
42a68: 7214 moveq #20,%d1
rv = -1;
42a6a: 70ff moveq #-1,%d0
}
return rv;
}
42a6c: 4e5e unlk %fp
} else {
errno = EBUSY;
rv = -1;
}
} else {
errno = ENOTDIR;
42a6e: 2081 movel %d1,%a0@
rv = -1;
}
return rv;
}
...
0004b4e6 <IMFS_node_remove_directory>:
}
static IMFS_jnode_t *IMFS_node_remove_directory(
IMFS_jnode_t *node
)
{
4b4e6: 4e56 0000 linkw %fp,#0
4b4ea: 206e 0008 moveal %fp@(8),%a0
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4b4ee: 2008 movel %a0,%d0
4b4f0: 0680 0000 0052 addil #82,%d0
if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {
4b4f6: b0a8 004e cmpl %a0@(78),%d0
4b4fa: 660c bnes 4b508 <IMFS_node_remove_directory+0x22>
errno = ENOTEMPTY;
node = NULL;
} else if ( IMFS_is_mount_point( node ) ) {
4b4fc: 4aa8 005a tstl %a0@(90)
4b500: 661a bnes 4b51c <IMFS_node_remove_directory+0x36><== NEVER TAKEN
errno = EBUSY;
node = NULL;
}
return node;
}
4b502: 2008 movel %a0,%d0
4b504: 4e5e unlk %fp
4b506: 4e75 rts
static IMFS_jnode_t *IMFS_node_remove_directory(
IMFS_jnode_t *node
)
{
if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {
errno = ENOTEMPTY;
4b508: 4eb9 0004 e144 jsr 4e144 <__errno>
4b50e: 725a moveq #90,%d1
4b510: 2240 moveal %d0,%a1
node = NULL;
4b512: 91c8 subal %a0,%a0
errno = EBUSY;
node = NULL;
}
return node;
}
4b514: 2008 movel %a0,%d0
4b516: 4e5e unlk %fp
static IMFS_jnode_t *IMFS_node_remove_directory(
IMFS_jnode_t *node
)
{
if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {
errno = ENOTEMPTY;
4b518: 2281 movel %d1,%a1@
errno = EBUSY;
node = NULL;
}
return node;
}
4b51a: 4e75 rts
{
if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {
errno = ENOTEMPTY;
node = NULL;
} else if ( IMFS_is_mount_point( node ) ) {
errno = EBUSY;
4b51c: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
4b522: 91c8 subal %a0,%a0 <== NOT EXECUTED
4b524: 2240 moveal %d0,%a1 <== NOT EXECUTED
4b526: 7010 moveq #16,%d0 <== NOT EXECUTED
node = NULL;
}
return node;
}
4b528: 4e5e unlk %fp <== NOT EXECUTED
{
if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {
errno = ENOTEMPTY;
node = NULL;
} else if ( IMFS_is_mount_point( node ) ) {
errno = EBUSY;
4b52a: 2280 movel %d0,%a1@ <== NOT EXECUTED
node = NULL;
}
return node;
}
4b52c: 2008 movel %a0,%d0 <== NOT EXECUTED
00042a74 <IMFS_node_type>:
{
const IMFS_jnode_t *node = loc->node_access;
IMFS_jnode_types_t imfs_type = IMFS_type( node );
rtems_filesystem_node_types_t type;
switch ( imfs_type ) {
42a74: 7202 moveq #2,%d1
#include "imfs.h"
rtems_filesystem_node_types_t IMFS_node_type(
const rtems_filesystem_location_info_t *loc
)
{
42a76: 4e56 0000 linkw %fp,#0
42a7a: 206e 0008 moveal %fp@(8),%a0
const IMFS_jnode_t *node = loc->node_access;
42a7e: 2068 0008 moveal %a0@(8),%a0
rtems_chain_extract_unprotected( &node->Node );
}
static inline IMFS_jnode_types_t IMFS_type( const IMFS_jnode_t *node )
{
return node->control->imfs_type;
42a82: 2268 004a moveal %a0@(74),%a1
42a86: 2011 movel %a1@,%d0
IMFS_jnode_types_t imfs_type = IMFS_type( node );
rtems_filesystem_node_types_t type;
switch ( imfs_type ) {
42a88: b280 cmpl %d0,%d1
42a8a: 6712 beqs 42a9e <IMFS_node_type+0x2a>
42a8c: 123c 0005 moveb #5,%d1
42a90: b280 cmpl %d0,%d1
42a92: 6704 beqs 42a98 <IMFS_node_type+0x24> <== NEVER TAKEN
type = imfs_type;
break;
}
return type;
}
42a94: 4e5e unlk %fp
42a96: 4e75 rts
switch ( imfs_type ) {
case IMFS_HARD_LINK:
type = IMFS_type( node->info.hard_link.link_node );
break;
case IMFS_LINEAR_FILE:
type = RTEMS_FILESYSTEM_MEMORY_FILE;
42a98: 7004 moveq #4,%d0 <== NOT EXECUTED
type = imfs_type;
break;
}
return type;
}
42a9a: 4e5e unlk %fp <== NOT EXECUTED
42a9c: 4e75 rts <== NOT EXECUTED
42a9e: 2068 004e moveal %a0@(78),%a0
42aa2: 4e5e unlk %fp
42aa4: 2068 004a moveal %a0@(74),%a0
42aa8: 2010 movel %a0@,%d0 <== NOT EXECUTED
00042aac <IMFS_readlink>:
ssize_t IMFS_readlink(
const rtems_filesystem_location_info_t *loc,
char *buf,
size_t bufsize
)
{
42aac: 4e56 fff4 linkw %fp,#-12
IMFS_jnode_t *node;
ssize_t i;
node = loc->node_access;
42ab0: 206e 0008 moveal %fp@(8),%a0
ssize_t IMFS_readlink(
const rtems_filesystem_location_info_t *loc,
char *buf,
size_t bufsize
)
{
42ab4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
42ab8: 266e 000c moveal %fp@(12),%a3
42abc: 242e 0010 movel %fp@(16),%d2
IMFS_jnode_t *node;
ssize_t i;
node = loc->node_access;
42ac0: 2468 0008 moveal %a0@(8),%a2
IMFS_assert( node->control->imfs_type == IMFS_SYM_LINK );
for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
42ac4: 672a beqs 42af0 <IMFS_readlink+0x44> <== NEVER TAKEN
42ac6: 206a 004e moveal %a2@(78),%a0
42aca: 1210 moveb %a0@,%d1
42acc: 6722 beqs 42af0 <IMFS_readlink+0x44> <== NEVER TAKEN
42ace: 91c8 subal %a0,%a0
42ad0: 4280 clrl %d0
42ad2: 5280 addql #1,%d0
buf[i] = node->info.sym_link.name[i];
42ad4: 1781 8800 moveb %d1,%a3@(00000000,%a0:l)
node = loc->node_access;
IMFS_assert( node->control->imfs_type == IMFS_SYM_LINK );
for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
42ad8: 2040 moveal %d0,%a0
42ada: b480 cmpl %d0,%d2
42adc: 670a beqs 42ae8 <IMFS_readlink+0x3c>
42ade: 226a 004e moveal %a2@(78),%a1
42ae2: 1231 0800 moveb %a1@(00000000,%d0:l),%d1
42ae6: 66ea bnes 42ad2 <IMFS_readlink+0x26>
buf[i] = node->info.sym_link.name[i];
return i;
}
42ae8: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3
42aec: 4e5e unlk %fp
42aee: 4e75 rts
node = loc->node_access;
IMFS_assert( node->control->imfs_type == IMFS_SYM_LINK );
for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
42af0: 4280 clrl %d0 <== NOT EXECUTED
buf[i] = node->info.sym_link.name[i];
return i;
}
42af2: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED
42af6: 4e5e unlk %fp <== NOT EXECUTED
...
00042afc <IMFS_rename>:
const rtems_filesystem_location_info_t *oldloc,
const rtems_filesystem_location_info_t *newparentloc,
const char *name,
size_t namelen
)
{
42afc: 4e56 ffe8 linkw %fp,#-24
int rv = 0;
IMFS_jnode_t *node = oldloc->node_access;
42b00: 206e 000c moveal %fp@(12),%a0
const rtems_filesystem_location_info_t *oldloc,
const rtems_filesystem_location_info_t *newparentloc,
const char *name,
size_t namelen
)
{
42b04: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
int rv = 0;
IMFS_jnode_t *node = oldloc->node_access;
42b08: 2468 0008 moveal %a0@(8),%a2
IMFS_jnode_t *new_parent = newparentloc->node_access;
42b0c: 206e 0010 moveal %fp@(16),%a0
const rtems_filesystem_location_info_t *oldloc,
const rtems_filesystem_location_info_t *newparentloc,
const char *name,
size_t namelen
)
{
42b10: 242e 0018 movel %fp@(24),%d2
int rv = 0;
IMFS_jnode_t *node = oldloc->node_access;
IMFS_jnode_t *new_parent = newparentloc->node_access;
42b14: 2668 0008 moveal %a0@(8),%a3
/*
* FIXME: Due to insufficient checks we can create inaccessible nodes with
* this operation.
*/
if ( node->Parent != NULL ) {
42b18: 4aaa 0008 tstl %a2@(8)
42b1c: 677a beqs 42b98 <IMFS_rename+0x9c> <== NEVER TAKEN
if ( namelen < IMFS_NAME_MAX ) {
42b1e: 701f moveq #31,%d0
42b20: b082 cmpl %d2,%d0
42b22: 655c bcss 42b80 <IMFS_rename+0x84> <== NEVER TAKEN
memcpy( node->name, name, namelen );
42b24: 2f02 movel %d2,%sp@-
42b26: 2f2e 0014 movel %fp@(20),%sp@-
42b2a: 486a 000c pea %a2@(12)
42b2e: 4eb9 0004 e964 jsr 4e964 <memcpy>
node->name [namelen] = '\0';
42b34: 4200 clrb %d0
42b36: 1580 280c moveb %d0,%a2@(0000000c,%d2:l)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
42b3a: 226a 0004 moveal %a2@(4),%a1
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
42b3e: 2852 moveal %a2@,%a4
previous = the_node->previous;
next->previous = previous;
42b40: 2949 0004 movel %a1,%a4@(4)
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
42b44: 206b 0056 moveal %a3@(86),%a0
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
previous->next = next;
42b48: 228c movel %a4,%a1@
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
42b4a: 43eb 0052 lea %a3@(82),%a1
static inline void IMFS_add_to_directory(
IMFS_jnode_t *dir,
IMFS_jnode_t *node
)
{
node->Parent = dir;
42b4e: 254b 0008 movel %a3,%a2@(8)
42b52: 2489 movel %a1,%a2@
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
42b54: 274a 0056 movel %a2,%a3@(86)
old_last->next = the_node;
42b58: 208a movel %a2,%a0@
the_node->previous = old_last;
42b5a: 2548 0004 movel %a0,%a2@(4)
IMFS_remove_from_directory( node );
IMFS_add_to_directory( new_parent, node );
IMFS_update_ctime( node );
42b5e: 42a7 clrl %sp@-
42b60: 486e fff8 pea %fp@(-8)
42b64: 4eb9 0004 315c jsr 4315c <gettimeofday>
42b6a: 256e fff8 0046 movel %fp@(-8),%a2@(70)
42b70: 4fef 0014 lea %sp@(20),%sp
const rtems_filesystem_location_info_t *newparentloc,
const char *name,
size_t namelen
)
{
int rv = 0;
42b74: 4280 clrl %d0
errno = EINVAL;
rv = -1;
}
return rv;
}
42b76: 4cee 1c04 ffe8 moveml %fp@(-24),%d2/%a2-%a4
42b7c: 4e5e unlk %fp
42b7e: 4e75 rts
IMFS_remove_from_directory( node );
IMFS_add_to_directory( new_parent, node );
IMFS_update_ctime( node );
} else {
errno = ENAMETOOLONG;
42b80: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
42b86: 745b moveq #91,%d2 <== NOT EXECUTED
42b88: 2040 moveal %d0,%a0 <== NOT EXECUTED
rv = -1;
42b8a: 70ff moveq #-1,%d0 <== NOT EXECUTED
IMFS_remove_from_directory( node );
IMFS_add_to_directory( new_parent, node );
IMFS_update_ctime( node );
} else {
errno = ENAMETOOLONG;
42b8c: 2082 movel %d2,%a0@ <== NOT EXECUTED
errno = EINVAL;
rv = -1;
}
return rv;
}
42b8e: 4cee 1c04 ffe8 moveml %fp@(-24),%d2/%a2-%a4 <== NOT EXECUTED
42b94: 4e5e unlk %fp <== NOT EXECUTED
42b96: 4e75 rts <== NOT EXECUTED
} else {
errno = ENAMETOOLONG;
rv = -1;
}
} else {
errno = EINVAL;
42b98: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
42b9e: 7216 moveq #22,%d1 <== NOT EXECUTED
42ba0: 2040 moveal %d0,%a0 <== NOT EXECUTED
rv = -1;
42ba2: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return rv;
}
42ba4: 4cee 1c04 ffe8 moveml %fp@(-24),%d2/%a2-%a4 <== NOT EXECUTED
} else {
errno = ENAMETOOLONG;
rv = -1;
}
} else {
errno = EINVAL;
42baa: 2081 movel %d1,%a0@ <== NOT EXECUTED
rv = -1;
}
return rv;
}
42bac: 4e5e unlk %fp <== NOT EXECUTED
0004b428 <IMFS_stat_device>:
static int IMFS_stat_device(
const rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4b428: 4e56 0000 linkw %fp,#0
4b42c: 226e 0008 moveal %fp@(8),%a1
4b430: 2f0a movel %a2,%sp@-
const IMFS_jnode_t *node = loc->node_access;
4b432: 2469 0008 moveal %a1@(8),%a2
static int IMFS_stat_device(
const rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4b436: 206e 000c moveal %fp@(12),%a0
const IMFS_jnode_t *node = loc->node_access;
const IMFS_device_t *io = &node->info.device;
buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor );
4b43a: 202a 0052 movel %a2@(82),%d0
4b43e: 216a 004e 0016 movel %a2@(78),%a0@(22)
return IMFS_stat( loc, buf );
}
4b444: 245f moveal %sp@+,%a2
4b446: 4e5e unlk %fp
)
{
const IMFS_jnode_t *node = loc->node_access;
const IMFS_device_t *io = &node->info.device;
buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor );
4b448: 2140 001a movel %d0,%a0@(26)
return IMFS_stat( loc, buf );
4b44c: 4ef9 0004 b6a8 jmp 4b6a8 <IMFS_stat>
...
0004b670 <IMFS_stat_file>:
static int IMFS_stat_file(
const rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4b670: 4e56 0000 linkw %fp,#0
4b674: 226e 0008 moveal %fp@(8),%a1
4b678: 2f0a movel %a2,%sp@-
const IMFS_jnode_t *node = loc->node_access;
buf->st_size = node->info.file.size;
4b67a: 2469 0008 moveal %a1@(8),%a2
static int IMFS_stat_file(
const rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4b67e: 206e 000c moveal %fp@(12),%a0
const IMFS_jnode_t *node = loc->node_access;
buf->st_size = node->info.file.size;
4b682: 202a 004e movel %a2@(78),%d0
4b686: 222a 0052 movel %a2@(82),%d1
buf->st_blksize = imfs_rq_memfile_bytes_per_block;
4b68a: 45f9 0005 e25c lea 5e25c <imfs_rq_memfile_bytes_per_block>,%a2
4b690: 2152 003e movel %a2@,%a0@(62)
return IMFS_stat( loc, buf );
}
4b694: 245f moveal %sp@+,%a2
4b696: 4e5e unlk %fp
struct stat *buf
)
{
const IMFS_jnode_t *node = loc->node_access;
buf->st_size = node->info.file.size;
4b698: 2140 001e movel %d0,%a0@(30)
4b69c: 2141 0022 movel %d1,%a0@(34)
buf->st_blksize = imfs_rq_memfile_bytes_per_block;
return IMFS_stat( loc, buf );
4b6a0: 4ef9 0004 b6a8 jmp 4b6a8 <IMFS_stat>
...
00042ca0 <IMFS_unmount>:
#endif
#include "imfs.h"
int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry )
{
42ca0: 4e56 0000 linkw %fp,#0
42ca4: 226e 0008 moveal %fp@(8),%a1
int rv = 0;
IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;
42ca8: 2069 0020 moveal %a1@(32),%a0
42cac: 2068 0008 moveal %a0@(8),%a0
#endif
#include "imfs.h"
int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry )
{
42cb0: 2f0a movel %a2,%sp@-
int rv = 0;
IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;
if ( IMFS_is_directory( node ) ) {
42cb2: 2468 004a moveal %a0@(74),%a2
42cb6: 4a92 tstl %a2@
42cb8: 662a bnes 42ce4 <IMFS_unmount+0x44> <== NEVER TAKEN
if ( node->info.directory.mt_fs == mt_entry ) {
42cba: b3e8 005a cmpal %a0@(90),%a1
42cbe: 660e bnes 42cce <IMFS_unmount+0x2e> <== NEVER TAKEN
node->info.directory.mt_fs = NULL;
42cc0: 42a8 005a clrl %a0@(90)
errno = ENOTDIR;
rv = -1;
}
return rv;
}
42cc4: 246e fffc moveal %fp@(-4),%a2
#include "imfs.h"
int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry )
{
int rv = 0;
42cc8: 4280 clrl %d0
errno = ENOTDIR;
rv = -1;
}
return rv;
}
42cca: 4e5e unlk %fp
42ccc: 4e75 rts
if ( IMFS_is_directory( node ) ) {
if ( node->info.directory.mt_fs == mt_entry ) {
node->info.directory.mt_fs = NULL;
} else {
errno = EINVAL;
42cce: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
errno = ENOTDIR;
rv = -1;
}
return rv;
}
42cd4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( IMFS_is_directory( node ) ) {
if ( node->info.directory.mt_fs == mt_entry ) {
node->info.directory.mt_fs = NULL;
} else {
errno = EINVAL;
42cd8: 2040 moveal %d0,%a0 <== NOT EXECUTED
42cda: 7216 moveq #22,%d1 <== NOT EXECUTED
rv = -1;
42cdc: 70ff moveq #-1,%d0 <== NOT EXECUTED
errno = ENOTDIR;
rv = -1;
}
return rv;
}
42cde: 4e5e unlk %fp <== NOT EXECUTED
if ( IMFS_is_directory( node ) ) {
if ( node->info.directory.mt_fs == mt_entry ) {
node->info.directory.mt_fs = NULL;
} else {
errno = EINVAL;
42ce0: 2081 movel %d1,%a0@ <== NOT EXECUTED
errno = ENOTDIR;
rv = -1;
}
return rv;
}
42ce2: 4e75 rts <== NOT EXECUTED
} else {
errno = EINVAL;
rv = -1;
}
} else {
errno = ENOTDIR;
42ce4: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
rv = -1;
}
return rv;
}
42cea: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
} else {
errno = EINVAL;
rv = -1;
}
} else {
errno = ENOTDIR;
42cee: 2040 moveal %d0,%a0 <== NOT EXECUTED
42cf0: 7214 moveq #20,%d1 <== NOT EXECUTED
rv = -1;
42cf2: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return rv;
}
42cf4: 4e5e unlk %fp <== NOT EXECUTED
} else {
errno = EINVAL;
rv = -1;
}
} else {
errno = ENOTDIR;
42cf6: 2081 movel %d1,%a0@ <== NOT EXECUTED
rv = -1;
}
return rv;
}
...
00043334 <RTEMS_Malloc_Initialize>:
void RTEMS_Malloc_Initialize(
const Heap_Area *areas,
size_t area_count,
Heap_Initialization_or_extend_handler extend
)
{
43334: 4e56 ffe8 linkw %fp,#-24
43338: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
4333c: 282e 000c movel %fp@(12),%d4
43340: 2a2e 0010 movel %fp@(16),%d5
Heap_Control *heap = RTEMS_Malloc_Heap;
43344: 2639 0005 e21c movel 5e21c <RTEMS_Malloc_Heap>,%d3
if ( !rtems_configuration_get_unified_work_area() ) {
4334a: 4a39 0005 c605 tstb 5c605 <Configuration+0x31>
43350: 6638 bnes 4338a <RTEMS_Malloc_Initialize+0x56>
Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
uintptr_t page_size = CPU_HEAP_ALIGNMENT;
size_t i;
for (i = 0; i < area_count; ++i) {
43352: 4a84 tstl %d4
43354: 6764 beqs 433ba <RTEMS_Malloc_Initialize+0x86>
43356: 246e 0008 moveal %fp@(8),%a2
4335a: 4282 clrl %d2
4335c: 47f9 0004 86b0 lea 486b0 <_Heap_Initialize>,%a3
const Heap_Area *area = &areas [i];
uintptr_t space_available = (*init_or_extend)(
43362: 4878 0004 pea 4 <CONTEXT_ARG>
43366: 2f2a 0004 movel %a2@(4),%sp@-
4336a: 2f12 movel %a2@,%sp@-
4336c: 2f03 movel %d3,%sp@-
4336e: 4e93 jsr %a3@
area->begin,
area->size,
page_size
);
if ( space_available > 0 ) {
43370: 4fef 0010 lea %sp@(16),%sp
43374: 4a80 tstl %d0
43376: 6702 beqs 4337a <RTEMS_Malloc_Initialize+0x46> <== NEVER TAKEN
init_or_extend = extend;
43378: 2645 moveal %d5,%a3
if ( !rtems_configuration_get_unified_work_area() ) {
Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
uintptr_t page_size = CPU_HEAP_ALIGNMENT;
size_t i;
for (i = 0; i < area_count; ++i) {
4337a: 5282 addql #1,%d2
4337c: 508a addql #8,%a2
4337e: b882 cmpl %d2,%d4
43380: 66e0 bnes 43362 <RTEMS_Malloc_Initialize+0x2e> <== NEVER TAKEN
if ( space_available > 0 ) {
init_or_extend = extend;
}
}
if ( init_or_extend == _Heap_Initialize ) {
43382: b7fc 0004 86b0 cmpal #296624,%a3
43388: 6730 beqs 433ba <RTEMS_Malloc_Initialize+0x86> <== NEVER TAKEN
}
/*
* If configured, initialize the statistics support
*/
if ( rtems_malloc_statistics_helpers != NULL ) {
4338a: 2079 0005 e8c4 moveal 5e8c4 <rtems_malloc_statistics_helpers>,%a0
43390: 4a88 tstl %a0
43392: 6704 beqs 43398 <RTEMS_Malloc_Initialize+0x64>
(*rtems_malloc_statistics_helpers->initialize)();
43394: 2050 moveal %a0@,%a0
43396: 4e90 jsr %a0@
}
MSBUMP( space_available, _Protected_heap_Get_size( heap ) );
43398: 2439 0005 f900 movel 5f900 <rtems_malloc_statistics>,%d2
4339e: 2f03 movel %d3,%sp@-
433a0: 4eb9 0004 91f4 jsr 491f4 <_Protected_heap_Get_size>
433a6: 588f addql #4,%sp
433a8: d082 addl %d2,%d0
}
433aa: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
*/
if ( rtems_malloc_statistics_helpers != NULL ) {
(*rtems_malloc_statistics_helpers->initialize)();
}
MSBUMP( space_available, _Protected_heap_Get_size( heap ) );
433b0: 23c0 0005 f900 movel %d0,5f900 <rtems_malloc_statistics>
}
433b6: 4e5e unlk %fp
433b8: 4e75 rts
init_or_extend = extend;
}
}
if ( init_or_extend == _Heap_Initialize ) {
_Internal_error_Occurred(
433ba: 4878 0017 pea 17 <OPER2+0x3>
433be: 4878 0001 pea 1 <ADD>
433c2: 42a7 clrl %sp@-
433c4: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred>
...
00062bb8 <Stack_check_Dump_threads_usage>:
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
62bb8: 70ff moveq #-1,%d0 <== NOT EXECUTED
static rtems_printk_plugin_t print_handler;
static void Stack_check_Dump_threads_usage(
Thread_Control *the_thread
)
{
62bba: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
62bbe: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
62bc2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
62bc6: b08a cmpl %a2,%d0 <== NOT EXECUTED
62bc8: 6700 014c beqw 62d16 <Stack_check_Dump_threads_usage+0x15e><== NOT EXECUTED
current = 0;
} else
#endif
{
stack = &the_thread->Start.Initial_stack;
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
62bcc: 262a 00ec movel %a2@(236),%d3 <== NOT EXECUTED
the_thread = 0;
current = 0;
} else
#endif
{
stack = &the_thread->Start.Initial_stack;
62bd0: 47ea 00ac lea %a2@(172),%a3 <== NOT EXECUTED
62bd4: 226a 00b0 moveal %a2@(176),%a1 <== NOT EXECUTED
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
}
low = Stack_check_usable_stack_start(stack);
size = Stack_check_usable_stack_size(stack);
62bd8: 2413 movel %a3@,%d2 <== NOT EXECUTED
* start at lower memory and find first word that does not
* match pattern
*/
base += PATTERN_SIZE_WORDS;
for (ebase = base + length; base < ebase; base++)
62bda: 70fc moveq #-4,%d0 <== NOT EXECUTED
stack = &the_thread->Start.Initial_stack;
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
}
low = Stack_check_usable_stack_start(stack);
size = Stack_check_usable_stack_size(stack);
62bdc: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
/*
* start at lower memory and find first word that does not
* match pattern
*/
base += PATTERN_SIZE_WORDS;
62be2: 41e9 0020 lea %a1@(32),%a0 <== NOT EXECUTED
for (ebase = base + length; base < ebase; base++)
62be6: c082 andl %d2,%d0 <== NOT EXECUTED
62be8: d088 addl %a0,%d0 <== NOT EXECUTED
62bea: b088 cmpl %a0,%d0 <== NOT EXECUTED
62bec: 6300 00ae blsw 62c9c <Stack_check_Dump_threads_usage+0xe4><== NOT EXECUTED
if (*base != U32_PATTERN)
62bf0: 223c a5a5 a5a5 movel #-1515870811,%d1 <== NOT EXECUTED
62bf6: b2a9 0020 cmpl %a1@(32),%d1 <== NOT EXECUTED
62bfa: 6612 bnes 62c0e <Stack_check_Dump_threads_usage+0x56><== NOT EXECUTED
* start at lower memory and find first word that does not
* match pattern
*/
base += PATTERN_SIZE_WORDS;
for (ebase = base + length; base < ebase; base++)
62bfc: 5888 addql #4,%a0 <== NOT EXECUTED
62bfe: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
62c00: 6400 009a bccw 62c9c <Stack_check_Dump_threads_usage+0xe4><== NOT EXECUTED
if (*base != U32_PATTERN)
62c04: 223c a5a5 a5a5 movel #-1515870811,%d1 <== NOT EXECUTED
62c0a: b290 cmpl %a0@,%d1 <== NOT EXECUTED
62c0c: 67ee beqs 62bfc <Stack_check_Dump_threads_usage+0x44><== NOT EXECUTED
size = Stack_check_usable_stack_size(stack);
high_water_mark = Stack_check_find_high_water_mark(low, size);
if ( high_water_mark )
used = Stack_check_Calculate_used( low, size, high_water_mark );
62c0e: 49f1 2810 lea %a1@(00000010,%d2:l),%a4 <== NOT EXECUTED
62c12: 99c8 subal %a0,%a4 <== NOT EXECUTED
else
used = 0;
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
62c14: 4a8a tstl %a2 <== NOT EXECUTED
62c16: 6700 008c beqw 62ca4 <Stack_check_Dump_threads_usage+0xec><== NOT EXECUTED
#endif
{
(*print_handler)(
62c1a: 486e fffb pea %fp@(-5) <== NOT EXECUTED
62c1e: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
62c22: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
62c26: 2a79 0009 f208 moveal 9f208 <print_handler>,%a5 <== NOT EXECUTED
62c2c: 4eb9 0004 e620 jsr 4e620 <rtems_object_get_name> <== NOT EXECUTED
62c32: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62c34: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
62c38: 4879 0009 6a42 pea 96a42 <RTEMS_BDPART_MBR_MASTER_TYPE+0x2a7><== NOT EXECUTED
62c3e: 2f39 0009 f204 movel 9f204 <print_context>,%sp@- <== NOT EXECUTED
62c44: 4e95 jsr %a5@ <== NOT EXECUTED
(*print_handler)(
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
62c46: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
#endif
{
(*print_handler)(
62c4a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
62c4e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
62c50: 2f03 movel %d3,%sp@- <== NOT EXECUTED
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
62c52: 2013 movel %a3@,%d0 <== NOT EXECUTED
62c54: 5380 subql #1,%d0 <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
62c56: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
62c5a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
62c5c: 4879 0009 6a5d pea 96a5d <RTEMS_BDPART_MBR_MASTER_TYPE+0x2c2><== NOT EXECUTED
62c62: 2f39 0009 f204 movel 9f204 <print_context>,%sp@- <== NOT EXECUTED
62c68: 2079 0009 f208 moveal 9f208 <print_handler>,%a0 <== NOT EXECUTED
62c6e: 4e90 jsr %a0@ <== NOT EXECUTED
stack->area + stack->size - 1,
current,
size
);
if (Stack_check_Initialized == 0) {
62c70: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
62c74: 4ab9 0009 f200 tstl 9f200 <Stack_check_Initialized> <== NOT EXECUTED
62c7a: 6676 bnes 62cf2 <Stack_check_Dump_threads_usage+0x13a><== NOT EXECUTED
(*print_handler)( print_context, "Unavailable\n" );
62c7c: 4879 0009 6a7b pea 96a7b <RTEMS_BDPART_MBR_MASTER_TYPE+0x2e0><== NOT EXECUTED
62c82: 2f39 0009 f204 movel 9f204 <print_context>,%sp@- <== NOT EXECUTED
62c88: 2079 0009 f208 moveal 9f208 <print_handler>,%a0 <== NOT EXECUTED
62c8e: 4e90 jsr %a0@ <== NOT EXECUTED
62c90: 508f addql #8,%sp <== NOT EXECUTED
} else {
(*print_handler)( print_context, "%8" PRId32 "\n", used );
}
}
62c92: 4cee 3c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a5 <== NOT EXECUTED
62c98: 4e5e unlk %fp <== NOT EXECUTED
62c9a: 4e75 rts <== NOT EXECUTED
high_water_mark = Stack_check_find_high_water_mark(low, size);
if ( high_water_mark )
used = Stack_check_Calculate_used( low, size, high_water_mark );
else
used = 0;
62c9c: 99cc subal %a4,%a4 <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
62c9e: 4a8a tstl %a2 <== NOT EXECUTED
62ca0: 6600 ff78 bnew 62c1a <Stack_check_Dump_threads_usage+0x62><== NOT EXECUTED
rtems_object_get_name( the_thread->Object.id, sizeof(name), name )
);
}
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
62ca4: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
62ca8: 4879 0009 6a4f pea 96a4f <RTEMS_BDPART_MBR_MASTER_TYPE+0x2b4><== NOT EXECUTED
62cae: 2f39 0009 f204 movel 9f204 <print_context>,%sp@- <== NOT EXECUTED
62cb4: 2079 0009 f208 moveal 9f208 <print_handler>,%a0 <== NOT EXECUTED
62cba: 4e90 jsr %a0@ <== NOT EXECUTED
(*print_handler)(
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
62cbc: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED
rtems_object_get_name( the_thread->Object.id, sizeof(name), name )
);
}
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
62cc0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
#endif
(*print_handler)(
62cc4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
62cc6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
62cc8: 2013 movel %a3@,%d0 <== NOT EXECUTED
62cca: 5380 subql #1,%d0 <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
62ccc: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
62cd0: 2f08 movel %a0,%sp@- <== NOT EXECUTED
62cd2: 4879 0009 6a5d pea 96a5d <RTEMS_BDPART_MBR_MASTER_TYPE+0x2c2><== NOT EXECUTED
62cd8: 2f39 0009 f204 movel 9f204 <print_context>,%sp@- <== NOT EXECUTED
62cde: 2079 0009 f208 moveal 9f208 <print_handler>,%a0 <== NOT EXECUTED
62ce4: 4e90 jsr %a0@ <== NOT EXECUTED
stack->area + stack->size - 1,
current,
size
);
if (Stack_check_Initialized == 0) {
62ce6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
62cea: 4ab9 0009 f200 tstl 9f200 <Stack_check_Initialized> <== NOT EXECUTED
62cf0: 678a beqs 62c7c <Stack_check_Dump_threads_usage+0xc4><== NOT EXECUTED
(*print_handler)( print_context, "Unavailable\n" );
} else {
(*print_handler)( print_context, "%8" PRId32 "\n", used );
62cf2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
62cf4: 4879 0009 6a88 pea 96a88 <RTEMS_BDPART_MBR_MASTER_TYPE+0x2ed><== NOT EXECUTED
62cfa: 2f39 0009 f204 movel 9f204 <print_context>,%sp@- <== NOT EXECUTED
62d00: 2079 0009 f208 moveal 9f208 <print_handler>,%a0 <== NOT EXECUTED
62d06: 4e90 jsr %a0@ <== NOT EXECUTED
62d08: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
62d0c: 4cee 3c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a5 <== NOT EXECUTED
62d12: 4e5e unlk %fp <== NOT EXECUTED
62d14: 4e75 rts <== NOT EXECUTED
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
if (!Stack_check_Interrupt_stack.area)
62d16: 2279 000a 014c moveal a014c <Stack_check_Interrupt_stack+0x4>,%a1<== NOT EXECUTED
62d1c: 4a89 tstl %a1 <== NOT EXECUTED
62d1e: 6700 ff72 beqw 62c92 <Stack_check_Dump_threads_usage+0xda><== NOT EXECUTED
return;
stack = &Stack_check_Interrupt_stack;
62d22: 47f9 000a 0148 lea a0148 <Stack_check_Interrupt_stack>,%a3 <== NOT EXECUTED
the_thread = 0;
current = 0;
62d28: 4283 clrl %d3 <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
if (!Stack_check_Interrupt_stack.area)
return;
stack = &Stack_check_Interrupt_stack;
the_thread = 0;
62d2a: 95ca subal %a2,%a2 <== NOT EXECUTED
62d2c: 6000 feaa braw 62bd8 <Stack_check_Dump_threads_usage+0x20><== NOT EXECUTED
00062e0e <Stack_check_report_blown_task>:
Thread_Control *running,
bool pattern_ok
) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;
void Stack_check_report_blown_task(Thread_Control *running, bool pattern_ok)
{
62e0e: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
62e12: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack;
void *pattern_area = Stack_check_Get_pattern(stack);
char name[32];
printk("BLOWN STACK!!!\n");
62e16: 4879 0009 6a8e pea 96a8e <RTEMS_BDPART_MBR_MASTER_TYPE+0x2f3><== NOT EXECUTED
62e1c: 47f9 0004 3cc0 lea 43cc0 <printk>,%a3 <== NOT EXECUTED
Thread_Control *running,
bool pattern_ok
) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;
void Stack_check_report_blown_task(Thread_Control *running, bool pattern_ok)
{
62e22: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack;
void *pattern_area = Stack_check_Get_pattern(stack);
62e26: 286a 00b0 moveal %a2@(176),%a4 <== NOT EXECUTED
Thread_Control *running,
bool pattern_ok
) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;
void Stack_check_report_blown_task(Thread_Control *running, bool pattern_ok)
{
62e2a: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack;
void *pattern_area = Stack_check_Get_pattern(stack);
char name[32];
printk("BLOWN STACK!!!\n");
62e2e: 4e93 jsr %a3@ <== NOT EXECUTED
printk("task control block: 0x%08" PRIxPTR "\n", running);
62e30: 2f0a movel %a2,%sp@- <== NOT EXECUTED
62e32: 4879 0009 6a9e pea 96a9e <RTEMS_BDPART_MBR_MASTER_TYPE+0x303><== NOT EXECUTED
62e38: 4e93 jsr %a3@ <== NOT EXECUTED
printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);
62e3a: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
62e3e: 4879 0009 6abb pea 96abb <RTEMS_BDPART_MBR_MASTER_TYPE+0x320><== NOT EXECUTED
62e44: 4e93 jsr %a3@ <== NOT EXECUTED
printk(
62e46: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
62e4a: 4879 0009 6acd pea 96acd <RTEMS_BDPART_MBR_MASTER_TYPE+0x332><== NOT EXECUTED
62e50: 4e93 jsr %a3@ <== NOT EXECUTED
"task name: 0x%08" PRIx32 "\n",
running->Object.name.name_u32
);
printk(
62e52: 486e ffe0 pea %fp@(-32) <== NOT EXECUTED
62e56: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
62e5a: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
62e5e: 4eb9 0004 e620 jsr 4e620 <rtems_object_get_name> <== NOT EXECUTED
62e64: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
62e68: 2e80 movel %d0,%sp@ <== NOT EXECUTED
62e6a: 4879 0009 6ae1 pea 96ae1 <RTEMS_BDPART_MBR_MASTER_TYPE+0x346><== NOT EXECUTED
62e70: 4e93 jsr %a3@ <== NOT EXECUTED
);
printk(
"task stack area (%lu Bytes): 0x%08" PRIxPTR " .. 0x%08" PRIxPTR "\n",
(unsigned long) stack->size,
stack->area,
((char *) stack->area + stack->size)
62e72: 206a 00b0 moveal %a2@(176),%a0 <== NOT EXECUTED
62e76: 202a 00ac movel %a2@(172),%d0 <== NOT EXECUTED
);
printk(
"task name string: %s\n",
rtems_object_get_name(running->Object.id, sizeof(name), name)
);
printk(
62e7a: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
62e7e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
62e80: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62e82: 4879 0009 6af7 pea 96af7 <RTEMS_BDPART_MBR_MASTER_TYPE+0x35c><== NOT EXECUTED
62e88: 4e93 jsr %a3@ <== NOT EXECUTED
"task stack area (%lu Bytes): 0x%08" PRIxPTR " .. 0x%08" PRIxPTR "\n",
(unsigned long) stack->size,
stack->area,
((char *) stack->area + stack->size)
);
if (!pattern_ok) {
62e8a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
62e8e: 4a02 tstb %d2 <== NOT EXECUTED
62e90: 670e beqs 62ea0 <Stack_check_report_blown_task+0x92><== NOT EXECUTED
rtems_configuration_get_user_multiprocessing_table()->node
);
}
#endif
rtems_fatal(
62e92: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
62e96: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED
62e9a: 4eb9 0004 795c jsr 4795c <rtems_fatal> <== NOT EXECUTED
(unsigned long) stack->size,
stack->area,
((char *) stack->area + stack->size)
);
if (!pattern_ok) {
printk(
62ea0: 486c 0018 pea %a4@(24) <== NOT EXECUTED
62ea4: 486c 0008 pea %a4@(8) <== NOT EXECUTED
62ea8: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
62eac: 4879 0009 6b28 pea 96b28 <RTEMS_BDPART_MBR_MASTER_TYPE+0x38d><== NOT EXECUTED
62eb2: 4e93 jsr %a3@ <== NOT EXECUTED
62eb4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_configuration_get_user_multiprocessing_table()->node
);
}
#endif
rtems_fatal(
62eb8: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
62ebc: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED
62ec0: 4eb9 0004 795c jsr 4795c <rtems_fatal> <== NOT EXECUTED
0004d1fc <TOD_MICROSECONDS_TO_TICKS>:
* We should ensure the ticks not be truncated by integer division. We
* need to have it be greater than or equal to the requested time. It
* should not be shorter.
*/
microseconds_per_tick = rtems_configuration_get_microseconds_per_tick();
ticks = microseconds / microseconds_per_tick;
4d1fc: 41f9 0006 1a24 lea 61a24 <Configuration+0xc>,%a0
#include <rtems/score/tod.h>
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
4d202: 4e56 0000 linkw %fp,#0
* We should ensure the ticks not be truncated by integer division. We
* need to have it be greater than or equal to the requested time. It
* should not be shorter.
*/
microseconds_per_tick = rtems_configuration_get_microseconds_per_tick();
ticks = microseconds / microseconds_per_tick;
4d206: 202e 0008 movel %fp@(8),%d0
4d20a: 4c50 0001 remul %a0@,%d1,%d0
4d20e: 4c50 0000 remul %a0@,%d0,%d0
if ( (microseconds % microseconds_per_tick) != 0 )
4d212: 4a81 tstl %d1
4d214: 6702 beqs 4d218 <TOD_MICROSECONDS_TO_TICKS+0x1c> <== ALWAYS TAKEN
ticks += 1;
4d216: 5280 addql #1,%d0 <== NOT EXECUTED
return ticks;
}
4d218: 4e5e unlk %fp <== NOT EXECUTED
00048cdc <TOD_MILLISECONDS_TO_TICKS>:
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
48cdc: 4e56 0000 linkw %fp,#0
/**
* We should ensure the ticks not be truncated by integer division. We
* need to have it be greater than or equal to the requested time. It
* should not be shorter.
*/
milliseconds_per_tick = rtems_configuration_get_milliseconds_per_tick();
48ce0: 2039 0005 d6c4 movel 5d6c4 <Configuration+0xc>,%d0
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
48ce6: 2f02 movel %d2,%sp@-
/**
* We should ensure the ticks not be truncated by integer division. We
* need to have it be greater than or equal to the requested time. It
* should not be shorter.
*/
milliseconds_per_tick = rtems_configuration_get_milliseconds_per_tick();
48ce8: 243c 0000 03e8 movel #1000,%d2
48cee: 4c42 0000 remul %d2,%d0,%d0
ticks = milliseconds / milliseconds_per_tick;
48cf2: 242e 0008 movel %fp@(8),%d2
48cf6: 4c40 2001 remul %d0,%d1,%d2
48cfa: 4c40 2002 remul %d0,%d2,%d2
48cfe: 2002 movel %d2,%d0
if ( (milliseconds % milliseconds_per_tick) != 0 )
48d00: 4a81 tstl %d1
48d02: 6702 beqs 48d06 <TOD_MILLISECONDS_TO_TICKS+0x2a> <== ALWAYS TAKEN
ticks += 1;
48d04: 5280 addql #1,%d0 <== NOT EXECUTED
return ticks;
}
48d06: 241f movel %sp@+,%d2
48d08: 4e5e unlk %fp <== NOT EXECUTED
00047f08 <_API_Mutex_Unlock>:
#include <rtems/score/apimutex.h>
void _API_Mutex_Unlock(
API_Mutex_Control *the_mutex
)
{
47f08: 4e56 0000 linkw %fp,#0
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
47f0c: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
++level;
47f12: 5280 addql #1,%d0
47f14: 206e 0008 moveal %fp@(8),%a0
_Thread_Dispatch_disable_level = level;
47f18: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
/* Dispatch is already disabled in SMP while lock is held. */
#if !defined(RTEMS_SMP)
_Thread_Disable_dispatch();
#endif
_CORE_mutex_Surrender(
47f1e: 42a7 clrl %sp@-
47f20: 2f28 0008 movel %a0@(8),%sp@-
47f24: 4868 0010 pea %a0@(16)
47f28: 4eb9 0004 8298 jsr 48298 <_CORE_mutex_Surrender>
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
47f2e: 4fef 000c lea %sp@(12),%sp
}
47f32: 4e5e unlk %fp
_CORE_mutex_Surrender(
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
47f34: 4ef9 0004 9c44 jmp 49c44 <_Thread_Enable_dispatch>
...
00047de2 <_API_extensions_Add_post_switch>:
void _API_extensions_Add_post_switch(
API_extensions_Post_switch_control *post_switch
)
{
47de2: 4e56 0000 linkw %fp,#0
47de6: 206e 0008 moveal %fp@(8),%a0
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(
const Chain_Node *node
)
{
return (node->next == NULL) && (node->previous == NULL);
47dea: 4a90 tstl %a0@
47dec: 6704 beqs 47df2 <_API_extensions_Add_post_switch+0x10>
_Chain_Append_if_is_off_chain_unprotected(
&_API_extensions_Post_switch_list,
&post_switch->Node
);
}
47dee: 4e5e unlk %fp
47df0: 4e75 rts
47df2: 4aa8 0004 tstl %a0@(4)
47df6: 66f6 bnes 47dee <_API_extensions_Add_post_switch+0xc><== NEVER TAKEN
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
47df8: 2279 0005 fa82 moveal 5fa82 <_API_extensions_Post_switch_list+0x8>,%a1
47dfe: 4e5e unlk %fp
the_node->next = tail;
47e00: 20bc 0005 fa7e movel #391806,%a0@
tail->previous = the_node;
47e06: 23c8 0005 fa82 movel %a0,5fa82 <_API_extensions_Post_switch_list+0x8>
old_last->next = the_node;
47e0c: 2288 movel %a0,%a1@
the_node->previous = old_last;
47e0e: 2149 0004 movel %a1,%a0@(4)
00047e14 <_API_extensions_Run_postdriver>:
}
}
#endif
void _API_extensions_Run_postdriver( void )
{
47e14: 4e56 0000 linkw %fp,#0
47e18: 2f0a movel %a2,%sp@-
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
47e1a: 2479 0005 fb2a moveal 5fb2a <_API_extensions_List>,%a2
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
47e20: b5fc 0005 fb2e cmpal #391982,%a2
47e26: 6710 beqs 47e38 <_API_extensions_Run_postdriver+0x24><== NEVER TAKEN
* Currently all APIs configure this hook so it is always non-NULL.
*/
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
if ( the_extension->postdriver_hook )
#endif
(*the_extension->postdriver_hook)();
47e28: 206a 0008 moveal %a2@(8),%a0
47e2c: 4e90 jsr %a0@
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
!_Chain_Is_tail( &_API_extensions_List, the_node ) ;
the_node = the_node->next ) {
47e2e: 2452 moveal %a2@,%a2
void _API_extensions_Run_postdriver( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
47e30: b5fc 0005 fb2e cmpal #391982,%a2
47e36: 66f0 bnes 47e28 <_API_extensions_Run_postdriver+0x14><== NEVER TAKEN
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
if ( the_extension->postdriver_hook )
#endif
(*the_extension->postdriver_hook)();
}
}
47e38: 246e fffc moveal %fp@(-4),%a2
47e3c: 4e5e unlk %fp <== NOT EXECUTED
0004f30c <_CORE_barrier_Wait>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
_ISR_Disable( level );
4f30c: 203c 0000 0700 movel #1792,%d0
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_barrier_API_mp_support_callout api_barrier_mp_support
)
{
4f312: 4e56 fff4 linkw %fp,#-12
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
4f316: 2279 0006 2092 moveal 62092 <_Per_CPU_Information+0xe>,%a1
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_barrier_API_mp_support_callout api_barrier_mp_support
)
{
4f31c: 48d7 001c moveml %d2-%d4,%sp@
4f320: 206e 0008 moveal %fp@(8),%a0
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
4f324: 42a9 0034 clrl %a1@(52)
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_barrier_API_mp_support_callout api_barrier_mp_support
)
{
4f328: 242e 000c movel %fp@(12),%d2
4f32c: 262e 0014 movel %fp@(20),%d3
4f330: 282e 0018 movel %fp@(24),%d4
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
_ISR_Disable( level );
4f334: 40c1 movew %sr,%d1
4f336: 8081 orl %d1,%d0
4f338: 46c0 movew %d0,%sr
the_barrier->number_of_waiting_threads++;
4f33a: 2028 0048 movel %a0@(72),%d0
4f33e: 5280 addql #1,%d0
4f340: 2140 0048 movel %d0,%a0@(72)
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
4f344: 4aa8 0040 tstl %a0@(64)
4f348: 6606 bnes 4f350 <_CORE_barrier_Wait+0x44>
if ( the_barrier->number_of_waiting_threads ==
4f34a: b0a8 0044 cmpl %a0@(68),%d0
4f34e: 672e beqs 4f37e <_CORE_barrier_Wait+0x72>
4f350: 7001 moveq #1,%d0
4f352: 2140 0030 movel %d0,%a0@(48)
return;
}
}
_Thread_queue_Enter_critical_section( &the_barrier->Wait_queue );
executing->Wait.queue = &the_barrier->Wait_queue;
4f356: 2348 0044 movel %a0,%a1@(68)
executing->Wait.id = id;
4f35a: 2342 0020 movel %d2,%a1@(32)
_ISR_Enable( level );
4f35e: 46c1 movew %d1,%sr
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
4f360: 2d43 000c movel %d3,%fp@(12)
4f364: 203c 0004 bee0 movel #311008,%d0
4f36a: 2d48 0008 movel %a0,%fp@(8)
}
4f36e: 4cd7 001c moveml %sp@,%d2-%d4
_Thread_queue_Enter_critical_section( &the_barrier->Wait_queue );
executing->Wait.queue = &the_barrier->Wait_queue;
executing->Wait.id = id;
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
4f372: 2d40 0010 movel %d0,%fp@(16)
}
4f376: 4e5e unlk %fp
_Thread_queue_Enter_critical_section( &the_barrier->Wait_queue );
executing->Wait.queue = &the_barrier->Wait_queue;
executing->Wait.id = id;
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
4f378: 4ef9 0004 bb10 jmp 4bb10 <_Thread_queue_Enqueue_with_handler>
_ISR_Disable( level );
the_barrier->number_of_waiting_threads++;
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
if ( the_barrier->number_of_waiting_threads ==
the_barrier->Attributes.maximum_count) {
executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED;
4f37e: 7001 moveq #1,%d0
4f380: 2340 0034 movel %d0,%a1@(52)
_ISR_Enable( level );
4f384: 46c1 movew %d1,%sr
_CORE_barrier_Release( the_barrier, id, api_barrier_mp_support );
4f386: 2d44 0010 movel %d4,%fp@(16)
4f38a: 2d42 000c movel %d2,%fp@(12)
executing->Wait.queue = &the_barrier->Wait_queue;
executing->Wait.id = id;
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
}
4f38e: 4cd7 001c moveml %sp@,%d2-%d4
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
if ( the_barrier->number_of_waiting_threads ==
the_barrier->Attributes.maximum_count) {
executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED;
_ISR_Enable( level );
_CORE_barrier_Release( the_barrier, id, api_barrier_mp_support );
4f392: 2d48 0008 movel %a0,%fp@(8)
executing->Wait.queue = &the_barrier->Wait_queue;
executing->Wait.id = id;
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
}
4f396: 4e5e unlk %fp
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
if ( the_barrier->number_of_waiting_threads ==
the_barrier->Attributes.maximum_count) {
executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED;
_ISR_Enable( level );
_CORE_barrier_Release( the_barrier, id, api_barrier_mp_support );
4f398: 4ef9 0004 f2d0 jmp 4f2d0 <_CORE_barrier_Release>
...
00058830 <_CORE_message_queue_Broadcast>:
Objects_Id id __attribute__((unused)),
CORE_message_queue_API_mp_support_callout api_message_queue_mp_support __attribute__((unused)),
#endif
uint32_t *count
)
{
58830: 4e56 ffe4 linkw %fp,#-28
58834: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
58838: 266e 0008 moveal %fp@(8),%a3
5883c: 282e 000c movel %fp@(12),%d4
58840: 242e 0010 movel %fp@(16),%d2
Thread_Control *the_thread;
uint32_t number_broadcasted;
Thread_Wait_information *waitp;
if ( size > the_message_queue->maximum_message_size ) {
58844: b4ab 004c cmpl %a3@(76),%d2
58848: 6266 bhis 588b0 <_CORE_message_queue_Broadcast+0x80>
* NOTE: This check is critical because threads can block on
* send and receive and this ensures that we are broadcasting
* the message to threads waiting to receive -- not to send.
*/
if ( the_message_queue->number_of_pending_messages != 0 ) {
5884a: 4aab 0048 tstl %a3@(72)
5884e: 664e bnes 5889e <_CORE_message_queue_Broadcast+0x6e>
/*
* There must be no pending messages if there is a thread waiting to
* receive a message.
*/
number_broadcasted = 0;
while ((the_thread =
58850: 2f0b movel %a3,%sp@-
58852: 49f9 0005 b554 lea 5b554 <_Thread_queue_Dequeue>,%a4
* NOTE: This check is critical because threads can block on
* send and receive and this ensures that we are broadcasting
* the message to threads waiting to receive -- not to send.
*/
if ( the_message_queue->number_of_pending_messages != 0 ) {
58858: 4283 clrl %d3
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
5885a: 4bf9 0005 fe18 lea 5fe18 <memcpy>,%a5
/*
* There must be no pending messages if there is a thread waiting to
* receive a message.
*/
number_broadcasted = 0;
while ((the_thread =
58860: 4e94 jsr %a4@
58862: 588f addql #4,%sp
58864: 2440 moveal %d0,%a2
58866: 4a80 tstl %d0
58868: 6722 beqs 5888c <_CORE_message_queue_Broadcast+0x5c>
5886a: 2f02 movel %d2,%sp@-
_Thread_queue_Dequeue(&the_message_queue->Wait_queue))) {
waitp = &the_thread->Wait;
number_broadcasted += 1;
5886c: 5283 addql #1,%d3
5886e: 2f04 movel %d4,%sp@-
58870: 2f2a 002c movel %a2@(44),%sp@-
58874: 4e95 jsr %a5@
buffer,
waitp->return_argument_second.mutable_object,
size
);
*(size_t *) the_thread->Wait.return_argument = size;
58876: 206a 0028 moveal %a2@(40),%a0
5887a: 4fef 000c lea %sp@(12),%sp
5887e: 2082 movel %d2,%a0@
/*
* There must be no pending messages if there is a thread waiting to
* receive a message.
*/
number_broadcasted = 0;
while ((the_thread =
58880: 2f0b movel %a3,%sp@-
58882: 4e94 jsr %a4@
58884: 588f addql #4,%sp
58886: 2440 moveal %d0,%a2
58888: 4a80 tstl %d0
5888a: 66de bnes 5886a <_CORE_message_queue_Broadcast+0x3a><== NEVER TAKEN
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_message_queue_mp_support) ( the_thread, id );
#endif
}
*count = number_broadcasted;
5888c: 206e 001c moveal %fp@(28),%a0
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
58890: 4280 clrl %d0
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_message_queue_mp_support) ( the_thread, id );
#endif
}
*count = number_broadcasted;
58892: 2083 movel %d3,%a0@
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
58894: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
5889a: 4e5e unlk %fp
5889c: 4e75 rts
* send and receive and this ensures that we are broadcasting
* the message to threads waiting to receive -- not to send.
*/
if ( the_message_queue->number_of_pending_messages != 0 ) {
*count = 0;
5889e: 206e 001c moveal %fp@(28),%a0
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
588a2: 4280 clrl %d0
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
588a4: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
* send and receive and this ensures that we are broadcasting
* the message to threads waiting to receive -- not to send.
*/
if ( the_message_queue->number_of_pending_messages != 0 ) {
*count = 0;
588aa: 4290 clrl %a0@
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
588ac: 4e5e unlk %fp
588ae: 4e75 rts
Thread_Control *the_thread;
uint32_t number_broadcasted;
Thread_Wait_information *waitp;
if ( size > the_message_queue->maximum_message_size ) {
return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;
588b0: 7001 moveq #1,%d0
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
588b2: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
588b8: 4e5e unlk %fp <== NOT EXECUTED
000552f4 <_CORE_message_queue_Close>:
void _CORE_message_queue_Close(
CORE_message_queue_Control *the_message_queue,
Thread_queue_Flush_callout remote_extract_callout,
uint32_t status
)
{
552f4: 4e56 0000 linkw %fp,#0
552f8: 2f0a movel %a2,%sp@-
/*
* This will flush blocked threads whether they were blocked on
* a send or receive.
*/
_Thread_queue_Flush(
552fa: 2f2e 0010 movel %fp@(16),%sp@-
552fe: 2f2e 000c movel %fp@(12),%sp@-
void _CORE_message_queue_Close(
CORE_message_queue_Control *the_message_queue,
Thread_queue_Flush_callout remote_extract_callout,
uint32_t status
)
{
55302: 246e 0008 moveal %fp@(8),%a2
/*
* This will flush blocked threads whether they were blocked on
* a send or receive.
*/
_Thread_queue_Flush(
55306: 2f0a movel %a2,%sp@-
55308: 4eb9 0005 0118 jsr 50118 <_Thread_queue_Flush>
* This removes all messages from the pending message queue. Since
* we just flushed all waiting threads, we don't have to worry about
* the flush satisfying any blocked senders as a side-effect.
*/
if ( the_message_queue->number_of_pending_messages != 0 )
5530e: 4fef 000c lea %sp@(12),%sp
55312: 4aaa 0048 tstl %a2@(72)
55316: 6612 bnes 5532a <_CORE_message_queue_Close+0x36>
(void) _CORE_message_queue_Flush_support( the_message_queue );
(void) _Workspace_Free( the_message_queue->message_buffers );
55318: 2d6a 005c 0008 movel %a2@(92),%fp@(8)
}
5531e: 246e fffc moveal %fp@(-4),%a2
55322: 4e5e unlk %fp
*/
if ( the_message_queue->number_of_pending_messages != 0 )
(void) _CORE_message_queue_Flush_support( the_message_queue );
(void) _Workspace_Free( the_message_queue->message_buffers );
55324: 4ef9 0005 09ec jmp 509ec <_Workspace_Free>
* we just flushed all waiting threads, we don't have to worry about
* the flush satisfying any blocked senders as a side-effect.
*/
if ( the_message_queue->number_of_pending_messages != 0 )
(void) _CORE_message_queue_Flush_support( the_message_queue );
5532a: 2f0a movel %a2,%sp@-
5532c: 4eb9 0005 5348 jsr 55348 <_CORE_message_queue_Flush_support>
(void) _Workspace_Free( the_message_queue->message_buffers );
55332: 2d6a 005c 0008 movel %a2@(92),%fp@(8)
* we just flushed all waiting threads, we don't have to worry about
* the flush satisfying any blocked senders as a side-effect.
*/
if ( the_message_queue->number_of_pending_messages != 0 )
(void) _CORE_message_queue_Flush_support( the_message_queue );
55338: 588f addql #4,%sp
(void) _Workspace_Free( the_message_queue->message_buffers );
}
5533a: 246e fffc moveal %fp@(-4),%a2
5533e: 4e5e unlk %fp
*/
if ( the_message_queue->number_of_pending_messages != 0 )
(void) _CORE_message_queue_Flush_support( the_message_queue );
(void) _Workspace_Free( the_message_queue->message_buffers );
55340: 4ef9 0005 09ec jmp 509ec <_Workspace_Free>
...
000507c0 <_CORE_message_queue_Initialize>:
/*
* Check if allocated_message_size is aligned to uintptr-size boundary.
* If not, it will increase allocated_message_size to multiplicity of pointer
* size.
*/
if (allocated_message_size & (sizeof(uintptr_t) - 1)) {
507c0: 7203 moveq #3,%d1
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Attributes *the_message_queue_attributes,
uint32_t maximum_pending_messages,
size_t maximum_message_size
)
{
507c2: 4e56 ffe4 linkw %fp,#-28
507c6: 202e 0014 movel %fp@(20),%d0
507ca: 48d7 04fc moveml %d2-%d7/%a2,%sp@
507ce: 246e 0008 moveal %fp@(8),%a2
507d2: 282e 0010 movel %fp@(16),%d4
/*
* Check if allocated_message_size is aligned to uintptr-size boundary.
* If not, it will increase allocated_message_size to multiplicity of pointer
* size.
*/
if (allocated_message_size & (sizeof(uintptr_t) - 1)) {
507d6: c280 andl %d0,%d1
)
{
size_t message_buffering_required = 0;
size_t allocated_message_size;
the_message_queue->maximum_pending_messages = maximum_pending_messages;
507d8: 2544 0044 movel %d4,%a2@(68)
the_message_queue->number_of_pending_messages = 0;
507dc: 42aa 0048 clrl %a2@(72)
the_message_queue->maximum_message_size = maximum_message_size;
507e0: 2540 004c movel %d0,%a2@(76)
/*
* Check if allocated_message_size is aligned to uintptr-size boundary.
* If not, it will increase allocated_message_size to multiplicity of pointer
* size.
*/
if (allocated_message_size & (sizeof(uintptr_t) - 1)) {
507e4: 4a81 tstl %d1
507e6: 6718 beqs 50800 <_CORE_message_queue_Initialize+0x40>
allocated_message_size += sizeof(uintptr_t);
507e8: 2200 movel %d0,%d1
507ea: 5881 addql #4,%d1
allocated_message_size &= ~(sizeof(uintptr_t) - 1);
507ec: 74fc moveq #-4,%d2
507ee: c282 andl %d2,%d1
/*
* Check for an overflow. It can occur while increasing allocated_message_size
* to multiplicity of uintptr_t above.
*/
if (allocated_message_size < maximum_message_size)
507f0: b280 cmpl %d0,%d1
507f2: 640e bccs 50802 <_CORE_message_queue_Initialize+0x42>
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
507f4: 4cee 04fc ffe4 moveml %fp@(-28),%d2-%d7/%a2
/*
* Check for an overflow. It can occur while increasing allocated_message_size
* to multiplicity of uintptr_t above.
*/
if (allocated_message_size < maximum_message_size)
return false;
507fa: 4200 clrb %d0
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
507fc: 4e5e unlk %fp
507fe: 4e75 rts
/*
* Check if allocated_message_size is aligned to uintptr-size boundary.
* If not, it will increase allocated_message_size to multiplicity of pointer
* size.
*/
if (allocated_message_size & (sizeof(uintptr_t) - 1)) {
50800: 2200 movel %d0,%d1
/*
* Calculate how much total memory is required for message buffering and
* check for overflow on the multiplication.
*/
if ( !size_t_mult32_with_overflow(
50802: 2a01 movel %d1,%d5
50804: 0685 0000 0010 addil #16,%d5
size_t a,
size_t b,
size_t *c
)
{
long long x = (long long)a*b;
5080a: 2f05 movel %d5,%sp@-
if ( x > SIZE_MAX )
5080c: 4286 clrl %d6
5080e: 7eff moveq #-1,%d7
size_t a,
size_t b,
size_t *c
)
{
long long x = (long long)a*b;
50810: 42a7 clrl %sp@-
50812: 2f04 movel %d4,%sp@-
50814: 42a7 clrl %sp@-
50816: 4eb9 0006 3584 jsr 63584 <__muldi3>
5081c: 4fef 0010 lea %sp@(16),%sp
50820: 2400 movel %d0,%d2
50822: 2601 movel %d1,%d3
if ( x > SIZE_MAX )
50824: 9e83 subl %d3,%d7
50826: 9d82 subxl %d2,%d6
50828: 6dca blts 507f4 <_CORE_message_queue_Initialize+0x34>
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
_Workspace_Allocate( message_buffering_required );
5082a: 2f01 movel %d1,%sp@-
5082c: 4eb9 0005 3694 jsr 53694 <_Workspace_Allocate>
if (the_message_queue->message_buffers == 0)
50832: 588f addql #4,%sp
return false;
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
50834: 2540 005c movel %d0,%a2@(92)
_Workspace_Allocate( message_buffering_required );
if (the_message_queue->message_buffers == 0)
50838: 67ba beqs 507f4 <_CORE_message_queue_Initialize+0x34><== NEVER TAKEN
/*
* Initialize the pool of inactive messages, pending messages,
* and set of waiting threads.
*/
_Chain_Initialize (
5083a: 2f05 movel %d5,%sp@-
*/
RTEMS_INLINE_ROUTINE bool _CORE_message_queue_Is_priority(
CORE_message_queue_Attributes *the_attribute
)
{
return
5083c: 7e01 moveq #1,%d7
5083e: 2f04 movel %d4,%sp@-
50840: 2f00 movel %d0,%sp@-
50842: 486a 0060 pea %a2@(96)
50846: 4eb9 0005 0758 jsr 50758 <_Chain_Initialize>
allocated_message_size + sizeof( CORE_message_queue_Buffer_control )
);
_Chain_Initialize_empty( &the_message_queue->Pending_messages );
_Thread_queue_Initialize(
5084c: 4878 0006 pea 6 <EXTENDSFDF>
50850: 206e 000c moveal %fp@(12),%a0
50854: be90 cmpl %a0@,%d7
50856: 57c0 seq %d0
50858: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b>
5085c: 49c0 extbl %d0
5085e: 4480 negl %d0
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
50860: 41ea 0054 lea %a2@(84),%a0
50864: 2f00 movel %d0,%sp@-
50866: 2548 0050 movel %a0,%a2@(80)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
5086a: 41ea 0050 lea %a2@(80),%a0
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
5086e: 42aa 0054 clrl %a2@(84)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
50872: 2548 0058 movel %a0,%a2@(88)
50876: 2f0a movel %a2,%sp@-
50878: 4eb9 0005 2e90 jsr 52e90 <_Thread_queue_Initialize>
5087e: 4fef 0020 lea %sp@(32),%sp
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
50882: 4cee 04fc ffe4 moveml %fp@(-28),%d2-%d7/%a2
THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
50888: 7001 moveq #1,%d0
}
5088a: 4e5e unlk %fp
...
00050890 <_CORE_message_queue_Seize>:
CORE_message_queue_Buffer_control *the_message;
Thread_Control *executing;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
_ISR_Disable( level );
50890: 203c 0000 0700 movel #1792,%d0
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
50896: 4e56 ffe4 linkw %fp,#-28
ISR_Level level;
CORE_message_queue_Buffer_control *the_message;
Thread_Control *executing;
executing = _Thread_Executing;
5089a: 2079 0006 91a6 moveal 691a6 <_Per_CPU_Information+0xe>,%a0
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
508a0: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@
508a4: 246e 0008 moveal %fp@(8),%a2
508a8: 282e 000c movel %fp@(12),%d4
508ac: 242e 0010 movel %fp@(16),%d2
508b0: 226e 0014 moveal %fp@(20),%a1
508b4: 2a2e 001c movel %fp@(28),%d5
508b8: 1c2e 001b moveb %fp@(27),%d6
ISR_Level level;
CORE_message_queue_Buffer_control *the_message;
Thread_Control *executing;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
508bc: 42a8 0034 clrl %a0@(52)
_ISR_Disable( level );
508c0: 40c1 movew %sr,%d1
508c2: 8081 orl %d1,%d0
508c4: 46c0 movew %d0,%sr
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
508c6: 260a movel %a2,%d3
508c8: 200a movel %a2,%d0
508ca: 0683 0000 0050 addil #80,%d3
508d0: 0680 0000 0054 addil #84,%d0
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
508d6: 266a 0050 moveal %a2@(80),%a3
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
508da: b08b cmpl %a3,%d0
508dc: 674a beqs 50928 <_CORE_message_queue_Seize+0x98>
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
508de: 2053 moveal %a3@,%a0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
508e0: 2143 0004 movel %d3,%a0@(4)
the_message = _CORE_message_queue_Get_pending_message( the_message_queue );
if ( the_message != NULL ) {
the_message_queue->number_of_pending_messages -= 1;
508e4: 53aa 0048 subql #1,%a2@(72)
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
508e8: 2548 0050 movel %a0,%a2@(80)
_ISR_Enable( level );
508ec: 46c1 movew %d1,%sr
*size_p = the_message->Contents.size;
508ee: 22ab 0008 movel %a3@(8),%a1@
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Free_message_buffer (
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message
)
{
_Chain_Append( &the_message_queue->Inactive_messages, &the_message->Node );
508f2: 45ea 0060 lea %a2@(96),%a2
_Thread_Executing->Wait.count =
508f6: 2079 0006 91a6 moveal 691a6 <_Per_CPU_Information+0xe>,%a0
508fc: 42a8 0024 clrl %a0@(36)
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
50900: 2f11 movel %a1@,%sp@-
50902: 486b 000c pea %a3@(12)
50906: 2f02 movel %d2,%sp@-
50908: 4eb9 0005 76b8 jsr 576b8 <memcpy>
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Free_message_buffer (
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message
)
{
_Chain_Append( &the_message_queue->Inactive_messages, &the_message->Node );
5090e: 4fef 000c lea %sp@(12),%sp
50912: 2d4a 0008 movel %a2,%fp@(8)
50916: 2d4b 000c movel %a3,%fp@(12)
executing->Wait.return_argument = size_p;
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
5091a: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3
50920: 4e5e unlk %fp
50922: 4ef9 0005 06e4 jmp 506e4 <_Chain_Append>
return;
}
#endif
}
if ( !wait ) {
50928: 4a06 tstb %d6
5092a: 6612 bnes 5093e <_CORE_message_queue_Seize+0xae>
_ISR_Enable( level );
5092c: 46c1 movew %d1,%sr
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
5092e: 7004 moveq #4,%d0
executing->Wait.return_argument = size_p;
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
50930: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3
#endif
}
if ( !wait ) {
_ISR_Enable( level );
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
50936: 2140 0034 movel %d0,%a0@(52)
executing->Wait.return_argument = size_p;
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
5093a: 4e5e unlk %fp
5093c: 4e75 rts
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
5093e: 7001 moveq #1,%d0
50940: 2540 0030 movel %d0,%a2@(48)
}
_Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue );
executing->Wait.queue = &the_message_queue->Wait_queue;
executing->Wait.id = id;
executing->Wait.return_argument_second.mutable_object = buffer;
50944: 2142 002c movel %d2,%a0@(44)
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
return;
}
_Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue );
executing->Wait.queue = &the_message_queue->Wait_queue;
50948: 214a 0044 movel %a2,%a0@(68)
executing->Wait.id = id;
5094c: 2144 0020 movel %d4,%a0@(32)
executing->Wait.return_argument_second.mutable_object = buffer;
executing->Wait.return_argument = size_p;
50950: 2149 0028 movel %a1,%a0@(40)
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
50954: 46c1 movew %d1,%sr
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
50956: 2d45 000c movel %d5,%fp@(12)
5095a: 203c 0005 2f90 movel #339856,%d0
50960: 2d4a 0008 movel %a2,%fp@(8)
}
50964: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3
executing->Wait.return_argument_second.mutable_object = buffer;
executing->Wait.return_argument = size_p;
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
5096a: 2d40 0010 movel %d0,%fp@(16)
}
5096e: 4e5e unlk %fp
executing->Wait.return_argument_second.mutable_object = buffer;
executing->Wait.return_argument = size_p;
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
50970: 4ef9 0005 2bc0 jmp 52bc0 <_Thread_queue_Enqueue_with_handler>
...
000481ac <_CORE_mutex_Seize>:
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
481ac: 4e56 0000 linkw %fp,#0
* This routine returns true if thread dispatch indicates
* that we are in a critical section.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Dispatch_in_critical_section(void)
{
if ( _Thread_Dispatch_disable_level == 0 )
481b0: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
481b6: 2f0a movel %a2,%sp@-
481b8: 246e 0008 moveal %fp@(8),%a2
481bc: 2f02 movel %d2,%sp@-
481be: 142e 0013 moveb %fp@(19),%d2
481c2: 4a80 tstl %d0
481c4: 6768 beqs 4822e <_CORE_mutex_Seize+0x82>
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
481c6: 4a02 tstb %d2
481c8: 6700 0098 beqw 48262 <_CORE_mutex_Seize+0xb6>
481cc: 7001 moveq #1,%d0
481ce: b0b9 0005 fb6c cmpl 5fb6c <_System_state_Current>,%d0
481d4: 6500 00b2 bcsw 48288 <_CORE_mutex_Seize+0xdc>
481d8: 486e 0018 pea %fp@(24)
481dc: 2f0a movel %a2,%sp@-
481de: 4eb9 0004 c5ac jsr 4c5ac <_CORE_mutex_Seize_interrupt_trylock>
481e4: 508f addql #8,%sp
481e6: 4a80 tstl %d0
481e8: 6738 beqs 48222 <_CORE_mutex_Seize+0x76> <== ALWAYS TAKEN
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
481ea: 7001 moveq #1,%d0
481ec: 2079 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a0
481f2: 2540 0030 movel %d0,%a2@(48)
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
481f6: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
++level;
481fc: 5280 addql #1,%d0
481fe: 216e 000c 0020 movel %fp@(12),%a0@(32)
48204: 214a 0044 movel %a2,%a0@(68)
_Thread_Dispatch_disable_level = level;
48208: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
4820e: 202e 0018 movel %fp@(24),%d0
48212: 46c0 movew %d0,%sr
48214: 2f2e 0014 movel %fp@(20),%sp@-
48218: 2f0a movel %a2,%sp@-
4821a: 4eb9 0004 8114 jsr 48114 <_CORE_mutex_Seize_interrupt_blocking>
48220: 508f addql #8,%sp
}
48222: 242e fff8 movel %fp@(-8),%d2
48226: 246e fffc moveal %fp@(-4),%a2
4822a: 4e5e unlk %fp
4822c: 4e75 rts
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
4822e: 486e 0018 pea %fp@(24)
48232: 2f0a movel %a2,%sp@-
48234: 4eb9 0004 c5ac jsr 4c5ac <_CORE_mutex_Seize_interrupt_trylock>
4823a: 508f addql #8,%sp
4823c: 4a80 tstl %d0
4823e: 67e2 beqs 48222 <_CORE_mutex_Seize+0x76>
48240: 4a02 tstb %d2
48242: 66a6 bnes 481ea <_CORE_mutex_Seize+0x3e>
48244: 202e 0018 movel %fp@(24),%d0
48248: 46c0 movew %d0,%sr
4824a: 2079 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a0
48250: 7001 moveq #1,%d0
48252: 2140 0034 movel %d0,%a0@(52)
}
48256: 242e fff8 movel %fp@(-8),%d2
4825a: 246e fffc moveal %fp@(-4),%a2
4825e: 4e5e unlk %fp
48260: 4e75 rts
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
48262: 486e 0018 pea %fp@(24)
48266: 2f0a movel %a2,%sp@-
48268: 4eb9 0004 c5ac jsr 4c5ac <_CORE_mutex_Seize_interrupt_trylock>
4826e: 508f addql #8,%sp
48270: 4a80 tstl %d0
48272: 67ae beqs 48222 <_CORE_mutex_Seize+0x76> <== ALWAYS TAKEN
48274: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED
48278: 46c0 movew %d0,%sr <== NOT EXECUTED
4827a: 2079 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a0 <== NOT EXECUTED
48280: 7001 moveq #1,%d0 <== NOT EXECUTED
48282: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
48286: 60ce bras 48256 <_CORE_mutex_Seize+0xaa> <== NOT EXECUTED
48288: 4878 0012 pea 12 <INVALID_OPERATION+0x2>
4828c: 42a7 clrl %sp@-
4828e: 42a7 clrl %sp@-
48290: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred>
...
000483ec <_CORE_semaphore_Surrender>:
CORE_semaphore_Status _CORE_semaphore_Surrender(
CORE_semaphore_Control *the_semaphore,
Objects_Id id,
CORE_semaphore_API_mp_support_callout api_semaphore_mp_support
)
{
483ec: 4e56 0000 linkw %fp,#0
483f0: 2f0a movel %a2,%sp@-
483f2: 246e 0008 moveal %fp@(8),%a2
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) {
483f6: 2f0a movel %a2,%sp@-
483f8: 4eb9 0004 9fb0 jsr 49fb0 <_Thread_queue_Dequeue>
483fe: 588f addql #4,%sp
48400: 4a80 tstl %d0
48402: 670a beqs 4840e <_CORE_semaphore_Surrender+0x22>
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
48404: 246e fffc moveal %fp@(-4),%a2
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
48408: 4280 clrl %d0
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
4840a: 4e5e unlk %fp
4840c: 4e75 rts
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_semaphore_mp_support) ( the_thread, id );
#endif
} else {
_ISR_Disable( level );
4840e: 303c 0700 movew #1792,%d0
48412: 40c1 movew %sr,%d1
48414: 8081 orl %d1,%d0
48416: 46c0 movew %d0,%sr
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
48418: 202a 0048 movel %a2@(72),%d0
4841c: b0aa 0040 cmpl %a2@(64),%d0
48420: 6412 bccs 48434 <_CORE_semaphore_Surrender+0x48> <== NEVER TAKEN
the_semaphore->count += 1;
48422: 5280 addql #1,%d0
48424: 2540 0048 movel %d0,%a2@(72)
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
48428: 4280 clrl %d0
_ISR_Disable( level );
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
the_semaphore->count += 1;
else
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
4842a: 46c1 movew %d1,%sr
}
return status;
}
4842c: 246e fffc moveal %fp@(-4),%a2
48430: 4e5e unlk %fp
48432: 4e75 rts
} else {
_ISR_Disable( level );
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
the_semaphore->count += 1;
else
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
48434: 7004 moveq #4,%d0 <== NOT EXECUTED
_ISR_Enable( level );
48436: 46c1 movew %d1,%sr <== NOT EXECUTED
48438: 60f2 bras 4842c <_CORE_semaphore_Surrender+0x40> <== NOT EXECUTED
...
00047fb0 <_Chain_Initialize>:
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
47fb0: 4e56 ffec linkw %fp,#-20
47fb4: 202e 0010 movel %fp@(16),%d0
47fb8: 48d7 043c moveml %d2-%d5/%a2,%sp@
47fbc: 246e 0008 moveal %fp@(8),%a2
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
47fc0: 2600 movel %d0,%d3
size_t node_size
)
{
size_t count = number_nodes;
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
47fc2: 280a movel %a2,%d4
47fc4: 5884 addql #4,%d4
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
47fc6: 5383 subql #1,%d3
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
47fc8: 242e 000c movel %fp@(12),%d2
47fcc: 222e 0014 movel %fp@(20),%d1
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
47fd0: 42aa 0004 clrl %a2@(4)
while ( count-- ) {
47fd4: 4a80 tstl %d0
47fd6: 672e beqs 48006 <_Chain_Initialize+0x56> <== NEVER TAKEN
47fd8: 2003 movel %d3,%d0
47fda: 2042 moveal %d2,%a0
47fdc: 224a moveal %a2,%a1
current->next = next;
47fde: 2288 movel %a0,%a1@
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
47fe0: 5380 subql #1,%d0
47fe2: 7aff moveq #-1,%d5
current->next = next;
next->previous = current;
47fe4: 2149 0004 movel %a1,%a0@(4)
47fe8: 2248 moveal %a0,%a1
current = next;
next = (Chain_Node *)
47fea: d1c1 addal %d1,%a0
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
47fec: ba80 cmpl %d0,%d5
47fee: 66ee bnes 47fde <_Chain_Initialize+0x2e>
#include <rtems/system.h>
#include <rtems/score/address.h>
#include <rtems/score/chain.h>
#include <rtems/score/isr.h>
void _Chain_Initialize(
47ff0: 4c03 1800 mulsl %d3,%d1
47ff4: 2042 moveal %d2,%a0
47ff6: d1c1 addal %d1,%a0
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
47ff8: 2084 movel %d4,%a0@
tail->previous = current;
47ffa: 2548 0008 movel %a0,%a2@(8)
}
47ffe: 4cd7 043c moveml %sp@,%d2-%d5/%a2
48002: 4e5e unlk %fp
48004: 4e75 rts
)
{
size_t count = number_nodes;
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *current = head;
48006: 204a moveal %a2,%a0 <== NOT EXECUTED
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
48008: 2084 movel %d4,%a0@ <== NOT EXECUTED
tail->previous = current;
4800a: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED
}
4800e: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED
48012: 4e5e unlk %fp <== NOT EXECUTED
...
00046fa8 <_Event_Surrender>:
rtems_event_set seized_events;
rtems_option option_set;
option_set = the_thread->Wait.option;
_ISR_Disable( level );
46fa8: 223c 0000 0700 movel #1792,%d1
rtems_event_set event_in,
Event_Control *event,
Thread_blocking_operation_States *sync_state,
States_Control wait_state
)
{
46fae: 4e56 ffe4 linkw %fp,#-28
46fb2: 202e 000c movel %fp@(12),%d0
46fb6: 48d7 04fc moveml %d2-%d7/%a2,%sp@
46fba: 246e 0008 moveal %fp@(8),%a2
46fbe: 206e 0010 moveal %fp@(16),%a0
rtems_event_set pending_events;
rtems_event_set event_condition;
rtems_event_set seized_events;
rtems_option option_set;
option_set = the_thread->Wait.option;
46fc2: 2a2a 0030 movel %a2@(48),%d5
rtems_event_set event_in,
Event_Control *event,
Thread_blocking_operation_States *sync_state,
States_Control wait_state
)
{
46fc6: 226e 0014 moveal %fp@(20),%a1
46fca: 282e 0018 movel %fp@(24),%d4
rtems_event_set seized_events;
rtems_option option_set;
option_set = the_thread->Wait.option;
_ISR_Disable( level );
46fce: 40c3 movew %sr,%d3
46fd0: 8283 orl %d3,%d1
46fd2: 46c1 movew %d1,%sr
RTEMS_INLINE_ROUTINE void _Event_sets_Post(
rtems_event_set the_new_events,
rtems_event_set *the_event_set
)
{
*the_event_set |= the_new_events;
46fd4: 8090 orl %a0@,%d0
46fd6: 2080 movel %d0,%a0@
_Event_sets_Post( event_in, &event->pending_events );
pending_events = event->pending_events;
event_condition = the_thread->Wait.count;
46fd8: 242a 0024 movel %a2@(36),%d2
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(
rtems_event_set the_event_set,
rtems_event_set the_event_condition
)
{
return ( the_event_set & the_event_condition );
46fdc: 2200 movel %d0,%d1
46fde: c282 andl %d2,%d1
seized_events = _Event_sets_Get( pending_events, event_condition );
/*
* No events were seized in this operation
*/
if ( _Event_sets_Is_empty( seized_events ) ) {
46fe0: 6700 0090 beqw 47072 <_Event_Surrender+0xca>
/*
* If we are in an ISR and sending to the current thread, then
* we have a critical section issue to deal with.
*/
if ( _ISR_Is_in_progress() &&
46fe4: 4ab9 0005 fb78 tstl 5fb78 <_Per_CPU_Information+0x8>
46fea: 6708 beqs 46ff4 <_Event_Surrender+0x4c>
46fec: b5f9 0005 fb7e cmpal 5fb7e <_Per_CPU_Information+0xe>,%a2
46ff2: 6754 beqs 47048 <_Event_Surrender+0xa0> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _States_Are_set (
States_Control the_states,
States_Control mask
)
{
return ( (the_states & mask) != STATES_READY);
46ff4: c8aa 0010 andl %a2@(16),%d4
}
/*
* Otherwise, this is a normal send to another thread
*/
if ( _States_Are_set( the_thread->current_state, wait_state ) ) {
46ff8: 6778 beqs 47072 <_Event_Surrender+0xca>
if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
46ffa: b282 cmpl %d2,%d1
46ffc: 6706 beqs 47004 <_Event_Surrender+0x5c>
46ffe: 0805 0001 btst #1,%d5
47002: 676e beqs 47072 <_Event_Surrender+0xca> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(
rtems_event_set the_event_set,
rtems_event_set the_mask
)
{
return ( the_event_set & ~(the_mask) );
47004: 2401 movel %d1,%d2
47006: 4682 notl %d2
47008: c480 andl %d0,%d2
4700a: 2082 movel %d2,%a0@
event->pending_events = _Event_sets_Clear(
pending_events,
seized_events
);
the_thread->Wait.count = 0;
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
4700c: 206a 0028 moveal %a2@(40),%a0
if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
event->pending_events = _Event_sets_Clear(
pending_events,
seized_events
);
the_thread->Wait.count = 0;
47010: 42aa 0024 clrl %a2@(36)
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
47014: 2081 movel %d1,%a0@
_ISR_Flash( level );
47016: 203c 0000 0700 movel #1792,%d0
4701c: 46c3 movew %d3,%sr
4701e: 8083 orl %d3,%d0
47020: 46c0 movew %d0,%sr
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
47022: 7002 moveq #2,%d0
47024: b0aa 0050 cmpl %a2@(80),%d0
47028: 6754 beqs 4707e <_Event_Surrender+0xd6>
_ISR_Enable( level );
4702a: 46c3 movew %d3,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4702c: 2d4a 0008 movel %a2,%fp@(8)
47030: 2e3c 1007 fff8 movel #268959736,%d7
47036: 2d47 000c movel %d7,%fp@(12)
}
return;
}
}
_ISR_Enable( level );
}
4703a: 4cee 04fc ffe4 moveml %fp@(-28),%d2-%d7/%a2
47040: 4e5e unlk %fp
47042: 4ef9 0004 9844 jmp 49844 <_Thread_Clear_state>
* If we are in an ISR and sending to the current thread, then
* we have a critical section issue to deal with.
*/
if ( _ISR_Is_in_progress() &&
_Thread_Is_executing( the_thread ) &&
((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
47048: 2c11 movel %a1@,%d6
/*
* If we are in an ISR and sending to the current thread, then
* we have a critical section issue to deal with.
*/
if ( _ISR_Is_in_progress() &&
_Thread_Is_executing( the_thread ) &&
4704a: 7e01 moveq #1,%d7
((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
4704c: 5386 subql #1,%d6
/*
* If we are in an ISR and sending to the current thread, then
* we have a critical section issue to deal with.
*/
if ( _ISR_Is_in_progress() &&
_Thread_Is_executing( the_thread ) &&
4704e: be86 cmpl %d6,%d7
47050: 65a2 bcss 46ff4 <_Event_Surrender+0x4c> <== NEVER TAKEN
((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
(*sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
47052: b282 cmpl %d2,%d1
47054: 6706 beqs 4705c <_Event_Surrender+0xb4>
47056: 0805 0001 btst #1,%d5
4705a: 6716 beqs 47072 <_Event_Surrender+0xca> <== NEVER TAKEN
4705c: 2401 movel %d1,%d2
4705e: 4682 notl %d2
47060: c480 andl %d0,%d2
pending_events,
seized_events
);
the_thread->Wait.count = 0;
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
*sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
47062: 7003 moveq #3,%d0
47064: 2082 movel %d2,%a0@
event->pending_events = _Event_sets_Clear(
pending_events,
seized_events
);
the_thread->Wait.count = 0;
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
47066: 206a 0028 moveal %a2@(40),%a0
if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
event->pending_events = _Event_sets_Clear(
pending_events,
seized_events
);
the_thread->Wait.count = 0;
4706a: 42aa 0024 clrl %a2@(36)
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
4706e: 2081 movel %d1,%a0@
*sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
47070: 2280 movel %d0,%a1@
_Thread_Unblock( the_thread );
}
return;
}
}
_ISR_Enable( level );
47072: 46c3 movew %d3,%sr
}
47074: 4cee 04fc ffe4 moveml %fp@(-28),%d2-%d7/%a2
4707a: 4e5e unlk %fp
4707c: 4e75 rts
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4707e: 7003 moveq #3,%d0
47080: 2540 0050 movel %d0,%a2@(80)
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
_Thread_Unblock( the_thread );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
47084: 46c3 movew %d3,%sr
(void) _Watchdog_Remove( &the_thread->Timer );
47086: 486a 0048 pea %a2@(72)
4708a: 2e3c 1007 fff8 movel #268959736,%d7
47090: 4eb9 0004 a9d4 jsr 4a9d4 <_Watchdog_Remove>
47096: 588f addql #4,%sp
47098: 2d47 000c movel %d7,%fp@(12)
4709c: 2d4a 0008 movel %a2,%fp@(8)
}
return;
}
}
_ISR_Enable( level );
}
470a0: 4cee 04fc ffe4 moveml %fp@(-28),%d2-%d7/%a2
470a6: 4e5e unlk %fp
470a8: 4ef9 0004 9844 jmp 49844 <_Thread_Clear_state>
...
000470b0 <_Event_Timeout>:
void _Event_Timeout(
Objects_Id id,
void *arg
)
{
470b0: 4e56 fffc linkw %fp,#-4
470b4: 2f02 movel %d2,%sp@-
ISR_Level level;
Thread_blocking_operation_States *sync_state;
sync_state = arg;
the_thread = _Thread_Get( id, &location );
470b6: 486e fffc pea %fp@(-4)
470ba: 2f2e 0008 movel %fp@(8),%sp@-
470be: 4eb9 0004 9c64 jsr 49c64 <_Thread_Get>
switch ( location ) {
470c4: 508f addql #8,%sp
470c6: 4aae fffc tstl %fp@(-4)
470ca: 6642 bnes 4710e <_Event_Timeout+0x5e> <== NEVER TAKEN
*
* If it is not satisfied, then it is "nothing happened" and
* this is the "timeout" transition. After a request is satisfied,
* a timeout is not allowed to occur.
*/
_ISR_Disable( level );
470cc: 223c 0000 0700 movel #1792,%d1
470d2: 40c2 movew %sr,%d2
470d4: 8282 orl %d2,%d1
470d6: 46c1 movew %d1,%sr
_ISR_Enable( level );
return;
}
#endif
the_thread->Wait.count = 0;
470d8: 2040 moveal %d0,%a0
470da: 42a8 0024 clrl %a0@(36)
if ( _Thread_Is_executing( the_thread ) ) {
470de: b0b9 0005 fb7e cmpl 5fb7e <_Per_CPU_Information+0xe>,%d0
470e4: 6730 beqs 47116 <_Event_Timeout+0x66>
if ( *sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
*sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
470e6: 7206 moveq #6,%d1
470e8: 2040 moveal %d0,%a0
470ea: 2141 0034 movel %d1,%a0@(52)
_ISR_Enable( level );
470ee: 46c2 movew %d2,%sr
470f0: 2f3c 1007 fff8 movel #268959736,%sp@-
470f6: 2f00 movel %d0,%sp@-
470f8: 4eb9 0004 9844 jsr 49844 <_Thread_Clear_state>
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
--level;
_Thread_Dispatch_disable_level = level;
470fe: 508f addql #8,%sp
*
* This routine decrements the thread dispatch level.
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
47100: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
--level;
47106: 5380 subql #1,%d0
_Thread_Dispatch_disable_level = level;
47108: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
case OBJECTS_REMOTE: /* impossible */
#endif
case OBJECTS_ERROR:
break;
}
}
4710e: 242e fff8 movel %fp@(-8),%d2
47112: 4e5e unlk %fp
47114: 4e75 rts
}
#endif
the_thread->Wait.count = 0;
if ( _Thread_Is_executing( the_thread ) ) {
if ( *sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
47116: 206e 000c moveal %fp@(12),%a0
4711a: 7201 moveq #1,%d1
4711c: b290 cmpl %a0@,%d1
4711e: 66c6 bnes 470e6 <_Event_Timeout+0x36>
*sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
47120: 7202 moveq #2,%d1
47122: 2081 movel %d1,%a0@
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
47124: 7206 moveq #6,%d1
47126: 2040 moveal %d0,%a0
47128: 2141 0034 movel %d1,%a0@(52)
_ISR_Enable( level );
4712c: 46c2 movew %d2,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4712e: 2f3c 1007 fff8 movel #268959736,%sp@-
47134: 2f00 movel %d0,%sp@-
47136: 4eb9 0004 9844 jsr 49844 <_Thread_Clear_state>
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
--level;
_Thread_Dispatch_disable_level = level;
4713c: 508f addql #8,%sp
*
* This routine decrements the thread dispatch level.
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
4713e: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
--level;
47144: 5380 subql #1,%d0
_Thread_Dispatch_disable_level = level;
47146: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
4714c: 60c0 bras 4710e <_Event_Timeout+0x5e>
...
0004c6b0 <_Heap_Allocate_aligned_with_boundary>:
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4c6b0: 4e56 ffc4 linkw %fp,#-60
4c6b4: 226e 000c moveal %fp@(12),%a1
4c6b8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4c6bc: 246e 0008 moveal %fp@(8),%a2
Heap_Statistics *const stats = &heap->stats;
uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
4c6c0: 2c09 movel %a1,%d6
4c6c2: 5886 addql #4,%d6
- HEAP_ALLOC_BONUS;
uintptr_t const page_size = heap->page_size;
4c6c4: 202a 0010 movel %a2@(16),%d0
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4c6c8: 262e 0010 movel %fp@(16),%d3
4c6cc: 2a2e 0014 movel %fp@(20),%d5
Heap_Statistics *const stats = &heap->stats;
uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
- HEAP_ALLOC_BONUS;
uintptr_t const page_size = heap->page_size;
4c6d0: 2d40 fffc movel %d0,%fp@(-4)
Heap_Block *block = NULL;
uintptr_t alloc_begin = 0;
uint32_t search_count = 0;
bool search_again = false;
if ( block_size_floor < alloc_size ) {
4c6d4: bc89 cmpl %a1,%d6
4c6d6: 6500 0164 bcsw 4c83c <_Heap_Allocate_aligned_with_boundary+0x18c>
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
4c6da: 4a85 tstl %d5
4c6dc: 670c beqs 4c6ea <_Heap_Allocate_aligned_with_boundary+0x3a>
if ( boundary < alloc_size ) {
4c6de: ba89 cmpl %a1,%d5
4c6e0: 6500 015a bcsw 4c83c <_Heap_Allocate_aligned_with_boundary+0x18c>
return NULL;
}
if ( alignment == 0 ) {
4c6e4: 4a83 tstl %d3
4c6e6: 6602 bnes 4c6ea <_Heap_Allocate_aligned_with_boundary+0x3a>
alignment = page_size;
4c6e8: 2600 movel %d0,%d3
return &heap->free_list;
}
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{
return _Heap_Free_list_head(heap)->next;
4c6ea: 206a 0008 moveal %a2@(8),%a0
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4c6ee: 4284 clrl %d4
4c6f0: b1ca cmpal %a2,%a0
4c6f2: 6732 beqs 4c726 <_Heap_Allocate_aligned_with_boundary+0x76>
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const block_end = block_begin + block_size;
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
4c6f4: 222e fffc movel %fp@(-4),%d1
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c6f8: 7404 moveq #4,%d2
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const block_end = block_begin + block_size;
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
4c6fa: 5e81 addql #7,%d1
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c6fc: 9489 subl %a1,%d2
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const block_end = block_begin + block_size;
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
4c6fe: 2d41 fff8 movel %d1,%fp@(-8)
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c702: 2d42 fff4 movel %d2,%fp@(-12)
/*
* The HEAP_PREV_BLOCK_USED flag is always set in the block size_and_flag
* field. Thus the value is about one unit larger than the real block
* size. The greater than operator takes this into account.
*/
if ( block->size_and_flag > block_size_floor ) {
4c706: 2028 0004 movel %a0@(4),%d0
4c70a: b086 cmpl %d6,%d0
4c70c: 632e blss 4c73c <_Heap_Allocate_aligned_with_boundary+0x8c>
if ( alignment == 0 ) {
4c70e: 4a83 tstl %d3
4c710: 6636 bnes 4c748 <_Heap_Allocate_aligned_with_boundary+0x98>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
4c712: 2408 movel %a0,%d2
4c714: 5082 addql #8,%d2
);
}
}
/* Statistics */
++search_count;
4c716: 5284 addql #1,%d4
if ( alloc_begin != 0 ) {
4c718: 4a82 tstl %d2
4c71a: 6600 00f4 bnew 4c810 <_Heap_Allocate_aligned_with_boundary+0x160>
break;
}
block = block->next;
4c71e: 2068 0008 moveal %a0@(8),%a0
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4c722: b1ca cmpal %a2,%a0
4c724: 66e0 bnes 4c706 <_Heap_Allocate_aligned_with_boundary+0x56>
);
}
}
/* Statistics */
++search_count;
4c726: 4280 clrl %d0
boundary
);
}
/* Statistics */
if ( stats->max_search < search_count ) {
4c728: b8aa 0044 cmpl %a2@(68),%d4
4c72c: 6304 blss 4c732 <_Heap_Allocate_aligned_with_boundary+0x82>
stats->max_search = search_count;
4c72e: 2544 0044 movel %d4,%a2@(68)
}
return (void *) alloc_begin;
}
4c732: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5
4c738: 4e5e unlk %fp
4c73a: 4e75 rts
if ( alloc_begin != 0 ) {
break;
}
block = block->next;
4c73c: 2068 0008 moveal %a0@(8),%a0
);
}
}
/* Statistics */
++search_count;
4c740: 5284 addql #1,%d4
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4c742: b1ca cmpal %a2,%a0
4c744: 66c0 bnes 4c706 <_Heap_Allocate_aligned_with_boundary+0x56>
4c746: 60de bras 4c726 <_Heap_Allocate_aligned_with_boundary+0x76>
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4c748: 7efe moveq #-2,%d7
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
4c74a: 49e8 0008 lea %a0@(8),%a4
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4c74e: c087 andl %d7,%d0
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c750: 266a 0014 moveal %a2@(20),%a3
uintptr_t const page_size = heap->page_size;
uintptr_t const min_block_size = heap->min_block_size;
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const block_end = block_begin + block_size;
4c754: d088 addl %a0,%d0
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
4c756: 222e fff8 movel %fp@(-8),%d1
4c75a: 928b subl %a3,%d1
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
uintptr_t alloc_begin = alloc_end - alloc_size;
4c75c: 242e fff4 movel %fp@(-12),%d2
4c760: d480 addl %d0,%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c762: 2e02 movel %d2,%d7
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const block_end = block_begin + block_size;
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
4c764: d081 addl %d1,%d0
4c766: 4c43 7001 remul %d3,%d1,%d7
4c76a: 9481 subl %d1,%d2
uintptr_t alloc_begin = alloc_end - alloc_size;
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
/* Ensure that the we have a valid new block at the end */
if ( alloc_begin > alloc_begin_ceiling ) {
4c76c: b480 cmpl %d0,%d2
4c76e: 630a blss 4c77a <_Heap_Allocate_aligned_with_boundary+0xca>
4c770: 2400 movel %d0,%d2
4c772: 4c43 2001 remul %d3,%d1,%d2
4c776: 2400 movel %d0,%d2
4c778: 9481 subl %d1,%d2
}
alloc_end = alloc_begin + alloc_size;
/* Ensure boundary constaint */
if ( boundary != 0 ) {
4c77a: 4a85 tstl %d5
4c77c: 6766 beqs 4c7e4 <_Heap_Allocate_aligned_with_boundary+0x134>
/* Ensure that the we have a valid new block at the end */
if ( alloc_begin > alloc_begin_ceiling ) {
alloc_begin = _Heap_Align_down( alloc_begin_ceiling, alignment );
}
alloc_end = alloc_begin + alloc_size;
4c77e: 2202 movel %d2,%d1
4c780: d289 addl %a1,%d1
/* Ensure boundary constaint */
if ( boundary != 0 ) {
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
4c782: 4bf4 9800 lea %a4@(00000000,%a1:l),%a5
4c786: 2001 movel %d1,%d0
4c788: 4c45 0007 remul %d5,%d7,%d0
4c78c: 2d4d ffec movel %a5,%fp@(-20)
4c790: 2a41 moveal %d1,%a5
4c792: 9bc7 subal %d7,%a5
uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
4c794: bbc2 cmpal %d2,%a5
4c796: 634c blss 4c7e4 <_Heap_Allocate_aligned_with_boundary+0x134>
4c798: bbc1 cmpal %d1,%a5
4c79a: 6448 bccs 4c7e4 <_Heap_Allocate_aligned_with_boundary+0x134>
if ( boundary_line < boundary_floor ) {
4c79c: bbee ffec cmpal %fp@(-20),%a5
4c7a0: 6500 008e bcsw 4c830 <_Heap_Allocate_aligned_with_boundary+0x180>
4c7a4: 200d movel %a5,%d0
4c7a6: 2a44 moveal %d4,%a5
4c7a8: 2e2e ffec movel %fp@(-20),%d7
return 0;
}
alloc_begin = boundary_line - alloc_size;
4c7ac: 9089 subl %a1,%d0
4c7ae: 2400 movel %d0,%d2
4c7b0: 4c43 2001 remul %d3,%d1,%d2
4c7b4: 2400 movel %d0,%d2
4c7b6: 9481 subl %d1,%d2
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4c7b8: 2202 movel %d2,%d1
4c7ba: d289 addl %a1,%d1
4c7bc: 2801 movel %d1,%d4
4c7be: 4c45 4000 remul %d5,%d0,%d4
4c7c2: 2801 movel %d1,%d4
4c7c4: 9880 subl %d0,%d4
4c7c6: 2004 movel %d4,%d0
/* Ensure boundary constaint */
if ( boundary != 0 ) {
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
4c7c8: b882 cmpl %d2,%d4
4c7ca: 6316 blss 4c7e2 <_Heap_Allocate_aligned_with_boundary+0x132>
4c7cc: b881 cmpl %d1,%d4
4c7ce: 6412 bccs 4c7e2 <_Heap_Allocate_aligned_with_boundary+0x132>
if ( boundary_line < boundary_floor ) {
4c7d0: b087 cmpl %d7,%d0
4c7d2: 64d8 bccs 4c7ac <_Heap_Allocate_aligned_with_boundary+0xfc><== ALWAYS TAKEN
4c7d4: 280d movel %a5,%d4 <== NOT EXECUTED
return 0;
4c7d6: 4282 clrl %d2 <== NOT EXECUTED
);
}
}
/* Statistics */
++search_count;
4c7d8: 5284 addql #1,%d4 <== NOT EXECUTED
if ( alloc_begin != 0 ) {
4c7da: 4a82 tstl %d2 <== NOT EXECUTED
4c7dc: 6700 ff40 beqw 4c71e <_Heap_Allocate_aligned_with_boundary+0x6e><== NOT EXECUTED
4c7e0: 602e bras 4c810 <_Heap_Allocate_aligned_with_boundary+0x160><== NOT EXECUTED
4c7e2: 280d movel %a5,%d4
boundary_line = _Heap_Align_down( alloc_end, boundary );
}
}
/* Ensure that the we have a valid new block at the beginning */
if ( alloc_begin >= alloc_begin_floor ) {
4c7e4: b48c cmpl %a4,%d2
4c7e6: 6548 bcss 4c830 <_Heap_Allocate_aligned_with_boundary+0x180>
4c7e8: 70f8 moveq #-8,%d0
4c7ea: 9088 subl %a0,%d0
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4c7ec: 2a40 moveal %d0,%a5
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c7ee: 2e02 movel %d2,%d7
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4c7f0: dbc2 addal %d2,%a5
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c7f2: 202e fffc movel %fp@(-4),%d0
4c7f6: 4c40 7001 remul %d0,%d1,%d7
uintptr_t const alloc_block_begin =
(uintptr_t) _Heap_Block_of_alloc_area( alloc_begin, page_size );
uintptr_t const free_size = alloc_block_begin - block_begin;
4c7fa: 9bc1 subal %d1,%a5
if ( free_size >= min_block_size || free_size == 0 ) {
4c7fc: bbcb cmpal %a3,%a5
4c7fe: 6400 ff16 bccw 4c716 <_Heap_Allocate_aligned_with_boundary+0x66>
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
if ( boundary_line < boundary_floor ) {
return 0;
4c802: 4a8d tstl %a5
4c804: 57c0 seq %d0
);
}
}
/* Statistics */
++search_count;
4c806: 5284 addql #1,%d4
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
if ( boundary_line < boundary_floor ) {
return 0;
4c808: 49c0 extbl %d0
4c80a: c480 andl %d0,%d2
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4c80c: 6700 ff10 beqw 4c71e <_Heap_Allocate_aligned_with_boundary+0x6e>
if ( alloc_begin != 0 ) {
/* Statistics */
++stats->allocs;
stats->searches += search_count;
block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
4c810: 2f09 movel %a1,%sp@-
search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
} while ( search_again );
if ( alloc_begin != 0 ) {
/* Statistics */
++stats->allocs;
4c812: 52aa 0048 addql #1,%a2@(72)
stats->searches += search_count;
4c816: d9aa 004c addl %d4,%a2@(76)
block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
4c81a: 2f02 movel %d2,%sp@-
4c81c: 2f08 movel %a0,%sp@-
4c81e: 2f0a movel %a2,%sp@-
4c820: 4eb9 0004 8800 jsr 48800 <_Heap_Block_allocate>
4c826: 4fef 0010 lea %sp@(16),%sp
4c82a: 2002 movel %d2,%d0
4c82c: 6000 fefa braw 4c728 <_Heap_Allocate_aligned_with_boundary+0x78>
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
if ( boundary_line < boundary_floor ) {
return 0;
4c830: 4282 clrl %d2
);
}
}
/* Statistics */
++search_count;
4c832: 5284 addql #1,%d4
if ( alloc_begin != 0 ) {
4c834: 4a82 tstl %d2
4c836: 6700 fee6 beqw 4c71e <_Heap_Allocate_aligned_with_boundary+0x6e>
4c83a: 60d4 bras 4c810 <_Heap_Allocate_aligned_with_boundary+0x160><== NOT EXECUTED
uint32_t search_count = 0;
bool search_again = false;
if ( block_size_floor < alloc_size ) {
/* Integer overflow occured */
return NULL;
4c83c: 4280 clrl %d0
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c83e: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5
4c844: 4e5e unlk %fp <== NOT EXECUTED
0004c848 <_Heap_Free>:
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
{
4c848: 4e56 ffe8 linkw %fp,#-24
4c84c: 206e 0008 moveal %fp@(8),%a0
4c850: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
4c854: 202e 000c movel %fp@(12),%d0
/*
* If NULL return true so a free on NULL is considered a valid release. This
* is a special case that could be handled by the in heap check how-ever that
* would result in false being returned which is wrong.
*/
if ( alloc_begin_ptr == NULL ) {
4c858: 6700 00ba beqw 4c914 <_Heap_Free+0xcc>
4c85c: 2240 moveal %d0,%a1
4c85e: 5189 subql #8,%a1
4c860: 4c68 0001 0010 remul %a0@(16),%d1,%d0
RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap(
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
4c866: 2028 0020 movel %a0@(32),%d0
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4c86a: 93c1 subal %d1,%a1
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4c86c: b089 cmpl %a1,%d0
4c86e: 6200 009a bhiw 4c90a <_Heap_Free+0xc2>
4c872: 2228 0024 movel %a0@(36),%d1
4c876: b289 cmpl %a1,%d1
4c878: 6500 0090 bcsw 4c90a <_Heap_Free+0xc2>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c87c: 2829 0004 movel %a1@(4),%d4
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4c880: 74fe moveq #-2,%d2
4c882: c484 andl %d4,%d2
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4c884: 45f1 2800 lea %a1@(00000000,%d2:l),%a2
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4c888: b5c0 cmpal %d0,%a2
4c88a: 657e bcss 4c90a <_Heap_Free+0xc2> <== NEVER TAKEN
4c88c: b5c1 cmpal %d1,%a2
4c88e: 627a bhis 4c90a <_Heap_Free+0xc2> <== NEVER TAKEN
4c890: 262a 0004 movel %a2@(4),%d3
return false;
}
_Heap_Protection_block_check( heap, next_block );
if ( !_Heap_Is_prev_used( next_block ) ) {
4c894: 0803 0000 btst #0,%d3
4c898: 6770 beqs 4c90a <_Heap_Free+0xc2> <== NEVER TAKEN
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4c89a: 7afe moveq #-2,%d5
4c89c: c685 andl %d5,%d3
return true;
}
next_block_size = _Heap_Block_size( next_block );
next_is_free = next_block != heap->last_block
&& !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
4c89e: b5c1 cmpal %d1,%a2
4c8a0: 6700 00b2 beqw 4c954 <_Heap_Free+0x10c>
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
4c8a4: 7a01 moveq #1,%d5
4c8a6: cab2 3804 andl %a2@(00000004,%d3:l),%d5
4c8aa: 6600 00a8 bnew 4c954 <_Heap_Free+0x10c>
if ( !_Heap_Is_prev_used( block ) ) {
4c8ae: 0804 0000 btst #0,%d4
4c8b2: 666a bnes 4c91e <_Heap_Free+0xd6>
if ( !_Heap_Protection_determine_block_free( heap, block ) ) {
return true;
}
next_block_size = _Heap_Block_size( next_block );
next_is_free = next_block != heap->last_block
4c8b4: 7a01 moveq #1,%d5
&& !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
if ( !_Heap_Is_prev_used( block ) ) {
uintptr_t const prev_size = block->prev_size;
4c8b6: 2811 movel %a1@,%d4
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4c8b8: 93c4 subal %d4,%a1
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4c8ba: b3c0 cmpal %d0,%a1
4c8bc: 654c bcss 4c90a <_Heap_Free+0xc2> <== NEVER TAKEN
4c8be: b3c1 cmpal %d1,%a1
4c8c0: 6248 bhis 4c90a <_Heap_Free+0xc2> <== NEVER TAKEN
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
4c8c2: 7001 moveq #1,%d0
4c8c4: c0a9 0004 andl %a1@(4),%d0
return( false );
}
/* As we always coalesce free blocks, the block that preceedes prev_block
must have been used. */
if ( !_Heap_Is_prev_used ( prev_block) ) {
4c8c8: 6740 beqs 4c90a <_Heap_Free+0xc2> <== NEVER TAKEN
_HAssert( false );
return( false );
}
if ( next_is_free ) { /* coalesce both */
4c8ca: 4a05 tstb %d5
4c8cc: 6700 00de beqw 4c9ac <_Heap_Free+0x164>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c8d0: 266a 0008 moveal %a2@(8),%a3
_HAssert( false );
return( false );
}
if ( next_is_free ) { /* coalesce both */
uintptr_t const size = block_size + prev_size + next_block_size;
4c8d4: d882 addl %d2,%d4
4c8d6: d684 addl %d4,%d3
_Heap_Free_list_remove( next_block );
stats->free_blocks -= 1;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c8d8: 7001 moveq #1,%d0
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c8da: 246a 000c moveal %a2@(12),%a2
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
4c8de: 254b 0008 movel %a3,%a2@(8)
if ( next_is_free ) { /* coalesce both */
uintptr_t const size = block_size + prev_size + next_block_size;
_Heap_Free_list_remove( next_block );
stats->free_blocks -= 1;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c8e2: 8083 orl %d3,%d0
next->prev = prev;
4c8e4: 274a 000c movel %a2,%a3@(12)
}
if ( next_is_free ) { /* coalesce both */
uintptr_t const size = block_size + prev_size + next_block_size;
_Heap_Free_list_remove( next_block );
stats->free_blocks -= 1;
4c8e8: 53a8 0038 subql #1,%a0@(56)
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
next_block = _Heap_Block_at( prev_block, size );
_HAssert(!_Heap_Is_prev_used( next_block));
next_block->prev_size = size;
4c8ec: 2383 3800 movel %d3,%a1@(00000000,%d3:l)
if ( next_is_free ) { /* coalesce both */
uintptr_t const size = block_size + prev_size + next_block_size;
_Heap_Free_list_remove( next_block );
stats->free_blocks -= 1;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c8f0: 2340 0004 movel %d0,%a1@(4)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c8f4: 53a8 0040 subql #1,%a0@(64)
++stats->frees;
4c8f8: 52a8 0050 addql #1,%a0@(80)
stats->free_size += block_size;
4c8fc: d5a8 0030 addl %d2,%a0@(48)
return( true );
4c900: 7001 moveq #1,%d0
}
4c902: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3
4c906: 4e5e unlk %fp
4c908: 4e75 rts
4c90a: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3
alloc_begin = (uintptr_t) alloc_begin_ptr;
block = _Heap_Block_of_alloc_area( alloc_begin, heap->page_size );
if ( !_Heap_Is_block_in_heap( heap, block ) ) {
return false;
4c90e: 4200 clrb %d0
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c910: 4e5e unlk %fp
4c912: 4e75 rts
4c914: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3
* If NULL return true so a free on NULL is considered a valid release. This
* is a special case that could be handled by the in heap check how-ever that
* would result in false being returned which is wrong.
*/
if ( alloc_begin_ptr == NULL ) {
return true;
4c918: 7001 moveq #1,%d0
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c91a: 4e5e unlk %fp
4c91c: 4e75 rts
4c91e: 266a 0008 moveal %a2@(8),%a3
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = size;
}
} else if ( next_is_free ) { /* coalesce next */
uintptr_t const size = block_size + next_block_size;
4c922: d682 addl %d2,%d3
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c924: 7001 moveq #1,%d0
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c926: 246a 000c moveal %a2@(12),%a2
next_block->prev_size = size;
}
} else if ( next_is_free ) { /* coalesce next */
uintptr_t const size = block_size + next_block_size;
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c92a: 8083 orl %d3,%d0
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
4c92c: 234b 0008 movel %a3,%a1@(8)
next_block = _Heap_Block_at( block, size );
next_block->prev_size = size;
4c930: 2383 3800 movel %d3,%a1@(00000000,%d3:l)
new_block->prev = prev;
4c934: 234a 000c movel %a2,%a1@(12)
next_block->prev_size = size;
}
} else if ( next_is_free ) { /* coalesce next */
uintptr_t const size = block_size + next_block_size;
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c938: 2340 0004 movel %d0,%a1@(4)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c93c: 7001 moveq #1,%d0
next->prev = new_block;
prev->next = new_block;
4c93e: 2549 0008 movel %a1,%a2@(8)
Heap_Block *prev = old_block->prev;
new_block->next = next;
new_block->prev = prev;
next->prev = new_block;
4c942: 2749 000c movel %a1,%a3@(12)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c946: 53a8 0040 subql #1,%a0@(64)
++stats->frees;
4c94a: 52a8 0050 addql #1,%a0@(80)
stats->free_size += block_size;
4c94e: d5a8 0030 addl %d2,%a0@(48)
4c952: 60ae bras 4c902 <_Heap_Free+0xba>
next_block_size = _Heap_Block_size( next_block );
next_is_free = next_block != heap->last_block
&& !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
if ( !_Heap_Is_prev_used( block ) ) {
4c954: 0804 0000 btst #0,%d4
4c958: 6606 bnes 4c960 <_Heap_Free+0x118>
if ( !_Heap_Protection_determine_block_free( heap, block ) ) {
return true;
}
next_block_size = _Heap_Block_size( next_block );
next_is_free = next_block != heap->last_block
4c95a: 4205 clrb %d5
4c95c: 6000 ff58 braw 4c8b6 <_Heap_Free+0x6e>
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
4c960: 2028 0038 movel %a0@(56),%d0
next_block->prev_size = size;
} else { /* no coalesce */
/* Add 'block' to the head of the free blocks list as it tends to
produce less fragmentation than adding to the tail. */
_Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4c964: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c966: 7afe moveq #-2,%d5
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
4c968: 5280 addql #1,%d0
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(
Heap_Block *block_before,
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
4c96a: 2668 0008 moveal %a0@(8),%a3
new_block->next = next;
new_block->prev = block_before;
4c96e: 2348 000c movel %a0,%a1@(12)
next_block->prev_size = size;
} else { /* no coalesce */
/* Add 'block' to the head of the free blocks list as it tends to
produce less fragmentation than adding to the tail. */
_Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4c972: 8282 orl %d2,%d1
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
4c974: 234b 0008 movel %a3,%a1@(8)
4c978: 2341 0004 movel %d1,%a1@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c97c: cbaa 0004 andl %d5,%a2@(4)
new_block->prev = block_before;
block_before->next = new_block;
next->prev = new_block;
4c980: 2749 000c movel %a1,%a3@(12)
next_block->prev_size = block_size;
4c984: 2482 movel %d2,%a2@
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
4c986: 2149 0008 movel %a1,%a0@(8)
/* Statistics */
++stats->free_blocks;
4c98a: 2140 0038 movel %d0,%a0@(56)
if ( stats->max_free_blocks < stats->free_blocks ) {
4c98e: b0a8 003c cmpl %a0@(60),%d0
4c992: 6300 ff60 blsw 4c8f4 <_Heap_Free+0xac>
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c996: 53a8 0040 subql #1,%a0@(64)
++stats->frees;
4c99a: 52a8 0050 addql #1,%a0@(80)
stats->free_size += block_size;
4c99e: d5a8 0030 addl %d2,%a0@(48)
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
if ( stats->max_free_blocks < stats->free_blocks ) {
stats->max_free_blocks = stats->free_blocks;
4c9a2: 2140 003c movel %d0,%a0@(60)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c9a6: 7001 moveq #1,%d0
4c9a8: 6000 ff58 braw 4c902 <_Heap_Free+0xba>
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
next_block = _Heap_Block_at( prev_block, size );
_HAssert(!_Heap_Is_prev_used( next_block));
next_block->prev_size = size;
} else { /* coalesce prev */
uintptr_t const size = block_size + prev_size;
4c9ac: d882 addl %d2,%d4
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c9ae: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c9b0: 7afe moveq #-2,%d5
next_block = _Heap_Block_at( prev_block, size );
_HAssert(!_Heap_Is_prev_used( next_block));
next_block->prev_size = size;
} else { /* coalesce prev */
uintptr_t const size = block_size + prev_size;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c9b2: 8284 orl %d4,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = size;
4c9b4: 2484 movel %d4,%a2@
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c9b6: 7001 moveq #1,%d0
next_block = _Heap_Block_at( prev_block, size );
_HAssert(!_Heap_Is_prev_used( next_block));
next_block->prev_size = size;
} else { /* coalesce prev */
uintptr_t const size = block_size + prev_size;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c9b8: 2341 0004 movel %d1,%a1@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c9bc: cbaa 0004 andl %d5,%a2@(4)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c9c0: 53a8 0040 subql #1,%a0@(64)
++stats->frees;
4c9c4: 52a8 0050 addql #1,%a0@(80)
stats->free_size += block_size;
4c9c8: d5a8 0030 addl %d2,%a0@(48)
4c9cc: 6000 ff34 braw 4c902 <_Heap_Free+0xba>
00051b08 <_Heap_Get_free_information>:
void _Heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
51b08: 4e56 fff0 linkw %fp,#-16
51b0c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
51b10: 266e 0008 moveal %fp@(8),%a3
51b14: 246e 000c moveal %fp@(12),%a2
return &heap->free_list;
}
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{
return _Heap_Free_list_head(heap)->next;
51b18: 206b 0008 moveal %a3@(8),%a0
Heap_Block *the_block;
Heap_Block *const tail = _Heap_Free_list_tail(the_heap);
info->number = 0;
51b1c: 4292 clrl %a2@
info->largest = 0;
51b1e: 42aa 0004 clrl %a2@(4)
info->total = 0;
51b22: 42aa 0008 clrl %a2@(8)
for(the_block = _Heap_Free_list_first(the_heap);
51b26: b1cb cmpal %a3,%a0
51b28: 6732 beqs 51b5c <_Heap_Get_free_information+0x54><== NEVER TAKEN
51b2a: 327c 0001 moveaw #1,%a1
51b2e: 4282 clrl %d2
51b30: 4281 clrl %d1
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
51b32: 70fe moveq #-2,%d0
51b34: 2609 movel %a1,%d3
51b36: 5283 addql #1,%d3
51b38: c0a8 0004 andl %a0@(4),%d0
/* As we always coalesce free blocks, prev block must have been used. */
_HAssert(_Heap_Is_prev_used(the_block));
info->number++;
info->total += the_size;
51b3c: d280 addl %d0,%d1
if ( info->largest < the_size )
51b3e: b480 cmpl %d0,%d2
51b40: 6404 bccs 51b46 <_Heap_Get_free_information+0x3e>
info->largest = the_size;
51b42: 2540 0004 movel %d0,%a2@(4)
info->largest = 0;
info->total = 0;
for(the_block = _Heap_Free_list_first(the_heap);
the_block != tail;
the_block = the_block->next)
51b46: 2068 0008 moveal %a0@(8),%a0
info->number = 0;
info->largest = 0;
info->total = 0;
for(the_block = _Heap_Free_list_first(the_heap);
51b4a: b1cb cmpal %a3,%a0
51b4c: 6708 beqs 51b56 <_Heap_Get_free_information+0x4e>
51b4e: 242a 0004 movel %a2@(4),%d2
51b52: 2243 moveal %d3,%a1
51b54: 60dc bras 51b32 <_Heap_Get_free_information+0x2a>
51b56: 2489 movel %a1,%a2@
51b58: 2541 0008 movel %d1,%a2@(8)
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
51b5c: 4cd7 0c0c moveml %sp@,%d2-%d3/%a2-%a3
51b60: 4e5e unlk %fp <== NOT EXECUTED
0004aa48 <_Heap_Greedy_allocate>:
Heap_Block *_Heap_Greedy_allocate(
Heap_Control *heap,
const uintptr_t *block_sizes,
size_t block_count
)
{
4aa48: 4e56 ffe8 linkw %fp,#-24
4aa4c: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
4aa50: 246e 0008 moveal %fp@(8),%a2
4aa54: 242e 0010 movel %fp@(16),%d2
Heap_Block *allocated_blocks = NULL;
Heap_Block *blocks = NULL;
Heap_Block *current;
size_t i;
for (i = 0; i < block_count; ++i) {
4aa58: 6700 00ca beqw 4ab24 <_Heap_Greedy_allocate+0xdc>
4aa5c: 2a6e 000c moveal %fp@(12),%a5
4aa60: 97cb subal %a3,%a3
const uintptr_t *block_sizes,
size_t block_count
)
{
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
Heap_Block *allocated_blocks = NULL;
4aa62: 99cc subal %a4,%a4
4aa64: 263c 0005 1610 movel #333328,%d3
* @brief See _Heap_Allocate_aligned_with_boundary() with alignment and
* boundary equals zero.
*/
RTEMS_INLINE_ROUTINE void *_Heap_Allocate( Heap_Control *heap, uintptr_t size )
{
return _Heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
4aa6a: 42a7 clrl %sp@-
4aa6c: 2043 moveal %d3,%a0
Heap_Block *blocks = NULL;
Heap_Block *current;
size_t i;
for (i = 0; i < block_count; ++i) {
4aa6e: 528b addql #1,%a3
4aa70: 42a7 clrl %sp@-
4aa72: 2f1d movel %a5@+,%sp@-
4aa74: 2f0a movel %a2,%sp@-
4aa76: 4e90 jsr %a0@
void *next = _Heap_Allocate( heap, block_sizes [i] );
if ( next != NULL ) {
4aa78: 4fef 0010 lea %sp@(16),%sp
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4aa7c: 2040 moveal %d0,%a0
4aa7e: 5188 subql #8,%a0
4aa80: 4a80 tstl %d0
4aa82: 670e beqs 4aa92 <_Heap_Greedy_allocate+0x4a> <== NEVER TAKEN
4aa84: 4c6a 0001 0010 remul %a2@(16),%d1,%d0
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4aa8a: 91c1 subal %d1,%a0
Heap_Block *next_block = _Heap_Block_of_alloc_area(
(uintptr_t) next,
heap->page_size
);
next_block->next = allocated_blocks;
4aa8c: 214c 0008 movel %a4,%a0@(8)
4aa90: 2848 moveal %a0,%a4
Heap_Block *allocated_blocks = NULL;
Heap_Block *blocks = NULL;
Heap_Block *current;
size_t i;
for (i = 0; i < block_count; ++i) {
4aa92: b48b cmpl %a3,%d2
4aa94: 66d4 bnes 4aa6a <_Heap_Greedy_allocate+0x22>
return &heap->free_list;
}
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{
return _Heap_Free_list_head(heap)->next;
4aa96: 266a 0008 moveal %a2@(8),%a3
next_block->next = allocated_blocks;
allocated_blocks = next_block;
}
}
while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
4aa9a: b7ca cmpal %a2,%a3
4aa9c: 6700 008c beqw 4ab2a <_Heap_Greedy_allocate+0xe2>
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4aaa0: 70fe moveq #-2,%d0
4aaa2: 4bf9 0004 ae20 lea 4ae20 <_Heap_Block_allocate>,%a5
4aaa8: 4282 clrl %d2
4aaaa: c0ab 0004 andl %a3@(4),%d0
_Heap_Block_allocate(
4aaae: 2040 moveal %d0,%a0
4aab0: 4868 fff8 pea %a0@(-8)
4aab4: 486b 0008 pea %a3@(8)
4aab8: 2f0b movel %a3,%sp@-
4aaba: 2f0a movel %a2,%sp@-
4aabc: 4e95 jsr %a5@
next_block->next = allocated_blocks;
allocated_blocks = next_block;
}
}
while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
4aabe: 4fef 0010 lea %sp@(16),%sp
current,
_Heap_Alloc_area_of_block( current ),
_Heap_Block_size( current ) - HEAP_BLOCK_HEADER_SIZE
);
current->next = blocks;
4aac2: 2742 0008 movel %d2,%a3@(8)
return &heap->free_list;
}
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{
return _Heap_Free_list_head(heap)->next;
4aac6: 202a 0008 movel %a2@(8),%d0
4aaca: 240b movel %a3,%d2
next_block->next = allocated_blocks;
allocated_blocks = next_block;
}
}
while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
4aacc: b08a cmpl %a2,%d0
4aace: 672a beqs 4aafa <_Heap_Greedy_allocate+0xb2>
4aad0: 2640 moveal %d0,%a3
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4aad2: 70fe moveq #-2,%d0
4aad4: c0ab 0004 andl %a3@(4),%d0
_Heap_Block_allocate(
4aad8: 2040 moveal %d0,%a0
4aada: 4868 fff8 pea %a0@(-8)
4aade: 486b 0008 pea %a3@(8)
4aae2: 2f0b movel %a3,%sp@-
4aae4: 2f0a movel %a2,%sp@-
4aae6: 4e95 jsr %a5@
next_block->next = allocated_blocks;
allocated_blocks = next_block;
}
}
while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
4aae8: 4fef 0010 lea %sp@(16),%sp
current,
_Heap_Alloc_area_of_block( current ),
_Heap_Block_size( current ) - HEAP_BLOCK_HEADER_SIZE
);
current->next = blocks;
4aaec: 2742 0008 movel %d2,%a3@(8)
return &heap->free_list;
}
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{
return _Heap_Free_list_head(heap)->next;
4aaf0: 202a 0008 movel %a2@(8),%d0
4aaf4: 240b movel %a3,%d2
next_block->next = allocated_blocks;
allocated_blocks = next_block;
}
}
while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
4aaf6: b08a cmpl %a2,%d0
4aaf8: 66d6 bnes 4aad0 <_Heap_Greedy_allocate+0x88>
4aafa: 4bf9 0005 17a8 lea 517a8 <_Heap_Free>,%a5
current->next = blocks;
blocks = current;
}
while ( allocated_blocks != NULL ) {
4ab00: 4a8c tstl %a4
4ab02: 6714 beqs 4ab18 <_Heap_Greedy_allocate+0xd0>
current = allocated_blocks;
allocated_blocks = allocated_blocks->next;
4ab04: 222c 0008 movel %a4@(8),%d1
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
4ab08: 486c 0008 pea %a4@(8)
blocks = current;
}
while ( allocated_blocks != NULL ) {
current = allocated_blocks;
allocated_blocks = allocated_blocks->next;
4ab0c: 2841 moveal %d1,%a4
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
4ab0e: 2f0a movel %a2,%sp@-
4ab10: 4e95 jsr %a5@
current->next = blocks;
blocks = current;
}
while ( allocated_blocks != NULL ) {
4ab12: 508f addql #8,%sp
4ab14: 4a8c tstl %a4
4ab16: 66ec bnes 4ab04 <_Heap_Greedy_allocate+0xbc>
allocated_blocks = allocated_blocks->next;
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
}
return blocks;
}
4ab18: 200b movel %a3,%d0
4ab1a: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4ab20: 4e5e unlk %fp
4ab22: 4e75 rts
const uintptr_t *block_sizes,
size_t block_count
)
{
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
Heap_Block *allocated_blocks = NULL;
4ab24: 99cc subal %a4,%a4
4ab26: 6000 ff6e braw 4aa96 <_Heap_Greedy_allocate+0x4e>
next_block->next = allocated_blocks;
allocated_blocks = next_block;
}
}
while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
4ab2a: 97cb subal %a3,%a3 <== NOT EXECUTED
4ab2c: 4bf9 0005 17a8 lea 517a8 <_Heap_Free>,%a5 <== NOT EXECUTED
current->next = blocks;
blocks = current;
}
while ( allocated_blocks != NULL ) {
4ab32: 4a8c tstl %a4 <== NOT EXECUTED
4ab34: 66ce bnes 4ab04 <_Heap_Greedy_allocate+0xbc> <== NOT EXECUTED
4ab36: 60e0 bras 4ab18 <_Heap_Greedy_allocate+0xd0> <== NOT EXECUTED
0004ab38 <_Heap_Greedy_free>:
void _Heap_Greedy_free(
Heap_Control *heap,
Heap_Block *blocks
)
{
4ab38: 4e56 fff4 linkw %fp,#-12
4ab3c: 206e 000c moveal %fp@(12),%a0
4ab40: 48d7 040c moveml %d2-%d3/%a2,%sp@
4ab44: 262e 0008 movel %fp@(8),%d3
4ab48: 45f9 0005 17a8 lea 517a8 <_Heap_Free>,%a2
while ( blocks != NULL ) {
4ab4e: 4a88 tstl %a0
4ab50: 6714 beqs 4ab66 <_Heap_Greedy_free+0x2e> <== NEVER TAKEN
Heap_Block *current = blocks;
blocks = blocks->next;
4ab52: 2428 0008 movel %a0@(8),%d2
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
4ab56: 4868 0008 pea %a0@(8)
4ab5a: 2f03 movel %d3,%sp@-
4ab5c: 4e92 jsr %a2@
void _Heap_Greedy_free(
Heap_Control *heap,
Heap_Block *blocks
)
{
while ( blocks != NULL ) {
4ab5e: 508f addql #8,%sp
Heap_Block *current = blocks;
blocks = blocks->next;
4ab60: 2042 moveal %d2,%a0
void _Heap_Greedy_free(
Heap_Control *heap,
Heap_Block *blocks
)
{
while ( blocks != NULL ) {
4ab62: 4a82 tstl %d2
4ab64: 66ec bnes 4ab52 <_Heap_Greedy_free+0x1a>
Heap_Block *current = blocks;
blocks = blocks->next;
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
}
}
4ab66: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
4ab6c: 4e5e unlk %fp <== NOT EXECUTED
00051bc0 <_Heap_Iterate>:
void _Heap_Iterate(
Heap_Control *heap,
Heap_Block_visitor visitor,
void *visitor_arg
)
{
51bc0: 4e56 fff0 linkw %fp,#-16
51bc4: 226e 0008 moveal %fp@(8),%a1
51bc8: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
51bcc: 266e 000c moveal %fp@(12),%a3
51bd0: 262e 0010 movel %fp@(16),%d3
Heap_Block *current = heap->first_block;
51bd4: 2069 0020 moveal %a1@(32),%a0
Heap_Block *end = heap->last_block;
51bd8: 2429 0024 movel %a1@(36),%d2
bool stop = false;
while ( !stop && current != end ) {
51bdc: b488 cmpl %a0,%d2
51bde: 6728 beqs 51c08 <_Heap_Iterate+0x48> <== NEVER TAKEN
51be0: 70fe moveq #-2,%d0
uintptr_t size = _Heap_Block_size( current );
Heap_Block *next = _Heap_Block_at( current, size );
bool used = _Heap_Is_prev_used( next );
stop = (*visitor)( current, size, used, visitor_arg );
51be2: 7201 moveq #1,%d1
51be4: c0a8 0004 andl %a0@(4),%d0
51be8: 2f03 movel %d3,%sp@-
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
51bea: 45f0 0800 lea %a0@(00000000,%d0:l),%a2
51bee: c2aa 0004 andl %a2@(4),%d1
51bf2: 2f01 movel %d1,%sp@-
51bf4: 2f00 movel %d0,%sp@-
51bf6: 2f08 movel %a0,%sp@-
51bf8: 4e93 jsr %a3@
{
Heap_Block *current = heap->first_block;
Heap_Block *end = heap->last_block;
bool stop = false;
while ( !stop && current != end ) {
51bfa: 4fef 0010 lea %sp@(16),%sp
51bfe: 204a moveal %a2,%a0
51c00: 4a00 tstb %d0
51c02: 6604 bnes 51c08 <_Heap_Iterate+0x48> <== NEVER TAKEN
51c04: b5c2 cmpal %d2,%a2
51c06: 66d8 bnes 51be0 <_Heap_Iterate+0x20>
stop = (*visitor)( current, size, used, visitor_arg );
current = next;
}
}
51c08: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
51c0e: 4e5e unlk %fp
...
0005c2b0 <_Heap_Size_of_alloc_area>:
bool _Heap_Size_of_alloc_area(
Heap_Control *heap,
void *alloc_begin_ptr,
uintptr_t *alloc_size
)
{
5c2b0: 4e56 0000 linkw %fp,#0
5c2b4: 202e 000c movel %fp@(12),%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
5c2b8: 2040 moveal %d0,%a0
5c2ba: 5188 subql #8,%a0
5c2bc: 226e 0008 moveal %fp@(8),%a1
5c2c0: 2f02 movel %d2,%sp@-
5c2c2: 2400 movel %d0,%d2
5c2c4: 4c69 2001 0010 remul %a1@(16),%d1,%d2
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
5c2ca: 91c1 subal %d1,%a0
RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap(
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
5c2cc: 2229 0020 movel %a1@(32),%d1
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
5c2d0: b288 cmpl %a0,%d1
5c2d2: 6238 bhis 5c30c <_Heap_Size_of_alloc_area+0x5c>
5c2d4: 2269 0024 moveal %a1@(36),%a1
5c2d8: b3c8 cmpal %a0,%a1
5c2da: 6530 bcss 5c30c <_Heap_Size_of_alloc_area+0x5c> <== NEVER TAKEN
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
5c2dc: 74fe moveq #-2,%d2
5c2de: c4a8 0004 andl %a0@(4),%d2
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
5c2e2: 41f0 2800 lea %a0@(00000000,%d2:l),%a0
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
5c2e6: b1c1 cmpal %d1,%a0
5c2e8: 6522 bcss 5c30c <_Heap_Size_of_alloc_area+0x5c> <== NEVER TAKEN
5c2ea: b1c9 cmpal %a1,%a0
5c2ec: 621e bhis 5c30c <_Heap_Size_of_alloc_area+0x5c> <== NEVER TAKEN
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
5c2ee: 7201 moveq #1,%d1
5c2f0: c2a8 0004 andl %a0@(4),%d1
block_size = _Heap_Block_size( block );
next_block = _Heap_Block_at( block, block_size );
if (
!_Heap_Is_block_in_heap( heap, next_block )
|| !_Heap_Is_prev_used( next_block )
5c2f4: 6716 beqs 5c30c <_Heap_Size_of_alloc_area+0x5c> <== NEVER TAKEN
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5c2f6: 7204 moveq #4,%d1
5c2f8: 9280 subl %d0,%d1
5c2fa: 2001 movel %d1,%d0
5c2fc: d088 addl %a0,%d0
5c2fe: 226e 0010 moveal %fp@(16),%a1
return true;
}
5c302: 241f movel %sp@+,%d2
5c304: 4e5e unlk %fp
|| !_Heap_Is_prev_used( next_block )
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5c306: 2280 movel %d0,%a1@
return true;
5c308: 7001 moveq #1,%d0
}
5c30a: 4e75 rts
5c30c: 241f movel %sp@+,%d2
5c30e: 4e5e unlk %fp
Heap_Block *block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
Heap_Block *next_block = NULL;
uintptr_t block_size = 0;
if ( !_Heap_Is_block_in_heap( heap, block ) ) {
return false;
5c310: 4200 clrb %d0 <== NOT EXECUTED
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
return true;
}
000490ce <_Heap_Walk>:
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
490ce: 4e56 ffc8 linkw %fp,#-56
490d2: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
490d6: 246e 0008 moveal %fp@(8),%a2
uintptr_t const page_size = heap->page_size;
490da: 242a 0010 movel %a2@(16),%d2
uintptr_t const min_block_size = heap->min_block_size;
490de: 262a 0014 movel %a2@(20),%d3
Heap_Block *const first_block = heap->first_block;
490e2: 266a 0020 moveal %a2@(32),%a3
Heap_Block *const last_block = heap->last_block;
490e6: 2a6a 0024 moveal %a2@(36),%a5
Heap_Block *block = first_block;
Heap_Walk_printer printer = dump ?
_Heap_Walk_print : _Heap_Walk_print_nothing;
490ea: 4a2e 0013 tstb %fp@(19)
490ee: 671a beqs 4910a <_Heap_Walk+0x3c>
490f0: 49fa ff86 lea %pc@(49078 <_Heap_Walk_print>),%a4
if ( !_System_state_Is_up( _System_state_Get() ) ) {
490f4: 7003 moveq #3,%d0
490f6: b0b9 0006 1d44 cmpl 61d44 <_System_state_Current>,%d0
490fc: 671a beqs 49118 <_Heap_Walk+0x4a> <== ALWAYS TAKEN
block = next_block;
} while ( block != first_block );
return true;
}
490fe: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
}
block = next_block;
} while ( block != first_block );
return true;
49104: 7001 moveq #1,%d0
}
49106: 4e5e unlk %fp
49108: 4e75 rts
uintptr_t const min_block_size = heap->min_block_size;
Heap_Block *const first_block = heap->first_block;
Heap_Block *const last_block = heap->last_block;
Heap_Block *block = first_block;
Heap_Walk_printer printer = dump ?
_Heap_Walk_print : _Heap_Walk_print_nothing;
4910a: 49fa ff64 lea %pc@(49070 <_Heap_Walk_print_nothing>),%a4
if ( !_System_state_Is_up( _System_state_Get() ) ) {
4910e: 7003 moveq #3,%d0
49110: b0b9 0006 1d44 cmpl 61d44 <_System_state_Current>,%d0
49116: 66e6 bnes 490fe <_Heap_Walk+0x30>
Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
Heap_Block *const last_free_block = _Heap_Free_list_last( heap );
Heap_Block *const first_block = heap->first_block;
Heap_Block *const last_block = heap->last_block;
(*printer)(
49118: 2f2a 000c movel %a2@(12),%sp@-
4911c: 2f2a 0008 movel %a2@(8),%sp@-
49120: 2f0d movel %a5,%sp@-
49122: 2f0b movel %a3,%sp@-
49124: 2f2a 001c movel %a2@(28),%sp@-
49128: 2f2a 0018 movel %a2@(24),%sp@-
4912c: 2f03 movel %d3,%sp@-
4912e: 2f02 movel %d2,%sp@-
49130: 4879 0005 e292 pea 5e292 <_Copyright_Notice+0x94>
49136: 42a7 clrl %sp@-
49138: 2f2e 000c movel %fp@(12),%sp@-
4913c: 4e94 jsr %a4@
heap->area_begin, heap->area_end,
first_block, last_block,
first_free_block, last_free_block
);
if ( page_size == 0 ) {
4913e: 4fef 002c lea %sp@(44),%sp
49142: 4a82 tstl %d2
49144: 677e beqs 491c4 <_Heap_Walk+0xf6>
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
49146: 7003 moveq #3,%d0
49148: c082 andl %d2,%d0
(*printer)( source, true, "page size is zero\n" );
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
4914a: 6600 0090 bnew 491dc <_Heap_Walk+0x10e>
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
4914e: 2203 movel %d3,%d1
49150: 4c42 1000 remul %d2,%d0,%d1
);
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
49154: 4a80 tstl %d0
49156: 6600 009e bnew 491f6 <_Heap_Walk+0x128>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
4915a: 200b movel %a3,%d0
4915c: 5080 addql #8,%d0
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
4915e: 4c42 0001 remul %d2,%d1,%d0
);
return false;
}
if (
49162: 4a81 tstl %d1
49164: 6600 00aa bnew 49210 <_Heap_Walk+0x142>
block = next_block;
} while ( block != first_block );
return true;
}
49168: 202b 0004 movel %a3@(4),%d0
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
4916c: 7801 moveq #1,%d4
4916e: c880 andl %d0,%d4
);
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
49170: 6700 00ba beqw 4922c <_Heap_Walk+0x15e>
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
49174: 72fe moveq #-2,%d1
49176: c2ad 0004 andl %a5@(4),%d1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4917a: 41f5 1800 lea %a5@(00000000,%d1:l),%a0
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
4917e: 7201 moveq #1,%d1
49180: c2a8 0004 andl %a0@(4),%d1
);
return false;
}
if ( _Heap_Is_free( last_block ) ) {
49184: 6726 beqs 491ac <_Heap_Walk+0xde>
);
return false;
}
if (
49186: b1cb cmpal %a3,%a0
49188: 6700 00bc beqw 49246 <_Heap_Walk+0x178>
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
4918c: 4879 0005 e3ec pea 5e3ec <_Copyright_Notice+0x1ee>
49192: 4878 0001 pea 1 <ADD>
49196: 2f2e 000c movel %fp@(12),%sp@-
4919a: 4e94 jsr %a4@
4919c: 4fef 000c lea %sp@(12),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
491a0: 4200 clrb %d0
block = next_block;
} while ( block != first_block );
return true;
}
491a2: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
491a8: 4e5e unlk %fp
491aa: 4e75 rts
return false;
}
if ( _Heap_Is_free( last_block ) ) {
(*printer)(
491ac: 4879 0005 e3d7 pea 5e3d7 <_Copyright_Notice+0x1d9>
491b2: 4878 0001 pea 1 <ADD>
491b6: 2f2e 000c movel %fp@(12),%sp@-
491ba: 4e94 jsr %a4@
491bc: 4fef 000c lea %sp@(12),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
491c0: 4200 clrb %d0
491c2: 60de bras 491a2 <_Heap_Walk+0xd4>
first_block, last_block,
first_free_block, last_free_block
);
if ( page_size == 0 ) {
(*printer)( source, true, "page size is zero\n" );
491c4: 4879 0005 e323 pea 5e323 <_Copyright_Notice+0x125>
491ca: 4878 0001 pea 1 <ADD>
491ce: 2f2e 000c movel %fp@(12),%sp@-
491d2: 4e94 jsr %a4@
491d4: 4fef 000c lea %sp@(12),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
491d8: 4200 clrb %d0
491da: 60c6 bras 491a2 <_Heap_Walk+0xd4>
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
(*printer)(
491dc: 2f02 movel %d2,%sp@-
491de: 4879 0005 e336 pea 5e336 <_Copyright_Notice+0x138>
491e4: 4878 0001 pea 1 <ADD>
491e8: 2f2e 000c movel %fp@(12),%sp@-
491ec: 4e94 jsr %a4@
491ee: 4fef 0010 lea %sp@(16),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
491f2: 4200 clrb %d0
491f4: 60ac bras 491a2 <_Heap_Walk+0xd4>
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
(*printer)(
491f6: 2f03 movel %d3,%sp@-
491f8: 4879 0005 e354 pea 5e354 <_Copyright_Notice+0x156>
491fe: 4878 0001 pea 1 <ADD>
49202: 2f2e 000c movel %fp@(12),%sp@-
49206: 4e94 jsr %a4@
49208: 4fef 0010 lea %sp@(16),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
4920c: 4200 clrb %d0
4920e: 6092 bras 491a2 <_Heap_Walk+0xd4>
}
if (
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
) {
(*printer)(
49210: 2f0b movel %a3,%sp@-
49212: 4879 0005 e378 pea 5e378 <_Copyright_Notice+0x17a>
49218: 4878 0001 pea 1 <ADD>
4921c: 2f2e 000c movel %fp@(12),%sp@-
49220: 4e94 jsr %a4@
49222: 4fef 0010 lea %sp@(16),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
49226: 4200 clrb %d0
49228: 6000 ff78 braw 491a2 <_Heap_Walk+0xd4>
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
(*printer)(
4922c: 4879 0005 e3a9 pea 5e3a9 <_Copyright_Notice+0x1ab>
49232: 4878 0001 pea 1 <ADD>
49236: 2f2e 000c movel %fp@(12),%sp@-
4923a: 4e94 jsr %a4@
4923c: 4fef 000c lea %sp@(12),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
49240: 4200 clrb %d0
49242: 6000 ff5e braw 491a2 <_Heap_Walk+0xd4>
int source,
Heap_Walk_printer printer,
Heap_Control *heap
)
{
uintptr_t const page_size = heap->page_size;
49246: 222a 0010 movel %a2@(16),%d1
4924a: 2d41 fffc movel %d1,%fp@(-4)
return &heap->free_list;
}
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{
return _Heap_Free_list_head(heap)->next;
4924e: 206a 0008 moveal %a2@(8),%a0
block = next_block;
} while ( block != first_block );
return true;
}
49252: 222a 0020 movel %a2@(32),%d1
const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
const Heap_Block *prev_block = free_list_tail;
const Heap_Block *free_block = first_free_block;
while ( free_block != free_list_tail ) {
49256: b1ca cmpal %a2,%a0
49258: 6700 00c6 beqw 49320 <_Heap_Walk+0x252>
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4925c: b1c1 cmpal %d1,%a0
4925e: 6500 009c bcsw 492fc <_Heap_Walk+0x22e>
49262: 2a2a 0024 movel %a2@(36),%d5
49266: 2d45 fff0 movel %d5,%fp@(-16)
4926a: b1c5 cmpal %d5,%a0
4926c: 6200 008e bhiw 492fc <_Heap_Walk+0x22e>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
49270: 43e8 0008 lea %a0@(8),%a1
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
49274: 2c09 movel %a1,%d6
49276: 2e2e fffc movel %fp@(-4),%d7
4927a: 4c47 6005 remul %d7,%d5,%d6
);
return false;
}
if (
4927e: 4a85 tstl %d5
49280: 6600 02b8 bnew 4953a <_Heap_Walk+0x46c>
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
49284: 7afe moveq #-2,%d5
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
49286: 7c01 moveq #1,%d6
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
49288: caa8 0004 andl %a0@(4),%d5
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
4928c: ccb0 5804 andl %a0@(00000004,%d5:l),%d6
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
49290: 664e bnes 492e0 <_Heap_Walk+0x212> <== NEVER TAKEN
49292: 2e2e fff0 movel %fp@(-16),%d7
49296: 224a moveal %a2,%a1
49298: 2c08 movel %a0,%d6
4929a: 2d42 fff8 movel %d2,%fp@(-8)
4929e: 2d40 fff4 movel %d0,%fp@(-12)
);
return false;
}
if ( free_block->prev != prev_block ) {
492a2: 2a28 000c movel %a0@(12),%d5
492a6: b3c5 cmpal %d5,%a1
492a8: 6600 02ac bnew 49556 <_Heap_Walk+0x488>
return false;
}
prev_block = free_block;
free_block = free_block->next;
492ac: 2068 0008 moveal %a0@(8),%a0
const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
const Heap_Block *prev_block = free_list_tail;
const Heap_Block *free_block = first_free_block;
while ( free_block != free_list_tail ) {
492b0: b1ca cmpal %a2,%a0
492b2: 6764 beqs 49318 <_Heap_Walk+0x24a>
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
492b4: b288 cmpl %a0,%d1
492b6: 6244 bhis 492fc <_Heap_Walk+0x22e>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
492b8: 2408 movel %a0,%d2
492ba: 5082 addql #8,%d2
492bc: 2246 moveal %d6,%a1
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
492be: be88 cmpl %a0,%d7
492c0: 653a bcss 492fc <_Heap_Walk+0x22e> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
492c2: 202e fffc movel %fp@(-4),%d0
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
492c6: 2c08 movel %a0,%d6
492c8: 4c40 2005 remul %d0,%d5,%d2
);
return false;
}
if (
492cc: 4a85 tstl %d5
492ce: 6600 026a bnew 4953a <_Heap_Walk+0x46c>
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
492d2: 74fe moveq #-2,%d2
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
492d4: 7001 moveq #1,%d0
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
492d6: c4a8 0004 andl %a0@(4),%d2
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
492da: c0b0 2804 andl %a0@(00000004,%d2:l),%d0
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
492de: 67c2 beqs 492a2 <_Heap_Walk+0x1d4>
(*printer)(
492e0: 2f08 movel %a0,%sp@-
492e2: 4879 0005 e46b pea 5e46b <_Copyright_Notice+0x26d>
492e8: 4878 0001 pea 1 <ADD>
492ec: 2f2e 000c movel %fp@(12),%sp@-
492f0: 4e94 jsr %a4@
492f2: 4fef 0010 lea %sp@(16),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
492f6: 4200 clrb %d0
492f8: 6000 fea8 braw 491a2 <_Heap_Walk+0xd4>
const Heap_Block *prev_block = free_list_tail;
const Heap_Block *free_block = first_free_block;
while ( free_block != free_list_tail ) {
if ( !_Heap_Is_block_in_heap( heap, free_block ) ) {
(*printer)(
492fc: 2f08 movel %a0,%sp@-
492fe: 4879 0005 e41b pea 5e41b <_Copyright_Notice+0x21d>
49304: 4878 0001 pea 1 <ADD>
49308: 2f2e 000c movel %fp@(12),%sp@-
4930c: 4e94 jsr %a4@
4930e: 4fef 0010 lea %sp@(16),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
49312: 4200 clrb %d0
49314: 6000 fe8c braw 491a2 <_Heap_Walk+0xd4>
49318: 242e fff8 movel %fp@(-8),%d2
4931c: 202e fff4 movel %fp@(-12),%d0
49320: 2d42 fffc movel %d2,%fp@(-4)
49324: 2e00 movel %d0,%d7
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
49326: 74fe moveq #-2,%d2
49328: 204d moveal %a5,%a0
4932a: 2a4b moveal %a3,%a5
4932c: 2a0b movel %a3,%d5
4932e: 264a moveal %a2,%a3
49330: ce82 andl %d2,%d7
49332: 2d48 fff8 movel %a0,%fp@(-8)
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
49336: 45f5 7800 lea %a5@(00000000,%d7:l),%a2
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4933a: b5c1 cmpal %d1,%a2
4933c: 6568 bcss 493a6 <_Heap_Walk+0x2d8> <== NEVER TAKEN
4933e: b5eb 0024 cmpal %a3@(36),%a2
49342: 6262 bhis 493a6 <_Heap_Walk+0x2d8>
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
bool const prev_used = _Heap_Is_prev_used( block );
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
uintptr_t const next_block_begin = (uintptr_t) next_block;
bool const is_not_last_block = block != last_block;
49344: bbee fff8 cmpal %fp@(-8),%a5
49348: 56c0 sne %d0
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
4934a: 2c2e fffc movel %fp@(-4),%d6
4934e: 2407 movel %d7,%d2
49350: 4480 negl %d0
49352: 4c46 2001 remul %d6,%d1,%d2
);
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
49356: 4a81 tstl %d1
49358: 6700 0084 beqw 493de <_Heap_Walk+0x310>
4935c: 4a00 tstb %d0
4935e: 6664 bnes 493c4 <_Heap_Walk+0x2f6>
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
49360: 7001 moveq #1,%d0
49362: c0aa 0004 andl %a2@(4),%d0
);
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
49366: 6700 00e8 beqw 49450 <_Heap_Walk+0x382>
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
}
} else if (prev_used) {
4936a: 4a84 tstl %d4
4936c: 6700 00c6 beqw 49434 <_Heap_Walk+0x366>
(*printer)(
49370: 2f07 movel %d7,%sp@-
49372: 2f0d movel %a5,%sp@-
49374: 4879 0005 e610 pea 5e610 <_Copyright_Notice+0x412>
4937a: 42a7 clrl %sp@-
4937c: 2f2e 000c movel %fp@(12),%sp@-
49380: 4e94 jsr %a4@
49382: 4fef 0014 lea %sp@(20),%sp
block->prev_size
);
}
block = next_block;
} while ( block != first_block );
49386: b5c5 cmpal %d5,%a2
49388: 6700 fd74 beqw 490fe <_Heap_Walk+0x30>
4938c: 2e2a 0004 movel %a2@(4),%d7
49390: 7801 moveq #1,%d4
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
49392: 74fe moveq #-2,%d2
49394: 2a4a moveal %a2,%a5
49396: c887 andl %d7,%d4
49398: ce82 andl %d2,%d7
4939a: 222b 0020 movel %a3@(32),%d1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4939e: 45f5 7800 lea %a5@(00000000,%d7:l),%a2
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
493a2: b5c1 cmpal %d1,%a2
493a4: 6498 bccs 4933e <_Heap_Walk+0x270> <== ALWAYS TAKEN
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
uintptr_t const next_block_begin = (uintptr_t) next_block;
bool const is_not_last_block = block != last_block;
if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {
(*printer)(
493a6: 2f0a movel %a2,%sp@-
493a8: 2f0d movel %a5,%sp@-
493aa: 4879 0005 e4b9 pea 5e4b9 <_Copyright_Notice+0x2bb>
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
(*printer)(
493b0: 4878 0001 pea 1 <ADD>
493b4: 2f2e 000c movel %fp@(12),%sp@-
493b8: 4e94 jsr %a4@
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
493ba: 4fef 0014 lea %sp@(20),%sp
493be: 4200 clrb %d0
493c0: 6000 fde0 braw 491a2 <_Heap_Walk+0xd4>
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
(*printer)(
493c4: 2f07 movel %d7,%sp@-
493c6: 2f0d movel %a5,%sp@-
493c8: 4879 0005 e4e6 pea 5e4e6 <_Copyright_Notice+0x2e8>
493ce: 4878 0001 pea 1 <ADD>
493d2: 2f2e 000c movel %fp@(12),%sp@-
493d6: 4e94 jsr %a4@
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
493d8: 4fef 0014 lea %sp@(20),%sp
493dc: 60e0 bras 493be <_Heap_Walk+0x2f0>
}
if ( block_size < min_block_size && is_not_last_block ) {
493de: be83 cmpl %d3,%d7
493e0: 642c bccs 4940e <_Heap_Walk+0x340>
493e2: 4a00 tstb %d0
493e4: 6700 ff7a beqw 49360 <_Heap_Walk+0x292>
(*printer)(
493e8: 2f03 movel %d3,%sp@-
493ea: 2f07 movel %d7,%sp@-
493ec: 2f0d movel %a5,%sp@-
493ee: 4879 0005 e514 pea 5e514 <_Copyright_Notice+0x316>
493f4: 4878 0001 pea 1 <ADD>
493f8: 2f2e 000c movel %fp@(12),%sp@-
493fc: 4e94 jsr %a4@
block,
block_size,
min_block_size
);
return false;
493fe: 4fef 0018 lea %sp@(24),%sp
block = next_block;
} while ( block != first_block );
return true;
}
49402: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
block,
block_size,
min_block_size
);
return false;
49408: 4200 clrb %d0
block = next_block;
} while ( block != first_block );
return true;
}
4940a: 4e5e unlk %fp
4940c: 4e75 rts
);
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
4940e: b5cd cmpal %a5,%a2
49410: 6200 ff4e bhiw 49360 <_Heap_Walk+0x292>
49414: 4a00 tstb %d0
49416: 6700 ff48 beqw 49360 <_Heap_Walk+0x292>
(*printer)(
4941a: 2f0a movel %a2,%sp@-
4941c: 2f0d movel %a5,%sp@-
4941e: 4879 0005 e53f pea 5e53f <_Copyright_Notice+0x341>
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
(*printer)(
49424: 4878 0001 pea 1 <ADD>
49428: 2f2e 000c movel %fp@(12),%sp@-
4942c: 4e94 jsr %a4@
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
4942e: 4fef 0014 lea %sp@(20),%sp
49432: 608a bras 493be <_Heap_Walk+0x2f0>
"block 0x%08x: size %u\n",
block,
block_size
);
} else {
(*printer)(
49434: 2f15 movel %a5@,%sp@-
49436: 2f07 movel %d7,%sp@-
49438: 2f0d movel %a5,%sp@-
4943a: 4879 0005 e627 pea 5e627 <_Copyright_Notice+0x429>
49440: 42a7 clrl %sp@-
49442: 2f2e 000c movel %fp@(12),%sp@-
49446: 4e94 jsr %a4@
49448: 4fef 0018 lea %sp@(24),%sp
4944c: 6000 ff38 braw 49386 <_Heap_Walk+0x2b8>
return &heap->free_list;
}
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{
return _Heap_Free_list_head(heap)->next;
49450: 206b 0008 moveal %a3@(8),%a0
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
block->next,
block->next == last_free_block ?
49454: 222d 0008 movel %a5@(8),%d1
Heap_Block *const last_free_block = _Heap_Free_list_last( heap );
bool const prev_used = _Heap_Is_prev_used( block );
uintptr_t const block_size = _Heap_Block_size( block );
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
(*printer)(
49458: b2ab 000c cmpl %a3@(12),%d1
4945c: 6700 00b6 beqw 49514 <_Heap_Walk+0x446>
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
block->next,
block->next == last_free_block ?
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
49460: 43f9 0005 e13e lea 5e13e <rtems_termios_baud_table+0x10a>,%a1
49466: b28b cmpl %a3,%d1
49468: 676e beqs 494d8 <_Heap_Walk+0x40a>
false,
"block 0x%08x: size %u, prev 0x%08x%s, next 0x%08x%s\n",
block,
block_size,
block->prev,
block->prev == first_free_block ?
4946a: 202d 000c movel %a5@(12),%d0
Heap_Block *const last_free_block = _Heap_Free_list_last( heap );
bool const prev_used = _Heap_Is_prev_used( block );
uintptr_t const block_size = _Heap_Block_size( block );
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
(*printer)(
4946e: b088 cmpl %a0,%d0
49470: 6700 0098 beqw 4950a <_Heap_Walk+0x43c>
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
49474: 41f9 0005 e13e lea 5e13e <rtems_termios_baud_table+0x10a>,%a0
4947a: b08b cmpl %a3,%d0
4947c: 6762 beqs 494e0 <_Heap_Walk+0x412>
Heap_Block *const last_free_block = _Heap_Free_list_last( heap );
bool const prev_used = _Heap_Is_prev_used( block );
uintptr_t const block_size = _Heap_Block_size( block );
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
(*printer)(
4947e: 2f09 movel %a1,%sp@-
49480: 2f01 movel %d1,%sp@-
49482: 2f08 movel %a0,%sp@-
49484: 2f00 movel %d0,%sp@-
49486: 2f07 movel %d7,%sp@-
49488: 2f0d movel %a5,%sp@-
4948a: 4879 0005 e573 pea 5e573 <_Copyright_Notice+0x375>
49490: 42a7 clrl %sp@-
49492: 2f2e 000c movel %fp@(12),%sp@-
49496: 4e94 jsr %a4@
block->next == last_free_block ?
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
);
if ( block_size != next_block->prev_size ) {
49498: 2012 movel %a2@,%d0
4949a: 4fef 0024 lea %sp@(36),%sp
4949e: b087 cmpl %d7,%d0
494a0: 6646 bnes 494e8 <_Heap_Walk+0x41a>
);
return false;
}
if ( !prev_used ) {
494a2: 4a84 tstl %d4
494a4: 6778 beqs 4951e <_Heap_Walk+0x450>
494a6: 206b 0008 moveal %a3@(8),%a0
)
{
const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
const Heap_Block *free_block = _Heap_Free_list_first( heap );
while ( free_block != free_list_tail ) {
494aa: b1cb cmpal %a3,%a0
494ac: 670e beqs 494bc <_Heap_Walk+0x3ee> <== NEVER TAKEN
if ( free_block == block ) {
494ae: b1cd cmpal %a5,%a0
494b0: 6700 fed4 beqw 49386 <_Heap_Walk+0x2b8>
return true;
}
free_block = free_block->next;
494b4: 2068 0008 moveal %a0@(8),%a0
)
{
const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
const Heap_Block *free_block = _Heap_Free_list_first( heap );
while ( free_block != free_list_tail ) {
494b8: b1cb cmpal %a3,%a0
494ba: 66f2 bnes 494ae <_Heap_Walk+0x3e0>
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
494bc: 2f0d movel %a5,%sp@-
494be: 4879 0005 e64c pea 5e64c <_Copyright_Notice+0x44e>
494c4: 4878 0001 pea 1 <ADD>
494c8: 2f2e 000c movel %fp@(12),%sp@-
494cc: 4e94 jsr %a4@
494ce: 4fef 0010 lea %sp@(16),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
494d2: 4200 clrb %d0
494d4: 6000 fccc braw 491a2 <_Heap_Walk+0xd4>
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
block->next,
block->next == last_free_block ?
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
494d8: 43f9 0005 e26e lea 5e26e <_Copyright_Notice+0x70>,%a1
494de: 608a bras 4946a <_Heap_Walk+0x39c>
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
494e0: 41f9 0005 e288 lea 5e288 <_Copyright_Notice+0x8a>,%a0
494e6: 6096 bras 4947e <_Heap_Walk+0x3b0>
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
);
if ( block_size != next_block->prev_size ) {
(*printer)(
494e8: 2f0a movel %a2,%sp@-
494ea: 2f00 movel %d0,%sp@-
494ec: 2f07 movel %d7,%sp@-
494ee: 2f0d movel %a5,%sp@-
494f0: 4879 0005 e5a8 pea 5e5a8 <_Copyright_Notice+0x3aa>
494f6: 4878 0001 pea 1 <ADD>
494fa: 2f2e 000c movel %fp@(12),%sp@-
494fe: 4e94 jsr %a4@
49500: 4fef 001c lea %sp@(28),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
49504: 4200 clrb %d0
49506: 6000 fc9a braw 491a2 <_Heap_Walk+0xd4>
Heap_Block *const last_free_block = _Heap_Free_list_last( heap );
bool const prev_used = _Heap_Is_prev_used( block );
uintptr_t const block_size = _Heap_Block_size( block );
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
(*printer)(
4950a: 41f9 0005 e278 lea 5e278 <_Copyright_Notice+0x7a>,%a0
49510: 6000 ff6c braw 4947e <_Heap_Walk+0x3b0>
49514: 43f9 0005 e25f lea 5e25f <_Copyright_Notice+0x61>,%a1
4951a: 6000 ff4e braw 4946a <_Heap_Walk+0x39c>
return false;
}
if ( !prev_used ) {
(*printer)(
4951e: 2f0d movel %a5,%sp@-
49520: 4879 0005 e5e1 pea 5e5e1 <_Copyright_Notice+0x3e3>
49526: 4878 0001 pea 1 <ADD>
4952a: 2f2e 000c movel %fp@(12),%sp@-
4952e: 4e94 jsr %a4@
49530: 4fef 0010 lea %sp@(16),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
49534: 4200 clrb %d0
49536: 6000 fc6a braw 491a2 <_Heap_Walk+0xd4>
}
if (
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
) {
(*printer)(
4953a: 2f08 movel %a0,%sp@-
4953c: 4879 0005 e43b pea 5e43b <_Copyright_Notice+0x23d>
49542: 4878 0001 pea 1 <ADD>
49546: 2f2e 000c movel %fp@(12),%sp@-
4954a: 4e94 jsr %a4@
4954c: 4fef 0010 lea %sp@(16),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
49550: 4200 clrb %d0
49552: 6000 fc4e braw 491a2 <_Heap_Walk+0xd4>
return false;
}
if ( free_block->prev != prev_block ) {
(*printer)(
49556: 2f05 movel %d5,%sp@-
49558: 2f08 movel %a0,%sp@-
4955a: 4879 0005 e487 pea 5e487 <_Copyright_Notice+0x289>
49560: 4878 0001 pea 1 <ADD>
49564: 2f2e 000c movel %fp@(12),%sp@-
49568: 4e94 jsr %a4@
4956a: 4fef 0014 lea %sp@(20),%sp
"block 0x%08x: block size %u not page aligned\n",
block,
block_size
);
return false;
4956e: 4200 clrb %d0
49570: 6000 fc30 braw 491a2 <_Heap_Walk+0xd4>
00047d00 <_IO_Initialize_all_drivers>:
void _IO_Initialize_all_drivers( void )
{
47d00: 4e56 0000 linkw %fp,#0
47d04: 2f0a movel %a2,%sp@-
47d06: 2f02 movel %d2,%sp@-
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
47d08: 4ab9 0005 fbf8 tstl 5fbf8 <_IO_Number_of_drivers>
47d0e: 671e beqs 47d2e <_IO_Initialize_all_drivers+0x2e><== NEVER TAKEN
47d10: 4282 clrl %d2
47d12: 45f9 0004 c53c lea 4c53c <rtems_io_initialize>,%a2
(void) rtems_io_initialize( major, 0, NULL );
47d18: 42a7 clrl %sp@-
47d1a: 42a7 clrl %sp@-
47d1c: 2f02 movel %d2,%sp@-
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
47d1e: 5282 addql #1,%d2
(void) rtems_io_initialize( major, 0, NULL );
47d20: 4e92 jsr %a2@
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
47d22: 4fef 000c lea %sp@(12),%sp
47d26: b4b9 0005 fbf8 cmpl 5fbf8 <_IO_Number_of_drivers>,%d2
47d2c: 65ea bcss 47d18 <_IO_Initialize_all_drivers+0x18>
(void) rtems_io_initialize( major, 0, NULL );
}
47d2e: 242e fff8 movel %fp@(-8),%d2
47d32: 246e fffc moveal %fp@(-4),%a2
47d36: 4e5e unlk %fp
...
00047c60 <_IO_Manager_initialization>:
#include <rtems/score/wkspace.h>
#include <string.h>
void _IO_Manager_initialization(void)
{
47c60: 4e56 fff0 linkw %fp,#-16
47c64: 48d7 003c moveml %d2-%d5,%sp@
uint32_t index;
rtems_driver_address_table *driver_table;
uint32_t drivers_in_table;
uint32_t number_of_drivers;
driver_table = rtems_configuration_get_device_driver_table();
47c68: 2439 0005 c610 movel 5c610 <Configuration+0x3c>,%d2
drivers_in_table = rtems_configuration_get_number_of_device_drivers();
47c6e: 2839 0005 c60c movel 5c60c <Configuration+0x38>,%d4
number_of_drivers = rtems_configuration_get_maximum_drivers();
47c74: 2639 0005 c608 movel 5c608 <Configuration+0x34>,%d3
/*
* If the user claims there are less drivers than are actually in
* the table, then let's just go with the table's count.
*/
if ( number_of_drivers <= drivers_in_table )
47c7a: b684 cmpl %d4,%d3
47c7c: 636c blss 47cea <_IO_Manager_initialization+0x8a>
* The application requested extra slots in the driver table, so we
* have to allocate a new driver table and copy theirs to it.
*/
_IO_Driver_address_table = (rtems_driver_address_table *)
_Workspace_Allocate_or_fatal_error(
47c7e: 2003 movel %d3,%d0
47c80: 2a03 movel %d3,%d5
47c82: e788 lsll #3,%d0
47c84: eb8d lsll #5,%d5
47c86: 9a80 subl %d0,%d5
47c88: 2f05 movel %d5,%sp@-
47c8a: 4eb9 0004 ac2a jsr 4ac2a <_Workspace_Allocate_or_fatal_error>
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
_IO_Number_of_drivers = number_of_drivers;
memset(
47c90: 2f05 movel %d5,%sp@-
47c92: 42a7 clrl %sp@-
/*
* The application requested extra slots in the driver table, so we
* have to allocate a new driver table and copy theirs to it.
*/
_IO_Driver_address_table = (rtems_driver_address_table *)
47c94: 23c0 0005 fbfc movel %d0,5fbfc <_IO_Driver_address_table>
_Workspace_Allocate_or_fatal_error(
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
_IO_Number_of_drivers = number_of_drivers;
memset(
47c9a: 2f00 movel %d0,%sp@-
_IO_Driver_address_table = (rtems_driver_address_table *)
_Workspace_Allocate_or_fatal_error(
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
_IO_Number_of_drivers = number_of_drivers;
47c9c: 23c3 0005 fbf8 movel %d3,5fbf8 <_IO_Number_of_drivers>
memset(
47ca2: 4eb9 0004 e9d4 jsr 4e9d4 <memset>
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
47ca8: 4fef 0010 lea %sp@(16),%sp
47cac: 4a84 tstl %d4
47cae: 6730 beqs 47ce0 <_IO_Manager_initialization+0x80><== NEVER TAKEN
#include <rtems/score/thread.h>
#include <rtems/score/wkspace.h>
#include <string.h>
void _IO_Manager_initialization(void)
47cb0: 2a04 movel %d4,%d5
47cb2: 2204 movel %d4,%d1
47cb4: 4280 clrl %d0
47cb6: e78d lsll #3,%d5
47cb8: eb89 lsll #5,%d1
47cba: 2639 0005 fbfc movel 5fbfc <_IO_Driver_address_table>,%d3
47cc0: 9285 subl %d5,%d1
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
_IO_Driver_address_table[index] = driver_table[index];
47cc2: 2242 moveal %d2,%a1
47cc4: 2043 moveal %d3,%a0
47cc6: d3c0 addal %d0,%a1
47cc8: d1c0 addal %d0,%a0
47cca: 0680 0000 0018 addil #24,%d0
47cd0: 20d9 movel %a1@+,%a0@+
47cd2: 20d9 movel %a1@+,%a0@+
47cd4: 20d9 movel %a1@+,%a0@+
47cd6: 20d9 movel %a1@+,%a0@+
47cd8: 20d9 movel %a1@+,%a0@+
47cda: 2091 movel %a1@,%a0@
memset(
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
47cdc: b280 cmpl %d0,%d1
47cde: 66e2 bnes 47cc2 <_IO_Manager_initialization+0x62>
_IO_Driver_address_table[index] = driver_table[index];
}
47ce0: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5
47ce6: 4e5e unlk %fp
47ce8: 4e75 rts
* If the maximum number of driver is the same as the number in the
* table, then we do not have to copy the driver table. They can't
* register any dynamically.
*/
if ( number_of_drivers == drivers_in_table ) {
_IO_Driver_address_table = driver_table;
47cea: 23c2 0005 fbfc movel %d2,5fbfc <_IO_Driver_address_table>
_IO_Number_of_drivers = number_of_drivers;
47cf0: 23c4 0005 fbf8 movel %d4,5fbf8 <_IO_Number_of_drivers>
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
_IO_Driver_address_table[index] = driver_table[index];
}
47cf6: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5
47cfc: 4e5e unlk %fp <== NOT EXECUTED
0004891c <_Internal_error_Occurred>:
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
4891c: 4e56 ffe8 linkw %fp,#-24
48920: 48d7 001c moveml %d2-%d4,%sp@
Internal_errors_t error
)
{
User_extensions_Fatal_context ctx = { source, is_internal, error };
_User_extensions_Iterate( &ctx, _User_extensions_Fatal_visitor );
48924: 4879 0004 a788 pea 4a788 <_User_extensions_Fatal_visitor>
4892a: 262e 0010 movel %fp@(16),%d3
4892e: 486e fff6 pea %fp@(-10)
48932: 282e 0008 movel %fp@(8),%d4
48936: 242e 000c movel %fp@(12),%d2
Internal_errors_Source source,
bool is_internal,
Internal_errors_t error
)
{
User_extensions_Fatal_context ctx = { source, is_internal, error };
4893a: 2d44 fff6 movel %d4,%fp@(-10)
4893e: 1d42 fffa moveb %d2,%fp@(-6)
48942: 2d43 fffc movel %d3,%fp@(-4)
_User_extensions_Iterate( &ctx, _User_extensions_Fatal_visitor );
48946: 4eb9 0004 a7b8 jsr 4a7b8 <_User_extensions_Iterate>
_User_extensions_Fatal( the_source, is_internal, the_error );
_Internal_errors_What_happened.the_source = the_source;
_Internal_errors_What_happened.is_internal = is_internal;
4894c: 13c2 0005 fb66 moveb %d2,5fb66 <_Internal_errors_What_happened+0x4><== NOT EXECUTED
_Internal_errors_What_happened.the_error = the_error;
_System_state_Set( SYSTEM_STATE_FAILED );
_CPU_Fatal_halt( the_error );
48952: 2043 moveal %d3,%a0 <== NOT EXECUTED
48954: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED
Internal_errors_t the_error
)
{
_User_extensions_Fatal( the_source, is_internal, the_error );
_Internal_errors_What_happened.the_source = the_source;
4895a: 23c4 0005 fb62 movel %d4,5fb62 <_Internal_errors_What_happened><== NOT EXECUTED
_Internal_errors_What_happened.is_internal = is_internal;
_Internal_errors_What_happened.the_error = the_error;
48960: 23c3 0005 fb68 movel %d3,5fb68 <_Internal_errors_What_happened+0x6><== NOT EXECUTED
_System_state_Set( SYSTEM_STATE_FAILED );
_CPU_Fatal_halt( the_error );
48966: 40c0 movew %sr,%d0 <== NOT EXECUTED
48968: 8082 orl %d2,%d0 <== NOT EXECUTED
4896a: 46c0 movew %d0,%sr <== NOT EXECUTED
4896c: 2008 movel %a0,%d0 <== NOT EXECUTED
4896e: 223c dead beef movel #-559038737,%d1 <== NOT EXECUTED
48974: 4ac8 halt <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _System_state_Set (
System_state_Codes state
)
{
_System_state_Current = state;
48976: 7005 moveq #5,%d0 <== NOT EXECUTED
48978: 508f addql #8,%sp <== NOT EXECUTED
4897a: 23c0 0005 fb6c movel %d0,5fb6c <_System_state_Current> <== NOT EXECUTED
48980: 60fe bras 48980 <_Internal_error_Occurred+0x64> <== NOT EXECUTED
...
000489e4 <_Objects_Allocate>:
#endif
Objects_Control *_Objects_Allocate(
Objects_Information *information
)
{
489e4: 4e56 fff0 linkw %fp,#-16
489e8: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
489ec: 246e 0008 moveal %fp@(8),%a2
* If the application is using the optional manager stubs and
* still attempts to create the object, the information block
* should be all zeroed out because it is in the BSS. So let's
* check that code for this manager is even present.
*/
if ( information->size == 0 )
489f0: 4aaa 0014 tstl %a2@(20)
489f4: 6770 beqs 48a66 <_Objects_Allocate+0x82> <== NEVER TAKEN
/*
* OK. The manager should be initialized and configured to have objects.
* With any luck, it is safe to attempt to allocate an object.
*/
the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
489f6: 240a movel %a2,%d2
489f8: 0682 0000 001c addil #28,%d2
489fe: 47f9 0004 7f74 lea 47f74 <_Chain_Get>,%a3
48a04: 2f02 movel %d2,%sp@-
48a06: 4e93 jsr %a3@
if ( information->auto_extend ) {
48a08: 588f addql #4,%sp
48a0a: 4a2a 0010 tstb %a2@(16)
48a0e: 673a beqs 48a4a <_Objects_Allocate+0x66>
/*
* If the list is empty then we are out of objects and need to
* extend information base.
*/
if ( !the_object ) {
48a10: 4a80 tstl %d0
48a12: 6740 beqs 48a54 <_Objects_Allocate+0x70>
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
48a14: 2040 moveal %d0,%a0
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
48a16: 4282 clrl %d2
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
48a18: 2228 0008 movel %a0@(8),%d1
48a1c: 262a 0006 movel %a2@(6),%d3
48a20: 0281 0000 ffff andil #65535,%d1
48a26: 0283 0000 ffff andil #65535,%d3
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
48a2c: 342a 0012 movew %a2@(18),%d2
information->inactive_per_block[ block ]--;
48a30: 206a 002a moveal %a2@(42),%a0
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
48a34: 9283 subl %d3,%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
48a36: 4c42 1001 remul %d2,%d1,%d1
information->inactive_per_block[ block ]--;
information->inactive--;
48a3a: 326a 0028 moveaw %a2@(40),%a1
block = (uint32_t) _Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
information->inactive_per_block[ block ]--;
48a3e: e589 lsll #2,%d1
information->inactive--;
48a40: 5389 subql #1,%a1
block = (uint32_t) _Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
information->inactive_per_block[ block ]--;
48a42: d1c1 addal %d1,%a0
48a44: 5390 subql #1,%a0@
information->inactive--;
48a46: 3549 0028 movew %a1,%a2@(40)
);
}
#endif
return the_object;
}
48a4a: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
48a50: 4e5e unlk %fp
48a52: 4e75 rts
* If the list is empty then we are out of objects and need to
* extend information base.
*/
if ( !the_object ) {
_Objects_Extend_information( information );
48a54: 2f0a movel %a2,%sp@-
48a56: 4eb9 0004 8aa0 jsr 48aa0 <_Objects_Extend_information>
the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
48a5c: 2f02 movel %d2,%sp@-
48a5e: 4e93 jsr %a3@
}
if ( the_object ) {
48a60: 508f addql #8,%sp
48a62: 4a80 tstl %d0
48a64: 66ae bnes 48a14 <_Objects_Allocate+0x30>
* still attempts to create the object, the information block
* should be all zeroed out because it is in the BSS. So let's
* check that code for this manager is even present.
*/
if ( information->size == 0 )
return NULL;
48a66: 4280 clrl %d0
);
}
#endif
return the_object;
}
48a68: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
48a6e: 4e5e unlk %fp
...
00048a74 <_Objects_Close>:
void _Objects_Close(
Objects_Information *information,
Objects_Control *the_object
)
{
48a74: 4e56 0000 linkw %fp,#0
48a78: 226e 000c moveal %fp@(12),%a1
48a7c: 206e 0008 moveal %fp@(8),%a0
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
48a80: 2029 0008 movel %a1@(8),%d0
48a84: 2f0a movel %a2,%sp@-
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48a86: 2468 0018 moveal %a0@(24),%a2
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
48a8a: 0280 0000 ffff andil #65535,%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48a90: 42b2 0c00 clrl %a2@(00000000,%d0:l:4)
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
}
48a94: 245f moveal %sp@+,%a2
48a96: 4e5e unlk %fp
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
48a98: 4ef9 0004 9024 jmp 49024 <_Objects_Namespace_remove>
...
00048aa0 <_Objects_Extend_information>:
*/
void _Objects_Extend_information(
Objects_Information *information
)
{
48aa0: 4e56 ffc8 linkw %fp,#-56
48aa4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
48aa8: 246e 0008 moveal %fp@(8),%a2
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
minimum_index = _Objects_Get_index( information->minimum_id );
48aac: 2a2a 0006 movel %a2@(6),%d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
48ab0: 206a 002e moveal %a2@(46),%a0
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
minimum_index = _Objects_Get_index( information->minimum_id );
48ab4: 0285 0000 ffff andil #65535,%d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
48aba: 4a88 tstl %a0
48abc: 6700 020c beqw 48cca <_Objects_Extend_information+0x22a>
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
48ac0: 3e2a 000e movew %a2@(14),%d7
48ac4: 302a 0012 movew %a2@(18),%d0
48ac8: 3807 movew %d7,%d4
48aca: 0284 0000 ffff andil #65535,%d4
48ad0: 88c0 divuw %d0,%d4
48ad2: 0284 0000 ffff andil #65535,%d4
for ( ; block < block_count; block++ ) {
48ad8: 6700 0260 beqw 48d3a <_Objects_Extend_information+0x29a>
if ( information->object_blocks[ block ] == NULL ) {
48adc: 4a90 tstl %a0@
48ade: 6700 026c beqw 48d4c <_Objects_Extend_information+0x2ac>
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
48ae2: 5888 addql #4,%a0
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
minimum_index = _Objects_Get_index( information->minimum_id );
48ae4: 2605 movel %d5,%d3
index_base = minimum_index;
block = 0;
48ae6: 4282 clrl %d2
48ae8: 0280 0000 ffff andil #65535,%d0
for ( ; block < block_count; block++ ) {
if ( information->object_blocks[ block ] == NULL ) {
do_extend = false;
break;
} else
index_base += information->allocation_size;
48aee: d680 addl %d0,%d3
if ( information->object_blocks == NULL )
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
48af0: 5282 addql #1,%d2
48af2: b484 cmpl %d4,%d2
48af4: 6400 01ac bccw 48ca2 <_Objects_Extend_information+0x202>
if ( information->object_blocks[ block ] == NULL ) {
48af8: 4a98 tstl %a0@+
48afa: 66f2 bnes 48aee <_Objects_Extend_information+0x4e>
do_extend = false;
48afc: 97cb subal %a3,%a3
} else
index_base += information->allocation_size;
}
}
maximum = (uint32_t) information->maximum + information->allocation_size;
48afe: 0287 0000 ffff andil #65535,%d7
48b04: de80 addl %d0,%d7
/*
* We need to limit the number of objects to the maximum number
* representable in the index portion of the object Id. In the
* case of 16-bit Ids, this is only 256 object instances.
*/
if ( maximum > OBJECTS_ID_FINAL_INDEX ) {
48b06: 0c87 0000 ffff cmpil #65535,%d7
48b0c: 6200 018a bhiw 48c98 <_Objects_Extend_information+0x1f8>
/*
* Allocate the name table, and the objects and if it fails either return or
* generate a fatal error depending on auto-extending being active.
*/
block_size = information->allocation_size * information->size;
48b10: 41ea 0014 lea %a2@(20),%a0
48b14: 4c10 0800 mulsl %a0@,%d0
if ( information->auto_extend ) {
48b18: 4a2a 0010 tstb %a2@(16)
48b1c: 6700 018c beqw 48caa <_Objects_Extend_information+0x20a>
new_object_block = _Workspace_Allocate( block_size );
48b20: 2f00 movel %d0,%sp@-
48b22: 4eb9 0004 abf4 jsr 4abf4 <_Workspace_Allocate>
if ( !new_object_block )
48b28: 588f addql #4,%sp
* Allocate the name table, and the objects and if it fails either return or
* generate a fatal error depending on auto-extending being active.
*/
block_size = information->allocation_size * information->size;
if ( information->auto_extend ) {
new_object_block = _Workspace_Allocate( block_size );
48b2a: 2c00 movel %d0,%d6
if ( !new_object_block )
48b2c: 6700 016a beqw 48c98 <_Objects_Extend_information+0x1f8>
}
/*
* Do we need to grow the tables?
*/
if ( do_extend ) {
48b30: 300b movew %a3,%d0
48b32: 4a00 tstb %d0
48b34: 6700 00c4 beqw 48bfa <_Objects_Extend_information+0x15a>
*/
/*
* Up the block count and maximum
*/
block_count++;
48b38: 2844 moveal %d4,%a4
48b3a: 528c addql #1,%a4
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
48b3c: 2007 movel %d7,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
48b3e: 41f4 ca00 lea %a4@(00000000,%a4:l:2),%a0
((maximum + minimum_index) * sizeof(Objects_Control *));
48b42: d088 addl %a0,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
48b44: d085 addl %d5,%d0
block_count++;
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
48b46: e588 lsll #2,%d0
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
if ( information->auto_extend ) {
48b48: 4a2a 0010 tstb %a2@(16)
48b4c: 6700 016c beqw 48cba <_Objects_Extend_information+0x21a>
object_blocks = _Workspace_Allocate( block_size );
48b50: 2f00 movel %d0,%sp@-
48b52: 4eb9 0004 abf4 jsr 4abf4 <_Workspace_Allocate>
if ( !object_blocks ) {
48b58: 588f addql #4,%sp
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
if ( information->auto_extend ) {
object_blocks = _Workspace_Allocate( block_size );
48b5a: 2640 moveal %d0,%a3
if ( !object_blocks ) {
48b5c: 4a80 tstl %d0
48b5e: 6700 01c6 beqw 48d26 <_Objects_Extend_information+0x286>
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
48b62: 220c movel %a4,%d1
* Take the block count down. Saves all the (block_count - 1)
* in the copies.
*/
block_count--;
if ( information->maximum > minimum_index ) {
48b64: 4280 clrl %d0
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
48b66: e589 lsll #2,%d1
* Take the block count down. Saves all the (block_count - 1)
* in the copies.
*/
block_count--;
if ( information->maximum > minimum_index ) {
48b68: 302a 000e movew %a2@(14),%d0
48b6c: 43f3 1800 lea %a3@(00000000,%d1:l),%a1
48b70: 49f1 1800 lea %a1@(00000000,%d1:l),%a4
48b74: b085 cmpl %d5,%d0
48b76: 6200 016a bhiw 48ce2 <_Objects_Extend_information+0x242>
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
48b7a: 4a85 tstl %d5
48b7c: 670c beqs 48b8a <_Objects_Extend_information+0xea><== NEVER TAKEN
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
48b7e: 204c moveal %a4,%a0
48b80: 4bf4 5c00 lea %a4@(00000000,%d5:l:4),%a5
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
local_table[ index ] = NULL;
48b84: 4298 clrl %a0@+
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
48b86: bbc8 cmpal %a0,%a5
48b88: 66fa bnes 48b84 <_Objects_Extend_information+0xe4><== NEVER TAKEN
48b8a: e58c lsll #2,%d4
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
48b8c: 4280 clrl %d0
48b8e: 2203 movel %d3,%d1
48b90: 302a 0012 movew %a2@(18),%d0
}
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
48b94: 42b3 4800 clrl %a3@(00000000,%d4:l)
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
48b98: d280 addl %d0,%d1
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
48b9a: 42b1 4800 clrl %a1@(00000000,%d4:l)
for ( index=index_base ;
48b9e: b283 cmpl %d3,%d1
48ba0: 630e blss 48bb0 <_Objects_Extend_information+0x110><== NEVER TAKEN
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
48ba2: 4281 clrl %d1
48ba4: 41f4 3c00 lea %a4@(00000000,%d3:l:4),%a0
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
48ba8: 4298 clrl %a0@+
48baa: 5281 addql #1,%d1
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
48bac: b081 cmpl %d1,%d0
48bae: 66f8 bnes 48ba8 <_Objects_Extend_information+0x108>
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
}
_ISR_Disable( level );
48bb0: 203c 0000 0700 movel #1792,%d0
48bb6: 40c4 movew %sr,%d4
48bb8: 8084 orl %d4,%d0
48bba: 46c0 movew %d0,%sr
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
48bbc: 2012 movel %a2@,%d0
48bbe: 7a18 moveq #24,%d5
information->object_blocks = object_blocks;
information->inactive_per_block = inactive_per_block;
information->local_table = local_table;
information->maximum = (Objects_Maximum) maximum;
information->maximum_id = _Objects_Build_id(
48bc0: 4281 clrl %d1
48bc2: eba8 lsll %d5,%d0
48bc4: 322a 0004 movew %a2@(4),%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
48bc8: 1a3c 001b moveb #27,%d5
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
48bcc: 08c0 0010 bset #16,%d0
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
48bd0: eba9 lsll %d5,%d1
local_table[ index ] = NULL;
}
_ISR_Disable( level );
old_tables = information->object_blocks;
48bd2: 206a 002e moveal %a2@(46),%a0
48bd6: 8081 orl %d1,%d0
information->object_blocks = object_blocks;
48bd8: 254b 002e movel %a3,%a2@(46)
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
48bdc: 8087 orl %d7,%d0
information->inactive_per_block = inactive_per_block;
48bde: 2549 002a movel %a1,%a2@(42)
information->local_table = local_table;
information->maximum = (Objects_Maximum) maximum;
48be2: 3547 000e movew %d7,%a2@(14)
old_tables = information->object_blocks;
information->object_blocks = object_blocks;
information->inactive_per_block = inactive_per_block;
information->local_table = local_table;
48be6: 254c 0018 movel %a4,%a2@(24)
48bea: 2540 000a movel %d0,%a2@(10)
information->the_class,
_Objects_Local_node,
information->maximum
);
_ISR_Enable( level );
48bee: 46c4 movew %d4,%sr
_Workspace_Free( old_tables );
48bf0: 2f08 movel %a0,%sp@-
48bf2: 4eb9 0004 ac10 jsr 4ac10 <_Workspace_Free>
48bf8: 588f addql #4,%sp
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
48bfa: 206a 002e moveal %a2@(46),%a0
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
48bfe: 4280 clrl %d0
48c00: 280e movel %fp,%d4
48c02: 0684 ffff fff4 addil #-12,%d4
48c08: 47f9 0004 7f74 lea 47f74 <_Chain_Get>,%a3
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
48c0e: 2a0a movel %a2,%d5
48c10: 0685 0000 001c addil #28,%d5
48c16: 49f9 0004 7f3c lea 47f3c <_Chain_Append>,%a4
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
48c1c: e58a lsll #2,%d2
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
48c1e: 302a 0012 movew %a2@(18),%d0
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
48c22: 2186 2800 movel %d6,%a0@(00000000,%d2:l)
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
48c26: 2f2a 0014 movel %a2@(20),%sp@-
48c2a: 206a 002e moveal %a2@(46),%a0
48c2e: 2f00 movel %d0,%sp@-
48c30: 2f30 2800 movel %a0@(00000000,%d2:l),%sp@-
48c34: 2f04 movel %d4,%sp@-
48c36: 4eb9 0004 7fb0 jsr 47fb0 <_Chain_Initialize>
/*
* Move from the local chain, initialise, then append to the inactive chain
*/
index = index_base;
while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
48c3c: 4fef 0010 lea %sp@(16),%sp
48c40: 2f04 movel %d4,%sp@-
48c42: 4e93 jsr %a3@
48c44: 588f addql #4,%sp
48c46: 4a80 tstl %d0
48c48: 6734 beqs 48c7e <_Objects_Extend_information+0x1de><== NEVER TAKEN
48c4a: 2212 movel %a2@,%d1
48c4c: 7e18 moveq #24,%d7
the_object->id = _Objects_Build_id(
48c4e: 4286 clrl %d6
48c50: 2040 moveal %d0,%a0
48c52: 3c2a 0004 movew %a2@(4),%d6
48c56: efa9 lsll %d7,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
48c58: 1e3c 001b moveb #27,%d7
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
48c5c: 08c1 0010 bset #16,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
48c60: efae lsll %d7,%d6
48c62: 8286 orl %d6,%d1
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
48c64: 8283 orl %d3,%d1
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
48c66: 5283 addql #1,%d3
48c68: 2141 0008 movel %d1,%a0@(8)
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
48c6c: 2f00 movel %d0,%sp@-
48c6e: 2f05 movel %d5,%sp@-
48c70: 4e94 jsr %a4@
index++;
48c72: 508f addql #8,%sp
/*
* Move from the local chain, initialise, then append to the inactive chain
*/
index = index_base;
while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
48c74: 2f04 movel %d4,%sp@-
48c76: 4e93 jsr %a3@
48c78: 588f addql #4,%sp
48c7a: 4a80 tstl %d0
48c7c: 66cc bnes 48c4a <_Objects_Extend_information+0x1aa>
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
48c7e: 4281 clrl %d1
48c80: 302a 0012 movew %a2@(18),%d0
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
48c84: 326a 0028 moveaw %a2@(40),%a1
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
48c88: 206a 002a moveal %a2@(42),%a0
48c8c: 3200 movew %d0,%d1
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
48c8e: d089 addl %a1,%d0
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
48c90: 2181 2800 movel %d1,%a0@(00000000,%d2:l)
information->inactive =
48c94: 3540 0028 movew %d0,%a2@(40)
(Objects_Maximum)(information->inactive + information->allocation_size);
}
48c98: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
48c9e: 4e5e unlk %fp
48ca0: 4e75 rts
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
48ca2: 367c 0001 moveaw #1,%a3
48ca6: 6000 fe56 braw 48afe <_Objects_Extend_information+0x5e>
if ( information->auto_extend ) {
new_object_block = _Workspace_Allocate( block_size );
if ( !new_object_block )
return;
} else {
new_object_block = _Workspace_Allocate_or_fatal_error( block_size );
48caa: 2f00 movel %d0,%sp@-
48cac: 4eb9 0004 ac2a jsr 4ac2a <_Workspace_Allocate_or_fatal_error>
48cb2: 588f addql #4,%sp
48cb4: 2c00 movel %d0,%d6
48cb6: 6000 fe78 braw 48b30 <_Objects_Extend_information+0x90>
if ( !object_blocks ) {
_Workspace_Free( new_object_block );
return;
}
} else {
object_blocks = _Workspace_Allocate_or_fatal_error( block_size );
48cba: 2f00 movel %d0,%sp@-
48cbc: 4eb9 0004 ac2a jsr 4ac2a <_Workspace_Allocate_or_fatal_error>
48cc2: 588f addql #4,%sp
48cc4: 2640 moveal %d0,%a3
48cc6: 6000 fe9a braw 48b62 <_Objects_Extend_information+0xc2>
48cca: 4280 clrl %d0
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
minimum_index = _Objects_Get_index( information->minimum_id );
48ccc: 2605 movel %d5,%d3
index_base = minimum_index;
block = 0;
48cce: 4282 clrl %d2
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
block_count = 0;
48cd0: 4284 clrl %d4
48cd2: 3e2a 000e movew %a2@(14),%d7
48cd6: 302a 0012 movew %a2@(18),%d0
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
48cda: 367c 0001 moveaw #1,%a3
48cde: 6000 fe1e braw 48afe <_Objects_Extend_information+0x5e>
/*
* Copy each section of the table over. This has to be performed as
* separate parts as size of each block has changed.
*/
memcpy( object_blocks,
48ce2: 4bf9 0004 e964 lea 4e964 <memcpy>,%a5
48ce8: e58c lsll #2,%d4
48cea: 2f04 movel %d4,%sp@-
48cec: 2f2a 002e movel %a2@(46),%sp@-
48cf0: 2d49 fff0 movel %a1,%fp@(-16)
48cf4: 2f0b movel %a3,%sp@-
48cf6: 4e95 jsr %a5@
information->object_blocks,
block_count * sizeof(void*) );
memcpy( inactive_per_block,
48cf8: 226e fff0 moveal %fp@(-16),%a1
48cfc: 2f04 movel %d4,%sp@-
48cfe: 2f2a 002a movel %a2@(42),%sp@-
48d02: 2f09 movel %a1,%sp@-
48d04: 4e95 jsr %a5@
information->inactive_per_block,
block_count * sizeof(uint32_t) );
memcpy( local_table,
information->local_table,
(information->maximum + minimum_index) * sizeof(Objects_Control *) );
48d06: 4280 clrl %d0
48d08: 302a 000e movew %a2@(14),%d0
48d0c: da80 addl %d0,%d5
information->object_blocks,
block_count * sizeof(void*) );
memcpy( inactive_per_block,
information->inactive_per_block,
block_count * sizeof(uint32_t) );
memcpy( local_table,
48d0e: e58d lsll #2,%d5
48d10: 2f05 movel %d5,%sp@-
48d12: 2f2a 0018 movel %a2@(24),%sp@-
48d16: 2f0c movel %a4,%sp@-
48d18: 4e95 jsr %a5@
48d1a: 226e fff0 moveal %fp@(-16),%a1
48d1e: 4fef 0024 lea %sp@(36),%sp
48d22: 6000 fe68 braw 48b8c <_Objects_Extend_information+0xec>
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
if ( information->auto_extend ) {
object_blocks = _Workspace_Allocate( block_size );
if ( !object_blocks ) {
_Workspace_Free( new_object_block );
48d26: 2f06 movel %d6,%sp@-
48d28: 4eb9 0004 ac10 jsr 4ac10 <_Workspace_Free>
48d2e: 588f addql #4,%sp
}
information->inactive_per_block[ block ] = information->allocation_size;
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
}
48d30: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
48d36: 4e5e unlk %fp
48d38: 4e75 rts
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
minimum_index = _Objects_Get_index( information->minimum_id );
48d3a: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
48d3c: 4282 clrl %d2 <== NOT EXECUTED
48d3e: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
48d44: 367c 0001 moveaw #1,%a3 <== NOT EXECUTED
48d48: 6000 fdb4 braw 48afe <_Objects_Extend_information+0x5e><== NOT EXECUTED
minimum_index = _Objects_Get_index( information->minimum_id );
48d4c: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
48d4e: 4282 clrl %d2 <== NOT EXECUTED
48d50: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
if ( information->object_blocks[ block ] == NULL ) {
do_extend = false;
48d56: 97cb subal %a3,%a3 <== NOT EXECUTED
48d58: 6000 fda4 braw 48afe <_Objects_Extend_information+0x5e><== NOT EXECUTED
00048e14 <_Objects_Get_information>:
Objects_Information *_Objects_Get_information(
Objects_APIs the_api,
uint16_t the_class
)
{
48e14: 4e56 0000 linkw %fp,#0
48e18: 2f03 movel %d3,%sp@-
48e1a: 262e 0008 movel %fp@(8),%d3
48e1e: 2f02 movel %d2,%sp@-
48e20: 342e 000e movew %fp@(14),%d2
Objects_Information *info;
int the_class_api_maximum;
if ( !the_class )
48e24: 6740 beqs 48e66 <_Objects_Get_information+0x52>
/*
* This call implicitly validates the_api so we do not call
* _Objects_Is_api_valid above here.
*/
the_class_api_maximum = _Objects_API_maximum_class( the_api );
48e26: 2f03 movel %d3,%sp@-
48e28: 4eb9 0004 c9d0 jsr 4c9d0 <_Objects_API_maximum_class>
if ( the_class_api_maximum == 0 )
48e2e: 588f addql #4,%sp
48e30: 4a80 tstl %d0
48e32: 6732 beqs 48e66 <_Objects_Get_information+0x52>
return NULL;
if ( the_class > (uint32_t) the_class_api_maximum )
48e34: 0282 0000 ffff andil #65535,%d2
48e3a: b480 cmpl %d0,%d2
48e3c: 6228 bhis 48e66 <_Objects_Get_information+0x52>
return NULL;
if ( !_Objects_Information_table[ the_api ] )
48e3e: 41f9 0005 f9c2 lea 5f9c2 <_Objects_Information_table>,%a0
48e44: 2070 3c00 moveal %a0@(00000000,%d3:l:4),%a0
48e48: 4a88 tstl %a0
48e4a: 671a beqs 48e66 <_Objects_Get_information+0x52> <== NEVER TAKEN
return NULL;
info = _Objects_Information_table[ the_api ][ the_class ];
48e4c: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0
if ( !info )
48e50: 6714 beqs 48e66 <_Objects_Get_information+0x52> <== NEVER TAKEN
* In a multprocessing configuration, we may access remote objects.
* Thus we may have 0 local instances and still have a valid object
* pointer.
*/
#if !defined(RTEMS_MULTIPROCESSING)
if ( info->maximum == 0 )
48e52: 2040 moveal %d0,%a0
48e54: 4a68 000e tstw %a0@(14)
48e58: 670c beqs 48e66 <_Objects_Get_information+0x52>
return NULL;
#endif
return info;
}
48e5a: 242e fff8 movel %fp@(-8),%d2
48e5e: 262e fffc movel %fp@(-4),%d3
48e62: 4e5e unlk %fp
48e64: 4e75 rts
48e66: 242e fff8 movel %fp@(-8),%d2
{
Objects_Information *info;
int the_class_api_maximum;
if ( !the_class )
return NULL;
48e6a: 4280 clrl %d0
if ( info->maximum == 0 )
return NULL;
#endif
return info;
}
48e6c: 262e fffc movel %fp@(-4),%d3
48e70: 4e5e unlk %fp <== NOT EXECUTED
0005598c <_Objects_Get_name_as_string>:
char *_Objects_Get_name_as_string(
Objects_Id id,
size_t length,
char *name
)
{
5598c: 4e56 ffdc linkw %fp,#-36
55990: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
55994: 242e 000c movel %fp@(12),%d2
55998: 262e 0010 movel %fp@(16),%d3
char lname[5];
Objects_Control *the_object;
Objects_Locations location;
Objects_Id tmpId;
if ( length == 0 )
5599c: 4a82 tstl %d2
5599e: 6700 00c6 beqw 55a66 <_Objects_Get_name_as_string+0xda>
return NULL;
if ( name == NULL )
559a2: 4a83 tstl %d3
559a4: 6700 00c0 beqw 55a66 <_Objects_Get_name_as_string+0xda>
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
559a8: 4aae 0008 tstl %fp@(8)
559ac: 6600 00b0 bnew 55a5e <_Objects_Get_name_as_string+0xd2>
559b0: 2079 0006 df62 moveal 6df62 <_Per_CPU_Information+0xe>,%a0
559b6: 2468 0008 moveal %a0@(8),%a2
information = _Objects_Get_information_id( tmpId );
559ba: 2f0a movel %a2,%sp@-
559bc: 4eb9 0004 eac4 jsr 4eac4 <_Objects_Get_information_id>
if ( !information )
559c2: 588f addql #4,%sp
559c4: 4a80 tstl %d0
559c6: 6700 009e beqw 55a66 <_Objects_Get_name_as_string+0xda>
return NULL;
the_object = _Objects_Get( information, tmpId, &location );
559ca: 486e fff6 pea %fp@(-10)
559ce: 2f0a movel %a2,%sp@-
559d0: 2f00 movel %d0,%sp@-
559d2: 4eb9 0004 ebb8 jsr 4ebb8 <_Objects_Get>
switch ( location ) {
559d8: 4fef 000c lea %sp@(12),%sp
559dc: 4aae fff6 tstl %fp@(-10)
559e0: 6600 0084 bnew 55a66 <_Objects_Get_name_as_string+0xda>
if ( information->is_string ) {
s = the_object->name.name_p;
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
559e4: 2040 moveal %d0,%a0
lname[ 0 ] = (u32_name >> 24) & 0xff;
559e6: 7818 moveq #24,%d4
if ( information->is_string ) {
s = the_object->name.name_p;
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
559e8: 2028 000c movel %a0@(12),%d0
lname[ 0 ] = (u32_name >> 24) & 0xff;
559ec: 2200 movel %d0,%d1
559ee: e8a9 lsrl %d4,%d1
lname[ 1 ] = (u32_name >> 16) & 0xff;
lname[ 2 ] = (u32_name >> 8) & 0xff;
559f0: 2800 movel %d0,%d4
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
lname[ 1 ] = (u32_name >> 16) & 0xff;
559f2: 2a00 movel %d0,%d5
lname[ 2 ] = (u32_name >> 8) & 0xff;
559f4: e08c lsrl #8,%d4
lname[ 3 ] = (u32_name >> 0) & 0xff;
559f6: 1d40 fffe moveb %d0,%fp@(-2)
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
lname[ 1 ] = (u32_name >> 16) & 0xff;
559fa: 4245 clrw %d5
559fc: 4845 swap %d5
lname[ 2 ] = (u32_name >> 8) & 0xff;
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
559fe: 4200 clrb %d0
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
lname[ 1 ] = (u32_name >> 16) & 0xff;
lname[ 2 ] = (u32_name >> 8) & 0xff;
55a00: 1d44 fffd moveb %d4,%fp@(-3)
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
55a04: 7801 moveq #1,%d4
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
55a06: 1d41 fffb moveb %d1,%fp@(-5)
lname[ 1 ] = (u32_name >> 16) & 0xff;
55a0a: 1d45 fffc moveb %d5,%fp@(-4)
lname[ 2 ] = (u32_name >> 8) & 0xff;
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
55a0e: 1d40 ffff moveb %d0,%fp@(-1)
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
55a12: b882 cmpl %d2,%d4
55a14: 675e beqs 55a74 <_Objects_Get_name_as_string+0xe8><== NEVER TAKEN
55a16: 4a01 tstb %d1
55a18: 675a beqs 55a74 <_Objects_Get_name_as_string+0xe8>
* This method objects the name of an object and returns its name
* in the form of a C string. It attempts to be careful about
* overflowing the user's string and about returning unprintable characters.
*/
char *_Objects_Get_name_as_string(
55a1a: 43ee fffc lea %fp@(-4),%a1
55a1e: 2043 moveal %d3,%a0
55a20: 47f6 28fa lea %fp@(fffffffa,%d2:l),%a3
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
*d = (isprint((unsigned char)*s)) ? *s : '*';
55a24: 4282 clrl %d2
55a26: 1401 moveb %d1,%d2
55a28: 2479 0006 c074 moveal 6c074 <__ctype_ptr__>,%a2
55a2e: 1432 2801 moveb %a2@(00000001,%d2:l),%d2
55a32: 49c2 extbl %d2
55a34: 0282 0000 0097 andil #151,%d2
55a3a: 6602 bnes 55a3e <_Objects_Get_name_as_string+0xb2>
55a3c: 722a moveq #42,%d1
55a3e: 10c1 moveb %d1,%a0@+
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
55a40: 2448 moveal %a0,%a2
55a42: b7c9 cmpal %a1,%a3
55a44: 6704 beqs 55a4a <_Objects_Get_name_as_string+0xbe>
55a46: 1219 moveb %a1@+,%d1
55a48: 66da bnes 55a24 <_Objects_Get_name_as_string+0x98>
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
55a4a: 4212 clrb %a2@
_Thread_Enable_dispatch();
55a4c: 4eb9 0004 f9a8 jsr 4f9a8 <_Thread_Enable_dispatch>
return name;
}
return NULL; /* unreachable path */
}
55a52: 2003 movel %d3,%d0
55a54: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3
55a5a: 4e5e unlk %fp
55a5c: 4e75 rts
return NULL;
if ( name == NULL )
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
55a5e: 246e 0008 moveal %fp@(8),%a2
55a62: 6000 ff56 braw 559ba <_Objects_Get_name_as_string+0x2e>
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE:
/* not supported */
#endif
case OBJECTS_ERROR:
return NULL;
55a66: 4283 clrl %d3
_Thread_Enable_dispatch();
return name;
}
return NULL; /* unreachable path */
}
55a68: 2003 movel %d3,%d0
55a6a: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3
55a70: 4e5e unlk %fp
55a72: 4e75 rts
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
55a74: 2443 moveal %d3,%a2
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
55a76: 4212 clrb %a2@
_Thread_Enable_dispatch();
55a78: 4eb9 0004 f9a8 jsr 4f9a8 <_Thread_Enable_dispatch>
55a7e: 60d2 bras 55a52 <_Objects_Get_name_as_string+0xc6>
0005a440 <_Objects_Get_no_protection>:
/*
* You can't just extract the index portion or you can get tricked
* by a value between 1 and maximum.
*/
index = id - information->minimum_id + 1;
5a440: 7001 moveq #1,%d0
if ( information->maximum >= index ) {
5a442: 4281 clrl %d1
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5a444: 4e56 0000 linkw %fp,#0
5a448: 206e 0008 moveal %fp@(8),%a0
/*
* You can't just extract the index portion or you can get tricked
* by a value between 1 and maximum.
*/
index = id - information->minimum_id + 1;
5a44c: 90a8 0006 subl %a0@(6),%d0
5a450: d0ae 000c addl %fp@(12),%d0
if ( information->maximum >= index ) {
5a454: 3228 000e movew %a0@(14),%d1
5a458: b280 cmpl %d0,%d1
5a45a: 6514 bcss 5a470 <_Objects_Get_no_protection+0x30>
if ( (the_object = information->local_table[ index ]) != NULL ) {
5a45c: 2068 0018 moveal %a0@(24),%a0
5a460: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
5a464: 670a beqs 5a470 <_Objects_Get_no_protection+0x30><== NEVER TAKEN
*location = OBJECTS_LOCAL;
5a466: 206e 0010 moveal %fp@(16),%a0
* This isn't supported or required yet for Global objects so
* if it isn't local, we don't find it.
*/
*location = OBJECTS_ERROR;
return NULL;
}
5a46a: 4e5e unlk %fp
*/
index = id - information->minimum_id + 1;
if ( information->maximum >= index ) {
if ( (the_object = information->local_table[ index ]) != NULL ) {
*location = OBJECTS_LOCAL;
5a46c: 4290 clrl %a0@
* This isn't supported or required yet for Global objects so
* if it isn't local, we don't find it.
*/
*location = OBJECTS_ERROR;
return NULL;
}
5a46e: 4e75 rts
/*
* This isn't supported or required yet for Global objects so
* if it isn't local, we don't find it.
*/
*location = OBJECTS_ERROR;
5a470: 226e 0010 moveal %fp@(16),%a1
5a474: 7001 moveq #1,%d0
return NULL;
}
5a476: 4e5e unlk %fp
/*
* This isn't supported or required yet for Global objects so
* if it isn't local, we don't find it.
*/
*location = OBJECTS_ERROR;
5a478: 2280 movel %d0,%a1@
return NULL;
5a47a: 4280 clrl %d0
}
...
0004ec20 <_Objects_Id_to_name>:
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
Objects_Id id,
Objects_Name *name
)
{
4ec20: 4e56 fffc linkw %fp,#-4
4ec24: 202e 0008 movel %fp@(8),%d0
4ec28: 2f02 movel %d2,%sp@-
/*
* Caller is trusted for name != NULL.
*/
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
4ec2a: 4a80 tstl %d0
4ec2c: 6676 bnes 4eca4 <_Objects_Id_to_name+0x84>
4ec2e: 2079 0006 df62 moveal 6df62 <_Per_CPU_Information+0xe>,%a0
4ec34: 2228 0008 movel %a0@(8),%d1
4ec38: 7418 moveq #24,%d2
4ec3a: 2001 movel %d1,%d0
4ec3c: e4a8 lsrl %d2,%d0
4ec3e: 143c 0007 moveb #7,%d2
4ec42: c082 andl %d2,%d0
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
4ec44: 143c 0002 moveb #2,%d2
4ec48: 2040 moveal %d0,%a0
4ec4a: 5388 subql #1,%a0
4ec4c: b488 cmpl %a0,%d2
4ec4e: 654a bcss 4ec9a <_Objects_Id_to_name+0x7a>
the_api = _Objects_Get_API( tmpId );
if ( !_Objects_Is_api_valid( the_api ) )
return OBJECTS_INVALID_ID;
if ( !_Objects_Information_table[ the_api ] )
4ec50: 41f9 0006 dd6e lea 6dd6e <_Objects_Information_table>,%a0
4ec56: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0
4ec5a: 4a88 tstl %a0
4ec5c: 673c beqs 4ec9a <_Objects_Id_to_name+0x7a>
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
4ec5e: 2001 movel %d1,%d0
4ec60: 741b moveq #27,%d2
4ec62: e4a8 lsrl %d2,%d0
return OBJECTS_INVALID_ID;
the_class = _Objects_Get_class( tmpId );
information = _Objects_Information_table[ the_api ][ the_class ];
4ec64: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
if ( !information )
4ec68: 6730 beqs 4ec9a <_Objects_Id_to_name+0x7a> <== NEVER TAKEN
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string )
return OBJECTS_INVALID_ID;
#endif
the_object = _Objects_Get( information, tmpId, &ignored_location );
4ec6a: 486e fffc pea %fp@(-4)
4ec6e: 2f01 movel %d1,%sp@-
4ec70: 2f00 movel %d0,%sp@-
4ec72: 4eb9 0004 ebb8 jsr 4ebb8 <_Objects_Get>
if ( !the_object )
4ec78: 4fef 000c lea %sp@(12),%sp
4ec7c: 4a80 tstl %d0
4ec7e: 671a beqs 4ec9a <_Objects_Id_to_name+0x7a>
return OBJECTS_INVALID_ID;
*name = the_object->name;
4ec80: 206e 000c moveal %fp@(12),%a0
4ec84: 2240 moveal %d0,%a1
4ec86: 20a9 000c movel %a1@(12),%a0@
_Thread_Enable_dispatch();
4ec8a: 4eb9 0004 f9a8 jsr 4f9a8 <_Thread_Enable_dispatch>
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
4ec90: 242e fff8 movel %fp@(-8),%d2
if ( !the_object )
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
4ec94: 4280 clrl %d0
}
4ec96: 4e5e unlk %fp
4ec98: 4e75 rts
4ec9a: 242e fff8 movel %fp@(-8),%d2
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
the_api = _Objects_Get_API( tmpId );
if ( !_Objects_Is_api_valid( the_api ) )
return OBJECTS_INVALID_ID;
4ec9e: 7003 moveq #3,%d0
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
4eca0: 4e5e unlk %fp
4eca2: 4e75 rts
/*
* Caller is trusted for name != NULL.
*/
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
4eca4: 2200 movel %d0,%d1
4eca6: 6090 bras 4ec38 <_Objects_Id_to_name+0x18>
00048f44 <_Objects_Initialize_information>:
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
48f44: 4e56 ffec linkw %fp,#-20
48f48: 202e 000c movel %fp@(12),%d0
48f4c: 48d7 043c moveml %d2-%d5/%a2,%sp@
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
48f50: 45f9 0005 f9c2 lea 5f9c2 <_Objects_Information_table>,%a2
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
48f56: 4282 clrl %d2
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
48f58: 4283 clrl %d3
48f5a: 2472 0c00 moveal %a2@(00000000,%d0:l:4),%a2
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
48f5e: 206e 0008 moveal %fp@(8),%a0
48f62: 342e 001a movew %fp@(26),%d2
48f66: 226e 0010 moveal %fp@(16),%a1
uint32_t index;
#endif
information->the_api = the_api;
information->the_class = the_class;
information->size = size;
48f6a: 2142 0014 movel %d2,%a0@(20)
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
48f6e: 222e 0014 movel %fp@(20),%d1
information->the_class = the_class;
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
information->object_blocks = 0;
information->inactive = 0;
48f72: 4242 clrw %d2
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
48f74: 3609 movew %a1,%d3
Objects_Maximum maximum_per_allocation;
#if defined(RTEMS_MULTIPROCESSING)
uint32_t index;
#endif
information->the_api = the_api;
48f76: 2080 movel %d0,%a0@
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
48f78: 282e 0020 movel %fp@(32),%d4
information->the_class = the_class;
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
information->object_blocks = 0;
information->inactive = 0;
48f7c: 3142 0028 movew %d2,%a0@(40)
/*
* Set the maximum value to 0. It will be updated when objects are
* added to the inactive set from _Objects_Extend_information()
*/
information->maximum = 0;
48f80: 3142 000e movew %d2,%a0@(14)
* @retval true Unlimited objects are available.
* @retval false The object count is fixed.
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_unlimited( uint32_t maximum )
{
return (maximum & OBJECTS_UNLIMITED_OBJECTS) != 0;
48f84: 2401 movel %d1,%d2
#endif
information->the_api = the_api;
information->the_class = the_class;
information->size = size;
information->local_table = 0;
48f86: 42a8 0018 clrl %a0@(24)
#if defined(RTEMS_MULTIPROCESSING)
uint32_t index;
#endif
information->the_api = the_api;
information->the_class = the_class;
48f8a: 3149 0004 movew %a1,%a0@(4)
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
48f8e: 42a8 002a clrl %a0@(42)
48f92: d482 addl %d2,%d2
48f94: 9582 subxl %d2,%d2
48f96: 4482 negl %d2
information->object_blocks = 0;
48f98: 42a8 002e clrl %a0@(46)
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
48f9c: 2588 3c00 movel %a0,%a2@(00000000,%d3:l:4)
/*
* Are we operating in limited or unlimited (e.g. auto-extend) mode.
*/
information->auto_extend = _Objects_Is_unlimited( maximum );
48fa0: 1142 0010 moveb %d2,%a0@(16)
maximum_per_allocation = _Objects_Maximum_per_allocation( maximum );
/*
* Unlimited and maximum of zero is illogical.
*/
if ( information->auto_extend && maximum_per_allocation == 0) {
48fa4: 4a82 tstl %d2
48fa6: 6704 beqs 48fac <_Objects_Initialize_information+0x68>
48fa8: 4a41 tstw %d1
48faa: 6766 beqs 49012 <_Objects_Initialize_information+0xce>
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
48fac: 7a18 moveq #24,%d5
information->local_table = &null_local_table;
/*
* Calculate minimum and maximum Id's
*/
minimum_index = (maximum_per_allocation == 0) ? 0 : 1;
48fae: 4a41 tstw %d1
48fb0: 56c2 sne %d2
48fb2: eba8 lsll %d5,%d0
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
48fb4: 1a3c 001b moveb #27,%d5
information->allocation_size = maximum_per_allocation;
/*
* Provide a null local table entry for the case of any empty table.
*/
information->local_table = &null_local_table;
48fb8: 43f9 0005 f200 lea 5f200 <null_local_table.3490>,%a1
/*
* Calculate minimum and maximum Id's
*/
minimum_index = (maximum_per_allocation == 0) ? 0 : 1;
48fbe: 4482 negl %d2
48fc0: ebab lsll %d5,%d3
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
48fc2: 08c0 0010 bset #16,%d0
information->allocation_size = maximum_per_allocation;
/*
* Provide a null local table entry for the case of any empty table.
*/
information->local_table = &null_local_table;
48fc6: 2149 0018 movel %a1,%a0@(24)
/*
* Calculate minimum and maximum Id's
*/
minimum_index = (maximum_per_allocation == 0) ? 0 : 1;
48fca: 4285 clrl %d5
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
48fcc: 43e8 0020 lea %a0@(32),%a1
48fd0: 1a02 moveb %d2,%d5
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
48fd2: 8083 orl %d3,%d0
48fd4: 2149 001c movel %a1,%a0@(28)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48fd8: 43e8 001c lea %a0@(28),%a1
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
48fdc: 8085 orl %d5,%d0
}
/*
* The allocation unit is the maximum value
*/
information->allocation_size = maximum_per_allocation;
48fde: 3141 0012 movew %d1,%a0@(18)
* NOTE: Either 4 bytes for Classic API names or an arbitrary
* number for POSIX names which are strings that may be
* an odd number of bytes.
*/
information->name_length = maximum_name_length;
48fe2: 3144 0032 movew %d4,%a0@(50)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
48fe6: 42a8 0020 clrl %a0@(32)
48fea: 2140 0006 movel %d0,%a0@(6)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48fee: 2149 0024 movel %a1,%a0@(36)
_Chain_Initialize_empty( &information->Inactive );
/*
* Initialize objects .. if there are any
*/
if ( maximum_per_allocation ) {
48ff2: 4a02 tstb %d2
48ff4: 660a bnes 49000 <_Objects_Initialize_information+0xbc>
_Chain_Initialize_empty( &information->global_table[ index ] );
}
else
information->global_table = NULL;
#endif
}
48ff6: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
48ffc: 4e5e unlk %fp
48ffe: 4e75 rts
/*
* Always have the maximum size available so the current performance
* figures are create are met. If the user moves past the maximum
* number then a performance hit is taken.
*/
_Objects_Extend_information( information );
49000: 2d48 0008 movel %a0,%fp@(8)
_Chain_Initialize_empty( &information->global_table[ index ] );
}
else
information->global_table = NULL;
#endif
}
49004: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
4900a: 4e5e unlk %fp
/*
* Always have the maximum size available so the current performance
* figures are create are met. If the user moves past the maximum
* number then a performance hit is taken.
*/
_Objects_Extend_information( information );
4900c: 4ef9 0004 8aa0 jmp 48aa0 <_Objects_Extend_information>
/*
* Unlimited and maximum of zero is illogical.
*/
if ( information->auto_extend && maximum_per_allocation == 0) {
_Internal_error_Occurred(
49012: 4878 0013 pea 13 <INVALID_OPERATION+0x3>
49016: 4878 0001 pea 1 <ADD>
4901a: 42a7 clrl %sp@-
4901c: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred>
...
000490b4 <_Objects_Shrink_information>:
/*
* Search the list to find block or chunk with all objects inactive.
*/
index_base = _Objects_Get_index( information->minimum_id );
block_count = (information->maximum - index_base) /
490b4: 4281 clrl %d1
#include <rtems/score/isr.h>
void _Objects_Shrink_information(
Objects_Information *information
)
{
490b6: 4e56 ffec linkw %fp,#-20
490ba: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
490be: 246e 0008 moveal %fp@(8),%a2
/*
* Search the list to find block or chunk with all objects inactive.
*/
index_base = _Objects_Get_index( information->minimum_id );
block_count = (information->maximum - index_base) /
490c2: 4283 clrl %d3
/*
* Search the list to find block or chunk with all objects inactive.
*/
index_base = _Objects_Get_index( information->minimum_id );
490c4: 242a 0006 movel %a2@(6),%d2
block_count = (information->maximum - index_base) /
490c8: 362a 000e movew %a2@(14),%d3
/*
* Search the list to find block or chunk with all objects inactive.
*/
index_base = _Objects_Get_index( information->minimum_id );
490cc: 0282 0000 ffff andil #65535,%d2
block_count = (information->maximum - index_base) /
490d2: 322a 0012 movew %a2@(18),%d1
490d6: 9682 subl %d2,%d3
490d8: 4c41 3003 remul %d1,%d3,%d3
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
490dc: 6778 beqs 49156 <_Objects_Shrink_information+0xa2><== NEVER TAKEN
if ( information->inactive_per_block[ block ] ==
490de: 206a 002a moveal %a2@(42),%a0
490e2: b290 cmpl %a0@,%d1
490e4: 6700 0088 beqw 4916e <_Objects_Shrink_information+0xba>
#include <rtems/score/thread.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/sysstate.h>
#include <rtems/score/isr.h>
void _Objects_Shrink_information(
490e8: 5888 addql #4,%a0
index_base = _Objects_Get_index( information->minimum_id );
block_count = (information->maximum - index_base) /
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
490ea: 4280 clrl %d0
490ec: 5280 addql #1,%d0
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
490ee: d481 addl %d1,%d2
index_base = _Objects_Get_index( information->minimum_id );
block_count = (information->maximum - index_base) /
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
490f0: b680 cmpl %d0,%d3
490f2: 6762 beqs 49156 <_Objects_Shrink_information+0xa2>
#include <rtems/score/thread.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/sysstate.h>
#include <rtems/score/isr.h>
void _Objects_Shrink_information(
490f4: 2800 movel %d0,%d4
490f6: e58c lsll #2,%d4
index_base = _Objects_Get_index( information->minimum_id );
block_count = (information->maximum - index_base) /
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
if ( information->inactive_per_block[ block ] ==
490f8: b298 cmpl %a0@+,%d1
490fa: 66f0 bnes 490ec <_Objects_Shrink_information+0x38>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
490fc: 206a 001c moveal %a2@(28),%a0
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
if ((index >= index_base) &&
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
49100: 47f9 0004 c584 lea 4c584 <_Chain_Extract>,%a3
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) _Chain_First( &information->Inactive );
do {
index = _Objects_Get_index( the_object->id );
49106: 2028 0008 movel %a0@(8),%d0
4910a: 0280 0000 ffff andil #65535,%d0
/*
* Get the next node before the node is extracted
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
49110: 2610 movel %a0@,%d3
if ((index >= index_base) &&
49112: b480 cmpl %d0,%d2
49114: 620c bhis 49122 <_Objects_Shrink_information+0x6e>
(index < (index_base + information->allocation_size))) {
49116: 4281 clrl %d1
49118: 322a 0012 movew %a2@(18),%d1
4911c: d282 addl %d2,%d1
/*
* Get the next node before the node is extracted
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
if ((index >= index_base) &&
4911e: b280 cmpl %d0,%d1
49120: 623e bhis 49160 <_Objects_Shrink_information+0xac>
index = _Objects_Get_index( the_object->id );
/*
* Get the next node before the node is extracted
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
49122: 2043 moveal %d3,%a0
if ((index >= index_base) &&
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
}
}
while ( the_object );
49124: 4a83 tstl %d3
49126: 66de bnes 49106 <_Objects_Shrink_information+0x52>
/*
* Free the memory and reset the structures in the object' information
*/
_Workspace_Free( information->object_blocks[ block ] );
49128: 206a 002e moveal %a2@(46),%a0
4912c: 2f30 4800 movel %a0@(00000000,%d4:l),%sp@-
49130: 4eb9 0004 ac10 jsr 4ac10 <_Workspace_Free>
information->object_blocks[ block ] = NULL;
49136: 206a 002e moveal %a2@(46),%a0
information->inactive_per_block[ block ] = 0;
information->inactive -= information->allocation_size;
return;
4913a: 588f addql #4,%sp
/*
* Free the memory and reset the structures in the object' information
*/
_Workspace_Free( information->object_blocks[ block ] );
information->object_blocks[ block ] = NULL;
4913c: 42b0 4800 clrl %a0@(00000000,%d4:l)
information->inactive_per_block[ block ] = 0;
49140: 206a 002a moveal %a2@(42),%a0
information->inactive -= information->allocation_size;
49144: 302a 0028 movew %a2@(40),%d0
49148: 322a 0012 movew %a2@(18),%d1
* Free the memory and reset the structures in the object' information
*/
_Workspace_Free( information->object_blocks[ block ] );
information->object_blocks[ block ] = NULL;
information->inactive_per_block[ block ] = 0;
4914c: 42b0 4800 clrl %a0@(00000000,%d4:l)
information->inactive -= information->allocation_size;
49150: 9081 subl %d1,%d0
49152: 3540 0028 movew %d0,%a2@(40)
return;
}
index_base += information->allocation_size;
}
}
49156: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4915c: 4e5e unlk %fp
4915e: 4e75 rts
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
if ((index >= index_base) &&
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
49160: 2f08 movel %a0,%sp@-
49162: 4e93 jsr %a3@
49164: 588f addql #4,%sp
index = _Objects_Get_index( the_object->id );
/*
* Get the next node before the node is extracted
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
49166: 2043 moveal %d3,%a0
if ((index >= index_base) &&
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
}
}
while ( the_object );
49168: 4a83 tstl %d3
4916a: 669a bnes 49106 <_Objects_Shrink_information+0x52>
4916c: 60ba bras 49128 <_Objects_Shrink_information+0x74>
4916e: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
index_base = _Objects_Get_index( information->minimum_id );
block_count = (information->maximum - index_base) /
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
if ( information->inactive_per_block[ block ] ==
49172: 4284 clrl %d4 <== NOT EXECUTED
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
if ((index >= index_base) &&
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
49174: 47f9 0004 c584 lea 4c584 <_Chain_Extract>,%a3 <== NOT EXECUTED
4917a: 608a bras 49106 <_Objects_Shrink_information+0x52><== NOT EXECUTED
0004e298 <_Protected_heap_Walk>:
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4e298: 4e56 fff0 linkw %fp,#-16
* This routine returns true if thread dispatch indicates
* that we are in a critical section.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Dispatch_in_critical_section(void)
{
if ( _Thread_Dispatch_disable_level == 0 )
4e29c: 2039 0006 5fd2 movel 65fd2 <_Thread_Dispatch_disable_level>,%d0
4e2a2: 48d7 001c moveml %d2-%d4,%sp@
4e2a6: 262e 0008 movel %fp@(8),%d3
4e2aa: 282e 000c movel %fp@(12),%d4
4e2ae: 142e 0013 moveb %fp@(19),%d2
4e2b2: 4a80 tstl %d0
4e2b4: 6640 bnes 4e2f6 <_Protected_heap_Walk+0x5e>
* a critical section, it should be safe to walk it unlocked.
*
* NOTE: Dispatching is also disabled during initialization.
*/
if ( _Thread_Dispatch_in_critical_section() == false ) {
_RTEMS_Lock_allocator();
4e2b6: 2f39 0006 6056 movel 66056 <_RTEMS_Allocator_Mutex>,%sp@-
status = _Heap_Walk( the_heap, source, do_dump );
4e2bc: 0282 0000 00ff andil #255,%d2
* a critical section, it should be safe to walk it unlocked.
*
* NOTE: Dispatching is also disabled during initialization.
*/
if ( _Thread_Dispatch_in_critical_section() == false ) {
_RTEMS_Lock_allocator();
4e2c2: 4eb9 0004 c2a8 jsr 4c2a8 <_API_Mutex_Lock>
status = _Heap_Walk( the_heap, source, do_dump );
4e2c8: 2f02 movel %d2,%sp@-
4e2ca: 2f04 movel %d4,%sp@-
4e2cc: 2f03 movel %d3,%sp@-
4e2ce: 4eb9 0004 d3b2 jsr 4d3b2 <_Heap_Walk>
_RTEMS_Unlock_allocator();
4e2d4: 2f39 0006 6056 movel 66056 <_RTEMS_Allocator_Mutex>,%sp@-
4e2da: 2d40 fffc movel %d0,%fp@(-4)
4e2de: 4eb9 0004 c308 jsr 4c308 <_API_Mutex_Unlock>
4e2e4: 202e fffc movel %fp@(-4),%d0
4e2e8: 4fef 0014 lea %sp@(20),%sp
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4e2ec: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
4e2f2: 4e5e unlk %fp
4e2f4: 4e75 rts
if ( _Thread_Dispatch_in_critical_section() == false ) {
_RTEMS_Lock_allocator();
status = _Heap_Walk( the_heap, source, do_dump );
_RTEMS_Unlock_allocator();
} else {
status = _Heap_Walk( the_heap, source, do_dump );
4e2f6: 2d44 000c movel %d4,%fp@(12)
4e2fa: 0282 0000 00ff andil #255,%d2
4e300: 2d43 0008 movel %d3,%fp@(8)
4e304: 2d42 0010 movel %d2,%fp@(16)
}
return status;
}
4e308: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
4e30e: 4e5e unlk %fp
if ( _Thread_Dispatch_in_critical_section() == false ) {
_RTEMS_Lock_allocator();
status = _Heap_Walk( the_heap, source, do_dump );
_RTEMS_Unlock_allocator();
} else {
status = _Heap_Walk( the_heap, source, do_dump );
4e310: 4ef9 0004 d3b2 jmp 4d3b2 <_Heap_Walk>
...
00049f3a <_RBTree_Extract_unprotected>:
*/
void _RBTree_Extract_unprotected(
RBTree_Control *the_rbtree,
RBTree_Node *the_node
)
{
49f3a: 4e56 ffec linkw %fp,#-20
49f3e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
49f42: 2a6e 0008 moveal %fp@(8),%a5
49f46: 266e 000c moveal %fp@(12),%a3
RBTree_Node *leaf, *target;
RBTree_Color victim_color;
RBTree_Direction dir;
if (!the_node) return;
49f4a: 4a8b tstl %a3
49f4c: 6700 00b0 beqw 49ffe <_RBTree_Extract_unprotected+0xc4>
/* check if min needs to be updated */
if (the_node == the_rbtree->first[RBT_LEFT]) {
49f50: b7ed 0008 cmpal %a5@(8),%a3
49f54: 6700 00d2 beqw 4a028 <_RBTree_Extract_unprotected+0xee>
the_rbtree->first[RBT_LEFT] = next;
}
/* Check if max needs to be updated. min=max for 1 element trees so
* do not use else if here. */
if (the_node == the_rbtree->first[RBT_RIGHT]) {
49f58: b7ed 000c cmpal %a5@(12),%a3
49f5c: 6700 00e4 beqw 4a042 <_RBTree_Extract_unprotected+0x108>
* either max in node->child[RBT_LEFT] or min in node->child[RBT_RIGHT],
* and replace the_node with the target node. This maintains the binary
* search tree property, but may violate the red-black properties.
*/
if (the_node->child[RBT_LEFT] && the_node->child[RBT_RIGHT]) {
49f60: 246b 0004 moveal %a3@(4),%a2
49f64: 4a8a tstl %a2
49f66: 6700 00f4 beqw 4a05c <_RBTree_Extract_unprotected+0x122>
49f6a: 4aab 0008 tstl %a3@(8)
49f6e: 6700 0098 beqw 4a008 <_RBTree_Extract_unprotected+0xce>
target = the_node->child[RBT_LEFT]; /* find max in node->child[RBT_LEFT] */
while (target->child[RBT_RIGHT]) target = target->child[RBT_RIGHT];
49f72: 202a 0008 movel %a2@(8),%d0
49f76: 6708 beqs 49f80 <_RBTree_Extract_unprotected+0x46>
49f78: 2440 moveal %d0,%a2
49f7a: 202a 0008 movel %a2@(8),%d0
49f7e: 66f8 bnes 49f78 <_RBTree_Extract_unprotected+0x3e>
* target's position (target is the right child of target->parent)
* when target vacates it. if there is no child, then target->parent
* should become NULL. This may cause the coloring to be violated.
* For now we store the color of the node being deleted in victim_color.
*/
leaf = target->child[RBT_LEFT];
49f80: 286a 0004 moveal %a2@(4),%a4
if(leaf) {
49f84: 4a8c tstl %a4
49f86: 6700 00fc beqw 4a084 <_RBTree_Extract_unprotected+0x14a>
leaf->parent = target->parent;
49f8a: 2892 movel %a2@,%a4@
} else {
/* fix the tree here if the child is a null leaf. */
_RBTree_Extract_validate_unprotected(target);
}
victim_color = target->color;
dir = target != target->parent->child[0];
49f8c: 2252 moveal %a2@,%a1
49f8e: b5e9 0004 cmpal %a1@(4),%a2
49f92: 56c0 sne %d0
target->parent->child[dir] = leaf;
49f94: 7201 moveq #1,%d1
/* now replace the_node with target */
dir = the_node != the_node->parent->child[0];
the_node->parent->child[dir] = target;
49f96: 7401 moveq #1,%d2
} else {
/* fix the tree here if the child is a null leaf. */
_RBTree_Extract_validate_unprotected(target);
}
victim_color = target->color;
dir = target != target->parent->child[0];
49f98: 49c0 extbl %d0
target->parent->child[dir] = leaf;
49f9a: 9280 subl %d0,%d1
/* now replace the_node with target */
dir = the_node != the_node->parent->child[0];
49f9c: 2053 moveal %a3@,%a0
/* fix the tree here if the child is a null leaf. */
_RBTree_Extract_validate_unprotected(target);
}
victim_color = target->color;
dir = target != target->parent->child[0];
target->parent->child[dir] = leaf;
49f9e: 238c 1c00 movel %a4,%a1@(00000000,%d1:l:4)
/* now replace the_node with target */
dir = the_node != the_node->parent->child[0];
49fa2: b7e8 0004 cmpal %a0@(4),%a3
49fa6: 56c1 sne %d1
leaf->parent = target->parent;
} else {
/* fix the tree here if the child is a null leaf. */
_RBTree_Extract_validate_unprotected(target);
}
victim_color = target->color;
49fa8: 202a 000c movel %a2@(12),%d0
dir = target != target->parent->child[0];
target->parent->child[dir] = leaf;
/* now replace the_node with target */
dir = the_node != the_node->parent->child[0];
49fac: 49c1 extbl %d1
the_node->parent->child[dir] = target;
49fae: 9481 subl %d1,%d2
49fb0: 218a 2c00 movel %a2,%a0@(00000000,%d2:l:4)
/* set target's new children to the original node's children */
target->child[RBT_RIGHT] = the_node->child[RBT_RIGHT];
49fb4: 256b 0008 0008 movel %a3@(8),%a2@(8)
if (the_node->child[RBT_RIGHT])
49fba: 206b 0008 moveal %a3@(8),%a0
49fbe: 4a88 tstl %a0
49fc0: 6702 beqs 49fc4 <_RBTree_Extract_unprotected+0x8a><== NEVER TAKEN
the_node->child[RBT_RIGHT]->parent = target;
49fc2: 208a movel %a2,%a0@
target->child[RBT_LEFT] = the_node->child[RBT_LEFT];
49fc4: 256b 0004 0004 movel %a3@(4),%a2@(4)
if (the_node->child[RBT_LEFT])
49fca: 206b 0004 moveal %a3@(4),%a0
49fce: 4a88 tstl %a0
49fd0: 6702 beqs 49fd4 <_RBTree_Extract_unprotected+0x9a>
the_node->child[RBT_LEFT]->parent = target;
49fd2: 208a movel %a2,%a0@
/* finally, update the parent node and recolor. target has completely
* replaced the_node, and target's child has moved up the tree if needed.
* the_node is no longer part of the tree, although it has valid pointers
* still.
*/
target->parent = the_node->parent;
49fd4: 2493 movel %a3@,%a2@
target->color = the_node->color;
49fd6: 256b 000c 000c movel %a3@(12),%a2@(12)
/* fix coloring. leaf has moved up the tree. The color of the deleted
* node is in victim_color. There are two cases:
* 1. Deleted a red node, its child must be black. Nothing must be done.
* 2. Deleted a black node, its child must be red. Paint child black.
*/
if (victim_color == RBT_BLACK) { /* eliminate case 1 */
49fdc: 4a80 tstl %d0
49fde: 6608 bnes 49fe8 <_RBTree_Extract_unprotected+0xae>
if (leaf) {
49fe0: 4a8c tstl %a4
49fe2: 6704 beqs 49fe8 <_RBTree_Extract_unprotected+0xae>
leaf->color = RBT_BLACK; /* case 2 */
49fe4: 42ac 000c clrl %a4@(12)
/* Wipe the_node */
_RBTree_Set_off_rbtree(the_node);
/* set root to black, if it exists */
if (the_rbtree->root) the_rbtree->root->color = RBT_BLACK;
49fe8: 206d 0004 moveal %a5@(4),%a0
*/
RTEMS_INLINE_ROUTINE void _RBTree_Set_off_rbtree(
RBTree_Node *node
)
{
node->parent = node->child[RBT_LEFT] = node->child[RBT_RIGHT] = NULL;
49fec: 42ab 0008 clrl %a3@(8)
49ff0: 42ab 0004 clrl %a3@(4)
49ff4: 4293 clrl %a3@
49ff6: 4a88 tstl %a0
49ff8: 6704 beqs 49ffe <_RBTree_Extract_unprotected+0xc4>
49ffa: 42a8 000c clrl %a0@(12)
}
49ffe: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
4a004: 4e5e unlk %fp
4a006: 4e75 rts
* either max in node->child[RBT_LEFT] or min in node->child[RBT_RIGHT],
* and replace the_node with the target node. This maintains the binary
* search tree property, but may violate the red-black properties.
*/
if (the_node->child[RBT_LEFT] && the_node->child[RBT_RIGHT]) {
4a008: 284a moveal %a2,%a4
* For now we store the color of the node being deleted in victim_color.
*/
leaf = the_node->child[RBT_LEFT] ?
the_node->child[RBT_LEFT] : the_node->child[RBT_RIGHT];
if( leaf ) {
leaf->parent = the_node->parent;
4a00a: 2893 movel %a3@,%a4@
}
victim_color = the_node->color;
/* remove the_node from the tree */
dir = the_node != the_node->parent->child[0];
the_node->parent->child[dir] = leaf;
4a00c: 7401 moveq #1,%d2
_RBTree_Extract_validate_unprotected(the_node);
}
victim_color = the_node->color;
/* remove the_node from the tree */
dir = the_node != the_node->parent->child[0];
4a00e: 2053 moveal %a3@,%a0
4a010: b7e8 0004 cmpal %a0@(4),%a3
4a014: 56c1 sne %d1
leaf->parent = the_node->parent;
} else {
/* fix the tree here if the child is a null leaf. */
_RBTree_Extract_validate_unprotected(the_node);
}
victim_color = the_node->color;
4a016: 202b 000c movel %a3@(12),%d0
/* remove the_node from the tree */
dir = the_node != the_node->parent->child[0];
4a01a: 49c1 extbl %d1
the_node->parent->child[dir] = leaf;
4a01c: 9481 subl %d1,%d2
4a01e: 218c 2c00 movel %a4,%a0@(00000000,%d2:l:4)
/* fix coloring. leaf has moved up the tree. The color of the deleted
* node is in victim_color. There are two cases:
* 1. Deleted a red node, its child must be black. Nothing must be done.
* 2. Deleted a black node, its child must be red. Paint child black.
*/
if (victim_color == RBT_BLACK) { /* eliminate case 1 */
4a022: 4a80 tstl %d0
4a024: 66c2 bnes 49fe8 <_RBTree_Extract_unprotected+0xae>
4a026: 60b8 bras 49fe0 <_RBTree_Extract_unprotected+0xa6>
*/
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Successor_unprotected(
const RBTree_Node *node
)
{
return _RBTree_Next_unprotected( node, RBT_RIGHT );
4a028: 4878 0001 pea 1 <ADD>
4a02c: 2f0b movel %a3,%sp@-
4a02e: 4eb9 0004 a33c jsr 4a33c <_RBTree_Next_unprotected>
/* check if min needs to be updated */
if (the_node == the_rbtree->first[RBT_LEFT]) {
RBTree_Node *next;
next = _RBTree_Successor_unprotected(the_node);
the_rbtree->first[RBT_LEFT] = next;
4a034: 508f addql #8,%sp
4a036: 2b40 0008 movel %d0,%a5@(8)
}
/* Check if max needs to be updated. min=max for 1 element trees so
* do not use else if here. */
if (the_node == the_rbtree->first[RBT_RIGHT]) {
4a03a: b7ed 000c cmpal %a5@(12),%a3
4a03e: 6600 ff20 bnew 49f60 <_RBTree_Extract_unprotected+0x26>
*/
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Predecessor_unprotected(
const RBTree_Node *node
)
{
return _RBTree_Next_unprotected( node, RBT_LEFT );
4a042: 42a7 clrl %sp@-
4a044: 2f0b movel %a3,%sp@-
4a046: 4eb9 0004 a33c jsr 4a33c <_RBTree_Next_unprotected>
* either max in node->child[RBT_LEFT] or min in node->child[RBT_RIGHT],
* and replace the_node with the target node. This maintains the binary
* search tree property, but may violate the red-black properties.
*/
if (the_node->child[RBT_LEFT] && the_node->child[RBT_RIGHT]) {
4a04c: 246b 0004 moveal %a3@(4),%a2
/* Check if max needs to be updated. min=max for 1 element trees so
* do not use else if here. */
if (the_node == the_rbtree->first[RBT_RIGHT]) {
RBTree_Node *previous;
previous = _RBTree_Predecessor_unprotected(the_node);
the_rbtree->first[RBT_RIGHT] = previous;
4a050: 508f addql #8,%sp
4a052: 2b40 000c movel %d0,%a5@(12)
* either max in node->child[RBT_LEFT] or min in node->child[RBT_RIGHT],
* and replace the_node with the target node. This maintains the binary
* search tree property, but may violate the red-black properties.
*/
if (the_node->child[RBT_LEFT] && the_node->child[RBT_RIGHT]) {
4a056: 4a8a tstl %a2
4a058: 6600 ff10 bnew 49f6a <_RBTree_Extract_unprotected+0x30>
* the_node's location in the tree. This may cause the coloring to be
* violated. We will fix it later.
* For now we store the color of the node being deleted in victim_color.
*/
leaf = the_node->child[RBT_LEFT] ?
the_node->child[RBT_LEFT] : the_node->child[RBT_RIGHT];
4a05c: 286b 0008 moveal %a3@(8),%a4
if( leaf ) {
4a060: 4a8c tstl %a4
4a062: 66a6 bnes 4a00a <_RBTree_Extract_unprotected+0xd0>
leaf->parent = the_node->parent;
} else {
/* fix the tree here if the child is a null leaf. */
_RBTree_Extract_validate_unprotected(the_node);
4a064: 2f0b movel %a3,%sp@-
}
victim_color = the_node->color;
/* remove the_node from the tree */
dir = the_node != the_node->parent->child[0];
the_node->parent->child[dir] = leaf;
4a066: 7401 moveq #1,%d2
the_node->child[RBT_LEFT] : the_node->child[RBT_RIGHT];
if( leaf ) {
leaf->parent = the_node->parent;
} else {
/* fix the tree here if the child is a null leaf. */
_RBTree_Extract_validate_unprotected(the_node);
4a068: 4eba fcc2 jsr %pc@(49d2c <_RBTree_Extract_validate_unprotected>)
}
victim_color = the_node->color;
/* remove the_node from the tree */
dir = the_node != the_node->parent->child[0];
4a06c: 2053 moveal %a3@,%a0
4a06e: b7e8 0004 cmpal %a0@(4),%a3
4a072: 56c1 sne %d1
leaf->parent = the_node->parent;
} else {
/* fix the tree here if the child is a null leaf. */
_RBTree_Extract_validate_unprotected(the_node);
}
victim_color = the_node->color;
4a074: 202b 000c movel %a3@(12),%d0
/* remove the_node from the tree */
dir = the_node != the_node->parent->child[0];
4a078: 49c1 extbl %d1
the_node->parent->child[dir] = leaf;
4a07a: 9481 subl %d1,%d2
the_node->child[RBT_LEFT] : the_node->child[RBT_RIGHT];
if( leaf ) {
leaf->parent = the_node->parent;
} else {
/* fix the tree here if the child is a null leaf. */
_RBTree_Extract_validate_unprotected(the_node);
4a07c: 588f addql #4,%sp
}
victim_color = the_node->color;
/* remove the_node from the tree */
dir = the_node != the_node->parent->child[0];
the_node->parent->child[dir] = leaf;
4a07e: 218c 2c00 movel %a4,%a0@(00000000,%d2:l:4)
4a082: 609e bras 4a022 <_RBTree_Extract_unprotected+0xe8>
leaf = target->child[RBT_LEFT];
if(leaf) {
leaf->parent = target->parent;
} else {
/* fix the tree here if the child is a null leaf. */
_RBTree_Extract_validate_unprotected(target);
4a084: 2f0a movel %a2,%sp@-
4a086: 4eba fca4 jsr %pc@(49d2c <_RBTree_Extract_validate_unprotected>)
4a08a: 588f addql #4,%sp
4a08c: 6000 fefe braw 49f8c <_RBTree_Extract_unprotected+0x52>
00049d2c <_RBTree_Extract_validate_unprotected>:
* of the extract operation.
*/
static void _RBTree_Extract_validate_unprotected(
RBTree_Node *the_node
)
{
49d2c: 4e56 ffec linkw %fp,#-20
49d30: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
49d34: 266e 0008 moveal %fp@(8),%a3
RBTree_Node *parent, *sibling;
RBTree_Direction dir;
parent = the_node->parent;
49d38: 2053 moveal %a3@,%a0
if(!parent->parent) return;
49d3a: 4a90 tstl %a0@
49d3c: 677e beqs 49dbc <_RBTree_Extract_validate_unprotected+0x90>
{
if(!the_node) return NULL;
if(!(the_node->parent)) return NULL;
if(!(the_node->parent->parent)) return NULL;
if(the_node == the_node->parent->child[RBT_LEFT])
49d3e: 2268 0004 moveal %a0@(4),%a1
49d42: b3cb cmpal %a3,%a1
49d44: 6700 01de beqw 49f24 <_RBTree_Extract_validate_unprotected+0x1f8>
*/
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(
const RBTree_Node *the_node
)
{
return (the_node && the_node->color == RBT_RED);
49d48: 7401 moveq #1,%d2
49d4a: b4ab 000c cmpl %a3@(12),%d2
49d4e: 6764 beqs 49db4 <_RBTree_Extract_validate_unprotected+0x88>
sibling = _RBTree_Sibling(the_node);
/* continue to correct tree as long as the_node is black and not the root */
while (!_RBTree_Is_red(the_node) && parent->parent) {
49d50: 4a90 tstl %a0@
49d52: 6760 beqs 49db4 <_RBTree_Extract_validate_unprotected+0x88>
49d54: 4a89 tstl %a1
49d56: 670a beqs 49d62 <_RBTree_Extract_validate_unprotected+0x36><== NEVER TAKEN
49d58: 7001 moveq #1,%d0
49d5a: b0a9 000c cmpl %a1@(12),%d0
49d5e: 6700 011c beqw 49e7c <_RBTree_Extract_validate_unprotected+0x150>
_RBTree_Rotate(parent, dir);
sibling = parent->child[_RBTree_Opposite_direction(dir)];
}
/* sibling is black, see if both of its children are also black. */
if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&
49d62: 2469 0008 moveal %a1@(8),%a2
49d66: 4a8a tstl %a2
49d68: 6708 beqs 49d72 <_RBTree_Extract_validate_unprotected+0x46>
49d6a: 7601 moveq #1,%d3
49d6c: b6aa 000c cmpl %a2@(12),%d3
49d70: 6752 beqs 49dc4 <_RBTree_Extract_validate_unprotected+0x98>
!_RBTree_Is_red(sibling->child[RBT_LEFT])) {
49d72: 2469 0004 moveal %a1@(4),%a2
49d76: 4a8a tstl %a2
49d78: 6708 beqs 49d82 <_RBTree_Extract_validate_unprotected+0x56>
49d7a: 7001 moveq #1,%d0
49d7c: b0aa 000c cmpl %a2@(12),%d0
49d80: 6742 beqs 49dc4 <_RBTree_Extract_validate_unprotected+0x98>
sibling->color = RBT_RED;
49d82: 7001 moveq #1,%d0
49d84: 2340 000c movel %d0,%a1@(12)
49d88: b0a8 000c cmpl %a0@(12),%d0
49d8c: 6700 019e beqw 49f2c <_RBTree_Extract_validate_unprotected+0x200>
if (_RBTree_Is_red(parent)) {
parent->color = RBT_BLACK;
break;
}
the_node = parent; /* done if parent is red */
parent = the_node->parent;
49d90: 2450 moveal %a0@,%a2
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(
const RBTree_Node *the_node
)
{
if(!the_node) return NULL;
if(!(the_node->parent)) return NULL;
49d92: 4a8a tstl %a2
49d94: 6700 0154 beqw 49eea <_RBTree_Extract_validate_unprotected+0x1be>
if(!(the_node->parent->parent)) return NULL;
49d98: 4a92 tstl %a2@
49d9a: 6700 014e beqw 49eea <_RBTree_Extract_validate_unprotected+0x1be>
if(the_node == the_node->parent->child[RBT_LEFT])
49d9e: 226a 0004 moveal %a2@(4),%a1
49da2: b3c8 cmpal %a0,%a1
49da4: 6700 0138 beqw 49ede <_RBTree_Extract_validate_unprotected+0x1b2>
49da8: 2648 moveal %a0,%a3
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(
const RBTree_Node *the_node
)
{
if(!the_node) return NULL;
if(!(the_node->parent)) return NULL;
49daa: 204a moveal %a2,%a0
*/
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(
const RBTree_Node *the_node
)
{
return (the_node && the_node->color == RBT_RED);
49dac: 7401 moveq #1,%d2
49dae: b4ab 000c cmpl %a3@(12),%d2
49db2: 669c bnes 49d50 <_RBTree_Extract_validate_unprotected+0x24><== ALWAYS TAKEN
sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
_RBTree_Rotate(parent, dir);
break; /* done */
}
} /* while */
if(!the_node->parent->parent) the_node->color = RBT_BLACK;
49db4: 2053 moveal %a3@,%a0
49db6: 4a90 tstl %a0@
49db8: 6700 0140 beqw 49efa <_RBTree_Extract_validate_unprotected+0x1ce>
}
49dbc: 4cd7 1c0c moveml %sp@,%d2-%d3/%a2-%a4
49dc0: 4e5e unlk %fp
49dc2: 4e75 rts
* cases, either the_node is to the left or the right of the parent.
* In both cases, first check if one of sibling's children is black,
* and if so rotate in the proper direction and update sibling pointer.
* Then switch the sibling and parent colors, and rotate through parent.
*/
dir = the_node != parent->child[0];
49dc4: b7e8 0004 cmpal %a0@(4),%a3
49dc8: 56c0 sne %d0
*/
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(
RBTree_Direction the_dir
)
{
return (RBTree_Direction) !((int) the_dir);
49dca: 7201 moveq #1,%d1
49dcc: 4480 negl %d0
49dce: b181 eorl %d0,%d1
49dd0: 0280 0000 00ff andil #255,%d0
49dd6: 0281 0000 00ff andil #255,%d1
if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
49ddc: 5281 addql #1,%d1
49dde: 2471 1c00 moveal %a1@(00000000,%d1:l:4),%a2
*/
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(
const RBTree_Node *the_node
)
{
return (the_node && the_node->color == RBT_RED);
49de2: 4a8a tstl %a2
49de4: 670a beqs 49df0 <_RBTree_Extract_validate_unprotected+0xc4>
49de6: 7401 moveq #1,%d2
49de8: b4aa 000c cmpl %a2@(12),%d2
49dec: 6700 0118 beqw 49f06 <_RBTree_Extract_validate_unprotected+0x1da>
sibling->color = RBT_RED;
sibling->child[dir]->color = RBT_BLACK;
49df0: 5280 addql #1,%d0
* and if so rotate in the proper direction and update sibling pointer.
* Then switch the sibling and parent colors, and rotate through parent.
*/
dir = the_node != parent->child[0];
if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
sibling->color = RBT_RED;
49df2: 7401 moveq #1,%d2
sibling->child[dir]->color = RBT_BLACK;
49df4: 2471 0c00 moveal %a1@(00000000,%d0:l:4),%a2
* and if so rotate in the proper direction and update sibling pointer.
* Then switch the sibling and parent colors, and rotate through parent.
*/
dir = the_node != parent->child[0];
if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
sibling->color = RBT_RED;
49df8: 2342 000c movel %d2,%a1@(12)
sibling->child[dir]->color = RBT_BLACK;
49dfc: 42aa 000c clrl %a2@(12)
RBTree_Direction dir
)
{
RBTree_Node *c;
if (the_node == NULL) return;
if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
49e00: 4a8a tstl %a2
49e02: 672c beqs 49e30 <_RBTree_Extract_validate_unprotected+0x104><== NEVER TAKEN
c = the_node->child[_RBTree_Opposite_direction(dir)];
the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];
49e04: 49f2 1c00 lea %a2@(00000000,%d1:l:4),%a4
49e08: 2394 0c00 movel %a4@,%a1@(00000000,%d0:l:4)
if (c->child[dir])
49e0c: 2872 1c00 moveal %a2@(00000000,%d1:l:4),%a4
49e10: 4a8c tstl %a4
49e12: 6702 beqs 49e16 <_RBTree_Extract_validate_unprotected+0xea>
c->child[dir]->parent = the_node;
49e14: 2889 movel %a1,%a4@
c->child[dir] = the_node;
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
49e16: 2851 moveal %a1@,%a4
49e18: 7601 moveq #1,%d3
the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];
if (c->child[dir])
c->child[dir]->parent = the_node;
c->child[dir] = the_node;
49e1a: 2589 1c00 movel %a1,%a2@(00000000,%d1:l:4)
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
49e1e: b3ec 0004 cmpal %a4@(4),%a1
49e22: 56c2 sne %d2
c->parent = the_node->parent;
49e24: 248c movel %a4,%a2@
if (c->child[dir])
c->child[dir]->parent = the_node;
c->child[dir] = the_node;
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
49e26: 49c2 extbl %d2
49e28: 9682 subl %d2,%d3
49e2a: 298a 3c00 movel %a2,%a4@(00000000,%d3:l:4)
c->parent = the_node->parent;
the_node->parent = c;
49e2e: 228a movel %a2,%a1@
_RBTree_Rotate(sibling, _RBTree_Opposite_direction(dir));
sibling = parent->child[_RBTree_Opposite_direction(dir)];
49e30: 2870 1c00 moveal %a0@(00000000,%d1:l:4),%a4
}
sibling->color = parent->color;
49e34: 2968 000c 000c movel %a0@(12),%a4@(12)
49e3a: 2274 1c00 moveal %a4@(00000000,%d1:l:4),%a1
parent->color = RBT_BLACK;
49e3e: 42a8 000c clrl %a0@(12)
sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
49e42: 42a9 000c clrl %a1@(12)
RBTree_Node *c;
if (the_node == NULL) return;
if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
c = the_node->child[_RBTree_Opposite_direction(dir)];
the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];
49e46: 43f4 0c00 lea %a4@(00000000,%d0:l:4),%a1
49e4a: 2191 1c00 movel %a1@,%a0@(00000000,%d1:l:4)
if (c->child[dir])
49e4e: 2274 0c00 moveal %a4@(00000000,%d0:l:4),%a1
49e52: 4a89 tstl %a1
49e54: 6702 beqs 49e58 <_RBTree_Extract_validate_unprotected+0x12c>
c->child[dir]->parent = the_node;
49e56: 2288 movel %a0,%a1@
c->child[dir] = the_node;
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
49e58: 2250 moveal %a0@,%a1
49e5a: 7201 moveq #1,%d1
the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];
if (c->child[dir])
c->child[dir]->parent = the_node;
c->child[dir] = the_node;
49e5c: 2988 0c00 movel %a0,%a4@(00000000,%d0:l:4)
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
49e60: b1e9 0004 cmpal %a1@(4),%a0
49e64: 56c0 sne %d0
c->parent = the_node->parent;
49e66: 2889 movel %a1,%a4@
if (c->child[dir])
c->child[dir]->parent = the_node;
c->child[dir] = the_node;
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
49e68: 49c0 extbl %d0
49e6a: 9280 subl %d0,%d1
c->parent = the_node->parent;
the_node->parent = c;
49e6c: 208c movel %a4,%a0@
_RBTree_Rotate(parent, dir);
break; /* done */
}
} /* while */
if(!the_node->parent->parent) the_node->color = RBT_BLACK;
49e6e: 2053 moveal %a3@,%a0
if (c->child[dir])
c->child[dir]->parent = the_node;
c->child[dir] = the_node;
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
49e70: 238c 1c00 movel %a4,%a1@(00000000,%d1:l:4)
49e74: 4a90 tstl %a0@
49e76: 6600 ff44 bnew 49dbc <_RBTree_Extract_validate_unprotected+0x90>
49e7a: 607e bras 49efa <_RBTree_Extract_validate_unprotected+0x1ce><== NOT EXECUTED
* update sibling pointer.
*/
if (_RBTree_Is_red(sibling)) {
parent->color = RBT_RED;
sibling->color = RBT_BLACK;
dir = the_node != parent->child[0];
49e7c: b7e8 0004 cmpal %a0@(4),%a3
49e80: 56c1 sne %d1
*/
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(
RBTree_Direction the_dir
)
{
return (RBTree_Direction) !((int) the_dir);
49e82: 7001 moveq #1,%d0
* then rotate parent left, making the sibling be the_node's grandparent.
* Now the_node has a black sibling and red parent. After rotation,
* update sibling pointer.
*/
if (_RBTree_Is_red(sibling)) {
parent->color = RBT_RED;
49e84: 7601 moveq #1,%d3
sibling->color = RBT_BLACK;
dir = the_node != parent->child[0];
49e86: 4481 negl %d1
49e88: b380 eorl %d1,%d0
* then rotate parent left, making the sibling be the_node's grandparent.
* Now the_node has a black sibling and red parent. After rotation,
* update sibling pointer.
*/
if (_RBTree_Is_red(sibling)) {
parent->color = RBT_RED;
49e8a: 2143 000c movel %d3,%a0@(12)
49e8e: 0280 0000 00ff andil #255,%d0
sibling->color = RBT_BLACK;
49e94: 42a9 000c clrl %a1@(12)
RBTree_Direction dir
)
{
RBTree_Node *c;
if (the_node == NULL) return;
if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
49e98: 5280 addql #1,%d0
49e9a: 2470 0c00 moveal %a0@(00000000,%d0:l:4),%a2
dir = the_node != parent->child[0];
49e9e: 0281 0000 00ff andil #255,%d1
49ea4: 4a8a tstl %a2
49ea6: 674c beqs 49ef4 <_RBTree_Extract_validate_unprotected+0x1c8><== NEVER TAKEN
c = the_node->child[_RBTree_Opposite_direction(dir)];
the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];
49ea8: 5281 addql #1,%d1
49eaa: 43f2 1c00 lea %a2@(00000000,%d1:l:4),%a1
49eae: 2191 0c00 movel %a1@,%a0@(00000000,%d0:l:4)
if (c->child[dir])
49eb2: 2272 1c00 moveal %a2@(00000000,%d1:l:4),%a1
49eb6: 4a89 tstl %a1
49eb8: 6702 beqs 49ebc <_RBTree_Extract_validate_unprotected+0x190><== NEVER TAKEN
c->child[dir]->parent = the_node;
49eba: 2288 movel %a0,%a1@
c->child[dir] = the_node;
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
49ebc: 2250 moveal %a0@,%a1
49ebe: 7401 moveq #1,%d2
the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];
if (c->child[dir])
c->child[dir]->parent = the_node;
c->child[dir] = the_node;
49ec0: 2588 1c00 movel %a0,%a2@(00000000,%d1:l:4)
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
49ec4: b1e9 0004 cmpal %a1@(4),%a0
49ec8: 56c1 sne %d1
c->parent = the_node->parent;
49eca: 2489 movel %a1,%a2@
if (c->child[dir])
c->child[dir]->parent = the_node;
c->child[dir] = the_node;
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
49ecc: 49c1 extbl %d1
49ece: 9481 subl %d1,%d2
49ed0: 238a 2c00 movel %a2,%a1@(00000000,%d2:l:4)
49ed4: 2270 0c00 moveal %a0@(00000000,%d0:l:4),%a1
c->parent = the_node->parent;
the_node->parent = c;
49ed8: 208a movel %a2,%a0@
49eda: 6000 fe86 braw 49d62 <_RBTree_Extract_validate_unprotected+0x36>
49ede: 2648 moveal %a0,%a3
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(
const RBTree_Node *the_node
)
{
if(!the_node) return NULL;
if(!(the_node->parent)) return NULL;
49ee0: 204a moveal %a2,%a0
if(!(the_node->parent->parent)) return NULL;
if(the_node == the_node->parent->child[RBT_LEFT])
return the_node->parent->child[RBT_RIGHT];
49ee2: 226a 0008 moveal %a2@(8),%a1
49ee6: 6000 fec4 braw 49dac <_RBTree_Extract_validate_unprotected+0x80>
49eea: 2648 moveal %a0,%a3
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(
const RBTree_Node *the_node
)
{
if(!the_node) return NULL;
if(!(the_node->parent)) return NULL;
49eec: 93c9 subal %a1,%a1
49eee: 204a moveal %a2,%a0
49ef0: 6000 feba braw 49dac <_RBTree_Extract_validate_unprotected+0x80>
RBTree_Direction dir
)
{
RBTree_Node *c;
if (the_node == NULL) return;
if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
49ef4: 93c9 subal %a1,%a1 <== NOT EXECUTED
49ef6: 6000 fe6a braw 49d62 <_RBTree_Extract_validate_unprotected+0x36><== NOT EXECUTED
sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
_RBTree_Rotate(parent, dir);
break; /* done */
}
} /* while */
if(!the_node->parent->parent) the_node->color = RBT_BLACK;
49efa: 42ab 000c clrl %a3@(12)
}
49efe: 4cd7 1c0c moveml %sp@,%d2-%d3/%a2-%a4
49f02: 4e5e unlk %fp
49f04: 4e75 rts
49f06: 2870 1c00 moveal %a0@(00000000,%d1:l:4),%a4
sibling->color = RBT_RED;
sibling->child[dir]->color = RBT_BLACK;
_RBTree_Rotate(sibling, _RBTree_Opposite_direction(dir));
sibling = parent->child[_RBTree_Opposite_direction(dir)];
}
sibling->color = parent->color;
49f0a: 2368 000c 000c movel %a0@(12),%a1@(12)
parent->color = RBT_BLACK;
49f10: 42a8 000c clrl %a0@(12)
sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
49f14: 42aa 000c clrl %a2@(12)
49f18: 4a8c tstl %a4
49f1a: 6700 fe98 beqw 49db4 <_RBTree_Extract_validate_unprotected+0x88>
49f1e: 5280 addql #1,%d0
49f20: 6000 ff24 braw 49e46 <_RBTree_Extract_validate_unprotected+0x11a>
if(!the_node) return NULL;
if(!(the_node->parent)) return NULL;
if(!(the_node->parent->parent)) return NULL;
if(the_node == the_node->parent->child[RBT_LEFT])
return the_node->parent->child[RBT_RIGHT];
49f24: 2268 0008 moveal %a0@(8),%a1
49f28: 6000 fe1e braw 49d48 <_RBTree_Extract_validate_unprotected+0x1c>
/* sibling is black, see if both of its children are also black. */
if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&
!_RBTree_Is_red(sibling->child[RBT_LEFT])) {
sibling->color = RBT_RED;
if (_RBTree_Is_red(parent)) {
parent->color = RBT_BLACK;
49f2c: 42a8 000c clrl %a0@(12)
sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
_RBTree_Rotate(parent, dir);
break; /* done */
}
} /* while */
if(!the_node->parent->parent) the_node->color = RBT_BLACK;
49f30: 2053 moveal %a3@,%a0
49f32: 4a90 tstl %a0@
49f34: 6600 fe86 bnew 49dbc <_RBTree_Extract_validate_unprotected+0x90>
49f38: 60c0 bras 49efa <_RBTree_Extract_validate_unprotected+0x1ce><== NOT EXECUTED
0004a59c <_RBTree_Find>:
{
ISR_Level level;
RBTree_Node *return_node;
return_node = NULL;
_ISR_Disable( level );
4a59c: 203c 0000 0700 movel #1792,%d0
RBTree_Node *_RBTree_Find(
RBTree_Control *the_rbtree,
RBTree_Node *search_node
)
{
4a5a2: 4e56 ffec linkw %fp,#-20
4a5a6: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
4a5aa: 266e 0008 moveal %fp@(8),%a3
4a5ae: 242e 000c movel %fp@(12),%d2
ISR_Level level;
RBTree_Node *return_node;
return_node = NULL;
_ISR_Disable( level );
4a5b2: 40c4 movew %sr,%d4
4a5b4: 8084 orl %d4,%d0
4a5b6: 46c0 movew %d0,%sr
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Find_unprotected(
RBTree_Control *the_rbtree,
RBTree_Node *the_node
)
{
RBTree_Node* iter_node = the_rbtree->root;
4a5b8: 246b 0004 moveal %a3@(4),%a2
RBTree_Node* found = NULL;
int compare_result;
while (iter_node) {
4a5bc: 4283 clrl %d3
4a5be: 4a8a tstl %a2
4a5c0: 672a beqs 4a5ec <_RBTree_Find+0x50> <== NEVER TAKEN
compare_result = the_rbtree->compare_function(the_node, iter_node);
4a5c2: 2f0a movel %a2,%sp@-
4a5c4: 206b 0010 moveal %a3@(16),%a0
4a5c8: 2f02 movel %d2,%sp@-
4a5ca: 4e90 jsr %a0@
if ( _RBTree_Is_equal( compare_result ) ) {
4a5cc: 508f addql #8,%sp
4a5ce: 4a80 tstl %d0
4a5d0: 6608 bnes 4a5da <_RBTree_Find+0x3e>
found = iter_node;
if ( the_rbtree->is_unique )
4a5d2: 260a movel %a2,%d3
4a5d4: 4a2b 0014 tstb %a3@(20)
4a5d8: 6612 bnes 4a5ec <_RBTree_Find+0x50>
RTEMS_INLINE_ROUTINE bool _RBTree_Is_greater(
int compare_result
)
{
return compare_result > 0;
4a5da: 4a80 tstl %d0
4a5dc: 5ec1 sgt %d1
break;
}
RBTree_Direction dir =
(RBTree_Direction) _RBTree_Is_greater( compare_result );
iter_node = iter_node->child[dir];
4a5de: 7001 moveq #1,%d0
RTEMS_INLINE_ROUTINE bool _RBTree_Is_greater(
int compare_result
)
{
return compare_result > 0;
4a5e0: 49c1 extbl %d1
break;
}
RBTree_Direction dir =
(RBTree_Direction) _RBTree_Is_greater( compare_result );
iter_node = iter_node->child[dir];
4a5e2: 9081 subl %d1,%d0
4a5e4: 2472 0c00 moveal %a2@(00000000,%d0:l:4),%a2
)
{
RBTree_Node* iter_node = the_rbtree->root;
RBTree_Node* found = NULL;
int compare_result;
while (iter_node) {
4a5e8: 4a8a tstl %a2
4a5ea: 66d6 bnes 4a5c2 <_RBTree_Find+0x26>
return_node = _RBTree_Find_unprotected( the_rbtree, search_node );
_ISR_Enable( level );
4a5ec: 46c4 movew %d4,%sr
return return_node;
}
4a5ee: 2003 movel %d3,%d0
4a5f0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4a5f6: 4e5e unlk %fp
...
0004a55c <_RBTree_Find_header>:
{
ISR_Level level;
RBTree_Control *return_header;
return_header = NULL;
_ISR_Disable( level );
4a55c: 203c 0000 0700 movel #1792,%d0
#include <rtems/score/isr.h>
RBTree_Control *_RBTree_Find_header(
RBTree_Node *the_node
)
{
4a562: 4e56 0000 linkw %fp,#0
4a566: 206e 0008 moveal %fp@(8),%a0
4a56a: 2f02 movel %d2,%sp@-
ISR_Level level;
RBTree_Control *return_header;
return_header = NULL;
_ISR_Disable( level );
4a56c: 40c2 movew %sr,%d2
4a56e: 8082 orl %d2,%d0
4a570: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE RBTree_Control *_RBTree_Find_header_unprotected(
RBTree_Node *the_node
)
{
if(!the_node) return NULL;
4a572: 4a88 tstl %a0
4a574: 671a beqs 4a590 <_RBTree_Find_header+0x34>
if(!(the_node->parent)) return NULL;
4a576: 2050 moveal %a0@,%a0
4a578: 4a88 tstl %a0
4a57a: 670a beqs 4a586 <_RBTree_Find_header+0x2a>
4a57c: 2210 movel %a0@,%d1
while(the_node->parent) the_node = the_node->parent;
4a57e: 6706 beqs 4a586 <_RBTree_Find_header+0x2a> <== NEVER TAKEN
4a580: 2041 moveal %d1,%a0
4a582: 2210 movel %a0@,%d1
4a584: 66fa bnes 4a580 <_RBTree_Find_header+0x24>
return_header = _RBTree_Find_header_unprotected( the_node );
_ISR_Enable( level );
4a586: 46c2 movew %d2,%sr
return return_header;
}
4a588: 241f movel %sp@+,%d2
4a58a: 2008 movel %a0,%d0
4a58c: 4e5e unlk %fp
4a58e: 4e75 rts
*/
RTEMS_INLINE_ROUTINE RBTree_Control *_RBTree_Find_header_unprotected(
RBTree_Node *the_node
)
{
if(!the_node) return NULL;
4a590: 91c8 subal %a0,%a0
RBTree_Control *return_header;
return_header = NULL;
_ISR_Disable( level );
return_header = _RBTree_Find_header_unprotected( the_node );
_ISR_Enable( level );
4a592: 46c2 movew %d2,%sr
return return_header;
}
4a594: 241f movel %sp@+,%d2
4a596: 2008 movel %a0,%d0
4a598: 4e5e unlk %fp <== NOT EXECUTED
0004a8f0 <_RBTree_Initialize>:
void *starting_address,
size_t number_nodes,
size_t node_size,
bool is_unique
)
{
4a8f0: 4e56 ffec linkw %fp,#-20
4a8f4: 202e 001c movel %fp@(28),%d0
4a8f8: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
4a8fc: 246e 0008 moveal %fp@(8),%a2
4a900: 242e 0014 movel %fp@(20),%d2
4a904: 282e 0018 movel %fp@(24),%d4
size_t count;
RBTree_Node *next;
/* TODO: Error message? */
if (!the_rbtree) return;
4a908: 4a8a tstl %a2
4a90a: 6736 beqs 4a942 <_RBTree_Initialize+0x52> <== NEVER TAKEN
RBTree_Control *the_rbtree,
RBTree_Compare_function compare_function,
bool is_unique
)
{
the_rbtree->permanent_null = NULL;
4a90c: 4292 clrl %a2@
the_rbtree->root = NULL;
the_rbtree->first[0] = NULL;
the_rbtree->first[1] = NULL;
the_rbtree->compare_function = compare_function;
4a90e: 256e 000c 0010 movel %fp@(12),%a2@(16)
the_rbtree->is_unique = is_unique;
4a914: 1540 0014 moveb %d0,%a2@(20)
RBTree_Compare_function compare_function,
bool is_unique
)
{
the_rbtree->permanent_null = NULL;
the_rbtree->root = NULL;
4a918: 42aa 0004 clrl %a2@(4)
the_rbtree->first[0] = NULL;
4a91c: 42aa 0008 clrl %a2@(8)
the_rbtree->first[1] = NULL;
4a920: 42aa 000c clrl %a2@(12)
/* could do sanity checks here */
_RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);
count = number_nodes;
next = starting_address;
while ( count-- ) {
4a924: 4a82 tstl %d2
4a926: 671a beqs 4a942 <_RBTree_Initialize+0x52> <== NEVER TAKEN
4a928: 262e 0010 movel %fp@(16),%d3
4a92c: 47f9 0004 a638 lea 4a638 <_RBTree_Insert_unprotected>,%a3
_RBTree_Insert_unprotected(the_rbtree, next);
4a932: 2f03 movel %d3,%sp@-
#include <rtems/system.h>
#include <rtems/score/address.h>
#include <rtems/score/rbtree.h>
#include <rtems/score/isr.h>
void _RBTree_Initialize(
4a934: d684 addl %d4,%d3
4a936: 5382 subql #1,%d2
_RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);
count = number_nodes;
next = starting_address;
while ( count-- ) {
_RBTree_Insert_unprotected(the_rbtree, next);
4a938: 2f0a movel %a2,%sp@-
4a93a: 4e93 jsr %a3@
/* could do sanity checks here */
_RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);
count = number_nodes;
next = starting_address;
while ( count-- ) {
4a93c: 508f addql #8,%sp
4a93e: 4a82 tstl %d2
4a940: 66f0 bnes 4a932 <_RBTree_Initialize+0x42>
_RBTree_Insert_unprotected(the_rbtree, next);
next = (RBTree_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
}
4a942: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4a948: 4e5e unlk %fp <== NOT EXECUTED
0004a0bc <_RBTree_Insert_unprotected>:
*/
RBTree_Node *_RBTree_Insert_unprotected(
RBTree_Control *the_rbtree,
RBTree_Node *the_node
)
{
4a0bc: 4e56 ffe4 linkw %fp,#-28
4a0c0: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
4a0c4: 286e 0008 moveal %fp@(8),%a4
4a0c8: 266e 000c moveal %fp@(12),%a3
if(!the_node) return (RBTree_Node*)-1;
4a0cc: 4a8b tstl %a3
4a0ce: 6700 01b6 beqw 4a286 <_RBTree_Insert_unprotected+0x1ca>
RBTree_Node *iter_node = the_rbtree->root;
4a0d2: 246c 0004 moveal %a4@(4),%a2
int compare_result;
if (!iter_node) { /* special case: first node inserted */
4a0d6: 4a8a tstl %a2
4a0d8: 6700 01ba beqw 4a294 <_RBTree_Insert_unprotected+0x1d8>
the_node->parent = (RBTree_Node *) the_rbtree;
the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
} else {
/* typical binary search tree insert, descend tree to leaf and insert */
while (iter_node) {
compare_result = the_rbtree->compare_function(the_node, iter_node);
4a0dc: 2f0a movel %a2,%sp@-
4a0de: 206c 0010 moveal %a4@(16),%a0
4a0e2: 2f0b movel %a3,%sp@-
4a0e4: 4e90 jsr %a0@
if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
4a0e6: 508f addql #8,%sp
return iter_node;
RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );
4a0e8: 2400 movel %d0,%d2
4a0ea: 4682 notl %d2
the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
} else {
/* typical binary search tree insert, descend tree to leaf and insert */
while (iter_node) {
compare_result = the_rbtree->compare_function(the_node, iter_node);
if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
4a0ec: 4a2c 0014 tstb %a4@(20)
4a0f0: 6706 beqs 4a0f8 <_RBTree_Insert_unprotected+0x3c>
4a0f2: 4a80 tstl %d0
4a0f4: 6700 0182 beqw 4a278 <_RBTree_Insert_unprotected+0x1bc>
return iter_node;
RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );
4a0f8: d482 addl %d2,%d2
4a0fa: 9582 subxl %d2,%d2
4a0fc: 4482 negl %d2
if (!iter_node->child[dir]) {
4a0fe: 2202 movel %d2,%d1
4a100: 5281 addql #1,%d1
4a102: 2632 1c00 movel %a2@(00000000,%d1:l:4),%d3
4a106: 6704 beqs 4a10c <_RBTree_Insert_unprotected+0x50>
(dir && _RBTree_Is_greater(compare_result)) ) {
the_rbtree->first[dir] = the_node;
}
break;
} else {
iter_node = iter_node->child[dir];
4a108: 2443 moveal %d3,%a2
4a10a: 60d0 bras 4a0dc <_RBTree_Insert_unprotected+0x20>
the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
the_node->color = RBT_RED;
iter_node->child[dir] = the_node;
the_node->parent = iter_node;
/* update min/max */
compare_result = the_rbtree->compare_function(
4a10c: 206c 0010 moveal %a4@(16),%a0
if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
return iter_node;
RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );
if (!iter_node->child[dir]) {
the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
the_node->color = RBT_RED;
4a110: 7001 moveq #1,%d0
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_First(
const RBTree_Control *the_rbtree,
RBTree_Direction dir
)
{
return the_rbtree->first[dir];
4a112: 2a42 moveal %d2,%a5
4a114: 548d addql #2,%a5
compare_result = the_rbtree->compare_function(the_node, iter_node);
if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
return iter_node;
RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );
if (!iter_node->child[dir]) {
the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
4a116: 42ab 0008 clrl %a3@(8)
4a11a: 42ab 0004 clrl %a3@(4)
the_node->color = RBT_RED;
iter_node->child[dir] = the_node;
4a11e: 258b 1c00 movel %a3,%a2@(00000000,%d1:l:4)
if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
return iter_node;
RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );
if (!iter_node->child[dir]) {
the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
the_node->color = RBT_RED;
4a122: 2740 000c movel %d0,%a3@(12)
iter_node->child[dir] = the_node;
the_node->parent = iter_node;
4a126: 268a movel %a2,%a3@
/* update min/max */
compare_result = the_rbtree->compare_function(
4a128: 2f34 dc00 movel %a4@(00000000,%a5:l:4),%sp@-
4a12c: 2f0b movel %a3,%sp@-
4a12e: 4e90 jsr %a0@
the_node,
_RBTree_First(the_rbtree, dir)
);
if ( (!dir && _RBTree_Is_lesser(compare_result)) ||
4a130: 508f addql #8,%sp
4a132: 4a82 tstl %d2
4a134: 6600 0124 bnew 4a25a <_RBTree_Insert_unprotected+0x19e>
4a138: 4a80 tstl %d0
4a13a: 6d00 0124 bltw 4a260 <_RBTree_Insert_unprotected+0x1a4>
_ISR_Disable( level );
return_node = _RBTree_Insert_unprotected( tree, node );
_ISR_Enable( level );
return return_node;
}
4a13e: 2053 moveal %a3@,%a0
*/
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent(
const RBTree_Node *the_node
)
{
if (!the_node->parent->parent) return NULL;
4a140: 2250 moveal %a0@,%a1
4a142: 2449 moveal %a1,%a2
4a144: 4a89 tstl %a1
4a146: 6700 00ee beqw 4a236 <_RBTree_Insert_unprotected+0x17a>
*/
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(
const RBTree_Node *the_node
)
{
return (the_node && the_node->color == RBT_RED);
4a14a: 7801 moveq #1,%d4
4a14c: b8a8 000c cmpl %a0@(12),%d4
4a150: 670c beqs 4a15e <_RBTree_Insert_unprotected+0xa2>
/* verify red-black properties */
_RBTree_Validate_insert_unprotected(the_node);
}
return (RBTree_Node*)0;
}
4a152: 2003 movel %d3,%d0
4a154: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4a15a: 4e5e unlk %fp
4a15c: 4e75 rts
)
{
if(!the_node) return NULL;
if(!(the_node->parent)) return NULL;
if(!(the_node->parent->parent)) return NULL;
if(!(the_node->parent->parent->parent)) return NULL;
4a15e: 4a91 tstl %a1@
4a160: 6700 0106 beqw 4a268 <_RBTree_Insert_unprotected+0x1ac>
{
if(!the_node) return NULL;
if(!(the_node->parent)) return NULL;
if(!(the_node->parent->parent)) return NULL;
if(the_node == the_node->parent->child[RBT_LEFT])
4a164: 2229 0004 movel %a1@(4),%d1
4a168: b288 cmpl %a0,%d1
4a16a: 6700 0104 beqw 4a270 <_RBTree_Insert_unprotected+0x1b4>
4a16e: 2841 moveal %d1,%a4
*/
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(
const RBTree_Node *the_node
)
{
return (the_node && the_node->color == RBT_RED);
4a170: 4a8c tstl %a4
4a172: 670a beqs 4a17e <_RBTree_Insert_unprotected+0xc2>
4a174: 7401 moveq #1,%d2
4a176: b4ac 000c cmpl %a4@(12),%d2
4a17a: 6700 00ca beqw 4a246 <_RBTree_Insert_unprotected+0x18a>
the_node->parent->color = RBT_BLACK;
u->color = RBT_BLACK;
g->color = RBT_RED;
the_node = g;
} else { /* if uncle is black */
RBTree_Direction dir = the_node != the_node->parent->child[0];
4a17e: b7e8 0004 cmpal %a0@(4),%a3
4a182: 56c2 sne %d2
RBTree_Direction pdir = the_node->parent != g->child[0];
4a184: b288 cmpl %a0,%d1
4a186: 56c1 sne %d1
the_node->parent->color = RBT_BLACK;
u->color = RBT_BLACK;
g->color = RBT_RED;
the_node = g;
} else { /* if uncle is black */
RBTree_Direction dir = the_node != the_node->parent->child[0];
4a188: 49c2 extbl %d2
RBTree_Direction pdir = the_node->parent != g->child[0];
4a18a: 49c1 extbl %d1
the_node->parent->color = RBT_BLACK;
u->color = RBT_BLACK;
g->color = RBT_RED;
the_node = g;
} else { /* if uncle is black */
RBTree_Direction dir = the_node != the_node->parent->child[0];
4a18c: 2001 movel %d1,%d0
4a18e: 4480 negl %d0
RBTree_Direction pdir = the_node->parent != g->child[0];
/* ensure node is on the same branch direction as parent */
if (dir != pdir) {
4a190: b282 cmpl %d2,%d1
4a192: 6748 beqs 4a1dc <_RBTree_Insert_unprotected+0x120>
*/
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(
RBTree_Direction the_dir
)
{
return (RBTree_Direction) !((int) the_dir);
4a194: 4a80 tstl %d0
4a196: 57c2 seq %d2
RBTree_Direction dir
)
{
RBTree_Node *c;
if (the_node == NULL) return;
if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
4a198: 7801 moveq #1,%d4
4a19a: 2200 movel %d0,%d1
*/
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(
RBTree_Direction the_dir
)
{
return (RBTree_Direction) !((int) the_dir);
4a19c: 49c2 extbl %d2
RBTree_Direction dir
)
{
RBTree_Node *c;
if (the_node == NULL) return;
if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
4a19e: 9882 subl %d2,%d4
4a1a0: 5281 addql #1,%d1
4a1a2: 2870 4c00 moveal %a0@(00000000,%d4:l:4),%a4
4a1a6: 4a8c tstl %a4
4a1a8: 672c beqs 4a1d6 <_RBTree_Insert_unprotected+0x11a><== NEVER TAKEN
c = the_node->child[_RBTree_Opposite_direction(dir)];
the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];
4a1aa: 4bf4 1c00 lea %a4@(00000000,%d1:l:4),%a5
4a1ae: 2195 4c00 movel %a5@,%a0@(00000000,%d4:l:4)
if (c->child[dir])
4a1b2: 2a74 1c00 moveal %a4@(00000000,%d1:l:4),%a5
4a1b6: 4a8d tstl %a5
4a1b8: 6704 beqs 4a1be <_RBTree_Insert_unprotected+0x102>
c->child[dir]->parent = the_node;
4a1ba: 2a88 movel %a0,%a5@
4a1bc: 2250 moveal %a0@,%a1
c->child[dir] = the_node;
4a1be: 2988 1c00 movel %a0,%a4@(00000000,%d1:l:4)
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
4a1c2: 7801 moveq #1,%d4
4a1c4: b1e9 0004 cmpal %a1@(4),%a0
4a1c8: 56c2 sne %d2
c->parent = the_node->parent;
4a1ca: 2889 movel %a1,%a4@
if (c->child[dir])
c->child[dir]->parent = the_node;
c->child[dir] = the_node;
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
4a1cc: 49c2 extbl %d2
4a1ce: 9882 subl %d2,%d4
4a1d0: 238c 4c00 movel %a4,%a1@(00000000,%d4:l:4)
c->parent = the_node->parent;
the_node->parent = c;
4a1d4: 208c movel %a4,%a0@
_RBTree_Rotate(the_node->parent, pdir);
the_node = the_node->child[pdir];
4a1d6: 2673 1c00 moveal %a3@(00000000,%d1:l:4),%a3
4a1da: 2053 moveal %a3@,%a0
}
the_node->parent->color = RBT_BLACK;
g->color = RBT_RED;
/* now rotate grandparent in the other branch direction (toward uncle) */
_RBTree_Rotate(g, (1-pdir));
4a1dc: 7201 moveq #1,%d1
4a1de: 9280 subl %d0,%d1
4a1e0: 2001 movel %d1,%d0
4a1e2: 7201 moveq #1,%d1
if (dir != pdir) {
_RBTree_Rotate(the_node->parent, pdir);
the_node = the_node->child[pdir];
}
the_node->parent->color = RBT_BLACK;
g->color = RBT_RED;
4a1e4: 7401 moveq #1,%d2
4a1e6: b181 eorl %d0,%d1
/* ensure node is on the same branch direction as parent */
if (dir != pdir) {
_RBTree_Rotate(the_node->parent, pdir);
the_node = the_node->child[pdir];
}
the_node->parent->color = RBT_BLACK;
4a1e8: 42a8 000c clrl %a0@(12)
RBTree_Direction dir
)
{
RBTree_Node *c;
if (the_node == NULL) return;
if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
4a1ec: 5281 addql #1,%d1
4a1ee: 2072 1c00 moveal %a2@(00000000,%d1:l:4),%a0
g->color = RBT_RED;
4a1f2: 2542 000c movel %d2,%a2@(12)
4a1f6: 4a88 tstl %a0
4a1f8: 6700 ff44 beqw 4a13e <_RBTree_Insert_unprotected+0x82>
c = the_node->child[_RBTree_Opposite_direction(dir)];
the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];
4a1fc: 5280 addql #1,%d0
4a1fe: 43f0 0c00 lea %a0@(00000000,%d0:l:4),%a1
4a202: 2591 1c00 movel %a1@,%a2@(00000000,%d1:l:4)
if (c->child[dir])
4a206: 2270 0c00 moveal %a0@(00000000,%d0:l:4),%a1
4a20a: 4a89 tstl %a1
4a20c: 6702 beqs 4a210 <_RBTree_Insert_unprotected+0x154>
c->child[dir]->parent = the_node;
4a20e: 228a movel %a2,%a1@
c->child[dir] = the_node;
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
4a210: 2252 moveal %a2@,%a1
4a212: 7201 moveq #1,%d1
the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];
if (c->child[dir])
c->child[dir]->parent = the_node;
c->child[dir] = the_node;
4a214: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4)
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
4a218: b5e9 0004 cmpal %a1@(4),%a2
4a21c: 56c0 sne %d0
c->parent = the_node->parent;
4a21e: 2089 movel %a1,%a0@
if (c->child[dir])
c->child[dir]->parent = the_node;
c->child[dir] = the_node;
the_node->parent->child[the_node != the_node->parent->child[0]] = c;
4a220: 49c0 extbl %d0
4a222: 9280 subl %d0,%d1
4a224: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4)
c->parent = the_node->parent;
the_node->parent = c;
4a228: 2488 movel %a0,%a2@
_ISR_Disable( level );
return_node = _RBTree_Insert_unprotected( tree, node );
_ISR_Enable( level );
return return_node;
}
4a22a: 2053 moveal %a3@,%a0
*/
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent(
const RBTree_Node *the_node
)
{
if (!the_node->parent->parent) return NULL;
4a22c: 2250 moveal %a0@,%a1
4a22e: 2449 moveal %a1,%a2
4a230: 4a89 tstl %a1
4a232: 6600 ff16 bnew 4a14a <_RBTree_Insert_unprotected+0x8e>
/* verify red-black properties */
_RBTree_Validate_insert_unprotected(the_node);
}
return (RBTree_Node*)0;
}
4a236: 2003 movel %d3,%d0
/* now rotate grandparent in the other branch direction (toward uncle) */
_RBTree_Rotate(g, (1-pdir));
}
}
if(!the_node->parent->parent) the_node->color = RBT_BLACK;
4a238: 42ab 000c clrl %a3@(12)
/* verify red-black properties */
_RBTree_Validate_insert_unprotected(the_node);
}
return (RBTree_Node*)0;
}
4a23c: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4a242: 4e5e unlk %fp
4a244: 4e75 rts
u = _RBTree_Parent_sibling(the_node);
g = the_node->parent->parent;
/* if uncle is red, repaint uncle/parent black and grandparent red */
if(_RBTree_Is_red(u)) {
the_node->parent->color = RBT_BLACK;
4a246: 42a8 000c clrl %a0@(12)
u->color = RBT_BLACK;
g->color = RBT_RED;
4a24a: 7401 moveq #1,%d2
4a24c: 2649 moveal %a1,%a3
g = the_node->parent->parent;
/* if uncle is red, repaint uncle/parent black and grandparent red */
if(_RBTree_Is_red(u)) {
the_node->parent->color = RBT_BLACK;
u->color = RBT_BLACK;
4a24e: 42ac 000c clrl %a4@(12)
g->color = RBT_RED;
4a252: 2342 000c movel %d2,%a1@(12)
4a256: 6000 fee6 braw 4a13e <_RBTree_Insert_unprotected+0x82>
compare_result = the_rbtree->compare_function(
the_node,
_RBTree_First(the_rbtree, dir)
);
if ( (!dir && _RBTree_Is_lesser(compare_result)) ||
(dir && _RBTree_Is_greater(compare_result)) ) {
4a25a: 4a80 tstl %d0
4a25c: 6f00 fee0 blew 4a13e <_RBTree_Insert_unprotected+0x82>
the_rbtree->first[dir] = the_node;
4a260: 298b dc00 movel %a3,%a4@(00000000,%a5:l:4)
4a264: 6000 fed8 braw 4a13e <_RBTree_Insert_unprotected+0x82>
4a268: 2229 0004 movel %a1@(4),%d1 <== NOT EXECUTED
4a26c: 6000 ff10 braw 4a17e <_RBTree_Insert_unprotected+0xc2><== NOT EXECUTED
if(!the_node) return NULL;
if(!(the_node->parent)) return NULL;
if(!(the_node->parent->parent)) return NULL;
if(the_node == the_node->parent->child[RBT_LEFT])
return the_node->parent->child[RBT_RIGHT];
4a270: 2869 0008 moveal %a1@(8),%a4
4a274: 6000 fefa braw 4a170 <_RBTree_Insert_unprotected+0xb4>
the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
} else {
/* typical binary search tree insert, descend tree to leaf and insert */
while (iter_node) {
compare_result = the_rbtree->compare_function(the_node, iter_node);
if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
4a278: 260a movel %a2,%d3
/* verify red-black properties */
_RBTree_Validate_insert_unprotected(the_node);
}
return (RBTree_Node*)0;
}
4a27a: 2003 movel %d3,%d0
4a27c: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4a282: 4e5e unlk %fp
4a284: 4e75 rts
RBTree_Node *_RBTree_Insert_unprotected(
RBTree_Control *the_rbtree,
RBTree_Node *the_node
)
{
if(!the_node) return (RBTree_Node*)-1;
4a286: 76ff moveq #-1,%d3
/* verify red-black properties */
_RBTree_Validate_insert_unprotected(the_node);
}
return (RBTree_Node*)0;
}
4a288: 2003 movel %d3,%d0
4a28a: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4a290: 4e5e unlk %fp
4a292: 4e75 rts
RBTree_Node *iter_node = the_rbtree->root;
int compare_result;
if (!iter_node) { /* special case: first node inserted */
the_node->color = RBT_BLACK;
4a294: 42ab 000c clrl %a3@(12)
} /* while(iter_node) */
/* verify red-black properties */
_RBTree_Validate_insert_unprotected(the_node);
}
return (RBTree_Node*)0;
4a298: 4283 clrl %d3
}
4a29a: 2003 movel %d3,%d0
RBTree_Node *iter_node = the_rbtree->root;
int compare_result;
if (!iter_node) { /* special case: first node inserted */
the_node->color = RBT_BLACK;
the_rbtree->root = the_node;
4a29c: 294b 0004 movel %a3,%a4@(4)
the_rbtree->first[0] = the_rbtree->first[1] = the_node;
4a2a0: 294b 000c movel %a3,%a4@(12)
4a2a4: 294b 0008 movel %a3,%a4@(8)
the_node->parent = (RBTree_Node *) the_rbtree;
4a2a8: 268c movel %a4,%a3@
the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
4a2aa: 42ab 0008 clrl %a3@(8)
4a2ae: 42ab 0004 clrl %a3@(4)
/* verify red-black properties */
_RBTree_Validate_insert_unprotected(the_node);
}
return (RBTree_Node*)0;
}
4a2b2: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4a2b8: 4e5e unlk %fp <== NOT EXECUTED
0004a2e8 <_RBTree_Iterate_unprotected>:
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_First(
const RBTree_Control *the_rbtree,
RBTree_Direction dir
)
{
return the_rbtree->first[dir];
4a2e8: 7202 moveq #2,%d1
const RBTree_Control *rbtree,
RBTree_Direction dir,
RBTree_Visitor visitor,
void *visitor_arg
)
{
4a2ea: 4e56 ffe8 linkw %fp,#-24
4a2ee: 206e 0008 moveal %fp@(8),%a0
4a2f2: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
4a2f6: 262e 000c movel %fp@(12),%d3
*/
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(
RBTree_Direction the_dir
)
{
return (RBTree_Direction) !((int) the_dir);
4a2fa: 57c0 seq %d0
4a2fc: 246e 0010 moveal %fp@(16),%a2
4a300: 49c0 extbl %d0
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_First(
const RBTree_Control *the_rbtree,
RBTree_Direction dir
)
{
return the_rbtree->first[dir];
4a302: 9280 subl %d0,%d1
4a304: 47f9 0004 a33c lea 4a33c <_RBTree_Next_unprotected>,%a3
4a30a: 2430 1c00 movel %a0@(00000000,%d1:l:4),%d2
4a30e: 2a2e 0014 movel %fp@(20),%d5
RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );
const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );
bool stop = false;
while ( !stop && current != NULL ) {
4a312: 4a82 tstl %d2
4a314: 671a beqs 4a330 <_RBTree_Iterate_unprotected+0x48>
stop = (*visitor)( current, dir, visitor_arg );
4a316: 2f05 movel %d5,%sp@-
4a318: 2f03 movel %d3,%sp@-
4a31a: 2f02 movel %d2,%sp@-
4a31c: 4e92 jsr %a2@
current = _RBTree_Next_unprotected( current, dir );
4a31e: 2f03 movel %d3,%sp@-
RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );
const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );
bool stop = false;
while ( !stop && current != NULL ) {
stop = (*visitor)( current, dir, visitor_arg );
4a320: 1800 moveb %d0,%d4
current = _RBTree_Next_unprotected( current, dir );
4a322: 2f02 movel %d2,%sp@-
4a324: 4e93 jsr %a3@
{
RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );
const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );
bool stop = false;
while ( !stop && current != NULL ) {
4a326: 4fef 0014 lea %sp@(20),%sp
stop = (*visitor)( current, dir, visitor_arg );
current = _RBTree_Next_unprotected( current, dir );
4a32a: 2400 movel %d0,%d2
{
RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );
const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );
bool stop = false;
while ( !stop && current != NULL ) {
4a32c: 4a04 tstb %d4
4a32e: 67e2 beqs 4a312 <_RBTree_Iterate_unprotected+0x2a><== ALWAYS TAKEN
stop = (*visitor)( current, dir, visitor_arg );
current = _RBTree_Next_unprotected( current, dir );
}
}
4a330: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
4a336: 4e5e unlk %fp
...
0004a33c <_RBTree_Next_unprotected>:
RBTree_Node *_RBTree_Next_unprotected(
const RBTree_Node *node,
RBTree_Direction dir
)
{
4a33c: 4e56 0000 linkw %fp,#0
4a340: 222e 000c movel %fp@(12),%d1
*/
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(
RBTree_Direction the_dir
)
{
return (RBTree_Direction) !((int) the_dir);
4a344: 57c0 seq %d0
4a346: 226e 0008 moveal %fp@(8),%a1
RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );
RBTree_Node *current = node->child [dir];
4a34a: 5281 addql #1,%d1
4a34c: 49c0 extbl %d0
4a34e: 4480 negl %d0
4a350: 2071 1c00 moveal %a1@(00000000,%d1:l:4),%a0
RBTree_Node *_RBTree_Next_unprotected(
const RBTree_Node *node,
RBTree_Direction dir
)
{
4a354: 2f0a movel %a2,%sp@-
RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );
RBTree_Node *current = node->child [dir];
RBTree_Node *next = NULL;
if ( current != NULL ) {
4a356: 4a88 tstl %a0
4a358: 6718 beqs 4a372 <_RBTree_Next_unprotected+0x36>
4a35a: 5280 addql #1,%d0
next = current;
while ( (current = current->child [opp_dir]) != NULL ) {
4a35c: 2230 0c00 movel %a0@(00000000,%d0:l:4),%d1
4a360: 6708 beqs 4a36a <_RBTree_Next_unprotected+0x2e>
4a362: 2041 moveal %d1,%a0
4a364: 2230 0c00 movel %a0@(00000000,%d0:l:4),%d1
4a368: 66f8 bnes 4a362 <_RBTree_Next_unprotected+0x26> <== NEVER TAKEN
}
}
}
return next;
}
4a36a: 245f moveal %sp@+,%a2
RBTree_Node *parent = node->parent;
if ( parent->parent && node == parent->child [opp_dir] ) {
next = parent;
} else {
while ( parent->parent && node == parent->child [dir] ) {
4a36c: 2008 movel %a0,%d0
}
}
}
return next;
}
4a36e: 4e5e unlk %fp
4a370: 4e75 rts
next = current;
while ( (current = current->child [opp_dir]) != NULL ) {
next = current;
}
} else {
RBTree_Node *parent = node->parent;
4a372: 2051 moveal %a1@,%a0
if ( parent->parent && node == parent->child [opp_dir] ) {
4a374: 2450 moveal %a0@,%a2
4a376: 4a8a tstl %a2
4a378: 6706 beqs 4a380 <_RBTree_Next_unprotected+0x44>
4a37a: b3f0 0c04 cmpal %a0@(00000004,%d0:l:4),%a1
4a37e: 67ea beqs 4a36a <_RBTree_Next_unprotected+0x2e>
next = parent;
} else {
while ( parent->parent && node == parent->child [dir] ) {
4a380: 4a8a tstl %a2
4a382: 670e beqs 4a392 <_RBTree_Next_unprotected+0x56>
4a384: b3f0 1c00 cmpal %a0@(00000000,%d1:l:4),%a1
4a388: 66e0 bnes 4a36a <_RBTree_Next_unprotected+0x2e>
4a38a: 2248 moveal %a0,%a1
4a38c: 204a moveal %a2,%a0
4a38e: 2452 moveal %a2@,%a2
4a390: 60ee bras 4a380 <_RBTree_Next_unprotected+0x44>
}
}
}
return next;
}
4a392: 245f moveal %sp@+,%a2
RBTree_Direction dir
)
{
RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );
RBTree_Node *current = node->child [dir];
RBTree_Node *next = NULL;
4a394: 4280 clrl %d0
}
}
}
return next;
}
4a396: 4e5e unlk %fp <== NOT EXECUTED
000486cc <_RTEMS_signal_Post_switch_hook>:
#include <rtems/score/thread.h>
#include <rtems/score/apiext.h>
#include <rtems/rtems/tasks.h>
static void _RTEMS_signal_Post_switch_hook( Thread_Control *executing )
{
486cc: 4e56 ffec linkw %fp,#-20
486d0: 206e 0008 moveal %fp@(8),%a0
486d4: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
RTEMS_API_Control *api;
ASR_Information *asr;
rtems_signal_set signal_set;
Modes_Control prev_mode;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
486d8: 2468 00f8 moveal %a0@(248),%a2
if ( !api )
486dc: 4a8a tstl %a2
486de: 671a beqs 486fa <_RTEMS_signal_Post_switch_hook+0x2e><== NEVER TAKEN
* Signal Processing
*/
asr = &api->Signal;
_ISR_Disable( level );
486e0: 203c 0000 0700 movel #1792,%d0
486e6: 40c1 movew %sr,%d1
486e8: 8081 orl %d1,%d0
486ea: 46c0 movew %d0,%sr
signal_set = asr->signals_posted;
486ec: 242a 0012 movel %a2@(18),%d2
asr->signals_posted = 0;
486f0: 42aa 0012 clrl %a2@(18)
_ISR_Enable( level );
486f4: 46c1 movew %d1,%sr
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
486f6: 4a82 tstl %d2
486f8: 660a bnes 48704 <_RTEMS_signal_Post_switch_hook+0x38>
(*asr->handler)( signal_set );
asr->nest_level -= 1;
rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
}
486fa: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3
48700: 4e5e unlk %fp
48702: 4e75 rts
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
return;
asr->nest_level += 1;
48704: 52aa 001a addql #1,%a2@(26)
rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
48708: 260e movel %fp,%d3
4870a: 5983 subql #4,%d3
4870c: 47f9 0004 8b5c lea 48b5c <rtems_task_mode>,%a3
48712: 2f03 movel %d3,%sp@-
48714: 2f3c 0000 ffff movel #65535,%sp@-
4871a: 2f2a 000e movel %a2@(14),%sp@-
4871e: 4e93 jsr %a3@
(*asr->handler)( signal_set );
48720: 2f02 movel %d2,%sp@-
48722: 206a 000a moveal %a2@(10),%a0
48726: 4e90 jsr %a0@
asr->nest_level -= 1;
48728: 53aa 001a subql #1,%a2@(26)
rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
4872c: 2f03 movel %d3,%sp@-
4872e: 2f3c 0000 ffff movel #65535,%sp@-
48734: 2f2e fffc movel %fp@(-4),%sp@-
48738: 4e93 jsr %a3@
4873a: 4fef 001c lea %sp@(28),%sp
}
4873e: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3
48744: 4e5e unlk %fp <== NOT EXECUTED
0004c3d6 <_RTEMS_tasks_Create_extension>:
static bool _RTEMS_tasks_Create_extension(
Thread_Control *executing,
Thread_Control *created
)
{
4c3d6: 4e56 0000 linkw %fp,#0
4c3da: 2f0a movel %a2,%sp@-
4c3dc: 246e 000c moveal %fp@(12),%a2
/*
* Notepads must be the last entry in the structure and they
* can be left off if disabled in the configuration.
*/
to_allocate = sizeof( RTEMS_API_Control );
if ( !rtems_configuration_get_notepads_enabled() )
4c3e0: 4a39 0005 e1a6 tstb 5e1a6 <Configuration_RTEMS_API+0x4>
4c3e6: 675c beqs 4c444 <_RTEMS_tasks_Create_extension+0x6e>
/*
* Notepads must be the last entry in the structure and they
* can be left off if disabled in the configuration.
*/
to_allocate = sizeof( RTEMS_API_Control );
4c3e8: 705e moveq #94,%d0
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
4c3ea: 2f00 movel %d0,%sp@-
4c3ec: 4eb9 0004 abf4 jsr 4abf4 <_Workspace_Allocate>
if ( !api )
4c3f2: 588f addql #4,%sp
*/
to_allocate = sizeof( RTEMS_API_Control );
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
4c3f4: 2040 moveal %d0,%a0
if ( !api )
4c3f6: 4a80 tstl %d0
4c3f8: 675c beqs 4c456 <_RTEMS_tasks_Create_extension+0x80>
return false;
created->API_Extensions[ THREAD_API_RTEMS ] = api;
4c3fa: 2540 00f8 movel %d0,%a2@(248)
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4c3fe: 4200 clrb %d0
4c400: 4290 clrl %a0@
4c402: 1140 0008 moveb %d0,%a0@(8)
4c406: 42a8 0004 clrl %a0@(4)
information->handler = NULL;
4c40a: 42a8 000a clrl %a0@(10)
information->mode_set = RTEMS_DEFAULT_MODES;
4c40e: 42a8 000e clrl %a0@(14)
information->signals_posted = 0;
4c412: 42a8 0012 clrl %a0@(18)
information->signals_pending = 0;
4c416: 42a8 0016 clrl %a0@(22)
information->nest_level = 0;
4c41a: 42a8 001a clrl %a0@(26)
_Event_Initialize( &api->Event );
_Event_Initialize( &api->System_event );
_ASR_Initialize( &api->Signal );
created->task_variables = NULL;
4c41e: 42aa 0104 clrl %a2@(260)
if ( rtems_configuration_get_notepads_enabled() ) {
4c422: 4a39 0005 e1a6 tstb 5e1a6 <Configuration_RTEMS_API+0x4>
4c428: 6710 beqs 4c43a <_RTEMS_tasks_Create_extension+0x64>
* task is created via another API, then this routine is invoked
* and this API given the opportunity to initialize its extension
* area.
*/
static bool _RTEMS_tasks_Create_extension(
4c42a: 41e8 001e lea %a0@(30),%a0
4c42e: 4280 clrl %d0
_ASR_Initialize( &api->Signal );
created->task_variables = NULL;
if ( rtems_configuration_get_notepads_enabled() ) {
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
4c430: 4298 clrl %a0@+
_Event_Initialize( &api->System_event );
_ASR_Initialize( &api->Signal );
created->task_variables = NULL;
if ( rtems_configuration_get_notepads_enabled() ) {
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
4c432: 5280 addql #1,%d0
4c434: 7210 moveq #16,%d1
4c436: b280 cmpl %d0,%d1
4c438: 66f6 bnes 4c430 <_RTEMS_tasks_Create_extension+0x5a>
api->Notepads[i] = 0;
}
return true;
}
4c43a: 246e fffc moveal %fp@(-4),%a2
4c43e: 4e5e unlk %fp
if ( rtems_configuration_get_notepads_enabled() ) {
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
4c440: 7001 moveq #1,%d0
}
4c442: 4e75 rts
* Notepads must be the last entry in the structure and they
* can be left off if disabled in the configuration.
*/
to_allocate = sizeof( RTEMS_API_Control );
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
4c444: 701e moveq #30,%d0
api = _Workspace_Allocate( to_allocate );
4c446: 2f00 movel %d0,%sp@-
4c448: 4eb9 0004 abf4 jsr 4abf4 <_Workspace_Allocate>
if ( !api )
4c44e: 588f addql #4,%sp
*/
to_allocate = sizeof( RTEMS_API_Control );
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
4c450: 2040 moveal %d0,%a0
if ( !api )
4c452: 4a80 tstl %d0
4c454: 66a4 bnes 4c3fa <_RTEMS_tasks_Create_extension+0x24><== ALWAYS TAKEN
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
4c456: 246e fffc moveal %fp@(-4),%a2
4c45a: 4e5e unlk %fp
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
if ( !api )
return false;
4c45c: 4200 clrb %d0 <== NOT EXECUTED
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
00047908 <_RTEMS_tasks_Initialize_user_tasks_body>:
*
* Output parameters: NONE
*/
void _RTEMS_tasks_Initialize_user_tasks_body( void )
{
47908: 4e56 ffe4 linkw %fp,#-28
4790c: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
rtems_initialization_tasks_table *user_tasks;
/*
* Move information into local variables
*/
user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table;
47910: 2479 0005 e1cc moveal 5e1cc <Configuration_RTEMS_API+0x2a>,%a2
maximum = Configuration_RTEMS_API.number_of_initialization_tasks;
47916: 2639 0005 e1c8 movel 5e1c8 <Configuration_RTEMS_API+0x26>,%d3
/*
* Verify that we have a set of user tasks to iterate
*/
if ( !user_tasks )
4791c: 4a8a tstl %a2
4791e: 6754 beqs 47974 <_RTEMS_tasks_Initialize_user_tasks_body+0x6c>
return;
/*
* Now iterate over the initialization tasks and create/start them.
*/
for ( index=0 ; index < maximum ; index++ ) {
47920: 4a83 tstl %d3
47922: 6750 beqs 47974 <_RTEMS_tasks_Initialize_user_tasks_body+0x6c><== NEVER TAKEN
47924: 280e movel %fp,%d4
47926: 4282 clrl %d2
47928: 5984 subql #4,%d4
4792a: 47f9 0004 76c4 lea 476c4 <rtems_task_create>,%a3
&id
);
if ( !rtems_is_status_successful( return_value ) )
_Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
return_value = rtems_task_start(
47930: 49f9 0004 7990 lea 47990 <rtems_task_start>,%a4
/*
* Now iterate over the initialization tasks and create/start them.
*/
for ( index=0 ; index < maximum ; index++ ) {
return_value = rtems_task_create(
47936: 2f04 movel %d4,%sp@-
47938: 2f2a 000c movel %a2@(12),%sp@-
4793c: 2f2a 0014 movel %a2@(20),%sp@-
47940: 2f2a 0004 movel %a2@(4),%sp@-
47944: 2f2a 0008 movel %a2@(8),%sp@-
47948: 2f12 movel %a2@,%sp@-
4794a: 4e93 jsr %a3@
user_tasks[ index ].stack_size,
user_tasks[ index ].mode_set,
user_tasks[ index ].attribute_set,
&id
);
if ( !rtems_is_status_successful( return_value ) )
4794c: 4fef 0018 lea %sp@(24),%sp
47950: 4a80 tstl %d0
47952: 662a bnes 4797e <_RTEMS_tasks_Initialize_user_tasks_body+0x76>
_Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
return_value = rtems_task_start(
47954: 2f2a 0018 movel %a2@(24),%sp@-
47958: 2f2a 0010 movel %a2@(16),%sp@-
4795c: 2f2e fffc movel %fp@(-4),%sp@-
47960: 4e94 jsr %a4@
id,
user_tasks[ index ].entry_point,
user_tasks[ index ].argument
);
if ( !rtems_is_status_successful( return_value ) )
47962: 4fef 000c lea %sp@(12),%sp
47966: 4a80 tstl %d0
47968: 6614 bnes 4797e <_RTEMS_tasks_Initialize_user_tasks_body+0x76>
return;
/*
* Now iterate over the initialization tasks and create/start them.
*/
for ( index=0 ; index < maximum ; index++ ) {
4796a: 5282 addql #1,%d2
4796c: 45ea 001c lea %a2@(28),%a2
47970: b682 cmpl %d2,%d3
47972: 66c2 bnes 47936 <_RTEMS_tasks_Initialize_user_tasks_body+0x2e><== NEVER TAKEN
user_tasks[ index ].argument
);
if ( !rtems_is_status_successful( return_value ) )
_Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
}
}
47974: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4
4797a: 4e5e unlk %fp
4797c: 4e75 rts
id,
user_tasks[ index ].entry_point,
user_tasks[ index ].argument
);
if ( !rtems_is_status_successful( return_value ) )
_Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
4797e: 2f00 movel %d0,%sp@-
47980: 4878 0001 pea 1 <ADD>
47984: 4878 0001 pea 1 <ADD>
47988: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred>
...
0004c336 <_RTEMS_tasks_Switch_extension>:
static void _RTEMS_tasks_Switch_extension(
Thread_Control *executing,
Thread_Control *heir
)
{
4c336: 4e56 0000 linkw %fp,#0
4c33a: 206e 0008 moveal %fp@(8),%a0
/*
* Per Task Variables
*/
tvp = executing->task_variables;
4c33e: 2068 0104 moveal %a0@(260),%a0
while (tvp) {
4c342: 4a88 tstl %a0
4c344: 6712 beqs 4c358 <_RTEMS_tasks_Switch_extension+0x22>
tvp->tval = *tvp->ptr;
4c346: 2268 0004 moveal %a0@(4),%a1
4c34a: 2151 000c movel %a1@,%a0@(12)
*tvp->ptr = tvp->gval;
4c34e: 22a8 0008 movel %a0@(8),%a1@
tvp = (rtems_task_variable_t *)tvp->next;
4c352: 2050 moveal %a0@,%a0
/*
* Per Task Variables
*/
tvp = executing->task_variables;
while (tvp) {
4c354: 4a88 tstl %a0
4c356: 66ee bnes 4c346 <_RTEMS_tasks_Switch_extension+0x10><== NEVER TAKEN
tvp->tval = *tvp->ptr;
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
4c358: 206e 000c moveal %fp@(12),%a0
4c35c: 2068 0104 moveal %a0@(260),%a0
while (tvp) {
4c360: 4a88 tstl %a0
4c362: 6712 beqs 4c376 <_RTEMS_tasks_Switch_extension+0x40>
tvp->gval = *tvp->ptr;
4c364: 2268 0004 moveal %a0@(4),%a1
4c368: 2151 0008 movel %a1@,%a0@(8)
*tvp->ptr = tvp->tval;
4c36c: 22a8 000c movel %a0@(12),%a1@
tvp = (rtems_task_variable_t *)tvp->next;
4c370: 2050 moveal %a0@,%a0
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
while (tvp) {
4c372: 4a88 tstl %a0
4c374: 66ee bnes 4c364 <_RTEMS_tasks_Switch_extension+0x2e><== NEVER TAKEN
tvp->gval = *tvp->ptr;
*tvp->ptr = tvp->tval;
tvp = (rtems_task_variable_t *)tvp->next;
}
}
4c376: 4e5e unlk %fp <== NOT EXECUTED
00073c48 <_Rate_monotonic_Timeout>:
void _Rate_monotonic_Timeout(
Objects_Id id,
void *ignored
)
{
73c48: 4e56 fffc linkw %fp,#-4
73c4c: 2f0a movel %a2,%sp@-
73c4e: 486e fffc pea %fp@(-4)
73c52: 2f2e 0008 movel %fp@(8),%sp@-
73c56: 4879 000a 01c0 pea a01c0 <_Rate_monotonic_Information>
73c5c: 4eb9 0004 8c00 jsr 48c00 <_Objects_Get>
/*
* When we get here, the Timer is already off the chain so we do not
* have to worry about that -- hence no _Watchdog_Remove().
*/
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
73c62: 4fef 000c lea %sp@(12),%sp
73c66: 2440 moveal %d0,%a2
73c68: 4aae fffc tstl %fp@(-4)
73c6c: 6636 bnes 73ca4 <_Rate_monotonic_Timeout+0x5c> <== NEVER TAKEN
case OBJECTS_LOCAL:
the_thread = the_period->owner;
73c6e: 206a 0040 moveal %a2@(64),%a0
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_PERIOD);
73c72: 2028 0010 movel %a0@(16),%d0
73c76: 0280 0000 4000 andil #16384,%d0
if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
73c7c: 670a beqs 73c88 <_Rate_monotonic_Timeout+0x40>
73c7e: 202a 0008 movel %a2@(8),%d0
73c82: b0a8 0020 cmpl %a0@(32),%d0
73c86: 675e beqs 73ce6 <_Rate_monotonic_Timeout+0x9e>
_Thread_Unblock( the_thread );
_Rate_monotonic_Initiate_statistics( the_period );
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
} else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
73c88: 7001 moveq #1,%d0
73c8a: b0aa 0038 cmpl %a2@(56),%d0
73c8e: 671c beqs 73cac <_Rate_monotonic_Timeout+0x64>
_Rate_monotonic_Initiate_statistics( the_period );
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
} else
the_period->state = RATE_MONOTONIC_EXPIRED;
73c90: 7004 moveq #4,%d0
73c92: 2540 0038 movel %d0,%a2@(56)
*
* This routine decrements the thread dispatch level.
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
73c96: 2039 0009 fe7a movel 9fe7a <_Thread_Dispatch_disable_level>,%d0
--level;
73c9c: 5380 subql #1,%d0
_Thread_Dispatch_disable_level = level;
73c9e: 23c0 0009 fe7a movel %d0,9fe7a <_Thread_Dispatch_disable_level>
case OBJECTS_REMOTE: /* impossible */
#endif
case OBJECTS_ERROR:
break;
}
}
73ca4: 246e fff8 moveal %fp@(-8),%a2
73ca8: 4e5e unlk %fp
73caa: 4e75 rts
_Rate_monotonic_Initiate_statistics( the_period );
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
} else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING;
73cac: 103c 0003 moveb #3,%d0
73cb0: 2540 0038 movel %d0,%a2@(56)
_Rate_monotonic_Initiate_statistics( the_period );
73cb4: 2f0a movel %a2,%sp@-
73cb6: 4eb9 0007 3984 jsr 73984 <_Rate_monotonic_Initiate_statistics>
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
73cbc: 256a 003c 001c movel %a2@(60),%a2@(28)
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
73cc2: 486a 0010 pea %a2@(16)
73cc6: 4879 0009 ff16 pea 9ff16 <_Watchdog_Ticks_chain>
73ccc: 4eb9 0004 a548 jsr 4a548 <_Watchdog_Insert>
73cd2: 4fef 000c lea %sp@(12),%sp
*
* This routine decrements the thread dispatch level.
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
73cd6: 2039 0009 fe7a movel 9fe7a <_Thread_Dispatch_disable_level>,%d0
--level;
73cdc: 5380 subql #1,%d0
_Thread_Dispatch_disable_level = level;
73cde: 23c0 0009 fe7a movel %d0,9fe7a <_Thread_Dispatch_disable_level>
73ce4: 60be bras 73ca4 <_Rate_monotonic_Timeout+0x5c>
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
73ce6: 2f3c 1007 fff8 movel #268959736,%sp@-
73cec: 2f08 movel %a0,%sp@-
73cee: 4eb9 0004 94e8 jsr 494e8 <_Thread_Clear_state>
the_thread = the_period->owner;
if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
the_thread->Wait.id == the_period->Object.id ) {
_Thread_Unblock( the_thread );
_Rate_monotonic_Initiate_statistics( the_period );
73cf4: 2f0a movel %a2,%sp@-
73cf6: 4eb9 0007 3984 jsr 73984 <_Rate_monotonic_Initiate_statistics>
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
73cfc: 256a 003c 001c movel %a2@(60),%a2@(28)
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
73d02: 486a 0010 pea %a2@(16)
73d06: 4879 0009 ff16 pea 9ff16 <_Watchdog_Ticks_chain>
73d0c: 4eb9 0004 a548 jsr 4a548 <_Watchdog_Insert>
73d12: 4fef 0014 lea %sp@(20),%sp
*
* This routine decrements the thread dispatch level.
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
73d16: 2039 0009 fe7a movel 9fe7a <_Thread_Dispatch_disable_level>,%d0
--level;
73d1c: 5380 subql #1,%d0
_Thread_Dispatch_disable_level = level;
73d1e: 23c0 0009 fe7a movel %d0,9fe7a <_Thread_Dispatch_disable_level>
73d24: 6000 ff7e braw 73ca4 <_Rate_monotonic_Timeout+0x5c>
00049bc0 <_Scheduler_CBS_Allocate>:
#include <rtems/score/wkspace.h>
void *_Scheduler_CBS_Allocate(
Thread_Control *the_thread
)
{
49bc0: 4e56 0000 linkw %fp,#0
49bc4: 2f0a movel %a2,%sp@-
void *sched;
Scheduler_CBS_Per_thread *schinfo;
sched = _Workspace_Allocate(sizeof(Scheduler_CBS_Per_thread));
49bc6: 4878 001c pea 1c <OPER2+0x8>
#include <rtems/score/wkspace.h>
void *_Scheduler_CBS_Allocate(
Thread_Control *the_thread
)
{
49bca: 246e 0008 moveal %fp@(8),%a2
void *sched;
Scheduler_CBS_Per_thread *schinfo;
sched = _Workspace_Allocate(sizeof(Scheduler_CBS_Per_thread));
49bce: 4eb9 0004 b5e8 jsr 4b5e8 <_Workspace_Allocate>
if ( sched ) {
49bd4: 588f addql #4,%sp
49bd6: 4a80 tstl %d0
49bd8: 6712 beqs 49bec <_Scheduler_CBS_Allocate+0x2c> <== NEVER TAKEN
the_thread->scheduler_info = sched;
49bda: 2540 0086 movel %d0,%a2@(134)
schinfo = (Scheduler_CBS_Per_thread *)(the_thread->scheduler_info);
schinfo->edf_per_thread.thread = the_thread;
49bde: 2040 moveal %d0,%a0
schinfo->edf_per_thread.queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;
49be0: 7202 moveq #2,%d1
sched = _Workspace_Allocate(sizeof(Scheduler_CBS_Per_thread));
if ( sched ) {
the_thread->scheduler_info = sched;
schinfo = (Scheduler_CBS_Per_thread *)(the_thread->scheduler_info);
schinfo->edf_per_thread.thread = the_thread;
49be2: 208a movel %a2,%a0@
schinfo->edf_per_thread.queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;
49be4: 2141 0014 movel %d1,%a0@(20)
schinfo->cbs_server = NULL;
49be8: 42a8 0018 clrl %a0@(24)
}
return sched;
}
49bec: 246e fffc moveal %fp@(-4),%a2
49bf0: 4e5e unlk %fp <== NOT EXECUTED
0004b2f8 <_Scheduler_CBS_Budget_callout>:
Scheduler_CBS_Server **_Scheduler_CBS_Server_list;
void _Scheduler_CBS_Budget_callout(
Thread_Control *the_thread
)
{
4b2f8: 4e56 fffc linkw %fp,#-4
4b2fc: 2f0a movel %a2,%sp@-
4b2fe: 246e 0008 moveal %fp@(8),%a2
Priority_Control new_priority;
Scheduler_CBS_Per_thread *sched_info;
Scheduler_CBS_Server_id server_id;
/* Put violating task to background until the end of period. */
new_priority = the_thread->Start.initial_priority;
4b302: 202a 00a8 movel %a2@(168),%d0
if ( the_thread->real_priority != new_priority )
4b306: b0aa 0018 cmpl %a2@(24),%d0
4b30a: 6704 beqs 4b310 <_Scheduler_CBS_Budget_callout+0x18><== NEVER TAKEN
the_thread->real_priority = new_priority;
4b30c: 2540 0018 movel %d0,%a2@(24)
if ( the_thread->current_priority != new_priority )
4b310: b0aa 0014 cmpl %a2@(20),%d0
4b314: 6712 beqs 4b328 <_Scheduler_CBS_Budget_callout+0x30><== NEVER TAKEN
_Thread_Change_priority(the_thread, new_priority, true);
4b316: 4878 0001 pea 1 <ADD>
4b31a: 2f00 movel %d0,%sp@-
4b31c: 2f0a movel %a2,%sp@-
4b31e: 4eb9 0004 b8d0 jsr 4b8d0 <_Thread_Change_priority>
4b324: 4fef 000c lea %sp@(12),%sp
/* Invoke callback function if any. */
sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
4b328: 246a 0086 moveal %a2@(134),%a2
if ( sched_info->cbs_server->cbs_budget_overrun ) {
4b32c: 206a 0018 moveal %a2@(24),%a0
4b330: 4aa8 000c tstl %a0@(12)
4b334: 671e beqs 4b354 <_Scheduler_CBS_Budget_callout+0x5c>
_Scheduler_CBS_Get_server_id(
4b336: 486e fffc pea %fp@(-4)
4b33a: 2f10 movel %a0@,%sp@-
4b33c: 4eb9 0004 b2b4 jsr 4b2b4 <_Scheduler_CBS_Get_server_id>
sched_info->cbs_server->task_id,
&server_id
);
sched_info->cbs_server->cbs_budget_overrun( server_id );
4b342: 206a 0018 moveal %a2@(24),%a0
4b346: 2f2e fffc movel %fp@(-4),%sp@-
4b34a: 2068 000c moveal %a0@(12),%a0
4b34e: 4e90 jsr %a0@
4b350: 4fef 000c lea %sp@(12),%sp
}
}
4b354: 246e fff8 moveal %fp@(-8),%a2
4b358: 4e5e unlk %fp <== NOT EXECUTED
0004aeb0 <_Scheduler_CBS_Cleanup>:
#include <rtems/config.h>
#include <rtems/score/scheduler.h>
#include <rtems/score/schedulercbs.h>
int _Scheduler_CBS_Cleanup (void)
{
4aeb0: 4e56 0000 linkw %fp,#0
4aeb4: 2079 0006 32d2 moveal 632d2 <_Scheduler_CBS_Server_list>,%a0
4aeba: 2f0a movel %a2,%sp@-
4aebc: 2f02 movel %d2,%sp@-
unsigned int i;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
4aebe: 4ab9 0006 18fc tstl 618fc <_Scheduler_CBS_Maximum_servers>
4aec4: 6724 beqs 4aeea <_Scheduler_CBS_Cleanup+0x3a> <== NEVER TAKEN
4aec6: 4282 clrl %d2
if ( _Scheduler_CBS_Server_list[ i ] )
_Scheduler_CBS_Destroy_server( i );
4aec8: 45f9 0004 afb8 lea 4afb8 <_Scheduler_CBS_Destroy_server>,%a2
int _Scheduler_CBS_Cleanup (void)
{
unsigned int i;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
if ( _Scheduler_CBS_Server_list[ i ] )
4aece: 4ab0 2c00 tstl %a0@(00000000,%d2:l:4)
4aed2: 670c beqs 4aee0 <_Scheduler_CBS_Cleanup+0x30>
_Scheduler_CBS_Destroy_server( i );
4aed4: 2f02 movel %d2,%sp@-
4aed6: 4e92 jsr %a2@
4aed8: 2079 0006 32d2 moveal 632d2 <_Scheduler_CBS_Server_list>,%a0
4aede: 588f addql #4,%sp
int _Scheduler_CBS_Cleanup (void)
{
unsigned int i;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
4aee0: 5282 addql #1,%d2
4aee2: b4b9 0006 18fc cmpl 618fc <_Scheduler_CBS_Maximum_servers>,%d2
4aee8: 65e4 bcss 4aece <_Scheduler_CBS_Cleanup+0x1e>
if ( _Scheduler_CBS_Server_list[ i ] )
_Scheduler_CBS_Destroy_server( i );
}
_Workspace_Free( _Scheduler_CBS_Server_list );
4aeea: 2f08 movel %a0,%sp@-
4aeec: 4eb9 0004 cd80 jsr 4cd80 <_Workspace_Free>
return SCHEDULER_CBS_OK;
}
4aef2: 242e fff8 movel %fp@(-8),%d2
4aef6: 4280 clrl %d0
4aef8: 246e fffc moveal %fp@(-4),%a2
4aefc: 4e5e unlk %fp <== NOT EXECUTED
0004af00 <_Scheduler_CBS_Create_server>:
int _Scheduler_CBS_Create_server (
Scheduler_CBS_Parameters *params,
Scheduler_CBS_Budget_overrun budget_overrun_callback,
rtems_id *server_id
)
{
4af00: 4e56 fff0 linkw %fp,#-16
4af04: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
4af08: 266e 0008 moveal %fp@(8),%a3
4af0c: 246e 0010 moveal %fp@(16),%a2
unsigned int i;
Scheduler_CBS_Server *the_server;
if ( params->budget <= 0 ||
4af10: 4aab 0004 tstl %a3@(4)
4af14: 6f00 0088 blew 4af9e <_Scheduler_CBS_Create_server+0x9e>
4af18: 4a93 tstl %a3@
4af1a: 6f00 0082 blew 4af9e <_Scheduler_CBS_Create_server+0x9e>
params->deadline <= 0 ||
params->budget >= SCHEDULER_EDF_PRIO_MSB ||
params->deadline >= SCHEDULER_EDF_PRIO_MSB )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
4af1e: 2239 0006 18fc movel 618fc <_Scheduler_CBS_Maximum_servers>,%d1
4af24: 6766 beqs 4af8c <_Scheduler_CBS_Create_server+0x8c><== NEVER TAKEN
if ( !_Scheduler_CBS_Server_list[i] )
4af26: 2279 0006 32d2 moveal 632d2 <_Scheduler_CBS_Server_list>,%a1
4af2c: 4a91 tstl %a1@
4af2e: 6768 beqs 4af98 <_Scheduler_CBS_Create_server+0x98>
#include <rtems/system.h>
#include <rtems/config.h>
#include <rtems/score/scheduler.h>
#include <rtems/score/schedulercbs.h>
int _Scheduler_CBS_Create_server (
4af30: 41e9 0004 lea %a1@(4),%a0
4af34: 4280 clrl %d0
params->deadline <= 0 ||
params->budget >= SCHEDULER_EDF_PRIO_MSB ||
params->deadline >= SCHEDULER_EDF_PRIO_MSB )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
4af36: 5280 addql #1,%d0
4af38: b280 cmpl %d0,%d1
4af3a: 6750 beqs 4af8c <_Scheduler_CBS_Create_server+0x8c>
if ( !_Scheduler_CBS_Server_list[i] )
4af3c: 4a98 tstl %a0@+
4af3e: 66f6 bnes 4af36 <_Scheduler_CBS_Create_server+0x36>
4af40: 2200 movel %d0,%d1
4af42: e589 lsll #2,%d1
if ( i == _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_FULL;
*server_id = i;
_Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)
_Workspace_Allocate( sizeof(Scheduler_CBS_Server) );
4af44: 4878 0010 pea 10 <INVALID_OPERATION>
if ( i == _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_FULL;
*server_id = i;
_Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)
4af48: 49f1 1800 lea %a1@(00000000,%d1:l),%a4
}
if ( i == _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_FULL;
*server_id = i;
4af4c: 2480 movel %d0,%a2@
_Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)
_Workspace_Allocate( sizeof(Scheduler_CBS_Server) );
4af4e: 4eb9 0004 cd64 jsr 4cd64 <_Workspace_Allocate>
the_server = _Scheduler_CBS_Server_list[*server_id];
4af54: 2212 movel %a2@,%d1
if ( !the_server )
4af56: 588f addql #4,%sp
if ( i == _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_FULL;
*server_id = i;
_Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)
4af58: 2880 movel %d0,%a4@
_Workspace_Allocate( sizeof(Scheduler_CBS_Server) );
the_server = _Scheduler_CBS_Server_list[*server_id];
4af5a: 2079 0006 32d2 moveal 632d2 <_Scheduler_CBS_Server_list>,%a0
4af60: 2070 1c00 moveal %a0@(00000000,%d1:l:4),%a0
if ( !the_server )
4af64: 4a88 tstl %a0
4af66: 6742 beqs 4afaa <_Scheduler_CBS_Create_server+0xaa><== NEVER TAKEN
return SCHEDULER_CBS_ERROR_NO_MEMORY;
the_server->parameters = *params;
the_server->task_id = -1;
the_server->cbs_budget_overrun = budget_overrun_callback;
return SCHEDULER_CBS_OK;
4af68: 4280 clrl %d0
_Workspace_Allocate( sizeof(Scheduler_CBS_Server) );
the_server = _Scheduler_CBS_Server_list[*server_id];
if ( !the_server )
return SCHEDULER_CBS_ERROR_NO_MEMORY;
the_server->parameters = *params;
4af6a: 2213 movel %a3@,%d1
4af6c: 242b 0004 movel %a3@(4),%d2
the_server->task_id = -1;
the_server->cbs_budget_overrun = budget_overrun_callback;
4af70: 216e 000c 000c movel %fp@(12),%a0@(12)
_Workspace_Allocate( sizeof(Scheduler_CBS_Server) );
the_server = _Scheduler_CBS_Server_list[*server_id];
if ( !the_server )
return SCHEDULER_CBS_ERROR_NO_MEMORY;
the_server->parameters = *params;
4af76: 2141 0004 movel %d1,%a0@(4)
4af7a: 2142 0008 movel %d2,%a0@(8)
the_server->task_id = -1;
4af7e: 72ff moveq #-1,%d1
the_server->cbs_budget_overrun = budget_overrun_callback;
return SCHEDULER_CBS_OK;
}
4af80: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4
the_server = _Scheduler_CBS_Server_list[*server_id];
if ( !the_server )
return SCHEDULER_CBS_ERROR_NO_MEMORY;
the_server->parameters = *params;
the_server->task_id = -1;
4af86: 2081 movel %d1,%a0@
the_server->cbs_budget_overrun = budget_overrun_callback;
return SCHEDULER_CBS_OK;
}
4af88: 4e5e unlk %fp
4af8a: 4e75 rts
if ( !_Scheduler_CBS_Server_list[i] )
break;
}
if ( i == _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_FULL;
4af8c: 70e6 moveq #-26,%d0
the_server->parameters = *params;
the_server->task_id = -1;
the_server->cbs_budget_overrun = budget_overrun_callback;
return SCHEDULER_CBS_OK;
}
4af8e: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4
4af94: 4e5e unlk %fp
4af96: 4e75 rts
params->budget >= SCHEDULER_EDF_PRIO_MSB ||
params->deadline >= SCHEDULER_EDF_PRIO_MSB )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
if ( !_Scheduler_CBS_Server_list[i] )
4af98: 4281 clrl %d1
4af9a: 4280 clrl %d0
4af9c: 60a6 bras 4af44 <_Scheduler_CBS_Create_server+0x44>
if ( params->budget <= 0 ||
params->deadline <= 0 ||
params->budget >= SCHEDULER_EDF_PRIO_MSB ||
params->deadline >= SCHEDULER_EDF_PRIO_MSB )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
4af9e: 70ee moveq #-18,%d0
the_server->parameters = *params;
the_server->task_id = -1;
the_server->cbs_budget_overrun = budget_overrun_callback;
return SCHEDULER_CBS_OK;
}
4afa0: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4
4afa6: 4e5e unlk %fp
4afa8: 4e75 rts
*server_id = i;
_Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)
_Workspace_Allocate( sizeof(Scheduler_CBS_Server) );
the_server = _Scheduler_CBS_Server_list[*server_id];
if ( !the_server )
return SCHEDULER_CBS_ERROR_NO_MEMORY;
4afaa: 70ef moveq #-17,%d0 <== NOT EXECUTED
the_server->parameters = *params;
the_server->task_id = -1;
the_server->cbs_budget_overrun = budget_overrun_callback;
return SCHEDULER_CBS_OK;
}
4afac: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
4afb2: 4e5e unlk %fp <== NOT EXECUTED
...
0004b058 <_Scheduler_CBS_Detach_thread>:
int _Scheduler_CBS_Detach_thread (
Scheduler_CBS_Server_id server_id,
rtems_id task_id
)
{
4b058: 4e56 fff0 linkw %fp,#-16
4b05c: 48d7 040c moveml %d2-%d3/%a2,%sp@
Objects_Locations location;
Thread_Control *the_thread;
Scheduler_CBS_Per_thread *sched_info;
the_thread = _Thread_Get(task_id, &location);
4b060: 486e fffc pea %fp@(-4)
int _Scheduler_CBS_Detach_thread (
Scheduler_CBS_Server_id server_id,
rtems_id task_id
)
{
4b064: 242e 000c movel %fp@(12),%d2
4b068: 262e 0008 movel %fp@(8),%d3
Objects_Locations location;
Thread_Control *the_thread;
Scheduler_CBS_Per_thread *sched_info;
the_thread = _Thread_Get(task_id, &location);
4b06c: 2f02 movel %d2,%sp@-
4b06e: 4eb9 0004 bdd4 jsr 4bdd4 <_Thread_Get>
/* The routine _Thread_Get may disable dispatch and not enable again. */
if ( the_thread ) {
4b074: 508f addql #8,%sp
{
Objects_Locations location;
Thread_Control *the_thread;
Scheduler_CBS_Per_thread *sched_info;
the_thread = _Thread_Get(task_id, &location);
4b076: 2440 moveal %d0,%a2
/* The routine _Thread_Get may disable dispatch and not enable again. */
if ( the_thread ) {
4b078: 4a80 tstl %d0
4b07a: 674a beqs 4b0c6 <_Scheduler_CBS_Detach_thread+0x6e>
_Thread_Enable_dispatch();
4b07c: 4eb9 0004 bdb4 jsr 4bdb4 <_Thread_Enable_dispatch>
}
if ( server_id >= _Scheduler_CBS_Maximum_servers )
4b082: b6b9 0006 18fc cmpl 618fc <_Scheduler_CBS_Maximum_servers>,%d3
4b088: 643c bccs 4b0c6 <_Scheduler_CBS_Detach_thread+0x6e>
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
if ( !the_thread )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
/* Server is not valid. */
if ( !_Scheduler_CBS_Server_list[server_id] )
4b08a: 2079 0006 32d2 moveal 632d2 <_Scheduler_CBS_Server_list>,%a0
4b090: 2070 3c00 moveal %a0@(00000000,%d3:l:4),%a0
4b094: 4a88 tstl %a0
4b096: 673a beqs 4b0d2 <_Scheduler_CBS_Detach_thread+0x7a>
return SCHEDULER_CBS_ERROR_NOSERVER;
/* Thread and server are not attached. */
if ( _Scheduler_CBS_Server_list[server_id]->task_id != task_id )
4b098: b490 cmpl %a0@,%d2
4b09a: 662a bnes 4b0c6 <_Scheduler_CBS_Detach_thread+0x6e><== NEVER TAKEN
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
_Scheduler_CBS_Server_list[server_id]->task_id = -1;
4b09c: 70ff moveq #-1,%d0
4b09e: 2080 movel %d0,%a0@
sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
sched_info->cbs_server = NULL;
4b0a0: 206a 0086 moveal %a2@(134),%a0
the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
the_thread->budget_callout = the_thread->Start.budget_callout;
the_thread->is_preemptible = the_thread->Start.is_preemptible;
return SCHEDULER_CBS_OK;
4b0a4: 4280 clrl %d0
if ( _Scheduler_CBS_Server_list[server_id]->task_id != task_id )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
_Scheduler_CBS_Server_list[server_id]->task_id = -1;
sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
sched_info->cbs_server = NULL;
4b0a6: 42a8 0018 clrl %a0@(24)
the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
4b0aa: 256a 009c 0076 movel %a2@(156),%a2@(118)
the_thread->budget_callout = the_thread->Start.budget_callout;
4b0b0: 256a 00a0 007a movel %a2@(160),%a2@(122)
the_thread->is_preemptible = the_thread->Start.is_preemptible;
4b0b6: 156a 009a 0070 moveb %a2@(154),%a2@(112)
return SCHEDULER_CBS_OK;
}
4b0bc: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2
4b0c2: 4e5e unlk %fp
4b0c4: 4e75 rts
if ( the_thread ) {
_Thread_Enable_dispatch();
}
if ( server_id >= _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
4b0c6: 70ee moveq #-18,%d0
the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
the_thread->budget_callout = the_thread->Start.budget_callout;
the_thread->is_preemptible = the_thread->Start.is_preemptible;
return SCHEDULER_CBS_OK;
}
4b0c8: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2
4b0ce: 4e5e unlk %fp
4b0d0: 4e75 rts
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
if ( !the_thread )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
/* Server is not valid. */
if ( !_Scheduler_CBS_Server_list[server_id] )
return SCHEDULER_CBS_ERROR_NOSERVER;
4b0d2: 70e7 moveq #-25,%d0
the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
the_thread->budget_callout = the_thread->Start.budget_callout;
the_thread->is_preemptible = the_thread->Start.is_preemptible;
return SCHEDULER_CBS_OK;
}
4b0d4: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2
4b0da: 4e5e unlk %fp
...
0004b2b4 <_Scheduler_CBS_Get_server_id>:
int _Scheduler_CBS_Get_server_id (
rtems_id task_id,
Scheduler_CBS_Server_id *server_id
)
{
4b2b4: 4e56 0000 linkw %fp,#0
unsigned int i;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
4b2b8: 2239 0006 18fc movel 618fc <_Scheduler_CBS_Maximum_servers>,%d1
int _Scheduler_CBS_Get_server_id (
rtems_id task_id,
Scheduler_CBS_Server_id *server_id
)
{
4b2be: 2f02 movel %d2,%sp@-
4b2c0: 242e 0008 movel %fp@(8),%d2
unsigned int i;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
4b2c4: 4a81 tstl %d1
4b2c6: 6718 beqs 4b2e0 <_Scheduler_CBS_Get_server_id+0x2c><== NEVER TAKEN
4b2c8: 2279 0006 32d2 moveal 632d2 <_Scheduler_CBS_Server_list>,%a1
4b2ce: 4280 clrl %d0
if ( _Scheduler_CBS_Server_list[i] &&
4b2d0: 2059 moveal %a1@+,%a0
4b2d2: 4a88 tstl %a0
4b2d4: 6704 beqs 4b2da <_Scheduler_CBS_Get_server_id+0x26>
4b2d6: b490 cmpl %a0@,%d2
4b2d8: 670e beqs 4b2e8 <_Scheduler_CBS_Get_server_id+0x34>
rtems_id task_id,
Scheduler_CBS_Server_id *server_id
)
{
unsigned int i;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
4b2da: 5280 addql #1,%d0
4b2dc: b280 cmpl %d0,%d1
4b2de: 66f0 bnes 4b2d0 <_Scheduler_CBS_Get_server_id+0x1c>
*server_id = i;
return SCHEDULER_CBS_OK;
}
}
return SCHEDULER_CBS_ERROR_NOSERVER;
}
4b2e0: 241f movel %sp@+,%d2
_Scheduler_CBS_Server_list[i]->task_id == task_id ) {
*server_id = i;
return SCHEDULER_CBS_OK;
}
}
return SCHEDULER_CBS_ERROR_NOSERVER;
4b2e2: 70e7 moveq #-25,%d0
}
4b2e4: 4e5e unlk %fp
4b2e6: 4e75 rts
{
unsigned int i;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
if ( _Scheduler_CBS_Server_list[i] &&
_Scheduler_CBS_Server_list[i]->task_id == task_id ) {
*server_id = i;
4b2e8: 206e 000c moveal %fp@(12),%a0
return SCHEDULER_CBS_OK;
}
}
return SCHEDULER_CBS_ERROR_NOSERVER;
}
4b2ec: 241f movel %sp@+,%d2
4b2ee: 4e5e unlk %fp
{
unsigned int i;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
if ( _Scheduler_CBS_Server_list[i] &&
_Scheduler_CBS_Server_list[i]->task_id == task_id ) {
*server_id = i;
4b2f0: 2080 movel %d0,%a0@
return SCHEDULER_CBS_OK;
4b2f2: 4280 clrl %d0
}
}
return SCHEDULER_CBS_ERROR_NOSERVER;
}
...
0004b35c <_Scheduler_CBS_Initialize>:
int _Scheduler_CBS_Initialize(void)
{
4b35c: 4e56 0000 linkw %fp,#0
unsigned int i;
_Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
4b360: 2039 0006 18fc movel 618fc <_Scheduler_CBS_Maximum_servers>,%d0
4b366: e588 lsll #2,%d0
4b368: 2f00 movel %d0,%sp@-
4b36a: 4eb9 0004 cd64 jsr 4cd64 <_Workspace_Allocate>
_Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
if ( !_Scheduler_CBS_Server_list )
4b370: 588f addql #4,%sp
}
int _Scheduler_CBS_Initialize(void)
{
unsigned int i;
_Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
4b372: 2040 moveal %d0,%a0
4b374: 23c0 0006 32d2 movel %d0,632d2 <_Scheduler_CBS_Server_list>
_Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
if ( !_Scheduler_CBS_Server_list )
4b37a: 672c beqs 4b3a8 <_Scheduler_CBS_Initialize+0x4c> <== NEVER TAKEN
return SCHEDULER_CBS_ERROR_NO_MEMORY;
for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {
4b37c: 2039 0006 18fc movel 618fc <_Scheduler_CBS_Maximum_servers>,%d0
4b382: 4281 clrl %d1
4b384: 4a80 tstl %d0
4b386: 671a beqs 4b3a2 <_Scheduler_CBS_Initialize+0x46> <== NEVER TAKEN
_Scheduler_CBS_Server_list[i] = NULL;
4b388: 42b0 1c00 clrl %a0@(00000000,%d1:l:4)
unsigned int i;
_Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
_Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
if ( !_Scheduler_CBS_Server_list )
return SCHEDULER_CBS_ERROR_NO_MEMORY;
for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {
4b38c: 5281 addql #1,%d1
4b38e: b081 cmpl %d1,%d0
4b390: 6710 beqs 4b3a2 <_Scheduler_CBS_Initialize+0x46> <== NEVER TAKEN
4b392: 2079 0006 32d2 moveal 632d2 <_Scheduler_CBS_Server_list>,%a0
_Scheduler_CBS_Server_list[i] = NULL;
4b398: 42b0 1c00 clrl %a0@(00000000,%d1:l:4)
unsigned int i;
_Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
_Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
if ( !_Scheduler_CBS_Server_list )
return SCHEDULER_CBS_ERROR_NO_MEMORY;
for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {
4b39c: 5281 addql #1,%d1
4b39e: b081 cmpl %d1,%d0
4b3a0: 66f0 bnes 4b392 <_Scheduler_CBS_Initialize+0x36>
_Scheduler_CBS_Server_list[i] = NULL;
}
return SCHEDULER_CBS_OK;
4b3a2: 4280 clrl %d0
}
4b3a4: 4e5e unlk %fp
4b3a6: 4e75 rts
{
unsigned int i;
_Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
_Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
if ( !_Scheduler_CBS_Server_list )
return SCHEDULER_CBS_ERROR_NO_MEMORY;
4b3a8: 70ef moveq #-17,%d0 <== NOT EXECUTED
for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {
_Scheduler_CBS_Server_list[i] = NULL;
}
return SCHEDULER_CBS_OK;
}
4b3aa: 4e5e unlk %fp <== NOT EXECUTED
...
00049bf4 <_Scheduler_CBS_Release_job>:
void _Scheduler_CBS_Release_job(
Thread_Control *the_thread,
uint32_t deadline
)
{
49bf4: 4e56 0000 linkw %fp,#0
49bf8: 206e 0008 moveal %fp@(8),%a0
Priority_Control new_priority;
Scheduler_CBS_Per_thread *sched_info =
(Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
Scheduler_CBS_Server *serv_info =
(Scheduler_CBS_Server *) sched_info->cbs_server;
49bfc: 2268 0086 moveal %a0@(134),%a1
)
{
Priority_Control new_priority;
Scheduler_CBS_Per_thread *sched_info =
(Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
Scheduler_CBS_Server *serv_info =
49c00: 2269 0018 moveal %a1@(24),%a1
(Scheduler_CBS_Server *) sched_info->cbs_server;
if (deadline) {
49c04: 4aae 000c tstl %fp@(12)
49c08: 6732 beqs 49c3c <_Scheduler_CBS_Release_job+0x48>
/* Initializing or shifting deadline. */
if (serv_info)
new_priority = (_Watchdog_Ticks_since_boot + serv_info->parameters.deadline)
49c0a: 2039 0006 13a2 movel 613a2 <_Watchdog_Ticks_since_boot>,%d0
Scheduler_CBS_Server *serv_info =
(Scheduler_CBS_Server *) sched_info->cbs_server;
if (deadline) {
/* Initializing or shifting deadline. */
if (serv_info)
49c10: 4a89 tstl %a1
49c12: 6738 beqs 49c4c <_Scheduler_CBS_Release_job+0x58><== NEVER TAKEN
new_priority = (_Watchdog_Ticks_since_boot + serv_info->parameters.deadline)
49c14: d0a9 0004 addl %a1@(4),%d0
49c18: 0880 001f bclr #31,%d0
new_priority = the_thread->Start.initial_priority;
}
/* Budget replenishment for the next job. */
if (serv_info)
the_thread->cpu_time_budget = serv_info->parameters.budget;
49c1c: 2169 0008 0072 movel %a1@(8),%a0@(114)
the_thread->real_priority = new_priority;
_Thread_Change_priority(the_thread, new_priority, true);
49c22: 4878 0001 pea 1 <ADD>
49c26: 2f00 movel %d0,%sp@-
/* Budget replenishment for the next job. */
if (serv_info)
the_thread->cpu_time_budget = serv_info->parameters.budget;
the_thread->real_priority = new_priority;
49c28: 2140 0018 movel %d0,%a0@(24)
_Thread_Change_priority(the_thread, new_priority, true);
49c2c: 2f08 movel %a0,%sp@-
49c2e: 4eb9 0004 a0c0 jsr 4a0c0 <_Thread_Change_priority>
49c34: 4fef 000c lea %sp@(12),%sp
}
49c38: 4e5e unlk %fp
49c3a: 4e75 rts
new_priority = (_Watchdog_Ticks_since_boot + deadline)
& ~SCHEDULER_EDF_PRIO_MSB;
}
else {
/* Switch back to background priority. */
new_priority = the_thread->Start.initial_priority;
49c3c: 2028 00a8 movel %a0@(168),%d0
}
/* Budget replenishment for the next job. */
if (serv_info)
49c40: 4a89 tstl %a1
49c42: 67de beqs 49c22 <_Scheduler_CBS_Release_job+0x2e><== NEVER TAKEN
the_thread->cpu_time_budget = serv_info->parameters.budget;
49c44: 2169 0008 0072 movel %a1@(8),%a0@(114)
49c4a: 60d6 bras 49c22 <_Scheduler_CBS_Release_job+0x2e>
/* Initializing or shifting deadline. */
if (serv_info)
new_priority = (_Watchdog_Ticks_since_boot + serv_info->parameters.deadline)
& ~SCHEDULER_EDF_PRIO_MSB;
else
new_priority = (_Watchdog_Ticks_since_boot + deadline)
49c4c: d0ae 000c addl %fp@(12),%d0
/* Budget replenishment for the next job. */
if (serv_info)
the_thread->cpu_time_budget = serv_info->parameters.budget;
the_thread->real_priority = new_priority;
_Thread_Change_priority(the_thread, new_priority, true);
49c50: 4878 0001 pea 1 <ADD>
/* Initializing or shifting deadline. */
if (serv_info)
new_priority = (_Watchdog_Ticks_since_boot + serv_info->parameters.deadline)
& ~SCHEDULER_EDF_PRIO_MSB;
else
new_priority = (_Watchdog_Ticks_since_boot + deadline)
49c54: 0880 001f bclr #31,%d0
/* Budget replenishment for the next job. */
if (serv_info)
the_thread->cpu_time_budget = serv_info->parameters.budget;
the_thread->real_priority = new_priority;
_Thread_Change_priority(the_thread, new_priority, true);
49c58: 2f00 movel %d0,%sp@-
/* Budget replenishment for the next job. */
if (serv_info)
the_thread->cpu_time_budget = serv_info->parameters.budget;
the_thread->real_priority = new_priority;
49c5a: 2140 0018 movel %d0,%a0@(24)
_Thread_Change_priority(the_thread, new_priority, true);
49c5e: 2f08 movel %a0,%sp@-
49c60: 4eb9 0004 a0c0 jsr 4a0c0 <_Thread_Change_priority>
49c66: 4fef 000c lea %sp@(12),%sp
}
49c6a: 4e5e unlk %fp
...
00049c70 <_Scheduler_CBS_Unblock>:
#include <rtems/score/schedulercbs.h>
void _Scheduler_CBS_Unblock(
Thread_Control *the_thread
)
{
49c70: 4e56 0000 linkw %fp,#0
49c74: 2f0a movel %a2,%sp@-
49c76: 246e 0008 moveal %fp@(8),%a2
49c7a: 2f02 movel %d2,%sp@-
Scheduler_CBS_Per_thread *sched_info;
Scheduler_CBS_Server *serv_info;
Priority_Control new_priority;
_Scheduler_EDF_Enqueue(the_thread);
49c7c: 2f0a movel %a2,%sp@-
49c7e: 4eb9 0004 9d94 jsr 49d94 <_Scheduler_EDF_Enqueue>
/* TODO: flash critical section? */
sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
serv_info = (Scheduler_CBS_Server *) sched_info->cbs_server;
49c84: 206a 0086 moveal %a2@(134),%a0
* Late unblock rule for deadline-driven tasks. The remaining time to
* deadline must be sufficient to serve the remaining computation time
* without increased utilization of this task. It might cause a deadline
* miss of another task.
*/
if (serv_info) {
49c88: 588f addql #4,%sp
_Scheduler_EDF_Enqueue(the_thread);
/* TODO: flash critical section? */
sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
serv_info = (Scheduler_CBS_Server *) sched_info->cbs_server;
49c8a: 2068 0018 moveal %a0@(24),%a0
* Late unblock rule for deadline-driven tasks. The remaining time to
* deadline must be sufficient to serve the remaining computation time
* without increased utilization of this task. It might cause a deadline
* miss of another task.
*/
if (serv_info) {
49c8e: 4a88 tstl %a0
49c90: 6700 0094 beqw 49d26 <_Scheduler_CBS_Unblock+0xb6>
time_t deadline = serv_info->parameters.deadline;
time_t budget = serv_info->parameters.budget;
time_t deadline_left = the_thread->cpu_time_budget;
time_t budget_left = the_thread->real_priority -
49c94: 222a 0018 movel %a2@(24),%d1
49c98: 2401 movel %d1,%d2
_Watchdog_Ticks_since_boot;
if ( deadline*budget_left > budget*deadline_left ) {
49c9a: 43e8 0004 lea %a0@(4),%a1
*/
if (serv_info) {
time_t deadline = serv_info->parameters.deadline;
time_t budget = serv_info->parameters.budget;
time_t deadline_left = the_thread->cpu_time_budget;
time_t budget_left = the_thread->real_priority -
49c9e: 2039 0006 13a2 movel 613a2 <_Watchdog_Ticks_since_boot>,%d0
49ca4: 9480 subl %d0,%d2
49ca6: 2002 movel %d2,%d0
_Watchdog_Ticks_since_boot;
if ( deadline*budget_left > budget*deadline_left ) {
49ca8: 4c11 0800 mulsl %a1@,%d0
49cac: 43ea 0072 lea %a2@(114),%a1
49cb0: 2428 0008 movel %a0@(8),%d2
49cb4: 4c11 2800 mulsl %a1@,%d2
49cb8: b480 cmpl %d0,%d2
49cba: 6c6a bges 49d26 <_Scheduler_CBS_Unblock+0xb6>
/* Put late unblocked task to background until the end of period. */
new_priority = the_thread->Start.initial_priority;
49cbc: 206a 00a8 moveal %a2@(168),%a0
if ( the_thread->real_priority != new_priority )
49cc0: b1c1 cmpal %d1,%a0
49cc2: 6704 beqs 49cc8 <_Scheduler_CBS_Unblock+0x58>
the_thread->real_priority = new_priority;
49cc4: 2548 0018 movel %a0,%a2@(24)
if ( the_thread->current_priority != new_priority )
49cc8: 202a 0014 movel %a2@(20),%d0
49ccc: b1c0 cmpal %d0,%a0
49cce: 6716 beqs 49ce6 <_Scheduler_CBS_Unblock+0x76>
_Thread_Change_priority(the_thread, new_priority, true);
49cd0: 4878 0001 pea 1 <ADD>
49cd4: 2f08 movel %a0,%sp@-
49cd6: 2f0a movel %a2,%sp@-
49cd8: 4eb9 0004 a0c0 jsr 4a0c0 <_Thread_Change_priority>
49cde: 202a 0014 movel %a2@(20),%d0
49ce2: 4fef 000c lea %sp@(12),%sp
* a context switch.
* Pseudo-ISR case:
* Even if the thread isn't preemptible, if the new heir is
* a pseudo-ISR system task, we need to do a context switch.
*/
if ( _Scheduler_Is_priority_higher_than( the_thread->current_priority,
49ce6: 2079 0006 143a moveal 6143a <_Per_CPU_Information+0x12>,%a0
49cec: 2f28 0014 movel %a0@(20),%sp@-
49cf0: 2079 0005 faa0 moveal 5faa0 <_Scheduler+0x30>,%a0
49cf6: 2f00 movel %d0,%sp@-
49cf8: 4e90 jsr %a0@
49cfa: 508f addql #8,%sp
49cfc: 4a80 tstl %d0
49cfe: 6f1a bles 49d1a <_Scheduler_CBS_Unblock+0xaa>
_Thread_Heir->current_priority)) {
_Thread_Heir = the_thread;
if ( _Thread_Executing->is_preemptible ||
49d00: 2079 0006 1436 moveal 61436 <_Per_CPU_Information+0xe>,%a0
* Even if the thread isn't preemptible, if the new heir is
* a pseudo-ISR system task, we need to do a context switch.
*/
if ( _Scheduler_Is_priority_higher_than( the_thread->current_priority,
_Thread_Heir->current_priority)) {
_Thread_Heir = the_thread;
49d06: 23ca 0006 143a movel %a2,6143a <_Per_CPU_Information+0x12>
if ( _Thread_Executing->is_preemptible ||
49d0c: 4a28 0070 tstb %a0@(112)
49d10: 671a beqs 49d2c <_Scheduler_CBS_Unblock+0xbc>
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
49d12: 7001 moveq #1,%d0
49d14: 13c0 0006 1434 moveb %d0,61434 <_Per_CPU_Information+0xc>
}
}
49d1a: 242e fff8 movel %fp@(-8),%d2
49d1e: 246e fffc moveal %fp@(-4),%a2
49d22: 4e5e unlk %fp
49d24: 4e75 rts
49d26: 202a 0014 movel %a2@(20),%d0
49d2a: 60ba bras 49ce6 <_Scheduler_CBS_Unblock+0x76>
* a pseudo-ISR system task, we need to do a context switch.
*/
if ( _Scheduler_Is_priority_higher_than( the_thread->current_priority,
_Thread_Heir->current_priority)) {
_Thread_Heir = the_thread;
if ( _Thread_Executing->is_preemptible ||
49d2c: 4aaa 0014 tstl %a2@(20)
49d30: 66e8 bnes 49d1a <_Scheduler_CBS_Unblock+0xaa> <== ALWAYS TAKEN
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
49d32: 7001 moveq #1,%d0 <== NOT EXECUTED
49d34: 13c0 0006 1434 moveb %d0,61434 <_Per_CPU_Information+0xc> <== NOT EXECUTED
49d3a: 60de bras 49d1a <_Scheduler_CBS_Unblock+0xaa> <== NOT EXECUTED
00049bc0 <_Scheduler_EDF_Allocate>:
#include <rtems/score/wkspace.h>
void *_Scheduler_EDF_Allocate(
Thread_Control *the_thread
)
{
49bc0: 4e56 0000 linkw %fp,#0
49bc4: 2f0a movel %a2,%sp@-
void *sched;
Scheduler_EDF_Per_thread *schinfo;
sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );
49bc6: 4878 0018 pea 18 <OPER2+0x4>
#include <rtems/score/wkspace.h>
void *_Scheduler_EDF_Allocate(
Thread_Control *the_thread
)
{
49bca: 246e 0008 moveal %fp@(8),%a2
void *sched;
Scheduler_EDF_Per_thread *schinfo;
sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );
49bce: 4eb9 0004 b55c jsr 4b55c <_Workspace_Allocate>
if ( sched ) {
49bd4: 588f addql #4,%sp
49bd6: 4a80 tstl %d0
49bd8: 670e beqs 49be8 <_Scheduler_EDF_Allocate+0x28> <== NEVER TAKEN
the_thread->scheduler_info = sched;
49bda: 2540 0086 movel %d0,%a2@(134)
schinfo = (Scheduler_EDF_Per_thread *)(the_thread->scheduler_info);
schinfo->thread = the_thread;
49bde: 2040 moveal %d0,%a0
schinfo->queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;
49be0: 7202 moveq #2,%d1
sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );
if ( sched ) {
the_thread->scheduler_info = sched;
schinfo = (Scheduler_EDF_Per_thread *)(the_thread->scheduler_info);
schinfo->thread = the_thread;
49be2: 208a movel %a2,%a0@
schinfo->queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;
49be4: 2141 0014 movel %d1,%a0@(20)
}
return sched;
}
49be8: 246e fffc moveal %fp@(-4),%a2
49bec: 4e5e unlk %fp <== NOT EXECUTED
00049d3c <_Scheduler_EDF_Block>:
#include <rtems/score/thread.h>
void _Scheduler_EDF_Block(
Thread_Control *the_thread
)
{
49d3c: 4e56 0000 linkw %fp,#0
49d40: 2f02 movel %d2,%sp@-
49d42: 242e 0008 movel %fp@(8),%d2
_Scheduler_EDF_Extract( the_thread );
49d46: 2f02 movel %d2,%sp@-
49d48: 4eb9 0004 9dc4 jsr 49dc4 <_Scheduler_EDF_Extract>
/* TODO: flash critical section? */
if ( _Thread_Is_heir( the_thread ) )
49d4e: 588f addql #4,%sp
49d50: b4b9 0006 143a cmpl 6143a <_Per_CPU_Information+0x12>,%d2
49d56: 6720 beqs 49d78 <_Scheduler_EDF_Block+0x3c>
_Scheduler_EDF_Schedule();
if ( _Thread_Is_executing( the_thread ) )
49d58: b4b9 0006 1436 cmpl 61436 <_Per_CPU_Information+0xe>,%d2
49d5e: 6708 beqs 49d68 <_Scheduler_EDF_Block+0x2c> <== NEVER TAKEN
_Thread_Dispatch_necessary = true;
}
49d60: 242e fffc movel %fp@(-4),%d2
49d64: 4e5e unlk %fp
49d66: 4e75 rts
49d68: 242e fffc movel %fp@(-4),%d2
49d6c: 4e5e unlk %fp
if ( _Thread_Is_heir( the_thread ) )
_Scheduler_EDF_Schedule();
if ( _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
49d6e: 7001 moveq #1,%d0
49d70: 13c0 0006 1434 moveb %d0,61434 <_Per_CPU_Information+0xc>
}
49d76: 4e75 rts
_Scheduler_EDF_Extract( the_thread );
/* TODO: flash critical section? */
if ( _Thread_Is_heir( the_thread ) )
_Scheduler_EDF_Schedule();
49d78: 4eb9 0004 9ea4 jsr 49ea4 <_Scheduler_EDF_Schedule>
if ( _Thread_Is_executing( the_thread ) )
49d7e: b4b9 0006 1436 cmpl 61436 <_Per_CPU_Information+0xe>,%d2
49d84: 66da bnes 49d60 <_Scheduler_EDF_Block+0x24> <== NEVER TAKEN
49d86: 60e0 bras 49d68 <_Scheduler_EDF_Block+0x2c>
00049df0 <_Scheduler_EDF_Free>:
#include <rtems/score/wkspace.h>
void _Scheduler_EDF_Free(
Thread_Control *the_thread
)
{
49df0: 4e56 0000 linkw %fp,#0
49df4: 206e 0008 moveal %fp@(8),%a0
_Workspace_Free( the_thread->scheduler_info );
49df8: 2d68 0086 0008 movel %a0@(134),%fp@(8)
}
49dfe: 4e5e unlk %fp
void _Scheduler_EDF_Free(
Thread_Control *the_thread
)
{
_Workspace_Free( the_thread->scheduler_info );
49e00: 4ef9 0004 b604 jmp 4b604 <_Workspace_Free>
...
00049dc4 <_Scheduler_EDF_Unblock>:
#include <rtems/score/scheduleredf.h>
void _Scheduler_EDF_Unblock(
Thread_Control *the_thread
)
{
49dc4: 4e56 0000 linkw %fp,#0
49dc8: 2f0a movel %a2,%sp@-
49dca: 246e 0008 moveal %fp@(8),%a2
_Scheduler_EDF_Enqueue(the_thread);
49dce: 2f0a movel %a2,%sp@-
49dd0: 4eb9 0004 9c48 jsr 49c48 <_Scheduler_EDF_Enqueue>
49dd6: 2f2a 0014 movel %a2@(20),%sp@-
* a context switch.
* Pseudo-ISR case:
* Even if the thread isn't preemptible, if the new heir is
* a pseudo-ISR system task, we need to do a context switch.
*/
if ( _Scheduler_Is_priority_lower_than(
49dda: 2079 0006 13ba moveal 613ba <_Per_CPU_Information+0x12>,%a0
49de0: 2f28 0014 movel %a0@(20),%sp@-
49de4: 2079 0005 fa20 moveal 5fa20 <_Scheduler+0x30>,%a0
49dea: 4e90 jsr %a0@
49dec: 4fef 000c lea %sp@(12),%sp
49df0: 4a80 tstl %d0
49df2: 6d08 blts 49dfc <_Scheduler_EDF_Unblock+0x38>
_Thread_Heir = the_thread;
if ( _Thread_Executing->is_preemptible ||
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
}
}
49df4: 246e fffc moveal %fp@(-4),%a2
49df8: 4e5e unlk %fp
49dfa: 4e75 rts
*/
if ( _Scheduler_Is_priority_lower_than(
_Thread_Heir->current_priority,
the_thread->current_priority )) {
_Thread_Heir = the_thread;
if ( _Thread_Executing->is_preemptible ||
49dfc: 2079 0006 13b6 moveal 613b6 <_Per_CPU_Information+0xe>,%a0
* a pseudo-ISR system task, we need to do a context switch.
*/
if ( _Scheduler_Is_priority_lower_than(
_Thread_Heir->current_priority,
the_thread->current_priority )) {
_Thread_Heir = the_thread;
49e02: 23ca 0006 13ba movel %a2,613ba <_Per_CPU_Information+0x12>
if ( _Thread_Executing->is_preemptible ||
49e08: 4a28 0070 tstb %a0@(112)
49e0c: 6710 beqs 49e1e <_Scheduler_EDF_Unblock+0x5a>
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
49e0e: 7001 moveq #1,%d0
49e10: 13c0 0006 13b4 moveb %d0,613b4 <_Per_CPU_Information+0xc>
}
}
49e16: 246e fffc moveal %fp@(-4),%a2
49e1a: 4e5e unlk %fp
49e1c: 4e75 rts
*/
if ( _Scheduler_Is_priority_lower_than(
_Thread_Heir->current_priority,
the_thread->current_priority )) {
_Thread_Heir = the_thread;
if ( _Thread_Executing->is_preemptible ||
49e1e: 4aaa 0014 tstl %a2@(20)
49e22: 66d0 bnes 49df4 <_Scheduler_EDF_Unblock+0x30> <== ALWAYS TAKEN
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
49e24: 7001 moveq #1,%d0 <== NOT EXECUTED
49e26: 13c0 0006 13b4 moveb %d0,613b4 <_Per_CPU_Information+0xc> <== NOT EXECUTED
49e2c: 60e8 bras 49e16 <_Scheduler_EDF_Unblock+0x52> <== NOT EXECUTED
...
00049204 <_Scheduler_Handler_initialization>:
#include <rtems/system.h>
#include <rtems/config.h>
#include <rtems/score/scheduler.h>
void _Scheduler_Handler_initialization(void)
{
49204: 4e56 0000 linkw %fp,#0
(*_Scheduler.Operations.initialize)();
}
49208: 4e5e unlk %fp
#include <rtems/config.h>
#include <rtems/score/scheduler.h>
void _Scheduler_Handler_initialization(void)
{
(*_Scheduler.Operations.initialize)();
4920a: 2279 0005 e224 moveal 5e224 <_Scheduler+0x4>,%a1
49210: 4ed1 jmp %a1@
...
00049230 <_Scheduler_priority_Block>:
#include <rtems/score/thread.h>
void _Scheduler_priority_Block(
Thread_Control *the_thread
)
{
49230: 4e56 0000 linkw %fp,#0
49234: 206e 0008 moveal %fp@(8),%a0
49238: 2f0b movel %a3,%sp@-
4923a: 2f0a movel %a2,%sp@-
)
{
Scheduler_priority_Per_thread *sched_info;
Chain_Control *ready;
sched_info = (Scheduler_priority_Per_thread *) the_thread->scheduler_info;
4923c: 2468 0086 moveal %a0@(134),%a2
ready = sched_info->ready_chain;
49240: 2252 moveal %a2@,%a1
if ( _Chain_Has_only_one_node( ready ) ) {
49242: 2029 0008 movel %a1@(8),%d0
49246: b091 cmpl %a1@,%d0
49248: 6700 0088 beqw 492d2 <_Scheduler_priority_Block+0xa2>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4924c: 2450 moveal %a0@,%a2
previous = the_node->previous;
4924e: 2268 0004 moveal %a0@(4),%a1
next->previous = previous;
49252: 2549 0004 movel %a1,%a2@(4)
previous->next = next;
49256: 228a movel %a2,%a1@
_Scheduler_priority_Ready_queue_extract( the_thread );
/* TODO: flash critical section? */
if ( _Thread_Is_heir( the_thread ) )
49258: b1f9 0005 fb82 cmpal 5fb82 <_Per_CPU_Information+0x12>,%a0
4925e: 6720 beqs 49280 <_Scheduler_priority_Block+0x50>
_Scheduler_priority_Schedule_body();
if ( _Thread_Is_executing( the_thread ) )
49260: b1f9 0005 fb7e cmpal 5fb7e <_Per_CPU_Information+0xe>,%a0
49266: 6708 beqs 49270 <_Scheduler_priority_Block+0x40>
_Thread_Dispatch_necessary = true;
}
49268: 245f moveal %sp@+,%a2
4926a: 265f moveal %sp@+,%a3
4926c: 4e5e unlk %fp
4926e: 4e75 rts
49270: 245f moveal %sp@+,%a2
if ( _Thread_Is_heir( the_thread ) )
_Scheduler_priority_Schedule_body();
if ( _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
49272: 7001 moveq #1,%d0
}
49274: 265f moveal %sp@+,%a3
49276: 4e5e unlk %fp
if ( _Thread_Is_heir( the_thread ) )
_Scheduler_priority_Schedule_body();
if ( _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
49278: 13c0 0005 fb7c moveb %d0,5fb7c <_Per_CPU_Information+0xc>
}
4927e: 4e75 rts
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{
Priority_bit_map_Control minor;
Priority_bit_map_Control major;
_Bitfield_Find_first_bit( _Priority_Major_bit_map, major );
49280: 3039 0005 fb94 movew 5fb94 <_Priority_Major_bit_map>,%d0
49286: 4840 swap %d0
49288: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
4928a: 43f9 0005 fb98 lea 5fb98 <_Priority_Bit_map>,%a1
49290: 0280 0000 ffff andil #65535,%d0
49296: 3231 0a00 movew %a1@(00000000,%d0:l:2),%d1
4929a: 4841 swap %d1
4929c: 04c1 ff1 %d1
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4929e: 2279 0005 e220 moveal 5e220 <_Scheduler>,%a1
return (_Priority_Bits_index( major ) << 4) +
492a4: 0281 0000 ffff andil #65535,%d1
492aa: e988 lsll #4,%d0
492ac: d081 addl %d1,%d0
Chain_Control *the_ready_queue
)
{
Priority_Control index = _Priority_bit_map_Get_highest();
if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )
492ae: 2200 movel %d0,%d1
492b0: e988 lsll #4,%d0
492b2: e589 lsll #2,%d1
492b4: 9081 subl %d1,%d0
492b6: d3c0 addal %d0,%a1
492b8: 2019 movel %a1@+,%d0
return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
return NULL;
492ba: b3c0 cmpal %d0,%a1
492bc: 56c1 sne %d1
492be: 49c1 extbl %d1
*
* @param[in] the_thread - pointer to thread
*/
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
492c0: c081 andl %d1,%d0
492c2: 23c0 0005 fb82 movel %d0,5fb82 <_Per_CPU_Information+0x12>
/* TODO: flash critical section? */
if ( _Thread_Is_heir( the_thread ) )
_Scheduler_priority_Schedule_body();
if ( _Thread_Is_executing( the_thread ) )
492c8: b1f9 0005 fb7e cmpal 5fb7e <_Per_CPU_Information+0xe>,%a0
492ce: 6698 bnes 49268 <_Scheduler_priority_Block+0x38>
492d0: 609e bras 49270 <_Scheduler_priority_Block+0x40>
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor &= the_priority_map->block_minor;
492d2: 266a 0004 moveal %a2@(4),%a3
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
492d6: 2209 movel %a1,%d1
492d8: 5881 addql #4,%d1
492da: 2281 movel %d1,%a1@
492dc: 3013 movew %a3@,%d0
492de: 322a 000e movew %a2@(14),%d1
head->next = tail;
head->previous = NULL;
492e2: 42a9 0004 clrl %a1@(4)
492e6: c081 andl %d1,%d0
tail->previous = head;
492e8: 2349 0008 movel %a1,%a1@(8)
492ec: 3680 movew %d0,%a3@
if ( *the_priority_map->minor == 0 )
492ee: 6600 ff68 bnew 49258 <_Scheduler_priority_Block+0x28>
_Priority_Major_bit_map &= the_priority_map->block_major;
492f2: 3239 0005 fb94 movew 5fb94 <_Priority_Major_bit_map>,%d1
492f8: 302a 000c movew %a2@(12),%d0
492fc: c081 andl %d1,%d0
492fe: 33c0 0005 fb94 movew %d0,5fb94 <_Priority_Major_bit_map>
{
_Scheduler_priority_Ready_queue_extract( the_thread );
/* TODO: flash critical section? */
if ( _Thread_Is_heir( the_thread ) )
49304: b1f9 0005 fb82 cmpal 5fb82 <_Per_CPU_Information+0x12>,%a0
4930a: 6600 ff54 bnew 49260 <_Scheduler_priority_Block+0x30>
4930e: 6000 ff70 braw 49280 <_Scheduler_priority_Block+0x50>
...
00049408 <_Scheduler_priority_Free>:
#include <rtems/score/wkspace.h>
void _Scheduler_priority_Free (
Thread_Control *the_thread
)
{
49408: 4e56 0000 linkw %fp,#0
4940c: 206e 0008 moveal %fp@(8),%a0
_Workspace_Free( the_thread->scheduler_info );
49410: 2d68 0086 0008 movel %a0@(134),%fp@(8)
}
49416: 4e5e unlk %fp
void _Scheduler_priority_Free (
Thread_Control *the_thread
)
{
_Workspace_Free( the_thread->scheduler_info );
49418: 4ef9 0004 ac10 jmp 4ac10 <_Workspace_Free>
...
00049c1c <_Scheduler_simple_Block>:
#include <rtems/score/schedulersimple.h>
void _Scheduler_simple_Block(
Thread_Control *the_thread
)
{
49c1c: 4e56 0000 linkw %fp,#0
49c20: 2f02 movel %d2,%sp@-
49c22: 242e 0008 movel %fp@(8),%d2
_Scheduler_simple_Extract(the_thread);
49c26: 2f02 movel %d2,%sp@-
49c28: 4eb9 0004 9c80 jsr 49c80 <_Scheduler_simple_Extract>
if ( _Thread_Is_heir( the_thread ) )
49c2e: 588f addql #4,%sp
49c30: b4b9 0006 0aca cmpl 60aca <_Per_CPU_Information+0x12>,%d2
49c36: 6720 beqs 49c58 <_Scheduler_simple_Block+0x3c>
_Scheduler_simple_Schedule();
if ( _Thread_Is_executing( the_thread ) )
49c38: b4b9 0006 0ac6 cmpl 60ac6 <_Per_CPU_Information+0xe>,%d2
49c3e: 6708 beqs 49c48 <_Scheduler_simple_Block+0x2c> <== NEVER TAKEN
_Thread_Dispatch_necessary = true;
}
49c40: 242e fffc movel %fp@(-4),%d2
49c44: 4e5e unlk %fp
49c46: 4e75 rts
49c48: 242e fffc movel %fp@(-4),%d2
49c4c: 4e5e unlk %fp
if ( _Thread_Is_heir( the_thread ) )
_Scheduler_simple_Schedule();
if ( _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
49c4e: 7001 moveq #1,%d0
49c50: 13c0 0006 0ac4 moveb %d0,60ac4 <_Per_CPU_Information+0xc>
}
49c56: 4e75 rts
)
{
_Scheduler_simple_Extract(the_thread);
if ( _Thread_Is_heir( the_thread ) )
_Scheduler_simple_Schedule();
49c58: 4eb9 0004 9d7c jsr 49d7c <_Scheduler_simple_Schedule>
if ( _Thread_Is_executing( the_thread ) )
49c5e: b4b9 0006 0ac6 cmpl 60ac6 <_Per_CPU_Information+0xe>,%d2
49c64: 66da bnes 49c40 <_Scheduler_simple_Block+0x24> <== NEVER TAKEN
49c66: 60e0 bras 49c48 <_Scheduler_simple_Block+0x2c>
00049bfc <_TOD_Set_with_timestamp>:
#include <rtems/score/watchdog.h>
void _TOD_Set_with_timestamp(
const Timestamp_Control *tod
)
{
49bfc: 4e56 ffec linkw %fp,#-20
49c00: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
49c04: 246e 0008 moveal %fp@(8),%a2
static inline uint32_t _Timestamp64_implementation_Get_seconds(
const Timestamp64_Control *_time
)
{
return (uint32_t) (*_time / 1000000000L);
49c08: 47f9 0005 c83c lea 5c83c <__divdi3>,%a3
_TOD.seconds_trigger = nanoseconds;
_TOD.is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
49c0e: 2412 movel %a2@,%d2
49c10: 262a 0004 movel %a2@(4),%d3
static inline uint32_t _Timestamp64_implementation_Get_nanoseconds(
const Timestamp64_Control *_time
)
{
return (uint32_t) (*_time % 1000000000L);
49c14: 2f3c 3b9a ca00 movel #1000000000,%sp@-
49c1a: 42a7 clrl %sp@-
49c1c: 2f03 movel %d3,%sp@-
49c1e: 2f02 movel %d2,%sp@-
49c20: 4eb9 0005 cc9c jsr 5cc9c <__moddi3>
49c26: 4fef 0010 lea %sp@(16),%sp
49c2a: 2801 movel %d1,%d4
static inline uint32_t _Timestamp64_implementation_Get_seconds(
const Timestamp64_Control *_time
)
{
return (uint32_t) (*_time / 1000000000L);
49c2c: 2f3c 3b9a ca00 movel #1000000000,%sp@-
49c32: 42a7 clrl %sp@-
49c34: 2f03 movel %d3,%sp@-
49c36: 2f02 movel %d2,%sp@-
49c38: 4e93 jsr %a3@
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
49c3a: 2039 0006 24a6 movel 624a6 <_Thread_Dispatch_disable_level>,%d0
++level;
49c40: 5280 addql #1,%d0
49c42: 4fef 0010 lea %sp@(16),%sp
49c46: 2401 movel %d1,%d2
_Thread_Dispatch_disable_level = level;
49c48: 23c0 0006 24a6 movel %d0,624a6 <_Thread_Dispatch_disable_level>
49c4e: 2f3c 3b9a ca00 movel #1000000000,%sp@-
49c54: 42a7 clrl %sp@-
49c56: 2f39 0006 244c movel 6244c <_TOD+0x4>,%sp@-
49c5c: 2f39 0006 2448 movel 62448 <_TOD>,%sp@-
49c62: 4e93 jsr %a3@
49c64: 4fef 0010 lea %sp@(16),%sp
_Thread_Disable_dispatch();
_TOD_Deactivate();
seconds_now = _TOD_Seconds_since_epoch();
if ( seconds_next < seconds_now )
49c68: b282 cmpl %d2,%d1
49c6a: 6244 bhis 49cb0 <_TOD_Set_with_timestamp+0xb4>
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
_Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units );
49c6c: 9481 subl %d1,%d2
49c6e: 2f02 movel %d2,%sp@-
49c70: 42a7 clrl %sp@-
49c72: 4879 0006 2536 pea 62536 <_Watchdog_Seconds_chain>
49c78: 4eb9 0004 c28c jsr 4c28c <_Watchdog_Adjust>
49c7e: 4fef 000c lea %sp@(12),%sp
_Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds_now - seconds_next );
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now );
_TOD.now = *tod;
49c82: 2012 movel %a2@,%d0
49c84: 222a 0004 movel %a2@(4),%d1
_TOD.seconds_trigger = nanoseconds;
49c88: 23c4 0006 2458 movel %d4,62458 <_TOD+0x10>
if ( seconds_next < seconds_now )
_Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds_now - seconds_next );
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now );
_TOD.now = *tod;
49c8e: 23c0 0006 2448 movel %d0,62448 <_TOD>
49c94: 23c1 0006 244c movel %d1,6244c <_TOD+0x4>
_TOD.seconds_trigger = nanoseconds;
_TOD.is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
49c9a: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now );
_TOD.now = *tod;
_TOD.seconds_trigger = nanoseconds;
_TOD.is_set = true;
49ca0: 7201 moveq #1,%d1
_TOD_Activate();
_Thread_Enable_dispatch();
}
49ca2: 4e5e unlk %fp
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now );
_TOD.now = *tod;
_TOD.seconds_trigger = nanoseconds;
_TOD.is_set = true;
49ca4: 13c1 0006 245c moveb %d1,6245c <_TOD+0x14>
_TOD_Activate();
_Thread_Enable_dispatch();
49caa: 4ef9 0004 b54c jmp 4b54c <_Thread_Enable_dispatch>
49cb0: 9282 subl %d2,%d1
49cb2: 2f01 movel %d1,%sp@-
49cb4: 4878 0001 pea 1 <ADD>
49cb8: 4879 0006 2536 pea 62536 <_Watchdog_Seconds_chain>
49cbe: 4eb9 0004 c28c jsr 4c28c <_Watchdog_Adjust>
49cc4: 4fef 000c lea %sp@(12),%sp
if ( seconds_next < seconds_now )
_Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds_now - seconds_next );
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now );
_TOD.now = *tod;
49cc8: 2012 movel %a2@,%d0
49cca: 222a 0004 movel %a2@(4),%d1
_TOD.seconds_trigger = nanoseconds;
49cce: 23c4 0006 2458 movel %d4,62458 <_TOD+0x10>
if ( seconds_next < seconds_now )
_Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds_now - seconds_next );
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now );
_TOD.now = *tod;
49cd4: 23c0 0006 2448 movel %d0,62448 <_TOD>
49cda: 23c1 0006 244c movel %d1,6244c <_TOD+0x4>
_TOD.seconds_trigger = nanoseconds;
_TOD.is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
49ce0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now );
_TOD.now = *tod;
_TOD.seconds_trigger = nanoseconds;
_TOD.is_set = true;
49ce6: 7201 moveq #1,%d1
_TOD_Activate();
_Thread_Enable_dispatch();
}
49ce8: 4e5e unlk %fp
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now );
_TOD.now = *tod;
_TOD.seconds_trigger = nanoseconds;
_TOD.is_set = true;
49cea: 13c1 0006 245c moveb %d1,6245c <_TOD+0x14>
_TOD_Activate();
_Thread_Enable_dispatch();
49cf0: 4ef9 0004 b54c jmp 4b54c <_Thread_Enable_dispatch>
...
00048218 <_TOD_Validate>:
)
{
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
48218: 43f9 0005 e70e lea 5e70e <Configuration+0xc>,%a1
};
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
4821e: 4e56 0000 linkw %fp,#0
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
48222: 203c 000f 4240 movel #1000000,%d0
};
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
48228: 206e 0008 moveal %fp@(8),%a0
4822c: 2f02 movel %d2,%sp@-
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
4822e: 4c51 0000 remul %a1@,%d0,%d0
rtems_configuration_get_microseconds_per_tick();
if ((!the_tod) ||
48232: 4a88 tstl %a0
48234: 6758 beqs 4828e <_TOD_Validate+0x76> <== NEVER TAKEN
48236: b0a8 0018 cmpl %a0@(24),%d0
4823a: 6352 blss 4828e <_TOD_Validate+0x76>
(the_tod->ticks >= ticks_per_second) ||
4823c: 703b moveq #59,%d0
4823e: b0a8 0014 cmpl %a0@(20),%d0
48242: 654a bcss 4828e <_TOD_Validate+0x76>
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
48244: b0a8 0010 cmpl %a0@(16),%d0
48248: 6544 bcss 4828e <_TOD_Validate+0x76>
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
4824a: 7217 moveq #23,%d1
4824c: b2a8 000c cmpl %a0@(12),%d1
48250: 653c bcss 4828e <_TOD_Validate+0x76>
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
48252: 2028 0004 movel %a0@(4),%d0
rtems_configuration_get_microseconds_per_tick();
if ((!the_tod) ||
(the_tod->ticks >= ticks_per_second) ||
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
48256: 6736 beqs 4828e <_TOD_Validate+0x76> <== NEVER TAKEN
(the_tod->month == 0) ||
48258: 740c moveq #12,%d2
4825a: b480 cmpl %d0,%d2
4825c: 6530 bcss 4828e <_TOD_Validate+0x76>
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
4825e: 2210 movel %a0@,%d1
(the_tod->ticks >= ticks_per_second) ||
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
48260: 0c81 0000 07c3 cmpil #1987,%d1
48266: 6326 blss 4828e <_TOD_Validate+0x76>
(the_tod->year < TOD_BASE_YEAR) ||
(the_tod->day == 0) )
48268: 2068 0008 moveal %a0@(8),%a0
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
4826c: 4a88 tstl %a0
4826e: 671e beqs 4828e <_TOD_Validate+0x76> <== NEVER TAKEN
(the_tod->day == 0) )
return false;
if ( (the_tod->year % 4) == 0 )
48270: 143c 0003 moveb #3,%d2
days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];
48274: 43f9 0005 fa98 lea 5fa98 <_TOD_Days_per_month>,%a1
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
(the_tod->day == 0) )
return false;
if ( (the_tod->year % 4) == 0 )
4827a: c282 andl %d2,%d1
4827c: 6618 bnes 48296 <_TOD_Validate+0x7e>
days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];
4827e: 2031 0c34 movel %a1@(00000034,%d0:l:4),%d0
else
days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];
if ( the_tod->day > days_in_month )
48282: b1c0 cmpal %d0,%a0
48284: 53c0 sls %d0
48286: 4480 negl %d0
return false;
return true;
}
48288: 241f movel %sp@+,%d2
4828a: 4e5e unlk %fp
4828c: 4e75 rts
4828e: 241f movel %sp@+,%d2
48290: 4e5e unlk %fp
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
(the_tod->day == 0) )
return false;
48292: 4200 clrb %d0
if ( the_tod->day > days_in_month )
return false;
return true;
}
48294: 4e75 rts
return false;
if ( (the_tod->year % 4) == 0 )
days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];
else
days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];
48296: 2031 0c00 movel %a1@(00000000,%d0:l:4),%d0
if ( the_tod->day > days_in_month )
4829a: b1c0 cmpal %d0,%a0
4829c: 53c0 sls %d0
4829e: 4480 negl %d0
482a0: 60e6 bras 48288 <_TOD_Validate+0x70>
...
00049760 <_Thread_Change_priority>:
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
49760: 4e56 fff0 linkw %fp,#-16
49764: 48d7 041c moveml %d2-%d4/%a2,%sp@
49768: 246e 0008 moveal %fp@(8),%a2
States_Control state, original_state;
/*
* Save original state
*/
original_state = the_thread->current_state;
4976c: 262a 0010 movel %a2@(16),%d3
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
49770: 242e 000c movel %fp@(12),%d2
/*
* Set a transient state for the thread so it is pulled off the Ready chains.
* This will prevent it from being scheduled no matter what happens in an
* ISR.
*/
_Thread_Set_transient( the_thread );
49774: 2f0a movel %a2,%sp@-
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
49776: 182e 0013 moveb %fp@(19),%d4
/*
* Set a transient state for the thread so it is pulled off the Ready chains.
* This will prevent it from being scheduled no matter what happens in an
* ISR.
*/
_Thread_Set_transient( the_thread );
4977a: 4eb9 0004 a58c jsr 4a58c <_Thread_Set_transient>
/*
* Do not bother recomputing all the priority related information if
* we are not REALLY changing priority.
*/
if ( the_thread->current_priority != new_priority )
49780: 588f addql #4,%sp
49782: b4aa 0014 cmpl %a2@(20),%d2
49786: 670c beqs 49794 <_Thread_Change_priority+0x34>
_Thread_Set_priority( the_thread, new_priority );
49788: 2f02 movel %d2,%sp@-
4978a: 2f0a movel %a2,%sp@-
4978c: 4eb9 0004 a528 jsr 4a528 <_Thread_Set_priority>
49792: 508f addql #8,%sp
_ISR_Disable( level );
49794: 203c 0000 0700 movel #1792,%d0
4979a: 40c2 movew %sr,%d2
4979c: 8082 orl %d2,%d0
4979e: 46c0 movew %d0,%sr
/*
* If the thread has more than STATES_TRANSIENT set, then it is blocked,
* If it is blocked on a thread queue, then we need to requeue it.
*/
state = the_thread->current_state;
497a0: 202a 0010 movel %a2@(16),%d0
if ( state != STATES_TRANSIENT ) {
497a4: 7204 moveq #4,%d1
497a6: b280 cmpl %d0,%d1
497a8: 6738 beqs 497e2 <_Thread_Change_priority+0x82>
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) )
497aa: 44c3 movew %d3,%ccr
497ac: 6708 beqs 497b6 <_Thread_Change_priority+0x56> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
497ae: 72fb moveq #-5,%d1
497b0: c280 andl %d0,%d1
497b2: 2541 0010 movel %d1,%a2@(16)
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
_ISR_Enable( level );
497b6: 46c2 movew %d2,%sr
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (
States_Control the_states
)
{
return (the_states & STATES_WAITING_ON_THREAD_QUEUE);
497b8: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( state ) ) {
497be: 660a bnes 497ca <_Thread_Change_priority+0x6a>
if ( !_Thread_Is_executing_also_the_heir() &&
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
}
497c0: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
497c6: 4e5e unlk %fp
497c8: 4e75 rts
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) )
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
_ISR_Enable( level );
if ( _States_Is_waiting_on_thread_queue( state ) ) {
_Thread_queue_Requeue( the_thread->Wait.queue, the_thread );
497ca: 2d4a 000c movel %a2,%fp@(12)
497ce: 2d6a 0044 0008 movel %a2@(68),%fp@(8)
if ( !_Thread_Is_executing_also_the_heir() &&
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
}
497d4: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
497da: 4e5e unlk %fp
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) )
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
_ISR_Enable( level );
if ( _States_Is_waiting_on_thread_queue( state ) ) {
_Thread_queue_Requeue( the_thread->Wait.queue, the_thread );
497dc: 4ef9 0004 a478 jmp 4a478 <_Thread_queue_Requeue>
}
return;
}
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) ) {
497e2: 44c3 movew %d3,%ccr
497e4: 6714 beqs 497fa <_Thread_Change_priority+0x9a> <== NEVER TAKEN
* Interrupts are STILL disabled.
* We now know the thread will be in the READY state when we remove
* the TRANSIENT state. So we have to place it on the appropriate
* Ready Queue with interrupts off.
*/
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
497e6: 42aa 0010 clrl %a2@(16)
if ( prepend_it )
497ea: 4a04 tstb %d4
497ec: 6748 beqs 49836 <_Thread_Change_priority+0xd6>
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue_first(
Thread_Control *the_thread
)
{
_Scheduler.Operations.enqueue_first( the_thread );
497ee: 2f0a movel %a2,%sp@-
497f0: 2079 0005 e248 moveal 5e248 <_Scheduler+0x28>,%a0
497f6: 4e90 jsr %a0@
497f8: 588f addql #4,%sp
_Scheduler_Enqueue_first( the_thread );
else
_Scheduler_Enqueue( the_thread );
}
_ISR_Flash( level );
497fa: 203c 0000 0700 movel #1792,%d0
49800: 46c2 movew %d2,%sr
49802: 8082 orl %d2,%d0
49804: 46c0 movew %d0,%sr
* This kernel routine implements the scheduling decision logic for
* the scheduler. It does NOT dispatch.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule( void )
{
_Scheduler.Operations.schedule();
49806: 2079 0005 e228 moveal 5e228 <_Scheduler+0x8>,%a0
4980c: 4e90 jsr %a0@
* is also the heir thread, and false otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void )
{
return ( _Thread_Executing == _Thread_Heir );
4980e: 2079 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a0
* We altered the set of thread priorities. So let's figure out
* who is the heir and if we need to switch to them.
*/
_Scheduler_Schedule();
if ( !_Thread_Is_executing_also_the_heir() &&
49814: b1f9 0005 fb82 cmpal 5fb82 <_Per_CPU_Information+0x12>,%a0
4981a: 670e beqs 4982a <_Thread_Change_priority+0xca>
4981c: 4a28 0070 tstb %a0@(112)
49820: 6708 beqs 4982a <_Thread_Change_priority+0xca>
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
49822: 7001 moveq #1,%d0
49824: 13c0 0005 fb7c moveb %d0,5fb7c <_Per_CPU_Information+0xc>
_ISR_Enable( level );
4982a: 46c2 movew %d2,%sr
}
4982c: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
49832: 4e5e unlk %fp
49834: 4e75 rts
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue(
Thread_Control *the_thread
)
{
_Scheduler.Operations.enqueue( the_thread );
49836: 2f0a movel %a2,%sp@-
49838: 2079 0005 e244 moveal 5e244 <_Scheduler+0x24>,%a0
4983e: 4e90 jsr %a0@
49840: 588f addql #4,%sp
49842: 60b6 bras 497fa <_Thread_Change_priority+0x9a>
000498a0 <_Thread_Close>:
void _Thread_Close(
Objects_Information *information,
Thread_Control *the_thread
)
{
498a0: 4e56 0000 linkw %fp,#0
498a4: 2f0b movel %a3,%sp@-
498a6: 266e 0008 moveal %fp@(8),%a3
498aa: 2f0a movel %a2,%sp@-
498ac: 246e 000c moveal %fp@(12),%a2
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
498b0: 202a 0008 movel %a2@(8),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
498b4: 206b 0018 moveal %a3@(24),%a0
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
498b8: 0280 0000 ffff andil #65535,%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
498be: 42b0 0c00 clrl %a0@(00000000,%d0:l:4)
return ctx.ok;
}
static inline void _User_extensions_Thread_delete( Thread_Control *deleted )
{
_User_extensions_Iterate(
498c2: 4879 0004 a710 pea 4a710 <_User_extensions_Thread_delete_visitor>
*
* This routine decrements the thread dispatch level.
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
498c8: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
--level;
498ce: 5380 subql #1,%d0
498d0: 2f0a movel %a2,%sp@-
_Thread_Dispatch_disable_level = level;
498d2: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
498d8: 4eb9 0004 a7b8 jsr 4a7b8 <_User_extensions_Iterate>
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
498de: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
++level;
498e4: 5280 addql #1,%d0
_Thread_Dispatch_disable_level = level;
498e6: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
/*
* Now we are in a dispatching critical section again and we
* can take the thread OUT of the published set. It is invalid
* to use this thread's Id OR name after this call.
*/
_Objects_Close( information, &the_thread->Object );
498ec: 2f0a movel %a2,%sp@-
498ee: 2f0b movel %a3,%sp@-
498f0: 4eb9 0004 8a74 jsr 48a74 <_Objects_Close>
/*
* By setting the dormant state, the thread will not be considered
* for scheduling when we remove any blocking states.
*/
_Thread_Set_state( the_thread, STATES_DORMANT );
498f6: 4878 0001 pea 1 <ADD>
498fa: 2f0a movel %a2,%sp@-
498fc: 4eb9 0004 a540 jsr 4a540 <_Thread_Set_state>
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
49902: 2f0a movel %a2,%sp@-
49904: 4eb9 0004 a384 jsr 4a384 <_Thread_queue_Extract_with_proxy>
4990a: 4fef 001c lea %sp@(28),%sp
4990e: 4a00 tstb %d0
49910: 660a bnes 4991c <_Thread_Close+0x7c>
if ( _Watchdog_Is_active( &the_thread->Timer ) )
49912: 7002 moveq #2,%d0
49914: b0aa 0050 cmpl %a2@(80),%d0
49918: 6700 0088 beqw 499a2 <_Thread_Close+0x102>
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Free(
Thread_Control *the_thread
)
{
return _Scheduler.Operations.free( the_thread );
4991c: 2f0a movel %a2,%sp@-
4991e: 2079 0005 e23c moveal 5e23c <_Scheduler+0x1c>,%a0
49924: 4e90 jsr %a0@
/*
* The thread might have been FP. So deal with that.
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( _Thread_Is_allocated_fp( the_thread ) )
49926: 588f addql #4,%sp
49928: b5f9 0005 fa72 cmpal 5fa72 <_Thread_Allocated_fp>,%a2
4992e: 6736 beqs 49966 <_Thread_Close+0xc6>
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
_Workspace_Free( the_thread->Start.fp_context );
49930: 2f2a 00b4 movel %a2@(180),%sp@-
49934: 47f9 0004 ac10 lea 4ac10 <_Workspace_Free>,%a3
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( _Thread_Is_allocated_fp( the_thread ) )
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
4993a: 42aa 00f0 clrl %a2@(240)
_Workspace_Free( the_thread->Start.fp_context );
4993e: 4e93 jsr %a3@
/*
* Free the rest of the memory associated with this task
* and set the associated pointers to NULL for safety.
*/
_Thread_Stack_Free( the_thread );
49940: 2f0a movel %a2,%sp@-
49942: 4eb9 0004 a610 jsr 4a610 <_Thread_Stack_Free>
the_thread->Start.stack = NULL;
_Workspace_Free( the_thread->extensions );
49948: 2f2a 0100 movel %a2@(256),%sp@-
/*
* Free the rest of the memory associated with this task
* and set the associated pointers to NULL for safety.
*/
_Thread_Stack_Free( the_thread );
the_thread->Start.stack = NULL;
4994c: 42aa 00b8 clrl %a2@(184)
_Workspace_Free( the_thread->extensions );
49950: 4e93 jsr %a3@
the_thread->extensions = NULL;
}
49952: 266e fffc moveal %fp@(-4),%a3
*/
_Thread_Stack_Free( the_thread );
the_thread->Start.stack = NULL;
_Workspace_Free( the_thread->extensions );
the_thread->extensions = NULL;
49956: 4fef 000c lea %sp@(12),%sp
4995a: 42aa 0100 clrl %a2@(256)
}
4995e: 246e fff8 moveal %fp@(-8),%a2
49962: 4e5e unlk %fp
49964: 4e75 rts
if ( _Thread_Is_allocated_fp( the_thread ) )
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
_Workspace_Free( the_thread->Start.fp_context );
49966: 2f2a 00b4 movel %a2@(180),%sp@-
4996a: 47f9 0004 ac10 lea 4ac10 <_Workspace_Free>,%a3
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( _Thread_Is_allocated_fp( the_thread ) )
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
49970: 42aa 00f0 clrl %a2@(240)
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void )
{
_Thread_Allocated_fp = NULL;
49974: 42b9 0005 fa72 clrl 5fa72 <_Thread_Allocated_fp>
_Workspace_Free( the_thread->Start.fp_context );
4997a: 4e93 jsr %a3@
/*
* Free the rest of the memory associated with this task
* and set the associated pointers to NULL for safety.
*/
_Thread_Stack_Free( the_thread );
4997c: 2f0a movel %a2,%sp@-
4997e: 4eb9 0004 a610 jsr 4a610 <_Thread_Stack_Free>
the_thread->Start.stack = NULL;
_Workspace_Free( the_thread->extensions );
49984: 2f2a 0100 movel %a2@(256),%sp@-
/*
* Free the rest of the memory associated with this task
* and set the associated pointers to NULL for safety.
*/
_Thread_Stack_Free( the_thread );
the_thread->Start.stack = NULL;
49988: 42aa 00b8 clrl %a2@(184)
_Workspace_Free( the_thread->extensions );
4998c: 4e93 jsr %a3@
the_thread->extensions = NULL;
}
4998e: 266e fffc moveal %fp@(-4),%a3
*/
_Thread_Stack_Free( the_thread );
the_thread->Start.stack = NULL;
_Workspace_Free( the_thread->extensions );
the_thread->extensions = NULL;
49992: 4fef 000c lea %sp@(12),%sp
49996: 42aa 0100 clrl %a2@(256)
}
4999a: 246e fff8 moveal %fp@(-8),%a2
4999e: 4e5e unlk %fp
499a0: 4e75 rts
*/
_Thread_Set_state( the_thread, STATES_DORMANT );
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
if ( _Watchdog_Is_active( &the_thread->Timer ) )
(void) _Watchdog_Remove( &the_thread->Timer );
499a2: 486a 0048 pea %a2@(72)
499a6: 4eb9 0004 a9d4 jsr 4a9d4 <_Watchdog_Remove>
499ac: 588f addql #4,%sp
499ae: 2079 0005 e23c moveal 5e23c <_Scheduler+0x1c>,%a0
499b4: 2f0a movel %a2,%sp@-
499b6: 4e90 jsr %a0@
/*
* The thread might have been FP. So deal with that.
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( _Thread_Is_allocated_fp( the_thread ) )
499b8: 588f addql #4,%sp
499ba: b5f9 0005 fa72 cmpal 5fa72 <_Thread_Allocated_fp>,%a2
499c0: 6600 ff6e bnew 49930 <_Thread_Close+0x90>
499c4: 60a0 bras 49966 <_Thread_Close+0xc6> <== NOT EXECUTED
...
00049a74 <_Thread_Delay_ended>:
void _Thread_Delay_ended(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
49a74: 4e56 fffc linkw %fp,#-4
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
49a78: 486e fffc pea %fp@(-4)
49a7c: 2f2e 0008 movel %fp@(8),%sp@-
49a80: 4eb9 0004 9c64 jsr 49c64 <_Thread_Get>
switch ( location ) {
49a86: 508f addql #8,%sp
49a88: 4aae fffc tstl %fp@(-4)
49a8c: 661e bnes 49aac <_Thread_Delay_ended+0x38> <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_Clear_state(
49a8e: 2f3c 1000 0018 movel #268435480,%sp@-
49a94: 2f00 movel %d0,%sp@-
49a96: 4eb9 0004 9844 jsr 49844 <_Thread_Clear_state>
49a9c: 508f addql #8,%sp
*
* This routine decrements the thread dispatch level.
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
49a9e: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
--level;
49aa4: 5380 subql #1,%d0
_Thread_Dispatch_disable_level = level;
49aa6: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
| STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Thread_Unnest_dispatch();
break;
}
}
49aac: 4e5e unlk %fp <== NOT EXECUTED
00049ab0 <_Thread_Dispatch>:
#if defined(RTEMS_SMP)
#include <rtems/score/smp.h>
#endif
void _Thread_Dispatch( void )
{
49ab0: 4e56 ffd0 linkw %fp,#-48
49ab4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
/*
* Now determine if we need to perform a dispatch on the current CPU.
*/
executing = _Thread_Executing;
_ISR_Disable( level );
49ab8: 283c 0000 0700 movel #1792,%d4
49abe: 2004 movel %d4,%d0
#endif
/*
* Now determine if we need to perform a dispatch on the current CPU.
*/
executing = _Thread_Executing;
49ac0: 2479 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a2
_ISR_Disable( level );
49ac6: 40c1 movew %sr,%d1
49ac8: 8081 orl %d1,%d0
49aca: 46c0 movew %d0,%sr
while ( _Thread_Dispatch_necessary == true ) {
49acc: 1039 0005 fb7c moveb 5fb7c <_Per_CPU_Information+0xc>,%d0
49ad2: 6700 012e beqw 49c02 <_Thread_Dispatch+0x152>
* This routine sets thread dispatch level to the
* value passed in.
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_set_disable_level(uint32_t value)
{
_Thread_Dispatch_disable_level = value;
49ad6: 7001 moveq #1,%d0
heir = _Thread_Heir;
#ifndef RTEMS_SMP
_Thread_Dispatch_set_disable_level( 1 );
#endif
_Thread_Dispatch_necessary = false;
49ad8: 4207 clrb %d7
* Now determine if we need to perform a dispatch on the current CPU.
*/
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
49ada: 2679 0005 fb82 moveal 5fb82 <_Per_CPU_Information+0x12>,%a3
49ae0: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
#ifndef RTEMS_SMP
_Thread_Dispatch_set_disable_level( 1 );
#endif
_Thread_Dispatch_necessary = false;
49ae6: 13c7 0005 fb7c moveb %d7,5fb7c <_Per_CPU_Information+0xc>
_Thread_Executing = heir;
49aec: 23cb 0005 fb7e movel %a3,5fb7e <_Per_CPU_Information+0xe>
/*
* When the heir and executing are the same, then we are being
* requested to do the post switch dispatching. This is normally
* done to dispatch signals.
*/
if ( heir == executing )
49af2: b7ca cmpal %a2,%a3
49af4: 6700 010c beqw 49c02 <_Thread_Dispatch+0x152>
49af8: 2a0e movel %fp,%d5
49afa: 5185 subql #8,%d5
49afc: 4bf9 0004 843c lea 4843c <_TOD_Get_with_nanoseconds>,%a5
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
_Context_Restore_fp( &executing->fp_context );
49b02: 2c3c 0004 adc8 movel #306632,%d6
*/
#if __RTEMS_ADA__
executing->rtems_ada_self = rtems_ada_self;
rtems_ada_self = heir->rtems_ada_self;
#endif
if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
49b08: 7001 moveq #1,%d0
49b0a: b0ab 0076 cmpl %a3@(118),%d0
49b0e: 6700 0126 beqw 49c36 <_Thread_Dispatch+0x186>
heir->cpu_time_budget = _Thread_Ticks_per_timeslice;
_ISR_Enable( level );
49b12: 46c1 movew %d1,%sr
*/
static inline void _TOD_Get_uptime(
Timestamp_Control *time
)
{
_TOD_Get_with_nanoseconds( time, &_TOD.uptime );
49b14: 4879 0005 f9b0 pea 5f9b0 <_TOD+0x8>
49b1a: 2f05 movel %d5,%sp@-
49b1c: 4e95 jsr %a5@
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
49b1e: 2079 0005 fa76 moveal 5fa76 <_Thread_libc_reent>,%a0
49b24: 508f addql #8,%sp
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
{
Timestamp_Control uptime, ran;
_TOD_Get_uptime( &uptime );
_Timestamp_Subtract(
49b26: 202e fff8 movel %fp@(-8),%d0
49b2a: 222e fffc movel %fp@(-4),%d1
const Timestamp64_Control *_start,
const Timestamp64_Control *_end,
Timestamp64_Control *_result
)
{
*_result = *_end - *_start;
49b2e: 2400 movel %d0,%d2
49b30: 2601 movel %d1,%d3
49b32: 2e39 0005 fb8a movel 5fb8a <_Per_CPU_Information+0x1a>,%d7
49b38: 96b9 0005 fb8e subl 5fb8e <_Per_CPU_Information+0x1e>,%d3
49b3e: 9587 subxl %d7,%d2
static inline void _Timestamp64_implementation_Add_to(
Timestamp64_Control *_time,
const Timestamp64_Control *_add
)
{
*_time += *_add;
49b40: d7aa 0082 addl %d3,%a2@(130)
49b44: 2e2a 007e movel %a2@(126),%d7
49b48: df82 addxl %d2,%d7
49b4a: 2547 007e movel %d7,%a2@(126)
&_Thread_Time_of_last_context_switch,
&uptime,
&ran
);
_Timestamp_Add_to( &executing->cpu_time_used, &ran );
_Thread_Time_of_last_context_switch = uptime;
49b4e: 23c0 0005 fb8a movel %d0,5fb8a <_Per_CPU_Information+0x1a>
49b54: 23c1 0005 fb8e movel %d1,5fb8e <_Per_CPU_Information+0x1e>
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
49b5a: 4a88 tstl %a0
49b5c: 6708 beqs 49b66 <_Thread_Dispatch+0xb6> <== NEVER TAKEN
executing->libc_reent = *_Thread_libc_reent;
49b5e: 2550 00f4 movel %a0@,%a2@(244)
*_Thread_libc_reent = heir->libc_reent;
49b62: 20ab 00f4 movel %a3@(244),%a0@
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
49b66: 2879 0005 e348 moveal 5e348 <_User_extensions_Switches_list>,%a4
{
const Chain_Control *chain = &_User_extensions_Switches_list;
const Chain_Node *tail = _Chain_Immutable_tail( chain );
const Chain_Node *node = _Chain_Immutable_first( chain );
while ( node != tail ) {
49b6c: b9fc 0005 e34c cmpal #385868,%a4
49b72: 6716 beqs 49b8a <_Thread_Dispatch+0xda> <== NEVER TAKEN
const User_extensions_Switch_control *extension =
(const User_extensions_Switch_control *) node;
(*extension->thread_switch)( executing, heir );
49b74: 2f0b movel %a3,%sp@-
49b76: 2f0a movel %a2,%sp@-
49b78: 206c 0008 moveal %a4@(8),%a0
49b7c: 4e90 jsr %a0@
#ifdef RTEMS_SMP
_Thread_Unnest_dispatch();
#endif
_API_extensions_Run_post_switch( executing );
}
49b7e: 2854 moveal %a4@,%a4
{
const Chain_Control *chain = &_User_extensions_Switches_list;
const Chain_Node *tail = _Chain_Immutable_tail( chain );
const Chain_Node *node = _Chain_Immutable_first( chain );
while ( node != tail ) {
49b80: 508f addql #8,%sp
49b82: b9fc 0005 e34c cmpal #385868,%a4
49b88: 66ea bnes 49b74 <_Thread_Dispatch+0xc4>
if ( executing->fp_context != NULL )
_Context_Save_fp( &executing->fp_context );
#endif
#endif
_Context_Switch( &executing->Registers, &heir->Registers );
49b8a: 486b 00bc pea %a3@(188)
49b8e: 486a 00bc pea %a2@(188)
49b92: 4eb9 0004 ac60 jsr 4ac60 <_CPU_Context_switch>
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
49b98: 508f addql #8,%sp
49b9a: 4aaa 00f0 tstl %a2@(240)
49b9e: 672a beqs 49bca <_Thread_Dispatch+0x11a>
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
RTEMS_INLINE_ROUTINE bool _Thread_Is_allocated_fp (
const Thread_Control *the_thread
)
{
return ( the_thread == _Thread_Allocated_fp );
49ba0: 2079 0005 fa72 moveal 5fa72 <_Thread_Allocated_fp>,%a0
49ba6: b1ca cmpal %a2,%a0
49ba8: 6720 beqs 49bca <_Thread_Dispatch+0x11a>
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
49baa: 4a88 tstl %a0
49bac: 670c beqs 49bba <_Thread_Dispatch+0x10a>
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
49bae: 4868 00f0 pea %a0@(240)
49bb2: 4eb9 0004 ad90 jsr 4ad90 <_CPU_Context_save_fp>
49bb8: 588f addql #4,%sp
_Context_Restore_fp( &executing->fp_context );
49bba: 486a 00f0 pea %a2@(240)
49bbe: 2046 moveal %d6,%a0
49bc0: 4e90 jsr %a0@
_Thread_Allocated_fp = executing;
49bc2: 588f addql #4,%sp
49bc4: 23ca 0005 fa72 movel %a2,5fa72 <_Thread_Allocated_fp>
if ( executing->fp_context != NULL )
_Context_Restore_fp( &executing->fp_context );
#endif
#endif
executing = _Thread_Executing;
49bca: 2479 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a2
_ISR_Disable( level );
49bd0: 2004 movel %d4,%d0
49bd2: 40c1 movew %sr,%d1
49bd4: 8081 orl %d1,%d0
49bd6: 46c0 movew %d0,%sr
/*
* Now determine if we need to perform a dispatch on the current CPU.
*/
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
49bd8: 1039 0005 fb7c moveb 5fb7c <_Per_CPU_Information+0xc>,%d0
49bde: 6722 beqs 49c02 <_Thread_Dispatch+0x152>
* This routine sets thread dispatch level to the
* value passed in.
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_set_disable_level(uint32_t value)
{
_Thread_Dispatch_disable_level = value;
49be0: 7001 moveq #1,%d0
heir = _Thread_Heir;
#ifndef RTEMS_SMP
_Thread_Dispatch_set_disable_level( 1 );
#endif
_Thread_Dispatch_necessary = false;
49be2: 4207 clrb %d7
* Now determine if we need to perform a dispatch on the current CPU.
*/
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
49be4: 2679 0005 fb82 moveal 5fb82 <_Per_CPU_Information+0x12>,%a3
49bea: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
#ifndef RTEMS_SMP
_Thread_Dispatch_set_disable_level( 1 );
#endif
_Thread_Dispatch_necessary = false;
49bf0: 13c7 0005 fb7c moveb %d7,5fb7c <_Per_CPU_Information+0xc>
_Thread_Executing = heir;
49bf6: 23cb 0005 fb7e movel %a3,5fb7e <_Per_CPU_Information+0xe>
/*
* When the heir and executing are the same, then we are being
* requested to do the post switch dispatching. This is normally
* done to dispatch signals.
*/
if ( heir == executing )
49bfc: b5cb cmpal %a3,%a2
49bfe: 6600 ff08 bnew 49b08 <_Thread_Dispatch+0x58>
49c02: 42b9 0005 fa06 clrl 5fa06 <_Thread_Dispatch_disable_level>
post_switch:
#ifndef RTEMS_SMP
_Thread_Dispatch_set_disable_level( 0 );
#endif
_ISR_Enable( level );
49c08: 46c1 movew %d1,%sr
49c0a: 2679 0005 fa7a moveal 5fa7a <_API_extensions_Post_switch_list>,%a3
{
const Chain_Control *chain = &_API_extensions_Post_switch_list;
const Chain_Node *tail = _Chain_Immutable_tail( chain );
const Chain_Node *node = _Chain_Immutable_first( chain );
while ( node != tail ) {
49c10: b7fc 0005 fa7e cmpal #391806,%a3
49c16: 6714 beqs 49c2c <_Thread_Dispatch+0x17c>
const API_extensions_Post_switch_control *post_switch =
(const API_extensions_Post_switch_control *) node;
(*post_switch->hook)( executing );
49c18: 2f0a movel %a2,%sp@-
49c1a: 206b 0008 moveal %a3@(8),%a0
49c1e: 4e90 jsr %a0@
#ifdef RTEMS_SMP
_Thread_Unnest_dispatch();
#endif
_API_extensions_Run_post_switch( executing );
}
49c20: 2653 moveal %a3@,%a3
{
const Chain_Control *chain = &_API_extensions_Post_switch_list;
const Chain_Node *tail = _Chain_Immutable_tail( chain );
const Chain_Node *node = _Chain_Immutable_first( chain );
while ( node != tail ) {
49c22: 588f addql #4,%sp
49c24: b7fc 0005 fa7e cmpal #391806,%a3
49c2a: 66ec bnes 49c18 <_Thread_Dispatch+0x168> <== NEVER TAKEN
49c2c: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
49c32: 4e5e unlk %fp
49c34: 4e75 rts
#if __RTEMS_ADA__
executing->rtems_ada_self = rtems_ada_self;
rtems_ada_self = heir->rtems_ada_self;
#endif
if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
heir->cpu_time_budget = _Thread_Ticks_per_timeslice;
49c36: 41f9 0005 f9be lea 5f9be <_Thread_Ticks_per_timeslice>,%a0
49c3c: 2750 0072 movel %a0@,%a3@(114)
49c40: 6000 fed0 braw 49b12 <_Thread_Dispatch+0x62>
0004df68 <_Thread_Handler>:
#define INIT_NAME __main
#define EXECUTE_GLOBAL_CONSTRUCTORS
#endif
void _Thread_Handler( void )
{
4df68: 4e56 fff4 linkw %fp,#-12
4df6c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
static bool doneConstructors;
bool doCons;
#endif
executing = _Thread_Executing;
4df70: 2479 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a2
/*
* have to put level into a register for those cpu's that use
* inline asm here
*/
level = executing->Start.isr_level;
4df76: 222a 00a4 movel %a2@(164),%d1
_ISR_Set_level(level);
4df7a: 40c0 movew %sr,%d0
4df7c: e189 lsll #8,%d1
4df7e: 0280 0000 f8ff andil #63743,%d0
4df84: 8081 orl %d1,%d0
4df86: 46c0 movew %d0,%sr
&& _Objects_Get_API( executing->Object.id ) != OBJECTS_INTERNAL_API;
if (doCons)
doneConstructors = true;
#else
doCons = !doneConstructors;
doneConstructors = true;
4df88: 7001 moveq #1,%d0
doCons = !doneConstructors
&& _Objects_Get_API( executing->Object.id ) != OBJECTS_INTERNAL_API;
if (doCons)
doneConstructors = true;
#else
doCons = !doneConstructors;
4df8a: 1439 0005 f208 moveb 5f208 <doneConstructors.3716>,%d2
doneConstructors = true;
4df90: 13c0 0005 f208 moveb %d0,5f208 <doneConstructors.3716>
#endif
#endif
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
4df96: 4aaa 00f0 tstl %a2@(240)
4df9a: 6720 beqs 4dfbc <_Thread_Handler+0x54>
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
RTEMS_INLINE_ROUTINE bool _Thread_Is_allocated_fp (
const Thread_Control *the_thread
)
{
return ( the_thread == _Thread_Allocated_fp );
4df9c: 2079 0005 fa72 moveal 5fa72 <_Thread_Allocated_fp>,%a0
4dfa2: b1ca cmpal %a2,%a0
4dfa4: 6716 beqs 4dfbc <_Thread_Handler+0x54>
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
4dfa6: 4a88 tstl %a0
4dfa8: 670c beqs 4dfb6 <_Thread_Handler+0x4e>
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4dfaa: 4868 00f0 pea %a0@(240)
4dfae: 4eb9 0004 ad90 jsr 4ad90 <_CPU_Context_save_fp>
4dfb4: 588f addql #4,%sp
_Thread_Allocated_fp = executing;
4dfb6: 23ca 0005 fa72 movel %a2,5fa72 <_Thread_Allocated_fp>
);
}
static inline void _User_extensions_Thread_begin( Thread_Control *executing )
{
_User_extensions_Iterate(
4dfbc: 4879 0004 a758 pea 4a758 <_User_extensions_Thread_begin_visitor>
4dfc2: 47f9 0004 a7b8 lea 4a7b8 <_User_extensions_Iterate>,%a3
4dfc8: 2f0a movel %a2,%sp@-
4dfca: 4e93 jsr %a3@
_User_extensions_Thread_begin( executing );
/*
* At this point, the dispatch disable level BETTER be 1.
*/
_Thread_Enable_dispatch();
4dfcc: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
/*
* _init could be a weak symbol and we SHOULD test it but it isn't
* in any configuration I know of and it generates a warning on every
* RTEMS target configuration. --joel (12 May 2007)
*/
if (doCons) /* && (volatile void *)_init) */ {
4dfd2: 508f addql #8,%sp
4dfd4: 4a02 tstb %d2
4dfd6: 674a beqs 4e022 <_Thread_Handler+0xba>
_Thread_Enable_dispatch();
#endif
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4dfd8: 4aaa 008e tstl %a2@(142)
4dfdc: 671a beqs 4dff8 <_Thread_Handler+0x90> <== ALWAYS TAKEN
}
}
static inline void _User_extensions_Thread_exitted( Thread_Control *executing )
{
_User_extensions_Iterate(
4dfde: 4879 0004 a770 pea 4a770 <_User_extensions_Thread_exitted_visitor><== NOT EXECUTED
4dfe4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4dfe6: 4e93 jsr %a3@ <== NOT EXECUTED
* able to fit in a (void *).
*/
_User_extensions_Thread_exitted( executing );
_Internal_error_Occurred(
4dfe8: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4dfec: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4dff0: 42a7 clrl %sp@- <== NOT EXECUTED
4dff2: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred> <== NOT EXECUTED
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
executing->Wait.return_argument =
(*(Thread_Entry_numeric) executing->Start.entry_point)(
4dff8: 2f2a 0096 movel %a2@(150),%sp@-
4dffc: 206a 008a moveal %a2@(138),%a0
4e000: 4e90 jsr %a0@
#endif
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
executing->Wait.return_argument =
4e002: 588f addql #4,%sp
4e004: 2540 0028 movel %d0,%a2@(40)
4e008: 4879 0004 a770 pea 4a770 <_User_extensions_Thread_exitted_visitor>
4e00e: 2f0a movel %a2,%sp@-
4e010: 4e93 jsr %a3@
* able to fit in a (void *).
*/
_User_extensions_Thread_exitted( executing );
_Internal_error_Occurred(
4e012: 4878 0005 pea 5 <COMPARE>
4e016: 4878 0001 pea 1 <ADD>
4e01a: 42a7 clrl %sp@-
4e01c: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred>
* _init could be a weak symbol and we SHOULD test it but it isn't
* in any configuration I know of and it generates a warning on every
* RTEMS target configuration. --joel (12 May 2007)
*/
if (doCons) /* && (volatile void *)_init) */ {
INIT_NAME ();
4e022: 4eb9 0005 c3a8 jsr 5c3a8 <_init>
_Thread_Enable_dispatch();
#endif
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4e028: 4aaa 008e tstl %a2@(142)
4e02c: 66b0 bnes 4dfde <_Thread_Handler+0x76> <== NEVER TAKEN
4e02e: 60c8 bras 4dff8 <_Thread_Handler+0x90>
00049f1c <_Thread_Handler_initialization>:
#if defined(RTEMS_SMP)
#include <rtems/bspsmp.h>
#endif
void _Thread_Handler_initialization(void)
{
49f1c: 4e56 0000 linkw %fp,#0
uint32_t ticks_per_timeslice =
rtems_configuration_get_ticks_per_timeslice();
uint32_t maximum_extensions =
rtems_configuration_get_maximum_extensions();
rtems_stack_allocate_init_hook stack_allocate_init_hook =
49f20: 2079 0005 c5f8 moveal 5c5f8 <Configuration+0x24>,%a0
#if defined(RTEMS_MULTIPROCESSING)
uint32_t maximum_proxies =
_Configuration_MP_table->maximum_proxies;
#endif
if ( rtems_configuration_get_stack_allocate_hook() == NULL ||
49f26: 4ab9 0005 c5fc tstl 5c5fc <Configuration+0x28>
49f2c: 6772 beqs 49fa0 <_Thread_Handler_initialization+0x84><== NEVER TAKEN
49f2e: 4ab9 0005 c600 tstl 5c600 <Configuration+0x2c>
49f34: 676a beqs 49fa0 <_Thread_Handler_initialization+0x84>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_BAD_STACK_HOOK
);
if ( stack_allocate_init_hook != NULL )
49f36: 4a88 tstl %a0
49f38: 670a beqs 49f44 <_Thread_Handler_initialization+0x28>
(*stack_allocate_init_hook)( rtems_configuration_get_stack_space_size() );
49f3a: 2f39 0005 c5d8 movel 5c5d8 <Configuration+0x4>,%sp@-
49f40: 4e90 jsr %a0@
49f42: 588f addql #4,%sp
#if defined(RTEMS_MULTIPROCESSING)
if ( _System_state_Is_multiprocessing )
maximum_internal_threads += 1;
#endif
_Objects_Initialize_information(
49f44: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
_Thread_Heir = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
_Thread_Allocated_fp = NULL;
#endif
_Thread_Maximum_extensions = maximum_extensions;
49f48: 41f9 0005 c5dc lea 5c5dc <Configuration+0x8>,%a0
49f4e: 23d0 0005 fa86 movel %a0@,5fa86 <_Thread_Maximum_extensions>
_Thread_Ticks_per_timeslice = ticks_per_timeslice;
49f54: 41f9 0005 c5e8 lea 5c5e8 <Configuration+0x14>,%a0
49f5a: 23d0 0005 f9be movel %a0@,5f9be <_Thread_Ticks_per_timeslice>
);
if ( stack_allocate_init_hook != NULL )
(*stack_allocate_init_hook)( rtems_configuration_get_stack_space_size() );
_Thread_Dispatch_necessary = false;
49f60: 4200 clrb %d0
#if defined(RTEMS_MULTIPROCESSING)
if ( _System_state_Is_multiprocessing )
maximum_internal_threads += 1;
#endif
_Objects_Initialize_information(
49f62: 42a7 clrl %sp@-
49f64: 4878 0108 pea 108 <DBL_MANT_DIG+0xd3>
49f68: 4878 0001 pea 1 <ADD>
49f6c: 4878 0001 pea 1 <ADD>
49f70: 4878 0001 pea 1 <ADD>
49f74: 4879 0005 faf2 pea 5faf2 <_Thread_Internal_information>
);
if ( stack_allocate_init_hook != NULL )
(*stack_allocate_init_hook)( rtems_configuration_get_stack_space_size() );
_Thread_Dispatch_necessary = false;
49f7a: 13c0 0005 fb7c moveb %d0,5fb7c <_Per_CPU_Information+0xc>
_Thread_Executing = NULL;
49f80: 42b9 0005 fb7e clrl 5fb7e <_Per_CPU_Information+0xe>
_Thread_Heir = NULL;
49f86: 42b9 0005 fb82 clrl 5fb82 <_Per_CPU_Information+0x12>
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
_Thread_Allocated_fp = NULL;
49f8c: 42b9 0005 fa72 clrl 5fa72 <_Thread_Allocated_fp>
#if defined(RTEMS_MULTIPROCESSING)
if ( _System_state_Is_multiprocessing )
maximum_internal_threads += 1;
#endif
_Objects_Initialize_information(
49f92: 4eb9 0004 8f44 jsr 48f44 <_Objects_Initialize_information>
49f98: 4fef 001c lea %sp@(28),%sp
false, /* true if this is a global object class */
NULL /* Proxy extraction support callout */
#endif
);
}
49f9c: 4e5e unlk %fp
49f9e: 4e75 rts
_Configuration_MP_table->maximum_proxies;
#endif
if ( rtems_configuration_get_stack_allocate_hook() == NULL ||
rtems_configuration_get_stack_free_hook() == NULL)
_Internal_error_Occurred(
49fa0: 4878 000e pea e <OPER1+0x2>
49fa4: 4878 0001 pea 1 <ADD>
49fa8: 42a7 clrl %sp@-
49faa: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred>
0004d614 <_Thread_Reset>:
void _Thread_Reset(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
4d614: 4e56 0000 linkw %fp,#0
4d618: 2f0a movel %a2,%sp@-
4d61a: 246e 0008 moveal %fp@(8),%a2
the_thread->resource_count = 0;
the_thread->is_preemptible = the_thread->Start.is_preemptible;
the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
4d61e: 256a 009c 0076 movel %a2@(156),%a2@(118)
the_thread->budget_callout = the_thread->Start.budget_callout;
4d624: 256a 00a0 007a movel %a2@(160),%a2@(122)
the_thread->Start.pointer_argument = pointer_argument;
4d62a: 256e 000c 0092 movel %fp@(12),%a2@(146)
the_thread->Start.numeric_argument = numeric_argument;
4d630: 256e 0010 0096 movel %fp@(16),%a2@(150)
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
the_thread->resource_count = 0;
the_thread->is_preemptible = the_thread->Start.is_preemptible;
4d636: 156a 009a 0070 moveb %a2@(154),%a2@(112)
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
the_thread->resource_count = 0;
4d63c: 42aa 001c clrl %a2@(28)
the_thread->budget_callout = the_thread->Start.budget_callout;
the_thread->Start.pointer_argument = pointer_argument;
the_thread->Start.numeric_argument = numeric_argument;
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
4d640: 2f0a movel %a2,%sp@-
4d642: 4eb9 0004 ac18 jsr 4ac18 <_Thread_queue_Extract_with_proxy>
4d648: 588f addql #4,%sp
4d64a: 4a00 tstb %d0
4d64c: 6608 bnes 4d656 <_Thread_Reset+0x42>
if ( _Watchdog_Is_active( &the_thread->Timer ) )
4d64e: 7002 moveq #2,%d0
4d650: b0aa 0050 cmpl %a2@(80),%d0
4d654: 672a beqs 4d680 <_Thread_Reset+0x6c>
(void) _Watchdog_Remove( &the_thread->Timer );
}
if ( the_thread->current_priority != the_thread->Start.initial_priority ) {
4d656: 202a 00a8 movel %a2@(168),%d0
4d65a: b0aa 0014 cmpl %a2@(20),%d0
4d65e: 6718 beqs 4d678 <_Thread_Reset+0x64>
the_thread->real_priority = the_thread->Start.initial_priority;
4d660: 2540 0018 movel %d0,%a2@(24)
_Thread_Set_priority( the_thread, the_thread->Start.initial_priority );
4d664: 2d4a 0008 movel %a2,%fp@(8)
}
}
4d668: 246e fffc moveal %fp@(-4),%a2
(void) _Watchdog_Remove( &the_thread->Timer );
}
if ( the_thread->current_priority != the_thread->Start.initial_priority ) {
the_thread->real_priority = the_thread->Start.initial_priority;
_Thread_Set_priority( the_thread, the_thread->Start.initial_priority );
4d66c: 2d40 000c movel %d0,%fp@(12)
}
}
4d670: 4e5e unlk %fp
(void) _Watchdog_Remove( &the_thread->Timer );
}
if ( the_thread->current_priority != the_thread->Start.initial_priority ) {
the_thread->real_priority = the_thread->Start.initial_priority;
_Thread_Set_priority( the_thread, the_thread->Start.initial_priority );
4d672: 4ef9 0004 ae4c jmp 4ae4c <_Thread_Set_priority>
}
}
4d678: 246e fffc moveal %fp@(-4),%a2
4d67c: 4e5e unlk %fp
4d67e: 4e75 rts
the_thread->Start.numeric_argument = numeric_argument;
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
if ( _Watchdog_Is_active( &the_thread->Timer ) )
(void) _Watchdog_Remove( &the_thread->Timer );
4d680: 486a 0048 pea %a2@(72)
4d684: 4eb9 0004 b2f8 jsr 4b2f8 <_Watchdog_Remove>
4d68a: 588f addql #4,%sp
4d68c: 60c8 bras 4d656 <_Thread_Reset+0x42>
...
0004adbc <_Thread_Restart>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
4adbc: 7001 moveq #1,%d0
bool _Thread_Restart(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
4adbe: 4e56 0000 linkw %fp,#0
4adc2: 2f0a movel %a2,%sp@-
4adc4: 246e 0008 moveal %fp@(8),%a2
4adc8: c0aa 0010 andl %a2@(16),%d0
if ( !_States_Is_dormant( the_thread->current_state ) ) {
4adcc: 670a beqs 4add8 <_Thread_Restart+0x1c>
_Thread_Restart_self();
return true;
}
return false;
4adce: 4200 clrb %d0
}
4add0: 246e fffc moveal %fp@(-4),%a2
4add4: 4e5e unlk %fp
4add6: 4e75 rts
Thread_Entry_numeric_type numeric_argument
)
{
if ( !_States_Is_dormant( the_thread->current_state ) ) {
_Thread_Set_transient( the_thread );
4add8: 2f0a movel %a2,%sp@-
4adda: 4eb9 0004 aeb0 jsr 4aeb0 <_Thread_Set_transient>
_Thread_Reset( the_thread, pointer_argument, numeric_argument );
4ade0: 2f2e 0010 movel %fp@(16),%sp@-
4ade4: 2f2e 000c movel %fp@(12),%sp@-
4ade8: 2f0a movel %a2,%sp@-
4adea: 4eb9 0004 d614 jsr 4d614 <_Thread_Reset>
_Thread_Load_environment( the_thread );
4adf0: 2f0a movel %a2,%sp@-
4adf2: 4eb9 0004 d318 jsr 4d318 <_Thread_Load_environment>
_Thread_Ready( the_thread );
4adf8: 2f0a movel %a2,%sp@-
4adfa: 4eb9 0004 d5e4 jsr 4d5e4 <_Thread_Ready>
);
}
static inline void _User_extensions_Thread_restart( Thread_Control *restarted )
{
_User_extensions_Iterate(
4ae00: 4879 0004 b064 pea 4b064 <_User_extensions_Thread_restart_visitor>
4ae06: 2f0a movel %a2,%sp@-
4ae08: 4eb9 0004 b0dc jsr 4b0dc <_User_extensions_Iterate>
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
4ae0e: 4fef 0020 lea %sp@(32),%sp
_Thread_Restart_self();
return true;
4ae12: 7001 moveq #1,%d0
_Thread_Ready( the_thread );
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
4ae14: b5f9 0006 06d6 cmpal 606d6 <_Per_CPU_Information+0xe>,%a2
4ae1a: 66b4 bnes 4add0 <_Thread_Restart+0x14>
*/
RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void )
{
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( _Thread_Executing->fp_context != NULL )
4ae1c: 4aaa 00f0 tstl %a2@(240)
4ae20: 6712 beqs 4ae34 <_Thread_Restart+0x78>
_Context_Restore_fp( &_Thread_Executing->fp_context );
4ae22: 486a 00f0 pea %a2@(240)
4ae26: 4eb9 0004 b6ec jsr 4b6ec <_CPU_Context_restore_fp>
4ae2c: 2479 0006 06d6 moveal 606d6 <_Per_CPU_Information+0xe>,%a2
4ae32: 588f addql #4,%sp
#endif
_CPU_Context_Restart_self( &_Thread_Executing->Registers );
4ae34: 486a 00bc pea %a2@(188)
4ae38: 4eb9 0004 b59a jsr 4b59a <_CPU_Context_Restart_self>
return true;
}
return false;
}
4ae3e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ae42: 588f addql #4,%sp <== NOT EXECUTED
4ae44: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
4ae46: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
...
000496f8 <_Thread_blocking_operation_Cancel>:
/*
* If the sync state is timed out, this is very likely not needed.
* But better safe than sorry when it comes to critical sections.
*/
if ( _Watchdog_Is_active( &the_thread->Timer ) ) {
496f8: 7202 moveq #2,%d1
Thread_blocking_operation_States sync_state __attribute__((unused)),
#endif
Thread_Control *the_thread,
ISR_Level level
)
{
496fa: 4e56 0000 linkw %fp,#0
496fe: 202e 0010 movel %fp@(16),%d0
49702: 2f0a movel %a2,%sp@-
49704: 246e 000c moveal %fp@(12),%a2
#endif
/*
* The thread is not waiting on anything after this completes.
*/
the_thread->Wait.queue = NULL;
49708: 42aa 0044 clrl %a2@(68)
/*
* If the sync state is timed out, this is very likely not needed.
* But better safe than sorry when it comes to critical sections.
*/
if ( _Watchdog_Is_active( &the_thread->Timer ) ) {
4970c: b2aa 0050 cmpl %a2@(80),%d1
49710: 671c beqs 4972e <_Thread_blocking_operation_Cancel+0x36>
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
(void) _Watchdog_Remove( &the_thread->Timer );
} else
_ISR_Enable( level );
49712: 46c0 movew %d0,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
49714: 2d4a 0008 movel %a2,%fp@(8)
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
49718: 246e fffc moveal %fp@(-4),%a2
4971c: 203c 1007 fff8 movel #268959736,%d0
49722: 2d40 000c movel %d0,%fp@(12)
49726: 4e5e unlk %fp
49728: 4ef9 0004 9844 jmp 49844 <_Thread_Clear_state>
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4972e: 123c 0003 moveb #3,%d1
49732: 2541 0050 movel %d1,%a2@(80)
* If the sync state is timed out, this is very likely not needed.
* But better safe than sorry when it comes to critical sections.
*/
if ( _Watchdog_Is_active( &the_thread->Timer ) ) {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
49736: 46c0 movew %d0,%sr
(void) _Watchdog_Remove( &the_thread->Timer );
49738: 486a 0048 pea %a2@(72)
4973c: 4eb9 0004 a9d4 jsr 4a9d4 <_Watchdog_Remove>
49742: 588f addql #4,%sp
49744: 203c 1007 fff8 movel #268959736,%d0
4974a: 2d4a 0008 movel %a2,%fp@(8)
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4974e: 246e fffc moveal %fp@(-4),%a2
49752: 2d40 000c movel %d0,%fp@(12)
49756: 4e5e unlk %fp
49758: 4ef9 0004 9844 jmp 49844 <_Thread_Clear_state>
...
0004a02c <_Thread_queue_Dequeue_priority>:
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
4a02c: 203c 0000 0700 movel #1792,%d0
#include <rtems/score/tqdata.h>
Thread_Control *_Thread_queue_Dequeue_priority(
Thread_queue_Control *the_thread_queue
)
{
4a032: 4e56 ffe8 linkw %fp,#-24
4a036: 226e 0008 moveal %fp@(8),%a1
4a03a: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
4a03e: 40c3 movew %sr,%d3
4a040: 8083 orl %d3,%d0
4a042: 46c0 movew %d0,%sr
for( index=0 ;
4a044: 4281 clrl %d1
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) {
4a046: 2401 movel %d1,%d2
4a048: 2001 movel %d1,%d0
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
4a04a: 5281 addql #1,%d1
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) {
4a04c: e58a lsll #2,%d2
4a04e: e988 lsll #4,%d0
4a050: 9082 subl %d2,%d0
4a052: 41f1 0800 lea %a1@(00000000,%d0:l),%a0
4a056: 2458 moveal %a0@+,%a2
4a058: b1ca cmpal %a2,%a0
4a05a: 6616 bnes 4a072 <_Thread_queue_Dequeue_priority+0x46>
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
4a05c: 7004 moveq #4,%d0
4a05e: b081 cmpl %d1,%d0
4a060: 66e4 bnes 4a046 <_Thread_queue_Dequeue_priority+0x1a>
}
/*
* We did not find a thread to unblock.
*/
_ISR_Enable( level );
4a062: 46c3 movew %d3,%sr
return NULL;
4a064: 95ca subal %a2,%a2
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
4a066: 200a movel %a2,%d0
4a068: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4a06e: 4e5e unlk %fp
4a070: 4e75 rts
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4a072: 200a movel %a2,%d0
4a074: 0680 0000 003c addil #60,%d0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
4a07a: 206a 0038 moveal %a2@(56),%a0
dequeue:
the_thread->Wait.queue = NULL;
new_first_node = _Chain_First( &the_thread->Wait.Block2n );
new_first_thread = (Thread_Control *) new_first_node;
next_node = the_thread->Object.Node.next;
4a07e: 2252 moveal %a2@,%a1
previous_node = the_thread->Object.Node.previous;
4a080: 266a 0004 moveal %a2@(4),%a3
*/
_ISR_Enable( level );
return NULL;
dequeue:
the_thread->Wait.queue = NULL;
4a084: 42aa 0044 clrl %a2@(68)
new_first_node = _Chain_First( &the_thread->Wait.Block2n );
new_first_thread = (Thread_Control *) new_first_node;
next_node = the_thread->Object.Node.next;
previous_node = the_thread->Object.Node.previous;
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
4a088: b088 cmpl %a0,%d0
4a08a: 6700 008a beqw 4a116 <_Thread_queue_Dequeue_priority+0xea>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Last(
Chain_Control *the_chain
)
{
return _Chain_Tail( the_chain )->previous;
4a08e: 286a 0040 moveal %a2@(64),%a4
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
4a092: 2a50 moveal %a0@,%a5
previous_node->next = new_first_node;
next_node->previous = new_first_node;
4a094: 2348 0004 movel %a0,%a1@(4)
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
previous_node->next = new_first_node;
4a098: 2688 movel %a0,%a3@
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
4a09a: 214b 0004 movel %a3,%a0@(4)
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
previous_node->next = new_first_node;
next_node->previous = new_first_node;
new_first_node->next = next_node;
4a09e: 2089 movel %a1,%a0@
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
4a0a0: 226a 0040 moveal %a2@(64),%a1
4a0a4: b3ea 0038 cmpal %a2@(56),%a1
4a0a8: 6716 beqs 4a0c0 <_Thread_queue_Dequeue_priority+0x94>
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
4a0aa: 214d 0038 movel %a5,%a0@(56)
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
4a0ae: 43e8 003c lea %a0@(60),%a1
4a0b2: 2889 movel %a1,%a4@
new_first_node->next = next_node;
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
4a0b4: 43e8 0038 lea %a0@(56),%a1
4a0b8: 2b49 0004 movel %a1,%a5@(4)
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
tail->previous = last_node;
4a0bc: 214c 0040 movel %a4,%a0@(64)
} else {
previous_node->next = next_node;
next_node->previous = previous_node;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4a0c0: 7002 moveq #2,%d0
4a0c2: b0aa 0050 cmpl %a2@(80),%d0
4a0c6: 671e beqs 4a0e6 <_Thread_queue_Dequeue_priority+0xba>
_ISR_Enable( level );
4a0c8: 46c3 movew %d3,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4a0ca: 2f3c 1007 fff8 movel #268959736,%sp@-
4a0d0: 2f0a movel %a2,%sp@-
4a0d2: 4eb9 0004 9844 jsr 49844 <_Thread_Clear_state>
4a0d8: 508f addql #8,%sp
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
4a0da: 200a movel %a2,%d0
4a0dc: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4a0e2: 4e5e unlk %fp
4a0e4: 4e75 rts
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4a0e6: 7003 moveq #3,%d0
4a0e8: 2540 0050 movel %d0,%a2@(80)
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
_Thread_Unblock( the_thread );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4a0ec: 46c3 movew %d3,%sr
(void) _Watchdog_Remove( &the_thread->Timer );
4a0ee: 486a 0048 pea %a2@(72)
4a0f2: 4eb9 0004 a9d4 jsr 4a9d4 <_Watchdog_Remove>
4a0f8: 2f3c 1007 fff8 movel #268959736,%sp@-
4a0fe: 2f0a movel %a2,%sp@-
4a100: 4eb9 0004 9844 jsr 49844 <_Thread_Clear_state>
4a106: 4fef 000c lea %sp@(12),%sp
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
4a10a: 200a movel %a2,%d0
4a10c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4a112: 4e5e unlk %fp
4a114: 4e75 rts
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
4a116: 2689 movel %a1,%a3@
next_node->previous = previous_node;
4a118: 234b 0004 movel %a3,%a1@(4)
4a11c: 60a2 bras 4a0c0 <_Thread_queue_Dequeue_priority+0x94>
...
0004a1cc <_Thread_queue_Enqueue_priority>:
Thread_blocking_operation_States _Thread_queue_Enqueue_priority (
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread,
ISR_Level *level_p
)
{
4a1cc: 4e56 ffe0 linkw %fp,#-32
4a1d0: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
4a1d4: 266e 000c moveal %fp@(12),%a3
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a1d8: 45eb 0038 lea %a3@(56),%a2
Chain_Node *tail = _Chain_Tail( the_chain );
4a1dc: 41eb 003c lea %a3@(60),%a0
Priority_Control priority;
States_Control block_state;
_Chain_Initialize_empty( &the_thread->Wait.Block2n );
priority = the_thread->current_priority;
4a1e0: 222b 0014 movel %a3@(20),%d1
RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number (
Priority_Control the_priority
)
{
return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);
4a1e4: 2001 movel %d1,%d0
4a1e6: ec88 lsrl #6,%d0
header_index = _Thread_queue_Header_number( priority );
header = &the_thread_queue->Queues.Priority[ header_index ];
4a1e8: 2400 movel %d0,%d2
4a1ea: e988 lsll #4,%d0
4a1ec: e58a lsll #2,%d2
Thread_blocking_operation_States _Thread_queue_Enqueue_priority (
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread,
ISR_Level *level_p
)
{
4a1ee: 286e 0008 moveal %fp@(8),%a4
_Chain_Initialize_empty( &the_thread->Wait.Block2n );
priority = the_thread->current_priority;
header_index = _Thread_queue_Header_number( priority );
header = &the_thread_queue->Queues.Priority[ header_index ];
4a1f2: 9082 subl %d2,%d0
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a1f4: 274a 0040 movel %a2,%a3@(64)
block_state = the_thread_queue->state;
4a1f8: 242c 0038 movel %a4@(56),%d2
_Chain_Initialize_empty( &the_thread->Wait.Block2n );
priority = the_thread->current_priority;
header_index = _Thread_queue_Header_number( priority );
header = &the_thread_queue->Queues.Priority[ header_index ];
4a1fc: 45f4 0800 lea %a4@(00000000,%d0:l),%a2
Chain_Node *tail = _Chain_Tail( the_chain );
4a200: 2748 0038 movel %a0,%a3@(56)
head->next = tail;
head->previous = NULL;
4a204: 42ab 003c clrl %a3@(60)
block_state = the_thread_queue->state;
if ( _Thread_queue_Is_reverse_search( priority ) )
4a208: 0801 0005 btst #5,%d1
4a20c: 6656 bnes 4a264 <_Thread_queue_Enqueue_priority+0x98>
4a20e: 2c0a movel %a2,%d6
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
4a210: 2a3c 0000 0700 movel #1792,%d5
4a216: 5886 addql #4,%d6
4a218: 2005 movel %d5,%d0
4a21a: 40c3 movew %sr,%d3
4a21c: 8083 orl %d3,%d0
4a21e: 46c0 movew %d0,%sr
4a220: 2803 movel %d3,%d4
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
4a222: 2052 moveal %a2@,%a0
search_thread = (Thread_Control *) _Chain_First( header );
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
4a224: bc88 cmpl %a0,%d6
4a226: 6700 0148 beqw 4a370 <_Thread_queue_Enqueue_priority+0x1a4>
search_priority = search_thread->current_priority;
4a22a: 2268 0014 moveal %a0@(20),%a1
if ( priority <= search_priority )
4a22e: b3c1 cmpal %d1,%a1
4a230: 6418 bccs 4a24a <_Thread_queue_Enqueue_priority+0x7e>
break;
search_priority = search_thread->current_priority;
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
4a232: 2005 movel %d5,%d0
4a234: 46c3 movew %d3,%sr
4a236: 8083 orl %d3,%d0
4a238: 46c0 movew %d0,%sr
RTEMS_INLINE_ROUTINE bool _States_Are_set (
States_Control the_states,
States_Control mask
)
{
return ( (the_states & mask) != STATES_READY);
4a23a: 2002 movel %d2,%d0
4a23c: c0a8 0010 andl %a0@(16),%d0
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
4a240: 6700 0092 beqw 4a2d4 <_Thread_queue_Enqueue_priority+0x108>
_ISR_Enable( level );
goto restart_forward_search;
}
search_thread =
4a244: 2050 moveal %a0@,%a0
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_First( header );
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
4a246: bc88 cmpl %a0,%d6
4a248: 66e0 bnes 4a22a <_Thread_queue_Enqueue_priority+0x5e>
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
4a24a: 202c 0030 movel %a4@(48),%d0
4a24e: 7401 moveq #1,%d2
4a250: b480 cmpl %d0,%d2
4a252: 6700 00b6 beqw 4a30a <_Thread_queue_Enqueue_priority+0x13e>
* For example, the blocking thread could have been given
* the mutex by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
4a256: 206e 0010 moveal %fp@(16),%a0
4a25a: 2084 movel %d4,%a0@
return the_thread_queue->sync_state;
}
4a25c: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
4a260: 4e5e unlk %fp
4a262: 4e75 rts
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
4a264: 2a3c 0000 0700 movel #1792,%d5
4a26a: 2005 movel %d5,%d0
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
4a26c: 1c39 0005 e19c moveb 5e19c <rtems_maximum_priority>,%d6
_ISR_Disable( level );
4a272: 40c3 movew %sr,%d3
4a274: 8083 orl %d3,%d0
4a276: 46c0 movew %d0,%sr
4a278: 2803 movel %d3,%d4
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Last(
Chain_Control *the_chain
)
{
return _Chain_Tail( the_chain )->previous;
4a27a: 206a 0008 moveal %a2@(8),%a0
search_thread = (Thread_Control *) _Chain_Last( header );
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
4a27e: b5c8 cmpal %a0,%a2
4a280: 6700 00d4 beqw 4a356 <_Thread_queue_Enqueue_priority+0x18a>
search_priority = search_thread->current_priority;
4a284: 2268 0014 moveal %a0@(20),%a1
if ( priority >= search_priority )
4a288: b3c1 cmpal %d1,%a1
4a28a: 6318 blss 4a2a4 <_Thread_queue_Enqueue_priority+0xd8>
break;
search_priority = search_thread->current_priority;
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
4a28c: 2005 movel %d5,%d0
4a28e: 46c3 movew %d3,%sr
4a290: 8083 orl %d3,%d0
4a292: 46c0 movew %d0,%sr
4a294: 2002 movel %d2,%d0
4a296: c0a8 0010 andl %a0@(16),%d0
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
4a29a: 6750 beqs 4a2ec <_Thread_queue_Enqueue_priority+0x120>
_ISR_Enable( level );
goto restart_reverse_search;
}
search_thread = (Thread_Control *)
4a29c: 2068 0004 moveal %a0@(4),%a0
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_Last( header );
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
4a2a0: b5c8 cmpal %a0,%a2
4a2a2: 66e0 bnes 4a284 <_Thread_queue_Enqueue_priority+0xb8>
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
}
if ( the_thread_queue->sync_state !=
4a2a4: 202c 0030 movel %a4@(48),%d0
4a2a8: 7401 moveq #1,%d2
4a2aa: b480 cmpl %d0,%d2
4a2ac: 66a8 bnes 4a256 <_Thread_queue_Enqueue_priority+0x8a><== NEVER TAKEN
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
4a2ae: 42ac 0030 clrl %a4@(48)
if ( priority == search_priority )
4a2b2: b3c1 cmpal %d1,%a1
4a2b4: 677c beqs 4a332 <_Thread_queue_Enqueue_priority+0x166>
goto equal_priority;
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
4a2b6: 2250 moveal %a0@,%a1
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
the_node->previous = search_node;
4a2b8: 2748 0004 movel %a0,%a3@(4)
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
4a2bc: 2689 movel %a1,%a3@
the_node->previous = search_node;
search_node->next = the_node;
next_node->previous = the_node;
4a2be: 234b 0004 movel %a3,%a1@(4)
next_node = search_node->next;
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
the_node->previous = search_node;
search_node->next = the_node;
4a2c2: 208b movel %a3,%a0@
next_node->previous = the_node;
the_thread->Wait.queue = the_thread_queue;
4a2c4: 274c 0044 movel %a4,%a3@(68)
_ISR_Enable( level );
4a2c8: 46c3 movew %d3,%sr
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
4a2ca: 7001 moveq #1,%d0
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
4a2cc: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
4a2d0: 4e5e unlk %fp
4a2d2: 4e75 rts
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
_ISR_Enable( level );
4a2d4: 46c3 movew %d3,%sr
if ( _Thread_queue_Is_reverse_search( priority ) )
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
4a2d6: 2005 movel %d5,%d0
4a2d8: 40c3 movew %sr,%d3
4a2da: 8083 orl %d3,%d0
4a2dc: 46c0 movew %d0,%sr
4a2de: 2803 movel %d3,%d4
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
4a2e0: 2052 moveal %a2@,%a0
search_thread = (Thread_Control *) _Chain_First( header );
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
4a2e2: bc88 cmpl %a0,%d6
4a2e4: 6600 ff44 bnew 4a22a <_Thread_queue_Enqueue_priority+0x5e>
4a2e8: 6000 0086 braw 4a370 <_Thread_queue_Enqueue_priority+0x1a4>
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
_ISR_Enable( level );
4a2ec: 46c3 movew %d3,%sr
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
4a2ee: 2005 movel %d5,%d0
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
4a2f0: 1c39 0005 e19c moveb 5e19c <rtems_maximum_priority>,%d6
_ISR_Disable( level );
4a2f6: 40c3 movew %sr,%d3
4a2f8: 8083 orl %d3,%d0
4a2fa: 46c0 movew %d0,%sr
4a2fc: 2803 movel %d3,%d4
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Last(
Chain_Control *the_chain
)
{
return _Chain_Tail( the_chain )->previous;
4a2fe: 206a 0008 moveal %a2@(8),%a0
search_thread = (Thread_Control *) _Chain_Last( header );
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
4a302: b5c8 cmpal %a0,%a2
4a304: 6600 ff7e bnew 4a284 <_Thread_queue_Enqueue_priority+0xb8>
4a308: 604c bras 4a356 <_Thread_queue_Enqueue_priority+0x18a>
if ( the_thread_queue->sync_state !=
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
4a30a: 42ac 0030 clrl %a4@(48)
if ( priority == search_priority )
4a30e: b3c1 cmpal %d1,%a1
4a310: 6720 beqs 4a332 <_Thread_queue_Enqueue_priority+0x166>
goto equal_priority;
search_node = (Chain_Node *) search_thread;
previous_node = search_node->previous;
4a312: 2268 0004 moveal %a0@(4),%a1
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
4a316: 2688 movel %a0,%a3@
the_node->previous = previous_node;
4a318: 2749 0004 movel %a1,%a3@(4)
previous_node->next = the_node;
4a31c: 228b movel %a3,%a1@
search_node->previous = the_node;
4a31e: 214b 0004 movel %a3,%a0@(4)
the_thread->Wait.queue = the_thread_queue;
4a322: 274c 0044 movel %a4,%a3@(68)
_ISR_Enable( level );
4a326: 46c3 movew %d3,%sr
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
4a328: 7001 moveq #1,%d0
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
4a32a: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
4a32e: 4e5e unlk %fp
4a330: 4e75 rts
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
equal_priority: /* add at end of priority group */
search_node = _Chain_Tail( &search_thread->Wait.Block2n );
previous_node = search_node->previous;
4a332: 2268 0040 moveal %a0@(64),%a1
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
equal_priority: /* add at end of priority group */
search_node = _Chain_Tail( &search_thread->Wait.Block2n );
4a336: 45e8 003c lea %a0@(60),%a2
previous_node = search_node->previous;
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
the_node->previous = previous_node;
4a33a: 2749 0004 movel %a1,%a3@(4)
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
equal_priority: /* add at end of priority group */
search_node = _Chain_Tail( &search_thread->Wait.Block2n );
4a33e: 268a movel %a2,%a3@
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
the_node->previous = previous_node;
previous_node->next = the_node;
search_node->previous = the_node;
4a340: 214b 0040 movel %a3,%a0@(64)
previous_node = search_node->previous;
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
the_node->previous = previous_node;
previous_node->next = the_node;
4a344: 228b movel %a3,%a1@
search_node->previous = the_node;
the_thread->Wait.queue = the_thread_queue;
4a346: 274c 0044 movel %a4,%a3@(68)
_ISR_Enable( level );
4a34a: 46c4 movew %d4,%sr
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
4a34c: 7001 moveq #1,%d0
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
4a34e: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
4a352: 4e5e unlk %fp
4a354: 4e75 rts
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
}
if ( the_thread_queue->sync_state !=
4a356: 202c 0030 movel %a4@(48),%d0
4a35a: 7401 moveq #1,%d2
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
4a35c: 0286 0000 00ff andil #255,%d6
4a362: 2246 moveal %d6,%a1
4a364: 5289 addql #1,%a1
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
}
if ( the_thread_queue->sync_state !=
4a366: b480 cmpl %d0,%d2
4a368: 6600 feec bnew 4a256 <_Thread_queue_Enqueue_priority+0x8a>
4a36c: 6000 ff40 braw 4a2ae <_Thread_queue_Enqueue_priority+0xe2>
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
4a370: 202c 0030 movel %a4@(48),%d0
if ( _Thread_queue_Is_reverse_search( priority ) )
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
4a374: 327c ffff moveaw #-1,%a1
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
4a378: 7401 moveq #1,%d2
4a37a: b480 cmpl %d0,%d2
4a37c: 6600 fed8 bnew 4a256 <_Thread_queue_Enqueue_priority+0x8a>
4a380: 6088 bras 4a30a <_Thread_queue_Enqueue_priority+0x13e>
...
0004e030 <_Thread_queue_Extract_fifo>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
4e030: 203c 0000 0700 movel #1792,%d0
void _Thread_queue_Extract_fifo(
Thread_queue_Control *the_thread_queue __attribute__((unused)),
Thread_Control *the_thread
)
{
4e036: 4e56 0000 linkw %fp,#0
4e03a: 2f0a movel %a2,%sp@-
4e03c: 246e 000c moveal %fp@(12),%a2
ISR_Level level;
_ISR_Disable( level );
4e040: 40c1 movew %sr,%d1
4e042: 8081 orl %d1,%d0
4e044: 46c0 movew %d0,%sr
4e046: 202a 0010 movel %a2@(16),%d0
4e04a: 0280 0003 bee0 andil #245472,%d0
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4e050: 6734 beqs 4e086 <_Thread_queue_Extract_fifo+0x56>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4e052: 2252 moveal %a2@,%a1
_Chain_Extract_unprotected( &the_thread->Object.Node );
the_thread->Wait.queue = NULL;
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4e054: 7002 moveq #2,%d0
previous = the_node->previous;
4e056: 206a 0004 moveal %a2@(4),%a0
next->previous = previous;
4e05a: 2348 0004 movel %a0,%a1@(4)
previous->next = next;
4e05e: 2089 movel %a1,%a0@
return;
}
_Chain_Extract_unprotected( &the_thread->Object.Node );
the_thread->Wait.queue = NULL;
4e060: 42aa 0044 clrl %a2@(68)
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4e064: b0aa 0050 cmpl %a2@(80),%d0
4e068: 6726 beqs 4e090 <_Thread_queue_Extract_fifo+0x60>
_ISR_Enable( level );
4e06a: 46c1 movew %d1,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4e06c: 2d4a 0008 movel %a2,%fp@(8)
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4e070: 246e fffc moveal %fp@(-4),%a2
4e074: 203c 1007 fff8 movel #268959736,%d0
4e07a: 2d40 000c movel %d0,%fp@(12)
4e07e: 4e5e unlk %fp
4e080: 4ef9 0004 9844 jmp 49844 <_Thread_Clear_state>
ISR_Level level;
_ISR_Disable( level );
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
_ISR_Enable( level );
4e086: 46c1 movew %d1,%sr
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4e088: 246e fffc moveal %fp@(-4),%a2
4e08c: 4e5e unlk %fp
4e08e: 4e75 rts
4e090: 7003 moveq #3,%d0
4e092: 2540 0050 movel %d0,%a2@(80)
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4e096: 46c1 movew %d1,%sr
(void) _Watchdog_Remove( &the_thread->Timer );
4e098: 486a 0048 pea %a2@(72)
4e09c: 4eb9 0004 a9d4 jsr 4a9d4 <_Watchdog_Remove>
4e0a2: 588f addql #4,%sp
4e0a4: 203c 1007 fff8 movel #268959736,%d0
4e0aa: 2d4a 0008 movel %a2,%fp@(8)
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4e0ae: 246e fffc moveal %fp@(-4),%a2
4e0b2: 2d40 000c movel %d0,%fp@(12)
4e0b6: 4e5e unlk %fp
4e0b8: 4ef9 0004 9844 jmp 49844 <_Thread_Clear_state>
...
0004cb94 <_Thread_queue_Extract_priority_helper>:
Chain_Node *new_first_node;
Chain_Node *new_second_node;
Chain_Node *last_node;
the_node = (Chain_Node *) the_thread;
_ISR_Disable( level );
4cb94: 203c 0000 0700 movel #1792,%d0
void _Thread_queue_Extract_priority_helper(
Thread_queue_Control *the_thread_queue __attribute__((unused)),
Thread_Control *the_thread,
bool requeuing
)
{
4cb9a: 4e56 ffec linkw %fp,#-20
4cb9e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
4cba2: 246e 000c moveal %fp@(12),%a2
4cba6: 142e 0013 moveb %fp@(19),%d2
Chain_Node *new_first_node;
Chain_Node *new_second_node;
Chain_Node *last_node;
the_node = (Chain_Node *) the_thread;
_ISR_Disable( level );
4cbaa: 40c1 movew %sr,%d1
4cbac: 8081 orl %d1,%d0
4cbae: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (
States_Control the_states
)
{
return (the_states & STATES_WAITING_ON_THREAD_QUEUE);
4cbb0: 202a 0010 movel %a2@(16),%d0
4cbb4: 0280 0003 bee0 andil #245472,%d0
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4cbba: 6772 beqs 4cc2e <_Thread_queue_Extract_priority_helper+0x9a>
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4cbbc: 200a movel %a2,%d0
4cbbe: 0680 0000 003c addil #60,%d0
/*
* The thread was actually waiting on a thread queue so let's remove it.
*/
next_node = the_node->next;
4cbc4: 2252 moveal %a2@,%a1
previous_node = the_node->previous;
4cbc6: 266a 0004 moveal %a2@(4),%a3
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4cbca: 206a 0038 moveal %a2@(56),%a0
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
4cbce: b088 cmpl %a0,%d0
4cbd0: 6768 beqs 4cc3a <_Thread_queue_Extract_priority_helper+0xa6>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Last(
Chain_Control *the_chain
)
{
return _Chain_Tail( the_chain )->previous;
4cbd2: 286a 0040 moveal %a2@(64),%a4
new_first_node = _Chain_First( &the_thread->Wait.Block2n );
new_first_thread = (Thread_Control *) new_first_node;
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
4cbd6: 2a50 moveal %a0@,%a5
previous_node->next = new_first_node;
next_node->previous = new_first_node;
4cbd8: 2348 0004 movel %a0,%a1@(4)
new_first_node = _Chain_First( &the_thread->Wait.Block2n );
new_first_thread = (Thread_Control *) new_first_node;
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
previous_node->next = new_first_node;
4cbdc: 2688 movel %a0,%a3@
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
4cbde: 214b 0004 movel %a3,%a0@(4)
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
4cbe2: 202a 0040 movel %a2@(64),%d0
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
previous_node->next = new_first_node;
next_node->previous = new_first_node;
new_first_node->next = next_node;
4cbe6: 2089 movel %a1,%a0@
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
4cbe8: b0aa 0038 cmpl %a2@(56),%d0
4cbec: 6716 beqs 4cc04 <_Thread_queue_Extract_priority_helper+0x70>
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
4cbee: 214d 0038 movel %a5,%a0@(56)
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
4cbf2: 43e8 003c lea %a0@(60),%a1
4cbf6: 2889 movel %a1,%a4@
new_first_node->next = next_node;
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
4cbf8: 43e8 0038 lea %a0@(56),%a1
4cbfc: 2b49 0004 movel %a1,%a5@(4)
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
tail->previous = last_node;
4cc00: 214c 0040 movel %a4,%a0@(64)
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4cc04: 4a02 tstb %d2
4cc06: 6626 bnes 4cc2e <_Thread_queue_Extract_priority_helper+0x9a>
_ISR_Enable( level );
return;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4cc08: 7002 moveq #2,%d0
4cc0a: b0aa 0050 cmpl %a2@(80),%d0
4cc0e: 6736 beqs 4cc46 <_Thread_queue_Extract_priority_helper+0xb2>
_ISR_Enable( level );
4cc10: 46c1 movew %d1,%sr
4cc12: 2d4a 0008 movel %a2,%fp@(8)
4cc16: 227c 1007 fff8 moveal #268959736,%a1
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4cc1c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
4cc22: 2d49 000c movel %a1,%fp@(12)
4cc26: 4e5e unlk %fp
4cc28: 4ef9 0004 9844 jmp 49844 <_Thread_Clear_state>
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
_ISR_Enable( level );
4cc2e: 46c1 movew %d1,%sr
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4cc30: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
4cc36: 4e5e unlk %fp
4cc38: 4e75 rts
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
4cc3a: 2689 movel %a1,%a3@
next_node->previous = previous_node;
4cc3c: 234b 0004 movel %a3,%a1@(4)
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4cc40: 4a02 tstb %d2
4cc42: 67c4 beqs 4cc08 <_Thread_queue_Extract_priority_helper+0x74>
4cc44: 60e8 bras 4cc2e <_Thread_queue_Extract_priority_helper+0x9a>
4cc46: 7003 moveq #3,%d0
4cc48: 2540 0050 movel %d0,%a2@(80)
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4cc4c: 46c1 movew %d1,%sr
(void) _Watchdog_Remove( &the_thread->Timer );
4cc4e: 486a 0048 pea %a2@(72)
4cc52: 4eb9 0004 a9d4 jsr 4a9d4 <_Watchdog_Remove>
4cc58: 588f addql #4,%sp
4cc5a: 227c 1007 fff8 moveal #268959736,%a1
4cc60: 2d4a 0008 movel %a2,%fp@(8)
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4cc64: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
4cc6a: 2d49 000c movel %a1,%fp@(12)
4cc6e: 4e5e unlk %fp
4cc70: 4ef9 0004 9844 jmp 49844 <_Thread_Clear_state>
...
0004a3f0 <_Thread_queue_Initialize>:
the_thread_queue->state = state;
the_thread_queue->discipline = the_discipline;
the_thread_queue->timeout_status = timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
4a3f0: 7201 moveq #1,%d1
Thread_queue_Control *the_thread_queue,
Thread_queue_Disciplines the_discipline,
States_Control state,
uint32_t timeout_status
)
{
4a3f2: 4e56 0000 linkw %fp,#0
4a3f6: 206e 0008 moveal %fp@(8),%a0
4a3fa: 2f02 movel %d2,%sp@-
4a3fc: 202e 000c movel %fp@(12),%d0
the_thread_queue->state = state;
4a400: 216e 0010 0038 movel %fp@(16),%a0@(56)
the_thread_queue->discipline = the_discipline;
the_thread_queue->timeout_status = timeout_status;
4a406: 216e 0014 003c movel %fp@(20),%a0@(60)
States_Control state,
uint32_t timeout_status
)
{
the_thread_queue->state = state;
the_thread_queue->discipline = the_discipline;
4a40c: 2140 0034 movel %d0,%a0@(52)
the_thread_queue->timeout_status = timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
4a410: 42a8 0030 clrl %a0@(48)
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
4a414: b280 cmpl %d0,%d1
4a416: 6714 beqs 4a42c <_Thread_queue_Initialize+0x3c>
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4a418: 2008 movel %a0,%d0
4a41a: 5880 addql #4,%d0
head->next = tail;
head->previous = NULL;
4a41c: 42a8 0004 clrl %a0@(4)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4a420: 2080 movel %d0,%a0@
head->next = tail;
head->previous = NULL;
tail->previous = head;
4a422: 2148 0008 movel %a0,%a0@(8)
_Chain_Initialize_empty( &the_thread_queue->Queues.Priority[index] );
} else { /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Chain_Initialize_empty( &the_thread_queue->Queues.Fifo );
}
}
4a426: 241f movel %sp@+,%d2
4a428: 4e5e unlk %fp
4a42a: 4e75 rts
the_thread_queue->state = state;
the_thread_queue->discipline = the_discipline;
the_thread_queue->timeout_status = timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
4a42c: 4280 clrl %d0
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
_Chain_Initialize_empty( &the_thread_queue->Queues.Priority[index] );
4a42e: 2400 movel %d0,%d2
4a430: 2200 movel %d0,%d1
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
4a432: 5280 addql #1,%d0
_Chain_Initialize_empty( &the_thread_queue->Queues.Priority[index] );
4a434: e58a lsll #2,%d2
4a436: e989 lsll #4,%d1
4a438: 9282 subl %d2,%d1
4a43a: 43f0 1800 lea %a0@(00000000,%d1:l),%a1
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4a43e: 2209 movel %a1,%d1
4a440: 5881 addql #4,%d1
4a442: 2281 movel %d1,%a1@
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
4a444: 7204 moveq #4,%d1
head->next = tail;
head->previous = NULL;
4a446: 42a9 0004 clrl %a1@(4)
tail->previous = head;
4a44a: 2349 0008 movel %a1,%a1@(8)
4a44e: b280 cmpl %d0,%d1
4a450: 67d4 beqs 4a426 <_Thread_queue_Initialize+0x36> <== NEVER TAKEN
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
_Chain_Initialize_empty( &the_thread_queue->Queues.Priority[index] );
4a452: 2400 movel %d0,%d2
4a454: 2200 movel %d0,%d1
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
4a456: 5280 addql #1,%d0
_Chain_Initialize_empty( &the_thread_queue->Queues.Priority[index] );
4a458: e58a lsll #2,%d2
4a45a: e989 lsll #4,%d1
4a45c: 9282 subl %d2,%d1
4a45e: 43f0 1800 lea %a0@(00000000,%d1:l),%a1
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4a462: 2209 movel %a1,%d1
4a464: 5881 addql #4,%d1
4a466: 2281 movel %d1,%a1@
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
4a468: 7204 moveq #4,%d1
head->next = tail;
head->previous = NULL;
4a46a: 42a9 0004 clrl %a1@(4)
tail->previous = head;
4a46e: 2349 0008 movel %a1,%a1@(8)
4a472: b280 cmpl %d0,%d1
4a474: 66b8 bnes 4a42e <_Thread_queue_Initialize+0x3e>
4a476: 60ae bras 4a426 <_Thread_queue_Initialize+0x36>
0004cc78 <_Thread_queue_Process_timeout>:
#include <rtems/score/tqdata.h>
void _Thread_queue_Process_timeout(
Thread_Control *the_thread
)
{
4cc78: 4e56 0000 linkw %fp,#0
4cc7c: 206e 0008 moveal %fp@(8),%a0
Thread_queue_Control *the_thread_queue = the_thread->Wait.queue;
4cc80: 2268 0044 moveal %a0@(68),%a1
* If it is not satisfied, then it is "nothing happened" and
* this is the "timeout" transition. After a request is satisfied,
* a timeout is not allowed to occur.
*/
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
4cc84: 2029 0030 movel %a1@(48),%d0
4cc88: 6708 beqs 4cc92 <_Thread_queue_Process_timeout+0x1a>
4cc8a: b1f9 0005 fb7e cmpal 5fb7e <_Per_CPU_Information+0xe>,%a0
4cc90: 6716 beqs 4cca8 <_Thread_queue_Process_timeout+0x30><== ALWAYS TAKEN
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
}
} else {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
4cc92: 2169 003c 0034 movel %a1@(60),%a0@(52)
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
4cc98: 2f08 movel %a0,%sp@-
4cc9a: 2f09 movel %a1,%sp@-
4cc9c: 4eb9 0004 cb5c jsr 4cb5c <_Thread_queue_Extract>
4cca2: 508f addql #8,%sp
}
}
4cca4: 4e5e unlk %fp
4cca6: 4e75 rts
* a timeout is not allowed to occur.
*/
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
_Thread_Is_executing( the_thread ) ) {
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
4cca8: 7203 moveq #3,%d1
4ccaa: b280 cmpl %d0,%d1
4ccac: 67f6 beqs 4cca4 <_Thread_queue_Process_timeout+0x2c>
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4ccae: 7002 moveq #2,%d0
}
} else {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
}
}
4ccb0: 4e5e unlk %fp
*/
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
_Thread_Is_executing( the_thread ) ) {
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
4ccb2: 2169 003c 0034 movel %a1@(60),%a0@(52)
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4ccb8: 2340 0030 movel %d0,%a1@(48)
}
} else {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
}
}
...
0004a478 <_Thread_queue_Requeue>:
void _Thread_queue_Requeue(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
4a478: 4e56 fffc linkw %fp,#-4
4a47c: 2f0a movel %a2,%sp@-
4a47e: 246e 0008 moveal %fp@(8),%a2
4a482: 2f02 movel %d2,%sp@-
/*
* Just in case the thread really wasn't blocked on a thread queue
* when we get here.
*/
if ( !the_thread_queue )
4a484: 4a8a tstl %a2
4a486: 6708 beqs 4a490 <_Thread_queue_Requeue+0x18> <== NEVER TAKEN
/*
* If queueing by FIFO, there is nothing to do. This only applies to
* priority blocking discipline.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
4a488: 7001 moveq #1,%d0
4a48a: b0aa 0034 cmpl %a2@(52),%d0
4a48e: 670c beqs 4a49c <_Thread_queue_Requeue+0x24> <== ALWAYS TAKEN
_Thread_queue_Extract_priority_helper( tq, the_thread, true );
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
}
_ISR_Enable( level );
}
}
4a490: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4a494: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4a498: 4e5e unlk %fp <== NOT EXECUTED
4a49a: 4e75 rts <== NOT EXECUTED
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
Thread_queue_Control *tq = the_thread_queue;
ISR_Level level;
ISR_Level level_ignored;
_ISR_Disable( level );
4a49c: 303c 0700 movew #1792,%d0
4a4a0: 40c2 movew %sr,%d2
4a4a2: 8082 orl %d2,%d0
4a4a4: 46c0 movew %d0,%sr
4a4a6: 206e 000c moveal %fp@(12),%a0
4a4aa: 2028 0010 movel %a0@(16),%d0
4a4ae: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4a4b4: 660e bnes 4a4c4 <_Thread_queue_Requeue+0x4c> <== ALWAYS TAKEN
_Thread_queue_Enter_critical_section( tq );
_Thread_queue_Extract_priority_helper( tq, the_thread, true );
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
}
_ISR_Enable( level );
4a4b6: 46c2 movew %d2,%sr <== NOT EXECUTED
}
}
4a4b8: 242e fff4 movel %fp@(-12),%d2
4a4bc: 246e fff8 moveal %fp@(-8),%a2
4a4c0: 4e5e unlk %fp
4a4c2: 4e75 rts
ISR_Level level_ignored;
_ISR_Disable( level );
if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
_Thread_queue_Enter_critical_section( tq );
_Thread_queue_Extract_priority_helper( tq, the_thread, true );
4a4c4: 4878 0001 pea 1 <ADD>
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
4a4c8: 7001 moveq #1,%d0
4a4ca: 2f08 movel %a0,%sp@-
4a4cc: 2540 0030 movel %d0,%a2@(48)
4a4d0: 2f0a movel %a2,%sp@-
4a4d2: 4eb9 0004 cb94 jsr 4cb94 <_Thread_queue_Extract_priority_helper>
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
4a4d8: 486e fffc pea %fp@(-4)
4a4dc: 2f2e 000c movel %fp@(12),%sp@-
4a4e0: 2f0a movel %a2,%sp@-
4a4e2: 4eb9 0004 a1cc jsr 4a1cc <_Thread_queue_Enqueue_priority>
4a4e8: 4fef 0018 lea %sp@(24),%sp
}
_ISR_Enable( level );
4a4ec: 46c2 movew %d2,%sr
4a4ee: 60c8 bras 4a4b8 <_Thread_queue_Requeue+0x40>
0004a4f0 <_Thread_queue_Timeout>:
void _Thread_queue_Timeout(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
4a4f0: 4e56 fffc linkw %fp,#-4
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
4a4f4: 486e fffc pea %fp@(-4)
4a4f8: 2f2e 0008 movel %fp@(8),%sp@-
4a4fc: 4eb9 0004 9c64 jsr 49c64 <_Thread_Get>
switch ( location ) {
4a502: 508f addql #8,%sp
4a504: 4aae fffc tstl %fp@(-4)
4a508: 6618 bnes 4a522 <_Thread_queue_Timeout+0x32> <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_queue_Process_timeout( the_thread );
4a50a: 2f00 movel %d0,%sp@-
4a50c: 4eb9 0004 cc78 jsr 4cc78 <_Thread_queue_Process_timeout>
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
--level;
_Thread_Dispatch_disable_level = level;
4a512: 588f addql #4,%sp
*
* This routine decrements the thread dispatch level.
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
4a514: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
--level;
4a51a: 5380 subql #1,%d0
_Thread_Dispatch_disable_level = level;
4a51c: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
_Thread_Unnest_dispatch();
break;
}
}
4a522: 4e5e unlk %fp
...
00057cc4 <_Timer_server_Body>:
* @a arg points to the corresponding timer server control block.
*/
static rtems_task _Timer_server_Body(
rtems_task_argument arg
)
{
57cc4: 4e56 ffb0 linkw %fp,#-80
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
tail->previous = head;
57cc8: 41ee ffe8 lea %fp@(-24),%a0
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
57ccc: 200e movel %fp,%d0
57cce: 5180 subql #8,%d0
57cd0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
57cd4: 246e 0008 moveal %fp@(8),%a2
57cd8: 2a0e movel %fp,%d5
57cda: 2c0e movel %fp,%d6
57cdc: 0685 ffff fff4 addil #-12,%d5
57ce2: 0686 ffff ffec addil #-20,%d6
57ce8: 260a movel %a2,%d3
57cea: 240a movel %a2,%d2
57cec: 4bf9 0005 bf6c lea 5bf6c <_Watchdog_Adjust_to_chain>,%a5
57cf2: 0683 0000 0030 addil #48,%d3
57cf8: 0682 0000 0068 addil #104,%d2
57cfe: 47f9 0005 878c lea 5878c <_Chain_Get>,%a3
57d04: 49f9 0005 bff8 lea 5bff8 <_Watchdog_Insert>,%a4
* of zero it will be processed in the next iteration of the timer server
* body loop.
*/
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
57d0a: 283c 0000 0700 movel #1792,%d4
head->previous = NULL;
tail->previous = head;
57d10: 2d48 fff0 movel %a0,%fp@(-16)
57d14: 41ea 0008 lea %a2@(8),%a0
57d18: 2d48 ffe0 movel %a0,%fp@(-32)
57d1c: 41ea 0040 lea %a2@(64),%a0
57d20: 2d48 ffe4 movel %a0,%fp@(-28)
{
/*
* Afterwards all timer inserts are directed to this chain and the interval
* and TOD chains will be no more modified by other parties.
*/
ts->insert_chain = insert_chain;
57d24: 41ee ffe8 lea %fp@(-24),%a0
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
57d28: 2d40 fff4 movel %d0,%fp@(-12)
head->previous = NULL;
57d2c: 42ae ffec clrl %fp@(-20)
57d30: 42ae fff8 clrl %fp@(-8)
tail->previous = head;
57d34: 2d45 fffc movel %d5,%fp@(-4)
57d38: 2d40 ffd8 movel %d0,%fp@(-40)
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
57d3c: 2d46 ffe8 movel %d6,%fp@(-24)
57d40: 2548 0078 movel %a0,%a2@(120)
static void _Timer_server_Process_interval_watchdogs(
Timer_server_Watchdogs *watchdogs,
Chain_Control *fire_chain
)
{
Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;
57d44: 2039 0007 c3e6 movel 7c3e6 <_Watchdog_Ticks_since_boot>,%d0
/*
* We assume adequate unsigned arithmetic here.
*/
Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;
57d4a: 222a 003c movel %a2@(60),%d1
watchdogs->last_snapshot = snapshot;
57d4e: 2540 003c movel %d0,%a2@(60)
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
57d52: 9081 subl %d1,%d0
57d54: 2f05 movel %d5,%sp@-
57d56: 2f00 movel %d0,%sp@-
57d58: 2f03 movel %d3,%sp@-
57d5a: 4e95 jsr %a5@
57d5c: 2f3c 3b9a ca00 movel #1000000000,%sp@-
57d62: 42a7 clrl %sp@-
57d64: 2f39 0007 c2a8 movel 7c2a8 <_TOD+0x4>,%sp@-
57d6a: 2f39 0007 c2a4 movel 7c2a4 <_TOD>,%sp@-
57d70: 4eb9 0006 c3c0 jsr 6c3c0 <__divdi3>
Timer_server_Watchdogs *watchdogs,
Chain_Control *fire_chain
)
{
Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
Watchdog_Interval last_snapshot = watchdogs->last_snapshot;
57d76: 202a 0074 movel %a2@(116),%d0
/*
* Process the seconds chain. Start by checking that the Time
* of Day (TOD) has not been set backwards. If it has then
* we want to adjust the watchdogs->Chain to indicate this.
*/
if ( snapshot > last_snapshot ) {
57d7a: 4fef 001c lea %sp@(28),%sp
57d7e: b081 cmpl %d1,%d0
57d80: 6500 009a bcsw 57e1c <_Timer_server_Body+0x158>
* TOD has been set forward.
*/
delta = snapshot - last_snapshot;
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
} else if ( snapshot < last_snapshot ) {
57d84: b081 cmpl %d1,%d0
57d86: 6200 00b8 bhiw 57e40 <_Timer_server_Body+0x17c>
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
}
watchdogs->last_snapshot = snapshot;
57d8a: 2541 0074 movel %d1,%a2@(116)
}
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{
while ( true ) {
Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
57d8e: 202a 0078 movel %a2@(120),%d0
57d92: 2f00 movel %d0,%sp@-
57d94: 4e93 jsr %a3@
if ( timer == NULL ) {
57d96: 588f addql #4,%sp
57d98: 4a80 tstl %d0
57d9a: 672e beqs 57dca <_Timer_server_Body+0x106>
static void _Timer_server_Insert_timer(
Timer_server_Control *ts,
Timer_Control *timer
)
{
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
57d9c: 2040 moveal %d0,%a0
57d9e: 7e01 moveq #1,%d7
57da0: 2228 0038 movel %a0@(56),%d1
57da4: be81 cmpl %d1,%d7
57da6: 6700 00bc beqw 57e64 <_Timer_server_Body+0x1a0>
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
57daa: 7e03 moveq #3,%d7
57dac: be81 cmpl %d1,%d7
57dae: 66de bnes 57d8e <_Timer_server_Body+0xca> <== NEVER TAKEN
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
57db0: 2040 moveal %d0,%a0
57db2: 4868 0010 pea %a0@(16)
57db6: 2f02 movel %d2,%sp@-
57db8: 4e94 jsr %a4@
}
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{
while ( true ) {
Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
57dba: 202a 0078 movel %a2@(120),%d0
)
{
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
57dbe: 508f addql #8,%sp
}
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{
while ( true ) {
Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
57dc0: 2f00 movel %d0,%sp@-
57dc2: 4e93 jsr %a3@
if ( timer == NULL ) {
57dc4: 588f addql #4,%sp
57dc6: 4a80 tstl %d0
57dc8: 66d2 bnes 57d9c <_Timer_server_Body+0xd8> <== NEVER TAKEN
* of zero it will be processed in the next iteration of the timer server
* body loop.
*/
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
57dca: 2004 movel %d4,%d0
57dcc: 40c1 movew %sr,%d1
57dce: 8081 orl %d1,%d0
57dd0: 46c0 movew %d0,%sr
if ( _Chain_Is_empty( insert_chain ) ) {
57dd2: bcae ffe8 cmpl %fp@(-24),%d6
57dd6: 6700 009a beqw 57e72 <_Timer_server_Body+0x1ae>
ts->insert_chain = NULL;
_ISR_Enable( level );
break;
} else {
_ISR_Enable( level );
57dda: 46c1 movew %d1,%sr <== NOT EXECUTED
static void _Timer_server_Process_interval_watchdogs(
Timer_server_Watchdogs *watchdogs,
Chain_Control *fire_chain
)
{
Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;
57ddc: 2039 0007 c3e6 movel 7c3e6 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
/*
* We assume adequate unsigned arithmetic here.
*/
Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;
57de2: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED
watchdogs->last_snapshot = snapshot;
57de6: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
57dea: 9081 subl %d1,%d0 <== NOT EXECUTED
57dec: 2f05 movel %d5,%sp@- <== NOT EXECUTED
57dee: 2f00 movel %d0,%sp@- <== NOT EXECUTED
57df0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
57df2: 4e95 jsr %a5@ <== NOT EXECUTED
57df4: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
57dfa: 42a7 clrl %sp@- <== NOT EXECUTED
57dfc: 2f39 0007 c2a8 movel 7c2a8 <_TOD+0x4>,%sp@- <== NOT EXECUTED
57e02: 2f39 0007 c2a4 movel 7c2a4 <_TOD>,%sp@- <== NOT EXECUTED
57e08: 4eb9 0006 c3c0 jsr 6c3c0 <__divdi3> <== NOT EXECUTED
Timer_server_Watchdogs *watchdogs,
Chain_Control *fire_chain
)
{
Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
Watchdog_Interval last_snapshot = watchdogs->last_snapshot;
57e0e: 202a 0074 movel %a2@(116),%d0 <== NOT EXECUTED
/*
* Process the seconds chain. Start by checking that the Time
* of Day (TOD) has not been set backwards. If it has then
* we want to adjust the watchdogs->Chain to indicate this.
*/
if ( snapshot > last_snapshot ) {
57e12: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
57e16: b081 cmpl %d1,%d0 <== NOT EXECUTED
57e18: 6400 ff6a bccw 57d84 <_Timer_server_Body+0xc0> <== NOT EXECUTED
/*
* This path is for normal forward movement and cases where the
* TOD has been set forward.
*/
delta = snapshot - last_snapshot;
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
57e1c: 2f05 movel %d5,%sp@-
57e1e: 2e01 movel %d1,%d7
57e20: 9e80 subl %d0,%d7
57e22: 2f07 movel %d7,%sp@-
57e24: 2d41 ffdc movel %d1,%fp@(-36)
57e28: 2f02 movel %d2,%sp@-
57e2a: 4eb9 0005 bf6c jsr 5bf6c <_Watchdog_Adjust_to_chain>
57e30: 222e ffdc movel %fp@(-36),%d1
57e34: 4fef 000c lea %sp@(12),%sp
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
}
watchdogs->last_snapshot = snapshot;
57e38: 2541 0074 movel %d1,%a2@(116)
57e3c: 6000 ff50 braw 57d8e <_Timer_server_Body+0xca>
/*
* The current TOD is before the last TOD which indicates that
* TOD has been set backwards.
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
57e40: 9081 subl %d1,%d0
57e42: 2f00 movel %d0,%sp@-
57e44: 4878 0001 pea 1 <ADD>
57e48: 2d41 ffdc movel %d1,%fp@(-36)
57e4c: 2f02 movel %d2,%sp@-
57e4e: 4eb9 0005 bed8 jsr 5bed8 <_Watchdog_Adjust>
57e54: 222e ffdc movel %fp@(-36),%d1
57e58: 4fef 000c lea %sp@(12),%sp
}
watchdogs->last_snapshot = snapshot;
57e5c: 2541 0074 movel %d1,%a2@(116)
57e60: 6000 ff2c braw 57d8e <_Timer_server_Body+0xca>
Timer_server_Control *ts,
Timer_Control *timer
)
{
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
57e64: 4868 0010 pea %a0@(16)
57e68: 2f03 movel %d3,%sp@-
57e6a: 4e94 jsr %a4@
57e6c: 508f addql #8,%sp
57e6e: 6000 ff1e braw 57d8e <_Timer_server_Body+0xca>
*/
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
if ( _Chain_Is_empty( insert_chain ) ) {
ts->insert_chain = NULL;
57e72: 42aa 0078 clrl %a2@(120)
_ISR_Enable( level );
57e76: 46c1 movew %d1,%sr
_Chain_Initialize_empty( &fire_chain );
while ( true ) {
_Timer_server_Get_watchdogs_that_fire_now( ts, &insert_chain, &fire_chain );
if ( !_Chain_Is_empty( &fire_chain ) ) {
57e78: 2e2e ffd8 movel %fp@(-40),%d7
57e7c: beae fff4 cmpl %fp@(-12),%d7
57e80: 6758 beqs 57eda <_Timer_server_Body+0x216>
/*
* It is essential that interrupts are disable here since an interrupt
* service routine may remove a watchdog from the chain.
*/
_ISR_Disable( level );
57e82: 2004 movel %d4,%d0
57e84: 40c1 movew %sr,%d1
57e86: 8081 orl %d1,%d0
57e88: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
57e8a: 206e fff4 moveal %fp@(-12),%a0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
57e8e: be88 cmpl %a0,%d7
57e90: 673a beqs 57ecc <_Timer_server_Body+0x208> <== NEVER TAKEN
57e92: 2e0a movel %a2,%d7
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
57e94: 2250 moveal %a0@,%a1
head->next = new_first;
new_first->previous = head;
57e96: 45ee fff4 lea %fp@(-12),%a2
57e9a: 234a 0004 movel %a2,%a1@(4)
watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
if ( watchdog != NULL ) {
watchdog->state = WATCHDOG_INACTIVE;
57e9e: 42a8 0008 clrl %a0@(8)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
57ea2: 2d49 fff4 movel %a1,%fp@(-12)
_ISR_Enable( level );
57ea6: 46c1 movew %d1,%sr
/*
* The timer server may block here and wait for resources or time.
* The system watchdogs are inactive and will remain inactive since
* the active flag of the timer server is true.
*/
(*watchdog->routine)( watchdog->id, watchdog->user_data );
57ea8: 2f28 0024 movel %a0@(36),%sp@-
57eac: 2f28 0020 movel %a0@(32),%sp@-
57eb0: 2068 001c moveal %a0@(28),%a0
57eb4: 4e90 jsr %a0@
/*
* It is essential that interrupts are disable here since an interrupt
* service routine may remove a watchdog from the chain.
*/
_ISR_Disable( level );
57eb6: 2004 movel %d4,%d0
57eb8: 40c1 movew %sr,%d1
57eba: 8081 orl %d1,%d0
57ebc: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
57ebe: 508f addql #8,%sp
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
57ec0: 206e fff4 moveal %fp@(-12),%a0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
57ec4: b1ee ffd8 cmpal %fp@(-40),%a0
57ec8: 66ca bnes 57e94 <_Timer_server_Body+0x1d0>
57eca: 2447 moveal %d7,%a2
watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
if ( watchdog != NULL ) {
watchdog->state = WATCHDOG_INACTIVE;
_ISR_Enable( level );
} else {
_ISR_Enable( level );
57ecc: 46c1 movew %d1,%sr
{
/*
* Afterwards all timer inserts are directed to this chain and the interval
* and TOD chains will be no more modified by other parties.
*/
ts->insert_chain = insert_chain;
57ece: 41ee ffe8 lea %fp@(-24),%a0
57ed2: 2548 0078 movel %a0,%a2@(120)
57ed6: 6000 fe6c braw 57d44 <_Timer_server_Body+0x80>
* the active flag of the timer server is true.
*/
(*watchdog->routine)( watchdog->id, watchdog->user_data );
}
} else {
ts->active = false;
57eda: 4200 clrb %d0
57edc: 1540 007c moveb %d0,%a2@(124)
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
57ee0: 2039 0007 c302 movel 7c302 <_Thread_Dispatch_disable_level>,%d0
++level;
57ee6: 5280 addql #1,%d0
_Thread_Dispatch_disable_level = level;
57ee8: 23c0 0007 c302 movel %d0,7c302 <_Thread_Dispatch_disable_level>
/*
* Block until there is something to do.
*/
_Thread_Disable_dispatch();
_Thread_Set_state( ts->thread, STATES_DELAYING );
57eee: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
57ef2: 2f12 movel %a2@,%sp@-
_Timer_server_Reset_interval_system_watchdog( ts );
_Timer_server_Reset_tod_system_watchdog( ts );
_Thread_Enable_dispatch();
ts->active = true;
57ef4: 7e01 moveq #1,%d7
/*
* Block until there is something to do.
*/
_Thread_Disable_dispatch();
_Thread_Set_state( ts->thread, STATES_DELAYING );
57ef6: 4eb9 0005 bb74 jsr 5bb74 <_Thread_Set_state>
_Timer_server_Reset_interval_system_watchdog( ts );
57efc: 2f0a movel %a2,%sp@-
57efe: 4eba fb7c jsr %pc@(57a7c <_Timer_server_Reset_interval_system_watchdog>)
_Timer_server_Reset_tod_system_watchdog( ts );
57f02: 2f0a movel %a2,%sp@-
57f04: 4eba fbe0 jsr %pc@(57ae6 <_Timer_server_Reset_tod_system_watchdog>)
_Thread_Enable_dispatch();
57f08: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
ts->active = true;
57f0e: 1547 007c moveb %d7,%a2@(124)
static void _Timer_server_Stop_interval_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );
57f12: 2f2e ffe0 movel %fp@(-32),%sp@-
57f16: 4eb9 0005 c128 jsr 5c128 <_Watchdog_Remove>
static void _Timer_server_Stop_tod_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );
57f1c: 2f2e ffe4 movel %fp@(-28),%sp@-
57f20: 4eb9 0005 c128 jsr 5c128 <_Watchdog_Remove>
57f26: 4fef 0018 lea %sp@(24),%sp
{
/*
* Afterwards all timer inserts are directed to this chain and the interval
* and TOD chains will be no more modified by other parties.
*/
ts->insert_chain = insert_chain;
57f2a: 41ee ffe8 lea %fp@(-24),%a0
57f2e: 2548 0078 movel %a0,%a2@(120)
57f32: 6000 fe10 braw 57d44 <_Timer_server_Body+0x80>
00057b54 <_Timer_server_Schedule_operation_method>:
static void _Timer_server_Schedule_operation_method(
Timer_server_Control *ts,
Timer_Control *timer
)
{
57b54: 4e56 fff0 linkw %fp,#-16
57b58: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
57b5c: 246e 0008 moveal %fp@(8),%a2
57b60: 266e 000c moveal %fp@(12),%a3
if ( ts->insert_chain == NULL ) {
57b64: 202a 0078 movel %a2@(120),%d0
57b68: 671a beqs 57b84 <_Timer_server_Schedule_operation_method+0x30>
* server is not preemptible, so we must be in interrupt context here. No
* thread dispatch will happen until the timer server finishes its
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
57b6a: 246a 0078 moveal %a2@(120),%a2
57b6e: 2d4b 000c movel %a3,%fp@(12)
57b72: 2d4a 0008 movel %a2,%fp@(8)
}
}
57b76: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
57b7c: 4e5e unlk %fp
* server is not preemptible, so we must be in interrupt context here. No
* thread dispatch will happen until the timer server finishes its
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
57b7e: 4ef9 0005 8754 jmp 58754 <_Chain_Append>
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
57b84: 2039 0007 c302 movel 7c302 <_Thread_Dispatch_disable_level>,%d0
++level;
57b8a: 5280 addql #1,%d0
_Thread_Dispatch_disable_level = level;
57b8c: 23c0 0007 c302 movel %d0,7c302 <_Thread_Dispatch_disable_level>
* being inserted. This could result in an integer overflow.
*/
_Thread_Disable_dispatch();
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
57b92: 202b 0038 movel %a3@(56),%d0
57b96: 7201 moveq #1,%d1
57b98: b280 cmpl %d0,%d1
57b9a: 6700 009e beqw 57c3a <_Timer_server_Schedule_operation_method+0xe6>
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
if ( !ts->active ) {
_Timer_server_Reset_interval_system_watchdog( ts );
}
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
57b9e: 7603 moveq #3,%d3
57ba0: b680 cmpl %d0,%d3
57ba2: 670e beqs 57bb2 <_Timer_server_Schedule_operation_method+0x5e>
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
}
}
57ba4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
57baa: 4e5e unlk %fp
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
57bac: 4ef9 0005 b1e8 jmp 5b1e8 <_Thread_Enable_dispatch>
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
/*
* We have to advance the last known seconds value of the server and update
* the watchdog chain accordingly.
*/
_ISR_Disable( level );
57bb2: 203c 0000 0700 movel #1792,%d0
57bb8: 40c2 movew %sr,%d2
57bba: 8082 orl %d2,%d0
57bbc: 46c0 movew %d0,%sr
57bbe: 2f3c 3b9a ca00 movel #1000000000,%sp@-
57bc4: 42a7 clrl %sp@-
57bc6: 2f39 0007 c2a8 movel 7c2a8 <_TOD+0x4>,%sp@-
57bcc: 2f39 0007 c2a4 movel 7c2a4 <_TOD>,%sp@-
57bd2: 4eb9 0006 c3c0 jsr 6c3c0 <__divdi3>
snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
last_snapshot = ts->TOD_watchdogs.last_snapshot;
57bd8: 202a 0074 movel %a2@(116),%d0
57bdc: 4fef 0010 lea %sp@(16),%sp
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
57be0: 43ea 006c lea %a2@(108),%a1
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
57be4: 206a 0068 moveal %a2@(104),%a0
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
57be8: b3c8 cmpal %a0,%a1
57bea: 671c beqs 57c08 <_Timer_server_Schedule_operation_method+0xb4>
first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );
delta_interval = first_watchdog->delta_interval;
57bec: 2268 0010 moveal %a0@(16),%a1
if ( snapshot > last_snapshot ) {
57bf0: b081 cmpl %d1,%d0
57bf2: 6400 00ba bccw 57cae <_Timer_server_Schedule_operation_method+0x15a>
/*
* We advanced in time.
*/
delta = snapshot - last_snapshot;
57bf6: 2601 movel %d1,%d3
57bf8: 9680 subl %d0,%d3
if (delta_interval > delta) {
57bfa: b689 cmpl %a1,%d3
57bfc: 6400 00bc bccw 57cba <_Timer_server_Schedule_operation_method+0x166>
delta_interval -= delta;
57c00: 93c3 subal %d3,%a1
57c02: 2009 movel %a1,%d0
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
delta_interval += delta;
}
first_watchdog->delta_interval = delta_interval;
57c04: 2140 0010 movel %d0,%a0@(16)
}
ts->TOD_watchdogs.last_snapshot = snapshot;
57c08: 2541 0074 movel %d1,%a2@(116)
_ISR_Enable( level );
57c0c: 46c2 movew %d2,%sr
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
57c0e: 486b 0010 pea %a3@(16)
57c12: 486a 0068 pea %a2@(104)
57c16: 4eb9 0005 bff8 jsr 5bff8 <_Watchdog_Insert>
if ( !ts->active ) {
57c1c: 508f addql #8,%sp
57c1e: 102a 007c moveb %a2@(124),%d0
57c22: 6680 bnes 57ba4 <_Timer_server_Schedule_operation_method+0x50><== NEVER TAKEN
_Timer_server_Reset_tod_system_watchdog( ts );
57c24: 2f0a movel %a2,%sp@-
57c26: 4eba febe jsr %pc@(57ae6 <_Timer_server_Reset_tod_system_watchdog>)
57c2a: 588f addql #4,%sp
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
}
}
57c2c: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
57c32: 4e5e unlk %fp
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
57c34: 4ef9 0005 b1e8 jmp 5b1e8 <_Thread_Enable_dispatch>
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
/*
* We have to advance the last known ticks value of the server and update
* the watchdog chain accordingly.
*/
_ISR_Disable( level );
57c3a: 203c 0000 0700 movel #1792,%d0
57c40: 40c2 movew %sr,%d2
57c42: 8082 orl %d2,%d0
57c44: 46c0 movew %d0,%sr
snapshot = _Watchdog_Ticks_since_boot;
57c46: 2039 0007 c3e6 movel 7c3e6 <_Watchdog_Ticks_since_boot>,%d0
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
57c4c: 220a movel %a2,%d1
57c4e: 0681 0000 0034 addil #52,%d1
last_snapshot = ts->Interval_watchdogs.last_snapshot;
57c54: 262a 003c movel %a2@(60),%d3
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
57c58: 206a 0030 moveal %a2@(48),%a0
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
57c5c: b288 cmpl %a0,%d1
57c5e: 6712 beqs 57c72 <_Timer_server_Schedule_operation_method+0x11e>
first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain );
/*
* We assume adequate unsigned arithmetic here.
*/
delta = snapshot - last_snapshot;
57c60: 2200 movel %d0,%d1
57c62: 9283 subl %d3,%d1
delta_interval = first_watchdog->delta_interval;
57c64: 2268 0010 moveal %a0@(16),%a1
if (delta_interval > delta) {
57c68: b3c1 cmpal %d1,%a1
57c6a: 633a blss 57ca6 <_Timer_server_Schedule_operation_method+0x152>
delta_interval -= delta;
57c6c: 93c1 subal %d1,%a1
} else {
delta_interval = 0;
}
first_watchdog->delta_interval = delta_interval;
57c6e: 2149 0010 movel %a1,%a0@(16)
}
ts->Interval_watchdogs.last_snapshot = snapshot;
57c72: 2540 003c movel %d0,%a2@(60)
_ISR_Enable( level );
57c76: 46c2 movew %d2,%sr
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
57c78: 486b 0010 pea %a3@(16)
57c7c: 486a 0030 pea %a2@(48)
57c80: 4eb9 0005 bff8 jsr 5bff8 <_Watchdog_Insert>
if ( !ts->active ) {
57c86: 508f addql #8,%sp
57c88: 102a 007c moveb %a2@(124),%d0
57c8c: 6600 ff16 bnew 57ba4 <_Timer_server_Schedule_operation_method+0x50>
_Timer_server_Reset_interval_system_watchdog( ts );
57c90: 2f0a movel %a2,%sp@-
57c92: 4eba fde8 jsr %pc@(57a7c <_Timer_server_Reset_interval_system_watchdog>)
57c96: 588f addql #4,%sp
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
}
}
57c98: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
57c9e: 4e5e unlk %fp
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
57ca0: 4ef9 0005 b1e8 jmp 5b1e8 <_Thread_Enable_dispatch>
delta_interval = first_watchdog->delta_interval;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
57ca6: 93c9 subal %a1,%a1
}
first_watchdog->delta_interval = delta_interval;
57ca8: 2149 0010 movel %a1,%a0@(16)
57cac: 60c4 bras 57c72 <_Timer_server_Schedule_operation_method+0x11e>
}
} else {
/*
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
57cae: d089 addl %a1,%d0
delta_interval += delta;
57cb0: 9081 subl %d1,%d0
}
first_watchdog->delta_interval = delta_interval;
57cb2: 2140 0010 movel %d0,%a0@(16)
57cb6: 6000 ff50 braw 57c08 <_Timer_server_Schedule_operation_method+0xb4>
*/
delta = snapshot - last_snapshot;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
57cba: 4280 clrl %d0 <== NOT EXECUTED
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
delta_interval += delta;
}
first_watchdog->delta_interval = delta_interval;
57cbc: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
57cc0: 6000 ff46 braw 57c08 <_Timer_server_Schedule_operation_method+0xb4><== NOT EXECUTED
0004ac84 <_Timespec_Add_to>:
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
4ac84: 4e56 0000 linkw %fp,#0
4ac88: 226e 000c moveal %fp@(12),%a1
4ac8c: 2f0a movel %a2,%sp@-
4ac8e: 246e 0008 moveal %fp@(8),%a2
uint32_t seconds = add->tv_sec;
/* Add the basics */
time->tv_sec += add->tv_sec;
time->tv_nsec += add->tv_nsec;
4ac92: 206a 0004 moveal %a2@(4),%a0
4ac96: d1e9 0004 addal %a1@(4),%a0
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
4ac9a: 2208 movel %a0,%d1
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
uint32_t seconds = add->tv_sec;
4ac9c: 2011 movel %a1@,%d0
/* Add the basics */
time->tv_sec += add->tv_sec;
4ac9e: d192 addl %d0,%a2@
time->tv_nsec += add->tv_nsec;
4aca0: 2548 0004 movel %a0,%a2@(4)
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
4aca4: b1fc 3b9a c9ff cmpal #999999999,%a0
4acaa: 6320 blss 4accc <_Timespec_Add_to+0x48>
4acac: 2052 moveal %a2@,%a0
4acae: 5288 addql #1,%a0
#include <sys/types.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
#include <rtems/score/watchdog.h>
uint32_t _Timespec_Add_to(
4acb0: 91c0 subal %d0,%a0
4acb2: 43f0 0800 lea %a0@(00000000,%d0:l),%a1
time->tv_sec += add->tv_sec;
time->tv_nsec += add->tv_nsec;
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND;
4acb6: 0681 c465 3600 addil #-1000000000,%d1
time->tv_sec++;
seconds++;
4acbc: 5280 addql #1,%d0
/* Add the basics */
time->tv_sec += add->tv_sec;
time->tv_nsec += add->tv_nsec;
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
4acbe: 0c81 3b9a c9ff cmpil #999999999,%d1
4acc4: 62ec bhis 4acb2 <_Timespec_Add_to+0x2e> <== NEVER TAKEN
4acc6: 2541 0004 movel %d1,%a2@(4)
4acca: 2489 movel %a1,%a2@
time->tv_sec++;
seconds++;
}
return seconds;
}
4accc: 245f moveal %sp@+,%a2
4acce: 4e5e unlk %fp
...
0004bfe0 <_Timestamp64_Divide>:
const Timestamp64_Control *_lhs,
const Timestamp64_Control *_rhs,
uint32_t *_ival_percentage,
uint32_t *_fval_percentage
)
{
4bfe0: 4e56 fff4 linkw %fp,#-12
Timestamp64_Control answer;
if ( *_rhs == 0 ) {
4bfe4: 206e 000c moveal %fp@(12),%a0
const Timestamp64_Control *_lhs,
const Timestamp64_Control *_rhs,
uint32_t *_ival_percentage,
uint32_t *_fval_percentage
)
{
4bfe8: 48d7 040c moveml %d2-%d3/%a2,%sp@
Timestamp64_Control answer;
if ( *_rhs == 0 ) {
4bfec: 2410 movel %a0@,%d2
4bfee: 2628 0004 movel %a0@(4),%d3
4bff2: 2002 movel %d2,%d0
4bff4: 8083 orl %d3,%d0
4bff6: 676e beqs 4c066 <_Timestamp64_Divide+0x86> <== NEVER TAKEN
* This looks odd but gives the results the proper precision.
*
* TODO: Rounding on the last digit of the fval.
*/
answer = (*_lhs * 100000) / *_rhs;
4bff8: 206e 0008 moveal %fp@(8),%a0
4bffc: 45f9 0005 c83c lea 5c83c <__divdi3>,%a2
4c002: 2f3c 0001 86a0 movel #100000,%sp@-
4c008: 42a7 clrl %sp@-
4c00a: 2f28 0004 movel %a0@(4),%sp@-
4c00e: 2f10 movel %a0@,%sp@-
4c010: 4eb9 0005 c7d4 jsr 5c7d4 <__muldi3>
4c016: 4fef 000c lea %sp@(12),%sp
4c01a: 2e83 movel %d3,%sp@
4c01c: 2f02 movel %d2,%sp@-
4c01e: 2f01 movel %d1,%sp@-
4c020: 2f00 movel %d0,%sp@-
4c022: 4e92 jsr %a2@
4c024: 4fef 0010 lea %sp@(16),%sp
4c028: 2400 movel %d0,%d2
*_ival_percentage = answer / 1000;
4c02a: 4878 03e8 pea 3e8 <DBL_MANT_DIG+0x3b3>
* This looks odd but gives the results the proper precision.
*
* TODO: Rounding on the last digit of the fval.
*/
answer = (*_lhs * 100000) / *_rhs;
4c02e: 2601 movel %d1,%d3
*_ival_percentage = answer / 1000;
4c030: 42a7 clrl %sp@-
4c032: 2f01 movel %d1,%sp@-
4c034: 2f02 movel %d2,%sp@-
4c036: 4e92 jsr %a2@
4c038: 4fef 0010 lea %sp@(16),%sp
*_fval_percentage = answer % 1000;
4c03c: 4878 03e8 pea 3e8 <DBL_MANT_DIG+0x3b3>
* TODO: Rounding on the last digit of the fval.
*/
answer = (*_lhs * 100000) / *_rhs;
*_ival_percentage = answer / 1000;
4c040: 206e 0010 moveal %fp@(16),%a0
*_fval_percentage = answer % 1000;
4c044: 42a7 clrl %sp@-
* TODO: Rounding on the last digit of the fval.
*/
answer = (*_lhs * 100000) / *_rhs;
*_ival_percentage = answer / 1000;
4c046: 2081 movel %d1,%a0@
*_fval_percentage = answer % 1000;
4c048: 2f03 movel %d3,%sp@-
4c04a: 2f02 movel %d2,%sp@-
4c04c: 4eb9 0005 cc9c jsr 5cc9c <__moddi3>
4c052: 206e 0014 moveal %fp@(20),%a0
4c056: 4fef 0010 lea %sp@(16),%sp
}
4c05a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
*/
answer = (*_lhs * 100000) / *_rhs;
*_ival_percentage = answer / 1000;
*_fval_percentage = answer % 1000;
4c060: 2081 movel %d1,%a0@
}
4c062: 4e5e unlk %fp
4c064: 4e75 rts
)
{
Timestamp64_Control answer;
if ( *_rhs == 0 ) {
*_ival_percentage = 0;
4c066: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
4c06a: 4290 clrl %a0@ <== NOT EXECUTED
*_fval_percentage = 0;
4c06c: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
answer = (*_lhs * 100000) / *_rhs;
*_ival_percentage = answer / 1000;
*_fval_percentage = answer % 1000;
}
4c070: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
{
Timestamp64_Control answer;
if ( *_rhs == 0 ) {
*_ival_percentage = 0;
*_fval_percentage = 0;
4c076: 4290 clrl %a0@ <== NOT EXECUTED
answer = (*_lhs * 100000) / *_rhs;
*_ival_percentage = answer / 1000;
*_fval_percentage = answer % 1000;
}
4c078: 4e5e unlk %fp <== NOT EXECUTED
0004a86c <_User_extensions_Handler_initialization>:
void _User_extensions_Handler_initialization(void)
{
4a86c: 4e56 fffc linkw %fp,#-4
uint32_t number_of_initial_extensions =
4a870: 2039 0005 c614 movel 5c614 <Configuration+0x40>,%d0
rtems_configuration_get_number_of_initial_extensions();
if ( number_of_initial_extensions > 0 ) {
4a876: 6604 bnes 4a87c <_User_extensions_Handler_initialization+0x10><== ALWAYS TAKEN
);
User_extensions_Switch_context ctx = { initial_extension_switch_controls };
_User_extensions_Iterate( &ctx, _User_extensions_Switch_visitor );
}
}
4a878: 4e5e unlk %fp <== NOT EXECUTED
4a87a: 4e75 rts <== NOT EXECUTED
uint32_t number_of_initial_extensions =
rtems_configuration_get_number_of_initial_extensions();
if ( number_of_initial_extensions > 0 ) {
User_extensions_Switch_control *initial_extension_switch_controls =
_Workspace_Allocate_or_fatal_error(
4a87c: 2200 movel %d0,%d1
4a87e: e988 lsll #4,%d0
4a880: e589 lsll #2,%d1
{
uint32_t number_of_initial_extensions =
rtems_configuration_get_number_of_initial_extensions();
if ( number_of_initial_extensions > 0 ) {
User_extensions_Switch_control *initial_extension_switch_controls =
4a882: 9081 subl %d1,%d0
4a884: 2f00 movel %d0,%sp@-
4a886: 4eb9 0004 ac2a jsr 4ac2a <_Workspace_Allocate_or_fatal_error>
_Workspace_Allocate_or_fatal_error(
number_of_initial_extensions
* sizeof( *initial_extension_switch_controls )
);
User_extensions_Switch_context ctx = { initial_extension_switch_controls };
4a88c: 204e moveal %fp,%a0
4a88e: 2100 movel %d0,%a0@-
_User_extensions_Iterate( &ctx, _User_extensions_Switch_visitor );
4a890: 487a ff9a pea %pc@(4a82c <_User_extensions_Switch_visitor>)
4a894: 2f08 movel %a0,%sp@-
4a896: 4eb9 0004 a7b8 jsr 4a7b8 <_User_extensions_Iterate>
4a89c: 4fef 000c lea %sp@(12),%sp
}
}
4a8a0: 4e5e unlk %fp <== NOT EXECUTED
0004a7b8 <_User_extensions_Iterate>:
void _User_extensions_Iterate(
void *arg,
User_extensions_Visitor visitor
)
{
4a7b8: 4e56 ffec linkw %fp,#-20
Thread_Control *executing = _Thread_Executing;
const User_extensions_Table *callouts_current =
rtems_configuration_get_user_extension_table();
const User_extensions_Table *callouts_end =
callouts_current + rtems_configuration_get_number_of_initial_extensions();
4a7bc: 2039 0005 c614 movel 5c614 <Configuration+0x40>,%d0
void _User_extensions_Iterate(
void *arg,
User_extensions_Visitor visitor
)
{
4a7c2: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
Thread_Control *executing = _Thread_Executing;
const User_extensions_Table *callouts_current =
rtems_configuration_get_user_extension_table();
const User_extensions_Table *callouts_end =
callouts_current + rtems_configuration_get_number_of_initial_extensions();
4a7c6: eb88 lsll #5,%d0
void *arg,
User_extensions_Visitor visitor
)
{
Thread_Control *executing = _Thread_Executing;
const User_extensions_Table *callouts_current =
4a7c8: 2439 0005 c618 movel 5c618 <Configuration+0x44>,%d2
rtems_configuration_get_user_extension_table();
const User_extensions_Table *callouts_end =
4a7ce: 2442 moveal %d2,%a2
4a7d0: d5c0 addal %d0,%a2
void _User_extensions_Iterate(
void *arg,
User_extensions_Visitor visitor
)
{
4a7d2: 282e 0008 movel %fp@(8),%d4
4a7d6: 266e 000c moveal %fp@(12),%a3
Thread_Control *executing = _Thread_Executing;
4a7da: 2639 0005 fb7e movel 5fb7e <_Per_CPU_Information+0xe>,%d3
const User_extensions_Table *callouts_end =
callouts_current + rtems_configuration_get_number_of_initial_extensions();
const Chain_Node *node;
const Chain_Node *tail;
while ( callouts_current != callouts_end ) {
4a7e0: b5c2 cmpal %d2,%a2
4a7e2: 6716 beqs 4a7fa <_User_extensions_Iterate+0x42> <== NEVER TAKEN
(*visitor)( executing, arg, callouts_current );
4a7e4: 2f02 movel %d2,%sp@-
++callouts_current;
4a7e6: 0682 0000 0020 addil #32,%d2
callouts_current + rtems_configuration_get_number_of_initial_extensions();
const Chain_Node *node;
const Chain_Node *tail;
while ( callouts_current != callouts_end ) {
(*visitor)( executing, arg, callouts_current );
4a7ec: 2f04 movel %d4,%sp@-
4a7ee: 2f03 movel %d3,%sp@-
4a7f0: 4e93 jsr %a3@
const User_extensions_Table *callouts_end =
callouts_current + rtems_configuration_get_number_of_initial_extensions();
const Chain_Node *node;
const Chain_Node *tail;
while ( callouts_current != callouts_end ) {
4a7f2: 4fef 000c lea %sp@(12),%sp
4a7f6: b48a cmpl %a2,%d2
4a7f8: 66ea bnes 4a7e4 <_User_extensions_Iterate+0x2c>
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4a7fa: 2479 0005 e33c moveal 5e33c <_User_extensions_List>,%a2
++callouts_current;
}
node = _Chain_Immutable_first( &_User_extensions_List );
tail = _Chain_Immutable_tail( &_User_extensions_List );
while ( node != tail ) {
4a800: b5fc 0005 e340 cmpal #385856,%a2
4a806: 6718 beqs 4a820 <_User_extensions_Iterate+0x68>
const User_extensions_Control *extension =
(const User_extensions_Control *) node;
(*visitor)( executing, arg, &extension->Callouts );
4a808: 486a 0014 pea %a2@(20)
4a80c: 2f04 movel %d4,%sp@-
4a80e: 2f03 movel %d3,%sp@-
4a810: 4e93 jsr %a3@
node = _Chain_Immutable_next( node );
}
}
4a812: 2452 moveal %a2@,%a2
++callouts_current;
}
node = _Chain_Immutable_first( &_User_extensions_List );
tail = _Chain_Immutable_tail( &_User_extensions_List );
while ( node != tail ) {
4a814: 4fef 000c lea %sp@(12),%sp
4a818: b5fc 0005 e340 cmpal #385856,%a2
4a81e: 66e8 bnes 4a808 <_User_extensions_Iterate+0x50>
(*visitor)( executing, arg, &extension->Callouts );
node = _Chain_Immutable_next( node );
}
}
4a820: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4a826: 4e5e unlk %fp
...
0004c28c <_Watchdog_Adjust>:
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4c28c: 4e56 ffe8 linkw %fp,#-24
4c290: 226e 000c moveal %fp@(12),%a1
4c294: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
ISR_Level level;
_ISR_Disable( level );
4c298: 263c 0000 0700 movel #1792,%d3
4c29e: 2003 movel %d3,%d0
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4c2a0: 266e 0008 moveal %fp@(8),%a3
4c2a4: 242e 0010 movel %fp@(16),%d2
ISR_Level level;
_ISR_Disable( level );
4c2a8: 40c1 movew %sr,%d1
4c2aa: 8081 orl %d1,%d0
4c2ac: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4c2ae: 244b moveal %a3,%a2
4c2b0: 205a moveal %a2@+,%a0
* hence the compiler must not assume *header to remain
* unmodified across that call.
*
* Till Straumann, 7/2003
*/
if ( !_Chain_Is_empty( header ) ) {
4c2b2: b5c8 cmpal %a0,%a2
4c2b4: 6746 beqs 4c2fc <_Watchdog_Adjust+0x70>
switch ( direction ) {
4c2b6: 4a89 tstl %a1
4c2b8: 664e bnes 4c308 <_Watchdog_Adjust+0x7c>
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4c2ba: 4a82 tstl %d2
4c2bc: 673e beqs 4c2fc <_Watchdog_Adjust+0x70> <== NEVER TAKEN
if ( units < _Watchdog_First( header )->delta_interval ) {
4c2be: 2028 0010 movel %a0@(16),%d0
4c2c2: b082 cmpl %d2,%d0
4c2c4: 6230 bhis 4c2f6 <_Watchdog_Adjust+0x6a> <== NEVER TAKEN
4c2c6: 49f9 0004 c4f0 lea 4c4f0 <_Watchdog_Tickle>,%a4
_Watchdog_First( header )->delta_interval -= units;
break;
} else {
units -= _Watchdog_First( header )->delta_interval;
_Watchdog_First( header )->delta_interval = 1;
4c2cc: 7801 moveq #1,%d4
while ( units ) {
if ( units < _Watchdog_First( header )->delta_interval ) {
_Watchdog_First( header )->delta_interval -= units;
break;
} else {
units -= _Watchdog_First( header )->delta_interval;
4c2ce: 9480 subl %d0,%d2
_Watchdog_First( header )->delta_interval = 1;
4c2d0: 2144 0010 movel %d4,%a0@(16)
_ISR_Enable( level );
4c2d4: 46c1 movew %d1,%sr
_Watchdog_Tickle( header );
4c2d6: 2f0b movel %a3,%sp@-
4c2d8: 4e94 jsr %a4@
_ISR_Disable( level );
4c2da: 2003 movel %d3,%d0
4c2dc: 40c1 movew %sr,%d1
4c2de: 8081 orl %d1,%d0
4c2e0: 46c0 movew %d0,%sr
if ( _Chain_Is_empty( header ) )
4c2e2: 588f addql #4,%sp
4c2e4: 2053 moveal %a3@,%a0
4c2e6: b1ca cmpal %a2,%a0
4c2e8: 6712 beqs 4c2fc <_Watchdog_Adjust+0x70>
switch ( direction ) {
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4c2ea: 4a82 tstl %d2
4c2ec: 670e beqs 4c2fc <_Watchdog_Adjust+0x70> <== NEVER TAKEN
if ( units < _Watchdog_First( header )->delta_interval ) {
4c2ee: 2028 0010 movel %a0@(16),%d0
4c2f2: b480 cmpl %d0,%d2
4c2f4: 64d6 bccs 4c2cc <_Watchdog_Adjust+0x40>
_Watchdog_First( header )->delta_interval -= units;
4c2f6: 9082 subl %d2,%d0
4c2f8: 2140 0010 movel %d0,%a0@(16)
}
break;
}
}
_ISR_Enable( level );
4c2fc: 46c1 movew %d1,%sr
}
4c2fe: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
4c304: 4e5e unlk %fp
4c306: 4e75 rts
* unmodified across that call.
*
* Till Straumann, 7/2003
*/
if ( !_Chain_Is_empty( header ) ) {
switch ( direction ) {
4c308: 7001 moveq #1,%d0
4c30a: b089 cmpl %a1,%d0
4c30c: 66ee bnes 4c2fc <_Watchdog_Adjust+0x70> <== NEVER TAKEN
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
4c30e: d5a8 0010 addl %d2,%a0@(16)
}
break;
}
}
_ISR_Enable( level );
4c312: 46c1 movew %d1,%sr
}
4c314: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
4c31a: 4e5e unlk %fp
...
0005bf6c <_Watchdog_Adjust_to_chain>:
Chain_Control *header,
Watchdog_Interval units_arg,
Chain_Control *to_fire
)
{
5bf6c: 4e56 ffe4 linkw %fp,#-28
5bf70: 226e 0010 moveal %fp@(16),%a1
5bf74: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
Watchdog_Interval units = units_arg;
ISR_Level level;
Watchdog_Control *first;
_ISR_Disable( level );
5bf78: 263c 0000 0700 movel #1792,%d3
5bf7e: 2003 movel %d3,%d0
Chain_Control *header,
Watchdog_Interval units_arg,
Chain_Control *to_fire
)
{
5bf80: 242e 0008 movel %fp@(8),%d2
Watchdog_Interval units = units_arg;
ISR_Level level;
Watchdog_Control *first;
_ISR_Disable( level );
5bf84: 40c1 movew %sr,%d1
5bf86: 8081 orl %d1,%d0
5bf88: 46c0 movew %d0,%sr
5bf8a: 2a42 moveal %d2,%a5
Watchdog_Interval units_arg,
Chain_Control *to_fire
)
{
Watchdog_Interval units = units_arg;
5bf8c: 282e 000c movel %fp@(12),%d4
5bf90: 205d moveal %a5@+,%a0
Watchdog_Control *first;
_ISR_Disable( level );
while ( 1 ) {
if ( _Chain_Is_empty( header ) ) {
5bf92: b1cd cmpal %a5,%a0
5bf94: 6748 beqs 5bfde <_Watchdog_Adjust_to_chain+0x72>
/*
* If it is longer than "units" until the first element on the chain
* fires, then bump it and quit.
*/
if ( units < first->delta_interval ) {
5bf96: 2028 0010 movel %a0@(16),%d0
5bf9a: b084 cmpl %d4,%d0
5bf9c: 624a bhis 5bfe8 <_Watchdog_Adjust_to_chain+0x7c>
/*
* The first set happens in less than units, so take all of them
* off the chain and adjust units to reflect this.
*/
units -= first->delta_interval;
5bf9e: 9880 subl %d0,%d4
first->delta_interval = 0;
5bfa0: 42a8 0010 clrl %a0@(16)
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
5bfa4: 2850 moveal %a0@,%a4
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
5bfa6: 2009 movel %a1,%d0
5bfa8: 5880 addql #4,%d0
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
5bfaa: 2668 0004 moveal %a0@(4),%a3
next->previous = previous;
5bfae: 294b 0004 movel %a3,%a4@(4)
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
5bfb2: 2469 0008 moveal %a1@(8),%a2
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
previous->next = next;
5bfb6: 268c movel %a4,%a3@
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
5bfb8: 2348 0008 movel %a0,%a1@(8)
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
5bfbc: 2080 movel %d0,%a0@
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
5bfbe: 214a 0004 movel %a2,%a0@(4)
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
5bfc2: 2488 movel %a0,%a2@
while ( 1 ) {
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
5bfc4: 2003 movel %d3,%d0
5bfc6: 46c1 movew %d1,%sr
5bfc8: 8081 orl %d1,%d0
5bfca: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
5bfcc: 2442 moveal %d2,%a2
5bfce: 2052 moveal %a2@,%a0
if ( _Chain_Is_empty( header ) )
5bfd0: b1cd cmpal %a5,%a0
5bfd2: 67be beqs 5bf92 <_Watchdog_Adjust_to_chain+0x26>
break;
first = _Watchdog_First( header );
if ( first->delta_interval != 0 )
5bfd4: 4aa8 0010 tstl %a0@(16)
5bfd8: 67ca beqs 5bfa4 <_Watchdog_Adjust_to_chain+0x38>
Watchdog_Control *first;
_ISR_Disable( level );
while ( 1 ) {
if ( _Chain_Is_empty( header ) ) {
5bfda: b1cd cmpal %a5,%a0
5bfdc: 66b8 bnes 5bf96 <_Watchdog_Adjust_to_chain+0x2a> <== ALWAYS TAKEN
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5bfde: 46c1 movew %d1,%sr
}
5bfe0: 4cd7 3c1c moveml %sp@,%d2-%d4/%a2-%a5
5bfe4: 4e5e unlk %fp
5bfe6: 4e75 rts
/*
* If it is longer than "units" until the first element on the chain
* fires, then bump it and quit.
*/
if ( units < first->delta_interval ) {
first->delta_interval -= units;
5bfe8: 9084 subl %d4,%d0
5bfea: 2140 0010 movel %d0,%a0@(16)
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5bfee: 46c1 movew %d1,%sr
}
5bff0: 4cd7 3c1c moveml %sp@,%d2-%d4/%a2-%a5
5bff4: 4e5e unlk %fp <== NOT EXECUTED
0004a8a4 <_Watchdog_Insert>:
void _Watchdog_Insert(
Chain_Control *header,
Watchdog_Control *the_watchdog
)
{
4a8a4: 4e56 fff0 linkw %fp,#-16
4a8a8: 226e 000c moveal %fp@(12),%a1
4a8ac: 48d7 041c moveml %d2-%d4/%a2,%sp@
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
_ISR_Disable( level );
4a8b0: 283c 0000 0700 movel #1792,%d4
4a8b6: 2004 movel %d4,%d0
Watchdog_Control *after;
uint32_t insert_isr_nest_level;
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
4a8b8: 2639 0005 fb78 movel 5fb78 <_Per_CPU_Information+0x8>,%d3
_ISR_Disable( level );
4a8be: 40c2 movew %sr,%d2
4a8c0: 8082 orl %d2,%d0
4a8c2: 46c0 movew %d0,%sr
/*
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
4a8c4: 4aa9 0008 tstl %a1@(8)
4a8c8: 6600 009c bnew 4a966 <_Watchdog_Insert+0xc2>
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
_Watchdog_Sync_count++;
4a8cc: 2039 0005 fae6 movel 5fae6 <_Watchdog_Sync_count>,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
4a8d2: 7201 moveq #1,%d1
_Watchdog_Sync_count++;
4a8d4: 5280 addql #1,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
4a8d6: 2341 0008 movel %d1,%a1@(8)
_Watchdog_Sync_count++;
4a8da: 23c0 0005 fae6 movel %d0,5fae6 <_Watchdog_Sync_count>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
4a8e0: 246e 0008 moveal %fp@(8),%a2
restart:
delta_interval = the_watchdog->initial;
4a8e4: 2029 000c movel %a1@(12),%d0
4a8e8: 2052 moveal %a2@,%a0
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
4a8ea: 6740 beqs 4a92c <_Watchdog_Insert+0x88>
4a8ec: 4a90 tstl %a0@
4a8ee: 673c beqs 4a92c <_Watchdog_Insert+0x88>
break;
if ( delta_interval < after->delta_interval ) {
4a8f0: 2228 0010 movel %a0@(16),%d1
4a8f4: b280 cmpl %d0,%d1
4a8f6: 622e bhis 4a926 <_Watchdog_Insert+0x82>
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
4a8f8: 9081 subl %d1,%d0
_ISR_Flash( level );
4a8fa: 2204 movel %d4,%d1
4a8fc: 46c2 movew %d2,%sr
4a8fe: 8282 orl %d2,%d1
4a900: 46c1 movew %d1,%sr
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
4a902: 7201 moveq #1,%d1
4a904: b2a9 0008 cmpl %a1@(8),%d1
4a908: 6648 bnes 4a952 <_Watchdog_Insert+0xae>
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
4a90a: 2239 0005 fa8e movel 5fa8e <_Watchdog_Sync_level>,%d1
4a910: b283 cmpl %d3,%d1
4a912: 625c bhis 4a970 <_Watchdog_Insert+0xcc>
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
4a914: 2050 moveal %a0@,%a0
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
4a916: 4a80 tstl %d0
4a918: 6712 beqs 4a92c <_Watchdog_Insert+0x88>
4a91a: 4a90 tstl %a0@
4a91c: 670e beqs 4a92c <_Watchdog_Insert+0x88>
break;
if ( delta_interval < after->delta_interval ) {
4a91e: 2228 0010 movel %a0@(16),%d1
4a922: b081 cmpl %d1,%d0
4a924: 64d2 bccs 4a8f8 <_Watchdog_Insert+0x54>
after->delta_interval -= delta_interval;
4a926: 9280 subl %d0,%d1
4a928: 2141 0010 movel %d1,%a0@(16)
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
4a92c: 2068 0004 moveal %a0@(4),%a0
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_ACTIVE;
4a930: 7202 moveq #2,%d1
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4a932: 2450 moveal %a0@,%a2
}
}
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
4a934: 2340 0010 movel %d0,%a1@(16)
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
the_watchdog->start_time = _Watchdog_Ticks_since_boot;
4a938: 2039 0005 faea movel 5faea <_Watchdog_Ticks_since_boot>,%d0
4a93e: 2341 0008 movel %d1,%a1@(8)
4a942: 2340 0014 movel %d0,%a1@(20)
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4a946: 2348 0004 movel %a0,%a1@(4)
before_node = after_node->next;
after_node->next = the_node;
4a94a: 2089 movel %a1,%a0@
the_node->next = before_node;
before_node->previous = the_node;
4a94c: 2549 0004 movel %a1,%a2@(4)
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
4a950: 228a movel %a2,%a1@
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
4a952: 23c3 0005 fa8e movel %d3,5fa8e <_Watchdog_Sync_level>
_Watchdog_Sync_count--;
4a958: 2039 0005 fae6 movel 5fae6 <_Watchdog_Sync_count>,%d0
4a95e: 5380 subql #1,%d0
4a960: 23c0 0005 fae6 movel %d0,5fae6 <_Watchdog_Sync_count>
_ISR_Enable( level );
4a966: 46c2 movew %d2,%sr
}
4a968: 4cd7 041c moveml %sp@,%d2-%d4/%a2
4a96c: 4e5e unlk %fp
4a96e: 4e75 rts
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
_Watchdog_Sync_level = insert_isr_nest_level;
4a970: 23c3 0005 fa8e movel %d3,5fa8e <_Watchdog_Sync_level>
goto restart;
4a976: 6000 ff68 braw 4a8e0 <_Watchdog_Insert+0x3c>
...
0004a9d4 <_Watchdog_Remove>:
{
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
4a9d4: 203c 0000 0700 movel #1792,%d0
#include <rtems/score/watchdog.h>
Watchdog_States _Watchdog_Remove(
Watchdog_Control *the_watchdog
)
{
4a9da: 4e56 0000 linkw %fp,#0
4a9de: 206e 0008 moveal %fp@(8),%a0
4a9e2: 2f0a movel %a2,%sp@-
4a9e4: 2f02 movel %d2,%sp@-
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
4a9e6: 40c1 movew %sr,%d1
4a9e8: 8081 orl %d1,%d0
4a9ea: 46c0 movew %d0,%sr
previous_state = the_watchdog->state;
4a9ec: 2028 0008 movel %a0@(8),%d0
switch ( previous_state ) {
4a9f0: 7401 moveq #1,%d2
4a9f2: b480 cmpl %d0,%d2
4a9f4: 6764 beqs 4aa5a <_Watchdog_Remove+0x86>
4a9f6: 6314 blss 4aa0c <_Watchdog_Remove+0x38>
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
4a9f8: 2439 0005 faea movel 5faea <_Watchdog_Ticks_since_boot>,%d2
4a9fe: 2142 0018 movel %d2,%a0@(24)
_ISR_Enable( level );
4aa02: 46c1 movew %d1,%sr
return( previous_state );
}
4aa04: 241f movel %sp@+,%d2
4aa06: 245f moveal %sp@+,%a2
4aa08: 4e5e unlk %fp
4aa0a: 4e75 rts
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
previous_state = the_watchdog->state;
switch ( previous_state ) {
4aa0c: 143c 0003 moveb #3,%d2
4aa10: b480 cmpl %d0,%d2
4aa12: 65e4 bcss 4a9f8 <_Watchdog_Remove+0x24> <== NEVER TAKEN
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
_ISR_Enable( level );
return( previous_state );
}
4aa14: 2250 moveal %a0@,%a1
break;
case WATCHDOG_ACTIVE:
case WATCHDOG_REMOVE_IT:
the_watchdog->state = WATCHDOG_INACTIVE;
4aa16: 42a8 0008 clrl %a0@(8)
next_watchdog = _Watchdog_Next( the_watchdog );
if ( _Watchdog_Next(next_watchdog) )
4aa1a: 4a91 tstl %a1@
4aa1c: 6708 beqs 4aa26 <_Watchdog_Remove+0x52>
next_watchdog->delta_interval += the_watchdog->delta_interval;
4aa1e: 2428 0010 movel %a0@(16),%d2
4aa22: d5a9 0010 addl %d2,%a1@(16)
if ( _Watchdog_Sync_count )
4aa26: 2479 0005 fae6 moveal 5fae6 <_Watchdog_Sync_count>,%a2
4aa2c: 4a8a tstl %a2
4aa2e: 670c beqs 4aa3c <_Watchdog_Remove+0x68>
_Watchdog_Sync_level = _ISR_Nest_level;
4aa30: 45f9 0005 fb78 lea 5fb78 <_Per_CPU_Information+0x8>,%a2
4aa36: 23d2 0005 fa8e movel %a2@,5fa8e <_Watchdog_Sync_level>
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
4aa3c: 2468 0004 moveal %a0@(4),%a2
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
4aa40: 2439 0005 faea movel 5faea <_Watchdog_Ticks_since_boot>,%d2
next->previous = previous;
4aa46: 234a 0004 movel %a2,%a1@(4)
previous->next = next;
4aa4a: 2489 movel %a1,%a2@
4aa4c: 2142 0018 movel %d2,%a0@(24)
_ISR_Enable( level );
4aa50: 46c1 movew %d1,%sr
return( previous_state );
}
4aa52: 241f movel %sp@+,%d2
4aa54: 245f moveal %sp@+,%a2
4aa56: 4e5e unlk %fp
4aa58: 4e75 rts
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
4aa5a: 2439 0005 faea movel 5faea <_Watchdog_Ticks_since_boot>,%d2
/*
* It is not actually on the chain so just change the state and
* the Insert operation we interrupted will be aborted.
*/
the_watchdog->state = WATCHDOG_INACTIVE;
4aa60: 42a8 0008 clrl %a0@(8)
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
4aa64: 2142 0018 movel %d2,%a0@(24)
_ISR_Enable( level );
4aa68: 46c1 movew %d1,%sr
return( previous_state );
}
4aa6a: 241f movel %sp@+,%d2
4aa6c: 245f moveal %sp@+,%a2
4aa6e: 4e5e unlk %fp
...
0004bbcc <_Watchdog_Report_chain>:
)
{
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4bbcc: 203c 0000 0700 movel #1792,%d0
void _Watchdog_Report_chain(
const char *name,
Chain_Control *header
)
{
4bbd2: 4e56 ffe8 linkw %fp,#-24
4bbd6: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
4bbda: 242e 0008 movel %fp@(8),%d2
4bbde: 266e 000c moveal %fp@(12),%a3
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4bbe2: 40c3 movew %sr,%d3
4bbe4: 8083 orl %d3,%d0
4bbe6: 46c0 movew %d0,%sr
printk( "Watchdog Chain: %s %p\n", name, header );
4bbe8: 2f0b movel %a3,%sp@-
4bbea: 4bf9 0004 4990 lea 44990 <printk>,%a5
4bbf0: 2f02 movel %d2,%sp@-
4bbf2: 4879 0005 f213 pea 5f213 <_Copyright_Notice+0x4b>
4bbf8: 4e95 jsr %a5@
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4bbfa: 245b moveal %a3@+,%a2
if ( !_Chain_Is_empty( header ) ) {
4bbfc: 4fef 000c lea %sp@(12),%sp
4bc00: b7ca cmpal %a2,%a3
4bc02: 672c beqs 4bc30 <_Watchdog_Report_chain+0x64>
4bc04: 49f9 0004 bc48 lea 4bc48 <_Watchdog_Report>,%a4
node != _Chain_Tail(header) ;
node = node->next )
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
4bc0a: 2f0a movel %a2,%sp@-
4bc0c: 42a7 clrl %sp@-
4bc0e: 4e94 jsr %a4@
_ISR_Disable( level );
printk( "Watchdog Chain: %s %p\n", name, header );
if ( !_Chain_Is_empty( header ) ) {
for ( node = _Chain_First( header ) ;
node != _Chain_Tail(header) ;
node = node->next )
4bc10: 2452 moveal %a2@,%a2
Chain_Node *node;
_ISR_Disable( level );
printk( "Watchdog Chain: %s %p\n", name, header );
if ( !_Chain_Is_empty( header ) ) {
for ( node = _Chain_First( header ) ;
4bc12: 508f addql #8,%sp
4bc14: b7ca cmpal %a2,%a3
4bc16: 66f2 bnes 4bc0a <_Watchdog_Report_chain+0x3e> <== NEVER TAKEN
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
4bc18: 2f02 movel %d2,%sp@-
4bc1a: 4879 0005 f22a pea 5f22a <_Copyright_Notice+0x62>
4bc20: 4e95 jsr %a5@
4bc22: 508f addql #8,%sp
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
4bc24: 46c3 movew %d3,%sr
}
4bc26: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4bc2c: 4e5e unlk %fp
4bc2e: 4e75 rts
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
4bc30: 4879 0005 f239 pea 5f239 <_Copyright_Notice+0x71>
4bc36: 4e95 jsr %a5@
4bc38: 588f addql #4,%sp
}
_ISR_Enable( level );
4bc3a: 46c3 movew %d3,%sr
}
4bc3c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4bc42: 4e5e unlk %fp
...
0004aa74 <_Watchdog_Tickle>:
* See the comment in watchdoginsert.c and watchdogadjust.c
* about why it's safe not to declare header a pointer to
* volatile data - till, 2003/7
*/
_ISR_Disable( level );
4aa74: 203c 0000 0700 movel #1792,%d0
#include <rtems/score/watchdog.h>
void _Watchdog_Tickle(
Chain_Control *header
)
{
4aa7a: 4e56 ffe8 linkw %fp,#-24
4aa7e: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
4aa82: 286e 0008 moveal %fp@(8),%a4
* See the comment in watchdoginsert.c and watchdogadjust.c
* about why it's safe not to declare header a pointer to
* volatile data - till, 2003/7
*/
_ISR_Disable( level );
4aa86: 40c2 movew %sr,%d2
4aa88: 8082 orl %d2,%d0
4aa8a: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4aa8c: 264c moveal %a4,%a3
4aa8e: 245b moveal %a3@+,%a2
if ( _Chain_Is_empty( header ) )
4aa90: b7ca cmpal %a2,%a3
4aa92: 673c beqs 4aad0 <_Watchdog_Tickle+0x5c>
* to be inserted has already had its delta_interval adjusted to 0, and
* so is added to the head of the chain with a delta_interval of 0.
*
* Steven Johnson - 12/2005 (gcc-3.2.3 -O3 on powerpc)
*/
if (the_watchdog->delta_interval != 0) {
4aa94: 202a 0010 movel %a2@(16),%d0
4aa98: 6708 beqs 4aaa2 <_Watchdog_Tickle+0x2e> <== NEVER TAKEN
the_watchdog->delta_interval--;
4aa9a: 5380 subql #1,%d0
4aa9c: 2540 0010 movel %d0,%a2@(16)
if ( the_watchdog->delta_interval != 0 )
4aaa0: 662e bnes 4aad0 <_Watchdog_Tickle+0x5c>
4aaa2: 4bf9 0004 a9d4 lea 4a9d4 <_Watchdog_Remove>,%a5
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
4aaa8: 263c 0000 0700 movel #1792,%d3
if ( the_watchdog->delta_interval != 0 )
goto leave;
}
do {
watchdog_state = _Watchdog_Remove( the_watchdog );
4aaae: 2f0a movel %a2,%sp@-
4aab0: 4e95 jsr %a5@
_ISR_Enable( level );
4aab2: 46c2 movew %d2,%sr
switch( watchdog_state ) {
4aab4: 7202 moveq #2,%d1
4aab6: 588f addql #4,%sp
4aab8: b280 cmpl %d0,%d1
4aaba: 6720 beqs 4aadc <_Watchdog_Tickle+0x68> <== ALWAYS TAKEN
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
4aabc: 2003 movel %d3,%d0
4aabe: 40c2 movew %sr,%d2
4aac0: 8082 orl %d2,%d0
4aac2: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
4aac4: 2454 moveal %a4@,%a2
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
4aac6: b5cb cmpal %a3,%a2
4aac8: 6706 beqs 4aad0 <_Watchdog_Tickle+0x5c>
}
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
4aaca: 4aaa 0010 tstl %a2@(16)
4aace: 67de beqs 4aaae <_Watchdog_Tickle+0x3a>
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
4aad0: 46c2 movew %d2,%sr
}
4aad2: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4aad8: 4e5e unlk %fp
4aada: 4e75 rts
_ISR_Enable( level );
switch( watchdog_state ) {
case WATCHDOG_ACTIVE:
(*the_watchdog->routine)(
4aadc: 2f2a 0024 movel %a2@(36),%sp@-
4aae0: 2f2a 0020 movel %a2@(32),%sp@-
4aae4: 206a 001c moveal %a2@(28),%a0
4aae8: 4e90 jsr %a0@
the_watchdog->id,
the_watchdog->user_data
);
break;
4aaea: 508f addql #8,%sp
4aaec: 60ce bras 4aabc <_Watchdog_Tickle+0x48>
...
0004ac2a <_Workspace_Allocate_or_fatal_error>:
void *_Workspace_Allocate_or_fatal_error(
size_t size
)
{
4ac2a: 4e56 0000 linkw %fp,#0
4ac2e: 42a7 clrl %sp@-
4ac30: 42a7 clrl %sp@-
4ac32: 2f2e 0008 movel %fp@(8),%sp@-
4ac36: 4879 0005 fa16 pea 5fa16 <_Workspace_Area>
4ac3c: 4eb9 0004 c6b0 jsr 4c6b0 <_Heap_Allocate_aligned_with_boundary>
__builtin_return_address( 1 ),
memory
);
#endif
if ( memory == NULL )
4ac42: 4fef 0010 lea %sp@(16),%sp
4ac46: 4a80 tstl %d0
4ac48: 6704 beqs 4ac4e <_Workspace_Allocate_or_fatal_error+0x24>
true,
INTERNAL_ERROR_WORKSPACE_ALLOCATION
);
return memory;
}
4ac4a: 4e5e unlk %fp
4ac4c: 4e75 rts
memory
);
#endif
if ( memory == NULL )
_Internal_error_Occurred(
4ac4e: 4878 0003 pea 3 <DIVIDE>
4ac52: 4878 0001 pea 1 <ADD>
4ac56: 42a7 clrl %sp@-
4ac58: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred>
...
0004aaf0 <_Workspace_Handler_initialization>:
void _Workspace_Handler_initialization(
Heap_Area *areas,
size_t area_count,
Heap_Initialization_or_extend_handler extend
)
{
4aaf0: 4e56 ffd8 linkw %fp,#-40
4aaf4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4aaf8: 266e 0008 moveal %fp@(8),%a3
4aafc: 2c2e 000c movel %fp@(12),%d6
4ab00: 2a2e 0010 movel %fp@(16),%d5
Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
uintptr_t remaining = rtems_configuration_get_work_space_size();
4ab04: 4a39 0005 c606 tstb 5c606 <Configuration+0x32>
4ab0a: 6600 00d2 bnew 4abde <_Workspace_Handler_initialization+0xee>
4ab0e: 2839 0005 c5d8 movel 5c5d8 <Configuration+0x4>,%d4
4ab14: d8b9 0005 c5d4 addl 5c5d4 <Configuration>,%d4
bool do_zero = rtems_configuration_get_do_zero_of_workspace();
4ab1a: 1e39 0005 c604 moveb 5c604 <Configuration+0x30>,%d7
bool unified = rtems_configuration_get_unified_work_area();
uintptr_t page_size = CPU_HEAP_ALIGNMENT;
uintptr_t overhead = _Heap_Area_overhead( page_size );
size_t i;
for (i = 0; i < area_count; ++i) {
4ab20: 4a86 tstl %d6
4ab22: 6768 beqs 4ab8c <_Workspace_Handler_initialization+0x9c><== NEVER TAKEN
/* #define DEBUG_WORKSPACE */
#if defined(DEBUG_WORKSPACE)
#include <rtems/bspIo.h>
#endif
void _Workspace_Handler_initialization(
4ab24: 45eb 0004 lea %a3@(4),%a2
bool unified = rtems_configuration_get_unified_work_area();
uintptr_t page_size = CPU_HEAP_ALIGNMENT;
uintptr_t overhead = _Heap_Area_overhead( page_size );
size_t i;
for (i = 0; i < area_count; ++i) {
4ab28: 4283 clrl %d3
Heap_Area *areas,
size_t area_count,
Heap_Initialization_or_extend_handler extend
)
{
Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
4ab2a: 49f9 0004 86b0 lea 486b0 <_Heap_Initialize>,%a4
for (i = 0; i < area_count; ++i) {
Heap_Area *area = &areas [i];
if ( do_zero ) {
memset( area->begin, 0, area->size );
4ab30: 4bf9 0004 e9d4 lea 4e9d4 <memset>,%a5
size_t i;
for (i = 0; i < area_count; ++i) {
Heap_Area *area = &areas [i];
if ( do_zero ) {
4ab36: 4a07 tstb %d7
4ab38: 6660 bnes 4ab9a <_Workspace_Handler_initialization+0xaa><== NEVER TAKEN
memset( area->begin, 0, area->size );
}
if ( area->size > overhead ) {
4ab3a: 2412 movel %a2@,%d2
4ab3c: 700e moveq #14,%d0
4ab3e: b082 cmpl %d2,%d0
4ab40: 6440 bccs 4ab82 <_Workspace_Handler_initialization+0x92>
uintptr_t space_available;
uintptr_t size;
if ( unified ) {
4ab42: 4a39 0005 c605 tstb 5c605 <Configuration+0x31>
4ab48: 6618 bnes 4ab62 <_Workspace_Handler_initialization+0x72>
size = area->size;
} else {
if ( remaining > 0 ) {
4ab4a: 4a84 tstl %d4
4ab4c: 675a beqs 4aba8 <_Workspace_Handler_initialization+0xb8><== NEVER TAKEN
size = remaining < area->size - overhead ?
4ab4e: 2002 movel %d2,%d0
4ab50: 0680 ffff fff2 addil #-14,%d0
remaining + overhead : area->size;
4ab56: b880 cmpl %d0,%d4
4ab58: 6408 bccs 4ab62 <_Workspace_Handler_initialization+0x72><== NEVER TAKEN
4ab5a: 2404 movel %d4,%d2
4ab5c: 0682 0000 000e addil #14,%d2
} else {
size = 0;
}
}
space_available = (*init_or_extend)(
4ab62: 4878 0004 pea 4 <CONTEXT_ARG>
4ab66: 2f02 movel %d2,%sp@-
4ab68: 2f13 movel %a3@,%sp@-
4ab6a: 4879 0005 fa16 pea 5fa16 <_Workspace_Area>
4ab70: 4e94 jsr %a4@
);
area->begin = (char *) area->begin + size;
area->size -= size;
if ( space_available < remaining ) {
4ab72: 4fef 0010 lea %sp@(16),%sp
area->begin,
size,
page_size
);
area->begin = (char *) area->begin + size;
4ab76: d593 addl %d2,%a3@
area->size -= size;
4ab78: 9592 subl %d2,%a2@
if ( space_available < remaining ) {
4ab7a: b880 cmpl %d0,%d4
4ab7c: 634e blss 4abcc <_Workspace_Handler_initialization+0xdc><== ALWAYS TAKEN
remaining -= space_available;
4ab7e: 9880 subl %d0,%d4 <== NOT EXECUTED
} else {
remaining = 0;
}
init_or_extend = extend;
4ab80: 2845 moveal %d5,%a4 <== NOT EXECUTED
bool unified = rtems_configuration_get_unified_work_area();
uintptr_t page_size = CPU_HEAP_ALIGNMENT;
uintptr_t overhead = _Heap_Area_overhead( page_size );
size_t i;
for (i = 0; i < area_count; ++i) {
4ab82: 5283 addql #1,%d3
4ab84: 508a addql #8,%a2
4ab86: 508b addql #8,%a3
4ab88: bc83 cmpl %d3,%d6
4ab8a: 66aa bnes 4ab36 <_Workspace_Handler_initialization+0x46><== NEVER TAKEN
init_or_extend = extend;
}
}
if ( remaining > 0 ) {
4ab8c: 4a84 tstl %d4
4ab8e: 6654 bnes 4abe4 <_Workspace_Handler_initialization+0xf4>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_TOO_LITTLE_WORKSPACE
);
}
}
4ab90: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5
4ab96: 4e5e unlk %fp
4ab98: 4e75 rts
for (i = 0; i < area_count; ++i) {
Heap_Area *area = &areas [i];
if ( do_zero ) {
memset( area->begin, 0, area->size );
4ab9a: 2f12 movel %a2@,%sp@-
4ab9c: 42a7 clrl %sp@-
4ab9e: 2f13 movel %a3@,%sp@-
4aba0: 4e95 jsr %a5@
4aba2: 4fef 000c lea %sp@(12),%sp
4aba6: 6092 bras 4ab3a <_Workspace_Handler_initialization+0x4a>
} else {
size = 0;
}
}
space_available = (*init_or_extend)(
4aba8: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
bool unified = rtems_configuration_get_unified_work_area();
uintptr_t page_size = CPU_HEAP_ALIGNMENT;
uintptr_t overhead = _Heap_Area_overhead( page_size );
size_t i;
for (i = 0; i < area_count; ++i) {
4abac: 5283 addql #1,%d3 <== NOT EXECUTED
4abae: 508a addql #8,%a2 <== NOT EXECUTED
} else {
size = 0;
}
}
space_available = (*init_or_extend)(
4abb0: 42a7 clrl %sp@- <== NOT EXECUTED
4abb2: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
4abb4: 508b addql #8,%a3 <== NOT EXECUTED
4abb6: 4879 0005 fa16 pea 5fa16 <_Workspace_Area> <== NOT EXECUTED
4abbc: 4e94 jsr %a4@ <== NOT EXECUTED
4abbe: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
remaining -= space_available;
} else {
remaining = 0;
}
init_or_extend = extend;
4abc2: 2845 moveal %d5,%a4 <== NOT EXECUTED
bool unified = rtems_configuration_get_unified_work_area();
uintptr_t page_size = CPU_HEAP_ALIGNMENT;
uintptr_t overhead = _Heap_Area_overhead( page_size );
size_t i;
for (i = 0; i < area_count; ++i) {
4abc4: bc83 cmpl %d3,%d6 <== NOT EXECUTED
4abc6: 6600 ff6e bnew 4ab36 <_Workspace_Handler_initialization+0x46><== NOT EXECUTED
4abca: 60c0 bras 4ab8c <_Workspace_Handler_initialization+0x9c><== NOT EXECUTED
remaining -= space_available;
} else {
remaining = 0;
}
init_or_extend = extend;
4abcc: 2845 moveal %d5,%a4
area->size -= size;
if ( space_available < remaining ) {
remaining -= space_available;
} else {
remaining = 0;
4abce: 4284 clrl %d4
bool unified = rtems_configuration_get_unified_work_area();
uintptr_t page_size = CPU_HEAP_ALIGNMENT;
uintptr_t overhead = _Heap_Area_overhead( page_size );
size_t i;
for (i = 0; i < area_count; ++i) {
4abd0: 5283 addql #1,%d3
4abd2: 508a addql #8,%a2
4abd4: 508b addql #8,%a3
4abd6: bc83 cmpl %d3,%d6
4abd8: 6600 ff5c bnew 4ab36 <_Workspace_Handler_initialization+0x46>
4abdc: 60ae bras 4ab8c <_Workspace_Handler_initialization+0x9c>
size_t area_count,
Heap_Initialization_or_extend_handler extend
)
{
Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
uintptr_t remaining = rtems_configuration_get_work_space_size();
4abde: 4284 clrl %d4
4abe0: 6000 ff32 braw 4ab14 <_Workspace_Handler_initialization+0x24>
init_or_extend = extend;
}
}
if ( remaining > 0 ) {
_Internal_error_Occurred(
4abe4: 4878 0002 pea 2 <DOUBLE_FLOAT>
4abe8: 4878 0001 pea 1 <ADD>
4abec: 42a7 clrl %sp@-
4abee: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred>
0004aefc <_Workspace_String_duplicate>:
char *_Workspace_String_duplicate(
const char *string,
size_t len
)
{
4aefc: 4e56 0000 linkw %fp,#0
4af00: 2f0b movel %a3,%sp@-
4af02: 266e 000c moveal %fp@(12),%a3
4af06: 2f0a movel %a2,%sp@-
char *dup = _Workspace_Allocate(len + 1);
4af08: 486b 0001 pea %a3@(1)
4af0c: 4eb9 0004 ae90 jsr 4ae90 <_Workspace_Allocate>
if (dup != NULL) {
4af12: 588f addql #4,%sp
char *_Workspace_String_duplicate(
const char *string,
size_t len
)
{
char *dup = _Workspace_Allocate(len + 1);
4af14: 2440 moveal %d0,%a2
if (dup != NULL) {
4af16: 4a80 tstl %d0
4af18: 6718 beqs 4af32 <_Workspace_String_duplicate+0x36><== NEVER TAKEN
dup [len] = '\0';
4af1a: 4200 clrb %d0
4af1c: 1580 b800 moveb %d0,%a2@(00000000,%a3:l)
memcpy(dup, string, len);
4af20: 2f0b movel %a3,%sp@-
4af22: 2f2e 0008 movel %fp@(8),%sp@-
4af26: 2f0a movel %a2,%sp@-
4af28: 4eb9 0004 ecf4 jsr 4ecf4 <memcpy>
4af2e: 4fef 000c lea %sp@(12),%sp
}
return dup;
}
4af32: 200a movel %a2,%d0
4af34: 246e fff8 moveal %fp@(-8),%a2
4af38: 266e fffc moveal %fp@(-4),%a3
4af3c: 4e5e unlk %fp <== NOT EXECUTED
0005bd9c <__kill>:
#endif
int __kill( pid_t pid, int sig )
{
return 0;
}
5bd9c: 4280 clrl %d0 <== NOT EXECUTED
return 0;
}
#endif
int __kill( pid_t pid, int sig )
{
5bd9e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
5bda2: 4e5e unlk %fp <== NOT EXECUTED
...
0005bbfc <_calloc_r>:
void *_calloc_r(
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
5bbfc: 4e56 0000 linkw %fp,#0
5bc00: 202e 000c movel %fp@(12),%d0
return calloc( elements, size );
5bc04: 2d6e 0010 000c movel %fp@(16),%fp@(12)
void *_calloc_r(
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
5bc0a: 2d40 0008 movel %d0,%fp@(8)
return calloc( elements, size );
}
5bc0e: 4e5e unlk %fp
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
return calloc( elements, size );
5bc10: 4ef9 0004 2e28 jmp 42e28 <calloc>
...
000529c4 <_fat_block_read>:
uint32_t start,
uint32_t offset,
uint32_t count,
void *buff
)
{
529c4: 4e56 ffd8 linkw %fp,#-40
529c8: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
529cc: 246e 0008 moveal %fp@(8),%a2
529d0: 242e 0014 movel %fp@(20),%d2
529d4: 286e 0018 moveal %fp@(24),%a4
uint32_t sec_num = start;
uint32_t ofs = offset;
uint8_t *sec_buf;
uint32_t c = 0;
while (count > 0)
529d8: 6772 beqs 52a4c <_fat_block_read+0x88> <== NEVER TAKEN
529da: 2c0e movel %fp,%d6
529dc: 4283 clrl %d3
529de: 5986 subql #4,%d6
529e0: 47f9 0005 2908 lea 52908 <fat_buf_access>,%a3
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
if (rc != RC_OK)
return -1;
c = MIN(count, (fs_info->vol.bps - ofs));
memcpy((buff + cmpltd), (sec_buf + ofs), c);
529e6: 4bf9 0005 b188 lea 5b188 <memcpy>,%a5
uint32_t sec_num = start;
uint32_t ofs = offset;
uint8_t *sec_buf;
uint32_t c = 0;
while (count > 0)
529ec: 2a2e 0010 movel %fp@(16),%d5
529f0: 282e 000c movel %fp@(12),%d4
{
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
529f4: 2f06 movel %d6,%sp@-
529f6: 4878 0001 pea 1 <ADD>
529fa: 2f04 movel %d4,%sp@-
c = MIN(count, (fs_info->vol.bps - ofs));
memcpy((buff + cmpltd), (sec_buf + ofs), c);
count -= c;
cmpltd += c;
sec_num++;
529fc: 5284 addql #1,%d4
uint8_t *sec_buf;
uint32_t c = 0;
while (count > 0)
{
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
529fe: 2f0a movel %a2,%sp@-
52a00: 4e93 jsr %a3@
if (rc != RC_OK)
52a02: 4fef 0010 lea %sp@(16),%sp
52a06: 4a80 tstl %d0
52a08: 6634 bnes 52a3e <_fat_block_read+0x7a> <== NEVER TAKEN
return -1;
c = MIN(count, (fs_info->vol.bps - ofs));
52a0a: 4281 clrl %d1
52a0c: 3212 movew %a2@,%d1
52a0e: 9285 subl %d5,%d1
52a10: b481 cmpl %d1,%d2
52a12: 6402 bccs 52a16 <_fat_block_read+0x52> <== ALWAYS TAKEN
52a14: 2202 movel %d2,%d1 <== NOT EXECUTED
memcpy((buff + cmpltd), (sec_buf + ofs), c);
52a16: daae fffc addl %fp@(-4),%d5
count -= c;
52a1a: 9481 subl %d1,%d2
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
if (rc != RC_OK)
return -1;
c = MIN(count, (fs_info->vol.bps - ofs));
memcpy((buff + cmpltd), (sec_buf + ofs), c);
52a1c: 2f01 movel %d1,%sp@-
52a1e: 2f05 movel %d5,%sp@-
52a20: 4874 3800 pea %a4@(00000000,%d3:l)
count -= c;
cmpltd += c;
52a24: d681 addl %d1,%d3
sec_num++;
ofs = 0;
52a26: 4285 clrl %d5
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
if (rc != RC_OK)
return -1;
c = MIN(count, (fs_info->vol.bps - ofs));
memcpy((buff + cmpltd), (sec_buf + ofs), c);
52a28: 4e95 jsr %a5@
uint32_t sec_num = start;
uint32_t ofs = offset;
uint8_t *sec_buf;
uint32_t c = 0;
while (count > 0)
52a2a: 4fef 000c lea %sp@(12),%sp
52a2e: 4a82 tstl %d2
52a30: 66c2 bnes 529f4 <_fat_block_read+0x30>
cmpltd += c;
sec_num++;
ofs = 0;
}
return cmpltd;
}
52a32: 2003 movel %d3,%d0
52a34: 4cee 3c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a5
52a3a: 4e5e unlk %fp
52a3c: 4e75 rts
while (count > 0)
{
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
if (rc != RC_OK)
return -1;
52a3e: 76ff moveq #-1,%d3 <== NOT EXECUTED
cmpltd += c;
sec_num++;
ofs = 0;
}
return cmpltd;
}
52a40: 2003 movel %d3,%d0 <== NOT EXECUTED
52a42: 4cee 3c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a5 <== NOT EXECUTED
52a48: 4e5e unlk %fp <== NOT EXECUTED
52a4a: 4e75 rts <== NOT EXECUTED
uint32_t count,
void *buff
)
{
int rc = RC_OK;
ssize_t cmpltd = 0;
52a4c: 4283 clrl %d3 <== NOT EXECUTED
cmpltd += c;
sec_num++;
ofs = 0;
}
return cmpltd;
}
52a4e: 2003 movel %d3,%d0 <== NOT EXECUTED
52a50: 4cee 3c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a5 <== NOT EXECUTED
52a56: 4e5e unlk %fp <== NOT EXECUTED
0005bc94 <_free_r>:
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
5bc94: 4e56 0000 linkw %fp,#0
free( ptr );
5bc98: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5bc9e: 4e5e unlk %fp
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
free( ptr );
5bca0: 4ef9 0004 30cc jmp 430cc <free>
...
0005bd44 <_fstat_r>:
int _fstat_r(
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
5bd44: 4e56 0000 linkw %fp,#0
5bd48: 202e 000c movel %fp@(12),%d0
return fstat( fd, buf );
5bd4c: 2d6e 0010 000c movel %fp@(16),%fp@(12)
int _fstat_r(
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
5bd52: 2d40 0008 movel %d0,%fp@(8)
return fstat( fd, buf );
}
5bd56: 4e5e unlk %fp
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
return fstat( fd, buf );
5bd58: 4ef9 0005 bca8 jmp 5bca8 <fstat>
...
00043206 <_gettimeofday>:
*/
int _gettimeofday(
struct timeval *tp,
struct timezone *tzp
)
{
43206: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return gettimeofday( tp, tzp );
}
4320a: 4e5e unlk %fp <== NOT EXECUTED
int _gettimeofday(
struct timeval *tp,
struct timezone *tzp
)
{
return gettimeofday( tp, tzp );
4320c: 4ef9 0004 315c jmp 4315c <gettimeofday> <== NOT EXECUTED
...
0005bd74 <_isatty_r>:
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
5bd74: 4e56 0000 linkw %fp,#0
return isatty( fd );
5bd78: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5bd7e: 4e5e unlk %fp
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
return isatty( fd );
5bd80: 4ef9 0005 c314 jmp 5c314 <isatty>
...
0005be20 <_lseek_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
off_t offset,
int whence
)
{
5be20: 4e56 0000 linkw %fp,#0
5be24: 202e 000c movel %fp@(12),%d0
5be28: 2d40 0008 movel %d0,%fp@(8)
5be2c: 202e 0010 movel %fp@(16),%d0
5be30: 222e 0014 movel %fp@(20),%d1
return lseek( fd, offset, whence );
5be34: 2d6e 0018 0014 movel %fp@(24),%fp@(20)
5be3a: 2d40 000c movel %d0,%fp@(12)
5be3e: 2d41 0010 movel %d1,%fp@(16)
}
5be42: 4e5e unlk %fp
int fd,
off_t offset,
int whence
)
{
return lseek( fd, offset, whence );
5be44: 4ef9 0005 bda8 jmp 5bda8 <lseek>
...
00042f58 <_lstat_r>:
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
42f58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42f5c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return _STAT_NAME( path, buf );
42f60: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
42f66: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
return _STAT_NAME( path, buf );
}
42f6a: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
return _STAT_NAME( path, buf );
42f6c: 4ef9 0004 2ef8 jmp 42ef8 <lstat> <== NOT EXECUTED
...
0005be4c <_malloc_r>:
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
5be4c: 4e56 0000 linkw %fp,#0
return malloc( size );
5be50: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5be56: 4e5e unlk %fp
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
return malloc( size );
5be58: 4ef9 0004 33cc jmp 433cc <malloc>
...
00043f28 <_open_r>:
struct _reent *ptr __attribute__((unused)),
const char *buf,
int oflag,
int mode
)
{
43f28: 4e56 0000 linkw %fp,#0
43f2c: 202e 0010 movel %fp@(16),%d0
43f30: 222e 000c movel %fp@(12),%d1
return open( buf, oflag, mode );
43f34: 2d6e 0014 0010 movel %fp@(20),%fp@(16)
struct _reent *ptr __attribute__((unused)),
const char *buf,
int oflag,
int mode
)
{
43f3a: 2d41 0008 movel %d1,%fp@(8)
return open( buf, oflag, mode );
43f3e: 2d40 000c movel %d0,%fp@(12)
}
43f42: 4e5e unlk %fp
const char *buf,
int oflag,
int mode
)
{
return open( buf, oflag, mode );
43f44: 4ef9 0004 3d00 jmp 43d00 <open>
...
0005bf28 <_realloc_r>:
void *_realloc_r(
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
5bf28: 4e56 0000 linkw %fp,#0
5bf2c: 202e 000c movel %fp@(12),%d0
return realloc( ptr, size );
5bf30: 2d6e 0010 000c movel %fp@(16),%fp@(12)
void *_realloc_r(
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
5bf36: 2d40 0008 movel %d0,%fp@(8)
return realloc( ptr, size );
}
5bf3a: 4e5e unlk %fp
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
return realloc( ptr, size );
5bf3c: 4ef9 0005 bf68 jmp 5bf68 <realloc>
...
00043fd0 <_stat_r>:
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
43fd0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43fd4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return _STAT_NAME( path, buf );
43fd8: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
43fde: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
return _STAT_NAME( path, buf );
}
43fe2: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
return _STAT_NAME( path, buf );
43fe4: 4ef9 0004 3f70 jmp 43f70 <stat> <== NOT EXECUTED
...
000469e8 <_times_r>:
*/
clock_t _times_r(
struct _reent *ptr __attribute__((unused)),
struct tms *ptms
)
{
469e8: 4e56 0000 linkw %fp,#0
return _times( ptms );
469ec: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
469f2: 4e5e unlk %fp
clock_t _times_r(
struct _reent *ptr __attribute__((unused)),
struct tms *ptms
)
{
return _times( ptms );
469f4: 4ef9 0004 6924 jmp 46924 <_times>
...
000480d0 <_unlink_r>:
*/
int _unlink_r(
struct _reent *ptr __attribute__((unused)),
const char *path
)
{
480d0: 4e56 0000 linkw %fp,#0
return unlink( path );
480d4: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
480da: 4e5e unlk %fp
int _unlink_r(
struct _reent *ptr __attribute__((unused)),
const char *path
)
{
return unlink( path );
480dc: 4ef9 0004 8030 jmp 48030 <unlink>
...
0005bf44 <_write_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
const void *buf,
size_t nbytes
)
{
5bf44: 4e56 0000 linkw %fp,#0
5bf48: 202e 0010 movel %fp@(16),%d0
5bf4c: 222e 000c movel %fp@(12),%d1
return write( fd, buf, nbytes );
5bf50: 2d6e 0014 0010 movel %fp@(20),%fp@(16)
struct _reent *ptr __attribute__((unused)),
int fd,
const void *buf,
size_t nbytes
)
{
5bf56: 2d41 0008 movel %d1,%fp@(8)
return write( fd, buf, nbytes );
5bf5a: 2d40 000c movel %d0,%fp@(12)
}
5bf5e: 4e5e unlk %fp
int fd,
const void *buf,
size_t nbytes
)
{
return write( fd, buf, nbytes );
5bf60: 4ef9 0005 c09c jmp 5c09c <write>
...
00048538 <check_and_merge>:
rtems_rbtree_control *chunk_tree,
rtems_rbheap_chunk *a,
rtems_rbheap_chunk *b
)
{
if (b != NULL_PAGE && rtems_rbheap_is_chunk_free(b)) {
48538: 72f8 moveq #-8,%d1
rtems_chain_control *free_chain,
rtems_rbtree_control *chunk_tree,
rtems_rbheap_chunk *a,
rtems_rbheap_chunk *b
)
{
4853a: 4e56 fff4 linkw %fp,#-12
4853e: 202e 000c movel %fp@(12),%d0
48542: 48d7 1c00 moveml %a2-%a4,%sp@
48546: 266e 0008 moveal %fp@(8),%a3
4854a: 226e 0010 moveal %fp@(16),%a1
4854e: 206e 0014 moveal %fp@(20),%a0
if (b != NULL_PAGE && rtems_rbheap_is_chunk_free(b)) {
48552: b288 cmpl %a0,%d1
48554: 6754 beqs 485aa <check_and_merge+0x72>
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(
const Chain_Node *node
)
{
return (node->next == NULL) && (node->previous == NULL);
48556: 2450 moveal %a0@,%a2
48558: 4a8a tstl %a2
4855a: 6748 beqs 485a4 <check_and_merge+0x6c>
if (b->begin < a->begin) {
4855c: 2229 0018 movel %a1@(24),%d1
48560: b2a8 0018 cmpl %a0@(24),%d1
48564: 6308 blss 4856e <check_and_merge+0x36>
48566: 2451 moveal %a1@,%a2
48568: 2209 movel %a1,%d1
4856a: 2248 moveal %a0,%a1
4856c: 2041 moveal %d1,%a0
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
4856e: 2868 0004 moveal %a0@(4),%a4
a = b;
b = t;
}
a->size += b->size;
48572: 2228 001c movel %a0@(28),%d1
48576: d3a9 001c addl %d1,%a1@(28)
next->previous = previous;
previous->next = next;
4857a: 288a movel %a2,%a4@
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4857c: 2253 moveal %a3@,%a1
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
4857e: 254c 0004 movel %a4,%a2@(4)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
48582: 2688 movel %a0,%a3@
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
48584: 214b 0004 movel %a3,%a0@(4)
rtems_chain_extract_unprotected(&b->chain_node);
add_to_chain(free_chain, b);
_RBTree_Extract_unprotected(chunk_tree, &b->tree_node);
}
}
48588: 4cd7 1c00 moveml %sp@,%a2-%a4
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
4858c: 2089 movel %a1,%a0@
before_node->previous = the_node;
4858e: 2348 0004 movel %a0,%a1@(4)
}
a->size += b->size;
rtems_chain_extract_unprotected(&b->chain_node);
add_to_chain(free_chain, b);
_RBTree_Extract_unprotected(chunk_tree, &b->tree_node);
48592: 5088 addql #8,%a0
48594: 2d40 0008 movel %d0,%fp@(8)
48598: 2d48 000c movel %a0,%fp@(12)
}
}
4859c: 4e5e unlk %fp
}
a->size += b->size;
rtems_chain_extract_unprotected(&b->chain_node);
add_to_chain(free_chain, b);
_RBTree_Extract_unprotected(chunk_tree, &b->tree_node);
4859e: 4ef9 0004 9f3a jmp 49f3a <_RBTree_Extract_unprotected>
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(
const Chain_Node *node
)
{
return (node->next == NULL) && (node->previous == NULL);
485a4: 4aa8 0004 tstl %a0@(4)
485a8: 66b2 bnes 4855c <check_and_merge+0x24> <== NEVER TAKEN
}
}
485aa: 4cd7 1c00 moveml %sp@,%a2-%a4
485ae: 4e5e unlk %fp <== NOT EXECUTED
000429a8 <chroot>:
#include <unistd.h>
#include <rtems/libio_.h>
int chroot( const char *path )
{
429a8: 4e56 ffac linkw %fp,#-84
429ac: 2f0a movel %a2,%sp@-
/*
* We use the global environment for path evaluation. This makes it possible
* to escape from a chroot environment referencing an unmounted file system.
*/
rtems_filesystem_eval_path_start_with_root_and_current(
429ae: 4879 0005 cfa8 pea 5cfa8 <rtems_global_user_env>
eval_flags,
&rtems_global_user_env.root_directory,
&rtems_global_user_env.current_directory
);
rtems_filesystem_eval_path_extract_currentloc( &ctx, &loc );
429b4: 45ee ffb0 lea %fp@(-80),%a2
/*
* We use the global environment for path evaluation. This makes it possible
* to escape from a chroot environment referencing an unmounted file system.
*/
rtems_filesystem_eval_path_start_with_root_and_current(
429b8: 4879 0005 cfac pea 5cfac <rtems_global_user_env+0x4>
429be: 4878 0019 pea 19 <OPER2+0x5>
429c2: 2f2e 0008 movel %fp@(8),%sp@-
429c6: 486e ffc8 pea %fp@(-56)
429ca: 4eb9 0004 3fd8 jsr 43fd8 <rtems_filesystem_eval_path_start_with_root_and_current>
429d0: 486e ffe0 pea %fp@(-32)
429d4: 2f0a movel %a2,%sp@-
429d6: 4eb9 0004 4504 jsr 44504 <rtems_filesystem_location_copy_and_detach>
&rtems_global_user_env.root_directory,
&rtems_global_user_env.current_directory
);
rtems_filesystem_eval_path_extract_currentloc( &ctx, &loc );
new_current_loc = rtems_filesystem_location_transform_to_global( &loc );
429dc: 2f0a movel %a2,%sp@-
429de: 45f9 0004 4624 lea 44624 <rtems_filesystem_global_location_release>,%a2
429e4: 4eb9 0004 4748 jsr 44748 <rtems_filesystem_location_transform_to_global>
if ( !rtems_filesystem_global_location_is_null( new_current_loc ) ) {
429ea: 4fef 0020 lea %sp@(32),%sp
429ee: 223c 0005 c104 movel #377092,%d1
429f4: 2040 moveal %d0,%a0
&rtems_global_user_env.root_directory,
&rtems_global_user_env.current_directory
);
rtems_filesystem_eval_path_extract_currentloc( &ctx, &loc );
new_current_loc = rtems_filesystem_location_transform_to_global( &loc );
429f6: 2d40 ffac movel %d0,%fp@(-84)
if ( !rtems_filesystem_global_location_is_null( new_current_loc ) ) {
429fa: b2a8 0010 cmpl %a0@(16),%d1
429fe: 674a beqs 42a4a <chroot+0xa2>
rtems_filesystem_global_location_t *new_root_loc =
42a00: 486e ffac pea %fp@(-84)
42a04: 4eb9 0004 4698 jsr 44698 <rtems_filesystem_global_location_obtain>
42a0a: 2440 moveal %d0,%a2
rtems_filesystem_global_location_obtain( &new_current_loc );
rtems_filesystem_node_types_t type =
(*new_root_loc->location.mt_entry->ops->node_type_h)(
42a0c: 206a 0014 moveal %a2@(20),%a0
42a10: 2068 000c moveal %a0@(12),%a0
rtems_filesystem_eval_path_extract_currentloc( &ctx, &loc );
new_current_loc = rtems_filesystem_location_transform_to_global( &loc );
if ( !rtems_filesystem_global_location_is_null( new_current_loc ) ) {
rtems_filesystem_global_location_t *new_root_loc =
rtems_filesystem_global_location_obtain( &new_current_loc );
rtems_filesystem_node_types_t type =
42a14: 2f00 movel %d0,%sp@-
42a16: 2068 0014 moveal %a0@(20),%a0
42a1a: 4e90 jsr %a0@
(*new_root_loc->location.mt_entry->ops->node_type_h)(
&new_root_loc->location
);
if ( type == RTEMS_FILESYSTEM_DIRECTORY ) {
42a1c: 508f addql #8,%sp
42a1e: 4a80 tstl %d0
42a20: 6644 bnes 42a66 <chroot+0xbe>
sc = rtems_libio_set_private_env();
42a22: 4eb9 0004 37f8 jsr 437f8 <rtems_libio_set_private_env>
if (sc == RTEMS_SUCCESSFUL) {
42a28: 4a80 tstl %d0
42a2a: 6760 beqs 42a8c <chroot+0xe4>
rtems_filesystem_global_location_assign(
&rtems_filesystem_current,
new_current_loc
);
} else {
if (sc != RTEMS_UNSATISFIED) {
42a2c: 720d moveq #13,%d1
42a2e: b280 cmpl %d0,%d1
42a30: 670c beqs 42a3e <chroot+0x96> <== NEVER TAKEN
errno = ENOMEM;
42a32: 4eb9 0004 a04c jsr 4a04c <__errno>
42a38: 720c moveq #12,%d1
42a3a: 2040 moveal %d0,%a0
42a3c: 2081 movel %d1,%a0@
rtems_filesystem_location_error( &new_root_loc->location, ENOTDIR );
rv = -1;
}
if ( rv != 0 ) {
rtems_filesystem_global_location_release( new_root_loc );
42a3e: 2f0a movel %a2,%sp@-
42a40: 45f9 0004 4624 lea 44624 <rtems_filesystem_global_location_release>,%a2
42a46: 4e92 jsr %a2@
42a48: 588f addql #4,%sp
}
} else {
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
42a4a: 486e ffc8 pea %fp@(-56)
42a4e: 4eb9 0004 415e jsr 4415e <rtems_filesystem_eval_path_cleanup>
if ( rv != 0 ) {
rtems_filesystem_global_location_release( new_current_loc );
42a54: 2f2e ffac movel %fp@(-84),%sp@-
42a58: 4e92 jsr %a2@
}
return rv;
}
42a5a: 246e ffa8 moveal %fp@(-88),%a2
}
rtems_filesystem_eval_path_cleanup( &ctx );
if ( rv != 0 ) {
rtems_filesystem_global_location_release( new_current_loc );
42a5e: 508f addql #8,%sp
42a60: 70ff moveq #-1,%d0
}
return rv;
}
42a62: 4e5e unlk %fp
42a64: 4e75 rts
static inline void rtems_filesystem_location_error(
const rtems_filesystem_location_info_t *loc,
int eno
)
{
if ( !rtems_filesystem_location_is_null( loc ) ) {
42a66: 203c 0005 c104 movel #377092,%d0
42a6c: b0aa 0010 cmpl %a2@(16),%d0
42a70: 67cc beqs 42a3e <chroot+0x96> <== NEVER TAKEN
errno = eno;
42a72: 4eb9 0004 a04c jsr 4a04c <__errno>
42a78: 2040 moveal %d0,%a0
42a7a: 7014 moveq #20,%d0
42a7c: 2080 movel %d0,%a0@
rtems_filesystem_location_error( &new_root_loc->location, ENOTDIR );
rv = -1;
}
if ( rv != 0 ) {
rtems_filesystem_global_location_release( new_root_loc );
42a7e: 2f0a movel %a2,%sp@-
42a80: 45f9 0004 4624 lea 44624 <rtems_filesystem_global_location_release>,%a2
42a86: 4e92 jsr %a2@
42a88: 588f addql #4,%sp
42a8a: 60be bras 42a4a <chroot+0xa2>
);
if ( type == RTEMS_FILESYSTEM_DIRECTORY ) {
sc = rtems_libio_set_private_env();
if (sc == RTEMS_SUCCESSFUL) {
rtems_filesystem_global_location_assign(
42a8c: 2079 0005 cfa4 moveal 5cfa4 <rtems_current_user_env>,%a0
42a92: 5888 addql #4,%a0
42a94: 2f0a movel %a2,%sp@-
42a96: 45f9 0004 466e lea 4466e <rtems_filesystem_global_location_assign>,%a2
42a9c: 2f08 movel %a0,%sp@-
42a9e: 4e92 jsr %a2@
&rtems_filesystem_root,
new_root_loc
);
rtems_filesystem_global_location_assign(
42aa0: 2f2e ffac movel %fp@(-84),%sp@-
42aa4: 2f39 0005 cfa4 movel 5cfa4 <rtems_current_user_env>,%sp@-
42aaa: 4e92 jsr %a2@
}
} else {
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
42aac: 486e ffc8 pea %fp@(-56)
42ab0: 4eb9 0004 415e jsr 4415e <rtems_filesystem_eval_path_cleanup>
if ( rv != 0 ) {
rtems_filesystem_global_location_release( new_current_loc );
}
return rv;
}
42ab6: 246e ffa8 moveal %fp@(-88),%a2
}
} else {
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
42aba: 4fef 0014 lea %sp@(20),%sp
42abe: 4280 clrl %d0
if ( rv != 0 ) {
rtems_filesystem_global_location_release( new_current_loc );
}
return rv;
}
42ac0: 4e5e unlk %fp <== NOT EXECUTED
00043332 <create_disk>:
dev_t dev,
const char *name,
rtems_disk_device **dd_ptr,
char **alloc_name_ptr
)
{
43332: 4e56 ffe0 linkw %fp,#-32
43336: 48d7 0cfc moveml %d2-%d7/%a2-%a3,%sp@
4333a: 242e 0008 movel %fp@(8),%d2
4333e: 262e 000c movel %fp@(12),%d3
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
rtems_filesystem_split_dev_t(dev, major, minor);
if (major >= disktab_size) {
43342: 2c39 0006 3636 movel 63636 <disktab_size>,%d6
)
{
union __rtems_dev_t temp;
temp.device = device;
return temp.__overlay.major;
43348: 2802 movel %d2,%d4
)
{
union __rtems_dev_t temp;
temp.device = device;
return temp.__overlay.minor;
4334a: 2a03 movel %d3,%d5
4334c: bc84 cmpl %d4,%d6
4334e: 6300 008e blsw 433de <create_disk+0xac>
43352: 2479 0006 363a moveal 6363a <disktab>,%a2
memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
disktab = table;
disktab_size = new_size;
}
if (disktab [major].minor == NULL || minor >= disktab[major].size) {
43358: e78c lsll #3,%d4
4335a: 47f2 4800 lea %a2@(00000000,%d4:l),%a3
4335e: 2453 moveal %a3@,%a2
43360: 282b 0004 movel %a3@(4),%d4
43364: 4a8a tstl %a2
43366: 671e beqs 43386 <create_disk+0x54>
43368: b885 cmpl %d5,%d4
4336a: 631a blss 43386 <create_disk+0x54>
memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
disktab [major].minor = table;
disktab [major].size = new_size;
}
return disktab [major].minor + minor;
4336c: 45f2 5c00 lea %a2@(00000000,%d5:l:4),%a2
{
rtems_disk_device **dd_entry = create_disk_table_entry(dev);
rtems_disk_device *dd = NULL;
char *alloc_name = NULL;
if (dd_entry == NULL) {
43370: 4a8a tstl %a2
43372: 675e beqs 433d2 <create_disk+0xa0> <== NEVER TAKEN
return RTEMS_NO_MEMORY;
}
if (*dd_entry != NULL) {
return RTEMS_RESOURCE_IN_USE;
43374: 700c moveq #12,%d0
if (dd_entry == NULL) {
return RTEMS_NO_MEMORY;
}
if (*dd_entry != NULL) {
43376: 4a92 tstl %a2@
43378: 6700 00be beqw 43438 <create_disk+0x106>
*dd_entry = dd;
*dd_ptr = dd;
*alloc_name_ptr = alloc_name;
return RTEMS_SUCCESSFUL;
}
4337c: 4cee 0cfc ffe0 moveml %fp@(-32),%d2-%d7/%a2-%a3
43382: 4e5e unlk %fp
43384: 4e75 rts
if (disktab [major].minor == NULL || minor >= disktab[major].size) {
rtems_disk_device **table = disktab [major].minor;
rtems_device_minor_number old_size = disktab [major].size;
rtems_device_minor_number new_size = 0;
if (old_size == 0) {
43386: 4a84 tstl %d4
43388: 6600 00a6 bnew 43430 <create_disk+0xfe>
new_size = DISKTAB_INITIAL_SIZE;
4338c: 7c08 moveq #8,%d6
} else {
new_size = 2 * old_size;
}
if (minor >= new_size) {
4338e: bc85 cmpl %d5,%d6
43390: 6204 bhis 43396 <create_disk+0x64>
new_size = minor + 1;
43392: 2c05 movel %d5,%d6
43394: 5286 addql #1,%d6
}
table = realloc(table, new_size * sizeof(*table));
43396: 2006 movel %d6,%d0
43398: e588 lsll #2,%d0
4339a: 2f00 movel %d0,%sp@-
4339c: 2f0a movel %a2,%sp@-
4339e: 4eb9 0004 556c jsr 4556c <realloc>
if (table == NULL) {
433a4: 508f addql #8,%sp
}
if (minor >= new_size) {
new_size = minor + 1;
}
table = realloc(table, new_size * sizeof(*table));
433a6: 2440 moveal %d0,%a2
if (table == NULL) {
433a8: 4a80 tstl %d0
433aa: 6726 beqs 433d2 <create_disk+0xa0>
return NULL;
}
memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
433ac: 2006 movel %d6,%d0
433ae: 9084 subl %d4,%d0
433b0: e588 lsll #2,%d0
433b2: 2f00 movel %d0,%sp@-
433b4: 42a7 clrl %sp@-
433b6: 4872 4c00 pea %a2@(00000000,%d4:l:4)
433ba: 4eb9 0005 3244 jsr 53244 <memset>
disktab [major].minor = table;
disktab [major].size = new_size;
433c0: 4fef 000c lea %sp@(12),%sp
if (table == NULL) {
return NULL;
}
memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
disktab [major].minor = table;
433c4: 268a movel %a2,%a3@
disktab [major].size = new_size;
}
return disktab [major].minor + minor;
433c6: 45f2 5c00 lea %a2@(00000000,%d5:l:4),%a2
return NULL;
}
memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
disktab [major].minor = table;
disktab [major].size = new_size;
433ca: 2746 0004 movel %d6,%a3@(4)
{
rtems_disk_device **dd_entry = create_disk_table_entry(dev);
rtems_disk_device *dd = NULL;
char *alloc_name = NULL;
if (dd_entry == NULL) {
433ce: 4a8a tstl %a2
433d0: 66a2 bnes 43374 <create_disk+0x42> <== ALWAYS TAKEN
alloc_name = strdup(name);
if (alloc_name == NULL) {
free(dd);
return RTEMS_NO_MEMORY;
433d2: 701a moveq #26,%d0
*dd_entry = dd;
*dd_ptr = dd;
*alloc_name_ptr = alloc_name;
return RTEMS_SUCCESSFUL;
}
433d4: 4cee 0cfc ffe0 moveml %fp@(-32),%d2-%d7/%a2-%a3
433da: 4e5e unlk %fp
433dc: 4e75 rts
rtems_filesystem_split_dev_t(dev, major, minor);
if (major >= disktab_size) {
rtems_disk_device_table *table = disktab;
rtems_device_major_number old_size = disktab_size;
rtems_device_major_number new_size = 2 * old_size;
433de: 2e06 movel %d6,%d7
433e0: de87 addl %d7,%d7
rtems_device_minor_number minor = 0;
rtems_filesystem_split_dev_t(dev, major, minor);
if (major >= disktab_size) {
rtems_disk_device_table *table = disktab;
433e2: 2039 0006 363a movel 6363a <disktab>,%d0
rtems_device_major_number old_size = disktab_size;
rtems_device_major_number new_size = 2 * old_size;
if (major >= new_size) {
433e8: be84 cmpl %d4,%d7
433ea: 6204 bhis 433f0 <create_disk+0xbe> <== NEVER TAKEN
new_size = major + 1;
433ec: 2e04 movel %d4,%d7
433ee: 5287 addql #1,%d7
}
table = realloc(table, new_size * sizeof(*table));
433f0: 2207 movel %d7,%d1
433f2: e789 lsll #3,%d1
433f4: 2f01 movel %d1,%sp@-
433f6: 2f00 movel %d0,%sp@-
433f8: 4eb9 0004 556c jsr 4556c <realloc>
if (table == NULL) {
433fe: 508f addql #8,%sp
if (major >= new_size) {
new_size = major + 1;
}
table = realloc(table, new_size * sizeof(*table));
43400: 2440 moveal %d0,%a2
if (table == NULL) {
43402: 4a80 tstl %d0
43404: 67cc beqs 433d2 <create_disk+0xa0> <== ALWAYS TAKEN
return NULL;
}
memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
43406: 2007 movel %d7,%d0 <== NOT EXECUTED
43408: 9086 subl %d6,%d0 <== NOT EXECUTED
4340a: e788 lsll #3,%d0 <== NOT EXECUTED
4340c: e78e lsll #3,%d6 <== NOT EXECUTED
4340e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43410: 42a7 clrl %sp@- <== NOT EXECUTED
43412: 4872 6800 pea %a2@(00000000,%d6:l) <== NOT EXECUTED
43416: 4eb9 0005 3244 jsr 53244 <memset> <== NOT EXECUTED
disktab = table;
disktab_size = new_size;
4341c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (table == NULL) {
return NULL;
}
memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
disktab = table;
43420: 23ca 0006 363a movel %a2,6363a <disktab> <== NOT EXECUTED
disktab_size = new_size;
43426: 23c7 0006 3636 movel %d7,63636 <disktab_size> <== NOT EXECUTED
4342c: 6000 ff2a braw 43358 <create_disk+0x26> <== NOT EXECUTED
rtems_device_minor_number new_size = 0;
if (old_size == 0) {
new_size = DISKTAB_INITIAL_SIZE;
} else {
new_size = 2 * old_size;
43430: 2c04 movel %d4,%d6
43432: dc86 addl %d6,%d6
43434: 6000 ff58 braw 4338e <create_disk+0x5c>
if (*dd_entry != NULL) {
return RTEMS_RESOURCE_IN_USE;
}
dd = malloc(sizeof(*dd));
43438: 4878 0072 pea 72 <DBL_MANT_DIG+0x3d>
4343c: 4eb9 0004 49d4 jsr 449d4 <malloc>
if (dd == NULL) {
43442: 588f addql #4,%sp
if (*dd_entry != NULL) {
return RTEMS_RESOURCE_IN_USE;
}
dd = malloc(sizeof(*dd));
43444: 2800 movel %d0,%d4
if (dd == NULL) {
43446: 678a beqs 433d2 <create_disk+0xa0> <== NEVER TAKEN
return RTEMS_NO_MEMORY;
}
if (name != NULL) {
43448: 4aae 0010 tstl %fp@(16)
4344c: 6760 beqs 434ae <create_disk+0x17c>
alloc_name = strdup(name);
4344e: 2f2e 0010 movel %fp@(16),%sp@-
43452: 4eb9 0005 380c jsr 5380c <strdup>
if (alloc_name == NULL) {
43458: 588f addql #4,%sp
if (dd == NULL) {
return RTEMS_NO_MEMORY;
}
if (name != NULL) {
alloc_name = strdup(name);
4345a: 2a00 movel %d0,%d5
4345c: 2c00 movel %d0,%d6
if (alloc_name == NULL) {
4345e: 6762 beqs 434c2 <create_disk+0x190> <== NEVER TAKEN
return RTEMS_NO_MEMORY;
}
}
if (name != NULL) {
if (mknod(alloc_name, 0777 | S_IFBLK, dev) < 0) {
43460: 2f03 movel %d3,%sp@-
43462: 2f02 movel %d2,%sp@-
43464: 4878 61ff pea 61ff <D_MAX_EXP+0x5a00>
43468: 2f00 movel %d0,%sp@-
4346a: 4eb9 0004 4b58 jsr 44b58 <mknod>
43470: 4fef 0010 lea %sp@(16),%sp
43474: 4a80 tstl %d0
43476: 6d1a blts 43492 <create_disk+0x160> <== NEVER TAKEN
free(dd);
return RTEMS_UNSATISFIED;
}
}
*dd_entry = dd;
43478: 2484 movel %d4,%a2@
*dd_ptr = dd;
4347a: 206e 0014 moveal %fp@(20),%a0
*alloc_name_ptr = alloc_name;
return RTEMS_SUCCESSFUL;
4347e: 4280 clrl %d0
return RTEMS_UNSATISFIED;
}
}
*dd_entry = dd;
*dd_ptr = dd;
43480: 2084 movel %d4,%a0@
*alloc_name_ptr = alloc_name;
43482: 206e 0018 moveal %fp@(24),%a0
43486: 2086 movel %d6,%a0@
return RTEMS_SUCCESSFUL;
}
43488: 4cee 0cfc ffe0 moveml %fp@(-32),%d2-%d7/%a2-%a3
4348e: 4e5e unlk %fp
43490: 4e75 rts
}
}
if (name != NULL) {
if (mknod(alloc_name, 0777 | S_IFBLK, dev) < 0) {
free(alloc_name);
43492: 2f05 movel %d5,%sp@- <== NOT EXECUTED
43494: 45f9 0004 4528 lea 44528 <free>,%a2 <== NOT EXECUTED
4349a: 4e92 jsr %a2@ <== NOT EXECUTED
free(dd);
4349c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4349e: 4e92 jsr %a2@ <== NOT EXECUTED
return RTEMS_UNSATISFIED;
434a0: 508f addql #8,%sp <== NOT EXECUTED
434a2: 700d moveq #13,%d0 <== NOT EXECUTED
*dd_entry = dd;
*dd_ptr = dd;
*alloc_name_ptr = alloc_name;
return RTEMS_SUCCESSFUL;
}
434a4: 4cee 0cfc ffe0 moveml %fp@(-32),%d2-%d7/%a2-%a3 <== NOT EXECUTED
434aa: 4e5e unlk %fp <== NOT EXECUTED
434ac: 4e75 rts <== NOT EXECUTED
free(dd);
return RTEMS_UNSATISFIED;
}
}
*dd_entry = dd;
434ae: 2484 movel %d4,%a2@
*dd_ptr = dd;
434b0: 206e 0014 moveal %fp@(20),%a0
char **alloc_name_ptr
)
{
rtems_disk_device **dd_entry = create_disk_table_entry(dev);
rtems_disk_device *dd = NULL;
char *alloc_name = NULL;
434b4: 4286 clrl %d6
*dd_entry = dd;
*dd_ptr = dd;
*alloc_name_ptr = alloc_name;
return RTEMS_SUCCESSFUL;
434b6: 4280 clrl %d0
return RTEMS_UNSATISFIED;
}
}
*dd_entry = dd;
*dd_ptr = dd;
434b8: 2084 movel %d4,%a0@
*alloc_name_ptr = alloc_name;
434ba: 206e 0018 moveal %fp@(24),%a0
434be: 2086 movel %d6,%a0@
434c0: 60c6 bras 43488 <create_disk+0x156>
if (name != NULL) {
alloc_name = strdup(name);
if (alloc_name == NULL) {
free(dd);
434c2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
434c4: 4eb9 0004 4528 jsr 44528 <free> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
434ca: 588f addql #4,%sp <== NOT EXECUTED
434cc: 701a moveq #26,%d0 <== NOT EXECUTED
434ce: 6000 ff04 braw 433d4 <create_disk+0xa2> <== NOT EXECUTED
00044322 <data_to_part_desc.part.1>:
* RTEMS_SUCCESSFUL, if success;
* RTEMS_NO_MEMOTY, if cannot allocate memory for part_desc_t strucure;
* RTEMS_INTERNAL_ERROR, if other error occurs.
*/
static rtems_status_code
data_to_part_desc(uint8_t *data, rtems_part_desc_t **new_part_desc)
44322: 4e56 ffdc linkw %fp,#-36
44326: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@
return RTEMS_INTERNAL_ERROR;
}
*new_part_desc = NULL;
if ((part_desc = calloc(1, sizeof(rtems_part_desc_t))) == NULL)
4432a: 4878 0028 pea 28 <OPER2+0x14>
4432e: 4878 0001 pea 1 <ADD>
* RTEMS_SUCCESSFUL, if success;
* RTEMS_NO_MEMOTY, if cannot allocate memory for part_desc_t strucure;
* RTEMS_INTERNAL_ERROR, if other error occurs.
*/
static rtems_status_code
data_to_part_desc(uint8_t *data, rtems_part_desc_t **new_part_desc)
44332: 266e 000c moveal %fp@(12),%a3
44336: 286e 0008 moveal %fp@(8),%a4
if (new_part_desc == NULL)
{
return RTEMS_INTERNAL_ERROR;
}
*new_part_desc = NULL;
4433a: 4293 clrl %a3@
if ((part_desc = calloc(1, sizeof(rtems_part_desc_t))) == NULL)
4433c: 4eb9 0004 5024 jsr 45024 <calloc>
44342: 508f addql #8,%sp
44344: 2440 moveal %d0,%a2
44346: 4a80 tstl %d0
44348: 6700 00be beqw 44408 <data_to_part_desc.part.1+0xe6>
/* due to incorrect data alignment one have to align data first */
memcpy(&temp, data + RTEMS_IDE_PARTITION_START_OFFSET, sizeof(uint32_t));
part_desc->start = LE_TO_CPU_U32(temp);
memcpy(&temp, data + RTEMS_IDE_PARTITION_SIZE_OFFSET, sizeof(uint32_t));
4434c: 202c 000c movel %a4@(12),%d0
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
44350: 7218 moveq #24,%d1
44352: 2e00 movel %d0,%d7
44354: e2af lsrl %d1,%d7
44356: 7618 moveq #24,%d3
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
44358: 7a18 moveq #24,%d5
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
4435a: 2800 movel %d0,%d4
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
4435c: 7c18 moveq #24,%d6
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
4435e: e08c lsrl #8,%d4
part_desc->sys_type = *(data + RTEMS_IDE_PARTITION_SYS_TYPE_OFFSET);
/* read the offset start position and partition size in sectors */
/* due to incorrect data alignment one have to align data first */
memcpy(&temp, data + RTEMS_IDE_PARTITION_START_OFFSET, sizeof(uint32_t));
44360: 222c 0008 movel %a4@(8),%d1
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
44364: 2401 movel %d1,%d2
44366: e6aa lsrl %d3,%d2
44368: 2042 moveal %d2,%a0
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
4436a: 2400 movel %d0,%d2
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
4436c: 2601 movel %d1,%d3
4436e: e08b lsrl #8,%d3
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
44370: ebaa lsll %d5,%d2
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
44372: 2a00 movel %d0,%d5
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
44374: 2001 movel %d1,%d0
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
44376: e18d lsll #8,%d5
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
44378: eda8 lsll %d6,%d0
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
4437a: e189 lsll #8,%d1
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
4437c: 2c08 movel %a0,%d6
4437e: 0285 00ff 0000 andil #16711680,%d5
44384: 8487 orl %d7,%d2
44386: 0281 00ff 0000 andil #16711680,%d1
4438c: 8086 orl %d6,%d0
4438e: 8485 orl %d5,%d2
44390: 8081 orl %d1,%d0
{
return RTEMS_NO_MEMORY;
}
part_desc->bootable = *(data + RTEMS_IDE_PARTITION_BOOTABLE_OFFSET);
part_desc->sys_type = *(data + RTEMS_IDE_PARTITION_SYS_TYPE_OFFSET);
44392: 4285 clrl %d5
44394: 1a2c 0004 moveb %a4@(4),%d5
* true if partition type is extended, false otherwise
*/
static bool
is_extended(uint8_t type)
{
return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
44398: 2205 movel %d5,%d1
4439a: 0283 0000 ff00 andil #65280,%d3
443a0: 0284 0000 ff00 andil #65280,%d4
if ((part_desc = calloc(1, sizeof(rtems_part_desc_t))) == NULL)
{
return RTEMS_NO_MEMORY;
}
part_desc->bootable = *(data + RTEMS_IDE_PARTITION_BOOTABLE_OFFSET);
443a6: 1494 moveb %a4@,%a2@
443a8: 8083 orl %d3,%d0
443aa: 8484 orl %d4,%d2
443ac: 2540 0004 movel %d0,%a2@(4)
* true if partition type is extended, false otherwise
*/
static bool
is_extended(uint8_t type)
{
return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
443b0: 7005 moveq #5,%d0
{
return RTEMS_NO_MEMORY;
}
part_desc->bootable = *(data + RTEMS_IDE_PARTITION_BOOTABLE_OFFSET);
part_desc->sys_type = *(data + RTEMS_IDE_PARTITION_SYS_TYPE_OFFSET);
443b2: 1545 0001 moveb %d5,%a2@(1)
/* due to incorrect data alignment one have to align data first */
memcpy(&temp, data + RTEMS_IDE_PARTITION_START_OFFSET, sizeof(uint32_t));
part_desc->start = LE_TO_CPU_U32(temp);
memcpy(&temp, data + RTEMS_IDE_PARTITION_SIZE_OFFSET, sizeof(uint32_t));
part_desc->size = LE_TO_CPU_U32(temp);
443b6: 2542 0008 movel %d2,%a2@(8)
* true if partition type is extended, false otherwise
*/
static bool
is_extended(uint8_t type)
{
return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
443ba: b081 cmpl %d1,%d0
443bc: 673c beqs 443fa <data_to_part_desc.part.1+0xd8>
443be: 0c81 0000 0085 cmpil #133,%d1
443c4: 6734 beqs 443fa <data_to_part_desc.part.1+0xd8> <== NEVER TAKEN
DOS_P32MB_PARTITION,
FAT32_PARTITION ,FAT32_LBA_PARTITION,
FAT16_LBA_PARTITION
};
return (NULL != memchr(fat_part_types,type,sizeof(fat_part_types)));
443c6: 4878 0006 pea 6 <EXTENDSFDF>
443ca: 2f01 movel %d1,%sp@-
443cc: 4879 0006 22a5 pea 622a5 <fat_part_types.7627>
443d2: 4eb9 0005 3fd0 jsr 53fd0 <memchr>
443d8: 4fef 000c lea %sp@(12),%sp
* use partitions that are
* - extended
* or
* - FAT type and non-zero
*/
if (is_extended(part_desc->sys_type) ||
443dc: 4a80 tstl %d0
443de: 6704 beqs 443e4 <data_to_part_desc.part.1+0xc2>
((is_fat_partition(part_desc->sys_type)) && (part_desc->size != 0))) {
443e0: 4a82 tstl %d2
443e2: 6616 bnes 443fa <data_to_part_desc.part.1+0xd8> <== ALWAYS TAKEN
*new_part_desc = part_desc;
}
else {
/* empty partition */
free(part_desc);
443e4: 2f0a movel %a2,%sp@-
443e6: 4eb9 0004 5344 jsr 45344 <free>
443ec: 588f addql #4,%sp
}
return RTEMS_SUCCESSFUL;
443ee: 4280 clrl %d0
}
443f0: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4
443f6: 4e5e unlk %fp
443f8: 4e75 rts
* or
* - FAT type and non-zero
*/
if (is_extended(part_desc->sys_type) ||
((is_fat_partition(part_desc->sys_type)) && (part_desc->size != 0))) {
*new_part_desc = part_desc;
443fa: 268a movel %a2,%a3@
}
else {
/* empty partition */
free(part_desc);
}
return RTEMS_SUCCESSFUL;
443fc: 4280 clrl %d0
}
443fe: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4
44404: 4e5e unlk %fp
44406: 4e75 rts
*new_part_desc = NULL;
if ((part_desc = calloc(1, sizeof(rtems_part_desc_t))) == NULL)
{
return RTEMS_NO_MEMORY;
44408: 701a moveq #26,%d0 <== NOT EXECUTED
else {
/* empty partition */
free(part_desc);
}
return RTEMS_SUCCESSFUL;
}
4440a: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
44410: 4e5e unlk %fp <== NOT EXECUTED
0004251c <devFS_Show>:
#endif
#include "devfs.h"
void devFS_Show(void)
{
4251c: 4e56 ffe8 linkw %fp,#-24
rtems_filesystem_location_info_t *rootloc = &rtems_filesystem_root->location;
if (rootloc->mt_entry->ops == &devFS_ops) {
42520: 203c 0005 a39e movel #369566,%d0
#include "devfs.h"
void devFS_Show(void)
{
rtems_filesystem_location_info_t *rootloc = &rtems_filesystem_root->location;
42526: 2079 0005 b74c moveal 5b74c <rtems_current_user_env>,%a0
if (rootloc->mt_entry->ops == &devFS_ops) {
4252c: 2068 0004 moveal %a0@(4),%a0
42530: 2068 0014 moveal %a0@(20),%a0
#endif
#include "devfs.h"
void devFS_Show(void)
{
42534: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
rtems_filesystem_location_info_t *rootloc = &rtems_filesystem_root->location;
if (rootloc->mt_entry->ops == &devFS_ops) {
42538: b0a8 000c cmpl %a0@(12),%d0
4253c: 670a beqs 42548 <devFS_Show+0x2c> <== ALWAYS TAKEN
(unsigned long) current->minor
);
}
}
}
}
4253e: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
42544: 4e5e unlk %fp <== NOT EXECUTED
42546: 4e75 rts <== NOT EXECUTED
static inline const devFS_data *devFS_get_data(
const rtems_filesystem_location_info_t *loc
)
{
return (const devFS_data *) loc->mt_entry->immutable_fs_info;
42548: 2068 0010 moveal %a0@(16),%a0
rtems_filesystem_location_info_t *rootloc = &rtems_filesystem_root->location;
if (rootloc->mt_entry->ops == &devFS_ops) {
const devFS_data *data = devFS_get_data(rootloc);
size_t i = 0;
size_t n = data->count;
4254c: 2a28 0004 movel %a0@(4),%d5
devFS_node *nodes = data->nodes;
42550: 2450 moveal %a0@,%a2
for (i = 0; i < n; ++i) {
42552: 67ea beqs 4253e <devFS_Show+0x22> <== NEVER TAKEN
42554: 4284 clrl %d4
if (current->name != NULL) {
size_t j = 0;
size_t m = current->namelen;
printk("/");
42556: 47f9 0004 36a8 lea 436a8 <printk>,%a3
devFS_node *nodes = data->nodes;
for (i = 0; i < n; ++i) {
devFS_node *current = nodes + i;
if (current->name != NULL) {
4255c: 4a92 tstl %a2@
4255e: 6742 beqs 425a2 <devFS_Show+0x86>
size_t j = 0;
size_t m = current->namelen;
42560: 262a 0004 movel %a2@(4),%d3
printk("/");
42564: 4879 0005 a3f2 pea 5a3f2 <devFS_ops+0x54>
for (j = 0; j < m; ++j) {
4256a: 4282 clrl %d2
if (current->name != NULL) {
size_t j = 0;
size_t m = current->namelen;
printk("/");
4256c: 4e93 jsr %a3@
for (j = 0; j < m; ++j) {
4256e: 588f addql #4,%sp
42570: 4a83 tstl %d3
42572: 671a beqs 4258e <devFS_Show+0x72> <== NEVER TAKEN
printk("%c", current->name [j]);
42574: 2052 moveal %a2@,%a0
42576: 1030 2800 moveb %a0@(00000000,%d2:l),%d0
if (current->name != NULL) {
size_t j = 0;
size_t m = current->namelen;
printk("/");
for (j = 0; j < m; ++j) {
4257a: 5282 addql #1,%d2
printk("%c", current->name [j]);
4257c: 49c0 extbl %d0
4257e: 2f00 movel %d0,%sp@-
42580: 4879 0005 a3fe pea 5a3fe <devFS_ops+0x60>
42586: 4e93 jsr %a3@
if (current->name != NULL) {
size_t j = 0;
size_t m = current->namelen;
printk("/");
for (j = 0; j < m; ++j) {
42588: 508f addql #8,%sp
4258a: b682 cmpl %d2,%d3
4258c: 66e6 bnes 42574 <devFS_Show+0x58>
printk("%c", current->name [j]);
}
printk(
4258e: 2f2a 000c movel %a2@(12),%sp@-
42592: 2f2a 0008 movel %a2@(8),%sp@-
42596: 4879 0005 a3f4 pea 5a3f4 <devFS_ops+0x56>
4259c: 4e93 jsr %a3@
4259e: 4fef 000c lea %sp@(12),%sp
const devFS_data *data = devFS_get_data(rootloc);
size_t i = 0;
size_t n = data->count;
devFS_node *nodes = data->nodes;
for (i = 0; i < n; ++i) {
425a2: 5284 addql #1,%d4
425a4: 45ea 0014 lea %a2@(20),%a2
425a8: ba84 cmpl %d4,%d5
425aa: 66b0 bnes 4255c <devFS_Show+0x40>
(unsigned long) current->minor
);
}
}
}
}
425ac: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
425b2: 4e5e unlk %fp
...
0004c3bc <devFS_eval_path>:
}
void devFS_eval_path(
rtems_filesystem_eval_path_context_t *ctx
)
{
4c3bc: 4e56 ffdc linkw %fp,#-36
4c3c0: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
4c3c4: 2a6e 0008 moveal %fp@(8),%a5
)
{
size_t i = 0;
size_t n = data->count;
devFS_node *nodes = data->nodes;
devFS_node *node = NULL;
4c3c8: 4283 clrl %d3
devFS_node *free_node = NULL;
4c3ca: 97cb subal %a3,%a3
for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {
4c3cc: 4282 clrl %d2
devFS_node *current = nodes + i;
if (current->name != NULL) {
if (
current->namelen == pathlen
&& memcmp(current->name, path, pathlen) == 0
4c3ce: 49f9 0004 e4f4 lea 4e4f4 <memcmp>,%a4
static inline const devFS_data *devFS_get_data(
const rtems_filesystem_location_info_t *loc
)
{
return (const devFS_data *) loc->mt_entry->immutable_fs_info;
4c3d4: 206d 002c moveal %a5@(44),%a0
4c3d8: 2068 0010 moveal %a0@(16),%a0
4c3dc: 2450 moveal %a0@,%a2
devFS_node *nodes = data->nodes;
devFS_node *node = NULL;
devFS_node *free_node = NULL;
for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {
devFS_node *current = nodes + i;
4c3de: 220a movel %a2,%d1
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
}
4c3e0: 282d 0004 movel %a5@(4),%d4
4c3e4: 2c15 movel %a5@,%d6
size_t pathlen,
devFS_node **free_node_ptr
)
{
size_t i = 0;
size_t n = data->count;
4c3e6: 2a28 0004 movel %a0@(4),%d5
devFS_node *nodes = data->nodes;
devFS_node *node = NULL;
devFS_node *free_node = NULL;
for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {
4c3ea: ba82 cmpl %d2,%d5
4c3ec: 6722 beqs 4c410 <devFS_eval_path+0x54>
devFS_node *current = nodes + i;
if (current->name != NULL) {
4c3ee: 2012 movel %a2@,%d0
4c3f0: 6708 beqs 4c3fa <devFS_eval_path+0x3e>
if (
4c3f2: 220b movel %a3,%d1
4c3f4: b8aa 0004 cmpl %a2@(4),%d4
4c3f8: 6736 beqs 4c430 <devFS_eval_path+0x74>
size_t n = data->count;
devFS_node *nodes = data->nodes;
devFS_node *node = NULL;
devFS_node *free_node = NULL;
for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {
4c3fa: 5282 addql #1,%d2
4c3fc: 4a81 tstl %d1
4c3fe: 6704 beqs 4c404 <devFS_eval_path+0x48>
4c400: 4a83 tstl %d3
4c402: 6642 bnes 4c446 <devFS_eval_path+0x8a>
4c404: 45ea 0014 lea %a2@(20),%a2
4c408: 2641 moveal %d1,%a3
devFS_node *current = nodes + i;
4c40a: 220a movel %a2,%d1
size_t n = data->count;
devFS_node *nodes = data->nodes;
devFS_node *node = NULL;
devFS_node *free_node = NULL;
for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {
4c40c: ba82 cmpl %d2,%d5
4c40e: 66de bnes 4c3ee <devFS_eval_path+0x32>
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
}
4c410: 202d 0010 movel %a5@(16),%d0
rtems_filesystem_eval_path_get_pathlen(ctx),
&free_node
);
int eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if (node != NULL) {
4c414: 4a83 tstl %d3
4c416: 6750 beqs 4c468 <devFS_eval_path+0xac>
if ((eval_flags & RTEMS_FS_EXCLUSIVE) == 0) {
4c418: 0800 0006 btst #6,%d0
4c41c: 6632 bnes 4c450 <devFS_eval_path+0x94> <== ALWAYS TAKEN
currentloc->node_access = node;
4c41e: 2b43 0020 movel %d3,%a5@(32)
static inline void rtems_filesystem_eval_path_clear_path(
rtems_filesystem_eval_path_context_t *ctx
)
{
ctx->pathlen = 0;
4c422: 42ad 0004 clrl %a5@(4)
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
}
4c426: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
4c42c: 4e5e unlk %fp
4c42e: 4e75 rts
devFS_node *current = nodes + i;
if (current->name != NULL) {
if (
current->namelen == pathlen
&& memcmp(current->name, path, pathlen) == 0
4c430: 2f04 movel %d4,%sp@-
4c432: 2f06 movel %d6,%sp@-
4c434: 2f00 movel %d0,%sp@-
4c436: 4e94 jsr %a4@
4c438: 4fef 000c lea %sp@(12),%sp
4c43c: 220b movel %a3,%d1
4c43e: 4a80 tstl %d0
4c440: 66b8 bnes 4c3fa <devFS_eval_path+0x3e>
4c442: 260a movel %a2,%d3
4c444: 60b4 bras 4c3fa <devFS_eval_path+0x3e>
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
}
4c446: 202d 0010 movel %a5@(16),%d0
&free_node
);
int eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if (node != NULL) {
if ((eval_flags & RTEMS_FS_EXCLUSIVE) == 0) {
4c44a: 0800 0006 btst #6,%d0
4c44e: 67ce beqs 4c41e <devFS_eval_path+0x62> <== ALWAYS TAKEN
currentloc->node_access = node;
rtems_filesystem_eval_path_clear_path(ctx);
} else {
rtems_filesystem_eval_path_error(ctx, EEXIST);
4c450: 4878 0011 pea 11 <INVALID_OPERATION+0x1>
4c454: 2f0d movel %a5,%sp@-
4c456: 4eb9 0004 52ae jsr 452ae <rtems_filesystem_eval_path_error>
4c45c: 508f addql #8,%sp
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
}
4c45e: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
4c464: 4e5e unlk %fp
4c466: 4e75 rts
rtems_filesystem_eval_path_clear_path(ctx);
} else {
rtems_filesystem_eval_path_error(ctx, EEXIST);
}
} else {
if ((eval_flags & RTEMS_FS_MAKE) != 0) {
4c468: 0800 0005 btst #5,%d0
4c46c: 6728 beqs 4c496 <devFS_eval_path+0xda> <== NEVER TAKEN
if (free_node != NULL) {
4c46e: 4a8b tstl %a3
4c470: 673c beqs 4c4ae <devFS_eval_path+0xf2>
free_node->mode = S_IRWXU | S_IRWXG | S_IRWXO;
4c472: 203c 0000 01ff movel #511,%d0
4c478: 2740 0010 movel %d0,%a3@(16)
currentloc->node_access = free_node;
4c47c: 2b4b 0020 movel %a3,%a5@(32)
rtems_filesystem_eval_path_context_t *ctx,
const char *token,
size_t tokenlen
)
{
ctx->token = token;
4c480: 2b46 0008 movel %d6,%a5@(8)
ctx->tokenlen = tokenlen;
4c484: 2b44 000c movel %d4,%a5@(12)
static inline void rtems_filesystem_eval_path_clear_path(
rtems_filesystem_eval_path_context_t *ctx
)
{
ctx->pathlen = 0;
4c488: 42ad 0004 clrl %a5@(4)
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
}
4c48c: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
4c492: 4e5e unlk %fp
4c494: 4e75 rts
rtems_filesystem_eval_path_clear_path(ctx);
} else {
rtems_filesystem_eval_path_error(ctx, ENOSPC);
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
4c496: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4c49a: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4c49c: 4eb9 0004 52ae jsr 452ae <rtems_filesystem_eval_path_error><== NOT EXECUTED
4c4a2: 508f addql #8,%sp <== NOT EXECUTED
}
}
}
4c4a4: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
4c4aa: 4e5e unlk %fp <== NOT EXECUTED
4c4ac: 4e75 rts <== NOT EXECUTED
rtems_filesystem_eval_path_get_path(ctx),
rtems_filesystem_eval_path_get_pathlen(ctx)
);
rtems_filesystem_eval_path_clear_path(ctx);
} else {
rtems_filesystem_eval_path_error(ctx, ENOSPC);
4c4ae: 4878 001c pea 1c <FLT_MANT_DIG+0x4>
4c4b2: 2f0d movel %a5,%sp@-
4c4b4: 4eb9 0004 52ae jsr 452ae <rtems_filesystem_eval_path_error>
4c4ba: 508f addql #8,%sp
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
}
4c4bc: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
4c4c2: 4e5e unlk %fp
...
00043e34 <devFS_mknod>:
dev_t dev
)
{
int rv = 0;
if (namelen != 3 || name [0] != 'd' || name [1] != 'e' || name [2] != 'v') {
43e34: 7003 moveq #3,%d0
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
43e36: 4e56 ffec linkw %fp,#-20
43e3a: 48d7 043c moveml %d2-%d5/%a2,%sp@
43e3e: 246e 000c moveal %fp@(12),%a2
43e42: 242e 0010 movel %fp@(16),%d2
43e46: 262e 0014 movel %fp@(20),%d3
43e4a: 2a2e 0018 movel %fp@(24),%d5
43e4e: 282e 001c movel %fp@(28),%d4
int rv = 0;
if (namelen != 3 || name [0] != 'd' || name [1] != 'e' || name [2] != 'v') {
43e52: b082 cmpl %d2,%d0
43e54: 675e beqs 43eb4 <devFS_mknod+0x80>
if (S_ISBLK(mode) || S_ISCHR(mode)) {
43e56: 2003 movel %d3,%d0
43e58: 0280 0000 f000 andil #61440,%d0
43e5e: 0c80 0000 6000 cmpil #24576,%d0
43e64: 6708 beqs 43e6e <devFS_mknod+0x3a>
43e66: 0c80 0000 2000 cmpil #8192,%d0
43e6c: 667e bnes 43eec <devFS_mknod+0xb8>
char *dupname = malloc(namelen);
43e6e: 2f02 movel %d2,%sp@-
43e70: 4eb9 0004 449c jsr 4449c <malloc>
if (dupname != NULL) {
43e76: 588f addql #4,%sp
43e78: 4a80 tstl %d0
43e7a: 6700 008a beqw 43f06 <devFS_mknod+0xd2>
devFS_node *node = parentloc->node_access;
43e7e: 206e 0008 moveal %fp@(8),%a0
43e82: 2068 0008 moveal %a0@(8),%a0
node->name = dupname;
43e86: 2080 movel %d0,%a0@
node->namelen = namelen;
43e88: 2142 0004 movel %d2,%a0@(4)
node->major = rtems_filesystem_dev_major_t(dev);
43e8c: 2145 0008 movel %d5,%a0@(8)
node->minor = rtems_filesystem_dev_minor_t(dev);
43e90: 2144 000c movel %d4,%a0@(12)
node->mode = mode;
43e94: 2143 0010 movel %d3,%a0@(16)
memcpy(dupname, name, namelen);
43e98: 2f02 movel %d2,%sp@-
43e9a: 2f0a movel %a2,%sp@-
43e9c: 2f00 movel %d0,%sp@-
43e9e: 4eb9 0004 e584 jsr 4e584 <memcpy>
43ea4: 4fef 000c lea %sp@(12),%sp
size_t namelen,
mode_t mode,
dev_t dev
)
{
int rv = 0;
43ea8: 4280 clrl %d0
rv = -1;
}
}
return rv;
}
43eaa: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
43eb0: 4e5e unlk %fp
43eb2: 4e75 rts
dev_t dev
)
{
int rv = 0;
if (namelen != 3 || name [0] != 'd' || name [1] != 'e' || name [2] != 'v') {
43eb4: 7264 moveq #100,%d1
43eb6: 1012 moveb %a2@,%d0
43eb8: 49c0 extbl %d0
43eba: b280 cmpl %d0,%d1
43ebc: 6698 bnes 43e56 <devFS_mknod+0x22> <== NEVER TAKEN
43ebe: 123c 0065 moveb #101,%d1
43ec2: 102a 0001 moveb %a2@(1),%d0
43ec6: 49c0 extbl %d0
43ec8: b280 cmpl %d0,%d1
43eca: 668a bnes 43e56 <devFS_mknod+0x22> <== NEVER TAKEN
43ecc: 123c 0076 moveb #118,%d1
43ed0: 102a 0002 moveb %a2@(2),%d0
43ed4: 49c0 extbl %d0
43ed6: b280 cmpl %d0,%d1
43ed8: 6600 ff7c bnew 43e56 <devFS_mknod+0x22>
size_t namelen,
mode_t mode,
dev_t dev
)
{
int rv = 0;
43edc: 4280 clrl %d0
} else {
errno = ENOTSUP;
rv = -1;
}
} else {
if (!S_ISDIR(mode)) {
43ede: 0283 0000 f000 andil #61440,%d3
43ee4: 0c83 0000 4000 cmpil #16384,%d3
43eea: 67be beqs 43eaa <devFS_mknod+0x76> <== ALWAYS TAKEN
errno = ENOTSUP;
43eec: 4eb9 0004 dc50 jsr 4dc50 <__errno>
43ef2: 2040 moveal %d0,%a0
rv = -1;
43ef4: 70ff moveq #-1,%d0
}
}
return rv;
}
43ef6: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
errno = ENOTSUP;
rv = -1;
}
} else {
if (!S_ISDIR(mode)) {
errno = ENOTSUP;
43efc: 20bc 0000 0086 movel #134,%a0@
rv = -1;
}
}
return rv;
}
43f02: 4e5e unlk %fp
43f04: 4e75 rts
node->major = rtems_filesystem_dev_major_t(dev);
node->minor = rtems_filesystem_dev_minor_t(dev);
node->mode = mode;
memcpy(dupname, name, namelen);
} else {
errno = ENOMEM;
43f06: 4eb9 0004 dc50 jsr 4dc50 <__errno>
43f0c: 720c moveq #12,%d1
43f0e: 2040 moveal %d0,%a0
rv = -1;
43f10: 70ff moveq #-1,%d0
rv = -1;
}
}
return rv;
}
43f12: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
node->major = rtems_filesystem_dev_major_t(dev);
node->minor = rtems_filesystem_dev_minor_t(dev);
node->mode = mode;
memcpy(dupname, name, namelen);
} else {
errno = ENOMEM;
43f18: 2081 movel %d1,%a0@
rv = -1;
}
}
return rv;
}
43f1a: 4e5e unlk %fp
...
000432d6 <disk_lock>:
*/
static volatile bool diskdevs_protected;
static rtems_status_code
disk_lock(void)
{
432d6: 4e56 0000 linkw %fp,#0
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_semaphore_obtain(diskdevs_mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
432da: 42a7 clrl %sp@-
432dc: 42a7 clrl %sp@-
432de: 2f39 0006 3632 movel 63632 <diskdevs_mutex>,%sp@-
432e4: 4eb9 0004 8c48 jsr 48c48 <rtems_semaphore_obtain>
if (sc == RTEMS_SUCCESSFUL) {
432ea: 4fef 000c lea %sp@(12),%sp
432ee: 4a80 tstl %d0
432f0: 6706 beqs 432f8 <disk_lock+0x22> <== ALWAYS TAKEN
diskdevs_protected = true;
return RTEMS_SUCCESSFUL;
} else {
return RTEMS_NOT_CONFIGURED;
432f2: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
432f4: 4e5e unlk %fp <== NOT EXECUTED
432f6: 4e75 rts <== NOT EXECUTED
432f8: 4e5e unlk %fp
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_semaphore_obtain(diskdevs_mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc == RTEMS_SUCCESSFUL) {
diskdevs_protected = true;
432fa: 7201 moveq #1,%d1
432fc: 13c1 0006 3630 moveb %d1,63630 <diskdevs_protected>
return RTEMS_SUCCESSFUL;
} else {
return RTEMS_NOT_CONFIGURED;
}
}
00043304 <disk_unlock>:
static void
disk_unlock(void)
{
43304: 4e56 0000 linkw %fp,#0
rtems_status_code sc = RTEMS_SUCCESSFUL;
diskdevs_protected = false;
43308: 4200 clrb %d0
sc = rtems_semaphore_release(diskdevs_mutex);
4330a: 2f39 0006 3632 movel 63632 <diskdevs_mutex>,%sp@-
static void
disk_unlock(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
diskdevs_protected = false;
43310: 13c0 0006 3630 moveb %d0,63630 <diskdevs_protected>
sc = rtems_semaphore_release(diskdevs_mutex);
43316: 4eb9 0004 8da0 jsr 48da0 <rtems_semaphore_release>
if (sc != RTEMS_SUCCESSFUL) {
4331c: 588f addql #4,%sp
4331e: 4a80 tstl %d0
43320: 6604 bnes 43326 <disk_unlock+0x22> <== NEVER TAKEN
/* FIXME: Error number */
rtems_fatal_error_occurred(0xdeadbeef);
}
}
43322: 4e5e unlk %fp
43324: 4e75 rts
diskdevs_protected = false;
sc = rtems_semaphore_release(diskdevs_mutex);
if (sc != RTEMS_SUCCESSFUL) {
/* FIXME: Error number */
rtems_fatal_error_occurred(0xdeadbeef);
43326: 2f3c dead beef movel #-559038737,%sp@- <== NOT EXECUTED
4332c: 4eb9 0004 93ec jsr 493ec <rtems_fatal_error_occurred> <== NOT EXECUTED
00044e0a <drainOutput.part.0>:
/*
* Drain output queue
*/
static void
drainOutput (struct rtems_termios_tty *tty)
44e0a: 4e56 fff4 linkw %fp,#-12
44e0e: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
{
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {
rtems_interrupt_disable (level);
44e12: 243c 0000 0700 movel #1792,%d2
44e18: 2002 movel %d2,%d0
/*
* Drain output queue
*/
static void
drainOutput (struct rtems_termios_tty *tty)
44e1a: 246e 0008 moveal %fp@(8),%a2
{
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {
rtems_interrupt_disable (level);
44e1e: 40c1 movew %sr,%d1
44e20: 8081 orl %d1,%d0
44e22: 46c0 movew %d0,%sr
while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {
44e24: 206a 0084 moveal %a2@(132),%a0
44e28: 202a 0080 movel %a2@(128),%d0
44e2c: b088 cmpl %a0,%d0
44e2e: 6734 beqs 44e64 <drainOutput.part.0+0x5a>
44e30: 47f9 0004 7458 lea 47458 <rtems_semaphore_obtain>,%a3
tty->rawOutBufState = rob_wait;
44e36: 7002 moveq #2,%d0
44e38: 2540 0094 movel %d0,%a2@(148)
rtems_interrupt_enable (level);
44e3c: 46c1 movew %d1,%sr
sc = rtems_semaphore_obtain(
44e3e: 42a7 clrl %sp@-
44e40: 42a7 clrl %sp@-
44e42: 2f2a 008c movel %a2@(140),%sp@-
44e46: 4e93 jsr %a3@
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
44e48: 4fef 000c lea %sp@(12),%sp
44e4c: 4a80 tstl %d0
44e4e: 6620 bnes 44e70 <drainOutput.part.0+0x66> <== NEVER TAKEN
rtems_fatal_error_occurred (sc);
rtems_interrupt_disable (level);
44e50: 2002 movel %d2,%d0
44e52: 40c1 movew %sr,%d1
44e54: 8081 orl %d1,%d0
44e56: 46c0 movew %d0,%sr
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {
rtems_interrupt_disable (level);
while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {
44e58: 206a 0084 moveal %a2@(132),%a0
44e5c: 202a 0080 movel %a2@(128),%d0
44e60: b088 cmpl %a0,%d0
44e62: 66d2 bnes 44e36 <drainOutput.part.0+0x2c>
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
rtems_interrupt_disable (level);
}
rtems_interrupt_enable (level);
44e64: 46c1 movew %d1,%sr
}
}
44e66: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
44e6c: 4e5e unlk %fp
44e6e: 4e75 rts
tty->rawOutBufState = rob_wait;
rtems_interrupt_enable (level);
sc = rtems_semaphore_obtain(
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
44e70: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44e72: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred> <== NOT EXECUTED
00043624 <dup2>:
*/
int dup2(
int fildes,
int fildes2
)
{
43624: 4e56 ffa8 linkw %fp,#-88
43628: 48d7 041c moveml %d2-%d4/%a2,%sp@
/*
* If fildes is not valid, then fildes2 should not be closed.
*/
status = fstat( fildes, &buf );
4362c: 240e movel %fp,%d2
4362e: 0682 ffff ffba addil #-70,%d2
43634: 45f9 0004 3cf0 lea 43cf0 <fstat>,%a2
4363a: 2f02 movel %d2,%sp@-
*/
int dup2(
int fildes,
int fildes2
)
{
4363c: 262e 0008 movel %fp@(8),%d3
43640: 282e 000c movel %fp@(12),%d4
/*
* If fildes is not valid, then fildes2 should not be closed.
*/
status = fstat( fildes, &buf );
43644: 2f03 movel %d3,%sp@-
43646: 4e92 jsr %a2@
if ( status == -1 )
43648: 508f addql #8,%sp
4364a: 72ff moveq #-1,%d1
4364c: b280 cmpl %d0,%d1
4364e: 6728 beqs 43678 <dup2+0x54>
/*
* If fildes2 is not valid, then we should not do anything either.
*/
status = fstat( fildes2, &buf );
43650: 2f02 movel %d2,%sp@-
43652: 2f04 movel %d4,%sp@-
43654: 4e92 jsr %a2@
if ( status == -1 )
43656: 508f addql #8,%sp
43658: 72ff moveq #-1,%d1
4365a: b280 cmpl %d0,%d1
4365c: 671a beqs 43678 <dup2+0x54> <== NEVER TAKEN
/*
* This fcntl handles everything else.
*/
return fcntl( fildes, F_DUPFD, fildes2 );
4365e: 2f04 movel %d4,%sp@-
43660: 42a7 clrl %sp@-
43662: 2f03 movel %d3,%sp@-
43664: 4eb9 0004 38f4 jsr 438f4 <fcntl>
4366a: 4fef 000c lea %sp@(12),%sp
}
4366e: 4cee 041c ffa8 moveml %fp@(-88),%d2-%d4/%a2
43674: 4e5e unlk %fp
43676: 4e75 rts
* If fildes is not valid, then fildes2 should not be closed.
*/
status = fstat( fildes, &buf );
if ( status == -1 )
return -1;
43678: 70ff moveq #-1,%d0
/*
* This fcntl handles everything else.
*/
return fcntl( fildes, F_DUPFD, fildes2 );
}
4367a: 4cee 041c ffa8 moveml %fp@(-88),%d2-%d4/%a2
43680: 4e5e unlk %fp <== NOT EXECUTED
00045c08 <echo>:
/*
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
45c08: 4e56 fff0 linkw %fp,#-16
45c0c: 222e 0008 movel %fp@(8),%d1
45c10: 48d7 040c moveml %d2-%d3/%a2,%sp@
45c14: 246e 000c moveal %fp@(12),%a2
if ((tty->termios.c_lflag & ECHOCTL) &&
45c18: 242a 003c movel %a2@(60),%d2
/*
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
45c1c: 1001 moveb %d1,%d0
if ((tty->termios.c_lflag & ECHOCTL) &&
45c1e: 0282 0000 0200 andil #512,%d2
iscntrl(c) && (c != '\t') && (c != '\n')) {
45c24: 0280 0000 00ff andil #255,%d0
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
if ((tty->termios.c_lflag & ECHOCTL) &&
45c2a: 4a82 tstl %d2
45c2c: 6720 beqs 45c4e <echo+0x46> <== NEVER TAKEN
iscntrl(c) && (c != '\t') && (c != '\n')) {
45c2e: 2079 0005 e3cc moveal 5e3cc <__ctype_ptr__>,%a0
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
if ((tty->termios.c_lflag & ECHOCTL) &&
45c34: 7620 moveq #32,%d3
iscntrl(c) && (c != '\t') && (c != '\n')) {
45c36: 1430 0801 moveb %a0@(00000001,%d0:l),%d2
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
if ((tty->termios.c_lflag & ECHOCTL) &&
45c3a: c483 andl %d3,%d2
45c3c: 4a02 tstb %d2
45c3e: 670e beqs 45c4e <echo+0x46>
iscntrl(c) && (c != '\t') && (c != '\n')) {
45c40: 7409 moveq #9,%d2
45c42: b480 cmpl %d0,%d2
45c44: 6708 beqs 45c4e <echo+0x46>
45c46: 163c 000a moveb #10,%d3
45c4a: b680 cmpl %d0,%d3
45c4c: 6614 bnes 45c62 <echo+0x5a>
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
tty->column += 2;
} else {
oproc (c, tty);
45c4e: 2f0a movel %a2,%sp@-
45c50: 2f00 movel %d0,%sp@-
45c52: 4eba fe04 jsr %pc@(45a58 <oproc>)
45c56: 508f addql #8,%sp
}
}
45c58: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2
45c5e: 4e5e unlk %fp
45c60: 4e75 rts
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
45c62: 2f0a movel %a2,%sp@-
45c64: 4878 0002 pea 2 <DOUBLE_FLOAT>
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
45c68: 7040 moveq #64,%d0
rtems_termios_puts (echobuf, 2, tty);
45c6a: 486e fffe pea %fp@(-2)
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
45c6e: b181 eorl %d0,%d1
{
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
45c70: 745e moveq #94,%d2
echobuf[1] = c ^ 0x40;
45c72: 1d41 ffff moveb %d1,%fp@(-1)
{
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
45c76: 1d42 fffe moveb %d2,%fp@(-2)
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
45c7a: 4eb9 0004 5954 jsr 45954 <rtems_termios_puts>
45c80: 4fef 000c lea %sp@(12),%sp
tty->column += 2;
45c84: 54aa 0028 addql #2,%a2@(40)
} else {
oproc (c, tty);
}
}
45c88: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2
45c8e: 4e5e unlk %fp <== NOT EXECUTED
00064e70 <endgrent>:
void endgrent(void)
{
64e70: 4e56 0000 linkw %fp,#0
if (group_fp != NULL)
64e74: 2039 0009 f3dc movel 9f3dc <group_fp>,%d0
64e7a: 670a beqs 64e86 <endgrent+0x16> <== NEVER TAKEN
fclose(group_fp);
64e7c: 2f00 movel %d0,%sp@-
64e7e: 4eb9 0007 78d4 jsr 778d4 <fclose>
64e84: 588f addql #4,%sp
}
64e86: 4e5e unlk %fp
...
00064d26 <endpwent>:
void endpwent(void)
{
64d26: 4e56 0000 linkw %fp,#0
if (passwd_fp != NULL)
64d2a: 2039 0009 f302 movel 9f302 <passwd_fp>,%d0
64d30: 670a beqs 64d3c <endpwent+0x16> <== NEVER TAKEN
fclose(passwd_fp);
64d32: 2f00 movel %d0,%sp@-
64d34: 4eb9 0007 78d4 jsr 778d4 <fclose>
64d3a: 588f addql #4,%sp
}
64d3c: 4e5e unlk %fp <== NOT EXECUTED
00045c92 <erase.part.2>:
* Erase a character or line
* FIXME: Needs support for WERASE and ECHOPRT.
* FIXME: Some of the tests should check for IEXTEN, too.
*/
static void
erase (struct rtems_termios_tty *tty, int lineFlag)
45c92: 4e56 ffe0 linkw %fp,#-32
45c96: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
45c9a: 246e 0008 moveal %fp@(8),%a2
tty->column--;
}
}
else {
if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {
rtems_termios_puts ("\b \b", 3, tty);
45c9e: 47f9 0004 5954 lea 45954 <rtems_termios_puts>,%a3
* Erase a character or line
* FIXME: Needs support for WERASE and ECHOPRT.
* FIXME: Some of the tests should check for IEXTEN, too.
*/
static void
erase (struct rtems_termios_tty *tty, int lineFlag)
45ca4: 282e 000c movel %fp@(12),%d4
echo ('\n', tty);
return;
}
}
while (tty->ccount) {
45ca8: 202a 0020 movel %a2@(32),%d0
45cac: 676e beqs 45d1c <erase.part.2+0x8a>
unsigned char c = tty->cbuf[--tty->ccount];
45cae: 5380 subql #1,%d0
45cb0: 206a 001c moveal %a2@(28),%a0
if (tty->termios.c_lflag & ECHO) {
45cb4: 262a 003c movel %a2@(60),%d3
return;
}
}
while (tty->ccount) {
unsigned char c = tty->cbuf[--tty->ccount];
45cb8: 2540 0020 movel %d0,%a2@(32)
45cbc: 1230 0800 moveb %a0@(00000000,%d0:l),%d1
if (tty->termios.c_lflag & ECHO) {
45cc0: 44c3 movew %d3,%ccr
45cc2: 6a54 bpls 45d18 <erase.part.2+0x86> <== NEVER TAKEN
if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {
45cc4: 4a84 tstl %d4
45cc6: 6608 bnes 45cd0 <erase.part.2+0x3e>
45cc8: 0803 0004 btst #4,%d3
45ccc: 6700 0142 beqw 45e10 <erase.part.2+0x17e>
echo (tty->termios.c_cc[VERASE], tty);
} else if (c == '\t') {
45cd0: 7409 moveq #9,%d2
45cd2: 0281 0000 00ff andil #255,%d1
45cd8: b481 cmpl %d1,%d2
45cda: 6700 0096 beqw 45d72 <erase.part.2+0xe0>
rtems_termios_puts ("\b", 1, tty);
tty->column--;
}
}
else {
if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {
45cde: 2401 movel %d1,%d2
45ce0: 5282 addql #1,%d2
45ce2: 7a20 moveq #32,%d5
45ce4: 2079 0005 e3cc moveal 5e3cc <__ctype_ptr__>,%a0
45cea: 1030 2800 moveb %a0@(00000000,%d2:l),%d0
45cee: c085 andl %d5,%d0
45cf0: 4a00 tstb %d0
45cf2: 6632 bnes 45d26 <erase.part.2+0x94> <== NEVER TAKEN
45cf4: 49f9 0004 5954 lea 45954 <rtems_termios_puts>,%a4
rtems_termios_puts ("\b \b", 3, tty);
if (tty->column)
tty->column--;
}
if (!iscntrl (c) || (tty->termios.c_lflag & ECHOCTL)) {
rtems_termios_puts ("\b \b", 3, tty);
45cfa: 2f0a movel %a2,%sp@-
45cfc: 4878 0003 pea 3 <DIVIDE>
45d00: 4879 0005 d40b pea 5d40b <rtems_termios_baud_table+0x107>
45d06: 4e94 jsr %a4@
if (tty->column)
45d08: 202a 0028 movel %a2@(40),%d0
45d0c: 4fef 000c lea %sp@(12),%sp
45d10: 6706 beqs 45d18 <erase.part.2+0x86> <== NEVER TAKEN
tty->column--;
45d12: 5380 subql #1,%d0
45d14: 2540 0028 movel %d0,%a2@(40)
}
}
}
if (!lineFlag)
45d18: 4a84 tstl %d4
45d1a: 668c bnes 45ca8 <erase.part.2+0x16>
break;
}
}
45d1c: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4
45d22: 4e5e unlk %fp
45d24: 4e75 rts
rtems_termios_puts ("\b", 1, tty);
tty->column--;
}
}
else {
if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {
45d26: 0803 0009 btst #9,%d3 <== NOT EXECUTED
45d2a: 67ec beqs 45d18 <erase.part.2+0x86> <== NOT EXECUTED
rtems_termios_puts ("\b \b", 3, tty);
45d2c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45d2e: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
45d32: 49f9 0004 5954 lea 45954 <rtems_termios_puts>,%a4 <== NOT EXECUTED
45d38: 4879 0005 d40b pea 5d40b <rtems_termios_baud_table+0x107> <== NOT EXECUTED
45d3e: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->column)
45d40: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
45d44: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45d48: 6600 00e0 bnew 45e2a <erase.part.2+0x198> <== NOT EXECUTED
tty->column--;
}
if (!iscntrl (c) || (tty->termios.c_lflag & ECHOCTL)) {
45d4c: 2079 0005 e3cc moveal 5e3cc <__ctype_ptr__>,%a0 <== NOT EXECUTED
45d52: 7220 moveq #32,%d1 <== NOT EXECUTED
45d54: 1030 2800 moveb %a0@(00000000,%d2:l),%d0 <== NOT EXECUTED
45d58: c081 andl %d1,%d0 <== NOT EXECUTED
45d5a: 4a00 tstb %d0 <== NOT EXECUTED
45d5c: 679c beqs 45cfa <erase.part.2+0x68> <== NOT EXECUTED
45d5e: 202a 003c movel %a2@(60),%d0 <== NOT EXECUTED
45d62: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED
45d68: 6690 bnes 45cfa <erase.part.2+0x68> <== NOT EXECUTED
if (tty->column)
tty->column--;
}
}
}
if (!lineFlag)
45d6a: 4a84 tstl %d4 <== NOT EXECUTED
45d6c: 6600 ff3a bnew 45ca8 <erase.part.2+0x16> <== NOT EXECUTED
45d70: 60aa bras 45d1c <erase.part.2+0x8a> <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO) {
if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {
echo (tty->termios.c_cc[VERASE], tty);
} else if (c == '\t') {
int col = tty->read_start_column;
45d72: 242a 002c movel %a2@(44),%d2
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
45d76: 4a80 tstl %d0
45d78: 6732 beqs 45dac <erase.part.2+0x11a>
c = tty->cbuf[i++];
if (c == '\t') {
col = (col | 7) + 1;
} else if (iscntrl (c)) {
if (tty->termios.c_lflag & ECHOCTL)
45d7a: 2c03 movel %d3,%d6
if (tty->termios.c_lflag & ECHO) {
if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {
echo (tty->termios.c_cc[VERASE], tty);
} else if (c == '\t') {
int col = tty->read_start_column;
int i = 0;
45d7c: 4281 clrl %d1
while (i != tty->ccount) {
c = tty->cbuf[i++];
if (c == '\t') {
col = (col | 7) + 1;
} else if (iscntrl (c)) {
if (tty->termios.c_lflag & ECHOCTL)
45d7e: 0286 0000 0200 andil #512,%d6
*/
while (i != tty->ccount) {
c = tty->cbuf[i++];
if (c == '\t') {
col = (col | 7) + 1;
} else if (iscntrl (c)) {
45d84: 2279 0005 e3cc moveal 5e3cc <__ctype_ptr__>,%a1
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
c = tty->cbuf[i++];
if (c == '\t') {
45d8a: 4283 clrl %d3
45d8c: 1618 moveb %a0@+,%d3
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
c = tty->cbuf[i++];
45d8e: 5281 addql #1,%d1
if (c == '\t') {
45d90: 7a09 moveq #9,%d5
45d92: ba83 cmpl %d3,%d5
45d94: 676c beqs 45e02 <erase.part.2+0x170>
col = (col | 7) + 1;
} else if (iscntrl (c)) {
45d96: 1a31 3801 moveb %a1@(00000001,%d3:l),%d5
45d9a: 7620 moveq #32,%d3
45d9c: ca83 andl %d3,%d5
45d9e: 4a05 tstb %d5
45da0: 6758 beqs 45dfa <erase.part.2+0x168> <== ALWAYS TAKEN
if (tty->termios.c_lflag & ECHOCTL)
45da2: 4a86 tstl %d6 <== NOT EXECUTED
45da4: 6702 beqs 45da8 <erase.part.2+0x116> <== NOT EXECUTED
col += 2;
45da6: 5482 addql #2,%d2 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
45da8: b280 cmpl %d0,%d1 <== NOT EXECUTED
45daa: 66de bnes 45d8a <erase.part.2+0xf8> <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
45dac: b4aa 0028 cmpl %a2@(40),%d2
45db0: 6c00 ff66 bgew 45d18 <erase.part.2+0x86>
rtems_termios_puts ("\b", 1, tty);
45db4: 2f0a movel %a2,%sp@-
45db6: 4878 0001 pea 1 <ADD>
45dba: 4879 0005 d40d pea 5d40d <rtems_termios_baud_table+0x109>
45dc0: 4e93 jsr %a3@
tty->column--;
45dc2: 202a 0028 movel %a2@(40),%d0
45dc6: 5380 subql #1,%d0
}
/*
* Back up over the tab
*/
while (tty->column > col) {
45dc8: 4fef 000c lea %sp@(12),%sp
rtems_termios_puts ("\b", 1, tty);
tty->column--;
45dcc: 2540 0028 movel %d0,%a2@(40)
}
/*
* Back up over the tab
*/
while (tty->column > col) {
45dd0: b480 cmpl %d0,%d2
45dd2: 6c00 ff44 bgew 45d18 <erase.part.2+0x86>
rtems_termios_puts ("\b", 1, tty);
45dd6: 2f0a movel %a2,%sp@-
45dd8: 4878 0001 pea 1 <ADD>
45ddc: 4879 0005 d40d pea 5d40d <rtems_termios_baud_table+0x109>
45de2: 4e93 jsr %a3@
tty->column--;
45de4: 202a 0028 movel %a2@(40),%d0
45de8: 5380 subql #1,%d0
}
/*
* Back up over the tab
*/
while (tty->column > col) {
45dea: 4fef 000c lea %sp@(12),%sp
rtems_termios_puts ("\b", 1, tty);
tty->column--;
45dee: 2540 0028 movel %d0,%a2@(40)
}
/*
* Back up over the tab
*/
while (tty->column > col) {
45df2: b480 cmpl %d0,%d2
45df4: 6dbe blts 45db4 <erase.part.2+0x122>
45df6: 6000 ff20 braw 45d18 <erase.part.2+0x86>
col = (col | 7) + 1;
} else if (iscntrl (c)) {
if (tty->termios.c_lflag & ECHOCTL)
col += 2;
} else {
col++;
45dfa: 5282 addql #1,%d2
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
45dfc: b280 cmpl %d0,%d1
45dfe: 668a bnes 45d8a <erase.part.2+0xf8>
45e00: 60aa bras 45dac <erase.part.2+0x11a>
c = tty->cbuf[i++];
if (c == '\t') {
col = (col | 7) + 1;
45e02: 7607 moveq #7,%d3
45e04: 8483 orl %d3,%d2
45e06: 5282 addql #1,%d2
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
45e08: b280 cmpl %d0,%d1
45e0a: 6600 ff7e bnew 45d8a <erase.part.2+0xf8>
45e0e: 609c bras 45dac <erase.part.2+0x11a> <== NOT EXECUTED
while (tty->ccount) {
unsigned char c = tty->cbuf[--tty->ccount];
if (tty->termios.c_lflag & ECHO) {
if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {
echo (tty->termios.c_cc[VERASE], tty);
45e10: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
45e14: 4280 clrl %d0 <== NOT EXECUTED
45e16: 102a 0043 moveb %a2@(67),%d0 <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
45e1a: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
while (tty->ccount) {
unsigned char c = tty->cbuf[--tty->ccount];
if (tty->termios.c_lflag & ECHO) {
if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {
echo (tty->termios.c_cc[VERASE], tty);
45e20: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
45e24: 4e5e unlk %fp <== NOT EXECUTED
while (tty->ccount) {
unsigned char c = tty->cbuf[--tty->ccount];
if (tty->termios.c_lflag & ECHO) {
if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {
echo (tty->termios.c_cc[VERASE], tty);
45e26: 6000 fde0 braw 45c08 <echo> <== NOT EXECUTED
}
else {
if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {
rtems_termios_puts ("\b \b", 3, tty);
if (tty->column)
tty->column--;
45e2a: 5380 subql #1,%d0 <== NOT EXECUTED
45e2c: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
45e30: 6000 ff1a braw 45d4c <erase.part.2+0xba> <== NOT EXECUTED
00052908 <fat_buf_access>:
static inline uint32_t
fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,
const uint32_t sector_number)
{
return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
52908: 4281 clrl %d1
5290a: 4280 clrl %d0
int
fat_buf_access(fat_fs_info_t *fs_info,
const uint32_t sec_num,
const int op_type,
uint8_t **sec_buf)
{
5290c: 4e56 fff0 linkw %fp,#-16
52910: 48d7 041c moveml %d2-%d4/%a2,%sp@
52914: 246e 0008 moveal %fp@(8),%a2
52918: 122a 0002 moveb %a2@(2),%d1
5291c: 102a 000c moveb %a2@(12),%d0
52920: 9081 subl %d1,%d0
52922: 242e 000c movel %fp@(12),%d2
52926: 2802 movel %d2,%d4
52928: e0ac lsrl %d0,%d4
static inline uint32_t
fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,
const uint32_t block_number)
{
return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
5292a: 2604 movel %d4,%d3
5292c: e1ab lsll %d0,%d3
5292e: 2003 movel %d3,%d0
fat_sector_offset_to_block_offset (const fat_fs_info_t *fs_info,
const uint32_t sector,
const uint32_t sector_offset)
{
return sector_offset +
((sector -
52930: 2602 movel %d2,%d3
52932: 9680 subl %d0,%d3
fat_block_num_to_sector_num (fs_info,
fat_sector_num_to_block_num (fs_info, sector)))
<< fs_info->vol.sec_log2);
52934: e3ab lsll %d1,%d3
sec_num);
uint32_t blk_ofs = fat_sector_offset_to_block_offset (fs_info,
sec_num,
0);
if (fs_info->c.state == FAT_CACHE_EMPTY || fs_info->c.blk_num != sec_num)
52936: 4a2a 007f tstb %a2@(127)
5293a: 6706 beqs 52942 <fat_buf_access+0x3a>
5293c: b4aa 007a cmpl %a2@(122),%d2
52940: 673a beqs 5297c <fat_buf_access+0x74>
{
fat_buf_release(fs_info);
52942: 2f0a movel %a2,%sp@-
52944: 4eb9 0005 2738 jsr 52738 <fat_buf_release>
if (op_type == FAT_OP_TYPE_READ)
5294a: 588f addql #4,%sp
5294c: 7001 moveq #1,%d0
5294e: b0ae 0010 cmpl %fp@(16),%d0
52952: 6742 beqs 52996 <fat_buf_access+0x8e>
sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &fs_info->c.buf);
else
sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &fs_info->c.buf);
52954: 486a 0080 pea %a2@(128)
52958: 2f04 movel %d4,%sp@-
5295a: 2f2a 005a movel %a2@(90),%sp@-
5295e: 4eb9 0005 04f0 jsr 504f0 <rtems_bdbuf_get>
52964: 4fef 000c lea %sp@(12),%sp
if (sc != RTEMS_SUCCESSFUL)
52968: 4a80 tstl %d0
5296a: 6640 bnes 529ac <fat_buf_access+0xa4> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one(EIO);
fs_info->c.blk_num = sec_num;
5296c: 2542 007a movel %d2,%a2@(122)
fs_info->c.modified = 0;
52970: 4200 clrb %d0
52972: 1540 007e moveb %d0,%a2@(126)
fs_info->c.state = FAT_CACHE_ACTUAL;
52976: 7001 moveq #1,%d0
52978: 1540 007f moveb %d0,%a2@(127)
}
*sec_buf = &fs_info->c.buf->buffer[blk_ofs];
5297c: 226a 0080 moveal %a2@(128),%a1
52980: d6a9 001a addl %a1@(26),%d3
return RC_OK;
52984: 4280 clrl %d0
rtems_set_errno_and_return_minus_one(EIO);
fs_info->c.blk_num = sec_num;
fs_info->c.modified = 0;
fs_info->c.state = FAT_CACHE_ACTUAL;
}
*sec_buf = &fs_info->c.buf->buffer[blk_ofs];
52986: 206e 0014 moveal %fp@(20),%a0
5298a: 2083 movel %d3,%a0@
return RC_OK;
}
5298c: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
52992: 4e5e unlk %fp
52994: 4e75 rts
if (fs_info->c.state == FAT_CACHE_EMPTY || fs_info->c.blk_num != sec_num)
{
fat_buf_release(fs_info);
if (op_type == FAT_OP_TYPE_READ)
sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &fs_info->c.buf);
52996: 486a 0080 pea %a2@(128)
5299a: 2f04 movel %d4,%sp@-
5299c: 2f2a 005a movel %a2@(90),%sp@-
529a0: 4eb9 0005 05f2 jsr 505f2 <rtems_bdbuf_read>
529a6: 4fef 000c lea %sp@(12),%sp
529aa: 60bc bras 52968 <fat_buf_access+0x60>
else
sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &fs_info->c.buf);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
529ac: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
529b2: 7605 moveq #5,%d3 <== NOT EXECUTED
529b4: 2040 moveal %d0,%a0 <== NOT EXECUTED
529b6: 70ff moveq #-1,%d0 <== NOT EXECUTED
529b8: 2083 movel %d3,%a0@ <== NOT EXECUTED
fs_info->c.modified = 0;
fs_info->c.state = FAT_CACHE_ACTUAL;
}
*sec_buf = &fs_info->c.buf->buffer[blk_ofs];
return RC_OK;
}
529ba: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
529c0: 4e5e unlk %fp <== NOT EXECUTED
00052738 <fat_buf_release>:
return RC_OK;
}
int
fat_buf_release(fat_fs_info_t *fs_info)
{
52738: 4e56 ffd4 linkw %fp,#-44
5273c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
52740: 246e 0008 moveal %fp@(8),%a2
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (fs_info->c.state == FAT_CACHE_EMPTY)
52744: 4a2a 007f tstb %a2@(127)
52748: 6700 0122 beqw 5286c <fat_buf_release+0x134>
return RC_OK;
if (fs_info->c.modified)
5274c: 4a2a 007e tstb %a2@(126)
52750: 6700 0126 beqw 52878 <fat_buf_release+0x140>
{
uint32_t sec_num = fs_info->c.blk_num;
bool sec_of_fat = ((sec_num >= fs_info->vol.fat_loc) &&
52754: 4281 clrl %d1
52756: 322a 0018 movew %a2@(24),%d1
if (fs_info->c.state == FAT_CACHE_EMPTY)
return RC_OK;
if (fs_info->c.modified)
{
uint32_t sec_num = fs_info->c.blk_num;
5275a: 202a 007a movel %a2@(122),%d0
bool sec_of_fat = ((sec_num >= fs_info->vol.fat_loc) &&
5275e: b280 cmpl %d0,%d1
52760: 6200 0104 bhiw 52866 <fat_buf_release+0x12e>
52764: b0aa 001e cmpl %a2@(30),%d0
52768: 6400 00fc bccw 52866 <fat_buf_release+0x12e>
uint32_t ino
)
{
return (ino >= fs_info->uino_base);
}
5276c: 162a 0002 moveb %a2@(2),%d3
52770: 122a 000c moveb %a2@(12),%d1
uint32_t blk = fat_sector_num_to_block_num(fs_info, sec_num);
uint32_t blk_ofs = fat_sector_offset_to_block_offset(fs_info,
sec_num,
0);
if (sec_of_fat && !fs_info->vol.mirror)
52774: 4a2a 004e tstb %a2@(78)
52778: 6700 0152 beqw 528cc <fat_buf_release+0x194>
return RC_OK;
if (fs_info->c.modified)
{
uint32_t sec_num = fs_info->c.blk_num;
bool sec_of_fat = ((sec_num >= fs_info->vol.fat_loc) &&
5277c: 7401 moveq #1,%d2 <== NOT EXECUTED
if (sec_of_fat && !fs_info->vol.mirror)
memcpy(fs_info->sec_buf,
fs_info->c.buf->buffer + blk_ofs,
fs_info->vol.bps);
sc = rtems_bdbuf_release_modified(fs_info->c.buf);
5277e: 2f2a 0080 movel %a2@(128),%sp@-
52782: 47f9 0005 087e lea 5087e <rtems_bdbuf_release_modified>,%a3
52788: 4e93 jsr %a3@
if (sc != RTEMS_SUCCESSFUL)
5278a: 588f addql #4,%sp
5278c: 4a80 tstl %d0
5278e: 6600 00f8 bnew 52888 <fat_buf_release+0x150>
rtems_set_errno_and_return_minus_one(EIO);
fs_info->c.modified = 0;
52792: 4200 clrb %d0
52794: 1540 007e moveb %d0,%a2@(126)
if (sec_of_fat && !fs_info->vol.mirror)
52798: 4a02 tstb %d2
5279a: 6700 00b8 beqw 52854 <fat_buf_release+0x11c>
5279e: 4a2a 004e tstb %a2@(78)
527a2: 6600 00b0 bnew 52854 <fat_buf_release+0x11c>
{
uint8_t i;
for (i = 1; i < fs_info->vol.fats; i++)
527a6: 4280 clrl %d0
527a8: 102a 000d moveb %a2@(13),%d0
527ac: 7201 moveq #1,%d1
527ae: b280 cmpl %d0,%d1
527b0: 6400 00a2 bccw 52854 <fat_buf_release+0x11c>
527b4: 260e movel %fp,%d3
527b6: 7001 moveq #1,%d0
527b8: 5983 subql #4,%d3
{
sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &bd);
}
else
{
sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &bd);
527ba: 4bf9 0005 05f2 lea 505f2 <rtems_bdbuf_read>,%a5
0);
if (blk_ofs == 0
&& fs_info->vol.bps == fs_info->vol.bytes_per_block)
{
sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &bd);
527c0: 283c 0005 04f0 movel #328944,%d4
{
sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &bd);
}
if ( sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(ENOMEM);
memcpy(bd->buffer + blk_ofs, fs_info->sec_buf, fs_info->vol.bps);
527c6: 49f9 0005 b188 lea 5b188 <memcpy>,%a4
if (sec_of_fat && !fs_info->vol.mirror)
{
uint8_t i;
for (i = 1; i < fs_info->vol.fats; i++)
527cc: 7401 moveq #1,%d2
{
rtems_bdbuf_buffer *bd;
sec_num = fs_info->c.blk_num + fs_info->vol.fat_length * i,
527ce: 41ea 001a lea %a2@(26),%a0
527d2: 4c10 0800 mulsl %a0@,%d0
static inline uint32_t
fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,
const uint32_t sector_number)
{
return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
527d6: 4286 clrl %d6
527d8: 4281 clrl %d1
527da: 1c2a 0002 moveb %a2@(2),%d6
527de: 122a 000c moveb %a2@(12),%d1
527e2: d0aa 007a addl %a2@(122),%d0
527e6: 9286 subl %d6,%d1
527e8: 2e00 movel %d0,%d7
527ea: e2af lsrl %d1,%d7
static inline uint32_t
fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,
const uint32_t block_number)
{
return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
527ec: 2a07 movel %d7,%d5
527ee: e3ad lsll %d1,%d5
527f0: 2205 movel %d5,%d1
fat_sector_offset_to_block_offset (const fat_fs_info_t *fs_info,
const uint32_t sector,
const uint32_t sector_offset)
{
return sector_offset +
((sector -
527f2: 2a00 movel %d0,%d5
527f4: 9a81 subl %d1,%d5
fat_block_num_to_sector_num (fs_info,
fat_sector_num_to_block_num (fs_info, sector)))
<< fs_info->vol.sec_log2);
527f6: edad lsll %d6,%d5
blk = fat_sector_num_to_block_num(fs_info, sec_num);
blk_ofs = fat_sector_offset_to_block_offset(fs_info,
sec_num,
0);
if (blk_ofs == 0
527f8: 6610 bnes 5280a <fat_buf_release+0xd2> <== ALWAYS TAKEN
&& fs_info->vol.bps == fs_info->vol.bytes_per_block)
527fa: 4281 clrl %d1 <== NOT EXECUTED
527fc: 4280 clrl %d0 <== NOT EXECUTED
527fe: 3212 movew %a2@,%d1 <== NOT EXECUTED
52800: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
52804: b081 cmpl %d1,%d0 <== NOT EXECUTED
52806: 6700 0098 beqw 528a0 <fat_buf_release+0x168> <== NOT EXECUTED
{
sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &bd);
}
else
{
sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &bd);
5280a: 2f03 movel %d3,%sp@-
5280c: 2f07 movel %d7,%sp@-
5280e: 2f2a 005a movel %a2@(90),%sp@-
52812: 4e95 jsr %a5@
52814: 4fef 000c lea %sp@(12),%sp
if (sec_of_fat && !fs_info->vol.mirror)
{
uint8_t i;
for (i = 1; i < fs_info->vol.fats; i++)
52818: 5282 addql #1,%d2
}
else
{
sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &bd);
}
if ( sc != RTEMS_SUCCESSFUL)
5281a: 4a80 tstl %d0
5281c: 6600 0096 bnew 528b4 <fat_buf_release+0x17c>
rtems_set_errno_and_return_minus_one(ENOMEM);
memcpy(bd->buffer + blk_ofs, fs_info->sec_buf, fs_info->vol.bps);
52820: 4280 clrl %d0
52822: 3012 movew %a2@,%d0
52824: 206e fffc moveal %fp@(-4),%a0
52828: 2f00 movel %d0,%sp@-
5282a: 2f2a 0084 movel %a2@(132),%sp@-
5282e: daa8 001a addl %a0@(26),%d5
52832: 2f05 movel %d5,%sp@-
52834: 4e94 jsr %a4@
sc = rtems_bdbuf_release_modified(bd);
52836: 2f2e fffc movel %fp@(-4),%sp@-
5283a: 4e93 jsr %a3@
if ( sc != RTEMS_SUCCESSFUL)
5283c: 4fef 0010 lea %sp@(16),%sp
52840: 4a80 tstl %d0
52842: 6670 bnes 528b4 <fat_buf_release+0x17c> <== NEVER TAKEN
if (sec_of_fat && !fs_info->vol.mirror)
{
uint8_t i;
for (i = 1; i < fs_info->vol.fats; i++)
52844: 4281 clrl %d1
52846: 122a 000d moveb %a2@(13),%d1
5284a: 4280 clrl %d0
5284c: 1002 moveb %d2,%d0
5284e: b280 cmpl %d0,%d1
52850: 6200 ff7c bhiw 527ce <fat_buf_release+0x96>
sc = rtems_bdbuf_release(fs_info->c.buf);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
}
fs_info->c.state = FAT_CACHE_EMPTY;
return RC_OK;
52854: 4280 clrl %d0
{
sc = rtems_bdbuf_release(fs_info->c.buf);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
}
fs_info->c.state = FAT_CACHE_EMPTY;
52856: 4201 clrb %d1
52858: 1541 007f moveb %d1,%a2@(127)
return RC_OK;
}
5285c: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
52862: 4e5e unlk %fp
52864: 4e75 rts
return RC_OK;
if (fs_info->c.modified)
{
uint32_t sec_num = fs_info->c.blk_num;
bool sec_of_fat = ((sec_num >= fs_info->vol.fat_loc) &&
52866: 4202 clrb %d2
52868: 6000 ff14 braw 5277e <fat_buf_release+0x46>
fat_buf_release(fat_fs_info_t *fs_info)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (fs_info->c.state == FAT_CACHE_EMPTY)
return RC_OK;
5286c: 4280 clrl %d0
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
}
fs_info->c.state = FAT_CACHE_EMPTY;
return RC_OK;
}
5286e: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
52874: 4e5e unlk %fp
52876: 4e75 rts
}
}
}
else
{
sc = rtems_bdbuf_release(fs_info->c.buf);
52878: 2f2a 0080 movel %a2@(128),%sp@-
5287c: 4eb9 0005 07c4 jsr 507c4 <rtems_bdbuf_release>
if (sc != RTEMS_SUCCESSFUL)
52882: 588f addql #4,%sp
52884: 4a80 tstl %d0
52886: 67cc beqs 52854 <fat_buf_release+0x11c> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one(EIO);
52888: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5288e: 7205 moveq #5,%d1 <== NOT EXECUTED
52890: 2040 moveal %d0,%a0 <== NOT EXECUTED
52892: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
fs_info->c.state = FAT_CACHE_EMPTY;
return RC_OK;
}
52894: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
}
else
{
sc = rtems_bdbuf_release(fs_info->c.buf);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5289a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
fs_info->c.state = FAT_CACHE_EMPTY;
return RC_OK;
}
5289c: 4e5e unlk %fp <== NOT EXECUTED
5289e: 4e75 rts <== NOT EXECUTED
0);
if (blk_ofs == 0
&& fs_info->vol.bps == fs_info->vol.bytes_per_block)
{
sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &bd);
528a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
528a2: 2044 moveal %d4,%a0 <== NOT EXECUTED
528a4: 2f07 movel %d7,%sp@- <== NOT EXECUTED
528a6: 2f2a 005a movel %a2@(90),%sp@- <== NOT EXECUTED
528aa: 4e90 jsr %a0@ <== NOT EXECUTED
528ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
528b0: 6000 ff66 braw 52818 <fat_buf_release+0xe0> <== NOT EXECUTED
if ( sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(ENOMEM);
memcpy(bd->buffer + blk_ofs, fs_info->sec_buf, fs_info->vol.bps);
sc = rtems_bdbuf_release_modified(bd);
if ( sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(ENOMEM);
528b4: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
528ba: 740c moveq #12,%d2 <== NOT EXECUTED
528bc: 2040 moveal %d0,%a0 <== NOT EXECUTED
528be: 70ff moveq #-1,%d0 <== NOT EXECUTED
528c0: 2082 movel %d2,%a0@ <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
}
fs_info->c.state = FAT_CACHE_EMPTY;
return RC_OK;
}
528c2: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
528c8: 4e5e unlk %fp <== NOT EXECUTED
528ca: 4e75 rts <== NOT EXECUTED
static inline uint32_t
fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,
const uint32_t sector_number)
{
return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
528cc: 2400 movel %d0,%d2
uint32_t blk_ofs = fat_sector_offset_to_block_offset(fs_info,
sec_num,
0);
if (sec_of_fat && !fs_info->vol.mirror)
memcpy(fs_info->sec_buf,
528ce: 4284 clrl %d4
528d0: 0283 0000 00ff andil #255,%d3
528d6: 0281 0000 00ff andil #255,%d1
fs_info->c.buf->buffer + blk_ofs,
528dc: 206a 0080 moveal %a2@(128),%a0
528e0: 9283 subl %d3,%d1
528e2: e2aa lsrl %d1,%d2
static inline uint32_t
fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,
const uint32_t block_number)
{
return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
528e4: e3aa lsll %d1,%d2
uint32_t blk_ofs = fat_sector_offset_to_block_offset(fs_info,
sec_num,
0);
if (sec_of_fat && !fs_info->vol.mirror)
memcpy(fs_info->sec_buf,
528e6: 3812 movew %a2@,%d4
fat_sector_offset_to_block_offset (const fat_fs_info_t *fs_info,
const uint32_t sector,
const uint32_t sector_offset)
{
return sector_offset +
((sector -
528e8: 9082 subl %d2,%d0
fat_block_num_to_sector_num (fs_info,
fat_sector_num_to_block_num (fs_info, sector)))
<< fs_info->vol.sec_log2);
528ea: e7a8 lsll %d3,%d0
528ec: 2f04 movel %d4,%sp@-
528ee: d0a8 001a addl %a0@(26),%d0
528f2: 2f00 movel %d0,%sp@-
528f4: 2f2a 0084 movel %a2@(132),%sp@-
return RC_OK;
if (fs_info->c.modified)
{
uint32_t sec_num = fs_info->c.blk_num;
bool sec_of_fat = ((sec_num >= fs_info->vol.fat_loc) &&
528f8: 7401 moveq #1,%d2
uint32_t blk_ofs = fat_sector_offset_to_block_offset(fs_info,
sec_num,
0);
if (sec_of_fat && !fs_info->vol.mirror)
memcpy(fs_info->sec_buf,
528fa: 4eb9 0005 b188 jsr 5b188 <memcpy>
52900: 4fef 000c lea %sp@(12),%sp
52904: 6000 fe78 braw 5277e <fat_buf_release+0x46>
00052b1a <fat_cluster_set>:
const uint32_t offset,
const uint32_t count,
const uint8_t pattern)
{
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
52b1a: 4280 clrl %d0 <== NOT EXECUTED
fat_fs_info_t *fs_info,
const uint32_t start_cln,
const uint32_t offset,
const uint32_t count,
const uint8_t pattern)
{
52b1c: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
52b20: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
52b24: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
52b28: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
52b2c: 162e 001b moveb %fp@(27),%d3 <== NOT EXECUTED
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
52b30: 302a 0006 movew %a2@(6),%d0 <== NOT EXECUTED
fat_fs_info_t *fs_info,
const uint32_t start_cln,
const uint32_t offset,
const uint32_t count,
const uint8_t pattern)
{
52b34: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
52b38: 9081 subl %d1,%d0 <== NOT EXECUTED
52b3a: 2a6e 0014 moveal %fp@(20),%a5 <== NOT EXECUTED
fat_fs_info_t *fs_info,
const uint32_t start_cln,
const uint32_t offset,
const uint32_t count,
const uint8_t pattern)
{
52b3e: 3043 moveaw %d3,%a0 <== NOT EXECUTED
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
52b40: b08d cmpl %a5,%d0 <== NOT EXECUTED
52b42: 6402 bccs 52b46 <fat_cluster_set+0x2c> <== NOT EXECUTED
52b44: 2a40 moveal %d0,%a5 <== NOT EXECUTED
fat_cluster_num_to_block_num (const fat_fs_info_t *fs_info,
uint32_t cln)
{
uint32_t blk;
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
52b46: 4a82 tstl %d2 <== NOT EXECUTED
52b48: 660e bnes 52b58 <fat_cluster_set+0x3e> <== NOT EXECUTED
52b4a: 7c03 moveq #3,%d6 <== NOT EXECUTED
52b4c: 102a 000e moveb %a2@(14),%d0 <== NOT EXECUTED
52b50: c086 andl %d6,%d0 <== NOT EXECUTED
52b52: 4a00 tstb %d0 <== NOT EXECUTED
52b54: 6600 0106 bnew 52c5c <fat_cluster_set+0x142> <== NOT EXECUTED
blk = fat_sector_num_to_block_num(fs_info, fs_info->vol.rdir_loc);
else
{
cln -= FAT_RSRVD_CLN;
blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);
52b58: 4283 clrl %d3 <== NOT EXECUTED
52b5a: 162a 0008 moveb %a2@(8),%d3 <== NOT EXECUTED
52b5e: 4280 clrl %d0 <== NOT EXECUTED
static inline uint32_t
fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,
const uint32_t sector_number)
{
return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
52b60: 4285 clrl %d5 <== NOT EXECUTED
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
blk = fat_sector_num_to_block_num(fs_info, fs_info->vol.rdir_loc);
else
{
cln -= FAT_RSRVD_CLN;
52b62: 5582 subql #2,%d2 <== NOT EXECUTED
52b64: 1a2a 0002 moveb %a2@(2),%d5 <== NOT EXECUTED
blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);
52b68: 1e2a 000c moveb %a2@(12),%d7 <== NOT EXECUTED
52b6c: 282a 0030 movel %a2@(48),%d4 <== NOT EXECUTED
52b70: 1007 moveb %d7,%d0 <== NOT EXECUTED
52b72: 9680 subl %d0,%d3 <== NOT EXECUTED
52b74: 2c00 movel %d0,%d6 <== NOT EXECUTED
52b76: 9c85 subl %d5,%d6 <== NOT EXECUTED
52b78: ecac lsrl %d6,%d4 <== NOT EXECUTED
52b7a: e7aa lsll %d3,%d2 <== NOT EXECUTED
blk += fat_sector_num_to_block_num(fs_info, fs_info->vol.data_fsec);
52b7c: d882 addl %d2,%d4 <== NOT EXECUTED
const uint8_t pattern)
{
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
uint32_t cur_blk = fat_cluster_num_to_block_num(fs_info, start_cln);
uint32_t blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;
52b7e: 2601 movel %d1,%d3 <== NOT EXECUTED
52b80: e0ab lsrl %d0,%d3 <== NOT EXECUTED
uint32_t ofs_blk = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
ssize_t bytes_written = 0;
ssize_t ret;
cur_blk += blocks_in_offset;
52b82: d883 addl %d3,%d4 <== NOT EXECUTED
{
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
uint32_t cur_blk = fat_cluster_num_to_block_num(fs_info, start_cln);
uint32_t blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;
uint32_t ofs_blk = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
52b84: 2841 moveal %d1,%a4 <== NOT EXECUTED
ssize_t ret;
cur_blk += blocks_in_offset;
while ( (RC_OK == rc)
&& (0 < bytes_to_write))
52b86: 4285 clrl %d5 <== NOT EXECUTED
{
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
uint32_t cur_blk = fat_cluster_num_to_block_num(fs_info, start_cln);
uint32_t blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;
uint32_t ofs_blk = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
52b88: e1ab lsll %d0,%d3 <== NOT EXECUTED
52b8a: 99c3 subal %d3,%a4 <== NOT EXECUTED
ssize_t ret;
cur_blk += blocks_in_offset;
while ( (RC_OK == rc)
&& (0 < bytes_to_write))
52b8c: 4a8d tstl %a5 <== NOT EXECUTED
52b8e: 6700 00c0 beqw 52c50 <fat_cluster_set+0x136> <== NOT EXECUTED
if (bytes_to_write == fs_info->vol.bytes_per_block)
{
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
}
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
52b92: 2c0e movel %fp,%d6 <== NOT EXECUTED
52b94: 5986 subql #4,%d6 <== NOT EXECUTED
52b96: 47f9 0005 2908 lea 52908 <fat_buf_access>,%a3 <== NOT EXECUTED
if (RC_OK == rc)
{
memset(blk_buf + offset, pattern, bytes_to_write);
52b9c: 3608 movew %a0,%d3 <== NOT EXECUTED
52b9e: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
52ba4: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
cur_blk += blocks_in_offset;
while ( (RC_OK == rc)
&& (0 < bytes_to_write))
{
uint32_t c = MIN(bytes_to_write, (fs_info->vol.bytes_per_block - ofs_blk));
52ba8: 4280 clrl %d0 <== NOT EXECUTED
52baa: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
52bae: 2200 movel %d0,%d1 <== NOT EXECUTED
52bb0: 928c subl %a4,%d1 <== NOT EXECUTED
52bb2: 2401 movel %d1,%d2 <== NOT EXECUTED
52bb4: bbc1 cmpal %d1,%a5 <== NOT EXECUTED
52bb6: 6402 bccs 52bba <fat_cluster_set+0xa0> <== NOT EXECUTED
52bb8: 240d movel %a5,%d2 <== NOT EXECUTED
const uint32_t offset,
const uint32_t count,
const uint8_t pattern)
{
int rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
52bba: 2602 movel %d2,%d3 <== NOT EXECUTED
52bbc: b282 cmpl %d2,%d1 <== NOT EXECUTED
52bbe: 6402 bccs 52bc2 <fat_cluster_set+0xa8> <== NOT EXECUTED
52bc0: 2601 movel %d1,%d3 <== NOT EXECUTED
uint32_t ino
)
{
return (ino >= fs_info->uino_base);
}
52bc2: 122a 0002 moveb %a2@(2),%d1 <== NOT EXECUTED
int rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
uint8_t *blk_buf;
uint32_t sec_num = fat_block_num_to_sector_num(fs_info, start_blk);
if (0 < bytes_to_write)
52bc6: 4a83 tstl %d3 <== NOT EXECUTED
52bc8: 6756 beqs 52c20 <fat_cluster_set+0x106> <== NOT EXECUTED
static inline uint32_t
fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,
const uint32_t block_number)
{
return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
52bca: 0281 0000 00ff andil #255,%d1 <== NOT EXECUTED
52bd0: 0287 0000 00ff andil #255,%d7 <== NOT EXECUTED
52bd6: 9e81 subl %d1,%d7 <== NOT EXECUTED
52bd8: 2204 movel %d4,%d1 <== NOT EXECUTED
52bda: efa9 lsll %d7,%d1 <== NOT EXECUTED
{
if (bytes_to_write == fs_info->vol.bytes_per_block)
52bdc: b680 cmpl %d0,%d3 <== NOT EXECUTED
52bde: 675a beqs 52c3a <fat_cluster_set+0x120> <== NOT EXECUTED
{
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
}
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
52be0: 2f06 movel %d6,%sp@- <== NOT EXECUTED
52be2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
52be6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
52be8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52bea: 4e93 jsr %a3@ <== NOT EXECUTED
52bec: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (RC_OK == rc)
52bf0: 4a80 tstl %d0 <== NOT EXECUTED
52bf2: 6710 beqs 52c04 <fat_cluster_set+0xea> <== NOT EXECUTED
fs_info,
cur_blk,
ofs_blk,
c,
pattern);
if (c != ret)
52bf4: b480 cmpl %d0,%d2 <== NOT EXECUTED
52bf6: 672e beqs 52c26 <fat_cluster_set+0x10c> <== NOT EXECUTED
52bf8: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
if (RC_OK != rc)
return rc;
else
return bytes_written;
}
52bfa: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
52c00: 4e5e unlk %fp <== NOT EXECUTED
52c02: 4e75 rts <== NOT EXECUTED
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
if (RC_OK == rc)
{
memset(blk_buf + offset, pattern, bytes_to_write);
52c04: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52c06: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
52c0a: d9ee fffc addal %fp@(-4),%a4 <== NOT EXECUTED
52c0e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
52c10: 4eb9 0005 b1f8 jsr 5b1f8 <memset> <== NOT EXECUTED
}
static inline void
fat_buf_mark_modified(fat_fs_info_t *fs_info)
{
fs_info->c.modified = true;
52c16: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
52c1a: 7001 moveq #1,%d0 <== NOT EXECUTED
52c1c: 1540 007e moveb %d0,%a2@(126) <== NOT EXECUTED
}
}
if (RC_OK != rc)
return rc;
else
return bytes_to_write;
52c20: 2003 movel %d3,%d0 <== NOT EXECUTED
fs_info,
cur_blk,
ofs_blk,
c,
pattern);
if (c != ret)
52c22: b480 cmpl %d0,%d2 <== NOT EXECUTED
52c24: 66d2 bnes 52bf8 <fat_cluster_set+0xde> <== NOT EXECUTED
rc = -1;
else
{
bytes_to_write -= ret;
52c26: 9bc0 subal %d0,%a5 <== NOT EXECUTED
bytes_written += ret;
52c28: da80 addl %d0,%d5 <== NOT EXECUTED
++cur_blk;
52c2a: 5284 addql #1,%d4 <== NOT EXECUTED
ssize_t ret;
cur_blk += blocks_in_offset;
while ( (RC_OK == rc)
&& (0 < bytes_to_write))
52c2c: 4a8d tstl %a5 <== NOT EXECUTED
52c2e: 6720 beqs 52c50 <fat_cluster_set+0x136> <== NOT EXECUTED
52c30: 99cc subal %a4,%a4 <== NOT EXECUTED
52c32: 1e2a 000c moveb %a2@(12),%d7 <== NOT EXECUTED
52c36: 6000 ff70 braw 52ba8 <fat_cluster_set+0x8e> <== NOT EXECUTED
if (0 < bytes_to_write)
{
if (bytes_to_write == fs_info->vol.bytes_per_block)
{
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
52c3a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
52c3c: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
52c40: 2f01 movel %d1,%sp@- <== NOT EXECUTED
52c42: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52c44: 4e93 jsr %a3@ <== NOT EXECUTED
52c46: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
if (RC_OK == rc)
52c4a: 4a80 tstl %d0 <== NOT EXECUTED
52c4c: 66a6 bnes 52bf4 <fat_cluster_set+0xda> <== NOT EXECUTED
52c4e: 60b4 bras 52c04 <fat_cluster_set+0xea> <== NOT EXECUTED
fs_info,
cur_blk,
ofs_blk,
c,
pattern);
if (c != ret)
52c50: 2005 movel %d5,%d0 <== NOT EXECUTED
}
if (RC_OK != rc)
return rc;
else
return bytes_written;
}
52c52: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
52c58: 4e5e unlk %fp <== NOT EXECUTED
52c5a: 4e75 rts <== NOT EXECUTED
static inline uint32_t
fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,
const uint32_t sector_number)
{
return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
52c5c: 4282 clrl %d2 <== NOT EXECUTED
52c5e: 142a 0002 moveb %a2@(2),%d2 <== NOT EXECUTED
52c62: 4280 clrl %d0 <== NOT EXECUTED
uint32_t ino
)
{
return (ino >= fs_info->uino_base);
}
52c64: 1e2a 000c moveb %a2@(12),%d7 <== NOT EXECUTED
52c68: 282a 001e movel %a2@(30),%d4 <== NOT EXECUTED
52c6c: 1007 moveb %d7,%d0 <== NOT EXECUTED
52c6e: 2600 movel %d0,%d3 <== NOT EXECUTED
52c70: 9682 subl %d2,%d3 <== NOT EXECUTED
52c72: e6ac lsrl %d3,%d4 <== NOT EXECUTED
52c74: 6000 ff08 braw 52b7e <fat_cluster_set+0x64> <== NOT EXECUTED
00052c78 <fat_cluster_write>:
const uint32_t count,
const void *buff,
const bool overwrite_cluster)
{
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
52c78: 4280 clrl %d0
const uint32_t start_cln,
const uint32_t offset,
const uint32_t count,
const void *buff,
const bool overwrite_cluster)
{
52c7a: 4e56 ffcc linkw %fp,#-52
52c7e: 222e 0010 movel %fp@(16),%d1
52c82: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
52c86: 246e 0008 moveal %fp@(8),%a2
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
52c8a: 302a 0006 movew %a2@(6),%d0
const uint32_t start_cln,
const uint32_t offset,
const uint32_t count,
const void *buff,
const bool overwrite_cluster)
{
52c8e: 242e 000c movel %fp@(12),%d2
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
52c92: 9081 subl %d1,%d0
52c94: 2a6e 0014 moveal %fp@(20),%a5
const uint32_t start_cln,
const uint32_t offset,
const uint32_t count,
const void *buff,
const bool overwrite_cluster)
{
52c98: 1c2e 001f moveb %fp@(31),%d6
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
52c9c: b08d cmpl %a5,%d0
52c9e: 6402 bccs 52ca2 <fat_cluster_write+0x2a> <== ALWAYS TAKEN
52ca0: 2a40 moveal %d0,%a5 <== NOT EXECUTED
fat_cluster_num_to_block_num (const fat_fs_info_t *fs_info,
uint32_t cln)
{
uint32_t blk;
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
52ca2: 4a82 tstl %d2
52ca4: 660e bnes 52cb4 <fat_cluster_write+0x3c> <== NEVER TAKEN
52ca6: 7603 moveq #3,%d3
52ca8: 102a 000e moveb %a2@(14),%d0
52cac: c083 andl %d3,%d0
52cae: 4a00 tstb %d0
52cb0: 6600 0124 bnew 52dd6 <fat_cluster_write+0x15e>
blk = fat_sector_num_to_block_num(fs_info, fs_info->vol.rdir_loc);
else
{
cln -= FAT_RSRVD_CLN;
blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);
52cb4: 4283 clrl %d3
52cb6: 162a 0008 moveb %a2@(8),%d3
52cba: 4285 clrl %d5
52cbc: 1a2a 0002 moveb %a2@(2),%d5
52cc0: 4280 clrl %d0
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
blk = fat_sector_num_to_block_num(fs_info, fs_info->vol.rdir_loc);
else
{
cln -= FAT_RSRVD_CLN;
52cc2: 5582 subql #2,%d2
52cc4: 2045 moveal %d5,%a0
blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);
52cc6: 1e2a 000c moveb %a2@(12),%d7
52cca: 282a 0030 movel %a2@(48),%d4
52cce: 1007 moveb %d7,%d0
52cd0: 9680 subl %d0,%d3
52cd2: 2240 moveal %d0,%a1
52cd4: 93c8 subal %a0,%a1
52cd6: 2a09 movel %a1,%d5
52cd8: eaac lsrl %d5,%d4
52cda: e7aa lsll %d3,%d2
blk += fat_sector_num_to_block_num(fs_info, fs_info->vol.data_fsec);
52cdc: d882 addl %d2,%d4
const bool overwrite_cluster)
{
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
uint32_t cur_blk = fat_cluster_num_to_block_num(fs_info, start_cln);
uint32_t blocks_in_offset = (offset >> fs_info->vol.bytes_per_block_log2);
52cde: 2601 movel %d1,%d3
52ce0: e0ab lsrl %d0,%d3
ssize_t bytes_written = 0;
uint8_t *buffer = (uint8_t*)buff;
ssize_t ret;
uint32_t c;
cur_blk += blocks_in_offset;
52ce2: d883 addl %d3,%d4
{
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
uint32_t cur_blk = fat_cluster_num_to_block_num(fs_info, start_cln);
uint32_t blocks_in_offset = (offset >> fs_info->vol.bytes_per_block_log2);
uint32_t ofs_blk = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
52ce4: 2841 moveal %d1,%a4
uint32_t c;
cur_blk += blocks_in_offset;
while ( (RC_OK == rc)
&& (0 < bytes_to_write))
52ce6: 4285 clrl %d5
{
ssize_t rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bpc - offset));
uint32_t cur_blk = fat_cluster_num_to_block_num(fs_info, start_cln);
uint32_t blocks_in_offset = (offset >> fs_info->vol.bytes_per_block_log2);
uint32_t ofs_blk = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
52ce8: e1ab lsll %d0,%d3
52cea: 99c3 subal %d3,%a4
uint32_t c;
cur_blk += blocks_in_offset;
while ( (RC_OK == rc)
&& (0 < bytes_to_write))
52cec: 4a8d tstl %a5
52cee: 6700 00da beqw 52dca <fat_cluster_write+0x152>
if (0 < bytes_to_write)
{
if ( overwrite_block
|| (bytes_to_write == fs_info->vol.bytes_per_block))
{
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
52cf2: 47f9 0005 2908 lea 52908 <fat_buf_access>,%a3
52cf8: 3247 moveaw %d7,%a1
52cfa: 2e0c movel %a4,%d7
52cfc: 284a moveal %a2,%a4
52cfe: 1d46 fffb moveb %d6,%fp@(-5)
52d02: 246e 0018 moveal %fp@(24),%a2
52d06: 2d45 fff6 movel %d5,%fp@(-10)
cur_blk += blocks_in_offset;
while ( (RC_OK == rc)
&& (0 < bytes_to_write))
{
c = MIN(bytes_to_write, (fs_info->vol.bytes_per_block - ofs_blk));
52d0a: 4281 clrl %d1
52d0c: 322c 000a movew %a4@(10),%d1
52d10: 2001 movel %d1,%d0
52d12: 9087 subl %d7,%d0
52d14: 2400 movel %d0,%d2
52d16: bbc0 cmpal %d0,%a5
52d18: 6402 bccs 52d1c <fat_cluster_write+0xa4>
52d1a: 240d movel %a5,%d2
const uint32_t count,
const void *buf,
const bool overwrite_block)
{
int rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
52d1c: 2602 movel %d2,%d3
52d1e: b082 cmpl %d2,%d0
52d20: 6402 bccs 52d24 <fat_cluster_write+0xac> <== ALWAYS TAKEN
52d22: 2600 movel %d0,%d3 <== NOT EXECUTED
uint32_t ino
)
{
return (ino >= fs_info->uino_base);
}
52d24: 1c2c 0002 moveb %a4@(2),%d6
int rc = RC_OK;
uint32_t bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
uint8_t *blk_buf;
uint32_t sec_num = fat_block_num_to_sector_num(fs_info, start_blk);
if (0 < bytes_to_write)
52d28: 4a83 tstl %d3
52d2a: 6764 beqs 52d90 <fat_cluster_write+0x118> <== NEVER TAKEN
static inline uint32_t
fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,
const uint32_t block_number)
{
return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
52d2c: 4280 clrl %d0
52d2e: 3a09 movew %a1,%d5
52d30: 0286 0000 00ff andil #255,%d6
52d36: 1005 moveb %d5,%d0
52d38: 9086 subl %d6,%d0
52d3a: 2a04 movel %d4,%d5
52d3c: e1ad lsll %d0,%d5
52d3e: 2005 movel %d5,%d0
{
if ( overwrite_block
52d40: 4a2e fffb tstb %fp@(-5)
52d44: 6668 bnes 52dae <fat_cluster_write+0x136>
|| (bytes_to_write == fs_info->vol.bytes_per_block))
52d46: b681 cmpl %d1,%d3
52d48: 6764 beqs 52dae <fat_cluster_write+0x136>
{
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
}
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
52d4a: 486e fffc pea %fp@(-4)
52d4e: 4878 0001 pea 1 <ADD>
52d52: 2f05 movel %d5,%sp@-
52d54: 2f0c movel %a4,%sp@-
52d56: 4e93 jsr %a3@
52d58: 4fef 0010 lea %sp@(16),%sp
if (RC_OK == rc)
52d5c: 4a80 tstl %d0
52d5e: 6710 beqs 52d70 <fat_cluster_write+0xf8> <== ALWAYS TAKEN
cur_blk,
ofs_blk,
c,
&buffer[bytes_written],
overwrite_cluster);
if (c != ret)
52d60: b480 cmpl %d0,%d2 <== NOT EXECUTED
52d62: 6732 beqs 52d96 <fat_cluster_write+0x11e> <== NOT EXECUTED
52d64: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
if (RC_OK != rc)
return rc;
else
return bytes_written;
}
52d66: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
52d6c: 4e5e unlk %fp <== NOT EXECUTED
52d6e: 4e75 rts <== NOT EXECUTED
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
if (RC_OK == rc)
{
memcpy(blk_buf + offset, buf, bytes_to_write);
52d70: 206e fff6 moveal %fp@(-10),%a0
52d74: deae fffc addl %fp@(-4),%d7
52d78: 2f03 movel %d3,%sp@-
52d7a: 4872 8800 pea %a2@(00000000,%a0:l)
52d7e: 2f07 movel %d7,%sp@-
52d80: 4eb9 0005 b188 jsr 5b188 <memcpy>
}
static inline void
fat_buf_mark_modified(fat_fs_info_t *fs_info)
{
fs_info->c.modified = true;
52d86: 4fef 000c lea %sp@(12),%sp
52d8a: 7001 moveq #1,%d0
52d8c: 1940 007e moveb %d0,%a4@(126)
}
}
if (RC_OK != rc)
return rc;
else
return bytes_to_write;
52d90: 2003 movel %d3,%d0
cur_blk,
ofs_blk,
c,
&buffer[bytes_written],
overwrite_cluster);
if (c != ret)
52d92: b480 cmpl %d0,%d2
52d94: 66ce bnes 52d64 <fat_cluster_write+0xec> <== NEVER TAKEN
rc = -1;
else
{
bytes_to_write -= ret;
52d96: 9bc0 subal %d0,%a5
bytes_written += ret;
52d98: d1ae fff6 addl %d0,%fp@(-10)
++cur_blk;
52d9c: 5284 addql #1,%d4
uint32_t c;
cur_blk += blocks_in_offset;
while ( (RC_OK == rc)
&& (0 < bytes_to_write))
52d9e: 4a8d tstl %a5
52da0: 6724 beqs 52dc6 <fat_cluster_write+0x14e> <== ALWAYS TAKEN
52da2: 4287 clrl %d7 <== NOT EXECUTED
52da4: 162c 000c moveb %a4@(12),%d3 <== NOT EXECUTED
52da8: 3243 moveaw %d3,%a1 <== NOT EXECUTED
52daa: 6000 ff5e braw 52d0a <fat_cluster_write+0x92> <== NOT EXECUTED
if (0 < bytes_to_write)
{
if ( overwrite_block
|| (bytes_to_write == fs_info->vol.bytes_per_block))
{
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
52dae: 486e fffc pea %fp@(-4)
52db2: 4878 0002 pea 2 <DOUBLE_FLOAT>
52db6: 2f00 movel %d0,%sp@-
52db8: 2f0c movel %a4,%sp@-
52dba: 4e93 jsr %a3@
52dbc: 4fef 0010 lea %sp@(16),%sp
}
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
if (RC_OK == rc)
52dc0: 4a80 tstl %d0
52dc2: 669c bnes 52d60 <fat_cluster_write+0xe8> <== NEVER TAKEN
52dc4: 60aa bras 52d70 <fat_cluster_write+0xf8>
52dc6: 2a2e fff6 movel %fp@(-10),%d5
cur_blk,
ofs_blk,
c,
&buffer[bytes_written],
overwrite_cluster);
if (c != ret)
52dca: 2005 movel %d5,%d0
}
if (RC_OK != rc)
return rc;
else
return bytes_written;
}
52dcc: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
52dd2: 4e5e unlk %fp
52dd4: 4e75 rts
static inline uint32_t
fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,
const uint32_t sector_number)
{
return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
52dd6: 4282 clrl %d2
52dd8: 142a 0002 moveb %a2@(2),%d2
52ddc: 4280 clrl %d0
uint32_t ino
)
{
return (ino >= fs_info->uino_base);
}
52dde: 1e2a 000c moveb %a2@(12),%d7
52de2: 282a 001e movel %a2@(30),%d4
52de6: 1007 moveb %d7,%d0
52de8: 2a00 movel %d0,%d5
52dea: 9a82 subl %d2,%d5
52dec: eaac lsrl %d5,%d4
52dee: 6000 feee braw 52cde <fat_cluster_write+0x66>
00051f16 <fat_file_close>:
/*
* if links_num field of fat-file descriptor is greater than 1
* decrement the count of links and return
*/
if (fat_fd->links_num > 1)
51f16: 7201 moveq #1,%d1
int
fat_file_close(
fat_fs_info_t *fs_info,
fat_file_fd_t *fat_fd
)
{
51f18: 4e56 0000 linkw %fp,#0
51f1c: 2f0a movel %a2,%sp@-
51f1e: 246e 000c moveal %fp@(12),%a2
51f22: 2f02 movel %d2,%sp@-
51f24: 242e 0008 movel %fp@(8),%d2
/*
* if links_num field of fat-file descriptor is greater than 1
* decrement the count of links and return
*/
if (fat_fd->links_num > 1)
51f28: 202a 0008 movel %a2@(8),%d0
51f2c: b280 cmpl %d0,%d1
51f2e: 6414 bccs 51f44 <fat_file_close+0x2e>
{
fat_fd->links_num--;
51f30: 5380 subql #1,%d0
51f32: 2540 0008 movel %d0,%a2@(8)
return rc;
51f36: 4280 clrl %d0
* flush any modified "cached" buffer back to disk
*/
rc = fat_buf_release(fs_info);
return rc;
}
51f38: 242e fff8 movel %fp@(-8),%d2
51f3c: 246e fffc moveal %fp@(-4),%a2
51f40: 4e5e unlk %fp
51f42: 4e75 rts
return rc;
}
key = fat_construct_key(fs_info, &fat_fd->dir_pos.sname);
if (fat_fd->flags & FAT_FILE_REMOVED)
51f44: 102a 0030 moveb %a2@(48),%d0
51f48: 0800 0000 btst #0,%d0
51f4c: 674e beqs 51f9c <fat_file_close+0x86> <== ALWAYS TAKEN
{
rc = fat_file_truncate(fs_info, fat_fd, 0);
51f4e: 42a7 clrl %sp@- <== NOT EXECUTED
51f50: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51f52: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51f54: 4eb9 0005 1e22 jsr 51e22 <fat_file_truncate> <== NOT EXECUTED
if ( rc != RC_OK )
51f5a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51f5e: 4a80 tstl %d0 <== NOT EXECUTED
51f60: 66d6 bnes 51f38 <fat_file_close+0x22> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
51f62: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51f64: 4eb9 0005 5698 jsr 55698 <_Chain_Extract> <== NOT EXECUTED
return rc;
_hash_delete(fs_info->rhash, key, fat_fd->ino, fat_fd);
if ( fat_ino_is_unique(fs_info, fat_fd->ino) )
51f6a: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
51f6e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51f70: 4eb9 0005 3a70 jsr 53a70 <fat_ino_is_unique> <== NOT EXECUTED
51f76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51f7a: 4a00 tstb %d0 <== NOT EXECUTED
51f7c: 666e bnes 51fec <fat_file_close+0xd6> <== NOT EXECUTED
fat_free_unique_ino(fs_info, fat_fd->ino);
free(fat_fd);
51f7e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51f80: 4eb9 0004 4bec jsr 44bec <free> <== NOT EXECUTED
51f86: 588f addql #4,%sp <== NOT EXECUTED
}
}
/*
* flush any modified "cached" buffer back to disk
*/
rc = fat_buf_release(fs_info);
51f88: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
return rc;
}
51f8c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
51f90: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
51f94: 4e5e unlk %fp <== NOT EXECUTED
}
}
/*
* flush any modified "cached" buffer back to disk
*/
rc = fat_buf_release(fs_info);
51f96: 4ef9 0005 2738 jmp 52738 <fat_buf_release> <== NOT EXECUTED
free(fat_fd);
}
else
{
if (fat_ino_is_unique(fs_info, fat_fd->ino))
51f9c: 2f2a 000c movel %a2@(12),%sp@-
51fa0: 2f02 movel %d2,%sp@-
51fa2: 4eb9 0005 3a70 jsr 53a70 <fat_ino_is_unique>
51fa8: 508f addql #8,%sp
51faa: 4a00 tstb %d0
51fac: 6718 beqs 51fc6 <fat_file_close+0xb0> <== ALWAYS TAKEN
{
fat_fd->links_num = 0;
51fae: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
* flush any modified "cached" buffer back to disk
*/
rc = fat_buf_release(fs_info);
return rc;
}
51fb2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
}
/*
* flush any modified "cached" buffer back to disk
*/
rc = fat_buf_release(fs_info);
51fb6: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
return rc;
}
51fba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
51fbe: 4e5e unlk %fp <== NOT EXECUTED
}
}
/*
* flush any modified "cached" buffer back to disk
*/
rc = fat_buf_release(fs_info);
51fc0: 4ef9 0005 2738 jmp 52738 <fat_buf_release> <== NOT EXECUTED
51fc6: 2f0a movel %a2,%sp@-
51fc8: 4eb9 0005 5698 jsr 55698 <_Chain_Extract>
fat_fd->links_num = 0;
}
else
{
_hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd);
free(fat_fd);
51fce: 2f0a movel %a2,%sp@-
51fd0: 4eb9 0004 4bec jsr 44bec <free>
* flush any modified "cached" buffer back to disk
*/
rc = fat_buf_release(fs_info);
return rc;
}
51fd6: 246e fffc moveal %fp@(-4),%a2
fat_fd->links_num = 0;
}
else
{
_hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd);
free(fat_fd);
51fda: 508f addql #8,%sp
}
}
/*
* flush any modified "cached" buffer back to disk
*/
rc = fat_buf_release(fs_info);
51fdc: 2d42 0008 movel %d2,%fp@(8)
return rc;
}
51fe0: 242e fff8 movel %fp@(-8),%d2
51fe4: 4e5e unlk %fp
}
}
/*
* flush any modified "cached" buffer back to disk
*/
rc = fat_buf_release(fs_info);
51fe6: 4ef9 0005 2738 jmp 52738 <fat_buf_release>
return rc;
_hash_delete(fs_info->rhash, key, fat_fd->ino, fat_fd);
if ( fat_ino_is_unique(fs_info, fat_fd->ino) )
fat_free_unique_ino(fs_info, fat_fd->ino);
51fec: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
51ff0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51ff2: 4eb9 0005 3a3e jsr 53a3e <fat_free_unique_ino> <== NOT EXECUTED
51ff8: 508f addql #8,%sp <== NOT EXECUTED
free(fat_fd);
51ffa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51ffc: 4eb9 0004 4bec jsr 44bec <free> <== NOT EXECUTED
52002: 588f addql #4,%sp <== NOT EXECUTED
52004: 6082 bras 51f88 <fat_file_close+0x72> <== NOT EXECUTED
000520bc <fat_file_extend>:
fat_file_fd_t *fat_fd,
bool zero_fill,
uint32_t new_length,
uint32_t *a_length
)
{
520bc: 4e56 ffcc linkw %fp,#-52
520c0: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@
520c4: 242e 0014 movel %fp@(20),%d2
520c8: 286e 0018 moveal %fp@(24),%a4
520cc: 246e 000c moveal %fp@(12),%a2
uint32_t last_cl = 0;
uint32_t bytes_remain = 0;
uint32_t cls_added;
ssize_t bytes_written;
*a_length = new_length;
520d0: 2882 movel %d2,%a4@
fat_file_fd_t *fat_fd,
bool zero_fill,
uint32_t new_length,
uint32_t *a_length
)
{
520d2: 266e 0008 moveal %fp@(8),%a3
uint32_t cls_added;
ssize_t bytes_written;
*a_length = new_length;
if (new_length <= fat_fd->fat_file_size)
520d6: 202a 0018 movel %a2@(24),%d0
fat_file_fd_t *fat_fd,
bool zero_fill,
uint32_t new_length,
uint32_t *a_length
)
{
520da: 1a2e 0013 moveb %fp@(19),%d5
int rc = RC_OK;
uint32_t chain = 0;
520de: 42ae fff0 clrl %fp@(-16)
uint32_t bytes2add = 0;
uint32_t cls2add = 0;
uint32_t old_last_cl;
uint32_t last_cl = 0;
520e2: 42ae fff8 clrl %fp@(-8)
uint32_t cls_added;
ssize_t bytes_written;
*a_length = new_length;
if (new_length <= fat_fd->fat_file_size)
520e6: b082 cmpl %d2,%d0
520e8: 6400 00d8 bccw 521c2 <fat_file_extend+0x106>
return RC_OK;
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
520ec: 7201 moveq #1,%d1
520ee: b2aa 0020 cmpl %a2@(32),%d1
520f2: 6700 00e2 beqw 521d6 <fat_file_extend+0x11a>
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
rtems_set_errno_and_return_minus_one( ENOSPC );
bytes_remain = (fs_info->vol.bpc -
(fat_fd->fat_file_size & (fs_info->vol.bpc - 1))) &
520f6: 4283 clrl %d3
(fs_info->vol.bpc - 1);
bytes2add = new_length - fat_fd->fat_file_size;
520f8: 2042 moveal %d2,%a0
520fa: 91c0 subal %d0,%a0
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
rtems_set_errno_and_return_minus_one( ENOSPC );
bytes_remain = (fs_info->vol.bpc -
(fat_fd->fat_file_size & (fs_info->vol.bpc - 1))) &
520fc: 362b 0006 movew %a3@(6),%d3
52100: 2203 movel %d3,%d1
52102: 5381 subql #1,%d1
52104: 2c01 movel %d1,%d6
52106: cc80 andl %d0,%d6
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
rtems_set_errno_and_return_minus_one( ENOSPC );
bytes_remain = (fs_info->vol.bpc -
52108: 9686 subl %d6,%d3
5210a: c681 andl %d1,%d3
(fat_fd->fat_file_size & (fs_info->vol.bpc - 1))) &
(fs_info->vol.bpc - 1);
bytes2add = new_length - fat_fd->fat_file_size;
if (bytes2add > bytes_remain)
5210c: b1c3 cmpal %d3,%a0
5210e: 6300 00c0 blsw 521d0 <fat_file_extend+0x114>
bytes2add -= bytes_remain;
52112: 2e08 movel %a0,%d7
52114: 9e83 subl %d3,%d7
else
bytes2add = 0;
if (zero_fill && bytes_remain > 0) {
52116: 4a05 tstb %d5
52118: 6706 beqs 52120 <fat_file_extend+0x64> <== ALWAYS TAKEN
5211a: 4a83 tstl %d3 <== NOT EXECUTED
5211c: 6600 00e8 bnew 52206 <fat_file_extend+0x14a> <== NOT EXECUTED
/*
* if in last cluster allocated for the file there is enough room to
* handle extention (hence we don't need to add even one cluster to the
* file ) - return
*/
if (bytes2add == 0)
52120: 4a87 tstl %d7
52122: 6700 009e beqw 521c2 <fat_file_extend+0x106>
return RC_OK;
cls2add = ((bytes2add - 1) >> fs_info->vol.bpc_log2) + 1;
52126: 4281 clrl %d1
52128: 122b 0008 moveb %a3@(8),%d1
5212c: 2007 movel %d7,%d0
5212e: 5380 subql #1,%d0
52130: e2a8 lsrl %d1,%d0
rc = fat_scan_fat_for_free_clusters(fs_info, &chain, cls2add,
52132: 0285 0000 00ff andil #255,%d5
52138: 2f05 movel %d5,%sp@-
5213a: 486e fff8 pea %fp@(-8)
* file ) - return
*/
if (bytes2add == 0)
return RC_OK;
cls2add = ((bytes2add - 1) >> fs_info->vol.bpc_log2) + 1;
5213e: 2a00 movel %d0,%d5
rc = fat_scan_fat_for_free_clusters(fs_info, &chain, cls2add,
52140: 486e fffc pea %fp@(-4)
* file ) - return
*/
if (bytes2add == 0)
return RC_OK;
cls2add = ((bytes2add - 1) >> fs_info->vol.bpc_log2) + 1;
52144: 5285 addql #1,%d5
rc = fat_scan_fat_for_free_clusters(fs_info, &chain, cls2add,
52146: 2f05 movel %d5,%sp@-
52148: 486e fff0 pea %fp@(-16)
5214c: 2f0b movel %a3,%sp@-
5214e: 4eb9 0005 8fe0 jsr 58fe0 <fat_scan_fat_for_free_clusters>
&cls_added, &last_cl, zero_fill);
/* this means that low level I/O error occured */
if (rc != RC_OK)
52154: 4fef 0018 lea %sp@(24),%sp
if (bytes2add == 0)
return RC_OK;
cls2add = ((bytes2add - 1) >> fs_info->vol.bpc_log2) + 1;
rc = fat_scan_fat_for_free_clusters(fs_info, &chain, cls2add,
52158: 2800 movel %d0,%d4
&cls_added, &last_cl, zero_fill);
/* this means that low level I/O error occured */
if (rc != RC_OK)
5215a: 665a bnes 521b6 <fat_file_extend+0xfa> <== NEVER TAKEN
return rc;
/* this means that no space left on device */
if ((cls_added == 0) && (bytes_remain == 0))
5215c: 222e fffc movel %fp@(-4),%d1
52160: 6606 bnes 52168 <fat_file_extend+0xac> <== ALWAYS TAKEN
52162: 4a83 tstl %d3 <== NOT EXECUTED
52164: 6700 0086 beqw 521ec <fat_file_extend+0x130> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENOSPC);
/* check wether we satisfied request for 'cls2add' clusters */
if (cls2add != cls_added)
52168: b285 cmpl %d5,%d1
5216a: 6718 beqs 52184 <fat_file_extend+0xc8> <== ALWAYS TAKEN
{
new_length -= bytes2add & (fs_info->vol.bpc - 1);
5216c: 4283 clrl %d3 <== NOT EXECUTED
new_length -= (cls2add - cls_added) << fs_info->vol.bpc_log2;
5216e: 4280 clrl %d0 <== NOT EXECUTED
52170: 102b 0008 moveb %a3@(8),%d0 <== NOT EXECUTED
52174: 9a81 subl %d1,%d5 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENOSPC);
/* check wether we satisfied request for 'cls2add' clusters */
if (cls2add != cls_added)
{
new_length -= bytes2add & (fs_info->vol.bpc - 1);
52176: 362b 0006 movew %a3@(6),%d3 <== NOT EXECUTED
new_length -= (cls2add - cls_added) << fs_info->vol.bpc_log2;
5217a: e1ad lsll %d0,%d5 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENOSPC);
/* check wether we satisfied request for 'cls2add' clusters */
if (cls2add != cls_added)
{
new_length -= bytes2add & (fs_info->vol.bpc - 1);
5217c: 5383 subql #1,%d3 <== NOT EXECUTED
5217e: ce83 andl %d3,%d7 <== NOT EXECUTED
52180: 9487 subl %d7,%d2 <== NOT EXECUTED
new_length -= (cls2add - cls_added) << fs_info->vol.bpc_log2;
52182: 9485 subl %d5,%d2 <== NOT EXECUTED
}
/* add new chain to the end of existed */
if ( fat_fd->fat_file_size == 0 )
52184: 206a 0018 moveal %a2@(24),%a0
52188: 4a88 tstl %a0
5218a: 6600 00c2 bnew 5224e <fat_file_extend+0x192>
{
fat_fd->map.disk_cln = fat_fd->cln = chain;
5218e: 202e fff0 movel %fp@(-16),%d0
fat_fd->map.file_cln = 0;
52192: 42aa 0032 clrl %a2@(50)
}
/* add new chain to the end of existed */
if ( fat_fd->fat_file_size == 0 )
{
fat_fd->map.disk_cln = fat_fd->cln = chain;
52196: 2540 001c movel %d0,%a2@(28)
5219a: 2540 0036 movel %d0,%a2@(54)
}
fat_buf_release(fs_info);
}
/* update number of the last cluster of the file if it changed */
if (cls_added != 0)
5219e: 4a81 tstl %d1
521a0: 670e beqs 521b0 <fat_file_extend+0xf4> <== NEVER TAKEN
{
fat_fd->map.last_cln = last_cl;
521a2: 256e fff8 003a movel %fp@(-8),%a2@(58)
if (fat_fd->fat_file_type == FAT_DIRECTORY)
521a8: 4aaa 0010 tstl %a2@(16)
521ac: 6700 00d6 beqw 52284 <fat_file_extend+0x1c8>
return rc;
}
}
}
*a_length = new_length;
521b0: 2882 movel %d2,%a4@
fat_fd->fat_file_size = new_length;
521b2: 2542 0018 movel %d2,%a2@(24)
return RC_OK;
}
521b6: 2004 movel %d4,%d0
521b8: 4cee 1cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a4
521be: 4e5e unlk %fp
521c0: 4e75 rts
ssize_t bytes_written;
*a_length = new_length;
if (new_length <= fat_fd->fat_file_size)
return RC_OK;
521c2: 4284 clrl %d4
*a_length = new_length;
fat_fd->fat_file_size = new_length;
return RC_OK;
}
521c4: 2004 movel %d4,%d0
521c6: 4cee 1cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a4
521cc: 4e5e unlk %fp
521ce: 4e75 rts
bytes2add = new_length - fat_fd->fat_file_size;
if (bytes2add > bytes_remain)
bytes2add -= bytes_remain;
else
bytes2add = 0;
521d0: 4287 clrl %d7 <== NOT EXECUTED
521d2: 6000 ff42 braw 52116 <fat_file_extend+0x5a> <== NOT EXECUTED
*a_length = new_length;
if (new_length <= fat_fd->fat_file_size)
return RC_OK;
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
521d6: 4aaa 0024 tstl %a2@(36) <== NOT EXECUTED
521da: 6600 ff1a bnew 520f6 <fat_file_extend+0x3a> <== NOT EXECUTED
521de: 7603 moveq #3,%d3 <== NOT EXECUTED
521e0: 122b 000e moveb %a3@(14),%d1 <== NOT EXECUTED
521e4: c283 andl %d3,%d1 <== NOT EXECUTED
521e6: 4a01 tstb %d1 <== NOT EXECUTED
521e8: 6700 ff0c beqw 520f6 <fat_file_extend+0x3a> <== NOT EXECUTED
if (rc != RC_OK)
return rc;
/* this means that no space left on device */
if ((cls_added == 0) && (bytes_remain == 0))
rtems_set_errno_and_return_minus_one(ENOSPC);
521ec: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
521f2: 78ff moveq #-1,%d4 <== NOT EXECUTED
521f4: 761c moveq #28,%d3 <== NOT EXECUTED
521f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
*a_length = new_length;
fat_fd->fat_file_size = new_length;
return RC_OK;
}
521f8: 2004 movel %d4,%d0 <== NOT EXECUTED
if (rc != RC_OK)
return rc;
/* this means that no space left on device */
if ((cls_added == 0) && (bytes_remain == 0))
rtems_set_errno_and_return_minus_one(ENOSPC);
521fa: 2083 movel %d3,%a0@ <== NOT EXECUTED
*a_length = new_length;
fat_fd->fat_file_size = new_length;
return RC_OK;
}
521fc: 4cee 1cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a4 <== NOT EXECUTED
52202: 4e5e unlk %fp <== NOT EXECUTED
52204: 4e75 rts <== NOT EXECUTED
uint32_t start = fat_fd->fat_file_size;
uint32_t cl_start = start >> fs_info->vol.bpc_log2;
uint32_t ofs = start & (fs_info->vol.bpc - 1);
uint32_t cur_cln;
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
52206: 486e fffc pea %fp@(-4) <== NOT EXECUTED
else
bytes2add = 0;
if (zero_fill && bytes_remain > 0) {
uint32_t start = fat_fd->fat_file_size;
uint32_t cl_start = start >> fs_info->vol.bpc_log2;
5220a: 4281 clrl %d1 <== NOT EXECUTED
5220c: 122b 0008 moveb %a3@(8),%d1 <== NOT EXECUTED
52210: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
uint32_t ofs = start & (fs_info->vol.bpc - 1);
uint32_t cur_cln;
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
52212: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52214: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52216: 2f0b movel %a3,%sp@- <== NOT EXECUTED
52218: 4eba f64e jsr %pc@(51868 <fat_file_lseek>) <== NOT EXECUTED
if (rc != RC_OK)
5221c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
uint32_t start = fat_fd->fat_file_size;
uint32_t cl_start = start >> fs_info->vol.bpc_log2;
uint32_t ofs = start & (fs_info->vol.bpc - 1);
uint32_t cur_cln;
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
52220: 2801 movel %d1,%d4 <== NOT EXECUTED
if (rc != RC_OK)
52222: 6692 bnes 521b6 <fat_file_extend+0xfa> <== NOT EXECUTED
return rc;
bytes_written = fat_cluster_set (fs_info, cur_cln, ofs, bytes_remain, 0);
52224: 42a7 clrl %sp@- <== NOT EXECUTED
52226: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52228: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5222a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
5222e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
52230: 4eb9 0005 2b1a jsr 52b1a <fat_cluster_set> <== NOT EXECUTED
if (bytes_remain != bytes_written)
52236: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5223a: b680 cmpl %d0,%d3 <== NOT EXECUTED
5223c: 6700 fee2 beqw 52120 <fat_file_extend+0x64> <== NOT EXECUTED
return -1;
52240: 78ff moveq #-1,%d4 <== NOT EXECUTED
*a_length = new_length;
fat_fd->fat_file_size = new_length;
return RC_OK;
}
52242: 2004 movel %d4,%d0 <== NOT EXECUTED
52244: 4cee 1cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a4 <== NOT EXECUTED
5224a: 4e5e unlk %fp <== NOT EXECUTED
5224c: 4e75 rts <== NOT EXECUTED
fat_fd->map.disk_cln = fat_fd->cln = chain;
fat_fd->map.file_cln = 0;
}
else
{
if (fat_fd->map.last_cln != FAT_UNDEFINED_VALUE)
5224e: 202a 003a movel %a2@(58),%d0
52252: 72ff moveq #-1,%d1
52254: b280 cmpl %d0,%d1
52256: 675c beqs 522b4 <fat_file_extend+0x1f8> <== NEVER TAKEN
fat_free_fat_clusters_chain(fs_info, chain);
return rc;
}
}
rc = fat_set_fat_cluster(fs_info, old_last_cl, chain);
52258: 2f2e fff0 movel %fp@(-16),%sp@-
5225c: 2f00 movel %d0,%sp@-
}
else
{
if (fat_fd->map.last_cln != FAT_UNDEFINED_VALUE)
{
old_last_cl = fat_fd->map.last_cln;
5225e: 2d40 fff4 movel %d0,%fp@(-12)
fat_free_fat_clusters_chain(fs_info, chain);
return rc;
}
}
rc = fat_set_fat_cluster(fs_info, old_last_cl, chain);
52262: 2f0b movel %a3,%sp@-
52264: 4eb9 0005 8c92 jsr 58c92 <fat_set_fat_cluster>
if ( rc != RC_OK )
5226a: 4fef 000c lea %sp@(12),%sp
5226e: 4a80 tstl %d0
52270: 6626 bnes 52298 <fat_file_extend+0x1dc> <== NEVER TAKEN
{
fat_free_fat_clusters_chain(fs_info, chain);
return rc;
}
fat_buf_release(fs_info);
52272: 2f0b movel %a3,%sp@-
52274: 4eb9 0005 2738 jsr 52738 <fat_buf_release>
5227a: 222e fffc movel %fp@(-4),%d1
5227e: 588f addql #4,%sp
52280: 6000 ff1c braw 5219e <fat_file_extend+0xe2>
if (cls_added != 0)
{
fat_fd->map.last_cln = last_cl;
if (fat_fd->fat_file_type == FAT_DIRECTORY)
{
rc = fat_init_clusters_chain(fs_info, chain);
52284: 2f2e fff0 movel %fp@(-16),%sp@- <== NOT EXECUTED
52288: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5228a: 4eb9 0005 38fa jsr 538fa <fat_init_clusters_chain> <== NOT EXECUTED
if ( rc != RC_OK )
52290: 508f addql #8,%sp <== NOT EXECUTED
52292: 4a80 tstl %d0 <== NOT EXECUTED
52294: 6700 ff1a beqw 521b0 <fat_file_extend+0xf4> <== NOT EXECUTED
{
fat_free_fat_clusters_chain(fs_info, chain);
52298: 2f2e fff0 movel %fp@(-16),%sp@- <== NOT EXECUTED
5229c: 2800 movel %d0,%d4 <== NOT EXECUTED
5229e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
522a0: 4eb9 0005 8f0e jsr 58f0e <fat_free_fat_clusters_chain> <== NOT EXECUTED
522a6: 508f addql #8,%sp <== NOT EXECUTED
*a_length = new_length;
fat_fd->fat_file_size = new_length;
return RC_OK;
}
522a8: 2004 movel %d4,%d0 <== NOT EXECUTED
522aa: 4cee 1cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a4 <== NOT EXECUTED
522b0: 4e5e unlk %fp <== NOT EXECUTED
522b2: 4e75 rts <== NOT EXECUTED
{
old_last_cl = fat_fd->map.last_cln;
}
else
{
rc = fat_file_ioctl(fs_info, fat_fd, F_CLU_NUM,
522b4: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
522b8: 4868 ffff pea %a0@(-1) <== NOT EXECUTED
522bc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
522c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
522c2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
522c4: 4eb9 0005 2006 jsr 52006 <fat_file_ioctl> <== NOT EXECUTED
(fat_fd->fat_file_size - 1), &old_last_cl);
if ( rc != RC_OK )
522ca: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
522ce: 4a80 tstl %d0 <== NOT EXECUTED
522d0: 66c6 bnes 52298 <fat_file_extend+0x1dc> <== NOT EXECUTED
fat_free_fat_clusters_chain(fs_info, chain);
return rc;
}
}
rc = fat_set_fat_cluster(fs_info, old_last_cl, chain);
522d2: 2f2e fff0 movel %fp@(-16),%sp@- <== NOT EXECUTED
522d6: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
522da: 2f00 movel %d0,%sp@- <== NOT EXECUTED
522dc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
522de: 4eb9 0005 8c92 jsr 58c92 <fat_set_fat_cluster> <== NOT EXECUTED
if ( rc != RC_OK )
522e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
522e8: 4a80 tstl %d0 <== NOT EXECUTED
522ea: 6786 beqs 52272 <fat_file_extend+0x1b6> <== NOT EXECUTED
522ec: 60aa bras 52298 <fat_file_extend+0x1dc> <== NOT EXECUTED
00052006 <fat_file_ioctl>:
uint32_t *ret;
va_list ap;
va_start(ap, cmd);
switch (cmd)
52006: 7001 moveq #1,%d0
fat_file_ioctl(
fat_fs_info_t *fs_info,
fat_file_fd_t *fat_fd,
int cmd,
...)
{
52008: 4e56 fffc linkw %fp,#-4
5200c: 226e 0008 moveal %fp@(8),%a1
52010: 2f0a movel %a2,%sp@-
52012: 206e 000c moveal %fp@(12),%a0
52016: 2f02 movel %d2,%sp@-
int rc = RC_OK;
uint32_t cur_cln = 0;
52018: 42ae fffc clrl %fp@(-4)
uint32_t *ret;
va_list ap;
va_start(ap, cmd);
switch (cmd)
5201c: b0ae 0010 cmpl %fp@(16),%d0
52020: 671a beqs 5203c <fat_file_ioctl+0x36> <== ALWAYS TAKEN
*ret = cur_cln;
break;
default:
errno = EINVAL;
52022: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
52028: 7216 moveq #22,%d1 <== NOT EXECUTED
5202a: 2040 moveal %d0,%a0 <== NOT EXECUTED
rc = -1;
5202c: 70ff moveq #-1,%d0 <== NOT EXECUTED
*ret = cur_cln;
break;
default:
errno = EINVAL;
5202e: 2081 movel %d1,%a0@ <== NOT EXECUTED
rc = -1;
break;
}
va_end(ap);
return rc;
}
52030: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
52034: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
52038: 4e5e unlk %fp <== NOT EXECUTED
5203a: 4e75 rts <== NOT EXECUTED
va_start(ap, cmd);
switch (cmd)
{
case F_CLU_NUM:
pos = va_arg(ap, uint32_t);
5203c: 202e 0014 movel %fp@(20),%d0
ret = va_arg(ap, uint32_t *);
52040: 246e 0018 moveal %fp@(24),%a2
/* sanity check */
if ( pos >= fat_fd->fat_file_size ) {
52044: b0a8 0018 cmpl %a0@(24),%d0
52048: 6458 bccs 520a2 <fat_file_ioctl+0x9c> <== NEVER TAKEN
va_end(ap);
rtems_set_errno_and_return_minus_one( EIO );
}
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
5204a: 7201 moveq #1,%d1
5204c: b2a8 0020 cmpl %a0@(32),%d1
52050: 672e beqs 52080 <fat_file_ioctl+0x7a> <== ALWAYS TAKEN
break;
}
cl_start = pos >> fs_info->vol.bpc_log2;
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
52052: 486e fffc pea %fp@(-4) <== NOT EXECUTED
*ret = 0;
rc = RC_OK;
break;
}
cl_start = pos >> fs_info->vol.bpc_log2;
52056: 4281 clrl %d1 <== NOT EXECUTED
52058: 1229 0008 moveb %a1@(8),%d1 <== NOT EXECUTED
5205c: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
5205e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52060: 2f08 movel %a0,%sp@- <== NOT EXECUTED
52062: 2f09 movel %a1,%sp@- <== NOT EXECUTED
52064: 4eba f802 jsr %pc@(51868 <fat_file_lseek>) <== NOT EXECUTED
if ( rc != RC_OK )
52068: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
break;
}
cl_start = pos >> fs_info->vol.bpc_log2;
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
5206c: 2001 movel %d1,%d0 <== NOT EXECUTED
if ( rc != RC_OK )
5206e: 66c0 bnes 52030 <fat_file_ioctl+0x2a> <== NOT EXECUTED
break;
*ret = cur_cln;
52070: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED
rc = -1;
break;
}
va_end(ap);
return rc;
}
52074: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
52078: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
5207c: 4e5e unlk %fp <== NOT EXECUTED
5207e: 4e75 rts <== NOT EXECUTED
if ( pos >= fat_fd->fat_file_size ) {
va_end(ap);
rtems_set_errno_and_return_minus_one( EIO );
}
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
52080: 4aa8 0024 tstl %a0@(36)
52084: 66cc bnes 52052 <fat_file_ioctl+0x4c> <== NEVER TAKEN
52086: 7403 moveq #3,%d2
52088: 1229 000e moveb %a1@(14),%d1
5208c: c282 andl %d2,%d1
5208e: 4a01 tstb %d1
52090: 67c0 beqs 52052 <fat_file_ioctl+0x4c> <== NEVER TAKEN
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
/* cluster 0 (zero) reserved for root dir */
*ret = 0;
52092: 4292 clrl %a2@
rc = -1;
break;
}
va_end(ap);
return rc;
}
52094: 242e fff4 movel %fp@(-12),%d2
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
/* cluster 0 (zero) reserved for root dir */
*ret = 0;
rc = RC_OK;
52098: 4280 clrl %d0
rc = -1;
break;
}
va_end(ap);
return rc;
}
5209a: 246e fff8 moveal %fp@(-8),%a2
5209e: 4e5e unlk %fp
520a0: 4e75 rts
ret = va_arg(ap, uint32_t *);
/* sanity check */
if ( pos >= fat_fd->fat_file_size ) {
va_end(ap);
rtems_set_errno_and_return_minus_one( EIO );
520a2: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
520a8: 7405 moveq #5,%d2 <== NOT EXECUTED
520aa: 2040 moveal %d0,%a0 <== NOT EXECUTED
520ac: 70ff moveq #-1,%d0 <== NOT EXECUTED
520ae: 2082 movel %d2,%a0@ <== NOT EXECUTED
rc = -1;
break;
}
va_end(ap);
return rc;
}
520b0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
520b4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
520b8: 4e5e unlk %fp <== NOT EXECUTED
00051868 <fat_file_lseek>:
fat_fs_info_t *fs_info,
fat_file_fd_t *fat_fd,
uint32_t file_cln,
uint32_t *disk_cln
)
{
51868: 4e56 ffe0 linkw %fp,#-32
5186c: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@
51870: 266e 000c moveal %fp@(12),%a3
51874: 282e 0008 movel %fp@(8),%d4
51878: 2c2e 0010 movel %fp@(16),%d6
int rc = RC_OK;
if (file_cln == fat_fd->map.file_cln)
5187c: 202b 0032 movel %a3@(50),%d0
51880: bc80 cmpl %d0,%d6
51882: 6776 beqs 518fa <fat_file_lseek+0x92> <== NEVER TAKEN
uint32_t i;
if (file_cln > fat_fd->map.file_cln)
{
cur_cln = fat_fd->map.disk_cln;
count = file_cln - fat_fd->map.file_cln;
51884: 2406 movel %d6,%d2
{
uint32_t cur_cln;
uint32_t count;
uint32_t i;
if (file_cln > fat_fd->map.file_cln)
51886: bc80 cmpl %d0,%d6
51888: 6354 blss 518de <fat_file_lseek+0x76> <== NEVER TAKEN
{
cur_cln = fat_fd->map.disk_cln;
count = file_cln - fat_fd->map.file_cln;
5188a: 9480 subl %d0,%d2
uint32_t count;
uint32_t i;
if (file_cln > fat_fd->map.file_cln)
{
cur_cln = fat_fd->map.disk_cln;
5188c: 2d6b 0036 fffc movel %a3@(54),%fp@(-4)
cur_cln = fat_fd->cln;
count = file_cln;
}
/* skip over the clusters */
for (i = 0; i < count; i++)
51892: 4a82 tstl %d2
51894: 6724 beqs 518ba <fat_file_lseek+0x52> <== NEVER TAKEN
51896: 2a0e movel %fp,%d5
51898: 4283 clrl %d3
5189a: 5985 subql #4,%d5
5189c: 45f9 0005 8ac0 lea 58ac0 <fat_get_fat_cluster>,%a2
{
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
518a2: 2f05 movel %d5,%sp@-
518a4: 2f2e fffc movel %fp@(-4),%sp@-
cur_cln = fat_fd->cln;
count = file_cln;
}
/* skip over the clusters */
for (i = 0; i < count; i++)
518a8: 5283 addql #1,%d3
{
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
518aa: 2f04 movel %d4,%sp@-
518ac: 4e92 jsr %a2@
if ( rc != RC_OK )
518ae: 4fef 000c lea %sp@(12),%sp
518b2: 4a80 tstl %d0
518b4: 6630 bnes 518e6 <fat_file_lseek+0x7e> <== NEVER TAKEN
cur_cln = fat_fd->cln;
count = file_cln;
}
/* skip over the clusters */
for (i = 0; i < count; i++)
518b6: b483 cmpl %d3,%d2
518b8: 66e8 bnes 518a2 <fat_file_lseek+0x3a> <== NEVER TAKEN
return rc;
}
/* update cache */
fat_fd->map.file_cln = file_cln;
fat_fd->map.disk_cln = cur_cln;
518ba: 202e fffc movel %fp@(-4),%d0
if ( rc != RC_OK )
return rc;
}
/* update cache */
fat_fd->map.file_cln = file_cln;
518be: 2746 0032 movel %d6,%a3@(50)
fat_fd->map.disk_cln = cur_cln;
*disk_cln = cur_cln;
518c2: 206e 0014 moveal %fp@(20),%a0
return rc;
}
/* update cache */
fat_fd->map.file_cln = file_cln;
fat_fd->map.disk_cln = cur_cln;
518c6: 2740 0036 movel %d0,%a3@(54)
*disk_cln = cur_cln;
}
return RC_OK;
518ca: 4282 clrl %d2
518cc: 4283 clrl %d3
/* update cache */
fat_fd->map.file_cln = file_cln;
fat_fd->map.disk_cln = cur_cln;
*disk_cln = cur_cln;
518ce: 2080 movel %d0,%a0@
}
return RC_OK;
}
518d0: 2002 movel %d2,%d0
518d2: 2203 movel %d3,%d1
518d4: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3
518da: 4e5e unlk %fp
518dc: 4e75 rts
cur_cln = fat_fd->map.disk_cln;
count = file_cln - fat_fd->map.file_cln;
}
else
{
cur_cln = fat_fd->cln;
518de: 2d6b 001c fffc movel %a3@(28),%fp@(-4) <== NOT EXECUTED
518e4: 60ac bras 51892 <fat_file_lseek+0x2a> <== NOT EXECUTED
/* skip over the clusters */
for (i = 0; i < count; i++)
{
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
if ( rc != RC_OK )
return rc;
518e6: 2600 movel %d0,%d3 <== NOT EXECUTED
518e8: 5bc2 smi %d2 <== NOT EXECUTED
518ea: 49c2 extbl %d2 <== NOT EXECUTED
fat_fd->map.disk_cln = cur_cln;
*disk_cln = cur_cln;
}
return RC_OK;
}
518ec: 2002 movel %d2,%d0 <== NOT EXECUTED
518ee: 2203 movel %d3,%d1 <== NOT EXECUTED
518f0: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
518f6: 4e5e unlk %fp <== NOT EXECUTED
518f8: 4e75 rts <== NOT EXECUTED
)
{
int rc = RC_OK;
if (file_cln == fat_fd->map.file_cln)
*disk_cln = fat_fd->map.disk_cln;
518fa: 206e 0014 moveal %fp@(20),%a0
fat_fd->map.file_cln = file_cln;
fat_fd->map.disk_cln = cur_cln;
*disk_cln = cur_cln;
}
return RC_OK;
518fe: 4282 clrl %d2
51900: 4283 clrl %d3
)
{
int rc = RC_OK;
if (file_cln == fat_fd->map.file_cln)
*disk_cln = fat_fd->map.disk_cln;
51902: 20ab 0036 movel %a3@(54),%a0@
fat_fd->map.disk_cln = cur_cln;
*disk_cln = cur_cln;
}
return RC_OK;
}
51906: 2002 movel %d2,%d0
51908: 2203 movel %d3,%d1
5190a: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3
51910: 4e5e unlk %fp <== NOT EXECUTED
00052582 <fat_file_mark_removed>:
fat_cluster_num_to_sector512_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if (cln == 1)
52582: 7001 moveq #1,%d0 <== NOT EXECUTED
void
fat_file_mark_removed(
fat_fs_info_t *fs_info,
fat_file_fd_t *fat_fd
)
{
52584: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
52588: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
5258c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
52590: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
52594: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
52598: b081 cmpl %d1,%d0 <== NOT EXECUTED
5259a: 6700 008c beqw 52628 <fat_file_mark_removed+0xa6> <== NOT EXECUTED
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
5259e: 4a81 tstl %d1 <== NOT EXECUTED
525a0: 666e bnes 52610 <fat_file_mark_removed+0x8e> <== NOT EXECUTED
525a2: 7403 moveq #3,%d2 <== NOT EXECUTED
525a4: 102b 000e moveb %a3@(14),%d0 <== NOT EXECUTED
525a8: c082 andl %d2,%d0 <== NOT EXECUTED
525aa: 4a00 tstb %d0 <== NOT EXECUTED
525ac: 6762 beqs 52610 <fat_file_mark_removed+0x8e> <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
525ae: 4280 clrl %d0 <== NOT EXECUTED
525b0: 102b 0003 moveb %a3@(3),%d0 <== NOT EXECUTED
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
525b4: 222b 001e movel %a3@(30),%d1 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
525b8: e1a9 lsll %d0,%d1 <== NOT EXECUTED
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
525ba: 202a 0024 movel %a2@(36),%d0 <== NOT EXECUTED
525be: 7609 moveq #9,%d3 <== NOT EXECUTED
525c0: 2400 movel %d0,%d2 <== NOT EXECUTED
525c2: e6aa lsrl %d3,%d2 <== NOT EXECUTED
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
525c4: d282 addl %d2,%d1 <== NOT EXECUTED
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
525c6: 740f moveq #15,%d2 <== NOT EXECUTED
525c8: ea88 lsrl #5,%d0 <== NOT EXECUTED
_hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd);
_hash_insert(fs_info->rhash, key, fat_fd->ino, fat_fd);
fat_fd->flags |= FAT_FILE_REMOVED;
525ca: 163c 0001 moveb #1,%d3 <== NOT EXECUTED
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
525ce: e989 lsll #4,%d1 <== NOT EXECUTED
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
525d0: c082 andl %d2,%d0 <== NOT EXECUTED
525d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
525d4: 2401 movel %d1,%d2 <== NOT EXECUTED
525d6: d480 addl %d0,%d2 <== NOT EXECUTED
525d8: 4eb9 0005 5698 jsr 55698 <_Chain_Extract> <== NOT EXECUTED
*/
static inline void
_hash_insert(rtems_chain_control *hash, uint32_t key1, uint32_t key2,
fat_file_fd_t *el)
{
rtems_chain_append((hash) + ((key1) % FAT_HASH_MODULE), &(el)->link);
525de: 7001 moveq #1,%d0 <== NOT EXECUTED
525e0: c082 andl %d2,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void rtems_chain_append(
rtems_chain_control *the_chain,
rtems_chain_node *the_node
)
{
_Chain_Append( the_chain, the_node );
525e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
525e4: 2200 movel %d0,%d1 <== NOT EXECUTED
525e6: e988 lsll #4,%d0 <== NOT EXECUTED
525e8: e589 lsll #2,%d1 <== NOT EXECUTED
525ea: 9081 subl %d1,%d0 <== NOT EXECUTED
525ec: d0ab 0066 addl %a3@(102),%d0 <== NOT EXECUTED
525f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
525f2: 4eb9 0004 a044 jsr 4a044 <_Chain_Append> <== NOT EXECUTED
_hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd);
_hash_insert(fs_info->rhash, key, fat_fd->ino, fat_fd);
fat_fd->flags |= FAT_FILE_REMOVED;
525f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
525fc: 102a 0030 moveb %a2@(48),%d0 <== NOT EXECUTED
52600: 8083 orl %d3,%d0 <== NOT EXECUTED
52602: 1540 0030 moveb %d0,%a2@(48) <== NOT EXECUTED
}
52606: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
5260c: 4e5e unlk %fp <== NOT EXECUTED
5260e: 4e75 rts <== NOT EXECUTED
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
52610: 4280 clrl %d0 <== NOT EXECUTED
52612: 102b 0005 moveb %a3@(5),%d0 <== NOT EXECUTED
52616: 5581 subql #2,%d1 <== NOT EXECUTED
52618: e1a9 lsll %d0,%d1 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
5261a: 4280 clrl %d0 <== NOT EXECUTED
5261c: 102b 0003 moveb %a3@(3),%d0 <== NOT EXECUTED
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
52620: d2ab 0030 addl %a3@(48),%d1 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
52624: e1a9 lsll %d0,%d1 <== NOT EXECUTED
52626: 6092 bras 525ba <fat_file_mark_removed+0x38> <== NOT EXECUTED
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
52628: 202a 0024 movel %a2@(36),%d0 <== NOT EXECUTED
5262c: 7609 moveq #9,%d3 <== NOT EXECUTED
5262e: 2400 movel %d0,%d2 <== NOT EXECUTED
52630: e6aa lsrl %d3,%d2 <== NOT EXECUTED
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if (cln == 1)
return 1;
52632: 7201 moveq #1,%d1 <== NOT EXECUTED
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
52634: d282 addl %d2,%d1 <== NOT EXECUTED
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
52636: 740f moveq #15,%d2 <== NOT EXECUTED
52638: ea88 lsrl #5,%d0 <== NOT EXECUTED
_hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd);
_hash_insert(fs_info->rhash, key, fat_fd->ino, fat_fd);
fat_fd->flags |= FAT_FILE_REMOVED;
5263a: 163c 0001 moveb #1,%d3 <== NOT EXECUTED
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
5263e: e989 lsll #4,%d1 <== NOT EXECUTED
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
52640: c082 andl %d2,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
52642: 2f0a movel %a2,%sp@- <== NOT EXECUTED
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
52644: 2401 movel %d1,%d2 <== NOT EXECUTED
52646: d480 addl %d0,%d2 <== NOT EXECUTED
52648: 4eb9 0005 5698 jsr 55698 <_Chain_Extract> <== NOT EXECUTED
*/
static inline void
_hash_insert(rtems_chain_control *hash, uint32_t key1, uint32_t key2,
fat_file_fd_t *el)
{
rtems_chain_append((hash) + ((key1) % FAT_HASH_MODULE), &(el)->link);
5264e: 7001 moveq #1,%d0 <== NOT EXECUTED
52650: c082 andl %d2,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void rtems_chain_append(
rtems_chain_control *the_chain,
rtems_chain_node *the_node
)
{
_Chain_Append( the_chain, the_node );
52652: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52654: 2200 movel %d0,%d1 <== NOT EXECUTED
52656: e988 lsll #4,%d0 <== NOT EXECUTED
52658: e589 lsll #2,%d1 <== NOT EXECUTED
5265a: 9081 subl %d1,%d0 <== NOT EXECUTED
5265c: d0ab 0066 addl %a3@(102),%d0 <== NOT EXECUTED
52660: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52662: 4eb9 0004 a044 jsr 4a044 <_Chain_Append> <== NOT EXECUTED
_hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd);
_hash_insert(fs_info->rhash, key, fat_fd->ino, fat_fd);
fat_fd->flags |= FAT_FILE_REMOVED;
52668: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5266c: 102a 0030 moveb %a2@(48),%d0 <== NOT EXECUTED
52670: 8083 orl %d3,%d0 <== NOT EXECUTED
52672: 1540 0030 moveb %d0,%a2@(48) <== NOT EXECUTED
}
52676: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
5267c: 4e5e unlk %fp <== NOT EXECUTED
00051914 <fat_file_open>:
fat_cluster_num_to_sector512_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if (cln == 1)
51914: 7201 moveq #1,%d1
fat_file_open(
fat_fs_info_t *fs_info,
fat_dir_pos_t *dir_pos,
fat_file_fd_t **fat_fd
)
{
51916: 4e56 ffe0 linkw %fp,#-32
5191a: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
5191e: 286e 000c moveal %fp@(12),%a4
51922: 246e 0008 moveal %fp@(8),%a2
51926: 266e 0010 moveal %fp@(16),%a3
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
5192a: 2014 movel %a4@,%d0
5192c: b280 cmpl %d0,%d1
5192e: 6700 020a beqw 51b3a <fat_file_open+0x226>
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
51932: 4a80 tstl %d0
51934: 6600 016e bnew 51aa4 <fat_file_open+0x190>
51938: 7403 moveq #3,%d2
5193a: 122a 000e moveb %a2@(14),%d1
5193e: c282 andl %d2,%d1
51940: 4a01 tstb %d1
51942: 6700 0160 beqw 51aa4 <fat_file_open+0x190>
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
51946: 4281 clrl %d1
51948: 122a 0003 moveb %a2@(3),%d1
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
5194c: 202a 001e movel %a2@(30),%d0
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
51950: e3a8 lsll %d1,%d0
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
51952: 242c 0004 movel %a4@(4),%d2
51956: 7609 moveq #9,%d3
51958: 2202 movel %d2,%d1
5195a: e6a9 lsrl %d3,%d1
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
5195c: d081 addl %d1,%d0
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
5195e: ea8a lsrl #5,%d2
51960: 780f moveq #15,%d4
uint32_t key1,
uint32_t key2,
fat_file_fd_t **ret
)
{
uint32_t mod = (key1) % FAT_HASH_MODULE;
51962: 163c 0001 moveb #1,%d3
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
51966: e988 lsll #4,%d0
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
51968: c484 andl %d4,%d2
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
5196a: 226a 0062 moveal %a2@(98),%a1
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
5196e: d480 addl %d0,%d2
51970: c682 andl %d2,%d3
rtems_chain_node *the_node = rtems_chain_first(hash + mod);
51972: 2003 movel %d3,%d0
51974: e98b lsll #4,%d3
51976: e588 lsll #2,%d0
51978: 9680 subl %d0,%d3
5197a: d3c3 addal %d3,%a1
5197c: 2059 moveal %a1@+,%a0
for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )
5197e: b3c8 cmpal %a0,%a1
51980: 6752 beqs 519d4 <fat_file_open+0xc0> <== NEVER TAKEN
51982: 2228 0020 movel %a0@(32),%d1
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
51986: 2001 movel %d1,%d0
51988: 5580 subql #2,%d0
fat_cluster_num_to_sector512_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if (cln == 1)
5198a: 7a01 moveq #1,%d5
5198c: ba81 cmpl %d1,%d5
5198e: 6700 0158 beqw 51ae8 <fat_file_open+0x1d4>
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
51992: 4a81 tstl %d1 <== NOT EXECUTED
51994: 6600 0128 bnew 51abe <fat_file_open+0x1aa> <== NOT EXECUTED
51998: 7803 moveq #3,%d4 <== NOT EXECUTED
5199a: 122a 000e moveb %a2@(14),%d1 <== NOT EXECUTED
5199e: c284 andl %d4,%d1 <== NOT EXECUTED
519a0: 4a01 tstb %d1 <== NOT EXECUTED
519a2: 6700 011a beqw 51abe <fat_file_open+0x1aa> <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
519a6: 4281 clrl %d1 <== NOT EXECUTED
519a8: 122a 0003 moveb %a2@(3),%d1 <== NOT EXECUTED
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
519ac: 202a 001e movel %a2@(30),%d0 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
519b0: e3a8 lsll %d1,%d0 <== NOT EXECUTED
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
519b2: 2228 0024 movel %a0@(36),%d1
519b6: 7a09 moveq #9,%d5
519b8: 2801 movel %d1,%d4
519ba: eaac lsrl %d5,%d4
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
519bc: d084 addl %d4,%d0
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
519be: ea89 lsrl #5,%d1
519c0: 780f moveq #15,%d4
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
519c2: e988 lsll #4,%d0
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
519c4: c284 andl %d4,%d1
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
519c6: d081 addl %d1,%d0
{
fat_file_fd_t *ffd = (fat_file_fd_t *)the_node;
uint32_t ck = fat_construct_key(fs_info, &ffd->dir_pos.sname);
if ( (key1) == ck)
519c8: b082 cmpl %d2,%d0
519ca: 6700 010a beqw 51ad6 <fat_file_open+0x1c2>
{
*ret = (void *)the_node;
return 0;
}
}
the_node = the_node->next;
519ce: 2050 moveal %a0@,%a0
)
{
uint32_t mod = (key1) % FAT_HASH_MODULE;
rtems_chain_node *the_node = rtems_chain_first(hash + mod);
for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )
519d0: b1c9 cmpal %a1,%a0
519d2: 66ae bnes 51982 <fat_file_open+0x6e> <== NEVER TAKEN
519d4: 226a 0066 moveal %a2@(102),%a1
519d8: d3c3 addal %d3,%a1
519da: 2059 moveal %a1@+,%a0
519dc: b3c8 cmpal %a0,%a1
519de: 674e beqs 51a2e <fat_file_open+0x11a> <== ALWAYS TAKEN
519e0: 2228 0020 movel %a0@(32),%d1 <== NOT EXECUTED
fat_cluster_num_to_sector512_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if (cln == 1)
519e4: 7a01 moveq #1,%d5 <== NOT EXECUTED
519e6: ba81 cmpl %d1,%d5 <== NOT EXECUTED
519e8: 6700 0130 beqw 51b1a <fat_file_open+0x206> <== NOT EXECUTED
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
519ec: 4a81 tstl %d1 <== NOT EXECUTED
519ee: 6600 0110 bnew 51b00 <fat_file_open+0x1ec> <== NOT EXECUTED
519f2: 7803 moveq #3,%d4 <== NOT EXECUTED
519f4: 102a 000e moveb %a2@(14),%d0 <== NOT EXECUTED
519f8: c084 andl %d4,%d0 <== NOT EXECUTED
519fa: 4a00 tstb %d0 <== NOT EXECUTED
519fc: 6700 0102 beqw 51b00 <fat_file_open+0x1ec> <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
51a00: 4280 clrl %d0 <== NOT EXECUTED
51a02: 102a 0003 moveb %a2@(3),%d0 <== NOT EXECUTED
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
51a06: 222a 001e movel %a2@(30),%d1 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
51a0a: e1a9 lsll %d0,%d1 <== NOT EXECUTED
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
51a0c: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED
51a10: 7a09 moveq #9,%d5 <== NOT EXECUTED
51a12: 2800 movel %d0,%d4 <== NOT EXECUTED
51a14: eaac lsrl %d5,%d4 <== NOT EXECUTED
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
51a16: d284 addl %d4,%d1 <== NOT EXECUTED
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
51a18: ea88 lsrl #5,%d0 <== NOT EXECUTED
51a1a: 780f moveq #15,%d4 <== NOT EXECUTED
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
51a1c: e989 lsll #4,%d1 <== NOT EXECUTED
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
51a1e: c084 andl %d4,%d0 <== NOT EXECUTED
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
51a20: d081 addl %d1,%d0 <== NOT EXECUTED
{
fat_file_fd_t *ffd = (fat_file_fd_t *)the_node;
uint32_t ck = fat_construct_key(fs_info, &ffd->dir_pos.sname);
if ( (key1) == ck)
51a22: b082 cmpl %d2,%d0 <== NOT EXECUTED
51a24: 6700 00c8 beqw 51aee <fat_file_open+0x1da> <== NOT EXECUTED
{
*ret = (void *)the_node;
return 0;
}
}
the_node = the_node->next;
51a28: 2050 moveal %a0@,%a0 <== NOT EXECUTED
)
{
uint32_t mod = (key1) % FAT_HASH_MODULE;
rtems_chain_node *the_node = rtems_chain_first(hash + mod);
for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )
51a2a: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
51a2c: 66b2 bnes 519e0 <fat_file_open+0xcc> <== NOT EXECUTED
return 0;
}
}
the_node = the_node->next;
}
return -1;
51a2e: 78ff moveq #-1,%d4
}
/* access "removed-but-still-open" hash table */
rc = _hash_search(fs_info, fs_info->rhash, key, key, &lfat_fd);
lfat_fd = (*fat_fd) = (fat_file_fd_t*)malloc(sizeof(fat_file_fd_t));
51a30: 4878 0042 pea 42 <DBL_MANT_DIG+0xd>
51a34: 4eb9 0004 50f4 jsr 450f4 <malloc>
if ( lfat_fd == NULL )
51a3a: 588f addql #4,%sp
}
/* access "removed-but-still-open" hash table */
rc = _hash_search(fs_info, fs_info->rhash, key, key, &lfat_fd);
lfat_fd = (*fat_fd) = (fat_file_fd_t*)malloc(sizeof(fat_file_fd_t));
51a3c: 2a40 moveal %d0,%a5
51a3e: 2680 movel %d0,%a3@
if ( lfat_fd == NULL )
51a40: 6700 0164 beqw 51ba6 <fat_file_open+0x292>
rtems_set_errno_and_return_minus_one( ENOMEM );
memset(lfat_fd, 0, sizeof(fat_file_fd_t));
51a44: 4878 0042 pea 42 <DBL_MANT_DIG+0xd>
lfat_fd->links_num = 1;
51a48: 7a01 moveq #1,%d5
lfat_fd = (*fat_fd) = (fat_file_fd_t*)malloc(sizeof(fat_file_fd_t));
if ( lfat_fd == NULL )
rtems_set_errno_and_return_minus_one( ENOMEM );
memset(lfat_fd, 0, sizeof(fat_file_fd_t));
51a4a: 42a7 clrl %sp@-
51a4c: 2f00 movel %d0,%sp@-
51a4e: 4eb9 0005 b1f8 jsr 5b1f8 <memset>
lfat_fd->links_num = 1;
lfat_fd->flags &= ~FAT_FILE_REMOVED;
lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
lfat_fd->dir_pos = *dir_pos;
51a54: 2b5c 0020 movel %a4@+,%a5@(32)
rtems_set_errno_and_return_minus_one( ENOMEM );
memset(lfat_fd, 0, sizeof(fat_file_fd_t));
lfat_fd->links_num = 1;
lfat_fd->flags &= ~FAT_FILE_REMOVED;
51a58: 72fe moveq #-2,%d1
lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
lfat_fd->dir_pos = *dir_pos;
if ( rc != RC_OK )
51a5a: 4fef 000c lea %sp@(12),%sp
lfat_fd->links_num = 1;
lfat_fd->flags &= ~FAT_FILE_REMOVED;
lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
lfat_fd->dir_pos = *dir_pos;
51a5e: 2b5c 0024 movel %a4@+,%a5@(36)
51a62: 2b5c 0028 movel %a4@+,%a5@(40)
51a66: 2b54 002c movel %a4@,%a5@(44)
rtems_set_errno_and_return_minus_one( ENOMEM );
memset(lfat_fd, 0, sizeof(fat_file_fd_t));
lfat_fd->links_num = 1;
lfat_fd->flags &= ~FAT_FILE_REMOVED;
51a6a: 102d 0030 moveb %a5@(48),%d0
if ( lfat_fd == NULL )
rtems_set_errno_and_return_minus_one( ENOMEM );
memset(lfat_fd, 0, sizeof(fat_file_fd_t));
lfat_fd->links_num = 1;
51a6e: 2b45 0008 movel %d5,%a5@(8)
lfat_fd->flags &= ~FAT_FILE_REMOVED;
lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
51a72: 7aff moveq #-1,%d5
rtems_set_errno_and_return_minus_one( ENOMEM );
memset(lfat_fd, 0, sizeof(fat_file_fd_t));
lfat_fd->links_num = 1;
lfat_fd->flags &= ~FAT_FILE_REMOVED;
51a74: c081 andl %d1,%d0
lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
51a76: 2b45 003a movel %d5,%a5@(58)
rtems_set_errno_and_return_minus_one( ENOMEM );
memset(lfat_fd, 0, sizeof(fat_file_fd_t));
lfat_fd->links_num = 1;
lfat_fd->flags &= ~FAT_FILE_REMOVED;
51a7a: 1b40 0030 moveb %d0,%a5@(48)
lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
lfat_fd->dir_pos = *dir_pos;
if ( rc != RC_OK )
51a7e: 4a84 tstl %d4
51a80: 6700 00f0 beqw 51b72 <fat_file_open+0x25e>
lfat_fd->ino = key;
51a84: 2b42 000c movel %d2,%a5@(12)
RTEMS_INLINE_ROUTINE void rtems_chain_append(
rtems_chain_control *the_chain,
rtems_chain_node *the_node
)
{
_Chain_Append( the_chain, the_node );
51a88: 2f0d movel %a5,%sp@-
51a8a: d6aa 0062 addl %a2@(98),%d3
51a8e: 2f03 movel %d3,%sp@-
51a90: 4eb9 0004 a044 jsr 4a044 <_Chain_Append>
51a96: 508f addql #8,%sp
/*
* other fields of fat-file descriptor will be initialized on upper
* level
*/
return RC_OK;
51a98: 4280 clrl %d0
}
51a9a: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
51aa0: 4e5e unlk %fp
51aa2: 4e75 rts
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
51aa4: 4281 clrl %d1 <== NOT EXECUTED
51aa6: 122a 0005 moveb %a2@(5),%d1 <== NOT EXECUTED
51aaa: 5580 subql #2,%d0 <== NOT EXECUTED
51aac: e3a8 lsll %d1,%d0 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
51aae: 4281 clrl %d1 <== NOT EXECUTED
51ab0: 122a 0003 moveb %a2@(3),%d1 <== NOT EXECUTED
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
51ab4: d0aa 0030 addl %a2@(48),%d0 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
51ab8: e3a8 lsll %d1,%d0 <== NOT EXECUTED
51aba: 6000 fe96 braw 51952 <fat_file_open+0x3e> <== NOT EXECUTED
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
51abe: 4281 clrl %d1 <== NOT EXECUTED
51ac0: 122a 0005 moveb %a2@(5),%d1 <== NOT EXECUTED
51ac4: e3a8 lsll %d1,%d0 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
51ac6: 4281 clrl %d1 <== NOT EXECUTED
51ac8: 122a 0003 moveb %a2@(3),%d1 <== NOT EXECUTED
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
51acc: d0aa 0030 addl %a2@(48),%d0 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
51ad0: e3a8 lsll %d1,%d0 <== NOT EXECUTED
51ad2: 6000 fede braw 519b2 <fat_file_open+0x9e> <== NOT EXECUTED
/* access "valid" hash table */
rc = _hash_search(fs_info, fs_info->vhash, key, 0, &lfat_fd);
if ( rc == RC_OK )
{
/* return pointer to fat_file_descriptor allocated before */
(*fat_fd) = lfat_fd;
51ad6: 2688 movel %a0,%a3@ <== NOT EXECUTED
lfat_fd->links_num++;
51ad8: 4280 clrl %d0 <== NOT EXECUTED
51ada: 52a8 0008 addql #1,%a0@(8) <== NOT EXECUTED
* other fields of fat-file descriptor will be initialized on upper
* level
*/
return RC_OK;
}
51ade: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
51ae4: 4e5e unlk %fp <== NOT EXECUTED
51ae6: 4e75 rts <== NOT EXECUTED
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if (cln == 1)
return 1;
51ae8: 7001 moveq #1,%d0
51aea: 6000 fec6 braw 519b2 <fat_file_open+0x9e>
fat_file_fd_t *ffd = (fat_file_fd_t *)the_node;
uint32_t ck = fat_construct_key(fs_info, &ffd->dir_pos.sname);
if ( (key1) == ck)
{
if ( ((key2) == 0) || ((key2) == ffd->ino) )
51aee: 4a82 tstl %d2 <== NOT EXECUTED
51af0: 6708 beqs 51afa <fat_file_open+0x1e6> <== NOT EXECUTED
51af2: b4a8 000c cmpl %a0@(12),%d2 <== NOT EXECUTED
51af6: 6600 ff30 bnew 51a28 <fat_file_open+0x114> <== NOT EXECUTED
{
*ret = (void *)the_node;
return 0;
51afa: 4284 clrl %d4 <== NOT EXECUTED
51afc: 6000 ff32 braw 51a30 <fat_file_open+0x11c> <== NOT EXECUTED
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
51b00: 4280 clrl %d0 <== NOT EXECUTED
51b02: 102a 0005 moveb %a2@(5),%d0 <== NOT EXECUTED
51b06: 5581 subql #2,%d1 <== NOT EXECUTED
51b08: e1a9 lsll %d0,%d1 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
51b0a: 4280 clrl %d0 <== NOT EXECUTED
51b0c: 102a 0003 moveb %a2@(3),%d0 <== NOT EXECUTED
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
51b10: d2aa 0030 addl %a2@(48),%d1 <== NOT EXECUTED
)
{
if (cln == 1)
return 1;
return (fat_cluster_num_to_sector_num(fs_info, cln) <<
51b14: e1a9 lsll %d0,%d1 <== NOT EXECUTED
51b16: 6000 fef4 braw 51a0c <fat_file_open+0xf8> <== NOT EXECUTED
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
51b1a: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED
51b1e: 7a09 moveq #9,%d5 <== NOT EXECUTED
51b20: 2800 movel %d0,%d4 <== NOT EXECUTED
51b22: eaac lsrl %d5,%d4 <== NOT EXECUTED
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if (cln == 1)
return 1;
51b24: 7201 moveq #1,%d1 <== NOT EXECUTED
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
51b26: d284 addl %d4,%d1 <== NOT EXECUTED
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
51b28: ea88 lsrl #5,%d0 <== NOT EXECUTED
51b2a: 780f moveq #15,%d4 <== NOT EXECUTED
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
51b2c: e989 lsll #4,%d1 <== NOT EXECUTED
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
51b2e: c084 andl %d4,%d0 <== NOT EXECUTED
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
51b30: d081 addl %d1,%d0 <== NOT EXECUTED
for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )
{
fat_file_fd_t *ffd = (fat_file_fd_t *)the_node;
uint32_t ck = fat_construct_key(fs_info, &ffd->dir_pos.sname);
if ( (key1) == ck)
51b32: b082 cmpl %d2,%d0 <== NOT EXECUTED
51b34: 6600 fef2 bnew 51a28 <fat_file_open+0x114> <== NOT EXECUTED
51b38: 60b4 bras 51aee <fat_file_open+0x1da> <== NOT EXECUTED
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
51b3a: 242c 0004 movel %a4@(4),%d2
51b3e: 7609 moveq #9,%d3
51b40: 2202 movel %d2,%d1
51b42: e6a9 lsrl %d3,%d1
51b44: 7001 moveq #1,%d0
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
51b46: d081 addl %d1,%d0
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
51b48: ea8a lsrl #5,%d2
51b4a: 780f moveq #15,%d4
uint32_t key1,
uint32_t key2,
fat_file_fd_t **ret
)
{
uint32_t mod = (key1) % FAT_HASH_MODULE;
51b4c: 163c 0001 moveb #1,%d3
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
(pos->ofs >> FAT_SECTOR512_BITS)) << 4) +
51b50: e988 lsll #4,%d0
((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
51b52: c484 andl %d4,%d2
51b54: 226a 0062 moveal %a2@(98),%a1
static inline uint32_t
fat_construct_key(
const fat_fs_info_t *fs_info,
fat_pos_t *pos)
{
return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
51b58: d480 addl %d0,%d2
51b5a: c682 andl %d2,%d3
rtems_chain_node *the_node = rtems_chain_first(hash + mod);
51b5c: 2003 movel %d3,%d0
51b5e: e98b lsll #4,%d3
51b60: e588 lsll #2,%d0
51b62: 9680 subl %d0,%d3
51b64: d3c3 addal %d3,%a1
51b66: 2059 moveal %a1@+,%a0
for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )
51b68: b3c8 cmpal %a0,%a1
51b6a: 6600 fe16 bnew 51982 <fat_file_open+0x6e>
51b6e: 6000 fe64 braw 519d4 <fat_file_open+0xc0>
if ( rc != RC_OK )
lfat_fd->ino = key;
else
{
lfat_fd->ino = fat_get_unique_ino(fs_info);
51b72: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51b74: 4eb9 0005 3980 jsr 53980 <fat_get_unique_ino> <== NOT EXECUTED
if ( lfat_fd->ino == 0 )
51b7a: 588f addql #4,%sp <== NOT EXECUTED
if ( rc != RC_OK )
lfat_fd->ino = key;
else
{
lfat_fd->ino = fat_get_unique_ino(fs_info);
51b7c: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED
if ( lfat_fd->ino == 0 )
51b80: 6600 ff06 bnew 51a88 <fat_file_open+0x174> <== NOT EXECUTED
{
free((*fat_fd));
51b84: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
51b86: 4eb9 0004 4bec jsr 44bec <free> <== NOT EXECUTED
/*
* XXX: kernel resource is unsufficient, but not the memory,
* but there is no suitable errno :(
*/
rtems_set_errno_and_return_minus_one( ENOMEM );
51b8c: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
51b92: 588f addql #4,%sp <== NOT EXECUTED
51b94: 720c moveq #12,%d1 <== NOT EXECUTED
51b96: 2040 moveal %d0,%a0 <== NOT EXECUTED
51b98: 70ff moveq #-1,%d0 <== NOT EXECUTED
* other fields of fat-file descriptor will be initialized on upper
* level
*/
return RC_OK;
}
51b9a: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
free((*fat_fd));
/*
* XXX: kernel resource is unsufficient, but not the memory,
* but there is no suitable errno :(
*/
rtems_set_errno_and_return_minus_one( ENOMEM );
51ba0: 2081 movel %d1,%a0@ <== NOT EXECUTED
* other fields of fat-file descriptor will be initialized on upper
* level
*/
return RC_OK;
}
51ba2: 4e5e unlk %fp <== NOT EXECUTED
51ba4: 4e75 rts <== NOT EXECUTED
/* access "removed-but-still-open" hash table */
rc = _hash_search(fs_info, fs_info->rhash, key, key, &lfat_fd);
lfat_fd = (*fat_fd) = (fat_file_fd_t*)malloc(sizeof(fat_file_fd_t));
if ( lfat_fd == NULL )
rtems_set_errno_and_return_minus_one( ENOMEM );
51ba6: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
51bac: 740c moveq #12,%d2 <== NOT EXECUTED
51bae: 2040 moveal %d0,%a0 <== NOT EXECUTED
51bb0: 70ff moveq #-1,%d0 <== NOT EXECUTED
51bb2: 2082 movel %d2,%a0@ <== NOT EXECUTED
* other fields of fat-file descriptor will be initialized on upper
* level
*/
return RC_OK;
}
51bb4: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
51bba: 4e5e unlk %fp <== NOT EXECUTED
00051bd0 <fat_file_read>:
fat_file_fd_t *fat_fd,
uint32_t start,
uint32_t count,
uint8_t *buf
)
{
51bd0: 4e56 ffcc linkw %fp,#-52
51bd4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
51bd8: 246e 0008 moveal %fp@(8),%a2
51bdc: 266e 000c moveal %fp@(12),%a3
51be0: 282e 0010 movel %fp@(16),%d4
51be4: 242e 0014 movel %fp@(20),%d2
int rc = RC_OK;
ssize_t ret = 0;
uint32_t cmpltd = 0;
uint32_t cur_cln = 0;
51be8: 42ae fffc clrl %fp@(-4)
uint32_t sec = 0;
uint32_t byte = 0;
uint32_t c = 0;
/* it couldn't be removed - otherwise cache update will be broken */
if (count == 0)
51bec: 4a82 tstl %d2
51bee: 6700 0106 beqw 51cf6 <fat_file_read+0x126>
/*
* >= because start is offset and computed from 0 and file_size
* computed from 1
*/
if ( start >= fat_fd->fat_file_size )
51bf2: 202b 0018 movel %a3@(24),%d0
51bf6: b880 cmpl %d0,%d4
51bf8: 6400 00fc bccw 51cf6 <fat_file_read+0x126>
return FAT_EOF;
if ((count > fat_fd->fat_file_size) ||
51bfc: b082 cmpl %d2,%d0
51bfe: 6400 0102 bccw 51d02 <fat_file_read+0x132>
(start > fat_fd->fat_file_size - count))
count = fat_fd->fat_file_size - start;
51c02: 2400 movel %d0,%d2 <== NOT EXECUTED
51c04: 9484 subl %d4,%d2 <== NOT EXECUTED
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
51c06: 7001 moveq #1,%d0
51c08: b0ab 0020 cmpl %a3@(32),%d0
51c0c: 6700 0106 beqw 51d14 <fat_file_read+0x144>
return -1;
return ret;
}
cl_start = start >> fs_info->vol.bpc_log2;
51c10: 4280 clrl %d0 <== NOT EXECUTED
51c12: 102a 0008 moveb %a2@(8),%d0 <== NOT EXECUTED
51c16: 2604 movel %d4,%d3 <== NOT EXECUTED
save_ofs = ofs = start & (fs_info->vol.bpc - 1);
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
51c18: 486e fffc pea %fp@(-4) <== NOT EXECUTED
return -1;
return ret;
}
cl_start = start >> fs_info->vol.bpc_log2;
51c1c: e0ab lsrl %d0,%d3 <== NOT EXECUTED
save_ofs = ofs = start & (fs_info->vol.bpc - 1);
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
51c1e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
return ret;
}
cl_start = start >> fs_info->vol.bpc_log2;
save_ofs = ofs = start & (fs_info->vol.bpc - 1);
51c20: 3c2a 0006 movew %a2@(6),%d6 <== NOT EXECUTED
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
51c24: 2f0b movel %a3,%sp@- <== NOT EXECUTED
return -1;
return ret;
}
cl_start = start >> fs_info->vol.bpc_log2;
51c26: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
save_ofs = ofs = start & (fs_info->vol.bpc - 1);
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
51c2a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51c2c: 4eba fc3a jsr %pc@(51868 <fat_file_lseek>) <== NOT EXECUTED
if (rc != RC_OK)
51c30: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
51c34: 4a81 tstl %d1 <== NOT EXECUTED
51c36: 6600 0138 bnew 51d70 <fat_file_read+0x1a0> <== NOT EXECUTED
return ret;
}
cl_start = start >> fs_info->vol.bpc_log2;
save_ofs = ofs = start & (fs_info->vol.bpc - 1);
51c3a: 0286 0000 ffff andil #65535,%d6 <== NOT EXECUTED
51c40: 5386 subql #1,%d6 <== NOT EXECUTED
51c42: c886 andl %d6,%d4 <== NOT EXECUTED
51c44: 2d44 fff4 movel %d4,%fp@(-12) <== NOT EXECUTED
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
if (rc != RC_OK)
return rc;
while (count > 0)
51c48: 4a82 tstl %d2 <== NOT EXECUTED
51c4a: 6700 01b0 beqw 51dfc <fat_file_read+0x22c> <== NOT EXECUTED
51c4e: 99cc subal %a4,%a4 <== NOT EXECUTED
51c50: 2a0c movel %a4,%d5 <== NOT EXECUTED
51c52: 284a moveal %a2,%a4 <== NOT EXECUTED
51c54: 4bf9 0005 29c4 lea 529c4 <_fat_block_read>,%a5 <== NOT EXECUTED
51c5a: 1e2a 0002 moveb %a2@(2),%d7 <== NOT EXECUTED
51c5e: 3252 moveaw %a2@,%a1 <== NOT EXECUTED
51c60: 2c2e fff4 movel %fp@(-12),%d6 <== NOT EXECUTED
51c64: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED
{
c = MIN(count, (fs_info->vol.bpc - ofs));
51c68: 4280 clrl %d0 <== NOT EXECUTED
sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);
51c6a: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
51c6e: 2208 movel %a0,%d1 <== NOT EXECUTED
51c70: 5581 subql #2,%d1 <== NOT EXECUTED
if (rc != RC_OK)
return rc;
while (count > 0)
{
c = MIN(count, (fs_info->vol.bpc - ofs));
51c72: 302c 0006 movew %a4@(6),%d0 <== NOT EXECUTED
51c76: 9086 subl %d6,%d0 <== NOT EXECUTED
51c78: b480 cmpl %d0,%d2 <== NOT EXECUTED
51c7a: 6402 bccs 51c7e <fat_file_read+0xae> <== NOT EXECUTED
51c7c: 2002 movel %d2,%d0 <== NOT EXECUTED
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
51c7e: 4a88 tstl %a0 <== NOT EXECUTED
51c80: 6600 00fa bnew 51d7c <fat_file_read+0x1ac> <== NOT EXECUTED
51c84: 7603 moveq #3,%d3 <== NOT EXECUTED
51c86: 182c 000e moveb %a4@(14),%d4 <== NOT EXECUTED
51c8a: c883 andl %d3,%d4 <== NOT EXECUTED
51c8c: 4a04 tstb %d4 <== NOT EXECUTED
51c8e: 6700 00ec beqw 51d7c <fat_file_read+0x1ac> <== NOT EXECUTED
return fs_info->vol.rdir_loc;
51c92: 222c 001e movel %a4@(30),%d1 <== NOT EXECUTED
sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);
sec += (ofs >> fs_info->vol.sec_log2);
byte = ofs & (fs_info->vol.bps - 1);
51c96: 4284 clrl %d4 <== NOT EXECUTED
ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);
51c98: 4872 5800 pea %a2@(00000000,%d5:l) <== NOT EXECUTED
if ( ret < 0 )
return -1;
count -= c;
51c9c: 9480 subl %d0,%d2 <== NOT EXECUTED
cmpltd += c;
51c9e: da80 addl %d0,%d5 <== NOT EXECUTED
sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);
sec += (ofs >> fs_info->vol.sec_log2);
byte = ofs & (fs_info->vol.bps - 1);
ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);
51ca0: 2041 moveal %d1,%a0 <== NOT EXECUTED
{
c = MIN(count, (fs_info->vol.bpc - ofs));
sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);
sec += (ofs >> fs_info->vol.sec_log2);
byte = ofs & (fs_info->vol.bps - 1);
51ca2: 3809 movew %a1,%d4 <== NOT EXECUTED
ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);
51ca4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
{
c = MIN(count, (fs_info->vol.bpc - ofs));
sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);
sec += (ofs >> fs_info->vol.sec_log2);
byte = ofs & (fs_info->vol.bps - 1);
51ca6: 2244 moveal %d4,%a1 <== NOT EXECUTED
51ca8: 2009 movel %a1,%d0 <== NOT EXECUTED
51caa: 5380 subql #1,%d0 <== NOT EXECUTED
while (count > 0)
{
c = MIN(count, (fs_info->vol.bpc - ofs));
sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);
sec += (ofs >> fs_info->vol.sec_log2);
51cac: 0287 0000 00ff andil #255,%d7 <== NOT EXECUTED
byte = ofs & (fs_info->vol.bps - 1);
ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);
51cb2: c086 andl %d6,%d0 <== NOT EXECUTED
while (count > 0)
{
c = MIN(count, (fs_info->vol.bpc - ofs));
sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);
sec += (ofs >> fs_info->vol.sec_log2);
51cb4: eeae lsrl %d7,%d6 <== NOT EXECUTED
byte = ofs & (fs_info->vol.bps - 1);
ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);
51cb6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
51cb8: 4870 6800 pea %a0@(00000000,%d6:l) <== NOT EXECUTED
51cbc: 2f0c movel %a4,%sp@- <== NOT EXECUTED
51cbe: 4e95 jsr %a5@ <== NOT EXECUTED
if ( ret < 0 )
51cc0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
51cc4: 4a80 tstl %d0 <== NOT EXECUTED
51cc6: 6d00 009c bltw 51d64 <fat_file_read+0x194> <== NOT EXECUTED
return -1;
count -= c;
cmpltd += c;
save_cln = cur_cln;
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
51cca: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( rc != RC_OK )
return rc;
ofs = 0;
51cce: 4286 clrl %d6 <== NOT EXECUTED
if ( ret < 0 )
return -1;
count -= c;
cmpltd += c;
save_cln = cur_cln;
51cd0: 2e2e fffc movel %fp@(-4),%d7 <== NOT EXECUTED
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
51cd4: 2f07 movel %d7,%sp@- <== NOT EXECUTED
51cd6: 2f0c movel %a4,%sp@- <== NOT EXECUTED
51cd8: 4eb9 0005 8ac0 jsr 58ac0 <fat_get_fat_cluster> <== NOT EXECUTED
if ( rc != RC_OK )
51cde: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51ce2: 4a80 tstl %d0 <== NOT EXECUTED
51ce4: 6612 bnes 51cf8 <fat_file_read+0x128> <== NOT EXECUTED
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
if (rc != RC_OK)
return rc;
while (count > 0)
51ce6: 4a82 tstl %d2 <== NOT EXECUTED
51ce8: 6700 00e4 beqw 51dce <fat_file_read+0x1fe> <== NOT EXECUTED
51cec: 1e2c 0002 moveb %a4@(2),%d7 <== NOT EXECUTED
51cf0: 3254 moveaw %a4@,%a1 <== NOT EXECUTED
51cf2: 6000 ff74 braw 51c68 <fat_file_read+0x98> <== NOT EXECUTED
uint32_t byte = 0;
uint32_t c = 0;
/* it couldn't be removed - otherwise cache update will be broken */
if (count == 0)
return cmpltd;
51cf6: 4280 clrl %d0 <== NOT EXECUTED
fat_fd->map.file_cln = cl_start +
((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
fat_fd->map.disk_cln = save_cln;
return cmpltd;
}
51cf8: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
51cfe: 4e5e unlk %fp
51d00: 4e75 rts
*/
if ( start >= fat_fd->fat_file_size )
return FAT_EOF;
if ((count > fat_fd->fat_file_size) ||
(start > fat_fd->fat_file_size - count))
51d02: 2200 movel %d0,%d1
51d04: 9282 subl %d2,%d1
* computed from 1
*/
if ( start >= fat_fd->fat_file_size )
return FAT_EOF;
if ((count > fat_fd->fat_file_size) ||
51d06: b284 cmpl %d4,%d1
51d08: 6400 fefc bccw 51c06 <fat_file_read+0x36>
(start > fat_fd->fat_file_size - count))
count = fat_fd->fat_file_size - start;
51d0c: 2400 movel %d0,%d2 <== NOT EXECUTED
51d0e: 9484 subl %d4,%d2 <== NOT EXECUTED
51d10: 6000 fef4 braw 51c06 <fat_file_read+0x36> <== NOT EXECUTED
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
51d14: 4aab 0024 tstl %a3@(36)
51d18: 6600 fef6 bnew 51c10 <fat_file_read+0x40>
51d1c: 7203 moveq #3,%d1
51d1e: 102a 000e moveb %a2@(14),%d0
51d22: c081 andl %d1,%d0
51d24: 4a00 tstb %d0
51d26: 6700 fee8 beqw 51c10 <fat_file_read+0x40>
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
51d2a: 202b 001c movel %a3@(28),%d0
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
51d2e: 665c bnes 51d8c <fat_file_read+0x1bc> <== NEVER TAKEN
return fs_info->vol.rdir_loc;
51d30: 202a 001e movel %a2@(30),%d0
sec += (start >> fs_info->vol.sec_log2);
byte = start & (fs_info->vol.bps - 1);
51d34: 4281 clrl %d1
ret = _fat_block_read(fs_info, sec, byte, count, buf);
51d36: 2040 moveal %d0,%a0
51d38: 2f2e 0018 movel %fp@(24),%sp@-
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
sec += (start >> fs_info->vol.sec_log2);
byte = start & (fs_info->vol.bps - 1);
51d3c: 3212 movew %a2@,%d1
ret = _fat_block_read(fs_info, sec, byte, count, buf);
51d3e: 2f02 movel %d2,%sp@-
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
sec += (start >> fs_info->vol.sec_log2);
byte = start & (fs_info->vol.bps - 1);
51d40: 2401 movel %d1,%d2
51d42: 5382 subql #1,%d2
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
sec += (start >> fs_info->vol.sec_log2);
51d44: 4281 clrl %d1
51d46: 122a 0002 moveb %a2@(2),%d1
byte = start & (fs_info->vol.bps - 1);
ret = _fat_block_read(fs_info, sec, byte, count, buf);
51d4a: c484 andl %d4,%d2
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
sec += (start >> fs_info->vol.sec_log2);
51d4c: e2ac lsrl %d1,%d4
byte = start & (fs_info->vol.bps - 1);
ret = _fat_block_read(fs_info, sec, byte, count, buf);
51d4e: 2f02 movel %d2,%sp@-
51d50: 4870 4800 pea %a0@(00000000,%d4:l)
51d54: 2f0a movel %a2,%sp@-
51d56: 4eb9 0005 29c4 jsr 529c4 <_fat_block_read>
if ( ret < 0 )
51d5c: 4fef 0014 lea %sp@(20),%sp
51d60: 4a80 tstl %d0
51d62: 6c94 bges 51cf8 <fat_file_read+0x128> <== ALWAYS TAKEN
sec += (ofs >> fs_info->vol.sec_log2);
byte = ofs & (fs_info->vol.bps - 1);
ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);
if ( ret < 0 )
return -1;
51d64: 70ff moveq #-1,%d0 <== NOT EXECUTED
fat_fd->map.file_cln = cl_start +
((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
fat_fd->map.disk_cln = save_cln;
return cmpltd;
}
51d66: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
51d6c: 4e5e unlk %fp <== NOT EXECUTED
51d6e: 4e75 rts <== NOT EXECUTED
cl_start = start >> fs_info->vol.bpc_log2;
save_ofs = ofs = start & (fs_info->vol.bpc - 1);
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
if (rc != RC_OK)
51d70: 2001 movel %d1,%d0 <== NOT EXECUTED
fat_fd->map.file_cln = cl_start +
((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
fat_fd->map.disk_cln = save_cln;
return cmpltd;
}
51d72: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
51d78: 4e5e unlk %fp <== NOT EXECUTED
51d7a: 4e75 rts <== NOT EXECUTED
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
51d7c: 4283 clrl %d3 <== NOT EXECUTED
51d7e: 162c 0005 moveb %a4@(5),%d3 <== NOT EXECUTED
51d82: e7a9 lsll %d3,%d1 <== NOT EXECUTED
51d84: d2ac 0030 addl %a4@(48),%d1 <== NOT EXECUTED
51d88: 6000 ff0c braw 51c96 <fat_file_read+0xc6> <== NOT EXECUTED
51d8c: 4281 clrl %d1 <== NOT EXECUTED
51d8e: 122a 0005 moveb %a2@(5),%d1 <== NOT EXECUTED
51d92: 5580 subql #2,%d0 <== NOT EXECUTED
51d94: e3a8 lsll %d1,%d0 <== NOT EXECUTED
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
sec += (start >> fs_info->vol.sec_log2);
byte = start & (fs_info->vol.bps - 1);
51d96: 4281 clrl %d1 <== NOT EXECUTED
51d98: d0aa 0030 addl %a2@(48),%d0 <== NOT EXECUTED
ret = _fat_block_read(fs_info, sec, byte, count, buf);
51d9c: 2040 moveal %d0,%a0 <== NOT EXECUTED
51d9e: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
sec += (start >> fs_info->vol.sec_log2);
byte = start & (fs_info->vol.bps - 1);
51da2: 3212 movew %a2@,%d1 <== NOT EXECUTED
ret = _fat_block_read(fs_info, sec, byte, count, buf);
51da4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
sec += (start >> fs_info->vol.sec_log2);
byte = start & (fs_info->vol.bps - 1);
51da6: 2401 movel %d1,%d2 <== NOT EXECUTED
51da8: 5382 subql #1,%d2 <== NOT EXECUTED
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
sec += (start >> fs_info->vol.sec_log2);
51daa: 4281 clrl %d1 <== NOT EXECUTED
51dac: 122a 0002 moveb %a2@(2),%d1 <== NOT EXECUTED
byte = start & (fs_info->vol.bps - 1);
ret = _fat_block_read(fs_info, sec, byte, count, buf);
51db0: c484 andl %d4,%d2 <== NOT EXECUTED
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
sec += (start >> fs_info->vol.sec_log2);
51db2: e2ac lsrl %d1,%d4 <== NOT EXECUTED
byte = start & (fs_info->vol.bps - 1);
ret = _fat_block_read(fs_info, sec, byte, count, buf);
51db4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51db6: 4870 4800 pea %a0@(00000000,%d4:l) <== NOT EXECUTED
51dba: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51dbc: 4eb9 0005 29c4 jsr 529c4 <_fat_block_read> <== NOT EXECUTED
if ( ret < 0 )
51dc2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
51dc6: 4a80 tstl %d0 <== NOT EXECUTED
51dc8: 6c00 ff2e bgew 51cf8 <fat_file_read+0x128> <== NOT EXECUTED
51dcc: 6096 bras 51d64 <fat_file_read+0x194> <== NOT EXECUTED
51dce: 244c moveal %a4,%a2 <== NOT EXECUTED
51dd0: 2845 moveal %d5,%a4 <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = cl_start +
((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
51dd2: 4282 clrl %d2 <== NOT EXECUTED
51dd4: 142a 0008 moveb %a2@(8),%d2 <== NOT EXECUTED
51dd8: 2005 movel %d5,%d0 <== NOT EXECUTED
51dda: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
51dde: 41f0 c8ff lea %a0@(ffffffff,%a4:l),%a0 <== NOT EXECUTED
fat_fd->map.disk_cln = save_cln;
51de2: 2747 0036 movel %d7,%a3@(54) <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = cl_start +
((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
51de6: 2208 movel %a0,%d1 <== NOT EXECUTED
51de8: e4a9 lsrl %d2,%d1 <== NOT EXECUTED
ofs = 0;
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = cl_start +
51dea: d2ae fff8 addl %fp@(-8),%d1 <== NOT EXECUTED
51dee: 2741 0032 movel %d1,%a3@(50) <== NOT EXECUTED
((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
fat_fd->map.disk_cln = save_cln;
return cmpltd;
}
51df2: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
51df8: 4e5e unlk %fp <== NOT EXECUTED
51dfa: 4e75 rts <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = cl_start +
((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
51dfc: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
if (rc != RC_OK)
return rc;
while (count > 0)
51e00: 99cc subal %a4,%a4 <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = cl_start +
((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
51e02: 4282 clrl %d2 <== NOT EXECUTED
51e04: 142a 0008 moveb %a2@(8),%d2 <== NOT EXECUTED
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
if (rc != RC_OK)
return rc;
while (count > 0)
51e08: 4287 clrl %d7 <== NOT EXECUTED
51e0a: 4280 clrl %d0 <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = cl_start +
((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
51e0c: 41f0 c8ff lea %a0@(ffffffff,%a4:l),%a0 <== NOT EXECUTED
fat_fd->map.disk_cln = save_cln;
51e10: 2747 0036 movel %d7,%a3@(54) <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = cl_start +
((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
51e14: 2208 movel %a0,%d1 <== NOT EXECUTED
51e16: e4a9 lsrl %d2,%d1 <== NOT EXECUTED
ofs = 0;
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = cl_start +
51e18: d2ae fff8 addl %fp@(-8),%d1 <== NOT EXECUTED
51e1c: 2741 0032 movel %d1,%a3@(50) <== NOT EXECUTED
51e20: 60d0 bras 51df2 <fat_file_read+0x222> <== NOT EXECUTED
00052680 <fat_file_size>:
int rc = RC_OK;
uint32_t cur_cln = fat_fd->cln;
uint32_t save_cln = 0;
/* Have we requested root dir size for FAT12/16? */
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
52680: 7001 moveq #1,%d0 <== NOT EXECUTED
int
fat_file_size(
fat_fs_info_t *fs_info,
fat_file_fd_t *fat_fd
)
{
52682: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
52686: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
5268a: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
int rc = RC_OK;
uint32_t cur_cln = fat_fd->cln;
5268e: 242b 001c movel %a3@(28),%d2 <== NOT EXECUTED
int
fat_file_size(
fat_fs_info_t *fs_info,
fat_file_fd_t *fat_fd
)
{
52692: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int rc = RC_OK;
uint32_t cur_cln = fat_fd->cln;
52696: 2d42 fffc movel %d2,%fp@(-4) <== NOT EXECUTED
uint32_t save_cln = 0;
/* Have we requested root dir size for FAT12/16? */
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
5269a: b0ab 0020 cmpl %a3@(32),%d0 <== NOT EXECUTED
5269e: 6760 beqs 52700 <fat_file_size+0x80> <== NOT EXECUTED
return rc;
}
fat_fd->fat_file_size = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
526a0: 2002 movel %d2,%d0 <== NOT EXECUTED
526a2: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED
{
fat_fd->fat_file_size = fs_info->vol.rdir_size;
return rc;
}
fat_fd->fat_file_size = 0;
526a6: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
526aa: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
526ae: 6474 bccs 52724 <fat_file_size+0xa4> <== NOT EXECUTED
526b0: 280e movel %fp,%d4 <== NOT EXECUTED
526b2: 5984 subql #4,%d4 <== NOT EXECUTED
526b4: 49f9 0005 8ac0 lea 58ac0 <fat_get_fat_cluster>,%a4 <== NOT EXECUTED
{
save_cln = cur_cln;
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
526ba: 2f04 movel %d4,%sp@- <== NOT EXECUTED
526bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
526be: 2f0a movel %a2,%sp@- <== NOT EXECUTED
526c0: 4e94 jsr %a4@ <== NOT EXECUTED
if ( rc != RC_OK )
526c2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
526c6: 4a80 tstl %d0 <== NOT EXECUTED
526c8: 662c bnes 526f6 <fat_file_size+0x76> <== NOT EXECUTED
return rc;
}
fat_fd->fat_file_size = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
526ca: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
save_cln = cur_cln;
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
if ( rc != RC_OK )
return rc;
fat_fd->fat_file_size += fs_info->vol.bpc;
526ce: 4283 clrl %d3 <== NOT EXECUTED
return rc;
}
fat_fd->fat_file_size = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
526d0: 2200 movel %d0,%d1 <== NOT EXECUTED
save_cln = cur_cln;
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
if ( rc != RC_OK )
return rc;
fat_fd->fat_file_size += fs_info->vol.bpc;
526d2: 362a 0006 movew %a2@(6),%d3 <== NOT EXECUTED
return rc;
}
fat_fd->fat_file_size = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
526d6: c2aa 0010 andl %a2@(16),%d1 <== NOT EXECUTED
save_cln = cur_cln;
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
if ( rc != RC_OK )
return rc;
fat_fd->fat_file_size += fs_info->vol.bpc;
526da: d7ab 0018 addl %d3,%a3@(24) <== NOT EXECUTED
return rc;
}
fat_fd->fat_file_size = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
526de: b2aa 0014 cmpl %a2@(20),%d1 <== NOT EXECUTED
526e2: 6442 bccs 52726 <fat_file_size+0xa6> <== NOT EXECUTED
{
save_cln = cur_cln;
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
526e4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
return rc;
}
fat_fd->fat_file_size = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
526e6: 2400 movel %d0,%d2 <== NOT EXECUTED
{
save_cln = cur_cln;
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
526e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
526ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED
526ec: 4e94 jsr %a4@ <== NOT EXECUTED
if ( rc != RC_OK )
526ee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
526f2: 4a80 tstl %d0 <== NOT EXECUTED
526f4: 67d4 beqs 526ca <fat_file_size+0x4a> <== NOT EXECUTED
fat_fd->fat_file_size += fs_info->vol.bpc;
}
fat_fd->map.last_cln = save_cln;
return rc;
}
526f6: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
526fc: 4e5e unlk %fp <== NOT EXECUTED
526fe: 4e75 rts <== NOT EXECUTED
int rc = RC_OK;
uint32_t cur_cln = fat_fd->cln;
uint32_t save_cln = 0;
/* Have we requested root dir size for FAT12/16? */
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
52700: 4aab 0024 tstl %a3@(36) <== NOT EXECUTED
52704: 669a bnes 526a0 <fat_file_size+0x20> <== NOT EXECUTED
52706: 7203 moveq #3,%d1 <== NOT EXECUTED
52708: 102a 000e moveb %a2@(14),%d0 <== NOT EXECUTED
5270c: c081 andl %d1,%d0 <== NOT EXECUTED
5270e: 4a00 tstb %d0 <== NOT EXECUTED
52710: 678e beqs 526a0 <fat_file_size+0x20> <== NOT EXECUTED
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
fat_fd->fat_file_size = fs_info->vol.rdir_size;
return rc;
52712: 4280 clrl %d0 <== NOT EXECUTED
/* Have we requested root dir size for FAT12/16? */
if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
(fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))
{
fat_fd->fat_file_size = fs_info->vol.rdir_size;
52714: 276a 0028 0018 movel %a2@(40),%a3@(24) <== NOT EXECUTED
fat_fd->fat_file_size += fs_info->vol.bpc;
}
fat_fd->map.last_cln = save_cln;
return rc;
}
5271a: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
52720: 4e5e unlk %fp <== NOT EXECUTED
52722: 4e75 rts <== NOT EXECUTED
fat_file_fd_t *fat_fd
)
{
int rc = RC_OK;
uint32_t cur_cln = fat_fd->cln;
uint32_t save_cln = 0;
52724: 4282 clrl %d2 <== NOT EXECUTED
if ( rc != RC_OK )
return rc;
fat_fd->fat_file_size += fs_info->vol.bpc;
}
fat_fd->map.last_cln = save_cln;
52726: 2742 003a movel %d2,%a3@(58) <== NOT EXECUTED
5272a: 4280 clrl %d0 <== NOT EXECUTED
return rc;
}
5272c: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
52732: 4e5e unlk %fp <== NOT EXECUTED
...
00051e22 <fat_file_truncate>:
)
{
int rc = RC_OK;
uint32_t cur_cln = 0;
uint32_t cl_start = 0;
uint32_t new_last_cln = FAT_UNDEFINED_VALUE;
51e22: 72ff moveq #-1,%d1 <== NOT EXECUTED
fat_file_truncate(
fat_fs_info_t *fs_info,
fat_file_fd_t *fat_fd,
uint32_t new_length
)
{
51e24: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
51e28: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
51e2c: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
51e30: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
51e34: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
uint32_t cur_cln = 0;
uint32_t cl_start = 0;
uint32_t new_last_cln = FAT_UNDEFINED_VALUE;
if ( new_length >= fat_fd->fat_file_size )
51e38: 202a 0018 movel %a2@(24),%d0 <== NOT EXECUTED
fat_file_fd_t *fat_fd,
uint32_t new_length
)
{
int rc = RC_OK;
uint32_t cur_cln = 0;
51e3c: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
uint32_t cl_start = 0;
uint32_t new_last_cln = FAT_UNDEFINED_VALUE;
51e40: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED
if ( new_length >= fat_fd->fat_file_size )
51e44: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
51e46: 646c bccs 51eb4 <fat_file_truncate+0x92> <== NOT EXECUTED
return rc;
assert(fat_fd->fat_file_size);
51e48: 4a80 tstl %d0 <== NOT EXECUTED
51e4a: 6700 00ae beqw 51efa <fat_file_truncate+0xd8> <== NOT EXECUTED
cl_start = (new_length + fs_info->vol.bpc - 1) >> fs_info->vol.bpc_log2;
51e4e: 4282 clrl %d2 <== NOT EXECUTED
51e50: 4281 clrl %d1 <== NOT EXECUTED
51e52: 122b 0008 moveb %a3@(8),%d1 <== NOT EXECUTED
51e56: 342b 0006 movew %a3@(6),%d2 <== NOT EXECUTED
51e5a: 41f0 28ff lea %a0@(ffffffff,%d2:l),%a0 <== NOT EXECUTED
51e5e: 2408 movel %a0,%d2 <== NOT EXECUTED
51e60: e2aa lsrl %d1,%d2 <== NOT EXECUTED
if ((cl_start << fs_info->vol.bpc_log2) >= fat_fd->fat_file_size)
51e62: 2602 movel %d2,%d3 <== NOT EXECUTED
51e64: e3ab lsll %d1,%d3 <== NOT EXECUTED
51e66: b680 cmpl %d0,%d3 <== NOT EXECUTED
51e68: 644a bccs 51eb4 <fat_file_truncate+0x92> <== NOT EXECUTED
return RC_OK;
if (cl_start != 0)
51e6a: 4a82 tstl %d2 <== NOT EXECUTED
51e6c: 6752 beqs 51ec0 <fat_file_truncate+0x9e> <== NOT EXECUTED
{
rc = fat_file_lseek(fs_info, fat_fd, cl_start - 1, &new_last_cln);
51e6e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
51e72: 2042 moveal %d2,%a0 <== NOT EXECUTED
51e74: 4868 ffff pea %a0@(-1) <== NOT EXECUTED
51e78: 49fa f9ee lea %pc@(51868 <fat_file_lseek>),%a4 <== NOT EXECUTED
51e7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51e7e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51e80: 4e94 jsr %a4@ <== NOT EXECUTED
if (rc != RC_OK)
51e82: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if ((cl_start << fs_info->vol.bpc_log2) >= fat_fd->fat_file_size)
return RC_OK;
if (cl_start != 0)
{
rc = fat_file_lseek(fs_info, fat_fd, cl_start - 1, &new_last_cln);
51e86: 2001 movel %d1,%d0 <== NOT EXECUTED
if (rc != RC_OK)
51e88: 662c bnes 51eb6 <fat_file_truncate+0x94> <== NOT EXECUTED
return rc;
}
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
51e8a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
51e8e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51e90: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51e92: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51e94: 4e94 jsr %a4@ <== NOT EXECUTED
if (rc != RC_OK)
51e96: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (rc != RC_OK)
return rc;
}
rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
51e9a: 2001 movel %d1,%d0 <== NOT EXECUTED
if (rc != RC_OK)
51e9c: 6618 bnes 51eb6 <fat_file_truncate+0x94> <== NOT EXECUTED
return rc;
rc = fat_free_fat_clusters_chain(fs_info, cur_cln);
51e9e: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
51ea2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51ea4: 4eb9 0005 8f0e jsr 58f0e <fat_free_fat_clusters_chain> <== NOT EXECUTED
if (rc != RC_OK)
51eaa: 508f addql #8,%sp <== NOT EXECUTED
51eac: 4a80 tstl %d0 <== NOT EXECUTED
51eae: 6606 bnes 51eb6 <fat_file_truncate+0x94> <== NOT EXECUTED
return rc;
if (cl_start != 0)
51eb0: 4a82 tstl %d2 <== NOT EXECUTED
51eb2: 6612 bnes 51ec6 <fat_file_truncate+0xa4> <== NOT EXECUTED
uint32_t cl_start = 0;
uint32_t new_last_cln = FAT_UNDEFINED_VALUE;
if ( new_length >= fat_fd->fat_file_size )
return rc;
51eb4: 4280 clrl %d0 <== NOT EXECUTED
fat_fd->map.file_cln = cl_start - 1;
fat_fd->map.disk_cln = new_last_cln;
fat_fd->map.last_cln = new_last_cln;
}
return RC_OK;
}
51eb6: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED
51ebc: 4e5e unlk %fp <== NOT EXECUTED
51ebe: 4e75 rts <== NOT EXECUTED
51ec0: 49fa f9a6 lea %pc@(51868 <fat_file_lseek>),%a4 <== NOT EXECUTED
51ec4: 60c4 bras 51e8a <fat_file_truncate+0x68> <== NOT EXECUTED
if (rc != RC_OK)
return rc;
if (cl_start != 0)
{
rc = fat_set_fat_cluster(fs_info, new_last_cln, FAT_GENFAT_EOC);
51ec6: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
51eca: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
51ece: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51ed0: 4eb9 0005 8c92 jsr 58c92 <fat_set_fat_cluster> <== NOT EXECUTED
if ( rc != RC_OK )
51ed6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51eda: 4a80 tstl %d0 <== NOT EXECUTED
51edc: 66d8 bnes 51eb6 <fat_file_truncate+0x94> <== NOT EXECUTED
return rc;
fat_fd->map.file_cln = cl_start - 1;
fat_fd->map.disk_cln = new_last_cln;
51ede: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
if (cl_start != 0)
{
rc = fat_set_fat_cluster(fs_info, new_last_cln, FAT_GENFAT_EOC);
if ( rc != RC_OK )
return rc;
fat_fd->map.file_cln = cl_start - 1;
51ee2: 5382 subql #1,%d2 <== NOT EXECUTED
fat_fd->map.disk_cln = new_last_cln;
51ee4: 2541 0036 movel %d1,%a2@(54) <== NOT EXECUTED
if (cl_start != 0)
{
rc = fat_set_fat_cluster(fs_info, new_last_cln, FAT_GENFAT_EOC);
if ( rc != RC_OK )
return rc;
fat_fd->map.file_cln = cl_start - 1;
51ee8: 2542 0032 movel %d2,%a2@(50) <== NOT EXECUTED
fat_fd->map.disk_cln = new_last_cln;
fat_fd->map.last_cln = new_last_cln;
51eec: 2541 003a movel %d1,%a2@(58) <== NOT EXECUTED
}
return RC_OK;
}
51ef0: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED
51ef6: 4e5e unlk %fp <== NOT EXECUTED
51ef8: 4e75 rts <== NOT EXECUTED
if ( new_length >= fat_fd->fat_file_size )
return rc;
assert(fat_fd->fat_file_size);
51efa: 4879 0006 9d7e pea 69d7e <rtems_filesystem_handlers_default+0x2c><== NOT EXECUTED
51f00: 4879 0006 9ddc pea 69ddc <__FUNCTION__.7464> <== NOT EXECUTED
51f06: 4878 02d1 pea 2d1 <DBL_MANT_DIG+0x29c> <== NOT EXECUTED
51f0a: 4879 0006 9d94 pea 69d94 <rtems_filesystem_handlers_default+0x42><== NOT EXECUTED
51f10: 4eb9 0005 43cc jsr 543cc <__assert_func> <== NOT EXECUTED
000522ee <fat_file_write>:
fat_file_fd_t *fat_fd,
uint32_t start,
uint32_t count,
const uint8_t *buf
)
{
522ee: 4e56 ffc8 linkw %fp,#-56
522f2: 202e 0014 movel %fp@(20),%d0
522f6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
522fa: 246e 000c moveal %fp@(12),%a2
522fe: 266e 0008 moveal %fp@(8),%a3
52302: 262e 0010 movel %fp@(16),%d3
int rc = RC_OK;
ssize_t ret;
uint32_t cmpltd = 0;
uint32_t byte;
uint32_t c = 0;
bool zero_fill = start > fat_fd->fat_file_size;
52306: 222a 0018 movel %a2@(24),%d1
uint32_t file_cln_initial = fat_fd->map.file_cln;
5230a: 282a 0032 movel %a2@(50),%d4
{
int rc = RC_OK;
ssize_t ret;
uint32_t cmpltd = 0;
uint32_t byte;
uint32_t c = 0;
5230e: 42ae fff8 clrl %fp@(-8)
bool zero_fill = start > fat_fd->fat_file_size;
uint32_t file_cln_initial = fat_fd->map.file_cln;
uint32_t cln;
if ( count == 0 )
52312: 4a80 tstl %d0
52314: 6700 0146 beqw 5245c <fat_file_write+0x16e>
return cmpltd;
if (start >= fat_fd->size_limit)
52318: 242a 0014 movel %a2@(20),%d2
5231c: b483 cmpl %d3,%d2
5231e: 6300 0204 blsw 52524 <fat_file_write+0x236>
rtems_set_errno_and_return_minus_one(EFBIG);
if (count > fat_fd->size_limit - start)
52322: 9483 subl %d3,%d2
52324: b082 cmpl %d2,%d0
52326: 6500 0108 bcsw 52430 <fat_file_write+0x142>
count = fat_fd->size_limit - start;
rc = fat_file_extend(fs_info, fat_fd, zero_fill, start + count, &c);
5232a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
int rc = RC_OK;
ssize_t ret;
uint32_t cmpltd = 0;
uint32_t byte;
uint32_t c = 0;
bool zero_fill = start > fat_fd->fat_file_size;
5232e: b681 cmpl %d1,%d3 <== NOT EXECUTED
52330: 52c0 shi %d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EFBIG);
if (count > fat_fd->size_limit - start)
count = fat_fd->size_limit - start;
rc = fat_file_extend(fs_info, fat_fd, zero_fill, start + count, &c);
52332: 2a02 movel %d2,%d5 <== NOT EXECUTED
52334: da83 addl %d3,%d5 <== NOT EXECUTED
int rc = RC_OK;
ssize_t ret;
uint32_t cmpltd = 0;
uint32_t byte;
uint32_t c = 0;
bool zero_fill = start > fat_fd->fat_file_size;
52336: 49c0 extbl %d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EFBIG);
if (count > fat_fd->size_limit - start)
count = fat_fd->size_limit - start;
rc = fat_file_extend(fs_info, fat_fd, zero_fill, start + count, &c);
52338: 4480 negl %d0 <== NOT EXECUTED
5233a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5233c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5233e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52340: 2f0b movel %a3,%sp@- <== NOT EXECUTED
52342: 4eb9 0005 20bc jsr 520bc <fat_file_extend> <== NOT EXECUTED
if (RC_OK == rc)
52348: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5234c: 4a80 tstl %d0 <== NOT EXECUTED
5234e: 6600 00d6 bnew 52426 <fat_file_write+0x138> <== NOT EXECUTED
{
/*
* check whether there was enough room on device to locate
* file of 'start + count' bytes
*/
if (c != (start + count))
52352: 202e fff8 movel %fp@(-8),%d0
52356: b085 cmpl %d5,%d0
52358: 6704 beqs 5235e <fat_file_write+0x70> <== ALWAYS TAKEN
count = c - start;
5235a: 2400 movel %d0,%d2 <== NOT EXECUTED
5235c: 9483 subl %d3,%d2 <== NOT EXECUTED
*/
static bool
fat_is_fat12_or_fat16_root_dir (const fat_file_fd_t *fat_fd,
const uint8_t volume_type)
{
return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));
5235e: 7201 moveq #1,%d1
*/
if (c != (start + count))
count = c - start;
/* for the root directory of FAT12 and FAT16 we need this special handling */
if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
52360: 102b 000e moveb %a3@(14),%d0
*/
static bool
fat_is_fat12_or_fat16_root_dir (const fat_file_fd_t *fat_fd,
const uint8_t volume_type)
{
return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));
52364: b2aa 0020 cmpl %a2@(32),%d1
52368: 6700 00fe beqw 52468 <fat_file_write+0x17a>
const uint8_t *buf,
const uint32_t file_cln_initial)
{
int rc = RC_OK;
uint32_t cmpltd = 0;
uint32_t cur_cln = 0;
5236c: 2a4e moveal %fp,%a5
uint32_t save_cln = 0; /* FIXME: This might be incorrect, cf. below */
uint32_t start_cln = start >> fs_info->vol.bpc_log2;
5236e: 4286 clrl %d6
52370: 1c2b 0008 moveb %a3@(8),%d6
52374: 2a03 movel %d3,%d5
52376: ecad lsrl %d6,%d5
const uint8_t *buf,
const uint32_t file_cln_initial)
{
int rc = RC_OK;
uint32_t cmpltd = 0;
uint32_t cur_cln = 0;
52378: 42a5 clrl %a5@-
uint32_t file_cln_cnt;
ssize_t ret;
uint32_t c;
bool overwrite_cluster = false;
rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);
5237a: 2f0d movel %a5,%sp@-
5237c: 2f05 movel %d5,%sp@-
5237e: 2f0a movel %a2,%sp@-
52380: 2f0b movel %a3,%sp@-
52382: 4eba f4e4 jsr %pc@(51868 <fat_file_lseek>)
if (RC_OK == rc)
52386: 4fef 0010 lea %sp@(16),%sp
5238a: 4a81 tstl %d1
5238c: 6600 0090 bnew 5241e <fat_file_write+0x130>
int rc = RC_OK;
uint32_t cmpltd = 0;
uint32_t cur_cln = 0;
uint32_t save_cln = 0; /* FIXME: This might be incorrect, cf. below */
uint32_t start_cln = start >> fs_info->vol.bpc_log2;
uint32_t ofs_cln = start - (start_cln << fs_info->vol.bpc_log2);
52390: 2005 movel %d5,%d0
52392: eda8 lsll %d6,%d0
bool overwrite_cluster = false;
rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);
if (RC_OK == rc)
{
file_cln_cnt = cur_cln - fat_fd->cln;
52394: 206e fffc moveal %fp@(-4),%a0
int rc = RC_OK;
uint32_t cmpltd = 0;
uint32_t cur_cln = 0;
uint32_t save_cln = 0; /* FIXME: This might be incorrect, cf. below */
uint32_t start_cln = start >> fs_info->vol.bpc_log2;
uint32_t ofs_cln = start - (start_cln << fs_info->vol.bpc_log2);
52398: 9680 subl %d0,%d3
bool overwrite_cluster = false;
rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);
if (RC_OK == rc)
{
file_cln_cnt = cur_cln - fat_fd->cln;
5239a: 2e08 movel %a0,%d7
5239c: 9eaa 001c subl %a2@(28),%d7
int rc = RC_OK;
uint32_t cmpltd = 0;
uint32_t cur_cln = 0;
uint32_t save_cln = 0; /* FIXME: This might be incorrect, cf. below */
uint32_t start_cln = start >> fs_info->vol.bpc_log2;
uint32_t ofs_cln = start - (start_cln << fs_info->vol.bpc_log2);
523a0: 2d43 fff4 movel %d3,%fp@(-12)
rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);
if (RC_OK == rc)
{
file_cln_cnt = cur_cln - fat_fd->cln;
while ( (RC_OK == rc)
&& (bytes_to_write > 0))
523a4: 4a82 tstl %d2
523a6: 6700 0194 beqw 5253c <fat_file_write+0x24e>
523aa: 2243 moveal %d3,%a1
523ac: 99cc subal %a4,%a4
523ae: 4283 clrl %d3
523b0: 4206 clrb %d6
523b2: 2d4d fff0 movel %a5,%fp@(-16)
{
c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));
523b6: 4280 clrl %d0
if (file_cln_initial < file_cln_cnt)
523b8: 7201 moveq #1,%d1
{
file_cln_cnt = cur_cln - fat_fd->cln;
while ( (RC_OK == rc)
&& (bytes_to_write > 0))
{
c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));
523ba: 302b 0006 movew %a3@(6),%d0
523be: 9089 subl %a1,%d0
523c0: b480 cmpl %d0,%d2
523c2: 6402 bccs 523c6 <fat_file_write+0xd8>
523c4: 2002 movel %d2,%d0
if (file_cln_initial < file_cln_cnt)
523c6: be84 cmpl %d4,%d7
523c8: 6200 00f2 bhiw 524bc <fat_file_write+0x1ce>
523cc: 4281 clrl %d1
523ce: 1206 moveb %d6,%d1
if (0 > ret)
rc = -1;
if (RC_OK == rc)
{
++file_cln_cnt;
523d0: 5287 addql #1,%d7
c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));
if (file_cln_initial < file_cln_cnt)
overwrite_cluster = true;
ret = fat_cluster_write(fs_info,
523d2: 2a6e 0018 moveal %fp@(24),%a5
523d6: 2f01 movel %d1,%sp@-
523d8: 4875 c800 pea %a5@(00000000,%a4:l)
523dc: 2f00 movel %d0,%sp@-
523de: 2f09 movel %a1,%sp@-
523e0: 2f08 movel %a0,%sp@-
523e2: 2f0b movel %a3,%sp@-
523e4: 4eb9 0005 2c78 jsr 52c78 <fat_cluster_write>
cur_cln,
ofs_cln,
c,
&buf[cmpltd],
overwrite_cluster);
if (0 > ret)
523ea: 4fef 0018 lea %sp@(24),%sp
523ee: 4a80 tstl %d0
523f0: 6d00 00f0 bltw 524e2 <fat_file_write+0x1f4>
if (RC_OK == rc)
{
++file_cln_cnt;
bytes_to_write -= ret;
cmpltd += ret;
save_cln = cur_cln;
523f4: 262e fffc movel %fp@(-4),%d3
rc = -1;
if (RC_OK == rc)
{
++file_cln_cnt;
bytes_to_write -= ret;
523f8: 9480 subl %d0,%d2
cmpltd += ret;
523fa: d9c0 addal %d0,%a4
save_cln = cur_cln;
if (0 < bytes_to_write)
523fc: 6600 0106 bnew 52504 <fat_file_write+0x216>
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
52400: 2a6e fff4 moveal %fp@(-12),%a5
52404: 4282 clrl %d2
52406: 142b 0008 moveb %a3@(8),%d2
5240a: 220c movel %a4,%d1
5240c: 4bf4 d8ff lea %a4@(ffffffff,%a5:l),%a5
fat_fd->map.disk_cln = save_cln;
52410: 2543 0036 movel %d3,%a2@(54)
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
52414: 200d movel %a5,%d0
52416: e4a8 lsrl %d2,%d0
}
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
52418: d085 addl %d5,%d0
5241a: 2540 0032 movel %d0,%a2@(50)
fat_fd,
start,
count,
buf,
file_cln_initial);
if (0 > ret)
5241e: 4a81 tstl %d1
52420: 6d00 008e bltw 524b0 <fat_file_write+0x1c2>
rc = -1;
else
cmpltd = ret;
52424: 2001 movel %d1,%d0
}
if (RC_OK != rc)
return rc;
else
return cmpltd;
}
52426: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
5242c: 4e5e unlk %fp
5242e: 4e75 rts
52430: 2400 movel %d0,%d2
rtems_set_errno_and_return_minus_one(EFBIG);
if (count > fat_fd->size_limit - start)
count = fat_fd->size_limit - start;
rc = fat_file_extend(fs_info, fat_fd, zero_fill, start + count, &c);
52432: 486e fff8 pea %fp@(-8)
int rc = RC_OK;
ssize_t ret;
uint32_t cmpltd = 0;
uint32_t byte;
uint32_t c = 0;
bool zero_fill = start > fat_fd->fat_file_size;
52436: b681 cmpl %d1,%d3
52438: 52c0 shi %d0
rtems_set_errno_and_return_minus_one(EFBIG);
if (count > fat_fd->size_limit - start)
count = fat_fd->size_limit - start;
rc = fat_file_extend(fs_info, fat_fd, zero_fill, start + count, &c);
5243a: 2a02 movel %d2,%d5
5243c: da83 addl %d3,%d5
int rc = RC_OK;
ssize_t ret;
uint32_t cmpltd = 0;
uint32_t byte;
uint32_t c = 0;
bool zero_fill = start > fat_fd->fat_file_size;
5243e: 49c0 extbl %d0
rtems_set_errno_and_return_minus_one(EFBIG);
if (count > fat_fd->size_limit - start)
count = fat_fd->size_limit - start;
rc = fat_file_extend(fs_info, fat_fd, zero_fill, start + count, &c);
52440: 4480 negl %d0
52442: 2f05 movel %d5,%sp@-
52444: 2f00 movel %d0,%sp@-
52446: 2f0a movel %a2,%sp@-
52448: 2f0b movel %a3,%sp@-
5244a: 4eb9 0005 20bc jsr 520bc <fat_file_extend>
if (RC_OK == rc)
52450: 4fef 0014 lea %sp@(20),%sp
52454: 4a80 tstl %d0
52456: 66ce bnes 52426 <fat_file_write+0x138> <== NEVER TAKEN
52458: 6000 fef8 braw 52352 <fat_file_write+0x64>
uint32_t file_cln_initial = fat_fd->map.file_cln;
uint32_t cln;
if ( count == 0 )
return cmpltd;
5245c: 4280 clrl %d0 <== NOT EXECUTED
}
if (RC_OK != rc)
return rc;
else
return cmpltd;
}
5245e: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
52464: 4e5e unlk %fp <== NOT EXECUTED
52466: 4e75 rts <== NOT EXECUTED
*/
static bool
fat_is_fat12_or_fat16_root_dir (const fat_file_fd_t *fat_fd,
const uint8_t volume_type)
{
return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));
52468: 4aaa 0024 tstl %a2@(36)
5246c: 6600 fefe bnew 5236c <fat_file_write+0x7e>
52470: 123c 0003 moveb #3,%d1
52474: c081 andl %d1,%d0
52476: 4a00 tstb %d0
52478: 6700 fef2 beqw 5236c <fat_file_write+0x7e>
/* for the root directory of FAT12 and FAT16 we need this special handling */
if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
{
cln = fat_fd->cln;
cln += (start >> fs_info->vol.bpc_log2);
byte = start & (fs_info->vol.bpc -1);
5247c: 4281 clrl %d1
/* for the root directory of FAT12 and FAT16 we need this special handling */
if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
{
cln = fat_fd->cln;
cln += (start >> fs_info->vol.bpc_log2);
5247e: 4280 clrl %d0
byte = start & (fs_info->vol.bpc -1);
ret = fat_cluster_write(fs_info,
52480: 42a7 clrl %sp@-
/* for the root directory of FAT12 and FAT16 we need this special handling */
if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
{
cln = fat_fd->cln;
cln += (start >> fs_info->vol.bpc_log2);
byte = start & (fs_info->vol.bpc -1);
52482: 322b 0006 movew %a3@(6),%d1
ret = fat_cluster_write(fs_info,
52486: 2f2e 0018 movel %fp@(24),%sp@-
/* for the root directory of FAT12 and FAT16 we need this special handling */
if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
{
cln = fat_fd->cln;
cln += (start >> fs_info->vol.bpc_log2);
byte = start & (fs_info->vol.bpc -1);
5248a: 5381 subql #1,%d1
ret = fat_cluster_write(fs_info,
5248c: c283 andl %d3,%d1
5248e: 2f02 movel %d2,%sp@-
/* for the root directory of FAT12 and FAT16 we need this special handling */
if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
{
cln = fat_fd->cln;
cln += (start >> fs_info->vol.bpc_log2);
52490: 102b 0008 moveb %a3@(8),%d0
52494: e0ab lsrl %d0,%d3
byte = start & (fs_info->vol.bpc -1);
ret = fat_cluster_write(fs_info,
52496: 2f01 movel %d1,%sp@-
52498: d6aa 001c addl %a2@(28),%d3
5249c: 2f03 movel %d3,%sp@-
5249e: 2f0b movel %a3,%sp@-
524a0: 4eb9 0005 2c78 jsr 52c78 <fat_cluster_write>
cln,
byte,
count,
buf,
false);
if (0 > ret)
524a6: 4fef 0018 lea %sp@(24),%sp
524aa: 4a80 tstl %d0
524ac: 6c00 ff78 bgew 52426 <fat_file_write+0x138>
start,
count,
buf,
file_cln_initial);
if (0 > ret)
rc = -1;
524b0: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
if (RC_OK != rc)
return rc;
else
return cmpltd;
}
524b2: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
524b8: 4e5e unlk %fp <== NOT EXECUTED
524ba: 4e75 rts <== NOT EXECUTED
c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));
if (file_cln_initial < file_cln_cnt)
overwrite_cluster = true;
ret = fat_cluster_write(fs_info,
524bc: 2a6e 0018 moveal %fp@(24),%a5
if (0 > ret)
rc = -1;
if (RC_OK == rc)
{
++file_cln_cnt;
524c0: 5287 addql #1,%d7
c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));
if (file_cln_initial < file_cln_cnt)
overwrite_cluster = true;
ret = fat_cluster_write(fs_info,
524c2: 2f01 movel %d1,%sp@-
524c4: 4875 c800 pea %a5@(00000000,%a4:l)
&& (bytes_to_write > 0))
{
c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));
if (file_cln_initial < file_cln_cnt)
overwrite_cluster = true;
524c8: 7c01 moveq #1,%d6
ret = fat_cluster_write(fs_info,
524ca: 2f00 movel %d0,%sp@-
524cc: 2f09 movel %a1,%sp@-
524ce: 2f08 movel %a0,%sp@-
524d0: 2f0b movel %a3,%sp@-
524d2: 4eb9 0005 2c78 jsr 52c78 <fat_cluster_write>
cur_cln,
ofs_cln,
c,
&buf[cmpltd],
overwrite_cluster);
if (0 > ret)
524d8: 4fef 0018 lea %sp@(24),%sp
524dc: 4a80 tstl %d0
524de: 6c00 ff14 bgew 523f4 <fat_file_write+0x106>
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
524e2: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
524e6: 4282 clrl %d2 <== NOT EXECUTED
524e8: 142b 0008 moveb %a3@(8),%d2 <== NOT EXECUTED
cur_cln,
ofs_cln,
c,
&buf[cmpltd],
overwrite_cluster);
if (0 > ret)
524ec: 72ff moveq #-1,%d1 <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
524ee: 41f4 88ff lea %a4@(ffffffff,%a0:l),%a0 <== NOT EXECUTED
fat_fd->map.disk_cln = save_cln;
524f2: 2543 0036 movel %d3,%a2@(54) <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
524f6: 2008 movel %a0,%d0 <== NOT EXECUTED
524f8: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
}
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
524fa: d085 addl %d5,%d0 <== NOT EXECUTED
524fc: 2540 0032 movel %d0,%a2@(50) <== NOT EXECUTED
52500: 6000 ff1c braw 5241e <fat_file_write+0x130> <== NOT EXECUTED
++file_cln_cnt;
bytes_to_write -= ret;
cmpltd += ret;
save_cln = cur_cln;
if (0 < bytes_to_write)
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
52504: 2f2e fff0 movel %fp@(-16),%sp@- <== NOT EXECUTED
52508: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5250a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5250c: 4eb9 0005 8ac0 jsr 58ac0 <fat_get_fat_cluster> <== NOT EXECUTED
rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);
if (RC_OK == rc)
{
file_cln_cnt = cur_cln - fat_fd->cln;
while ( (RC_OK == rc)
52512: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
52516: 93c9 subal %a1,%a1 <== NOT EXECUTED
52518: 4a80 tstl %d0 <== NOT EXECUTED
5251a: 6644 bnes 52560 <fat_file_write+0x272> <== NOT EXECUTED
5251c: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
52520: 6000 fe94 braw 523b6 <fat_file_write+0xc8> <== NOT EXECUTED
if ( count == 0 )
return cmpltd;
if (start >= fat_fd->size_limit)
rtems_set_errno_and_return_minus_one(EFBIG);
52524: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5252a: 781b moveq #27,%d4 <== NOT EXECUTED
5252c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5252e: 70ff moveq #-1,%d0 <== NOT EXECUTED
52530: 2084 movel %d4,%a0@ <== NOT EXECUTED
}
if (RC_OK != rc)
return rc;
else
return cmpltd;
}
52532: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
52538: 4e5e unlk %fp <== NOT EXECUTED
5253a: 4e75 rts <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
5253c: 2a6e fff4 moveal %fp@(-12),%a5 <== NOT EXECUTED
const uint32_t count,
const uint8_t *buf,
const uint32_t file_cln_initial)
{
int rc = RC_OK;
uint32_t cmpltd = 0;
52540: 99cc subal %a4,%a4 <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
52542: 4282 clrl %d2 <== NOT EXECUTED
52544: 142b 0008 moveb %a3@(8),%d2 <== NOT EXECUTED
const uint32_t file_cln_initial)
{
int rc = RC_OK;
uint32_t cmpltd = 0;
uint32_t cur_cln = 0;
uint32_t save_cln = 0; /* FIXME: This might be incorrect, cf. below */
52548: 4283 clrl %d3 <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
5254a: 4bf4 d8ff lea %a4@(ffffffff,%a5:l),%a5 <== NOT EXECUTED
fat_fd->map.disk_cln = save_cln;
5254e: 2543 0036 movel %d3,%a2@(54) <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
52552: 200d movel %a5,%d0 <== NOT EXECUTED
52554: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
}
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
52556: d085 addl %d5,%d0 <== NOT EXECUTED
52558: 2540 0032 movel %d0,%a2@(50) <== NOT EXECUTED
5255c: 6000 fec0 braw 5241e <fat_file_write+0x130> <== NOT EXECUTED
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
52560: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
52564: 4282 clrl %d2 <== NOT EXECUTED
52566: 142b 0008 moveb %a3@(8),%d2 <== NOT EXECUTED
5256a: 2200 movel %d0,%d1 <== NOT EXECUTED
5256c: 41f4 88ff lea %a4@(ffffffff,%a0:l),%a0 <== NOT EXECUTED
fat_fd->map.disk_cln = save_cln;
52570: 2543 0036 movel %d3,%a2@(54) <== NOT EXECUTED
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
52574: 2008 movel %a0,%d0 <== NOT EXECUTED
52576: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
}
}
/* update cache */
/* XXX: check this - I'm not sure :( */
fat_fd->map.file_cln = start_cln +
52578: d085 addl %d5,%d0 <== NOT EXECUTED
5257a: 2540 0032 movel %d0,%a2@(50) <== NOT EXECUTED
5257e: 6000 fe9e braw 5241e <fat_file_write+0x130> <== NOT EXECUTED
00058f0e <fat_free_fat_clusters_chain>:
int
fat_free_fat_clusters_chain(
fat_fs_info_t *fs_info,
uint32_t chain
)
{
58f0e: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
58f12: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED
58f16: 2e2e 000c movel %fp@(12),%d7 <== NOT EXECUTED
int rc = RC_OK, rc1 = RC_OK;
uint32_t cur_cln = chain;
uint32_t next_cln = 0;
uint32_t freed_cls_cnt = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
58f1a: 2007 movel %d7,%d0 <== NOT EXECUTED
int
fat_free_fat_clusters_chain(
fat_fs_info_t *fs_info,
uint32_t chain
)
{
58f1c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int rc = RC_OK, rc1 = RC_OK;
uint32_t cur_cln = chain;
uint32_t next_cln = 0;
uint32_t freed_cls_cnt = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
58f20: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED
uint32_t chain
)
{
int rc = RC_OK, rc1 = RC_OK;
uint32_t cur_cln = chain;
uint32_t next_cln = 0;
58f24: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
uint32_t freed_cls_cnt = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
58f28: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
58f2c: 6400 009e bccw 58fcc <fat_free_fat_clusters_chain+0xbe><== NOT EXECUTED
58f30: 2a0e movel %fp,%d5 <== NOT EXECUTED
58f32: 2407 movel %d7,%d2 <== NOT EXECUTED
58f34: 4284 clrl %d4 <== NOT EXECUTED
58f36: 4286 clrl %d6 <== NOT EXECUTED
58f38: 5985 subql #4,%d5 <== NOT EXECUTED
58f3a: 47f9 0005 8ac0 lea 58ac0 <fat_get_fat_cluster>,%a3 <== NOT EXECUTED
fat_buf_release(fs_info);
return rc;
}
rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);
58f40: 49f9 0005 8c92 lea 58c92 <fat_set_fat_cluster>,%a4 <== NOT EXECUTED
uint32_t next_cln = 0;
uint32_t freed_cls_cnt = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
{
rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);
58f46: 2f05 movel %d5,%sp@- <== NOT EXECUTED
58f48: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58f4a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58f4c: 4e93 jsr %a3@ <== NOT EXECUTED
if ( rc != RC_OK )
58f4e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
uint32_t next_cln = 0;
uint32_t freed_cls_cnt = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
{
rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);
58f52: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( rc != RC_OK )
58f54: 6650 bnes 58fa6 <fat_free_fat_clusters_chain+0x98><== NOT EXECUTED
fat_buf_release(fs_info);
return rc;
}
rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);
58f56: 42a7 clrl %sp@- <== NOT EXECUTED
if ( rc != RC_OK )
rc1 = rc;
freed_cls_cnt++;
58f58: 5284 addql #1,%d4 <== NOT EXECUTED
fat_buf_release(fs_info);
return rc;
}
rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);
58f5a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58f5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58f5e: 4e94 jsr %a4@ <== NOT EXECUTED
if ( rc != RC_OK )
58f60: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58f64: 4a80 tstl %d0 <== NOT EXECUTED
58f66: 6702 beqs 58f6a <fat_free_fat_clusters_chain+0x5c><== NOT EXECUTED
58f68: 2c00 movel %d0,%d6 <== NOT EXECUTED
rc1 = rc;
freed_cls_cnt++;
cur_cln = next_cln;
58f6a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
int rc = RC_OK, rc1 = RC_OK;
uint32_t cur_cln = chain;
uint32_t next_cln = 0;
uint32_t freed_cls_cnt = 0;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
58f6e: 2002 movel %d2,%d0 <== NOT EXECUTED
58f70: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED
58f74: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
58f78: 65cc bcss 58f46 <fat_free_fat_clusters_chain+0x38><== NOT EXECUTED
freed_cls_cnt++;
cur_cln = next_cln;
}
fs_info->vol.next_cl = chain;
if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
58f7a: 202a 003e movel %a2@(62),%d0 <== NOT EXECUTED
58f7e: 72ff moveq #-1,%d1 <== NOT EXECUTED
freed_cls_cnt++;
cur_cln = next_cln;
}
fs_info->vol.next_cl = chain;
58f80: 2547 0046 movel %d7,%a2@(70) <== NOT EXECUTED
if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
58f84: b280 cmpl %d0,%d1 <== NOT EXECUTED
58f86: 6706 beqs 58f8e <fat_free_fat_clusters_chain+0x80><== NOT EXECUTED
fs_info->vol.free_cls += freed_cls_cnt;
58f88: d880 addl %d0,%d4 <== NOT EXECUTED
58f8a: 2544 003e movel %d4,%a2@(62) <== NOT EXECUTED
fat_buf_release(fs_info);
58f8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58f90: 2606 movel %d6,%d3 <== NOT EXECUTED
58f92: 4eb9 0005 2738 jsr 52738 <fat_buf_release> <== NOT EXECUTED
58f98: 588f addql #4,%sp <== NOT EXECUTED
if (rc1 != RC_OK)
return rc1;
return RC_OK;
}
58f9a: 2003 movel %d3,%d0 <== NOT EXECUTED
58f9c: 4cee 1cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a4 <== NOT EXECUTED
58fa2: 4e5e unlk %fp <== NOT EXECUTED
58fa4: 4e75 rts <== NOT EXECUTED
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
{
rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);
if ( rc != RC_OK )
{
if(fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
58fa6: 202a 003e movel %a2@(62),%d0 <== NOT EXECUTED
58faa: 72ff moveq #-1,%d1 <== NOT EXECUTED
58fac: b280 cmpl %d0,%d1 <== NOT EXECUTED
58fae: 6706 beqs 58fb6 <fat_free_fat_clusters_chain+0xa8><== NOT EXECUTED
fs_info->vol.free_cls += freed_cls_cnt;
58fb0: d880 addl %d0,%d4 <== NOT EXECUTED
58fb2: 2544 003e movel %d4,%a2@(62) <== NOT EXECUTED
fat_buf_release(fs_info);
58fb6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58fb8: 4eb9 0005 2738 jsr 52738 <fat_buf_release> <== NOT EXECUTED
58fbe: 588f addql #4,%sp <== NOT EXECUTED
fat_buf_release(fs_info);
if (rc1 != RC_OK)
return rc1;
return RC_OK;
}
58fc0: 2003 movel %d3,%d0 <== NOT EXECUTED
58fc2: 4cee 1cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a4 <== NOT EXECUTED
58fc8: 4e5e unlk %fp <== NOT EXECUTED
58fca: 4e75 rts <== NOT EXECUTED
freed_cls_cnt++;
cur_cln = next_cln;
}
fs_info->vol.next_cl = chain;
if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
58fcc: 202a 003e movel %a2@(62),%d0 <== NOT EXECUTED
)
{
int rc = RC_OK, rc1 = RC_OK;
uint32_t cur_cln = chain;
uint32_t next_cln = 0;
uint32_t freed_cls_cnt = 0;
58fd0: 4284 clrl %d4 <== NOT EXECUTED
fat_free_fat_clusters_chain(
fat_fs_info_t *fs_info,
uint32_t chain
)
{
int rc = RC_OK, rc1 = RC_OK;
58fd2: 4286 clrl %d6 <== NOT EXECUTED
freed_cls_cnt++;
cur_cln = next_cln;
}
fs_info->vol.next_cl = chain;
if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
58fd4: 72ff moveq #-1,%d1 <== NOT EXECUTED
freed_cls_cnt++;
cur_cln = next_cln;
}
fs_info->vol.next_cl = chain;
58fd6: 2547 0046 movel %d7,%a2@(70) <== NOT EXECUTED
if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
58fda: b280 cmpl %d0,%d1 <== NOT EXECUTED
58fdc: 66aa bnes 58f88 <fat_free_fat_clusters_chain+0x7a><== NOT EXECUTED
58fde: 60ae bras 58f8e <fat_free_fat_clusters_chain+0x80><== NOT EXECUTED
00053a3e <fat_free_unique_ino>:
fat_free_unique_ino(
fat_fs_info_t *fs_info,
uint32_t ino
)
{
FAT_SET_UNIQ_INO_FREE((ino - fs_info->uino_base), fs_info->uino);
53a3e: 7001 moveq #1,%d0 <== NOT EXECUTED
void
fat_free_unique_ino(
fat_fs_info_t *fs_info,
uint32_t ino
)
{
53a40: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
53a44: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
FAT_SET_UNIQ_INO_FREE((ino - fs_info->uino_base), fs_info->uino);
53a48: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
53a4c: 92a9 0076 subl %a1@(118),%d1 <== NOT EXECUTED
void
fat_free_unique_ino(
fat_fs_info_t *fs_info,
uint32_t ino
)
{
53a50: 2f02 movel %d2,%sp@- <== NOT EXECUTED
FAT_SET_UNIQ_INO_FREE((ino - fs_info->uino_base), fs_info->uino);
53a52: 2401 movel %d1,%d2 <== NOT EXECUTED
53a54: e68a lsrl #3,%d2 <== NOT EXECUTED
53a56: 2069 006a moveal %a1@(106),%a0 <== NOT EXECUTED
53a5a: d1c2 addal %d2,%a0 <== NOT EXECUTED
53a5c: 7407 moveq #7,%d2 <== NOT EXECUTED
53a5e: c282 andl %d2,%d1 <== NOT EXECUTED
53a60: e3a8 lsll %d1,%d0 <== NOT EXECUTED
53a62: 1210 moveb %a0@,%d1 <== NOT EXECUTED
53a64: 4680 notl %d0 <== NOT EXECUTED
53a66: c081 andl %d1,%d0 <== NOT EXECUTED
53a68: 1080 moveb %d0,%a0@ <== NOT EXECUTED
}
53a6a: 241f movel %sp@+,%d2 <== NOT EXECUTED
53a6c: 4e5e unlk %fp <== NOT EXECUTED
00058ac0 <fat_get_fat_cluster>:
uint8_t *sec_buf;
uint32_t sec = 0;
uint32_t ofs = 0;
/* sanity check */
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
58ac0: 7001 moveq #1,%d0
fat_get_fat_cluster(
fat_fs_info_t *fs_info,
uint32_t cln,
uint32_t *ret_val
)
{
58ac2: 4e56 ffe0 linkw %fp,#-32
58ac6: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@
58aca: 246e 0008 moveal %fp@(8),%a2
58ace: 242e 000c movel %fp@(12),%d2
uint8_t *sec_buf;
uint32_t sec = 0;
uint32_t ofs = 0;
/* sanity check */
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
58ad2: b082 cmpl %d2,%d0
58ad4: 6400 0164 bccw 58c3a <fat_get_fat_cluster+0x17a>
58ad8: 202a 0034 movel %a2@(52),%d0
58adc: 5280 addql #1,%d0
58ade: b082 cmpl %d2,%d0
58ae0: 6500 0158 bcsw 58c3a <fat_get_fat_cluster+0x17a>
rtems_set_errno_and_return_minus_one(EIO);
sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
58ae4: 102a 000e moveb %a2@(14),%d0
58ae8: 0800 0000 btst #0,%d0
58aec: 667a bnes 58b68 <fat_get_fat_cluster+0xa8> <== ALWAYS TAKEN
58aee: 7202 moveq #2,%d1 <== NOT EXECUTED
58af0: 2a02 movel %d2,%d5 <== NOT EXECUTED
58af2: c081 andl %d1,%d0 <== NOT EXECUTED
58af4: 4a00 tstb %d0 <== NOT EXECUTED
58af6: 6778 beqs 58b70 <fat_get_fat_cluster+0xb0> <== NOT EXECUTED
58af8: da85 addl %d5,%d5 <== NOT EXECUTED
58afa: 4280 clrl %d0
58afc: 102a 0002 moveb %a2@(2),%d0
58b00: 2605 movel %d5,%d3
58b02: e0ab lsrl %d0,%d3
58b04: d6aa 0050 addl %a2@(80),%d3
fs_info->vol.afat_loc;
ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
58b08: 47f9 0005 2908 lea 52908 <fat_buf_access>,%a3
58b0e: 486e fffc pea %fp@(-4)
58b12: 4878 0001 pea 1 <ADD>
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
rtems_set_errno_and_return_minus_one(EIO);
sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
fs_info->vol.afat_loc;
ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
58b16: 3c12 movew %a2@,%d6
rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
58b18: 2f03 movel %d3,%sp@-
58b1a: 2f0a movel %a2,%sp@-
58b1c: 4e93 jsr %a3@
if (rc != RC_OK)
58b1e: 4fef 0010 lea %sp@(16),%sp
sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
fs_info->vol.afat_loc;
ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
58b22: 2800 movel %d0,%d4
if (rc != RC_OK)
58b24: 6636 bnes 58b5c <fat_get_fat_cluster+0x9c> <== NEVER TAKEN
return rc;
switch ( fs_info->vol.type )
58b26: 4280 clrl %d0
58b28: 102a 000e moveb %a2@(14),%d0
58b2c: 7202 moveq #2,%d1
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
rtems_set_errno_and_return_minus_one(EIO);
sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
fs_info->vol.afat_loc;
ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
58b2e: 0286 0000 ffff andil #65535,%d6
58b34: 5386 subql #1,%d6
58b36: ca86 andl %d6,%d5
rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
if (rc != RC_OK)
return rc;
switch ( fs_info->vol.type )
58b38: b280 cmpl %d0,%d1
58b3a: 6738 beqs 58b74 <fat_get_fat_cluster+0xb4> <== NEVER TAKEN
58b3c: 123c 0004 moveb #4,%d1
58b40: b280 cmpl %d0,%d1
58b42: 6700 00a0 beqw 58be4 <fat_get_fat_cluster+0x124>
58b46: 123c 0001 moveb #1,%d1
58b4a: b280 cmpl %d0,%d1
58b4c: 6750 beqs 58b9e <fat_get_fat_cluster+0xde> <== ALWAYS TAKEN
*ret_val = *((uint32_t *)(sec_buf + ofs));
*ret_val = CF_LE_L(*ret_val);
break;
default:
rtems_set_errno_and_return_minus_one(EIO);
58b4e: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
58b54: 78ff moveq #-1,%d4 <== NOT EXECUTED
58b56: 2240 moveal %d0,%a1 <== NOT EXECUTED
58b58: 7005 moveq #5,%d0 <== NOT EXECUTED
58b5a: 2280 movel %d0,%a1@ <== NOT EXECUTED
break;
}
return RC_OK;
}
58b5c: 2004 movel %d4,%d0 <== NOT EXECUTED
58b5e: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
58b64: 4e5e unlk %fp <== NOT EXECUTED
58b66: 4e75 rts <== NOT EXECUTED
/* sanity check */
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
rtems_set_errno_and_return_minus_one(EIO);
sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
58b68: 2a02 movel %d2,%d5
58b6a: e28d lsrl #1,%d5
58b6c: da82 addl %d2,%d5
58b6e: 608a bras 58afa <fat_get_fat_cluster+0x3a>
58b70: e58d lsll #2,%d5 <== NOT EXECUTED
58b72: 6086 bras 58afa <fat_get_fat_cluster+0x3a> <== NOT EXECUTED
else
*ret_val = (*ret_val) & FAT_FAT12_MASK;
break;
case FAT_FAT16:
*ret_val = *((uint16_t *)(sec_buf + ofs));
58b74: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
static inline uint16_t m68k_swap_u16(
uint16_t value
)
{
return (((value & 0xff) << 8) | ((value >> 8) & 0xff));
58b78: 4281 clrl %d1 <== NOT EXECUTED
58b7a: 3230 5800 movew %a0@(00000000,%d5:l),%d1 <== NOT EXECUTED
*ret_val = CF_LE_W(*ret_val);
58b7e: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
58b82: 2001 movel %d1,%d0 <== NOT EXECUTED
58b84: e089 lsrl #8,%d1 <== NOT EXECUTED
58b86: e188 lsll #8,%d0 <== NOT EXECUTED
58b88: 0280 0000 ff00 andil #65280,%d0 <== NOT EXECUTED
58b8e: 8081 orl %d1,%d0 <== NOT EXECUTED
58b90: 2280 movel %d0,%a1@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
break;
}
return RC_OK;
}
58b92: 2004 movel %d4,%d0 <== NOT EXECUTED
58b94: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
58b9a: 4e5e unlk %fp <== NOT EXECUTED
58b9c: 4e75 rts <== NOT EXECUTED
case FAT_FAT12:
/*
* we are enforced in complex computations for FAT12 to escape CPU
* align problems for some architectures
*/
*ret_val = (*(sec_buf + ofs));
58b9e: 206e fffc moveal %fp@(-4),%a0
58ba2: 4281 clrl %d1
if ( ofs == (fs_info->vol.bps - 1) )
58ba4: 4280 clrl %d0
case FAT_FAT12:
/*
* we are enforced in complex computations for FAT12 to escape CPU
* align problems for some architectures
*/
*ret_val = (*(sec_buf + ofs));
58ba6: 1230 5800 moveb %a0@(00000000,%d5:l),%d1
if ( ofs == (fs_info->vol.bps - 1) )
58baa: 3012 movew %a2@,%d0
case FAT_FAT12:
/*
* we are enforced in complex computations for FAT12 to escape CPU
* align problems for some architectures
*/
*ret_val = (*(sec_buf + ofs));
58bac: 226e 0010 moveal %fp@(16),%a1
if ( ofs == (fs_info->vol.bps - 1) )
58bb0: 5380 subql #1,%d0
case FAT_FAT12:
/*
* we are enforced in complex computations for FAT12 to escape CPU
* align problems for some architectures
*/
*ret_val = (*(sec_buf + ofs));
58bb2: 2281 movel %d1,%a1@
if ( ofs == (fs_info->vol.bps - 1) )
58bb4: ba80 cmpl %d0,%d5
58bb6: 6700 009c beqw 58c54 <fat_get_fat_cluster+0x194>
*ret_val |= *sec_buf << 8;
}
else
{
*ret_val |= *(sec_buf + ofs + 1) << 8;
58bba: 4280 clrl %d0
58bbc: 1030 5801 moveb %a0@(00000001,%d5:l),%d0
58bc0: e188 lsll #8,%d0
58bc2: 206e 0010 moveal %fp@(16),%a0
58bc6: 8081 orl %d1,%d0
58bc8: 2080 movel %d0,%a0@
}
if ( FAT_CLUSTER_IS_ODD(cln) )
58bca: 0802 0000 btst #0,%d2
58bce: 6752 beqs 58c22 <fat_get_fat_cluster+0x162>
*ret_val = (*ret_val) >> FAT12_SHIFT;
58bd0: 226e 0010 moveal %fp@(16),%a1
58bd4: e888 lsrl #4,%d0
58bd6: 2280 movel %d0,%a1@
rtems_set_errno_and_return_minus_one(EIO);
break;
}
return RC_OK;
}
58bd8: 2004 movel %d4,%d0
58bda: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3
58be0: 4e5e unlk %fp
58be2: 4e75 rts
*ret_val = *((uint16_t *)(sec_buf + ofs));
*ret_val = CF_LE_W(*ret_val);
break;
case FAT_FAT32:
*ret_val = *((uint32_t *)(sec_buf + ofs));
58be4: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
58be8: 7018 moveq #24,%d0 <== NOT EXECUTED
58bea: 2230 5800 movel %a0@(00000000,%d5:l),%d1 <== NOT EXECUTED
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
58bee: 7a18 moveq #24,%d5 <== NOT EXECUTED
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
58bf0: 2601 movel %d1,%d3 <== NOT EXECUTED
58bf2: e0ab lsrl %d0,%d3 <== NOT EXECUTED
byte3 = (value >> 16) & 0xff;
58bf4: 2401 movel %d1,%d2 <== NOT EXECUTED
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
58bf6: 2001 movel %d1,%d0 <== NOT EXECUTED
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
58bf8: e08a lsrl #8,%d2 <== NOT EXECUTED
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
58bfa: eba8 lsll %d5,%d0 <== NOT EXECUTED
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
58bfc: e189 lsll #8,%d1 <== NOT EXECUTED
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
58bfe: 0282 0000 ff00 andil #65280,%d2 <== NOT EXECUTED
58c04: 8083 orl %d3,%d0 <== NOT EXECUTED
58c06: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
58c0a: 0281 00ff 0000 andil #16711680,%d1 <== NOT EXECUTED
58c10: 8081 orl %d1,%d0 <== NOT EXECUTED
58c12: 8082 orl %d2,%d0 <== NOT EXECUTED
58c14: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
break;
}
return RC_OK;
}
58c16: 2004 movel %d4,%d0 <== NOT EXECUTED
58c18: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
58c1e: 4e5e unlk %fp <== NOT EXECUTED
58c20: 4e75 rts <== NOT EXECUTED
}
if ( FAT_CLUSTER_IS_ODD(cln) )
*ret_val = (*ret_val) >> FAT12_SHIFT;
else
*ret_val = (*ret_val) & FAT_FAT12_MASK;
58c22: 206e 0010 moveal %fp@(16),%a0
58c26: 0280 0000 0fff andil #4095,%d0
58c2c: 2080 movel %d0,%a0@
rtems_set_errno_and_return_minus_one(EIO);
break;
}
return RC_OK;
}
58c2e: 2004 movel %d4,%d0
58c30: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3
58c36: 4e5e unlk %fp
58c38: 4e75 rts
uint32_t sec = 0;
uint32_t ofs = 0;
/* sanity check */
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
rtems_set_errno_and_return_minus_one(EIO);
58c3a: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
58c40: 78ff moveq #-1,%d4 <== NOT EXECUTED
58c42: 7205 moveq #5,%d1 <== NOT EXECUTED
58c44: 2040 moveal %d0,%a0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
break;
}
return RC_OK;
}
58c46: 2004 movel %d4,%d0 <== NOT EXECUTED
58c48: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
uint32_t sec = 0;
uint32_t ofs = 0;
/* sanity check */
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
rtems_set_errno_and_return_minus_one(EIO);
58c4e: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
break;
}
return RC_OK;
}
58c50: 4e5e unlk %fp <== NOT EXECUTED
58c52: 4e75 rts <== NOT EXECUTED
* align problems for some architectures
*/
*ret_val = (*(sec_buf + ofs));
if ( ofs == (fs_info->vol.bps - 1) )
{
rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
58c54: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58c58: 2043 moveal %d3,%a0 <== NOT EXECUTED
58c5a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
58c5e: 4868 0001 pea %a0@(1) <== NOT EXECUTED
58c62: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58c64: 4e93 jsr %a3@ <== NOT EXECUTED
&sec_buf);
if (rc != RC_OK)
58c66: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
58c6a: 4a80 tstl %d0 <== NOT EXECUTED
58c6c: 6616 bnes 58c84 <fat_get_fat_cluster+0x1c4> <== NOT EXECUTED
return rc;
*ret_val |= *sec_buf << 8;
58c6e: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
58c72: 4280 clrl %d0 <== NOT EXECUTED
58c74: 1010 moveb %a0@,%d0 <== NOT EXECUTED
58c76: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
58c7a: e188 lsll #8,%d0 <== NOT EXECUTED
58c7c: 8091 orl %a1@,%d0 <== NOT EXECUTED
58c7e: 2280 movel %d0,%a1@ <== NOT EXECUTED
58c80: 6000 ff48 braw 58bca <fat_get_fat_cluster+0x10a> <== NOT EXECUTED
*ret_val = (*(sec_buf + ofs));
if ( ofs == (fs_info->vol.bps - 1) )
{
rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
&sec_buf);
if (rc != RC_OK)
58c84: 2800 movel %d0,%d4 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
break;
}
return RC_OK;
}
58c86: 2004 movel %d4,%d0 <== NOT EXECUTED
58c88: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
58c8e: 4e5e unlk %fp <== NOT EXECUTED
00053980 <fat_get_unique_ino>:
* 0 means FAILED !!!
*
*/
uint32_t
fat_get_unique_ino(fat_fs_info_t *fs_info)
{
53980: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
53984: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
53988: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
}
if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
{
fs_info->uino_pool_size <<= 1;
fs_info->uino = realloc(fs_info->uino, fs_info->uino_pool_size);
5398c: 47f9 0004 5c8c lea 45c8c <realloc>,%a3 <== NOT EXECUTED
53992: 242a 0072 movel %a2@(114),%d2 <== NOT EXECUTED
uint32_t j = 0;
bool resrc_unsuff = false;
while (!resrc_unsuff)
{
for (j = 0; j < fs_info->uino_pool_size; j++)
53996: 4a82 tstl %d2 <== NOT EXECUTED
53998: 6768 beqs 53a02 <fat_get_unique_ino+0x82> <== NOT EXECUTED
{
if (!FAT_UNIQ_INO_IS_BUSY(fs_info->index, fs_info->uino))
5399a: 202a 006e movel %a2@(110),%d0 <== NOT EXECUTED
5399e: 2200 movel %d0,%d1 <== NOT EXECUTED
539a0: e689 lsrl #3,%d1 <== NOT EXECUTED
539a2: 7807 moveq #7,%d4 <== NOT EXECUTED
539a4: 226a 006a moveal %a2@(106),%a1 <== NOT EXECUTED
539a8: 41f1 1800 lea %a1@(00000000,%d1:l),%a0 <== NOT EXECUTED
539ac: 1610 moveb %a0@,%d3 <== NOT EXECUTED
539ae: c880 andl %d0,%d4 <== NOT EXECUTED
539b0: 1203 moveb %d3,%d1 <== NOT EXECUTED
539b2: 49c1 extbl %d1 <== NOT EXECUTED
539b4: 0901 btst %d4,%d1 <== NOT EXECUTED
539b6: 6730 beqs 539e8 <fat_get_unique_ino+0x68> <== NOT EXECUTED
539b8: 4281 clrl %d1 <== NOT EXECUTED
{
FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino);
return (fs_info->uino_base + fs_info->index);
}
fs_info->index++;
539ba: 5280 addql #1,%d0 <== NOT EXECUTED
uint32_t j = 0;
bool resrc_unsuff = false;
while (!resrc_unsuff)
{
for (j = 0; j < fs_info->uino_pool_size; j++)
539bc: 5281 addql #1,%d1 <== NOT EXECUTED
if (!FAT_UNIQ_INO_IS_BUSY(fs_info->index, fs_info->uino))
{
FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino);
return (fs_info->uino_base + fs_info->index);
}
fs_info->index++;
539be: 2540 006e movel %d0,%a2@(110) <== NOT EXECUTED
if (fs_info->index >= fs_info->uino_pool_size)
539c2: b480 cmpl %d0,%d2 <== NOT EXECUTED
539c4: 6204 bhis 539ca <fat_get_unique_ino+0x4a> <== NOT EXECUTED
fs_info->index = 0;
539c6: 42aa 006e clrl %a2@(110) <== NOT EXECUTED
uint32_t j = 0;
bool resrc_unsuff = false;
while (!resrc_unsuff)
{
for (j = 0; j < fs_info->uino_pool_size; j++)
539ca: b481 cmpl %d1,%d2 <== NOT EXECUTED
539cc: 6734 beqs 53a02 <fat_get_unique_ino+0x82> <== NOT EXECUTED
{
if (!FAT_UNIQ_INO_IS_BUSY(fs_info->index, fs_info->uino))
539ce: 202a 006e movel %a2@(110),%d0 <== NOT EXECUTED
539d2: 2600 movel %d0,%d3 <== NOT EXECUTED
539d4: e68b lsrl #3,%d3 <== NOT EXECUTED
539d6: 41f1 3800 lea %a1@(00000000,%d3:l),%a0 <== NOT EXECUTED
539da: 7807 moveq #7,%d4 <== NOT EXECUTED
539dc: 1610 moveb %a0@,%d3 <== NOT EXECUTED
539de: c880 andl %d0,%d4 <== NOT EXECUTED
539e0: 1a03 moveb %d3,%d5 <== NOT EXECUTED
539e2: 49c5 extbl %d5 <== NOT EXECUTED
539e4: 0905 btst %d4,%d5 <== NOT EXECUTED
539e6: 66d2 bnes 539ba <fat_get_unique_ino+0x3a> <== NOT EXECUTED
{
FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino);
539e8: 7001 moveq #1,%d0 <== NOT EXECUTED
539ea: e9a8 lsll %d4,%d0 <== NOT EXECUTED
539ec: 8083 orl %d3,%d0 <== NOT EXECUTED
539ee: 1080 moveb %d0,%a0@ <== NOT EXECUTED
return (fs_info->uino_base + fs_info->index);
539f0: 202a 006e movel %a2@(110),%d0 <== NOT EXECUTED
539f4: d0aa 0076 addl %a2@(118),%d0 <== NOT EXECUTED
}
else
resrc_unsuff = true;
}
return 0;
}
539f8: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
539fe: 4e5e unlk %fp <== NOT EXECUTED
53a00: 4e75 rts <== NOT EXECUTED
fs_info->index++;
if (fs_info->index >= fs_info->uino_pool_size)
fs_info->index = 0;
}
if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
53a02: 203c 0fff ffff movel #268435455,%d0 <== NOT EXECUTED
53a08: 90aa 0076 subl %a2@(118),%d0 <== NOT EXECUTED
53a0c: d482 addl %d2,%d2 <== NOT EXECUTED
53a0e: b082 cmpl %d2,%d0 <== NOT EXECUTED
53a10: 620c bhis 53a1e <fat_get_unique_ino+0x9e> <== NOT EXECUTED
resrc_unsuff = true;
}
else
resrc_unsuff = true;
}
return 0;
53a12: 4280 clrl %d0 <== NOT EXECUTED
}
53a14: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
53a1a: 4e5e unlk %fp <== NOT EXECUTED
53a1c: 4e75 rts <== NOT EXECUTED
}
if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
{
fs_info->uino_pool_size <<= 1;
fs_info->uino = realloc(fs_info->uino, fs_info->uino_pool_size);
53a1e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
53a20: 2f2a 006a movel %a2@(106),%sp@- <== NOT EXECUTED
fs_info->index = 0;
}
if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
{
fs_info->uino_pool_size <<= 1;
53a24: 2542 0072 movel %d2,%a2@(114) <== NOT EXECUTED
fs_info->uino = realloc(fs_info->uino, fs_info->uino_pool_size);
53a28: 4e93 jsr %a3@ <== NOT EXECUTED
if (fs_info->uino != NULL)
53a2a: 508f addql #8,%sp <== NOT EXECUTED
}
if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
{
fs_info->uino_pool_size <<= 1;
fs_info->uino = realloc(fs_info->uino, fs_info->uino_pool_size);
53a2c: 2540 006a movel %d0,%a2@(106) <== NOT EXECUTED
if (fs_info->uino != NULL)
53a30: 67e0 beqs 53a12 <fat_get_unique_ino+0x92> <== NOT EXECUTED
fs_info->index = fs_info->uino_pool_size;
53a32: 242a 0072 movel %a2@(114),%d2 <== NOT EXECUTED
53a36: 2542 006e movel %d2,%a2@(110) <== NOT EXECUTED
53a3a: 6000 ff5a braw 53996 <fat_get_unique_ino+0x16> <== NOT EXECUTED
000538fa <fat_init_clusters_chain>:
int
fat_init_clusters_chain(
fat_fs_info_t *fs_info,
uint32_t start_cln
)
{
538fa: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
538fe: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
int rc = RC_OK;
ssize_t ret = 0;
uint32_t cur_cln = start_cln;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
53902: 2200 movel %d0,%d1 <== NOT EXECUTED
int
fat_init_clusters_chain(
fat_fs_info_t *fs_info,
uint32_t start_cln
)
{
53904: 48d7 3c00 moveml %a2-%a5,%sp@ <== NOT EXECUTED
53908: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int rc = RC_OK;
ssize_t ret = 0;
uint32_t cur_cln = start_cln;
5390c: 264e moveal %fp,%a3 <== NOT EXECUTED
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
{
ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
5390e: 49f9 0005 2b1a lea 52b1a <fat_cluster_set>,%a4 <== NOT EXECUTED
if ( ret != fs_info->vol.bpc )
{
return -1;
}
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
53914: 4bf9 0005 8ac0 lea 58ac0 <fat_get_fat_cluster>,%a5 <== NOT EXECUTED
{
int rc = RC_OK;
ssize_t ret = 0;
uint32_t cur_cln = start_cln;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
5391a: c2aa 0010 andl %a2@(16),%d1 <== NOT EXECUTED
uint32_t start_cln
)
{
int rc = RC_OK;
ssize_t ret = 0;
uint32_t cur_cln = start_cln;
5391e: 2700 movel %d0,%a3@- <== NOT EXECUTED
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
53920: b2aa 0014 cmpl %a2@(20),%d1 <== NOT EXECUTED
53924: 6442 bccs 53968 <fat_init_clusters_chain+0x6e> <== NOT EXECUTED
{
ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
53926: 4281 clrl %d1 <== NOT EXECUTED
53928: 42a7 clrl %sp@- <== NOT EXECUTED
5392a: 322a 0006 movew %a2@(6),%d1 <== NOT EXECUTED
5392e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
53930: 42a7 clrl %sp@- <== NOT EXECUTED
53932: 2f00 movel %d0,%sp@- <== NOT EXECUTED
53934: 2f0a movel %a2,%sp@- <== NOT EXECUTED
53936: 4e94 jsr %a4@ <== NOT EXECUTED
if ( ret != fs_info->vol.bpc )
53938: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5393c: 4281 clrl %d1 <== NOT EXECUTED
5393e: 322a 0006 movew %a2@(6),%d1 <== NOT EXECUTED
53942: b081 cmpl %d1,%d0 <== NOT EXECUTED
53944: 662e bnes 53974 <fat_init_clusters_chain+0x7a> <== NOT EXECUTED
{
return -1;
}
rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
53946: 2f0b movel %a3,%sp@- <== NOT EXECUTED
53948: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
5394c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5394e: 4e95 jsr %a5@ <== NOT EXECUTED
if ( rc != RC_OK )
53950: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
53954: 4a80 tstl %d0 <== NOT EXECUTED
53956: 6612 bnes 5396a <fat_init_clusters_chain+0x70> <== NOT EXECUTED
53958: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
{
int rc = RC_OK;
ssize_t ret = 0;
uint32_t cur_cln = start_cln;
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
5395c: 2200 movel %d0,%d1 <== NOT EXECUTED
5395e: c2aa 0010 andl %a2@(16),%d1 <== NOT EXECUTED
53962: b2aa 0014 cmpl %a2@(20),%d1 <== NOT EXECUTED
53966: 65be bcss 53926 <fat_init_clusters_chain+0x2c> <== NOT EXECUTED
return rc;
}
}
return rc;
53968: 4280 clrl %d0 <== NOT EXECUTED
}
5396a: 4cee 3c00 ffec moveml %fp@(-20),%a2-%a5 <== NOT EXECUTED
53970: 4e5e unlk %fp <== NOT EXECUTED
53972: 4e75 rts <== NOT EXECUTED
while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
{
ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
if ( ret != fs_info->vol.bpc )
{
return -1;
53974: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
}
return rc;
}
53976: 4cee 3c00 ffec moveml %fp@(-20),%a2-%a5 <== NOT EXECUTED
5397c: 4e5e unlk %fp <== NOT EXECUTED
00052df2 <fat_init_volume_info>:
* RC_OK on success, or -1 if error occured
* and errno set appropriately
*/
int
fat_init_volume_info(fat_fs_info_t *fs_info, const char *device)
{
52df2: 4e56 ff60 linkw %fp,#-160
52df6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
ssize_t ret = 0;
struct stat stat_buf;
int i = 0;
rtems_bdbuf_buffer *block = NULL;
vol->fd = open(device, O_RDWR);
52dfa: 4878 0002 pea 2 <DOUBLE_FLOAT>
52dfe: 2f2e 000c movel %fp@(12),%sp@-
* RC_OK on success, or -1 if error occured
* and errno set appropriately
*/
int
fat_init_volume_info(fat_fs_info_t *fs_info, const char *device)
{
52e02: 246e 0008 moveal %fp@(8),%a2
char boot_rec[FAT_MAX_BPB_SIZE];
char fs_info_sector[FAT_USEFUL_INFO_SIZE];
ssize_t ret = 0;
struct stat stat_buf;
int i = 0;
rtems_bdbuf_buffer *block = NULL;
52e06: 42ae ffaa clrl %fp@(-86)
vol->fd = open(device, O_RDWR);
52e0a: 4eb9 0004 5a28 jsr 45a28 <open>
if (vol->fd < 0)
52e10: 508f addql #8,%sp
ssize_t ret = 0;
struct stat stat_buf;
int i = 0;
rtems_bdbuf_buffer *block = NULL;
vol->fd = open(device, O_RDWR);
52e12: 2540 0056 movel %d0,%a2@(86)
if (vol->fd < 0)
52e16: 6d00 07a4 bltw 535bc <fat_init_volume_info+0x7ca>
{
rtems_set_errno_and_return_minus_one(ENXIO);
}
rc = fstat(vol->fd, &stat_buf);
52e1a: 486e ffba pea %fp@(-70)
52e1e: 2f00 movel %d0,%sp@-
52e20: 4eb9 0004 4c7c jsr 44c7c <fstat>
if (rc != 0)
52e26: 508f addql #8,%sp
52e28: 4a80 tstl %d0
52e2a: 6600 06e2 bnew 5350e <fat_init_volume_info+0x71c>
close(vol->fd);
rtems_set_errno_and_return_minus_one(ENXIO);
}
/* Must be a block device. */
if (!S_ISBLK(stat_buf.st_mode))
52e2e: 202e ffc6 movel %fp@(-58),%d0
52e32: 0280 0000 f000 andil #61440,%d0
52e38: 0c80 0000 6000 cmpil #24576,%d0
52e3e: 6600 06ce bnew 5350e <fat_init_volume_info+0x71c>
static inline int rtems_disk_fd_get_disk_device(
int fd,
rtems_disk_device **dd_ptr
)
{
return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);
52e42: 486a 005a pea %a2@(90)
52e46: 2f3c 4004 4209 movel #1074020873,%sp@-
52e4c: 2f2a 0056 movel %a2@(86),%sp@-
52e50: 4eb9 0005 46f4 jsr 546f4 <ioctl>
rtems_set_errno_and_return_minus_one(ENXIO);
}
/* check that device is registred as block device and lock it */
rc = rtems_disk_fd_get_disk_device(vol->fd, &vol->dd);
if (rc != 0) {
52e56: 4fef 000c lea %sp@(12),%sp
52e5a: 4a80 tstl %d0
52e5c: 6600 06b0 bnew 5350e <fat_init_volume_info+0x71c>
rtems_set_errno_and_return_minus_one(ENXIO);
}
/* Read boot record */
/* FIXME: Asserts FAT_MAX_BPB_SIZE < bdbuf block size */
sc = rtems_bdbuf_read( vol->dd, 0, &block);
52e60: 486e ffaa pea %fp@(-86)
52e64: 42a7 clrl %sp@-
52e66: 2f2a 005a movel %a2@(90),%sp@-
52e6a: 4eb9 0005 05f2 jsr 505f2 <rtems_bdbuf_read>
if (sc != RTEMS_SUCCESSFUL)
52e70: 4fef 000c lea %sp@(12),%sp
52e74: 4a80 tstl %d0
52e76: 6600 06f4 bnew 5356c <fat_init_volume_info+0x77a>
{
close(vol->fd);
rtems_set_errno_and_return_minus_one( EIO);
}
memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);
52e7a: 226e ffaa moveal %fp@(-86),%a1
52e7e: 2069 001a moveal %a1@(26),%a0
52e82: 1228 0010 moveb %a0@(16),%d1
52e86: 1a28 0011 moveb %a0@(17),%d5
52e8a: 1c28 0012 moveb %a0@(18),%d6
52e8e: 3841 moveaw %d1,%a4
52e90: 1228 0013 moveb %a0@(19),%d1
52e94: 1d45 ffa7 moveb %d5,%fp@(-89)
52e98: 1d41 ffa5 moveb %d1,%fp@(-91)
52e9c: 1228 0020 moveb %a0@(32),%d1
52ea0: 1a28 0014 moveb %a0@(20),%d5
52ea4: 1d41 ff96 moveb %d1,%fp@(-106)
52ea8: 1228 0021 moveb %a0@(33),%d1
52eac: 1d46 ffa6 moveb %d6,%fp@(-90)
52eb0: 1d41 ff9d moveb %d1,%fp@(-99)
52eb4: 1228 0022 moveb %a0@(34),%d1
52eb8: 1d45 ffa4 moveb %d5,%fp@(-92)
52ebc: 1d41 ff9c moveb %d1,%fp@(-100)
52ec0: 1228 0023 moveb %a0@(35),%d1
52ec4: 1028 000f moveb %a0@(15),%d0
52ec8: 1d41 ff9b moveb %d1,%fp@(-101)
52ecc: 1228 0024 moveb %a0@(36),%d1
52ed0: 1428 000b moveb %a0@(11),%d2
52ed4: 1d41 ff97 moveb %d1,%fp@(-105)
52ed8: 1228 0025 moveb %a0@(37),%d1
52edc: 1828 000c moveb %a0@(12),%d4
52ee0: 1d41 ff9f moveb %d1,%fp@(-97)
52ee4: 1228 0026 moveb %a0@(38),%d1
52ee8: 1628 000d moveb %a0@(13),%d3
52eec: 1d41 ff9e moveb %d1,%fp@(-98)
52ef0: 1228 0027 moveb %a0@(39),%d1
52ef4: 1e28 000e moveb %a0@(14),%d7
52ef8: 1a28 0016 moveb %a0@(22),%d5
52efc: 1c28 0017 moveb %a0@(23),%d6
52f00: 1d41 ffa3 moveb %d1,%fp@(-93)
52f04: 1228 0028 moveb %a0@(40),%d1
52f08: 3640 moveaw %d0,%a3
52f0a: 1d41 ff95 moveb %d1,%fp@(-107)
52f0e: 1228 002c moveb %a0@(44),%d1
52f12: 1d41 ff8f moveb %d1,%fp@(-113)
52f16: 1228 002d moveb %a0@(45),%d1
52f1a: 1d41 ff8e moveb %d1,%fp@(-114)
52f1e: 1228 002e moveb %a0@(46),%d1
52f22: 1d41 ff8d moveb %d1,%fp@(-115)
52f26: 1228 002f moveb %a0@(47),%d1
52f2a: 1d41 ff8b moveb %d1,%fp@(-117)
52f2e: 1228 0030 moveb %a0@(48),%d1
52f32: 1d41 ff91 moveb %d1,%fp@(-111)
52f36: 1228 0031 moveb %a0@(49),%d1
sc = rtems_bdbuf_release( block);
52f3a: 2f09 movel %a1,%sp@-
{
close(vol->fd);
rtems_set_errno_and_return_minus_one( EIO);
}
memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);
52f3c: 1d41 ff90 moveb %d1,%fp@(-112)
sc = rtems_bdbuf_release( block);
52f40: 4eb9 0005 07c4 jsr 507c4 <rtems_bdbuf_release>
if (sc != RTEMS_SUCCESSFUL)
52f46: 588f addql #4,%sp
52f48: 4a80 tstl %d0
52f4a: 6600 0620 bnew 5356c <fat_init_volume_info+0x77a>
}
/* Evaluate boot record */
vol->bps = FAT_GET_BR_BYTES_PER_SECTOR(boot_rec);
if ( (vol->bps != 512) &&
52f4e: 4280 clrl %d0
close(vol->fd);
rtems_set_errno_and_return_minus_one( EIO );
}
/* Evaluate boot record */
vol->bps = FAT_GET_BR_BYTES_PER_SECTOR(boot_rec);
52f50: 0284 0000 00ff andil #255,%d4
52f56: 0282 0000 00ff andil #255,%d2
52f5c: e18c lsll #8,%d4
52f5e: 8882 orl %d2,%d4
if ( (vol->bps != 512) &&
52f60: 3004 movew %d4,%d0
close(vol->fd);
rtems_set_errno_and_return_minus_one( EIO );
}
/* Evaluate boot record */
vol->bps = FAT_GET_BR_BYTES_PER_SECTOR(boot_rec);
52f62: 3484 movew %d4,%a2@
52f64: 3a44 moveaw %d4,%a5
if ( (vol->bps != 512) &&
52f66: 0c80 0000 0200 cmpil #512,%d0
52f6c: 6700 055e beqw 534cc <fat_init_volume_info+0x6da>
52f70: 0c80 0000 0400 cmpil #1024,%d0 <== NOT EXECUTED
52f76: 6712 beqs 52f8a <fat_init_volume_info+0x198> <== NOT EXECUTED
(vol->bps != 1024) &&
52f78: 0c80 0000 0800 cmpil #2048,%d0 <== NOT EXECUTED
52f7e: 670a beqs 52f8a <fat_init_volume_info+0x198> <== NOT EXECUTED
(vol->bps != 2048) &&
52f80: 0c80 0000 1000 cmpil #4096,%d0 <== NOT EXECUTED
52f86: 6600 05c0 bnew 53548 <fat_init_volume_info+0x756> <== NOT EXECUTED
(vol->bps != 4096))
{
close(vol->fd);
rtems_set_errno_and_return_minus_one( EINVAL );
}
for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
52f8a: 4281 clrl %d1 <== NOT EXECUTED
52f8c: 7409 moveq #9,%d2 <== NOT EXECUTED
52f8e: 320d movew %a5,%d1 <== NOT EXECUTED
52f90: 2241 moveal %d1,%a1 <== NOT EXECUTED
52f92: 2009 movel %a1,%d0 <== NOT EXECUTED
52f94: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
i >>= 1, vol->sec_mul++);
52f96: e280 asrl #1,%d0 <== NOT EXECUTED
(vol->bps != 4096))
{
close(vol->fd);
rtems_set_errno_and_return_minus_one( EINVAL );
}
for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
52f98: 7201 moveq #1,%d1 <== NOT EXECUTED
52f9a: 2401 movel %d1,%d2 <== NOT EXECUTED
52f9c: 5282 addql #1,%d2 <== NOT EXECUTED
52f9e: 0800 0000 btst #0,%d0 <== NOT EXECUTED
52fa2: 660e bnes 52fb2 <fat_init_volume_info+0x1c0> <== NOT EXECUTED
i >>= 1, vol->sec_mul++);
52fa4: e280 asrl #1,%d0 <== NOT EXECUTED
(vol->bps != 4096))
{
close(vol->fd);
rtems_set_errno_and_return_minus_one( EINVAL );
}
for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
52fa6: 1202 moveb %d2,%d1 <== NOT EXECUTED
52fa8: 2401 movel %d1,%d2 <== NOT EXECUTED
52faa: 5282 addql #1,%d2 <== NOT EXECUTED
52fac: 0800 0000 btst #0,%d0 <== NOT EXECUTED
52fb0: 67f2 beqs 52fa4 <fat_init_volume_info+0x1b2> <== NOT EXECUTED
52fb2: 1541 0003 moveb %d1,%a2@(3) <== NOT EXECUTED
i >>= 1, vol->sec_mul++);
for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;
52fb6: 4202 clrb %d2
52fb8: 1542 0002 moveb %d2,%a2@(2)
52fbc: 0804 0000 btst #0,%d4
52fc0: 6600 057a bnew 5353c <fat_init_volume_info+0x74a>
52fc4: 2009 movel %a1,%d0
i >>= 1, vol->sec_log2++);
52fc6: e280 asrl #1,%d0
close(vol->fd);
rtems_set_errno_and_return_minus_one( EINVAL );
}
for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
i >>= 1, vol->sec_mul++);
for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;
52fc8: 7201 moveq #1,%d1
52fca: 2401 movel %d1,%d2
52fcc: 5282 addql #1,%d2
52fce: 0800 0000 btst #0,%d0
52fd2: 660e bnes 52fe2 <fat_init_volume_info+0x1f0> <== NEVER TAKEN
i >>= 1, vol->sec_log2++);
52fd4: e280 asrl #1,%d0
close(vol->fd);
rtems_set_errno_and_return_minus_one( EINVAL );
}
for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
i >>= 1, vol->sec_mul++);
for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;
52fd6: 1202 moveb %d2,%d1
52fd8: 2401 movel %d1,%d2
52fda: 5282 addql #1,%d2
52fdc: 0800 0000 btst #0,%d0
52fe0: 67f2 beqs 52fd4 <fat_init_volume_info+0x1e2>
52fe2: 1541 0002 moveb %d1,%a2@(2)
i >>= 1, vol->sec_log2++);
vol->bytes_per_block = vol->bps;
vol->bytes_per_block_log2 = vol->sec_log2;
vol->sectors_per_block = 1;
52fe6: 7801 moveq #1,%d4
for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
i >>= 1, vol->sec_mul++);
for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;
i >>= 1, vol->sec_log2++);
vol->bytes_per_block = vol->bps;
52fe8: 354d 000a movew %a5,%a2@(10)
vol->bytes_per_block_log2 = vol->sec_log2;
52fec: 1541 000c moveb %d1,%a2@(12)
vol->sectors_per_block = 1;
52ff0: 1544 0009 moveb %d4,%a2@(9)
vol->spc = FAT_GET_BR_SECTORS_PER_CLUSTER(boot_rec);
52ff4: 1543 0004 moveb %d3,%a2@(4)
/*
* "sectors per cluster" of zero is invalid
* (and would hang the following loop)
*/
if (vol->spc == 0)
52ff8: 6700 054e beqw 53548 <fat_init_volume_info+0x756>
{
close(vol->fd);
rtems_set_errno_and_return_minus_one(EINVAL);
}
for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;
52ffc: 4282 clrl %d2
52ffe: 1403 moveb %d3,%d2
53000: 4200 clrb %d0
53002: 1540 0005 moveb %d0,%a2@(5)
53006: 2002 movel %d2,%d0
53008: 0803 0000 btst #0,%d3
5300c: 6600 0534 bnew 53542 <fat_init_volume_info+0x750>
i >>= 1, vol->spc_log2++);
53010: e280 asrl #1,%d0
{
close(vol->fd);
rtems_set_errno_and_return_minus_one(EINVAL);
}
for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;
53012: 7601 moveq #1,%d3
53014: 2803 movel %d3,%d4
53016: 5284 addql #1,%d4
53018: 0800 0000 btst #0,%d0
5301c: 660e bnes 5302c <fat_init_volume_info+0x23a> <== ALWAYS TAKEN
i >>= 1, vol->spc_log2++);
5301e: e280 asrl #1,%d0 <== NOT EXECUTED
{
close(vol->fd);
rtems_set_errno_and_return_minus_one(EINVAL);
}
for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;
53020: 1604 moveb %d4,%d3 <== NOT EXECUTED
53022: 2803 movel %d3,%d4 <== NOT EXECUTED
53024: 5284 addql #1,%d4 <== NOT EXECUTED
53026: 0800 0000 btst #0,%d0 <== NOT EXECUTED
5302a: 67f2 beqs 5301e <fat_init_volume_info+0x22c> <== NOT EXECUTED
5302c: 1543 0005 moveb %d3,%a2@(5)
53030: 0283 0000 00ff andil #255,%d3
i >>= 1, vol->spc_log2++);
/*
* "bytes per cluster" value greater than 32K is invalid
*/
if ((vol->bpc = vol->bps << vol->spc_log2) > MS_BYTES_PER_CLUSTER_LIMIT)
53036: 2809 movel %a1,%d4
53038: 4280 clrl %d0
5303a: e7ac lsll %d3,%d4
5303c: 3004 movew %d4,%d0
5303e: 3544 0006 movew %d4,%a2@(6)
53042: 0c80 0000 8000 cmpil #32768,%d0
53048: 6200 04fe bhiw 53548 <fat_init_volume_info+0x756>
{
close(vol->fd);
rtems_set_errno_and_return_minus_one(EINVAL);
}
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
5304c: 2004 movel %d4,%d0
5304e: 4203 clrb %d3
53050: 0280 0000 ffff andil #65535,%d0
53056: 1543 0008 moveb %d3,%a2@(8)
5305a: 7601 moveq #1,%d3
5305c: 0804 0000 btst #0,%d4
53060: 661e bnes 53080 <fat_init_volume_info+0x28e> <== NEVER TAKEN
53062: 2803 movel %d3,%d4
53064: 5284 addql #1,%d4
i >>= 1, vol->bpc_log2++);
53066: e280 asrl #1,%d0
{
close(vol->fd);
rtems_set_errno_and_return_minus_one(EINVAL);
}
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
53068: 0800 0000 btst #0,%d0
5306c: 660e bnes 5307c <fat_init_volume_info+0x28a> <== NEVER TAKEN
i >>= 1, vol->bpc_log2++);
5306e: e280 asrl #1,%d0
{
close(vol->fd);
rtems_set_errno_and_return_minus_one(EINVAL);
}
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
53070: 1604 moveb %d4,%d3
53072: 2803 movel %d3,%d4
53074: 5284 addql #1,%d4
53076: 0800 0000 btst #0,%d0
5307a: 67f2 beqs 5306e <fat_init_volume_info+0x27c>
5307c: 1543 0008 moveb %d3,%a2@(8)
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
53080: 4280 clrl %d0
53082: 102e ffa7 moveb %fp@(-89),%d0
53086: 4284 clrl %d4
53088: 2040 moveal %d0,%a0
5308a: 182e ffa6 moveb %fp@(-90),%d4
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
5308e: 4283 clrl %d3
53090: 300b movew %a3,%d0
vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
53092: e18c lsll #8,%d4
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
53094: 0286 0000 00ff andil #255,%d6
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
5309a: 1600 moveb %d0,%d3
vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
5309c: 2008 movel %a0,%d0
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
5309e: 2646 moveal %d6,%a3
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
/* calculate the count of sectors occupied by the root directory */
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
530a0: 2c09 movel %a1,%d6
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
530a2: 8880 orl %d0,%d4
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
530a4: 0287 0000 00ff andil #255,%d7
/* calculate the count of sectors occupied by the root directory */
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
530aa: 0281 0000 00ff andil #255,%d1
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
/* calculate the count of sectors occupied by the root directory */
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
530b0: 2004 movel %d4,%d0
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
530b2: 2a47 moveal %d7,%a5
vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
/* calculate the count of sectors occupied by the root directory */
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
530b4: eb88 lsll #5,%d0
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
530b6: e18b lsll #8,%d3
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
530b8: 0285 0000 00ff andil #255,%d5
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
/* calculate the count of sectors occupied by the root directory */
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
530be: 41f1 08ff lea %a1@(ffffffff,%d0:l),%a0
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
530c2: 3544 0022 movew %d4,%a2@(34)
/* calculate the count of sectors occupied by the root directory */
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
530c6: 2008 movel %a0,%d0
530c8: 4c46 0800 remsl %d6,%d0,%d0
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
530cc: 2c0b movel %a3,%d6
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
530ce: 2e0d movel %a5,%d7
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
530d0: e18e lsll #8,%d6
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
530d2: 8687 orl %d7,%d3
}
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
530d4: 3e0c movew %a4,%d7
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
530d6: 2646 moveal %d6,%a3
/* calculate the count of sectors occupied by the root directory */
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
530d8: 2c00 movel %d0,%d6
530da: e3ae lsll %d1,%d6
}
for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
i >>= 1, vol->bpc_log2++);
vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
530dc: 1547 000d moveb %d7,%a2@(13)
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
530e0: 3543 0018 movew %d3,%a2@(24)
/* calculate the count of sectors occupied by the root directory */
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
530e4: 2206 movel %d6,%d1
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
530e6: 2c0b movel %a3,%d6
530e8: 8c85 orl %d5,%d6
vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
/* calculate the count of sectors occupied by the root directory */
vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
530ea: 2540 0024 movel %d0,%a2@(36)
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
530ee: 2541 0028 movel %d1,%a2@(40)
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
530f2: 4a46 tstw %d6
530f4: 6700 01d0 beqw 532c6 <fat_init_volume_info+0x4d4>
vol->rdir_secs;
/* for FAT12/16 root dir starts at(sector) */
vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;
if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)
530f8: 4284 clrl %d4
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
else
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +
530fa: 4281 clrl %d1
vol->rdir_secs;
/* for FAT12/16 root dir starts at(sector) */
vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;
if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)
530fc: 182e ffa4 moveb %fp@(-92),%d4
53100: 4285 clrl %d5
53102: 1a2e ffa5 moveb %fp@(-91),%d5
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
else
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +
53106: 3e0c movew %a4,%d7
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
53108: 0286 0000 ffff andil #65535,%d6
else
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +
5310e: 0283 0000 ffff andil #65535,%d3
53114: 1207 moveb %d7,%d1
53116: 4c06 1800 mulsl %d6,%d1
vol->rdir_secs;
/* for FAT12/16 root dir starts at(sector) */
vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;
if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)
5311a: e18c lsll #8,%d4
vol->bps;
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
5311c: 2546 001a movel %d6,%a2@(26)
else
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +
53120: d681 addl %d1,%d3
53122: d083 addl %d3,%d0
vol->rdir_secs;
/* for FAT12/16 root dir starts at(sector) */
vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;
if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)
53124: 8885 orl %d5,%d4
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
else
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +
53126: 2540 0030 movel %d0,%a2@(48)
vol->rdir_secs;
/* for FAT12/16 root dir starts at(sector) */
vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;
5312a: 2543 001e movel %d3,%a2@(30)
if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)
5312e: 4a44 tstw %d4
53130: 6700 01f0 beqw 53322 <fat_init_volume_info+0x530>
vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec);
53134: 0284 0000 ffff andil #65535,%d4
5313a: 2544 002c movel %d4,%a2@(44)
else
vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM32(boot_rec);
data_secs = vol->tot_secs - vol->data_fsec;
5313e: 9880 subl %d0,%d4
vol->data_cls = data_secs / vol->spc;
53140: 4c42 4004 remul %d2,%d4,%d4
53144: 2544 0034 movel %d4,%a2@(52)
/* determine FAT type at least */
if ( vol->data_cls < FAT_FAT12_MAX_CLN)
53148: 0c84 0000 0ff4 cmpil #4084,%d4
5314e: 6200 0210 bhiw 53360 <fat_init_volume_info+0x56e>
else
{
vol->rdir_cl = 0;
vol->mirror = 0;
vol->afat = 0;
vol->free_cls = FAT_UNDEFINED_VALUE;
53152: 76ff moveq #-1,%d3
/* determine FAT type at least */
if ( vol->data_cls < FAT_FAT12_MAX_CLN)
{
vol->type = FAT_FAT12;
vol->mask = FAT_FAT12_MASK;
53154: 2c3c 0000 0fff movel #4095,%d6
vol->eoc_val = FAT_FAT12_EOC;
5315a: 307c 0ff8 moveaw #4088,%a0
}
}
else
{
vol->rdir_cl = 0;
vol->mirror = 0;
5315e: 4204 clrb %d4
vol->data_cls = data_secs / vol->spc;
/* determine FAT type at least */
if ( vol->data_cls < FAT_FAT12_MAX_CLN)
{
vol->type = FAT_FAT12;
53160: 7e01 moveq #1,%d7
vol->mask = FAT_FAT12_MASK;
53162: 2546 0010 movel %d6,%a2@(16)
vol->data_cls = data_secs / vol->spc;
/* determine FAT type at least */
if ( vol->data_cls < FAT_FAT12_MAX_CLN)
{
vol->type = FAT_FAT12;
53166: 1547 000e moveb %d7,%a2@(14)
vol->mask = FAT_FAT12_MASK;
vol->eoc_val = FAT_FAT12_EOC;
5316a: 2548 0014 movel %a0,%a2@(20)
}
}
else
{
vol->rdir_cl = 0;
vol->mirror = 0;
5316e: 1544 004e moveb %d4,%a2@(78)
vol->afat = 0;
53172: 1544 0054 moveb %d4,%a2@(84)
}
}
}
else
{
vol->rdir_cl = 0;
53176: 42aa 0038 clrl %a2@(56)
vol->mirror = 0;
vol->afat = 0;
vol->free_cls = FAT_UNDEFINED_VALUE;
5317a: 2543 003e movel %d3,%a2@(62)
vol->next_cl = FAT_UNDEFINED_VALUE;
5317e: 2543 0046 movel %d3,%a2@(70)
* 0 on success, or -1 if error occured and errno set appropriately
*/
int
_fat_block_release(fat_fs_info_t *fs_info)
{
return fat_buf_release(fs_info);
53182: 2f0a movel %a2,%sp@-
_fat_block_release(fs_info);
vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;
/* set up collection of fat-files fd */
fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
53184: 47f9 0004 48cc lea 448cc <calloc>,%a3
* 0 on success, or -1 if error occured and errno set appropriately
*/
int
_fat_block_release(fat_fs_info_t *fs_info)
{
return fat_buf_release(fs_info);
5318a: 4eb9 0005 2738 jsr 52738 <fat_buf_release>
_fat_block_release(fs_info);
vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;
/* set up collection of fat-files fd */
fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
53190: 4878 000c pea c <OPER1>
vol->next_cl = FAT_UNDEFINED_VALUE;
}
_fat_block_release(fs_info);
vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;
53194: 4280 clrl %d0
/* set up collection of fat-files fd */
fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
53196: 4878 0002 pea 2 <DOUBLE_FLOAT>
vol->next_cl = FAT_UNDEFINED_VALUE;
}
_fat_block_release(fs_info);
vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;
5319a: 102a 0054 moveb %a2@(84),%d0
5319e: 41ea 001a lea %a2@(26),%a0
531a2: 4c10 0800 mulsl %a0@,%d0
531a6: 4281 clrl %d1
531a8: 322a 0018 movew %a2@(24),%d1
531ac: d081 addl %d1,%d0
531ae: 2540 0050 movel %d0,%a2@(80)
/* set up collection of fat-files fd */
fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
531b2: 4e93 jsr %a3@
if ( fs_info->vhash == NULL )
531b4: 4fef 000c lea %sp@(12),%sp
_fat_block_release(fs_info);
vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;
/* set up collection of fat-files fd */
fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
531b8: 2040 moveal %d0,%a0
531ba: 2540 0062 movel %d0,%a2@(98)
if ( fs_info->vhash == NULL )
531be: 6700 044c beqw 5360c <fat_init_volume_info+0x81a>
}
for (i = 0; i < FAT_HASH_SIZE; i++)
rtems_chain_initialize_empty(fs_info->vhash + i);
fs_info->rhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
531c2: 4878 000c pea c <OPER1>
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
531c6: 2240 moveal %d0,%a1
531c8: 5889 addql #4,%a1
531ca: 2089 movel %a1,%a0@
531cc: 43e8 0010 lea %a0@(16),%a1
531d0: 2149 000c movel %a1,%a0@(12)
531d4: 4878 0002 pea 2 <DOUBLE_FLOAT>
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
531d8: 43e8 000c lea %a0@(12),%a1
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
531dc: 42a8 0004 clrl %a0@(4)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
531e0: 2149 0014 movel %a1,%a0@(20)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
tail->previous = head;
531e4: 2140 0008 movel %d0,%a0@(8)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
531e8: 42a8 0010 clrl %a0@(16)
531ec: 4e93 jsr %a3@
if ( fs_info->rhash == NULL )
531ee: 508f addql #8,%sp
}
for (i = 0; i < FAT_HASH_SIZE; i++)
rtems_chain_initialize_empty(fs_info->vhash + i);
fs_info->rhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
531f0: 2040 moveal %d0,%a0
531f2: 2540 0066 movel %d0,%a2@(102)
if ( fs_info->rhash == NULL )
531f6: 6700 0476 beqw 5366e <fat_init_volume_info+0x87c>
}
for (i = 0; i < FAT_HASH_SIZE; i++)
rtems_chain_initialize_empty(fs_info->rhash + i);
fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;
fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;
531fa: 222a 002c movel %a2@(44),%d1
fs_info->index = 0;
fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));
531fe: 4878 0001 pea 1 <ADD>
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
53202: 43e8 0010 lea %a0@(16),%a1
53206: 5880 addql #4,%d0
53208: 2149 000c movel %a1,%a0@(12)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
5320c: 43e8 000c lea %a0@(12),%a1
Chain_Node *tail = _Chain_Tail( the_chain );
53210: 2080 movel %d0,%a0@
53212: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
}
for (i = 0; i < FAT_HASH_SIZE; i++)
rtems_chain_initialize_empty(fs_info->rhash + i);
fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;
fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;
53216: 4280 clrl %d0
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
53218: 2149 0014 movel %a1,%a0@(20)
5321c: 102a 0003 moveb %a2@(3),%d0
53220: e1a9 lsll %d0,%d1
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
53222: 42a8 0004 clrl %a0@(4)
rtems_set_errno_and_return_minus_one( ENOMEM );
}
for (i = 0; i < FAT_HASH_SIZE; i++)
rtems_chain_initialize_empty(fs_info->rhash + i);
fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;
53226: 203c 0000 0100 movel #256,%d0
tail->previous = head;
5322c: 2148 0008 movel %a0,%a0@(8)
fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;
53230: e989 lsll #4,%d1
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
53232: 42a8 0010 clrl %a0@(16)
rtems_set_errno_and_return_minus_one( ENOMEM );
}
for (i = 0; i < FAT_HASH_SIZE; i++)
rtems_chain_initialize_empty(fs_info->rhash + i);
fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;
53236: 2540 0072 movel %d0,%a2@(114)
fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;
5323a: 2541 0076 movel %d1,%a2@(118)
fs_info->index = 0;
5323e: 42aa 006e clrl %a2@(110)
fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));
53242: 4e93 jsr %a3@
if ( fs_info->uino == NULL )
53244: 508f addql #8,%sp
rtems_chain_initialize_empty(fs_info->rhash + i);
fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;
fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;
fs_info->index = 0;
fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));
53246: 2540 006a movel %d0,%a2@(106)
if ( fs_info->uino == NULL )
5324a: 6700 0388 beqw 535d4 <fat_init_volume_info+0x7e2>
close(vol->fd);
free(fs_info->vhash);
free(fs_info->rhash);
rtems_set_errno_and_return_minus_one( ENOMEM );
}
fs_info->sec_buf = (uint8_t *)calloc(vol->bps, sizeof(uint8_t));
5324e: 4878 0001 pea 1 <ADD>
53252: 4280 clrl %d0
53254: 3012 movew %a2@,%d0
53256: 2f00 movel %d0,%sp@-
53258: 4e93 jsr %a3@
if (fs_info->sec_buf == NULL)
5325a: 508f addql #8,%sp
close(vol->fd);
free(fs_info->vhash);
free(fs_info->rhash);
rtems_set_errno_and_return_minus_one( ENOMEM );
}
fs_info->sec_buf = (uint8_t *)calloc(vol->bps, sizeof(uint8_t));
5325c: 2540 0084 movel %d0,%a2@(132)
if (fs_info->sec_buf == NULL)
53260: 6700 03ce beqw 53630 <fat_init_volume_info+0x83e>
return bytes_written;
}
static bool is_cluster_aligned(const fat_vol_t *vol, uint32_t sec_num)
{
return (sec_num & (vol->spc - 1)) == 0;
53264: 4280 clrl %d0
53266: 102a 0004 moveb %a2@(4),%d0
5326a: 5380 subql #1,%d0
5326c: 2200 movel %d0,%d1
5326e: c2aa 0030 andl %a2@(48),%d1
/*
* If possible we will use the cluster size as bdbuf block size for faster
* file access. This requires that certain sectors are aligned to cluster
* borders.
*/
if (is_cluster_aligned(vol, vol->data_fsec)
53272: 6600 024c bnew 534c0 <fat_init_volume_info+0x6ce>
&& (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))
53276: 4281 clrl %d1
53278: 122a 000e moveb %a2@(14),%d1
5327c: 7404 moveq #4,%d2
5327e: b481 cmpl %d1,%d2
53280: 6708 beqs 5328a <fat_init_volume_info+0x498> <== NEVER TAKEN
return bytes_written;
}
static bool is_cluster_aligned(const fat_vol_t *vol, uint32_t sec_num)
{
return (sec_num & (vol->spc - 1)) == 0;
53282: c0aa 001e andl %a2@(30),%d0
* If possible we will use the cluster size as bdbuf block size for faster
* file access. This requires that certain sectors are aligned to cluster
* borders.
*/
if (is_cluster_aligned(vol, vol->data_fsec)
&& (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))
53286: 6600 0238 bnew 534c0 <fat_init_volume_info+0x6ce>
{
sc = rtems_bdbuf_set_block_size (vol->dd, vol->bpc, true);
5328a: 4878 0001 pea 1 <ADD>
5328e: 4280 clrl %d0
53290: 302a 0006 movew %a2@(6),%d0
53294: 2f00 movel %d0,%sp@-
53296: 2f2a 005a movel %a2@(90),%sp@-
5329a: 4eb9 0005 0c52 jsr 50c52 <rtems_bdbuf_set_block_size>
if (sc == RTEMS_SUCCESSFUL)
532a0: 4fef 000c lea %sp@(12),%sp
532a4: 4a80 tstl %d0
532a6: 6600 0218 bnew 534c0 <fat_init_volume_info+0x6ce>
{
vol->bytes_per_block = vol->bpc;
vol->bytes_per_block_log2 = vol->bpc_log2;
532aa: 156a 0008 000c moveb %a2@(8),%a2@(12)
vol->sectors_per_block = vol->spc;
532b0: 156a 0004 0009 moveb %a2@(4),%a2@(9)
&& (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))
{
sc = rtems_bdbuf_set_block_size (vol->dd, vol->bpc, true);
if (sc == RTEMS_SUCCESSFUL)
{
vol->bytes_per_block = vol->bpc;
532b6: 356a 0006 000a movew %a2@(6),%a2@(10)
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
532bc: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5
532c2: 4e5e unlk %fp
532c4: 4e75 rts
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
else
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
532c6: 4286 clrl %d6 <== NOT EXECUTED
532c8: 4281 clrl %d1 <== NOT EXECUTED
532ca: 1c2e ff9f moveb %fp@(-97),%d6 <== NOT EXECUTED
532ce: 122e ff9e moveb %fp@(-98),%d1 <== NOT EXECUTED
532d2: 4284 clrl %d4 <== NOT EXECUTED
532d4: 182e ff97 moveb %fp@(-105),%d4 <== NOT EXECUTED
532d8: 7a18 moveq #24,%d5 <== NOT EXECUTED
532da: 4841 swap %d1 <== NOT EXECUTED
532dc: 4241 clrw %d1 <== NOT EXECUTED
532de: e18e lsll #8,%d6 <== NOT EXECUTED
vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +
532e0: 3e0c movew %a4,%d7 <== NOT EXECUTED
532e2: 0283 0000 ffff andil #65535,%d3 <== NOT EXECUTED
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
else
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
532e8: 8c81 orl %d1,%d6 <== NOT EXECUTED
532ea: 122e ffa3 moveb %fp@(-93),%d1 <== NOT EXECUTED
532ee: 8c84 orl %d4,%d6 <== NOT EXECUTED
532f0: eba9 lsll %d5,%d1 <== NOT EXECUTED
vol->rdir_secs;
/* for FAT12/16 root dir starts at(sector) */
vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;
if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)
532f2: 4284 clrl %d4 <== NOT EXECUTED
532f4: 182e ffa4 moveb %fp@(-92),%d4 <== NOT EXECUTED
532f8: 4285 clrl %d5 <== NOT EXECUTED
532fa: 1a2e ffa5 moveb %fp@(-91),%d5 <== NOT EXECUTED
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
else
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
532fe: 8c81 orl %d1,%d6 <== NOT EXECUTED
vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +
53300: 4281 clrl %d1 <== NOT EXECUTED
53302: 1207 moveb %d7,%d1 <== NOT EXECUTED
53304: 4c06 1800 mulsl %d6,%d1 <== NOT EXECUTED
vol->rdir_secs;
/* for FAT12/16 root dir starts at(sector) */
vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;
if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)
53308: e18c lsll #8,%d4 <== NOT EXECUTED
vol->rdir_size = vol->rdir_secs << vol->sec_log2;
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
else
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
5330a: 2546 001a movel %d6,%a2@(26) <== NOT EXECUTED
vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +
5330e: d681 addl %d1,%d3 <== NOT EXECUTED
53310: d083 addl %d3,%d0 <== NOT EXECUTED
vol->rdir_secs;
/* for FAT12/16 root dir starts at(sector) */
vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;
if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)
53312: 8885 orl %d5,%d4 <== NOT EXECUTED
if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
else
vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +
53314: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
vol->rdir_secs;
/* for FAT12/16 root dir starts at(sector) */
vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;
53318: 2543 001e movel %d3,%a2@(30) <== NOT EXECUTED
if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)
5331c: 4a44 tstw %d4 <== NOT EXECUTED
5331e: 6600 fe14 bnew 53134 <fat_init_volume_info+0x342> <== NOT EXECUTED
vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec);
else
vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM32(boot_rec);
53322: 4284 clrl %d4 <== NOT EXECUTED
53324: 4281 clrl %d1 <== NOT EXECUTED
53326: 182e ff9d moveb %fp@(-99),%d4 <== NOT EXECUTED
5332a: 122e ff9c moveb %fp@(-100),%d1 <== NOT EXECUTED
5332e: 4283 clrl %d3 <== NOT EXECUTED
53330: 162e ff96 moveb %fp@(-106),%d3 <== NOT EXECUTED
53334: 7a18 moveq #24,%d5 <== NOT EXECUTED
53336: 4841 swap %d1 <== NOT EXECUTED
53338: 4241 clrw %d1 <== NOT EXECUTED
5333a: e18c lsll #8,%d4 <== NOT EXECUTED
5333c: 8881 orl %d1,%d4 <== NOT EXECUTED
5333e: 122e ff9b moveb %fp@(-101),%d1 <== NOT EXECUTED
53342: 8883 orl %d3,%d4 <== NOT EXECUTED
53344: eba9 lsll %d5,%d1 <== NOT EXECUTED
53346: 8881 orl %d1,%d4 <== NOT EXECUTED
53348: 2544 002c movel %d4,%a2@(44) <== NOT EXECUTED
data_secs = vol->tot_secs - vol->data_fsec;
5334c: 9880 subl %d0,%d4 <== NOT EXECUTED
vol->data_cls = data_secs / vol->spc;
5334e: 4c42 4004 remul %d2,%d4,%d4 <== NOT EXECUTED
53352: 2544 0034 movel %d4,%a2@(52) <== NOT EXECUTED
/* determine FAT type at least */
if ( vol->data_cls < FAT_FAT12_MAX_CLN)
53356: 0c84 0000 0ff4 cmpil #4084,%d4 <== NOT EXECUTED
5335c: 6300 fdf4 blsw 53152 <fat_init_volume_info+0x360> <== NOT EXECUTED
vol->mask = FAT_FAT12_MASK;
vol->eoc_val = FAT_FAT12_EOC;
}
else
{
if ( vol->data_cls < FAT_FAT16_MAX_CLN)
53360: 0c84 0000 fff4 cmpil #65524,%d4 <== NOT EXECUTED
53366: 6300 0170 blsw 534d8 <fat_init_volume_info+0x6e6> <== NOT EXECUTED
}
}
if (vol->type == FAT_FAT32)
{
vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
5336a: 4280 clrl %d0 <== NOT EXECUTED
5336c: 4281 clrl %d1 <== NOT EXECUTED
5336e: 102e ff8e moveb %fp@(-114),%d0 <== NOT EXECUTED
53372: 122e ff8d moveb %fp@(-115),%d1 <== NOT EXECUTED
53376: 4283 clrl %d3 <== NOT EXECUTED
53378: 162e ff8f moveb %fp@(-113),%d3 <== NOT EXECUTED
5337c: 7818 moveq #24,%d4 <== NOT EXECUTED
vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
5337e: 7a80 moveq #-128,%d5 <== NOT EXECUTED
vol->eoc_val = FAT_FAT16_EOC;
}
else
{
vol->type = FAT_FAT32;
vol->mask = FAT_FAT32_MASK;
53380: 2e3c 0fff ffff movel #268435455,%d7 <== NOT EXECUTED
vol->eoc_val = FAT_FAT32_EOC;
53386: 207c 0fff fff8 moveal #268435448,%a0 <== NOT EXECUTED
}
}
if (vol->type == FAT_FAT32)
{
vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
5338c: 4841 swap %d1 <== NOT EXECUTED
5338e: 4241 clrw %d1 <== NOT EXECUTED
53390: e188 lsll #8,%d0 <== NOT EXECUTED
53392: 142e ff8b moveb %fp@(-117),%d2 <== NOT EXECUTED
vol->mask = FAT_FAT16_MASK;
vol->eoc_val = FAT_FAT16_EOC;
}
else
{
vol->type = FAT_FAT32;
53396: 7c04 moveq #4,%d6 <== NOT EXECUTED
vol->mask = FAT_FAT32_MASK;
53398: 2547 0010 movel %d7,%a2@(16) <== NOT EXECUTED
}
}
if (vol->type == FAT_FAT32)
{
vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
5339c: 8081 orl %d1,%d0 <== NOT EXECUTED
vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
5339e: 122e ff95 moveb %fp@(-107),%d1 <== NOT EXECUTED
}
else
{
vol->type = FAT_FAT32;
vol->mask = FAT_FAT32_MASK;
vol->eoc_val = FAT_FAT32_EOC;
533a2: 2548 0014 movel %a0,%a2@(20) <== NOT EXECUTED
}
}
if (vol->type == FAT_FAT32)
{
vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
533a6: e9aa lsll %d4,%d2 <== NOT EXECUTED
533a8: 8083 orl %d3,%d0 <== NOT EXECUTED
vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
533aa: c285 andl %d5,%d1 <== NOT EXECUTED
}
}
if (vol->type == FAT_FAT32)
{
vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
533ac: 8082 orl %d2,%d0 <== NOT EXECUTED
vol->mask = FAT_FAT16_MASK;
vol->eoc_val = FAT_FAT16_EOC;
}
else
{
vol->type = FAT_FAT32;
533ae: 1546 000e moveb %d6,%a2@(14) <== NOT EXECUTED
if (vol->type == FAT_FAT32)
{
vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
533b2: 1541 004e moveb %d1,%a2@(78) <== NOT EXECUTED
}
}
if (vol->type == FAT_FAT32)
{
vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
533b6: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
if (vol->mirror)
533ba: 4a01 tstb %d1 <== NOT EXECUTED
533bc: 6700 0174 beqw 53532 <fat_init_volume_info+0x740> <== NOT EXECUTED
vol->afat = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_FAT_NUM;
533c0: 720f moveq #15,%d1 <== NOT EXECUTED
533c2: 102e ff95 moveb %fp@(-107),%d0 <== NOT EXECUTED
533c6: c081 andl %d1,%d0 <== NOT EXECUTED
533c8: 1540 0054 moveb %d0,%a2@(84) <== NOT EXECUTED
else
vol->afat = 0;
vol->info_sec = FAT_GET_BR_FAT32_FS_INFO_SECTOR(boot_rec);
533cc: 4280 clrl %d0 <== NOT EXECUTED
533ce: 102e ff90 moveb %fp@(-112),%d0 <== NOT EXECUTED
533d2: 4281 clrl %d1 <== NOT EXECUTED
533d4: 122e ff91 moveb %fp@(-111),%d1 <== NOT EXECUTED
533d8: e188 lsll #8,%d0 <== NOT EXECUTED
533da: 8081 orl %d1,%d0 <== NOT EXECUTED
533dc: 3540 003c movew %d0,%a2@(60) <== NOT EXECUTED
if( vol->info_sec == 0 )
533e0: 6700 0166 beqw 53548 <fat_init_volume_info+0x756> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
else
{
ret = _fat_block_read(fs_info, vol->info_sec , 0,
FAT_FSI_LEADSIG_SIZE, fs_info_sector);
533e4: 260e movel %fp,%d3 <== NOT EXECUTED
533e6: 0683 ffff ffae addil #-82,%d3 <== NOT EXECUTED
close(vol->fd);
rtems_set_errno_and_return_minus_one( EINVAL );
}
else
{
ret = _fat_block_read(fs_info, vol->info_sec , 0,
533ec: 47f9 0005 29c4 lea 529c4 <_fat_block_read>,%a3 <== NOT EXECUTED
533f2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
533f4: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
533f8: 42a7 clrl %sp@- <== NOT EXECUTED
533fa: 3f00 movew %d0,%sp@- <== NOT EXECUTED
533fc: 4267 clrw %sp@- <== NOT EXECUTED
533fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
53400: 4e93 jsr %a3@ <== NOT EXECUTED
FAT_FSI_LEADSIG_SIZE, fs_info_sector);
if ( ret < 0 )
53402: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
53406: 4a80 tstl %d0 <== NOT EXECUTED
53408: 6d00 0292 bltw 5369c <fat_init_volume_info+0x8aa> <== NOT EXECUTED
{
close(vol->fd);
return -1;
}
if (FAT_GET_FSINFO_LEAD_SIGNATURE(fs_info_sector) !=
5340c: 4281 clrl %d1 <== NOT EXECUTED
5340e: 4282 clrl %d2 <== NOT EXECUTED
53410: 122e ffaf moveb %fp@(-81),%d1 <== NOT EXECUTED
53414: 142e ffb0 moveb %fp@(-80),%d2 <== NOT EXECUTED
53418: 4280 clrl %d0 <== NOT EXECUTED
5341a: 102e ffae moveb %fp@(-82),%d0 <== NOT EXECUTED
5341e: 7818 moveq #24,%d4 <== NOT EXECUTED
53420: 4842 swap %d2 <== NOT EXECUTED
53422: 4242 clrw %d2 <== NOT EXECUTED
53424: e189 lsll #8,%d1 <== NOT EXECUTED
53426: 8282 orl %d2,%d1 <== NOT EXECUTED
53428: 4282 clrl %d2 <== NOT EXECUTED
5342a: 142e ffb1 moveb %fp@(-79),%d2 <== NOT EXECUTED
5342e: 8280 orl %d0,%d1 <== NOT EXECUTED
53430: e9aa lsll %d4,%d2 <== NOT EXECUTED
53432: 8282 orl %d2,%d1 <== NOT EXECUTED
53434: 0c81 4161 5252 cmpil #1096897106,%d1 <== NOT EXECUTED
5343a: 6600 0154 bnew 53590 <fat_init_volume_info+0x79e> <== NOT EXECUTED
close(vol->fd);
rtems_set_errno_and_return_minus_one( EINVAL );
}
else
{
ret = _fat_block_read(fs_info, vol->info_sec , FAT_FSI_INFO,
5343e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
53440: 4878 000c pea c <OPER1> <== NOT EXECUTED
53444: 4280 clrl %d0 <== NOT EXECUTED
53446: 4878 01e4 pea 1e4 <DBL_MANT_DIG+0x1af> <== NOT EXECUTED
5344a: 302a 003c movew %a2@(60),%d0 <== NOT EXECUTED
5344e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
53450: 2f0a movel %a2,%sp@- <== NOT EXECUTED
53452: 4e93 jsr %a3@ <== NOT EXECUTED
FAT_USEFUL_INFO_SIZE, fs_info_sector);
if ( ret < 0 )
53454: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
53458: 4a80 tstl %d0 <== NOT EXECUTED
5345a: 6d00 0258 bltw 536b4 <fat_init_volume_info+0x8c2> <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
5345e: 4281 clrl %d1 <== NOT EXECUTED
53460: 4283 clrl %d3 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
53462: 4280 clrl %d0 <== NOT EXECUTED
53464: 4282 clrl %d2 <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
53466: 122e ffb3 moveb %fp@(-77),%d1 <== NOT EXECUTED
5346a: 162e ffb4 moveb %fp@(-76),%d3 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
5346e: 102e ffb7 moveb %fp@(-73),%d0 <== NOT EXECUTED
53472: 142e ffb8 moveb %fp@(-72),%d2 <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
53476: 4285 clrl %d5 <== NOT EXECUTED
53478: 1a2e ffb2 moveb %fp@(-78),%d5 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
5347c: 4284 clrl %d4 <== NOT EXECUTED
5347e: 182e ffb6 moveb %fp@(-74),%d4 <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
53482: 4843 swap %d3 <== NOT EXECUTED
53484: 4243 clrw %d3 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
53486: 4842 swap %d2 <== NOT EXECUTED
53488: 4242 clrw %d2 <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
5348a: e189 lsll #8,%d1 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
5348c: e188 lsll #8,%d0 <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
5348e: 8283 orl %d3,%d1 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
53490: 8082 orl %d2,%d0 <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
53492: 4283 clrl %d3 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
53494: 4282 clrl %d2 <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
53496: 162e ffb5 moveb %fp@(-75),%d3 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
5349a: 142e ffb9 moveb %fp@(-71),%d2 <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
5349e: 8285 orl %d5,%d1 <== NOT EXECUTED
534a0: 7a18 moveq #24,%d5 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
534a2: 8084 orl %d4,%d0 <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
534a4: ebab lsll %d5,%d3 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
534a6: ebaa lsll %d5,%d2 <== NOT EXECUTED
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
534a8: 8283 orl %d3,%d1 <== NOT EXECUTED
vol->free_cls = vol->free_cls_in_fs_info;
vol->next_cl_in_fs_info =
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
534aa: 8082 orl %d2,%d0 <== NOT EXECUTED
_fat_block_release(fs_info);
close(vol->fd);
return -1;
}
vol->free_cls_in_fs_info =
534ac: 2541 0042 movel %d1,%a2@(66) <== NOT EXECUTED
FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
vol->free_cls = vol->free_cls_in_fs_info;
534b0: 2541 003e movel %d1,%a2@(62) <== NOT EXECUTED
vol->next_cl_in_fs_info =
534b4: 2540 004a movel %d0,%a2@(74) <== NOT EXECUTED
FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
vol->next_cl = vol->next_cl_in_fs_info;
534b8: 2540 0046 movel %d0,%a2@(70) <== NOT EXECUTED
534bc: 6000 fcc4 braw 53182 <fat_init_volume_info+0x390> <== NOT EXECUTED
vol->bytes_per_block_log2 = vol->bpc_log2;
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
534c0: 4280 clrl %d0 <== NOT EXECUTED
}
534c2: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
534c8: 4e5e unlk %fp <== NOT EXECUTED
534ca: 4e75 rts <== NOT EXECUTED
534cc: 2240 moveal %d0,%a1
(vol->bps != 4096))
{
close(vol->fd);
rtems_set_errno_and_return_minus_one( EINVAL );
}
for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
534ce: 4200 clrb %d0
534d0: 1540 0003 moveb %d0,%a2@(3)
534d4: 6000 fae0 braw 52fb6 <fat_init_volume_info+0x1c4>
else
{
vol->rdir_cl = 0;
vol->mirror = 0;
vol->afat = 0;
vol->free_cls = FAT_UNDEFINED_VALUE;
534d8: 76ff moveq #-1,%d3 <== NOT EXECUTED
else
{
if ( vol->data_cls < FAT_FAT16_MAX_CLN)
{
vol->type = FAT_FAT16;
vol->mask = FAT_FAT16_MASK;
534da: 227c 0000 ffff moveal #65535,%a1 <== NOT EXECUTED
vol->eoc_val = FAT_FAT16_EOC;
534e0: 223c 0000 fff8 movel #65528,%d1 <== NOT EXECUTED
}
}
else
{
vol->rdir_cl = 0;
vol->mirror = 0;
534e6: 4204 clrb %d4 <== NOT EXECUTED
}
else
{
if ( vol->data_cls < FAT_FAT16_MAX_CLN)
{
vol->type = FAT_FAT16;
534e8: 7002 moveq #2,%d0 <== NOT EXECUTED
vol->mask = FAT_FAT16_MASK;
534ea: 2549 0010 movel %a1,%a2@(16) <== NOT EXECUTED
}
else
{
if ( vol->data_cls < FAT_FAT16_MAX_CLN)
{
vol->type = FAT_FAT16;
534ee: 1540 000e moveb %d0,%a2@(14) <== NOT EXECUTED
vol->mask = FAT_FAT16_MASK;
vol->eoc_val = FAT_FAT16_EOC;
534f2: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
}
}
}
else
{
vol->rdir_cl = 0;
534f6: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
vol->mirror = 0;
534fa: 1544 004e moveb %d4,%a2@(78) <== NOT EXECUTED
vol->afat = 0;
vol->free_cls = FAT_UNDEFINED_VALUE;
534fe: 2543 003e movel %d3,%a2@(62) <== NOT EXECUTED
}
else
{
vol->rdir_cl = 0;
vol->mirror = 0;
vol->afat = 0;
53502: 1544 0054 moveb %d4,%a2@(84) <== NOT EXECUTED
vol->free_cls = FAT_UNDEFINED_VALUE;
vol->next_cl = FAT_UNDEFINED_VALUE;
53506: 2543 0046 movel %d3,%a2@(70) <== NOT EXECUTED
5350a: 6000 fc76 braw 53182 <fat_init_volume_info+0x390> <== NOT EXECUTED
}
/* check that device is registred as block device and lock it */
rc = rtems_disk_fd_get_disk_device(vol->fd, &vol->dd);
if (rc != 0) {
close(vol->fd);
5350e: 2f2a 0056 movel %a2@(86),%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENXIO);
53512: 7806 moveq #6,%d4 <== NOT EXECUTED
}
/* check that device is registred as block device and lock it */
rc = rtems_disk_fd_get_disk_device(vol->fd, &vol->dd);
if (rc != 0) {
close(vol->fd);
53514: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENXIO);
5351a: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
53520: 588f addql #4,%sp <== NOT EXECUTED
53522: 2040 moveal %d0,%a0 <== NOT EXECUTED
53524: 70ff moveq #-1,%d0 <== NOT EXECUTED
53526: 2084 movel %d4,%a0@ <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
53528: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5352e: 4e5e unlk %fp <== NOT EXECUTED
53530: 4e75 rts <== NOT EXECUTED
vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
if (vol->mirror)
vol->afat = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_FAT_NUM;
else
vol->afat = 0;
53532: 4202 clrb %d2 <== NOT EXECUTED
53534: 1542 0054 moveb %d2,%a2@(84) <== NOT EXECUTED
53538: 6000 fe92 braw 533cc <fat_init_volume_info+0x5da> <== NOT EXECUTED
close(vol->fd);
rtems_set_errno_and_return_minus_one( EINVAL );
}
for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
i >>= 1, vol->sec_mul++);
for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;
5353c: 4201 clrb %d1 <== NOT EXECUTED
5353e: 6000 faa6 braw 52fe6 <fat_init_volume_info+0x1f4> <== NOT EXECUTED
{
close(vol->fd);
rtems_set_errno_and_return_minus_one(EINVAL);
}
for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;
53542: 4283 clrl %d3
53544: 6000 faf0 braw 53036 <fat_init_volume_info+0x244>
vol->afat = 0;
vol->info_sec = FAT_GET_BR_FAT32_FS_INFO_SECTOR(boot_rec);
if( vol->info_sec == 0 )
{
close(vol->fd);
53548: 2f2a 0056 movel %a2@(86),%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
5354c: 7416 moveq #22,%d2 <== NOT EXECUTED
vol->afat = 0;
vol->info_sec = FAT_GET_BR_FAT32_FS_INFO_SECTOR(boot_rec);
if( vol->info_sec == 0 )
{
close(vol->fd);
5354e: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
53554: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5355a: 588f addql #4,%sp <== NOT EXECUTED
5355c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5355e: 70ff moveq #-1,%d0 <== NOT EXECUTED
53560: 2082 movel %d2,%a0@ <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
53562: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
53568: 4e5e unlk %fp <== NOT EXECUTED
5356a: 4e75 rts <== NOT EXECUTED
memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);
sc = rtems_bdbuf_release( block);
if (sc != RTEMS_SUCCESSFUL)
{
close(vol->fd);
5356c: 2f2a 0056 movel %a2@(86),%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EIO );
53570: 7605 moveq #5,%d3 <== NOT EXECUTED
memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);
sc = rtems_bdbuf_release( block);
if (sc != RTEMS_SUCCESSFUL)
{
close(vol->fd);
53572: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EIO );
53578: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5357e: 588f addql #4,%sp <== NOT EXECUTED
53580: 2040 moveal %d0,%a0 <== NOT EXECUTED
53582: 70ff moveq #-1,%d0 <== NOT EXECUTED
53584: 2083 movel %d3,%a0@ <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
53586: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5358c: 4e5e unlk %fp <== NOT EXECUTED
5358e: 4e75 rts <== NOT EXECUTED
* 0 on success, or -1 if error occured and errno set appropriately
*/
int
_fat_block_release(fat_fs_info_t *fs_info)
{
return fat_buf_release(fs_info);
53590: 2f0a movel %a2,%sp@- <== NOT EXECUTED
53592: 4eb9 0005 2738 jsr 52738 <fat_buf_release> <== NOT EXECUTED
if (FAT_GET_FSINFO_LEAD_SIGNATURE(fs_info_sector) !=
FAT_FSINFO_LEAD_SIGNATURE_VALUE)
{
_fat_block_release(fs_info);
close(vol->fd);
53598: 2f2a 0056 movel %a2@(86),%sp@- <== NOT EXECUTED
5359c: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
535a2: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
535a8: 508f addql #8,%sp <== NOT EXECUTED
535aa: 7216 moveq #22,%d1 <== NOT EXECUTED
535ac: 2040 moveal %d0,%a0 <== NOT EXECUTED
535ae: 70ff moveq #-1,%d0 <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
535b0: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
if (FAT_GET_FSINFO_LEAD_SIGNATURE(fs_info_sector) !=
FAT_FSINFO_LEAD_SIGNATURE_VALUE)
{
_fat_block_release(fs_info);
close(vol->fd);
rtems_set_errno_and_return_minus_one( EINVAL );
535b6: 2081 movel %d1,%a0@ <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
535b8: 4e5e unlk %fp <== NOT EXECUTED
535ba: 4e75 rts <== NOT EXECUTED
rtems_bdbuf_buffer *block = NULL;
vol->fd = open(device, O_RDWR);
if (vol->fd < 0)
{
rtems_set_errno_and_return_minus_one(ENXIO);
535bc: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
535c2: 7a06 moveq #6,%d5 <== NOT EXECUTED
535c4: 2040 moveal %d0,%a0 <== NOT EXECUTED
535c6: 70ff moveq #-1,%d0 <== NOT EXECUTED
535c8: 2085 movel %d5,%a0@ <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
535ca: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
535d0: 4e5e unlk %fp <== NOT EXECUTED
535d2: 4e75 rts <== NOT EXECUTED
fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;
fs_info->index = 0;
fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));
if ( fs_info->uino == NULL )
{
close(vol->fd);
535d4: 2f2a 0056 movel %a2@(86),%sp@- <== NOT EXECUTED
free(fs_info->vhash);
535d8: 47f9 0004 4bec lea 44bec <free>,%a3 <== NOT EXECUTED
free(fs_info->rhash);
rtems_set_errno_and_return_minus_one( ENOMEM );
535de: 7a0c moveq #12,%d5 <== NOT EXECUTED
fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;
fs_info->index = 0;
fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));
if ( fs_info->uino == NULL )
{
close(vol->fd);
535e0: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
free(fs_info->vhash);
535e6: 2f2a 0062 movel %a2@(98),%sp@- <== NOT EXECUTED
535ea: 4e93 jsr %a3@ <== NOT EXECUTED
free(fs_info->rhash);
535ec: 2f2a 0066 movel %a2@(102),%sp@- <== NOT EXECUTED
535f0: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
535f2: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
535f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
535fc: 2040 moveal %d0,%a0 <== NOT EXECUTED
535fe: 70ff moveq #-1,%d0 <== NOT EXECUTED
53600: 2085 movel %d5,%a0@ <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
53602: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
53608: 4e5e unlk %fp <== NOT EXECUTED
5360a: 4e75 rts <== NOT EXECUTED
/* set up collection of fat-files fd */
fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
if ( fs_info->vhash == NULL )
{
close(vol->fd);
5360c: 2f2a 0056 movel %a2@(86),%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
53610: 7e0c moveq #12,%d7 <== NOT EXECUTED
/* set up collection of fat-files fd */
fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
if ( fs_info->vhash == NULL )
{
close(vol->fd);
53612: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
53618: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5361e: 588f addql #4,%sp <== NOT EXECUTED
53620: 2040 moveal %d0,%a0 <== NOT EXECUTED
53622: 70ff moveq #-1,%d0 <== NOT EXECUTED
53624: 2087 movel %d7,%a0@ <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
53626: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5362c: 4e5e unlk %fp <== NOT EXECUTED
5362e: 4e75 rts <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
}
fs_info->sec_buf = (uint8_t *)calloc(vol->bps, sizeof(uint8_t));
if (fs_info->sec_buf == NULL)
{
close(vol->fd);
53630: 2f2a 0056 movel %a2@(86),%sp@- <== NOT EXECUTED
free(fs_info->vhash);
53634: 47f9 0004 4bec lea 44bec <free>,%a3 <== NOT EXECUTED
free(fs_info->rhash);
free(fs_info->uino);
rtems_set_errno_and_return_minus_one( ENOMEM );
5363a: 780c moveq #12,%d4 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
}
fs_info->sec_buf = (uint8_t *)calloc(vol->bps, sizeof(uint8_t));
if (fs_info->sec_buf == NULL)
{
close(vol->fd);
5363c: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
free(fs_info->vhash);
53642: 2f2a 0062 movel %a2@(98),%sp@- <== NOT EXECUTED
53646: 4e93 jsr %a3@ <== NOT EXECUTED
free(fs_info->rhash);
53648: 2f2a 0066 movel %a2@(102),%sp@- <== NOT EXECUTED
5364c: 4e93 jsr %a3@ <== NOT EXECUTED
free(fs_info->uino);
5364e: 2f2a 006a movel %a2@(106),%sp@- <== NOT EXECUTED
53652: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
53654: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5365a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5365e: 2040 moveal %d0,%a0 <== NOT EXECUTED
53660: 70ff moveq #-1,%d0 <== NOT EXECUTED
53662: 2084 movel %d4,%a0@ <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
53664: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5366a: 4e5e unlk %fp <== NOT EXECUTED
5366c: 4e75 rts <== NOT EXECUTED
rtems_chain_initialize_empty(fs_info->vhash + i);
fs_info->rhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
if ( fs_info->rhash == NULL )
{
close(vol->fd);
5366e: 2f2a 0056 movel %a2@(86),%sp@- <== NOT EXECUTED
free(fs_info->vhash);
rtems_set_errno_and_return_minus_one( ENOMEM );
53672: 7c0c moveq #12,%d6 <== NOT EXECUTED
rtems_chain_initialize_empty(fs_info->vhash + i);
fs_info->rhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
if ( fs_info->rhash == NULL )
{
close(vol->fd);
53674: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
free(fs_info->vhash);
5367a: 2f2a 0062 movel %a2@(98),%sp@- <== NOT EXECUTED
5367e: 4eb9 0004 4bec jsr 44bec <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
53684: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5368a: 508f addql #8,%sp <== NOT EXECUTED
5368c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5368e: 70ff moveq #-1,%d0 <== NOT EXECUTED
53690: 2086 movel %d6,%a0@ <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
53692: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
53698: 4e5e unlk %fp <== NOT EXECUTED
5369a: 4e75 rts <== NOT EXECUTED
{
ret = _fat_block_read(fs_info, vol->info_sec , 0,
FAT_FSI_LEADSIG_SIZE, fs_info_sector);
if ( ret < 0 )
{
close(vol->fd);
5369c: 2f2a 0056 movel %a2@(86),%sp@- <== NOT EXECUTED
536a0: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
536a6: 588f addql #4,%sp <== NOT EXECUTED
return -1;
536a8: 70ff moveq #-1,%d0 <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
536aa: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
536b0: 4e5e unlk %fp <== NOT EXECUTED
536b2: 4e75 rts <== NOT EXECUTED
* 0 on success, or -1 if error occured and errno set appropriately
*/
int
_fat_block_release(fat_fs_info_t *fs_info)
{
return fat_buf_release(fs_info);
536b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
536b6: 4eb9 0005 2738 jsr 52738 <fat_buf_release> <== NOT EXECUTED
ret = _fat_block_read(fs_info, vol->info_sec , FAT_FSI_INFO,
FAT_USEFUL_INFO_SIZE, fs_info_sector);
if ( ret < 0 )
{
_fat_block_release(fs_info);
close(vol->fd);
536bc: 2f2a 0056 movel %a2@(86),%sp@- <== NOT EXECUTED
536c0: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
536c6: 508f addql #8,%sp <== NOT EXECUTED
return -1;
536c8: 70ff moveq #-1,%d0 <== NOT EXECUTED
vol->sectors_per_block = vol->spc;
}
}
return RC_OK;
}
536ca: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED
536d0: 4e5e unlk %fp <== NOT EXECUTED
00058fe0 <fat_scan_fat_for_free_clusters>:
uint32_t count,
uint32_t *cls_added,
uint32_t *last_cl,
bool zero_fill
)
{
58fe0: 4e56 ffd0 linkw %fp,#-48
58fe4: 122e 001f moveb %fp@(31),%d1
58fe8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
58fec: 246e 0008 moveal %fp@(8),%a2
58ff0: 266e 0014 moveal %fp@(20),%a3
int rc = RC_OK;
uint32_t cl4find = 2;
uint32_t next_cln = 0;
uint32_t save_cln = 0;
uint32_t data_cls_val = fs_info->vol.data_cls + 2;
58ff4: 282a 0034 movel %a2@(52),%d4
uint32_t count,
uint32_t *cls_added,
uint32_t *last_cl,
bool zero_fill
)
{
58ff8: 1d41 fffb moveb %d1,%fp@(-5)
int rc = RC_OK;
uint32_t cl4find = 2;
uint32_t next_cln = 0;
58ffc: 42ae fffc clrl %fp@(-4)
uint32_t save_cln = 0;
uint32_t data_cls_val = fs_info->vol.data_cls + 2;
uint32_t i = 2;
ssize_t bytes_written;
*cls_added = 0;
59000: 4293 clrl %a3@
if (count == 0)
59002: 4aae 0010 tstl %fp@(16)
59006: 6700 0146 beqw 5914e <fat_scan_fat_for_free_clusters+0x16e>
return rc;
if (fs_info->vol.next_cl != FAT_UNDEFINED_VALUE)
5900a: 2e2a 0046 movel %a2@(70),%d7
5900e: 70ff moveq #-1,%d0
59010: b087 cmpl %d7,%d0
59012: 6700 0148 beqw 5915c <fat_scan_fat_for_free_clusters+0x17c>
{
int rc = RC_OK;
uint32_t cl4find = 2;
uint32_t next_cln = 0;
uint32_t save_cln = 0;
uint32_t data_cls_val = fs_info->vol.data_cls + 2;
59016: 5484 addql #2,%d4
/*
* fs_info->vol.data_cls is exactly the count of data clusters
* starting at cluster 2, so the maximum valid cluster number is
* (fs_info->vol.data_cls + 1)
*/
while (i < data_cls_val)
59018: 7202 moveq #2,%d1
5901a: b284 cmpl %d4,%d1
5901c: 6400 01c2 bccw 591e0 <fat_scan_fat_for_free_clusters+0x200>
59020: 2a0e movel %fp,%d5
59022: 7402 moveq #2,%d2
59024: 4286 clrl %d6
59026: 5985 subql #4,%d5
59028: 49f9 0005 8ac0 lea 58ac0 <fat_get_fat_cluster>,%a4
{
rc = fat_get_fat_cluster(fs_info, cl4find, &next_cln);
5902e: 2f05 movel %d5,%sp@-
59030: 2f07 movel %d7,%sp@-
59032: 2f0a movel %a2,%sp@-
59034: 4e94 jsr %a4@
if ( rc != RC_OK )
59036: 4fef 000c lea %sp@(12),%sp
* starting at cluster 2, so the maximum valid cluster number is
* (fs_info->vol.data_cls + 1)
*/
while (i < data_cls_val)
{
rc = fat_get_fat_cluster(fs_info, cl4find, &next_cln);
5903a: 2600 movel %d0,%d3
if ( rc != RC_OK )
5903c: 6600 0124 bnew 59162 <fat_scan_fat_for_free_clusters+0x182>
if (*cls_added != 0)
fat_free_fat_clusters_chain(fs_info, (*chain));
return rc;
}
if (next_cln == FAT_GENFAT_FREE)
59040: 4aae fffc tstl %fp@(-4)
59044: 663c bnes 59082 <fat_scan_fat_for_free_clusters+0xa2>
/*
* We are enforced to process allocation of the first free cluster
* by separate 'if' statement because otherwise undo function
* wouldn't work properly
*/
if (*cls_added == 0)
59046: 4a93 tstl %a3@
59048: 6600 00ce bnew 59118 <fat_scan_fat_for_free_clusters+0x138>
{
*chain = cl4find;
rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
5904c: 4878 ffff pea ffffffff <LESS>
59050: 4bf9 0005 8c92 lea 58c92 <fat_set_fat_cluster>,%a5
* by separate 'if' statement because otherwise undo function
* wouldn't work properly
*/
if (*cls_added == 0)
{
*chain = cl4find;
59056: 206e 000c moveal %fp@(12),%a0
rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
5905a: 2f07 movel %d7,%sp@-
* by separate 'if' statement because otherwise undo function
* wouldn't work properly
*/
if (*cls_added == 0)
{
*chain = cl4find;
5905c: 2087 movel %d7,%a0@
rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
5905e: 2f0a movel %a2,%sp@-
59060: 4e95 jsr %a5@
if ( rc != RC_OK )
59062: 4fef 000c lea %sp@(12),%sp
59066: 4a80 tstl %d0
59068: 6600 014a bnew 591b4 <fat_scan_fat_for_free_clusters+0x1d4>
rc = fat_set_fat_cluster(fs_info, save_cln, cl4find);
if ( rc != RC_OK )
goto cleanup;
}
if (zero_fill)
5906c: 4a2e fffb tstb %fp@(-5)
59070: 6650 bnes 590c2 <fat_scan_fat_for_free_clusters+0xe2><== NEVER TAKEN
goto cleanup;
}
}
save_cln = cl4find;
(*cls_added)++;
59072: 2013 movel %a3@,%d0
59074: 5280 addql #1,%d0
59076: 2680 movel %d0,%a3@
/* have we satisfied request ? */
if (*cls_added == count)
59078: b0ae 0010 cmpl %fp@(16),%d0
5907c: 6700 0106 beqw 59184 <fat_scan_fat_for_free_clusters+0x1a4>
59080: 2c07 movel %d7,%d6 <== NOT EXECUTED
*last_cl = save_cln;
fat_buf_release(fs_info);
return rc;
}
}
i++;
59082: 5282 addql #1,%d2
cl4find++;
59084: 5287 addql #1,%d7
if (cl4find >= data_cls_val)
59086: be84 cmpl %d4,%d7
59088: 6502 bcss 5908c <fat_scan_fat_for_free_clusters+0xac><== ALWAYS TAKEN
cl4find = 2;
5908a: 7e02 moveq #2,%d7 <== NOT EXECUTED
/*
* fs_info->vol.data_cls is exactly the count of data clusters
* starting at cluster 2, so the maximum valid cluster number is
* (fs_info->vol.data_cls + 1)
*/
while (i < data_cls_val)
5908c: b484 cmpl %d4,%d2
5908e: 669e bnes 5902e <fat_scan_fat_for_free_clusters+0x4e><== ALWAYS TAKEN
if (cl4find >= data_cls_val)
cl4find = 2;
}
fs_info->vol.next_cl = save_cln;
if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
59090: 202a 003e movel %a2@(62),%d0 <== NOT EXECUTED
59094: 72ff moveq #-1,%d1 <== NOT EXECUTED
cl4find++;
if (cl4find >= data_cls_val)
cl4find = 2;
}
fs_info->vol.next_cl = save_cln;
59096: 2546 0046 movel %d6,%a2@(70) <== NOT EXECUTED
if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
5909a: b280 cmpl %d0,%d1 <== NOT EXECUTED
5909c: 6706 beqs 590a4 <fat_scan_fat_for_free_clusters+0xc4><== NOT EXECUTED
fs_info->vol.free_cls -= (*cls_added);
5909e: 9093 subl %a3@,%d0 <== NOT EXECUTED
590a0: 2540 003e movel %d0,%a2@(62) <== NOT EXECUTED
*last_cl = save_cln;
590a4: 206e 0018 moveal %fp@(24),%a0 <== NOT EXECUTED
fat_buf_release(fs_info);
return RC_OK;
590a8: 4283 clrl %d3 <== NOT EXECUTED
fs_info->vol.next_cl = save_cln;
if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
fs_info->vol.free_cls -= (*cls_added);
*last_cl = save_cln;
590aa: 2086 movel %d6,%a0@ <== NOT EXECUTED
fat_buf_release(fs_info);
590ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
590ae: 4eb9 0005 2738 jsr 52738 <fat_buf_release> <== NOT EXECUTED
590b4: 588f addql #4,%sp <== NOT EXECUTED
fat_free_fat_clusters_chain(fs_info, (*chain));
/* trying to save last allocated cluster for future use */
fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);
fat_buf_release(fs_info);
return rc;
}
590b6: 2003 movel %d3,%d0 <== NOT EXECUTED
590b8: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
590be: 4e5e unlk %fp <== NOT EXECUTED
590c0: 4e75 rts <== NOT EXECUTED
goto cleanup;
}
if (zero_fill)
{
bytes_written = fat_cluster_set (fs_info, cl4find, 0, fs_info->vol.bpc, 0);
590c2: 4280 clrl %d0 <== NOT EXECUTED
if (fs_info->vol.bpc != bytes_written)
590c4: 4286 clrl %d6 <== NOT EXECUTED
goto cleanup;
}
if (zero_fill)
{
bytes_written = fat_cluster_set (fs_info, cl4find, 0, fs_info->vol.bpc, 0);
590c6: 42a7 clrl %sp@- <== NOT EXECUTED
590c8: 302a 0006 movew %a2@(6),%d0 <== NOT EXECUTED
590cc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
590ce: 42a7 clrl %sp@- <== NOT EXECUTED
590d0: 2f07 movel %d7,%sp@- <== NOT EXECUTED
590d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
590d4: 4eb9 0005 2b1a jsr 52b1a <fat_cluster_set> <== NOT EXECUTED
if (fs_info->vol.bpc != bytes_written)
590da: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
590de: 3c2a 0006 movew %a2@(6),%d6 <== NOT EXECUTED
590e2: b086 cmpl %d6,%d0 <== NOT EXECUTED
590e4: 678c beqs 59072 <fat_scan_fat_for_free_clusters+0x92><== NOT EXECUTED
{
rc = -1;
590e6: 70ff moveq #-1,%d0 <== NOT EXECUTED
return RC_OK;
cleanup:
/* cleanup activity */
fat_free_fat_clusters_chain(fs_info, (*chain));
590e8: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
/* trying to save last allocated cluster for future use */
fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);
fat_buf_release(fs_info);
return rc;
590ec: 2600 movel %d0,%d3 <== NOT EXECUTED
return RC_OK;
cleanup:
/* cleanup activity */
fat_free_fat_clusters_chain(fs_info, (*chain));
590ee: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
590f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
590f2: 4eb9 0005 8f0e jsr 58f0e <fat_free_fat_clusters_chain> <== NOT EXECUTED
/* trying to save last allocated cluster for future use */
fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);
590f8: 42a7 clrl %sp@- <== NOT EXECUTED
590fa: 2f07 movel %d7,%sp@- <== NOT EXECUTED
590fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
590fe: 4e95 jsr %a5@ <== NOT EXECUTED
fat_buf_release(fs_info);
59100: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59102: 4eb9 0005 2738 jsr 52738 <fat_buf_release> <== NOT EXECUTED
59108: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
return rc;
}
5910c: 2003 movel %d3,%d0 <== NOT EXECUTED
5910e: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59114: 4e5e unlk %fp <== NOT EXECUTED
59116: 4e75 rts <== NOT EXECUTED
}
}
else
{
/* set EOC value to new allocated cluster */
rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
59118: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
5911c: 4bf9 0005 8c92 lea 58c92 <fat_set_fat_cluster>,%a5 <== NOT EXECUTED
59122: 2f07 movel %d7,%sp@- <== NOT EXECUTED
59124: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59126: 4e95 jsr %a5@ <== NOT EXECUTED
if ( rc != RC_OK )
59128: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5912c: 4a80 tstl %d0 <== NOT EXECUTED
5912e: 6600 0092 bnew 591c2 <fat_scan_fat_for_free_clusters+0x1e2><== NOT EXECUTED
/* cleanup activity */
fat_free_fat_clusters_chain(fs_info, (*chain));
return rc;
}
rc = fat_set_fat_cluster(fs_info, save_cln, cl4find);
59132: 2f07 movel %d7,%sp@- <== NOT EXECUTED
59134: 2f06 movel %d6,%sp@- <== NOT EXECUTED
59136: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59138: 4e95 jsr %a5@ <== NOT EXECUTED
if ( rc != RC_OK )
5913a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5913e: 4a80 tstl %d0 <== NOT EXECUTED
59140: 66a6 bnes 590e8 <fat_scan_fat_for_free_clusters+0x108><== NOT EXECUTED
goto cleanup;
}
if (zero_fill)
59142: 4a2e fffb tstb %fp@(-5) <== NOT EXECUTED
59146: 6700 ff2a beqw 59072 <fat_scan_fat_for_free_clusters+0x92><== NOT EXECUTED
5914a: 6000 ff76 braw 590c2 <fat_scan_fat_for_free_clusters+0xe2><== NOT EXECUTED
ssize_t bytes_written;
*cls_added = 0;
if (count == 0)
return rc;
5914e: 4283 clrl %d3 <== NOT EXECUTED
fat_free_fat_clusters_chain(fs_info, (*chain));
/* trying to save last allocated cluster for future use */
fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);
fat_buf_release(fs_info);
return rc;
}
59150: 2003 movel %d3,%d0 <== NOT EXECUTED
59152: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59158: 4e5e unlk %fp <== NOT EXECUTED
5915a: 4e75 rts <== NOT EXECUTED
uint32_t *last_cl,
bool zero_fill
)
{
int rc = RC_OK;
uint32_t cl4find = 2;
5915c: 7e02 moveq #2,%d7
5915e: 6000 feb6 braw 59016 <fat_scan_fat_for_free_clusters+0x36>
while (i < data_cls_val)
{
rc = fat_get_fat_cluster(fs_info, cl4find, &next_cln);
if ( rc != RC_OK )
{
if (*cls_added != 0)
59162: 4a93 tstl %a3@ <== NOT EXECUTED
59164: 6700 ff50 beqw 590b6 <fat_scan_fat_for_free_clusters+0xd6><== NOT EXECUTED
fat_free_fat_clusters_chain(fs_info, (*chain));
59168: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5916c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
5916e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59170: 4eb9 0005 8f0e jsr 58f0e <fat_free_fat_clusters_chain> <== NOT EXECUTED
59176: 508f addql #8,%sp <== NOT EXECUTED
fat_free_fat_clusters_chain(fs_info, (*chain));
/* trying to save last allocated cluster for future use */
fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);
fat_buf_release(fs_info);
return rc;
}
59178: 2003 movel %d3,%d0 <== NOT EXECUTED
5917a: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59180: 4e5e unlk %fp <== NOT EXECUTED
59182: 4e75 rts <== NOT EXECUTED
/* have we satisfied request ? */
if (*cls_added == count)
{
fs_info->vol.next_cl = save_cln;
if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
59184: 202a 003e movel %a2@(62),%d0
59188: 72ff moveq #-1,%d1
(*cls_added)++;
/* have we satisfied request ? */
if (*cls_added == count)
{
fs_info->vol.next_cl = save_cln;
5918a: 2547 0046 movel %d7,%a2@(70)
if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
5918e: b280 cmpl %d0,%d1
59190: 6706 beqs 59198 <fat_scan_fat_for_free_clusters+0x1b8><== ALWAYS TAKEN
fs_info->vol.free_cls -= (*cls_added);
59192: 9093 subl %a3@,%d0 <== NOT EXECUTED
59194: 2540 003e movel %d0,%a2@(62) <== NOT EXECUTED
*last_cl = save_cln;
59198: 206e 0018 moveal %fp@(24),%a0
5919c: 2087 movel %d7,%a0@
fat_buf_release(fs_info);
5919e: 2f0a movel %a2,%sp@-
591a0: 4eb9 0005 2738 jsr 52738 <fat_buf_release>
591a6: 588f addql #4,%sp
fat_free_fat_clusters_chain(fs_info, (*chain));
/* trying to save last allocated cluster for future use */
fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);
fat_buf_release(fs_info);
return rc;
}
591a8: 2003 movel %d3,%d0
591aa: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
591b0: 4e5e unlk %fp
591b2: 4e75 rts
* wouldn't work properly
*/
if (*cls_added == 0)
{
*chain = cl4find;
rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
591b4: 2600 movel %d0,%d3 <== NOT EXECUTED
fat_free_fat_clusters_chain(fs_info, (*chain));
/* trying to save last allocated cluster for future use */
fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);
fat_buf_release(fs_info);
return rc;
}
591b6: 2003 movel %d3,%d0 <== NOT EXECUTED
591b8: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
591be: 4e5e unlk %fp <== NOT EXECUTED
591c0: 4e75 rts <== NOT EXECUTED
/* set EOC value to new allocated cluster */
rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
if ( rc != RC_OK )
{
/* cleanup activity */
fat_free_fat_clusters_chain(fs_info, (*chain));
591c2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
}
}
else
{
/* set EOC value to new allocated cluster */
rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
591c6: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( rc != RC_OK )
{
/* cleanup activity */
fat_free_fat_clusters_chain(fs_info, (*chain));
591c8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
591ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
591cc: 4eb9 0005 8f0e jsr 58f0e <fat_free_fat_clusters_chain> <== NOT EXECUTED
591d2: 508f addql #8,%sp <== NOT EXECUTED
fat_free_fat_clusters_chain(fs_info, (*chain));
/* trying to save last allocated cluster for future use */
fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);
fat_buf_release(fs_info);
return rc;
}
591d4: 2003 movel %d3,%d0 <== NOT EXECUTED
591d6: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
591dc: 4e5e unlk %fp <== NOT EXECUTED
591de: 4e75 rts <== NOT EXECUTED
/*
* fs_info->vol.data_cls is exactly the count of data clusters
* starting at cluster 2, so the maximum valid cluster number is
* (fs_info->vol.data_cls + 1)
*/
while (i < data_cls_val)
591e0: 4286 clrl %d6 <== NOT EXECUTED
591e2: 6000 feac braw 59090 <fat_scan_fat_for_free_clusters+0xb0><== NOT EXECUTED
...
00052a5a <fat_sector_write>:
fat_fs_info_t *fs_info,
uint32_t start,
uint32_t offset,
uint32_t count,
const void *buff)
{
52a5a: 4e56 ffd4 linkw %fp,#-44
52a5e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
52a62: 246e 0008 moveal %fp@(8),%a2
52a66: 262e 0014 movel %fp@(20),%d3
52a6a: 286e 0018 moveal %fp@(24),%a4
uint32_t sec_num = start;
uint32_t ofs = offset;
uint8_t *sec_buf;
uint32_t c = 0;
while(count > 0)
52a6e: 6700 009c beqw 52b0c <fat_sector_write+0xb2>
52a72: 2e0e movel %fp,%d7
52a74: 4284 clrl %d4
52a76: 5987 subql #4,%d7
52a78: 47f9 0005 2908 lea 52908 <fat_buf_access>,%a3
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
if (rc != RC_OK)
return -1;
memcpy((sec_buf + ofs), (buff + cmpltd), c);
52a7e: 4bf9 0005 b188 lea 5b188 <memcpy>,%a5
uint32_t sec_num = start;
uint32_t ofs = offset;
uint8_t *sec_buf;
uint32_t c = 0;
while(count > 0)
52a84: 2c2e 0010 movel %fp@(16),%d6
52a88: 2a2e 000c movel %fp@(12),%d5
{
c = MIN(count, (fs_info->vol.bps - ofs));
52a8c: 4282 clrl %d2
52a8e: 3412 movew %a2@,%d2
52a90: 9486 subl %d6,%d2
52a92: b682 cmpl %d2,%d3
52a94: 6402 bccs 52a98 <fat_sector_write+0x3e> <== NEVER TAKEN
52a96: 2403 movel %d3,%d2
if (c == fs_info->vol.bytes_per_block)
52a98: 4280 clrl %d0
52a9a: 302a 000a movew %a2@(10),%d0
52a9e: b480 cmpl %d0,%d2
52aa0: 6744 beqs 52ae6 <fat_sector_write+0x8c> <== NEVER TAKEN
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
52aa2: 2f07 movel %d7,%sp@-
52aa4: 4878 0001 pea 1 <ADD>
memcpy((sec_buf + ofs), (buff + cmpltd), c);
fat_buf_mark_modified(fs_info);
count -= c;
52aa8: 9682 subl %d2,%d3
c = MIN(count, (fs_info->vol.bps - ofs));
if (c == fs_info->vol.bytes_per_block)
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
52aaa: 2f05 movel %d5,%sp@-
fat_buf_mark_modified(fs_info);
count -= c;
cmpltd +=c;
sec_num++;
52aac: 5285 addql #1,%d5
c = MIN(count, (fs_info->vol.bps - ofs));
if (c == fs_info->vol.bytes_per_block)
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
52aae: 2f0a movel %a2,%sp@-
52ab0: 4e93 jsr %a3@
52ab2: 4fef 0010 lea %sp@(16),%sp
if (rc != RC_OK)
52ab6: 4a80 tstl %d0
52ab8: 6644 bnes 52afe <fat_sector_write+0xa4> <== NEVER TAKEN
return -1;
memcpy((sec_buf + ofs), (buff + cmpltd), c);
52aba: 2f02 movel %d2,%sp@-
52abc: 4874 4800 pea %a4@(00000000,%d4:l)
52ac0: dcae fffc addl %fp@(-4),%d6
fat_buf_mark_modified(fs_info);
count -= c;
cmpltd +=c;
52ac4: d882 addl %d2,%d4
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
if (rc != RC_OK)
return -1;
memcpy((sec_buf + ofs), (buff + cmpltd), c);
52ac6: 2f06 movel %d6,%sp@-
fat_buf_mark_modified(fs_info);
count -= c;
cmpltd +=c;
sec_num++;
ofs = 0;
52ac8: 4286 clrl %d6
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
if (rc != RC_OK)
return -1;
memcpy((sec_buf + ofs), (buff + cmpltd), c);
52aca: 4e95 jsr %a5@
uint32_t sec_num = start;
uint32_t ofs = offset;
uint8_t *sec_buf;
uint32_t c = 0;
while(count > 0)
52acc: 4fef 000c lea %sp@(12),%sp
}
static inline void
fat_buf_mark_modified(fat_fs_info_t *fs_info)
{
fs_info->c.modified = true;
52ad0: 7001 moveq #1,%d0
52ad2: 1540 007e moveb %d0,%a2@(126)
52ad6: 4a83 tstl %d3
52ad8: 66b2 bnes 52a8c <fat_sector_write+0x32> <== NEVER TAKEN
cmpltd +=c;
sec_num++;
ofs = 0;
}
return cmpltd;
}
52ada: 2004 movel %d4,%d0
52adc: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
52ae2: 4e5e unlk %fp
52ae4: 4e75 rts
while(count > 0)
{
c = MIN(count, (fs_info->vol.bps - ofs));
if (c == fs_info->vol.bytes_per_block)
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
52ae6: 2f07 movel %d7,%sp@- <== NOT EXECUTED
52ae8: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
memcpy((sec_buf + ofs), (buff + cmpltd), c);
fat_buf_mark_modified(fs_info);
count -= c;
52aec: 9682 subl %d2,%d3 <== NOT EXECUTED
while(count > 0)
{
c = MIN(count, (fs_info->vol.bps - ofs));
if (c == fs_info->vol.bytes_per_block)
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
52aee: 2f05 movel %d5,%sp@- <== NOT EXECUTED
fat_buf_mark_modified(fs_info);
count -= c;
cmpltd +=c;
sec_num++;
52af0: 5285 addql #1,%d5 <== NOT EXECUTED
while(count > 0)
{
c = MIN(count, (fs_info->vol.bps - ofs));
if (c == fs_info->vol.bytes_per_block)
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
52af2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52af4: 4e93 jsr %a3@ <== NOT EXECUTED
52af6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
else
rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
if (rc != RC_OK)
52afa: 4a80 tstl %d0 <== NOT EXECUTED
52afc: 67bc beqs 52aba <fat_sector_write+0x60> <== NOT EXECUTED
return -1;
52afe: 78ff moveq #-1,%d4 <== NOT EXECUTED
cmpltd +=c;
sec_num++;
ofs = 0;
}
return cmpltd;
}
52b00: 2004 movel %d4,%d0 <== NOT EXECUTED
52b02: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
52b08: 4e5e unlk %fp <== NOT EXECUTED
52b0a: 4e75 rts <== NOT EXECUTED
uint32_t offset,
uint32_t count,
const void *buff)
{
int rc = RC_OK;
ssize_t cmpltd = 0;
52b0c: 4284 clrl %d4 <== NOT EXECUTED
cmpltd +=c;
sec_num++;
ofs = 0;
}
return cmpltd;
}
52b0e: 2004 movel %d4,%d0 <== NOT EXECUTED
52b10: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
52b16: 4e5e unlk %fp <== NOT EXECUTED
00058c92 <fat_set_fat_cluster>:
uint16_t fat16_clv = 0;
uint32_t fat32_clv = 0;
uint8_t *sec_buf = NULL;
/* sanity check */
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
58c92: 7001 moveq #1,%d0
fat_set_fat_cluster(
fat_fs_info_t *fs_info,
uint32_t cln,
uint32_t in_val
)
{
58c94: 4e56 ffe4 linkw %fp,#-28
58c98: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
58c9c: 246e 0008 moveal %fp@(8),%a2
58ca0: 242e 000c movel %fp@(12),%d2
int rc = RC_OK;
uint32_t sec = 0;
uint32_t ofs = 0;
uint16_t fat16_clv = 0;
uint32_t fat32_clv = 0;
uint8_t *sec_buf = NULL;
58ca4: 42ae fffc clrl %fp@(-4)
/* sanity check */
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
58ca8: b082 cmpl %d2,%d0
58caa: 6476 bccs 58d22 <fat_set_fat_cluster+0x90> <== NEVER TAKEN
58cac: 202a 0034 movel %a2@(52),%d0
58cb0: 5280 addql #1,%d0
58cb2: b082 cmpl %d2,%d0
58cb4: 656c bcss 58d22 <fat_set_fat_cluster+0x90> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one(EIO);
sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
58cb6: 102a 000e moveb %a2@(14),%d0
58cba: 0800 0000 btst #0,%d0
58cbe: 667a bnes 58d3a <fat_set_fat_cluster+0xa8>
58cc0: 7202 moveq #2,%d1 <== NOT EXECUTED
58cc2: 2802 movel %d2,%d4 <== NOT EXECUTED
58cc4: c081 andl %d1,%d0 <== NOT EXECUTED
58cc6: 4a00 tstb %d0 <== NOT EXECUTED
58cc8: 6778 beqs 58d42 <fat_set_fat_cluster+0xb0> <== NOT EXECUTED
58cca: d884 addl %d4,%d4 <== NOT EXECUTED
58ccc: 4280 clrl %d0
58cce: 102a 0002 moveb %a2@(2),%d0
58cd2: 2604 movel %d4,%d3
58cd4: e0ab lsrl %d0,%d3
58cd6: d6aa 0050 addl %a2@(80),%d3
fs_info->vol.afat_loc;
ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
58cda: 47f9 0005 2908 lea 52908 <fat_buf_access>,%a3
58ce0: 486e fffc pea %fp@(-4)
58ce4: 4878 0001 pea 1 <ADD>
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
rtems_set_errno_and_return_minus_one(EIO);
sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
fs_info->vol.afat_loc;
ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
58ce8: 3a12 movew %a2@,%d5
rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
58cea: 2f03 movel %d3,%sp@-
58cec: 2f0a movel %a2,%sp@-
58cee: 4e93 jsr %a3@
if (rc != RC_OK)
58cf0: 4fef 0010 lea %sp@(16),%sp
58cf4: 4a80 tstl %d0
58cf6: 6638 bnes 58d30 <fat_set_fat_cluster+0x9e> <== NEVER TAKEN
return rc;
switch ( fs_info->vol.type )
58cf8: 4281 clrl %d1
58cfa: 122a 000e moveb %a2@(14),%d1
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
rtems_set_errno_and_return_minus_one(EIO);
sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
fs_info->vol.afat_loc;
ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
58cfe: 0285 0000 ffff andil #65535,%d5
58d04: 5385 subql #1,%d5
58d06: c885 andl %d5,%d4
rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
if (rc != RC_OK)
return rc;
switch ( fs_info->vol.type )
58d08: 7a02 moveq #2,%d5
58d0a: ba81 cmpl %d1,%d5
58d0c: 6700 00ec beqw 58dfa <fat_set_fat_cluster+0x168>
58d10: 1a3c 0004 moveb #4,%d5
58d14: ba81 cmpl %d1,%d5
58d16: 6700 0092 beqw 58daa <fat_set_fat_cluster+0x118>
58d1a: 1a3c 0001 moveb #1,%d5
58d1e: ba81 cmpl %d1,%d5
58d20: 6724 beqs 58d46 <fat_set_fat_cluster+0xb4> <== ALWAYS TAKEN
fat_buf_mark_modified(fs_info);
break;
default:
rtems_set_errno_and_return_minus_one(EIO);
58d22: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
58d28: 7405 moveq #5,%d2 <== NOT EXECUTED
58d2a: 2040 moveal %d0,%a0 <== NOT EXECUTED
58d2c: 70ff moveq #-1,%d0 <== NOT EXECUTED
58d2e: 2082 movel %d2,%a0@ <== NOT EXECUTED
break;
}
return RC_OK;
}
58d30: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED
58d36: 4e5e unlk %fp <== NOT EXECUTED
58d38: 4e75 rts <== NOT EXECUTED
/* sanity check */
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
rtems_set_errno_and_return_minus_one(EIO);
sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
58d3a: 2802 movel %d2,%d4
58d3c: e28c lsrl #1,%d4
58d3e: d882 addl %d2,%d4
58d40: 608a bras 58ccc <fat_set_fat_cluster+0x3a>
58d42: e58c lsll #2,%d4 <== NOT EXECUTED
58d44: 6086 bras 58ccc <fat_set_fat_cluster+0x3a> <== NOT EXECUTED
{
case FAT_FAT12:
if ( FAT_CLUSTER_IS_ODD(cln) )
{
fat16_clv = ((uint16_t )in_val) << FAT_FAT12_SHIFT;
*(sec_buf + ofs) &= 0x0F;
58d46: 206e fffc moveal %fp@(-4),%a0
return rc;
switch ( fs_info->vol.type )
{
case FAT_FAT12:
if ( FAT_CLUSTER_IS_ODD(cln) )
58d4a: 0802 0000 btst #0,%d2
58d4e: 6700 00d4 beqw 58e24 <fat_set_fat_cluster+0x192>
{
fat16_clv = ((uint16_t )in_val) << FAT_FAT12_SHIFT;
*(sec_buf + ofs) &= 0x0F;
58d52: d1c4 addal %d4,%a0
58d54: 1a3c 000f moveb #15,%d5
58d58: 1210 moveb %a0@,%d1
switch ( fs_info->vol.type )
{
case FAT_FAT12:
if ( FAT_CLUSTER_IS_ODD(cln) )
{
fat16_clv = ((uint16_t )in_val) << FAT_FAT12_SHIFT;
58d5a: 242e 0010 movel %fp@(16),%d2
*(sec_buf + ofs) &= 0x0F;
58d5e: c285 andl %d5,%d1
switch ( fs_info->vol.type )
{
case FAT_FAT12:
if ( FAT_CLUSTER_IS_ODD(cln) )
{
fat16_clv = ((uint16_t )in_val) << FAT_FAT12_SHIFT;
58d60: e98a lsll #4,%d2
*(sec_buf + ofs) &= 0x0F;
58d62: 1081 moveb %d1,%a0@
*(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00F0);
58d64: 206e fffc moveal %fp@(-4),%a0
58d68: d1c4 addal %d4,%a0
58d6a: 1210 moveb %a0@,%d1
58d6c: 8282 orl %d2,%d1
58d6e: 1081 moveb %d1,%a0@
}
static inline void
fat_buf_mark_modified(fat_fs_info_t *fs_info)
{
fs_info->c.modified = true;
58d70: 7201 moveq #1,%d1
58d72: 1541 007e moveb %d1,%a2@(126)
fat_buf_mark_modified(fs_info);
if ( ofs == (fs_info->vol.bps - 1) )
58d76: 4281 clrl %d1
58d78: 3212 movew %a2@,%d1
58d7a: 5381 subql #1,%d1
58d7c: b881 cmpl %d1,%d4
58d7e: 6700 0100 beqw 58e80 <fat_set_fat_cluster+0x1ee>
fat_buf_mark_modified(fs_info);
}
else
{
*(sec_buf + ofs + 1) &= 0x00;
58d82: 206e fffc moveal %fp@(-4),%a0
58d86: 5284 addql #1,%d4
*(sec_buf + ofs + 1) |= (uint8_t )((fat16_clv & 0xFF00)>>8);
58d88: 4281 clrl %d1
fat_buf_mark_modified(fs_info);
}
else
{
*(sec_buf + ofs + 1) &= 0x00;
58d8a: 4203 clrb %d3
*(sec_buf + ofs + 1) |= (uint8_t )((fat16_clv & 0xFF00)>>8);
58d8c: 3202 movew %d2,%d1
fat_buf_mark_modified(fs_info);
}
else
{
*(sec_buf + ofs + 1) &= 0x00;
58d8e: 1183 4800 moveb %d3,%a0@(00000000,%d4:l)
*(sec_buf + ofs + 1) |= (uint8_t )((fat16_clv & 0xFF00)>>8);
58d92: e089 lsrl #8,%d1
58d94: 206e fffc moveal %fp@(-4),%a0
58d98: d1c4 addal %d4,%a0
58d9a: 1a10 moveb %a0@,%d5
58d9c: 8285 orl %d5,%d1
58d9e: 1081 moveb %d1,%a0@
break;
}
return RC_OK;
}
58da0: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3
58da6: 4e5e unlk %fp
58da8: 4e75 rts
(uint16_t )(CT_LE_W(in_val));
fat_buf_mark_modified(fs_info);
break;
case FAT_FAT32:
fat32_clv = CT_LE_L((in_val & FAT_FAT32_MASK));
58daa: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
58dae: 7418 moveq #24,%d2 <== NOT EXECUTED
58db0: 0283 0fff ffff andil #268435455,%d3 <== NOT EXECUTED
58db6: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
58dba: 2a03 movel %d3,%d5 <== NOT EXECUTED
58dbc: e4ad lsrl %d2,%d5 <== NOT EXECUTED
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
58dbe: e5a9 lsll %d2,%d1 <== NOT EXECUTED
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
58dc0: 2403 movel %d3,%d2 <== NOT EXECUTED
58dc2: e08a lsrl #8,%d2 <== NOT EXECUTED
byte2 = (value >> 8) & 0xff;
58dc4: e18b lsll #8,%d3 <== NOT EXECUTED
*((uint32_t *)(sec_buf + ofs)) &= CT_LE_L(0xF0000000);
58dc6: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
58dca: d1c4 addal %d4,%a0 <== NOT EXECUTED
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
58dcc: 8285 orl %d5,%d1 <== NOT EXECUTED
58dce: 0283 00ff 0000 andil #16711680,%d3 <== NOT EXECUTED
58dd4: 2810 movel %a0@,%d4 <== NOT EXECUTED
58dd6: 0282 0000 ff00 andil #65280,%d2 <== NOT EXECUTED
58ddc: 8283 orl %d3,%d1 <== NOT EXECUTED
58dde: 0284 0000 00f0 andil #240,%d4 <== NOT EXECUTED
58de4: 7601 moveq #1,%d3 <== NOT EXECUTED
58de6: 8282 orl %d2,%d1 <== NOT EXECUTED
*((uint32_t *)(sec_buf + ofs)) |= fat32_clv;
58de8: 8284 orl %d4,%d1 <== NOT EXECUTED
58dea: 2081 movel %d1,%a0@ <== NOT EXECUTED
58dec: 1543 007e moveb %d3,%a2@(126) <== NOT EXECUTED
break;
}
return RC_OK;
}
58df0: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED
58df6: 4e5e unlk %fp <== NOT EXECUTED
58df8: 4e75 rts <== NOT EXECUTED
58dfa: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
58dfe: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
}
}
break;
case FAT_FAT16:
*((uint16_t *)(sec_buf + ofs)) =
58e04: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
static inline uint16_t m68k_swap_u16(
uint16_t value
)
{
return (((value & 0xff) << 8) | ((value >> 8) & 0xff));
58e08: 2401 movel %d1,%d2 <== NOT EXECUTED
58e0a: e089 lsrl #8,%d1 <== NOT EXECUTED
58e0c: e18a lsll #8,%d2 <== NOT EXECUTED
58e0e: 8282 orl %d2,%d1 <== NOT EXECUTED
58e10: 3181 4800 movew %d1,%a0@(00000000,%d4:l) <== NOT EXECUTED
58e14: 7201 moveq #1,%d1 <== NOT EXECUTED
58e16: 1541 007e moveb %d1,%a2@(126) <== NOT EXECUTED
break;
}
return RC_OK;
}
58e1a: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED
58e20: 4e5e unlk %fp <== NOT EXECUTED
58e22: 4e75 rts <== NOT EXECUTED
*(sec_buf + ofs + 1) |= (uint8_t )((fat16_clv & 0xFF00)>>8);
}
}
else
{
fat16_clv = ((uint16_t )in_val) & FAT_FAT12_MASK;
58e24: 242e 0010 movel %fp@(16),%d2
*(sec_buf + ofs) &= 0x00;
58e28: 4201 clrb %d1
*(sec_buf + ofs + 1) |= (uint8_t )((fat16_clv & 0xFF00)>>8);
}
}
else
{
fat16_clv = ((uint16_t )in_val) & FAT_FAT12_MASK;
58e2a: 0282 0000 0fff andil #4095,%d2
*(sec_buf + ofs) &= 0x00;
58e30: 1181 4800 moveb %d1,%a0@(00000000,%d4:l)
*(sec_buf + ofs + 1) |= (uint8_t )((fat16_clv & 0xFF00)>>8);
}
}
else
{
fat16_clv = ((uint16_t )in_val) & FAT_FAT12_MASK;
58e34: 3a02 movew %d2,%d5
*(sec_buf + ofs) &= 0x00;
*(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00FF);
58e36: 206e fffc moveal %fp@(-4),%a0
58e3a: d1c4 addal %d4,%a0
58e3c: 1210 moveb %a0@,%d1
58e3e: 8481 orl %d1,%d2
58e40: 1082 moveb %d2,%a0@
58e42: 7401 moveq #1,%d2
58e44: 1542 007e moveb %d2,%a2@(126)
fat_buf_mark_modified(fs_info);
if ( ofs == (fs_info->vol.bps - 1) )
58e48: 4282 clrl %d2
58e4a: 3412 movew %a2@,%d2
58e4c: 2042 moveal %d2,%a0
58e4e: 5388 subql #1,%a0
58e50: b888 cmpl %a0,%d4
58e52: 6770 beqs 58ec4 <fat_set_fat_cluster+0x232> <== NEVER TAKEN
fat_buf_mark_modified(fs_info);
}
else
{
*(sec_buf + ofs + 1) &= 0xF0;
58e54: 206e fffc moveal %fp@(-4),%a0
58e58: 5284 addql #1,%d4
58e5a: d1c4 addal %d4,%a0
58e5c: 76f0 moveq #-16,%d3
*(sec_buf + ofs+1) |= (uint8_t)((fat16_clv & 0xFF00)>>8);
58e5e: 4281 clrl %d1
fat_buf_mark_modified(fs_info);
}
else
{
*(sec_buf + ofs + 1) &= 0xF0;
58e60: 1410 moveb %a0@,%d2
*(sec_buf + ofs+1) |= (uint8_t)((fat16_clv & 0xFF00)>>8);
58e62: 3205 movew %d5,%d1
fat_buf_mark_modified(fs_info);
}
else
{
*(sec_buf + ofs + 1) &= 0xF0;
58e64: c483 andl %d3,%d2
*(sec_buf + ofs+1) |= (uint8_t)((fat16_clv & 0xFF00)>>8);
58e66: e089 lsrl #8,%d1
fat_buf_mark_modified(fs_info);
}
else
{
*(sec_buf + ofs + 1) &= 0xF0;
58e68: 1082 moveb %d2,%a0@
*(sec_buf + ofs+1) |= (uint8_t)((fat16_clv & 0xFF00)>>8);
58e6a: 206e fffc moveal %fp@(-4),%a0
58e6e: d1c4 addal %d4,%a0
58e70: 1a10 moveb %a0@,%d5
58e72: 8285 orl %d5,%d1
58e74: 1081 moveb %d1,%a0@
break;
}
return RC_OK;
}
58e76: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3
58e7c: 4e5e unlk %fp
58e7e: 4e75 rts
fat_buf_mark_modified(fs_info);
if ( ofs == (fs_info->vol.bps - 1) )
{
rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
58e80: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58e84: 2043 moveal %d3,%a0 <== NOT EXECUTED
58e86: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
58e8a: 4868 0001 pea %a0@(1) <== NOT EXECUTED
58e8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58e90: 4e93 jsr %a3@ <== NOT EXECUTED
&sec_buf);
if (rc != RC_OK)
58e92: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
58e96: 4a80 tstl %d0 <== NOT EXECUTED
58e98: 6600 fe96 bnew 58d30 <fat_set_fat_cluster+0x9e> <== NOT EXECUTED
return rc;
*sec_buf &= 0x00;
58e9c: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
58ea0: 4210 clrb %a0@ <== NOT EXECUTED
*sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);
58ea2: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
58ea8: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
58eac: e08a lsrl #8,%d2 <== NOT EXECUTED
58eae: 1210 moveb %a0@,%d1 <== NOT EXECUTED
58eb0: 8481 orl %d1,%d2 <== NOT EXECUTED
58eb2: 1082 moveb %d2,%a0@ <== NOT EXECUTED
58eb4: 7401 moveq #1,%d2 <== NOT EXECUTED
58eb6: 1542 007e moveb %d2,%a2@(126) <== NOT EXECUTED
break;
}
return RC_OK;
}
58eba: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED
58ec0: 4e5e unlk %fp <== NOT EXECUTED
58ec2: 4e75 rts <== NOT EXECUTED
fat_buf_mark_modified(fs_info);
if ( ofs == (fs_info->vol.bps - 1) )
{
rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
58ec4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58ec8: 2043 moveal %d3,%a0 <== NOT EXECUTED
58eca: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
58ece: 4868 0001 pea %a0@(1) <== NOT EXECUTED
58ed2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58ed4: 4e93 jsr %a3@ <== NOT EXECUTED
&sec_buf);
if (rc != RC_OK)
58ed6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
58eda: 4a80 tstl %d0 <== NOT EXECUTED
58edc: 6600 fe52 bnew 58d30 <fat_set_fat_cluster+0x9e> <== NOT EXECUTED
return rc;
*sec_buf &= 0xF0;
58ee0: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
58ee4: 74f0 moveq #-16,%d2 <== NOT EXECUTED
58ee6: 1210 moveb %a0@,%d1 <== NOT EXECUTED
*sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);
58ee8: 0285 0000 ffff andil #65535,%d5 <== NOT EXECUTED
rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
&sec_buf);
if (rc != RC_OK)
return rc;
*sec_buf &= 0xF0;
58eee: c282 andl %d2,%d1 <== NOT EXECUTED
*sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);
58ef0: e08d lsrl #8,%d5 <== NOT EXECUTED
rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
&sec_buf);
if (rc != RC_OK)
return rc;
*sec_buf &= 0xF0;
58ef2: 1081 moveb %d1,%a0@ <== NOT EXECUTED
*sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);
58ef4: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
58ef8: 1610 moveb %a0@,%d3 <== NOT EXECUTED
58efa: 8a83 orl %d3,%d5 <== NOT EXECUTED
58efc: 1085 moveb %d5,%a0@ <== NOT EXECUTED
58efe: 7a01 moveq #1,%d5 <== NOT EXECUTED
58f00: 1545 007e moveb %d5,%a2@(126) <== NOT EXECUTED
break;
}
return RC_OK;
}
58f04: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED
58f0a: 4e5e unlk %fp <== NOT EXECUTED
00053810 <fat_shutdown_drive>:
* RC_OK on success, or -1 if error occured
* and errno set appropriately
*/
int
fat_shutdown_drive(fat_fs_info_t *fs_info)
{
53810: 4e56 ffe8 linkw %fp,#-24
53814: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
53818: 286e 0008 moveal %fp@(8),%a4
int rc = RC_OK;
int i = 0;
rc = fat_sync(fs_info);
5381c: 2f0c movel %a4,%sp@-
5381e: 4eb9 0005 36d4 jsr 536d4 <fat_sync>
if ( rc != RC_OK )
53824: 588f addql #4,%sp
fat_shutdown_drive(fat_fs_info_t *fs_info)
{
int rc = RC_OK;
int i = 0;
rc = fat_sync(fs_info);
53826: 2800 movel %d0,%d4
if ( rc != RC_OK )
53828: 6600 00bc bnew 538e6 <fat_shutdown_drive+0xd6>
rc = -1;
5382c: 4283 clrl %d3
5382e: 45f9 0004 4bec lea 44bec <free>,%a2
53834: 47f9 0004 a07c lea 4a07c <_Chain_Get>,%a3
for (i = 0; i < FAT_HASH_SIZE; i++)
{
rtems_chain_node *node = NULL;
rtems_chain_control *the_chain = fs_info->vhash + i;
5383a: 242c 0062 movel %a4@(98),%d2
5383e: d483 addl %d3,%d2
*/
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(
rtems_chain_control *the_chain
)
{
return _Chain_Get( the_chain );
53840: 2f02 movel %d2,%sp@-
53842: 4e93 jsr %a3@
while ( (node = rtems_chain_get(the_chain)) != NULL )
53844: 588f addql #4,%sp
53846: 4a80 tstl %d0
53848: 6710 beqs 5385a <fat_shutdown_drive+0x4a> <== ALWAYS TAKEN
free(node);
5384a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5384c: 4e92 jsr %a2@ <== NOT EXECUTED
5384e: 588f addql #4,%sp <== NOT EXECUTED
53850: 2f02 movel %d2,%sp@- <== NOT EXECUTED
53852: 4e93 jsr %a3@ <== NOT EXECUTED
for (i = 0; i < FAT_HASH_SIZE; i++)
{
rtems_chain_node *node = NULL;
rtems_chain_control *the_chain = fs_info->vhash + i;
while ( (node = rtems_chain_get(the_chain)) != NULL )
53854: 588f addql #4,%sp <== NOT EXECUTED
53856: 4a80 tstl %d0 <== NOT EXECUTED
53858: 66f0 bnes 5384a <fat_shutdown_drive+0x3a> <== NOT EXECUTED
5385a: 0683 0000 000c addil #12,%d3
rc = fat_sync(fs_info);
if ( rc != RC_OK )
rc = -1;
for (i = 0; i < FAT_HASH_SIZE; i++)
53860: 103c 0018 moveb #24,%d0
53864: b083 cmpl %d3,%d0
53866: 66d2 bnes 5383a <fat_shutdown_drive+0x2a>
53868: 4283 clrl %d3
}
for (i = 0; i < FAT_HASH_SIZE; i++)
{
rtems_chain_node *node = NULL;
rtems_chain_control *the_chain = fs_info->rhash + i;
5386a: 242c 0066 movel %a4@(102),%d2
5386e: d483 addl %d3,%d2
53870: 2f02 movel %d2,%sp@-
53872: 4e93 jsr %a3@
while ( (node = rtems_chain_get(the_chain)) != NULL )
53874: 588f addql #4,%sp
53876: 4a80 tstl %d0
53878: 6710 beqs 5388a <fat_shutdown_drive+0x7a> <== ALWAYS TAKEN
free(node);
5387a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5387c: 4e92 jsr %a2@ <== NOT EXECUTED
5387e: 588f addql #4,%sp <== NOT EXECUTED
53880: 2f02 movel %d2,%sp@- <== NOT EXECUTED
53882: 4e93 jsr %a3@ <== NOT EXECUTED
for (i = 0; i < FAT_HASH_SIZE; i++)
{
rtems_chain_node *node = NULL;
rtems_chain_control *the_chain = fs_info->rhash + i;
while ( (node = rtems_chain_get(the_chain)) != NULL )
53884: 588f addql #4,%sp <== NOT EXECUTED
53886: 4a80 tstl %d0 <== NOT EXECUTED
53888: 66f0 bnes 5387a <fat_shutdown_drive+0x6a> <== NOT EXECUTED
5388a: 0683 0000 000c addil #12,%d3
while ( (node = rtems_chain_get(the_chain)) != NULL )
free(node);
}
for (i = 0; i < FAT_HASH_SIZE; i++)
53890: 103c 0018 moveb #24,%d0
53894: b083 cmpl %d3,%d0
53896: 66d2 bnes 5386a <fat_shutdown_drive+0x5a>
while ( (node = rtems_chain_get(the_chain)) != NULL )
free(node);
}
free(fs_info->vhash);
53898: 2f2c 0062 movel %a4@(98),%sp@-
5389c: 4e92 jsr %a2@
free(fs_info->rhash);
5389e: 2f2c 0066 movel %a4@(102),%sp@-
538a2: 4e92 jsr %a2@
free(fs_info->uino);
538a4: 2f2c 006a movel %a4@(106),%sp@-
538a8: 4e92 jsr %a2@
free(fs_info->sec_buf);
538aa: 2f2c 0084 movel %a4@(132),%sp@-
538ae: 4e92 jsr %a2@
close(fs_info->vol.fd);
538b0: 2f2c 0056 movel %a4@(86),%sp@-
538b4: 4eb9 0004 4918 jsr 44918 <close>
if (rc)
538ba: 4fef 0014 lea %sp@(20),%sp
538be: 4a84 tstl %d4
538c0: 660c bnes 538ce <fat_shutdown_drive+0xbe> <== NEVER TAKEN
errno = EIO;
return rc;
}
538c2: 2004 movel %d4,%d0
538c4: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
538ca: 4e5e unlk %fp
538cc: 4e75 rts
free(fs_info->uino);
free(fs_info->sec_buf);
close(fs_info->vol.fd);
if (rc)
errno = EIO;
538ce: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
538d4: 2040 moveal %d0,%a0 <== NOT EXECUTED
538d6: 7005 moveq #5,%d0 <== NOT EXECUTED
538d8: 2080 movel %d0,%a0@ <== NOT EXECUTED
return rc;
}
538da: 2004 movel %d4,%d0 <== NOT EXECUTED
538dc: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
538e2: 4e5e unlk %fp <== NOT EXECUTED
538e4: 4e75 rts <== NOT EXECUTED
int rc = RC_OK;
int i = 0;
rc = fat_sync(fs_info);
if ( rc != RC_OK )
rc = -1;
538e6: 78ff moveq #-1,%d4 <== NOT EXECUTED
538e8: 4283 clrl %d3 <== NOT EXECUTED
538ea: 45f9 0004 4bec lea 44bec <free>,%a2 <== NOT EXECUTED
538f0: 47f9 0004 a07c lea 4a07c <_Chain_Get>,%a3 <== NOT EXECUTED
538f6: 6000 ff42 braw 5383a <fat_shutdown_drive+0x2a> <== NOT EXECUTED
000536d4 <fat_sync>:
static int
fat_fat32_update_fsinfo_sector(fat_fs_info_t *fs_info)
{
ssize_t ret1 = 0, ret2 = 0;
if (fs_info->vol.type == FAT_FAT32)
536d4: 4280 clrl %d0
536d6: 7204 moveq #4,%d1
return RC_OK;
}
int
fat_sync(fat_fs_info_t *fs_info)
{
536d8: 4e56 ffe0 linkw %fp,#-32
536dc: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
536e0: 246e 0008 moveal %fp@(8),%a2
static int
fat_fat32_update_fsinfo_sector(fat_fs_info_t *fs_info)
{
ssize_t ret1 = 0, ret2 = 0;
if (fs_info->vol.type == FAT_FAT32)
536e4: 102a 000e moveb %a2@(14),%d0
536e8: b280 cmpl %d0,%d1
536ea: 6728 beqs 53714 <fat_sync+0x40> <== NEVER TAKEN
* RC_OK on success, or -1 if error occured (errno set appropriately)
*/
static int
fat_fat32_update_fsinfo_sector(fat_fs_info_t *fs_info)
{
ssize_t ret1 = 0, ret2 = 0;
536ec: 4282 clrl %d2
rc = fat_fat32_update_fsinfo_sector(fs_info);
if ( rc != RC_OK )
rc = -1;
fat_buf_release(fs_info);
536ee: 2f0a movel %a2,%sp@-
536f0: 4eb9 0005 2738 jsr 52738 <fat_buf_release>
if (rtems_bdbuf_syncdev(fs_info->vol.dd) != RTEMS_SUCCESSFUL)
536f6: 2f2a 005a movel %a2@(90),%sp@-
536fa: 4eb9 0005 0a20 jsr 50a20 <rtems_bdbuf_syncdev>
53700: 508f addql #8,%sp
53702: 4a80 tstl %d0
53704: 6600 00fc bnew 53802 <fat_sync+0x12e>
rc = -1;
return rc;
}
53708: 2002 movel %d2,%d0
5370a: 4cee 1c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a4
53710: 4e5e unlk %fp
53712: 4e75 rts
{
ssize_t ret1 = 0, ret2 = 0;
if (fs_info->vol.type == FAT_FAT32)
{
uint32_t free_count = fs_info->vol.free_cls;
53714: 222a 003e movel %a2@(62),%d1 <== NOT EXECUTED
uint32_t next_free = fs_info->vol.next_cl;
53718: 242a 0046 movel %a2@(70),%d2 <== NOT EXECUTED
if (free_count != fs_info->vol.free_cls_in_fs_info)
5371c: b2aa 0042 cmpl %a2@(66),%d1 <== NOT EXECUTED
53720: 677a beqs 5379c <fat_sync+0xc8> <== NOT EXECUTED
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
53722: 2001 movel %d1,%d0 <== NOT EXECUTED
53724: 7618 moveq #24,%d3 <== NOT EXECUTED
53726: e6a8 lsrl %d3,%d0 <== NOT EXECUTED
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
53728: 2601 movel %d1,%d3 <== NOT EXECUTED
5372a: 7a18 moveq #24,%d5 <== NOT EXECUTED
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
5372c: 2801 movel %d1,%d4 <== NOT EXECUTED
5372e: e08c lsrl #8,%d4 <== NOT EXECUTED
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
53730: 264e moveal %fp,%a3 <== NOT EXECUTED
{
uint32_t le_free_count = CT_LE_L(free_count);
fs_info->vol.free_cls_in_fs_info = free_count;
ret1 = fat_sector_write(fs_info,
53732: 49f9 0005 2a5a lea 52a5a <fat_sector_write>,%a4 <== NOT EXECUTED
53738: ebab lsll %d5,%d3 <== NOT EXECUTED
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
5373a: 2a01 movel %d1,%d5 <== NOT EXECUTED
5373c: e18d lsll #8,%d5 <== NOT EXECUTED
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
5373e: 8680 orl %d0,%d3 <== NOT EXECUTED
53740: 0284 0000 ff00 andil #65280,%d4 <== NOT EXECUTED
53746: 0285 00ff 0000 andil #16711680,%d5 <== NOT EXECUTED
if (free_count != fs_info->vol.free_cls_in_fs_info)
{
uint32_t le_free_count = CT_LE_L(free_count);
fs_info->vol.free_cls_in_fs_info = free_count;
5374c: 2541 0042 movel %d1,%a2@(66) <== NOT EXECUTED
ret1 = fat_sector_write(fs_info,
53750: 4280 clrl %d0 <== NOT EXECUTED
53752: 8685 orl %d5,%d3 <== NOT EXECUTED
53754: 302a 003c movew %a2@(60),%d0 <== NOT EXECUTED
53758: 8684 orl %d4,%d3 <== NOT EXECUTED
5375a: 2703 movel %d3,%a3@- <== NOT EXECUTED
5375c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5375e: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
53762: 4878 01e8 pea 1e8 <DBL_MANT_DIG+0x1b3> <== NOT EXECUTED
53766: 2f00 movel %d0,%sp@- <== NOT EXECUTED
53768: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5376a: 4e94 jsr %a4@ <== NOT EXECUTED
FAT_FSINFO_FREE_CLUSTER_COUNT_OFFSET,
sizeof(le_free_count),
&le_free_count);
}
if (next_free != fs_info->vol.next_cl_in_fs_info)
5376c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
{
uint32_t le_free_count = CT_LE_L(free_count);
fs_info->vol.free_cls_in_fs_info = free_count;
ret1 = fat_sector_write(fs_info,
53770: 2800 movel %d0,%d4 <== NOT EXECUTED
FAT_FSINFO_FREE_CLUSTER_COUNT_OFFSET,
sizeof(le_free_count),
&le_free_count);
}
if (next_free != fs_info->vol.next_cl_in_fs_info)
53772: b4aa 004a cmpl %a2@(74),%d2 <== NOT EXECUTED
53776: 6638 bnes 537b0 <fat_sync+0xdc> <== NOT EXECUTED
sizeof(le_next_free),
&le_next_free);
}
}
if ( (ret1 < 0) || (ret2 < 0) )
53778: 4a80 tstl %d0 <== NOT EXECUTED
5377a: 6c00 ff70 bgew 536ec <fat_sync+0x18> <== NOT EXECUTED
rc = fat_fat32_update_fsinfo_sector(fs_info);
if ( rc != RC_OK )
rc = -1;
fat_buf_release(fs_info);
5377e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
{
int rc = RC_OK;
rc = fat_fat32_update_fsinfo_sector(fs_info);
if ( rc != RC_OK )
rc = -1;
53780: 74ff moveq #-1,%d2 <== NOT EXECUTED
fat_buf_release(fs_info);
53782: 4eb9 0005 2738 jsr 52738 <fat_buf_release> <== NOT EXECUTED
if (rtems_bdbuf_syncdev(fs_info->vol.dd) != RTEMS_SUCCESSFUL)
53788: 2f2a 005a movel %a2@(90),%sp@- <== NOT EXECUTED
5378c: 4eb9 0005 0a20 jsr 50a20 <rtems_bdbuf_syncdev> <== NOT EXECUTED
53792: 508f addql #8,%sp <== NOT EXECUTED
53794: 4a80 tstl %d0 <== NOT EXECUTED
53796: 6700 ff70 beqw 53708 <fat_sync+0x34> <== NOT EXECUTED
5379a: 6066 bras 53802 <fat_sync+0x12e> <== NOT EXECUTED
FAT_FSINFO_FREE_CLUSTER_COUNT_OFFSET,
sizeof(le_free_count),
&le_free_count);
}
if (next_free != fs_info->vol.next_cl_in_fs_info)
5379c: b4aa 004a cmpl %a2@(74),%d2 <== NOT EXECUTED
537a0: 6700 ff4a beqw 536ec <fat_sync+0x18> <== NOT EXECUTED
* RC_OK on success, or -1 if error occured (errno set appropriately)
*/
static int
fat_fat32_update_fsinfo_sector(fat_fs_info_t *fs_info)
{
ssize_t ret1 = 0, ret2 = 0;
537a4: 4284 clrl %d4 <== NOT EXECUTED
537a6: 47ee fffc lea %fp@(-4),%a3 <== NOT EXECUTED
537aa: 49f9 0005 2a5a lea 52a5a <fat_sector_write>,%a4 <== NOT EXECUTED
{
uint32_t le_next_free = CT_LE_L(next_free);
fs_info->vol.next_cl_in_fs_info = next_free;
ret2 = fat_sector_write(fs_info,
537b0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
537b2: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
537b6: 7018 moveq #24,%d0 <== NOT EXECUTED
537b8: 4878 01ec pea 1ec <DBL_MANT_DIG+0x1b7> <== NOT EXECUTED
537bc: 2a02 movel %d2,%d5 <== NOT EXECUTED
byte3 = (value >> 16) & 0xff;
537be: 2602 movel %d2,%d3 <== NOT EXECUTED
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
537c0: 2202 movel %d2,%d1 <== NOT EXECUTED
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
537c2: e0ad lsrl %d0,%d5 <== NOT EXECUTED
byte3 = (value >> 16) & 0xff;
537c4: e08b lsrl #8,%d3 <== NOT EXECUTED
if (next_free != fs_info->vol.next_cl_in_fs_info)
{
uint32_t le_next_free = CT_LE_L(next_free);
fs_info->vol.next_cl_in_fs_info = next_free;
537c6: 2542 004a movel %d2,%a2@(74) <== NOT EXECUTED
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
537ca: e1a9 lsll %d0,%d1 <== NOT EXECUTED
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
537cc: e18a lsll #8,%d2 <== NOT EXECUTED
ret2 = fat_sector_write(fs_info,
537ce: 4280 clrl %d0 <== NOT EXECUTED
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
537d0: 8285 orl %d5,%d1 <== NOT EXECUTED
537d2: 0282 00ff 0000 andil #16711680,%d2 <== NOT EXECUTED
537d8: 302a 003c movew %a2@(60),%d0 <== NOT EXECUTED
537dc: 0283 0000 ff00 andil #65280,%d3 <== NOT EXECUTED
537e2: 8282 orl %d2,%d1 <== NOT EXECUTED
537e4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
537e6: 8283 orl %d3,%d1 <== NOT EXECUTED
537e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
537ea: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED
537ee: 4e94 jsr %a4@ <== NOT EXECUTED
sizeof(le_next_free),
&le_next_free);
}
}
if ( (ret1 < 0) || (ret2 < 0) )
537f0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
537f4: 4a84 tstl %d4 <== NOT EXECUTED
537f6: 6d86 blts 5377e <fat_sync+0xaa> <== NOT EXECUTED
537f8: 4a80 tstl %d0 <== NOT EXECUTED
537fa: 6d82 blts 5377e <fat_sync+0xaa> <== NOT EXECUTED
* RC_OK on success, or -1 if error occured (errno set appropriately)
*/
static int
fat_fat32_update_fsinfo_sector(fat_fs_info_t *fs_info)
{
ssize_t ret1 = 0, ret2 = 0;
537fc: 4282 clrl %d2 <== NOT EXECUTED
537fe: 6000 feee braw 536ee <fat_sync+0x1a> <== NOT EXECUTED
rc = -1;
fat_buf_release(fs_info);
if (rtems_bdbuf_syncdev(fs_info->vol.dd) != RTEMS_SUCCESSFUL)
rc = -1;
53802: 74ff moveq #-1,%d2 <== NOT EXECUTED
return rc;
}
53804: 2002 movel %d2,%d0 <== NOT EXECUTED
53806: 4cee 1c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5380c: 4e5e unlk %fp <== NOT EXECUTED
00073120 <fchdir>:
/**
* compatible with SVr4, 4.4BSD and X/OPEN - Change Directory
*/
int fchdir( int fd )
{
73120: 4e56 ff9c linkw %fp,#-100
rtems_libio_t *iop;
struct stat st;
rtems_filesystem_location_info_t loc;
st.st_mode = 0;
st.st_uid = 0;
73124: 4241 clrw %d1
/**
* compatible with SVr4, 4.4BSD and X/OPEN - Change Directory
*/
int fchdir( int fd )
{
73126: 202e 0008 movel %fp@(8),%d0
7312a: 2f0a movel %a2,%sp@-
rtems_libio_t *iop;
struct stat st;
rtems_filesystem_location_info_t loc;
st.st_mode = 0;
st.st_uid = 0;
7312c: 3d41 ffcc movew %d1,%fp@(-52)
/**
* compatible with SVr4, 4.4BSD and X/OPEN - Change Directory
*/
int fchdir( int fd )
{
73130: 2f02 movel %d2,%sp@-
struct stat st;
rtems_filesystem_location_info_t loc;
st.st_mode = 0;
st.st_uid = 0;
st.st_gid = 0;
73132: 3d41 ffce movew %d1,%fp@(-50)
int rv = 0;
rtems_libio_t *iop;
struct stat st;
rtems_filesystem_location_info_t loc;
st.st_mode = 0;
73136: 42ae ffc6 clrl %fp@(-58)
st.st_uid = 0;
st.st_gid = 0;
rtems_libio_check_fd( fd );
7313a: b0b9 0009 b1bc cmpl 9b1bc <rtems_libio_number_iops>,%d0
73140: 6400 0100 bccw 73242 <fchdir+0x122>
iop = rtems_libio_iop( fd );
73144: 2200 movel %d0,%d1
73146: ed88 lsll #6,%d0
73148: e989 lsll #4,%d1
7314a: 2479 0009 fd68 moveal 9fd68 <rtems_libio_iops>,%a2
73150: 9081 subl %d1,%d0
73152: d5c0 addal %d0,%a2
rtems_libio_check_is_open( iop );
73154: 202a 000c movel %a2@(12),%d0
73158: 0280 0000 0100 andil #256,%d0
7315e: 6700 00e2 beqw 73242 <fchdir+0x122>
if ( rv == 0 ) {
rv = rtems_filesystem_chdir( &loc );
}
return rv;
}
73162: 206a 0024 moveal %a2@(36),%a0
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_filesystem_instance_lock( &iop->pathinfo );
rv = (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, &st );
73166: 240a movel %a2,%d2
73168: 0682 0000 0010 addil #16,%d2
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
(*mt_entry->ops->lock_h)( mt_entry );
7316e: 2268 000c moveal %a0@(12),%a1
73172: 2f08 movel %a0,%sp@-
73174: 2051 moveal %a1@,%a0
73176: 4e90 jsr %a0@
73178: 206a 0020 moveal %a2@(32),%a0
7317c: 486e ffba pea %fp@(-70)
73180: 2f02 movel %d2,%sp@-
73182: 2068 0018 moveal %a0@(24),%a0
73186: 4e90 jsr %a0@
if ( rv == 0 ) {
73188: 4fef 000c lea %sp@(12),%sp
7318c: 4a80 tstl %d0
7318e: 6726 beqs 731b6 <fchdir+0x96> <== ALWAYS TAKEN
if ( rv == 0 ) {
rv = rtems_filesystem_chdir( &loc );
}
return rv;
}
73190: 206a 0024 moveal %a2@(36),%a0 <== NOT EXECUTED
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
(*mt_entry->ops->unlock_h)( mt_entry );
73194: 2268 000c moveal %a0@(12),%a1 <== NOT EXECUTED
73198: 2f08 movel %a0,%sp@- <== NOT EXECUTED
7319a: 2069 0004 moveal %a1@(4),%a0 <== NOT EXECUTED
7319e: 2d40 ff9c movel %d0,%fp@(-100) <== NOT EXECUTED
731a2: 4e90 jsr %a0@ <== NOT EXECUTED
731a4: 202e ff9c movel %fp@(-100),%d0 <== NOT EXECUTED
731a8: 588f addql #4,%sp <== NOT EXECUTED
731aa: 242e ff94 movel %fp@(-108),%d2
731ae: 246e ff98 moveal %fp@(-104),%a2
731b2: 4e5e unlk %fp
731b4: 4e75 rts
rtems_libio_check_is_open( iop );
rtems_filesystem_instance_lock( &iop->pathinfo );
rv = (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, &st );
if ( rv == 0 ) {
bool access_ok = rtems_filesystem_check_access(
731b6: 4281 clrl %d1
731b8: 4280 clrl %d0
731ba: 322e ffce movew %fp@(-50),%d1
731be: 302e ffcc movew %fp@(-52),%d0
731c2: 2f01 movel %d1,%sp@-
731c4: 2f00 movel %d0,%sp@-
731c6: 2f2e ffc6 movel %fp@(-58),%sp@-
731ca: 4878 0001 pea 1 <ADD>
731ce: 4eb9 0004 e0f4 jsr 4e0f4 <rtems_filesystem_check_access>
st.st_mode,
st.st_uid,
st.st_gid
);
if ( access_ok ) {
731d4: 4fef 0010 lea %sp@(16),%sp
731d8: 4a00 tstb %d0
731da: 673a beqs 73216 <fchdir+0xf6>
rtems_filesystem_location_clone( &loc, &iop->pathinfo );
731dc: 2f02 movel %d2,%sp@-
731de: 240e movel %fp,%d2
731e0: 0682 ffff ffa2 addil #-94,%d2
731e6: 2f02 movel %d2,%sp@-
731e8: 4eb9 0004 da78 jsr 4da78 <rtems_filesystem_location_clone>
if ( rv == 0 ) {
rv = rtems_filesystem_chdir( &loc );
}
return rv;
}
731ee: 206a 0024 moveal %a2@(36),%a0
731f2: 2268 000c moveal %a0@(12),%a1
731f6: 2f08 movel %a0,%sp@-
731f8: 2069 0004 moveal %a1@(4),%a0
731fc: 4e90 jsr %a0@
}
}
rtems_filesystem_instance_unlock( &iop->pathinfo );
if ( rv == 0 ) {
rv = rtems_filesystem_chdir( &loc );
731fe: 2f02 movel %d2,%sp@-
73200: 4eb9 0006 3ff0 jsr 63ff0 <rtems_filesystem_chdir>
}
return rv;
}
73206: 242e ff94 movel %fp@(-108),%d2
}
}
rtems_filesystem_instance_unlock( &iop->pathinfo );
if ( rv == 0 ) {
rv = rtems_filesystem_chdir( &loc );
7320a: 4fef 0010 lea %sp@(16),%sp
}
return rv;
}
7320e: 246e ff98 moveal %fp@(-104),%a2
73212: 4e5e unlk %fp
73214: 4e75 rts
);
if ( access_ok ) {
rtems_filesystem_location_clone( &loc, &iop->pathinfo );
} else {
errno = EACCES;
73216: 4eb9 0007 7798 jsr 77798 <__errno>
7321c: 720d moveq #13,%d1
7321e: 2040 moveal %d0,%a0
rv = -1;
73220: 70ff moveq #-1,%d0
);
if ( access_ok ) {
rtems_filesystem_location_clone( &loc, &iop->pathinfo );
} else {
errno = EACCES;
73222: 2081 movel %d1,%a0@
if ( rv == 0 ) {
rv = rtems_filesystem_chdir( &loc );
}
return rv;
}
73224: 206a 0024 moveal %a2@(36),%a0
73228: 2268 000c moveal %a0@(12),%a1
7322c: 2f08 movel %a0,%sp@-
7322e: 2069 0004 moveal %a1@(4),%a0
73232: 2d40 ff9c movel %d0,%fp@(-100)
73236: 4e90 jsr %a0@
73238: 202e ff9c movel %fp@(-100),%d0
7323c: 588f addql #4,%sp
7323e: 6000 ff6a braw 731aa <fchdir+0x8a>
st.st_uid = 0;
st.st_gid = 0;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
73242: 4eb9 0007 7798 jsr 77798 <__errno>
73248: 7409 moveq #9,%d2
7324a: 2040 moveal %d0,%a0
7324c: 70ff moveq #-1,%d0
7324e: 2082 movel %d2,%a0@
if ( rv == 0 ) {
rv = rtems_filesystem_chdir( &loc );
}
return rv;
}
73250: 242e ff94 movel %fp@(-108),%d2
73254: 246e ff98 moveal %fp@(-104),%a2
73258: 4e5e unlk %fp <== NOT EXECUTED
00064318 <fchmod>:
/**
* POSIX 1003.1b 5.6.4 - Change File Modes
*/
int fchmod( int fd, mode_t mode )
{
64318: 4e56 fffc linkw %fp,#-4
6431c: 202e 0008 movel %fp@(8),%d0
64320: 2f0a movel %a2,%sp@-
int rv;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
64322: b0b9 0009 b1bc cmpl 9b1bc <rtems_libio_number_iops>,%d0
64328: 6400 0082 bccw 643ac <fchmod+0x94>
iop = rtems_libio_iop( fd );
6432c: 2200 movel %d0,%d1
6432e: ed88 lsll #6,%d0
64330: e989 lsll #4,%d1
64332: 2479 0009 fd68 moveal 9fd68 <rtems_libio_iops>,%a2
64338: 9081 subl %d1,%d0
6433a: d5c0 addal %d0,%a2
rtems_libio_check_is_open(iop);
6433c: 202a 000c movel %a2@(12),%d0
64340: 0280 0000 0100 andil #256,%d0
64346: 6764 beqs 643ac <fchmod+0x94>
if (iop->pathinfo.mt_entry->writeable) {
64348: 206a 0024 moveal %a2@(36),%a0
6434c: 4a28 0029 tstb %a0@(41)
64350: 6744 beqs 64396 <fchmod+0x7e> <== NEVER TAKEN
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
(*mt_entry->ops->lock_h)( mt_entry );
64352: 2268 000c moveal %a0@(12),%a1
64356: 2f08 movel %a0,%sp@-
64358: 2051 moveal %a1@,%a0
6435a: 4e90 jsr %a0@
rtems_filesystem_instance_lock( &iop->pathinfo );
rv = (*iop->pathinfo.mt_entry->ops->fchmod_h)( &iop->pathinfo, mode );
6435c: 206a 0024 moveal %a2@(36),%a0
64360: 2068 000c moveal %a0@(12),%a0
64364: 2f2e 000c movel %fp@(12),%sp@-
64368: 486a 0010 pea %a2@(16)
6436c: 2068 0020 moveal %a0@(32),%a0
64370: 4e90 jsr %a0@
errno = EROFS;
rv = -1;
}
return rv;
}
64372: 206a 0024 moveal %a2@(36),%a0
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
(*mt_entry->ops->unlock_h)( mt_entry );
64376: 2268 000c moveal %a0@(12),%a1
6437a: 2f08 movel %a0,%sp@-
6437c: 2069 0004 moveal %a1@(4),%a0
64380: 2d40 fffc movel %d0,%fp@(-4)
64384: 4e90 jsr %a0@
64386: 202e fffc movel %fp@(-4),%d0
6438a: 4fef 0010 lea %sp@(16),%sp
6438e: 246e fff8 moveal %fp@(-8),%a2
64392: 4e5e unlk %fp
64394: 4e75 rts
if (iop->pathinfo.mt_entry->writeable) {
rtems_filesystem_instance_lock( &iop->pathinfo );
rv = (*iop->pathinfo.mt_entry->ops->fchmod_h)( &iop->pathinfo, mode );
rtems_filesystem_instance_unlock( &iop->pathinfo );
} else {
errno = EROFS;
64396: 4eb9 0007 7798 jsr 77798 <__errno> <== NOT EXECUTED
rv = -1;
}
return rv;
}
6439c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if (iop->pathinfo.mt_entry->writeable) {
rtems_filesystem_instance_lock( &iop->pathinfo );
rv = (*iop->pathinfo.mt_entry->ops->fchmod_h)( &iop->pathinfo, mode );
rtems_filesystem_instance_unlock( &iop->pathinfo );
} else {
errno = EROFS;
643a0: 2040 moveal %d0,%a0 <== NOT EXECUTED
643a2: 721e moveq #30,%d1 <== NOT EXECUTED
rv = -1;
643a4: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return rv;
}
643a6: 4e5e unlk %fp <== NOT EXECUTED
if (iop->pathinfo.mt_entry->writeable) {
rtems_filesystem_instance_lock( &iop->pathinfo );
rv = (*iop->pathinfo.mt_entry->ops->fchmod_h)( &iop->pathinfo, mode );
rtems_filesystem_instance_unlock( &iop->pathinfo );
} else {
errno = EROFS;
643a8: 2081 movel %d1,%a0@ <== NOT EXECUTED
rv = -1;
}
return rv;
}
643aa: 4e75 rts <== NOT EXECUTED
int rv;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
643ac: 4eb9 0007 7798 jsr 77798 <__errno>
errno = EROFS;
rv = -1;
}
return rv;
}
643b2: 246e fff8 moveal %fp@(-8),%a2
int rv;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
643b6: 2040 moveal %d0,%a0
643b8: 7209 moveq #9,%d1
643ba: 70ff moveq #-1,%d0
errno = EROFS;
rv = -1;
}
return rv;
}
643bc: 4e5e unlk %fp
int rv;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
643be: 2081 movel %d1,%a0@
errno = EROFS;
rv = -1;
}
return rv;
}
...
000643c4 <fchown>:
/**
* POSIX 1003.1b 5.6.5 - Change Owner and Group of a File
*/
int fchown( int fd, uid_t owner, gid_t group )
{
643c4: 4e56 fff0 linkw %fp,#-16
643c8: 202e 0008 movel %fp@(8),%d0
643cc: 48d7 040c moveml %d2-%d3/%a2,%sp@
643d0: 342e 000e movew %fp@(14),%d2
643d4: 362e 0012 movew %fp@(18),%d3
int rv = 0;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
643d8: b0b9 0009 b1bc cmpl 9b1bc <rtems_libio_number_iops>,%d0
643de: 6400 008a bccw 6446a <fchown+0xa6>
iop = rtems_libio_iop( fd );
643e2: 2200 movel %d0,%d1
643e4: ed88 lsll #6,%d0
643e6: e989 lsll #4,%d1
643e8: 2479 0009 fd68 moveal 9fd68 <rtems_libio_iops>,%a2
643ee: 9081 subl %d1,%d0
643f0: d5c0 addal %d0,%a2
rtems_libio_check_is_open(iop);
643f2: 202a 000c movel %a2@(12),%d0
643f6: 0280 0000 0100 andil #256,%d0
643fc: 676c beqs 6446a <fchown+0xa6> <== NEVER TAKEN
if (iop->pathinfo.mt_entry->writeable) {
643fe: 206a 0024 moveal %a2@(36),%a0
64402: 4a28 0029 tstb %a0@(41)
64406: 674a beqs 64452 <fchown+0x8e> <== NEVER TAKEN
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
(*mt_entry->ops->lock_h)( mt_entry );
64408: 2268 000c moveal %a0@(12),%a1
6440c: 2f08 movel %a0,%sp@-
6440e: 2051 moveal %a1@,%a0
64410: 4e90 jsr %a0@
rtems_filesystem_instance_lock( &iop->pathinfo );
rv = (*iop->pathinfo.mt_entry->ops->chown_h)(
64412: 206a 0024 moveal %a2@(36),%a0
64416: 2068 000c moveal %a0@(12),%a0
6441a: 3f03 movew %d3,%sp@-
6441c: 4267 clrw %sp@-
6441e: 3f02 movew %d2,%sp@-
64420: 4267 clrw %sp@-
64422: 486a 0010 pea %a2@(16)
64426: 2068 0024 moveal %a0@(36),%a0
6442a: 4e90 jsr %a0@
errno = EROFS;
rv = -1;
}
return rv;
}
6442c: 206a 0024 moveal %a2@(36),%a0
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
(*mt_entry->ops->unlock_h)( mt_entry );
64430: 2268 000c moveal %a0@(12),%a1
64434: 2f08 movel %a0,%sp@-
64436: 2069 0004 moveal %a1@(4),%a0
6443a: 2d40 fffc movel %d0,%fp@(-4)
6443e: 4e90 jsr %a0@
64440: 202e fffc movel %fp@(-4),%d0
64444: 4fef 0014 lea %sp@(20),%sp
64448: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2
6444e: 4e5e unlk %fp
64450: 4e75 rts
owner,
group
);
rtems_filesystem_instance_unlock( &iop->pathinfo );
} else {
errno = EROFS;
64452: 4eb9 0007 7798 jsr 77798 <__errno> <== NOT EXECUTED
64458: 721e moveq #30,%d1 <== NOT EXECUTED
6445a: 2040 moveal %d0,%a0 <== NOT EXECUTED
rv = -1;
6445c: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return rv;
}
6445e: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
owner,
group
);
rtems_filesystem_instance_unlock( &iop->pathinfo );
} else {
errno = EROFS;
64464: 2081 movel %d1,%a0@ <== NOT EXECUTED
rv = -1;
}
return rv;
}
64466: 4e5e unlk %fp <== NOT EXECUTED
64468: 4e75 rts <== NOT EXECUTED
int rv = 0;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
6446a: 4eb9 0007 7798 jsr 77798 <__errno>
64470: 7409 moveq #9,%d2
64472: 2040 moveal %d0,%a0
64474: 70ff moveq #-1,%d0
64476: 2082 movel %d2,%a0@
errno = EROFS;
rv = -1;
}
return rv;
}
64478: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2
6447e: 4e5e unlk %fp
...
0006ebf8 <fcntl>:
int fcntl(
int fd,
int cmd,
...
)
{
6ebf8: 4e56 ffec linkw %fp,#-20
6ebfc: 202e 0008 movel %fp@(8),%d0
6ec00: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
6ec04: 262e 000c movel %fp@(12),%d3
int fd2;
int flags;
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
6ec08: b0b9 0007 40d8 cmpl 740d8 <rtems_libio_number_iops>,%d0
6ec0e: 6400 0194 bccw 6eda4 <fcntl+0x1ac>
iop = rtems_libio_iop( fd );
6ec12: 2200 movel %d0,%d1
6ec14: ed88 lsll #6,%d0
6ec16: e989 lsll #4,%d1
6ec18: 2479 0008 58c4 moveal 858c4 <rtems_libio_iops>,%a2
6ec1e: 9081 subl %d1,%d0
6ec20: d5c0 addal %d0,%a2
rtems_libio_check_is_open(iop);
6ec22: 202a 000c movel %a2@(12),%d0
6ec26: 0800 0008 btst #8,%d0
6ec2a: 6700 0178 beqw 6eda4 <fcntl+0x1ac>
/*
* This switch should contain all the cases from POSIX.
*/
switch ( cmd ) {
6ec2e: 7209 moveq #9,%d1
6ec30: b283 cmpl %d3,%d1
6ec32: 641a bccs 6ec4e <fcntl+0x56>
errno = ENOTSUP;
ret = -1;
break;
default:
errno = EINVAL;
6ec34: 4eb9 0006 0414 jsr 60414 <__errno>
6ec3a: 2040 moveal %d0,%a0
6ec3c: 7016 moveq #22,%d0
6ec3e: 2080 movel %d0,%a0@
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
6ec40: 74ff moveq #-1,%d2
va_list ap;
va_start( ap, cmd );
ret = vfcntl(fd,cmd,ap);
va_end(ap);
return ret;
}
6ec42: 2002 movel %d2,%d0
6ec44: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
6ec4a: 4e5e unlk %fp
6ec4c: 4e75 rts
/*
* This switch should contain all the cases from POSIX.
*/
switch ( cmd ) {
6ec4e: 323b 3a08 movew %pc@(6ec58 <fcntl+0x60>,%d3:l:2),%d1
6ec52: 48c1 extl %d1
6ec54: 4efb 1802 jmp %pc@(6ec58 <fcntl+0x60>,%d1:l)
6ec58: 00b0 00a4 0090 oril #10748048,%d0 <== NOT EXECUTED
6ec5e: 0076 .short 0x0076 <== NOT EXECUTED
6ec60: 0026 .short 0x0026 <== NOT EXECUTED
6ec62: 0014 .short 0x0014 <== NOT EXECUTED
6ec64: 0014 .short 0x0014 <== NOT EXECUTED
6ec66: 0014 .short 0x0014 <== NOT EXECUTED
6ec68: 0014 .short 0x0014 <== NOT EXECUTED
6ec6a: 0014 .short 0x0014 <== NOT EXECUTED
errno = ENOTSUP;
ret = -1;
break;
case F_GETOWN: /* for sockets. */
errno = ENOTSUP;
6ec6c: 4eb9 0006 0414 jsr 60414 <__errno>
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
6ec72: 74ff moveq #-1,%d2
errno = ENOTSUP;
ret = -1;
break;
case F_GETOWN: /* for sockets. */
errno = ENOTSUP;
6ec74: 2040 moveal %d0,%a0
6ec76: 20bc 0000 0086 movel #134,%a0@
6ec7c: 60c4 bras 6ec42 <fcntl+0x4a>
case F_GETFL: /* more flags (cloexec) */
ret = rtems_libio_to_fcntl_flags( iop->flags );
break;
case F_SETFL:
flags = rtems_libio_fcntl_flags( va_arg( ap, int ) );
6ec7e: 2f2e 0010 movel %fp@(16),%sp@-
{
rtems_libio_t *iop;
int fd2;
int flags;
int mask;
int ret = 0;
6ec82: 4282 clrl %d2
case F_GETFL: /* more flags (cloexec) */
ret = rtems_libio_to_fcntl_flags( iop->flags );
break;
case F_SETFL:
flags = rtems_libio_fcntl_flags( va_arg( ap, int ) );
6ec84: 4eb9 0004 7644 jsr 47644 <rtems_libio_fcntl_flags>
/*
* XXX If we are turning on append, should we seek to the end?
*/
iop->flags = (iop->flags & ~mask) | (flags & mask);
6ec8a: 222a 000c movel %a2@(12),%d1
6ec8e: 588f addql #4,%sp
6ec90: 0280 0000 0201 andil #513,%d0
6ec96: 0281 ffff fdfe andil #-514,%d1
6ec9c: 8081 orl %d1,%d0
6ec9e: 2540 000c movel %d0,%a2@(12)
* If we got this far successfully, then we give the optional
* filesystem specific handler a chance to process this.
*/
if (ret >= 0) {
int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );
6eca2: 206a 0020 moveal %a2@(32),%a0
6eca6: 2f03 movel %d3,%sp@-
6eca8: 2f0a movel %a2,%sp@-
6ecaa: 2068 0028 moveal %a0@(40),%a0
6ecae: 4e90 jsr %a0@
if (err) {
6ecb0: 508f addql #8,%sp
* If we got this far successfully, then we give the optional
* filesystem specific handler a chance to process this.
*/
if (ret >= 0) {
int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );
6ecb2: 2600 movel %d0,%d3
if (err) {
6ecb4: 678c beqs 6ec42 <fcntl+0x4a> <== ALWAYS TAKEN
errno = err;
6ecb6: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
ret = -1;
6ecbc: 74ff moveq #-1,%d2 <== NOT EXECUTED
*/
if (ret >= 0) {
int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );
if (err) {
errno = err;
6ecbe: 2040 moveal %d0,%a0 <== NOT EXECUTED
va_list ap;
va_start( ap, cmd );
ret = vfcntl(fd,cmd,ap);
va_end(ap);
return ret;
}
6ecc0: 2002 movel %d2,%d0 <== NOT EXECUTED
*/
if (ret >= 0) {
int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );
if (err) {
errno = err;
6ecc2: 2083 movel %d3,%a0@ <== NOT EXECUTED
va_list ap;
va_start( ap, cmd );
ret = vfcntl(fd,cmd,ap);
va_end(ap);
return ret;
}
6ecc4: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
6ecca: 4e5e unlk %fp <== NOT EXECUTED
6eccc: 4e75 rts <== NOT EXECUTED
else
iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC;
break;
case F_GETFL: /* more flags (cloexec) */
ret = rtems_libio_to_fcntl_flags( iop->flags );
6ecce: 2f00 movel %d0,%sp@-
6ecd0: 4eb9 0004 7684 jsr 47684 <rtems_libio_to_fcntl_flags>
6ecd6: 588f addql #4,%sp
6ecd8: 2400 movel %d0,%d2
/*
* If we got this far successfully, then we give the optional
* filesystem specific handler a chance to process this.
*/
if (ret >= 0) {
6ecda: 6cc6 bges 6eca2 <fcntl+0xaa> <== ALWAYS TAKEN
va_list ap;
va_start( ap, cmd );
ret = vfcntl(fd,cmd,ap);
va_end(ap);
return ret;
}
6ecdc: 2002 movel %d2,%d0 <== NOT EXECUTED
6ecde: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
6ece4: 4e5e unlk %fp <== NOT EXECUTED
6ece6: 4e75 rts <== NOT EXECUTED
{
rtems_libio_t *iop;
int fd2;
int flags;
int mask;
int ret = 0;
6ece8: 4282 clrl %d2
* if a new process is exec()'ed. Since RTEMS does not support
* processes, then we can ignore this one except to make
* F_GETFD work.
*/
if ( va_arg( ap, int ) )
6ecea: 4aae 0010 tstl %fp@(16)
6ecee: 6700 00a8 beqw 6ed98 <fcntl+0x1a0>
iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;
6ecf2: 08c0 000b bset #11,%d0
6ecf6: 2540 000c movel %d0,%a2@(12)
6ecfa: 60a6 bras 6eca2 <fcntl+0xaa>
fd2 = va_arg( ap, int );
ret = duplicate_iop( iop, fd2 );
break;
case F_GETFD: /* get f_flags */
ret = ((iop->flags & LIBIO_FLAGS_CLOSE_ON_EXEC) != 0);
6ecfc: 2400 movel %d0,%d2
6ecfe: 720b moveq #11,%d1
6ed00: e2aa lsrl %d1,%d2
6ed02: 7001 moveq #1,%d0
6ed04: c480 andl %d0,%d2
6ed06: 609a bras 6eca2 <fcntl+0xaa>
/*
* FIXME: We ignore the start value fd2 for the file descriptor search. This
* is not POSIX conform.
*/
rtems_libio_t *diop = rtems_libio_allocate();
6ed08: 4eb9 0004 76d4 jsr 476d4 <rtems_libio_allocate>
6ed0e: 2640 moveal %d0,%a3
if (diop != NULL) {
6ed10: 4a80 tstl %d0
6ed12: 6700 ff2c beqw 6ec40 <fcntl+0x48>
int oflag = rtems_libio_to_fcntl_flags( iop->flags );
6ed16: 2f2a 000c movel %a2@(12),%sp@-
6ed1a: 4eb9 0004 7684 jsr 47684 <rtems_libio_to_fcntl_flags>
oflag &= ~O_CREAT;
diop->flags |= rtems_libio_fcntl_flags( oflag );
6ed20: 282b 000c movel %a3@(12),%d4
rtems_libio_t *diop = rtems_libio_allocate();
if (diop != NULL) {
int oflag = rtems_libio_to_fcntl_flags( iop->flags );
oflag &= ~O_CREAT;
6ed24: 2400 movel %d0,%d2
6ed26: 0882 0009 bclr #9,%d2
diop->flags |= rtems_libio_fcntl_flags( oflag );
6ed2a: 2f02 movel %d2,%sp@-
6ed2c: 4eb9 0004 7644 jsr 47644 <rtems_libio_fcntl_flags>
int cmd,
int arg
)
{
return fcntl( fd, cmd, arg );
}
6ed32: 206a 0024 moveal %a2@(36),%a0
if (diop != NULL) {
int oflag = rtems_libio_to_fcntl_flags( iop->flags );
oflag &= ~O_CREAT;
diop->flags |= rtems_libio_fcntl_flags( oflag );
6ed36: 8084 orl %d4,%d0
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
(*mt_entry->ops->lock_h)( mt_entry );
6ed38: 2268 000c moveal %a0@(12),%a1
6ed3c: 2740 000c movel %d0,%a3@(12)
6ed40: 2f08 movel %a0,%sp@-
6ed42: 2051 moveal %a1@,%a0
6ed44: 4e90 jsr %a0@
rtems_filesystem_instance_lock( &iop->pathinfo );
rtems_filesystem_location_clone( &diop->pathinfo, &iop->pathinfo );
6ed46: 486a 0010 pea %a2@(16)
6ed4a: 486b 0010 pea %a3@(16)
6ed4e: 4eb9 0005 63d4 jsr 563d4 <rtems_filesystem_location_clone>
int cmd,
int arg
)
{
return fcntl( fd, cmd, arg );
}
6ed54: 206a 0024 moveal %a2@(36),%a0
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
(*mt_entry->ops->unlock_h)( mt_entry );
6ed58: 2268 000c moveal %a0@(12),%a1
6ed5c: 2f08 movel %a0,%sp@-
6ed5e: 2069 0004 moveal %a1@(4),%a0
6ed62: 4e90 jsr %a0@
/*
* XXX: We call the open handler here to have a proper open and close pair.
*
* FIXME: What to do with the path?
*/
rv = (*diop->pathinfo.handlers->open_h)( diop, NULL, oflag, 0 );
6ed64: 206b 0020 moveal %a3@(32),%a0
6ed68: 42a7 clrl %sp@-
6ed6a: 2f02 movel %d2,%sp@-
6ed6c: 42a7 clrl %sp@-
6ed6e: 2f0b movel %a3,%sp@-
6ed70: 2050 moveal %a0@,%a0
6ed72: 4e90 jsr %a0@
if ( rv == 0 ) {
6ed74: 4fef 0028 lea %sp@(40),%sp
/*
* XXX: We call the open handler here to have a proper open and close pair.
*
* FIXME: What to do with the path?
*/
rv = (*diop->pathinfo.handlers->open_h)( diop, NULL, oflag, 0 );
6ed78: 2400 movel %d0,%d2
if ( rv == 0 ) {
6ed7a: 6642 bnes 6edbe <fcntl+0x1c6> <== NEVER TAKEN
rv = diop - rtems_libio_iops;
6ed7c: 240b movel %a3,%d2
6ed7e: 94b9 0008 58c4 subl 858c4 <rtems_libio_iops>,%d2
6ed84: 203c aaaa aaab movel #-1431655765,%d0
6ed8a: e882 asrl #4,%d2
6ed8c: 4c00 2800 mulsl %d0,%d2
/*
* If we got this far successfully, then we give the optional
* filesystem specific handler a chance to process this.
*/
if (ret >= 0) {
6ed90: 6a00 ff10 bplw 6eca2 <fcntl+0xaa>
6ed94: 6000 ff46 braw 6ecdc <fcntl+0xe4> <== NOT EXECUTED
*/
if ( va_arg( ap, int ) )
iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;
else
iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC;
6ed98: 0880 000b bclr #11,%d0
6ed9c: 2540 000c movel %d0,%a2@(12)
6eda0: 6000 ff00 braw 6eca2 <fcntl+0xaa>
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
6eda4: 4eb9 0006 0414 jsr 60414 <__errno>
6edaa: 74ff moveq #-1,%d2
6edac: 7209 moveq #9,%d1
6edae: 2040 moveal %d0,%a0
va_list ap;
va_start( ap, cmd );
ret = vfcntl(fd,cmd,ap);
va_end(ap);
return ret;
}
6edb0: 2002 movel %d2,%d0
6edb2: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
6edb8: 2081 movel %d1,%a0@
va_list ap;
va_start( ap, cmd );
ret = vfcntl(fd,cmd,ap);
va_end(ap);
return ret;
}
6edba: 4e5e unlk %fp
6edbc: 4e75 rts
*/
rv = (*diop->pathinfo.handlers->open_h)( diop, NULL, oflag, 0 );
if ( rv == 0 ) {
rv = diop - rtems_libio_iops;
} else {
rtems_libio_free( diop );
6edbe: 2f0b movel %a3,%sp@- <== NOT EXECUTED
6edc0: 4eb9 0004 773c jsr 4773c <rtems_libio_free> <== NOT EXECUTED
6edc6: 588f addql #4,%sp <== NOT EXECUTED
/*
* If we got this far successfully, then we give the optional
* filesystem specific handler a chance to process this.
*/
if (ret >= 0) {
6edc8: 4a82 tstl %d2 <== NOT EXECUTED
6edca: 6c00 fed6 bgew 6eca2 <fcntl+0xaa> <== NOT EXECUTED
6edce: 6000 ff0c braw 6ecdc <fcntl+0xe4> <== NOT EXECUTED
0004d784 <fifo_open>:
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4d784: 4e56 ffe8 linkw %fp,#-24
static int pipe_lock(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (pipe_semaphore == RTEMS_ID_NONE) {
4d788: 2039 0006 1718 movel 61718 <pipe_semaphore>,%d0
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4d78e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
4d792: 47f9 0004 8df0 lea 48df0 <rtems_semaphore_obtain>,%a3
static int pipe_lock(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (pipe_semaphore == RTEMS_ID_NONE) {
4d798: 4a80 tstl %d0
4d79a: 6758 beqs 4d7f4 <fifo_open+0x70>
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
4d79c: 42a7 clrl %sp@-
4d79e: 42a7 clrl %sp@-
4d7a0: 2f00 movel %d0,%sp@-
4d7a2: 4e93 jsr %a3@
}
if (sc == RTEMS_SUCCESSFUL) {
4d7a4: 4fef 000c lea %sp@(12),%sp
4d7a8: 4a80 tstl %d0
4d7aa: 6600 0208 bnew 4d9b4 <fifo_open+0x230>
err = pipe_lock();
if (err)
return err;
pipe = *pipep;
4d7ae: 206e 0008 moveal %fp@(8),%a0
4d7b2: 2850 moveal %a0@,%a4
if (pipe == NULL) {
4d7b4: 4a8c tstl %a4
4d7b6: 676e beqs 4d826 <fifo_open+0xa2>
err = pipe_alloc(&pipe);
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
4d7b8: 42a7 clrl %sp@-
4d7ba: 42a7 clrl %sp@-
4d7bc: 2f2c 0028 movel %a4@(40),%sp@-
4d7c0: 4e93 jsr %a3@
4d7c2: 4fef 000c lea %sp@(12),%sp
4d7c6: 4a80 tstl %d0
4d7c8: 6700 015c beqw 4d926 <fifo_open+0x1a2>
err = -EINTR;
if (*pipep == NULL) {
4d7cc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4d7d0: 4a90 tstl %a0@ <== NOT EXECUTED
4d7d2: 6700 01f0 beqw 4d9c4 <fifo_open+0x240> <== NOT EXECUTED
#ifdef RTEMS_DEBUG
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc =
#endif
rtems_semaphore_release(pipe_semaphore);
4d7d6: 2f39 0006 1718 movel 61718 <pipe_semaphore>,%sp@- <== NOT EXECUTED
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
err = -EINTR;
4d7dc: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED
#ifdef RTEMS_DEBUG
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc =
#endif
rtems_semaphore_release(pipe_semaphore);
4d7e0: 4eb9 0004 8f48 jsr 48f48 <rtems_semaphore_release> <== NOT EXECUTED
4d7e6: 588f addql #4,%sp <== NOT EXECUTED
return 0;
out_error:
pipe_release(pipep, iop);
return err;
}
4d7e8: 200a movel %a2,%d0
4d7ea: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5
4d7f0: 4e5e unlk %fp
4d7f2: 4e75 rts
*/
#include <rtems/userenv.h>
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4d7f4: 42a7 clrl %sp@-
4d7f6: 42a7 clrl %sp@-
4d7f8: 2f39 0006 1e10 movel 61e10 <rtems_libio_semaphore>,%sp@-
4d7fe: 4e93 jsr %a3@
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (pipe_semaphore == RTEMS_ID_NONE) {
rtems_libio_lock();
if (pipe_semaphore == RTEMS_ID_NONE) {
4d800: 4fef 000c lea %sp@(12),%sp
4d804: 4ab9 0006 1718 tstl 61718 <pipe_semaphore>
4d80a: 6700 0174 beqw 4d980 <fifo_open+0x1fc>
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4d80e: 2f39 0006 1e10 movel 61e10 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4d814: 4eb9 0004 8f48 jsr 48f48 <rtems_semaphore_release> <== NOT EXECUTED
4d81a: 2039 0006 1718 movel 61718 <pipe_semaphore>,%d0 <== NOT EXECUTED
4d820: 588f addql #4,%sp <== NOT EXECUTED
4d822: 6000 ff78 braw 4d79c <fifo_open+0x18> <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4d826: 4878 0034 pea 34 <OPER2+0x20>
4d82a: 45f9 0004 47d4 lea 447d4 <malloc>,%a2
4d830: 4e92 jsr %a2@
if (pipe == NULL)
4d832: 588f addql #4,%sp
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4d834: 2840 moveal %d0,%a4
if (pipe == NULL)
4d836: 4a80 tstl %d0
4d838: 6700 0202 beqw 4da3c <fifo_open+0x2b8>
return err;
memset(pipe, 0, sizeof(pipe_control_t));
4d83c: 2040 moveal %d0,%a0
pipe->Size = PIPE_BUF;
4d83e: 203c 0000 0200 movel #512,%d0
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
if (pipe == NULL)
return err;
memset(pipe, 0, sizeof(pipe_control_t));
4d844: 4298 clrl %a0@+
4d846: 5888 addql #4,%a0
4d848: 4298 clrl %a0@+
4d84a: 4298 clrl %a0@+
4d84c: 4298 clrl %a0@+
4d84e: 4298 clrl %a0@+
4d850: 4298 clrl %a0@+
4d852: 4298 clrl %a0@+
4d854: 4298 clrl %a0@+
4d856: 4298 clrl %a0@+
4d858: 4298 clrl %a0@+
4d85a: 4298 clrl %a0@+
4d85c: 4290 clrl %a0@
pipe->Size = PIPE_BUF;
4d85e: 2940 0004 movel %d0,%a4@(4)
pipe->Buffer = malloc(pipe->Size);
4d862: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb>
4d866: 4e92 jsr %a2@
if (! pipe->Buffer)
4d868: 588f addql #4,%sp
4d86a: 45f9 0004 4394 lea 44394 <free>,%a2
if (pipe == NULL)
return err;
memset(pipe, 0, sizeof(pipe_control_t));
pipe->Size = PIPE_BUF;
pipe->Buffer = malloc(pipe->Size);
4d870: 2880 movel %d0,%a4@
if (! pipe->Buffer)
4d872: 6700 01c2 beqw 4da36 <fifo_open+0x2b2>
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d876: 486c 002c pea %a4@(44)
4d87a: 45f9 0004 eaf8 lea 4eaf8 <rtems_barrier_create>,%a2
rtems_build_name ('P', 'I', 'r', c),
4d880: 1039 0006 0858 moveb 60858 <c.6147>,%d0
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d886: 42a7 clrl %sp@-
rtems_build_name ('P', 'I', 'r', c),
4d888: 49c0 extbl %d0
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d88a: 42a7 clrl %sp@-
4d88c: 0080 5049 7200 oril #1346990592,%d0
4d892: 2f00 movel %d0,%sp@-
4d894: 4e92 jsr %a2@
4d896: 4fef 0010 lea %sp@(16),%sp
4d89a: 4a80 tstl %d0
4d89c: 6600 018c bnew 4da2a <fifo_open+0x2a6>
rtems_build_name ('P', 'I', 'r', c),
RTEMS_BARRIER_MANUAL_RELEASE, 0,
&pipe->readBarrier) != RTEMS_SUCCESSFUL)
goto err_rbar;
if (rtems_barrier_create(
4d8a0: 486c 0030 pea %a4@(48)
rtems_build_name ('P', 'I', 'w', c),
4d8a4: 1039 0006 0858 moveb 60858 <c.6147>,%d0
if (rtems_barrier_create(
rtems_build_name ('P', 'I', 'r', c),
RTEMS_BARRIER_MANUAL_RELEASE, 0,
&pipe->readBarrier) != RTEMS_SUCCESSFUL)
goto err_rbar;
if (rtems_barrier_create(
4d8aa: 42a7 clrl %sp@-
rtems_build_name ('P', 'I', 'w', c),
4d8ac: 49c0 extbl %d0
if (rtems_barrier_create(
rtems_build_name ('P', 'I', 'r', c),
RTEMS_BARRIER_MANUAL_RELEASE, 0,
&pipe->readBarrier) != RTEMS_SUCCESSFUL)
goto err_rbar;
if (rtems_barrier_create(
4d8ae: 42a7 clrl %sp@-
4d8b0: 0080 5049 7700 oril #1346991872,%d0
4d8b6: 2f00 movel %d0,%sp@-
4d8b8: 4e92 jsr %a2@
4d8ba: 4fef 0010 lea %sp@(16),%sp
4d8be: 45f9 0004 ebcc lea 4ebcc <rtems_barrier_delete>,%a2
4d8c4: 4a80 tstl %d0
4d8c6: 6600 015a bnew 4da22 <fifo_open+0x29e>
rtems_build_name ('P', 'I', 'w', c),
RTEMS_BARRIER_MANUAL_RELEASE, 0,
&pipe->writeBarrier) != RTEMS_SUCCESSFUL)
goto err_wbar;
if (rtems_semaphore_create(
4d8ca: 486c 0028 pea %a4@(40)
rtems_build_name ('P', 'I', 's', c), 1,
4d8ce: 1039 0006 0858 moveb 60858 <c.6147>,%d0
if (rtems_barrier_create(
rtems_build_name ('P', 'I', 'w', c),
RTEMS_BARRIER_MANUAL_RELEASE, 0,
&pipe->writeBarrier) != RTEMS_SUCCESSFUL)
goto err_wbar;
if (rtems_semaphore_create(
4d8d4: 42a7 clrl %sp@-
4d8d6: 4878 0010 pea 10 <INVALID_OPERATION>
rtems_build_name ('P', 'I', 's', c), 1,
4d8da: 49c0 extbl %d0
if (rtems_barrier_create(
rtems_build_name ('P', 'I', 'w', c),
RTEMS_BARRIER_MANUAL_RELEASE, 0,
&pipe->writeBarrier) != RTEMS_SUCCESSFUL)
goto err_wbar;
if (rtems_semaphore_create(
4d8dc: 4878 0001 pea 1 <ADD>
4d8e0: 0080 5049 7300 oril #1346990848,%d0
4d8e6: 2f00 movel %d0,%sp@-
4d8e8: 4eb9 0004 8b2c jsr 48b2c <rtems_semaphore_create>
4d8ee: 4fef 0014 lea %sp@(20),%sp
4d8f2: 4a80 tstl %d0
4d8f4: 6600 011e bnew 4da14 <fifo_open+0x290>
#ifdef RTEMS_POSIX_API
pipe_interruptible(pipe);
#endif
*pipep = pipe;
if (c ++ == 'z')
4d8f8: 747a moveq #122,%d2
4d8fa: 1039 0006 0858 moveb 60858 <c.6147>,%d0
4d900: 1200 moveb %d0,%d1
4d902: 49c1 extbl %d1
4d904: b481 cmpl %d1,%d2
4d906: 6700 0100 beqw 4da08 <fifo_open+0x284>
err = pipe_alloc(&pipe);
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
4d90a: 42a7 clrl %sp@-
#ifdef RTEMS_POSIX_API
pipe_interruptible(pipe);
#endif
*pipep = pipe;
if (c ++ == 'z')
4d90c: 5280 addql #1,%d0
err = pipe_alloc(&pipe);
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
4d90e: 42a7 clrl %sp@-
4d910: 2f2c 0028 movel %a4@(40),%sp@-
#ifdef RTEMS_POSIX_API
pipe_interruptible(pipe);
#endif
*pipep = pipe;
if (c ++ == 'z')
4d914: 13c0 0006 0858 moveb %d0,60858 <c.6147>
err = pipe_alloc(&pipe);
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
4d91a: 4e93 jsr %a3@
4d91c: 4fef 000c lea %sp@(12),%sp
4d920: 4a80 tstl %d0
4d922: 6600 fea8 bnew 4d7cc <fifo_open+0x48>
err = -EINTR;
if (*pipep == NULL) {
4d926: 206e 0008 moveal %fp@(8),%a0
4d92a: 4a90 tstl %a0@
4d92c: 6700 012e beqw 4da5c <fifo_open+0x2d8>
#ifdef RTEMS_DEBUG
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc =
#endif
rtems_semaphore_release(pipe_semaphore);
4d930: 2f39 0006 1718 movel 61718 <pipe_semaphore>,%sp@-
4d936: 49f9 0004 8f48 lea 48f48 <rtems_semaphore_release>,%a4
4d93c: 4e94 jsr %a4@
int err;
err = pipe_new(pipep);
if (err)
return err;
pipe = *pipep;
4d93e: 206e 0008 moveal %fp@(8),%a0
switch (LIBIO_ACCMODE(iop)) {
4d942: 7006 moveq #6,%d0
4d944: 588f addql #4,%sp
4d946: 7204 moveq #4,%d1
int err;
err = pipe_new(pipep);
if (err)
return err;
pipe = *pipep;
4d948: 2450 moveal %a0@,%a2
switch (LIBIO_ACCMODE(iop)) {
4d94a: 206e 000c moveal %fp@(12),%a0
4d94e: c0a8 000c andl %a0@(12),%d0
4d952: b280 cmpl %d0,%d1
4d954: 6700 01f0 beqw 4db46 <fifo_open+0x3c2>
4d958: 7406 moveq #6,%d2
4d95a: b480 cmpl %d0,%d2
4d95c: 6700 018e beqw 4daec <fifo_open+0x368>
4d960: 123c 0002 moveb #2,%d1
4d964: b280 cmpl %d0,%d1
4d966: 6700 00fe beqw 4da66 <fifo_open+0x2e2>
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d96a: 2f2a 0028 movel %a2@(40),%sp@-
return 0;
4d96e: 95ca subal %a2,%a2
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d970: 4e94 jsr %a4@
return 0;
4d972: 588f addql #4,%sp
out_error:
pipe_release(pipep, iop);
return err;
}
4d974: 200a movel %a2,%d0
4d976: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5
4d97c: 4e5e unlk %fp
4d97e: 4e75 rts
if (pipe_semaphore == RTEMS_ID_NONE) {
rtems_libio_lock();
if (pipe_semaphore == RTEMS_ID_NONE) {
sc = rtems_semaphore_create(
4d980: 4879 0006 1718 pea 61718 <pipe_semaphore>
4d986: 42a7 clrl %sp@-
4d988: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
4d98c: 4878 0001 pea 1 <ADD>
4d990: 2f3c 5049 5045 movel #1346981957,%sp@-
4d996: 4eb9 0004 8b2c jsr 48b2c <rtems_semaphore_create>
4d99c: 2f39 0006 1e10 movel 61e10 <rtems_libio_semaphore>,%sp@-
4d9a2: 2400 movel %d0,%d2
4d9a4: 4eb9 0004 8f48 jsr 48f48 <rtems_semaphore_release>
}
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
4d9aa: 4fef 0018 lea %sp@(24),%sp
4d9ae: 4a82 tstl %d2
4d9b0: 6700 00a0 beqw 4da52 <fifo_open+0x2ce>
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
err = -ENXIO;
4d9b4: 347c fff4 moveaw #-12,%a2
return 0;
out_error:
pipe_release(pipep, iop);
return err;
}
4d9b8: 200a movel %a2,%d0
4d9ba: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5
4d9c0: 4e5e unlk %fp
4d9c2: 4e75 rts
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d9c4: 2f2c 002c movel %a4@(44),%sp@- <== NOT EXECUTED
4d9c8: 4bf9 0004 ebcc lea 4ebcc <rtems_barrier_delete>,%a5 <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
rtems_semaphore_delete(pipe->Semaphore);
free(pipe->Buffer);
4d9ce: 47f9 0004 4394 lea 44394 <free>,%a3 <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d9d4: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
4d9d6: 2f2c 0030 movel %a4@(48),%sp@- <== NOT EXECUTED
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
err = -EINTR;
4d9da: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
rtems_barrier_delete(pipe->writeBarrier);
4d9de: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_semaphore_delete(pipe->Semaphore);
4d9e0: 2f2c 0028 movel %a4@(40),%sp@- <== NOT EXECUTED
4d9e4: 4eb9 0004 8d18 jsr 48d18 <rtems_semaphore_delete> <== NOT EXECUTED
free(pipe->Buffer);
4d9ea: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
4d9ec: 4e93 jsr %a3@ <== NOT EXECUTED
free(pipe);
4d9ee: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d9f0: 4e93 jsr %a3@ <== NOT EXECUTED
4d9f2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
#ifdef RTEMS_DEBUG
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc =
#endif
rtems_semaphore_release(pipe_semaphore);
4d9f6: 2f39 0006 1718 movel 61718 <pipe_semaphore>,%sp@- <== NOT EXECUTED
4d9fc: 4eb9 0004 8f48 jsr 48f48 <rtems_semaphore_release> <== NOT EXECUTED
4da02: 588f addql #4,%sp <== NOT EXECUTED
4da04: 6000 fde2 braw 4d7e8 <fifo_open+0x64> <== NOT EXECUTED
pipe_interruptible(pipe);
#endif
*pipep = pipe;
if (c ++ == 'z')
c = 'a';
4da08: 7061 moveq #97,%d0
4da0a: 13c0 0006 0858 moveb %d0,60858 <c.6147>
4da10: 6000 fda6 braw 4d7b8 <fifo_open+0x34>
return 0;
err_sem:
rtems_barrier_delete(pipe->writeBarrier);
4da14: 2f2c 0030 movel %a4@(48),%sp@-
4da18: 45f9 0004 ebcc lea 4ebcc <rtems_barrier_delete>,%a2
4da1e: 4e92 jsr %a2@
4da20: 588f addql #4,%sp
err_wbar:
rtems_barrier_delete(pipe->readBarrier);
4da22: 2f2c 002c movel %a4@(44),%sp@-
4da26: 4e92 jsr %a2@
4da28: 588f addql #4,%sp
err_rbar:
free(pipe->Buffer);
4da2a: 2f14 movel %a4@,%sp@-
4da2c: 45f9 0004 4394 lea 44394 <free>,%a2
4da32: 4e92 jsr %a2@
4da34: 588f addql #4,%sp
err_buf:
free(pipe);
4da36: 2f0c movel %a4,%sp@-
4da38: 4e92 jsr %a2@
4da3a: 588f addql #4,%sp
#ifdef RTEMS_DEBUG
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc =
#endif
rtems_semaphore_release(pipe_semaphore);
4da3c: 2f39 0006 1718 movel 61718 <pipe_semaphore>,%sp@-
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
err = -EINTR;
4da42: 347c fff4 moveaw #-12,%a2
#ifdef RTEMS_DEBUG
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc =
#endif
rtems_semaphore_release(pipe_semaphore);
4da46: 4eb9 0004 8f48 jsr 48f48 <rtems_semaphore_release>
4da4c: 588f addql #4,%sp
4da4e: 6000 fd98 braw 4d7e8 <fifo_open+0x64>
4da52: 2039 0006 1718 movel 61718 <pipe_semaphore>,%d0
4da58: 6000 fd42 braw 4d79c <fifo_open+0x18>
if (*pipep == NULL) {
if (err)
pipe_free(pipe);
else
*pipep = pipe;
4da5c: 206e 0008 moveal %fp@(8),%a0
4da60: 208c movel %a4,%a0@
4da62: 6000 fecc braw 4d930 <fifo_open+0x1ac>
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4da66: 202a 0010 movel %a2@(16),%d0
4da6a: 2200 movel %d0,%d1
4da6c: 5281 addql #1,%d1
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
4da6e: 52aa 0020 addql #1,%a2@(32)
if (pipe->Readers ++ == 0)
4da72: 2541 0010 movel %d1,%a2@(16)
4da76: 4a80 tstl %d0
4da78: 6760 beqs 4dada <fifo_open+0x356> <== ALWAYS TAKEN
PIPE_WAKEUPWRITERS(pipe);
if (pipe->Writers == 0) {
4da7a: 4aaa 0014 tstl %a2@(20)
4da7e: 6600 feea bnew 4d96a <fifo_open+0x1e6>
/* Not an error */
if (LIBIO_NODELAY(iop))
4da82: 206e 000c moveal %fp@(12),%a0
4da86: 7001 moveq #1,%d0
4da88: c0a8 000c andl %a0@(12),%d0
4da8c: 6600 fedc bnew 4d96a <fifo_open+0x1e6>
break;
prevCounter = pipe->writerCounter;
4da90: 242a 0024 movel %a2@(36),%d2
4da94: 4bf9 0004 eccc lea 4eccc <rtems_barrier_wait>,%a5
err = -EINTR;
/* Wait until a writer opens the pipe */
do {
PIPE_UNLOCK(pipe);
4da9a: 2f2a 0028 movel %a2@(40),%sp@-
4da9e: 4e94 jsr %a4@
if (! PIPE_READWAIT(pipe))
4daa0: 42a7 clrl %sp@-
4daa2: 2f2a 002c movel %a2@(44),%sp@-
4daa6: 4e95 jsr %a5@
4daa8: 4fef 000c lea %sp@(12),%sp
4daac: 4a80 tstl %d0
4daae: 6600 0116 bnew 4dbc6 <fifo_open+0x442>
goto out_error;
if (! PIPE_LOCK(pipe))
4dab2: 42a7 clrl %sp@-
4dab4: 42a7 clrl %sp@-
4dab6: 2f2a 0028 movel %a2@(40),%sp@-
4daba: 4e93 jsr %a3@
4dabc: 4fef 000c lea %sp@(12),%sp
4dac0: 4a80 tstl %d0
4dac2: 6600 0102 bnew 4dbc6 <fifo_open+0x442>
goto out_error;
} while (prevCounter == pipe->writerCounter);
4dac6: b4aa 0024 cmpl %a2@(36),%d2
4daca: 67ce beqs 4da9a <fifo_open+0x316> <== NEVER TAKEN
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4dacc: 2f2a 0028 movel %a2@(40),%sp@-
return 0;
4dad0: 95ca subal %a2,%a2
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4dad2: 4e94 jsr %a4@
return 0;
4dad4: 588f addql #4,%sp
4dad6: 6000 fe9c braw 4d974 <fifo_open+0x1f0>
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
4dada: 486e fffc pea %fp@(-4)
4dade: 2f2a 0030 movel %a2@(48),%sp@-
4dae2: 4eb9 0004 ec70 jsr 4ec70 <rtems_barrier_release>
4dae8: 508f addql #8,%sp
4daea: 608e bras 4da7a <fifo_open+0x2f6>
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4daec: 202a 0010 movel %a2@(16),%d0
4daf0: 2200 movel %d0,%d1
4daf2: 5281 addql #1,%d1
} while (prevCounter == pipe->readerCounter);
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
4daf4: 52aa 0020 addql #1,%a2@(32)
if (pipe->Readers ++ == 0)
4daf8: 2541 0010 movel %d1,%a2@(16)
4dafc: 4a80 tstl %d0
4dafe: 6734 beqs 4db34 <fifo_open+0x3b0> <== ALWAYS TAKEN
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4db00: 202a 0014 movel %a2@(20),%d0
4db04: 2400 movel %d0,%d2
4db06: 5282 addql #1,%d2
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
4db08: 52aa 0024 addql #1,%a2@(36)
if (pipe->Writers ++ == 0)
4db0c: 2542 0014 movel %d2,%a2@(20)
4db10: 4a80 tstl %d0
4db12: 6600 fe56 bnew 4d96a <fifo_open+0x1e6>
PIPE_WAKEUPREADERS(pipe);
4db16: 486e fffc pea %fp@(-4)
4db1a: 2f2a 002c movel %a2@(44),%sp@-
4db1e: 4eb9 0004 ec70 jsr 4ec70 <rtems_barrier_release>
4db24: 508f addql #8,%sp
break;
}
PIPE_UNLOCK(pipe);
4db26: 2f2a 0028 movel %a2@(40),%sp@-
return 0;
4db2a: 95ca subal %a2,%a2
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4db2c: 4e94 jsr %a4@
return 0;
4db2e: 588f addql #4,%sp
4db30: 6000 fe42 braw 4d974 <fifo_open+0x1f0>
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
4db34: 486e fffc pea %fp@(-4)
4db38: 2f2a 0030 movel %a2@(48),%sp@-
4db3c: 4eb9 0004 ec70 jsr 4ec70 <rtems_barrier_release>
4db42: 508f addql #8,%sp
4db44: 60ba bras 4db00 <fifo_open+0x37c>
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4db46: 202a 0014 movel %a2@(20),%d0
4db4a: 2200 movel %d0,%d1
4db4c: 5281 addql #1,%d1
} while (prevCounter == pipe->writerCounter);
}
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
4db4e: 52aa 0024 addql #1,%a2@(36)
if (pipe->Writers ++ == 0)
4db52: 2541 0014 movel %d1,%a2@(20)
4db56: 4a80 tstl %d0
4db58: 675a beqs 4dbb4 <fifo_open+0x430> <== ALWAYS TAKEN
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
4db5a: 4aaa 0010 tstl %a2@(16)
4db5e: 6600 fe0a bnew 4d96a <fifo_open+0x1e6>
4db62: 206e 000c moveal %fp@(12),%a0
4db66: 7001 moveq #1,%d0
4db68: c0a8 000c andl %a0@(12),%d0
4db6c: 6678 bnes 4dbe6 <fifo_open+0x462>
err = -ENXIO;
goto out_error;
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
4db6e: 242a 0020 movel %a2@(32),%d2
4db72: 4bf9 0004 eccc lea 4eccc <rtems_barrier_wait>,%a5
err = -EINTR;
do {
PIPE_UNLOCK(pipe);
4db78: 2f2a 0028 movel %a2@(40),%sp@-
4db7c: 4e94 jsr %a4@
if (! PIPE_WRITEWAIT(pipe))
4db7e: 42a7 clrl %sp@-
4db80: 2f2a 0030 movel %a2@(48),%sp@-
4db84: 4e95 jsr %a5@
4db86: 4fef 000c lea %sp@(12),%sp
4db8a: 4a80 tstl %d0
4db8c: 6638 bnes 4dbc6 <fifo_open+0x442> <== NEVER TAKEN
goto out_error;
if (! PIPE_LOCK(pipe))
4db8e: 42a7 clrl %sp@-
4db90: 42a7 clrl %sp@-
4db92: 2f2a 0028 movel %a2@(40),%sp@-
4db96: 4e93 jsr %a3@
4db98: 4fef 000c lea %sp@(12),%sp
4db9c: 4a80 tstl %d0
4db9e: 6626 bnes 4dbc6 <fifo_open+0x442> <== NEVER TAKEN
goto out_error;
} while (prevCounter == pipe->readerCounter);
4dba0: b4aa 0020 cmpl %a2@(32),%d2
4dba4: 67d2 beqs 4db78 <fifo_open+0x3f4> <== NEVER TAKEN
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4dba6: 2f2a 0028 movel %a2@(40),%sp@-
return 0;
4dbaa: 95ca subal %a2,%a2
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4dbac: 4e94 jsr %a4@
return 0;
4dbae: 588f addql #4,%sp
4dbb0: 6000 fdc2 braw 4d974 <fifo_open+0x1f0>
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
4dbb4: 486e fffc pea %fp@(-4)
4dbb8: 2f2a 002c movel %a2@(44),%sp@-
4dbbc: 4eb9 0004 ec70 jsr 4ec70 <rtems_barrier_release>
4dbc2: 508f addql #8,%sp
4dbc4: 6094 bras 4db5a <fifo_open+0x3d6>
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4dbc6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
/* Not an error */
if (LIBIO_NODELAY(iop))
break;
prevCounter = pipe->writerCounter;
err = -EINTR;
4dbca: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4dbce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4dbd2: 4eb9 0004 d69c jsr 4d69c <pipe_release> <== NOT EXECUTED
return err;
4dbd8: 508f addql #8,%sp <== NOT EXECUTED
}
4dbda: 200a movel %a2,%d0
4dbdc: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5
4dbe2: 4e5e unlk %fp
4dbe4: 4e75 rts
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4dbe6: 2f2a 0028 movel %a2@(40),%sp@-
err = -ENXIO;
4dbea: 347c fffa moveaw #-6,%a2
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4dbee: 4e94 jsr %a4@
err = -ENXIO;
goto out_error;
4dbf0: 588f addql #4,%sp
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4dbf2: 2f2e 000c movel %fp@(12),%sp@-
4dbf6: 2f2e 0008 movel %fp@(8),%sp@-
4dbfa: 4eb9 0004 d69c jsr 4d69c <pipe_release>
return err;
4dc00: 508f addql #8,%sp
4dc02: 60d6 bras 4dbda <fifo_open+0x456>
000486f0 <fpathconf>:
*/
long fpathconf(
int fd,
int name
)
{
486f0: 4e56 0000 linkw %fp,#0
486f4: 202e 0008 movel %fp@(8),%d0
486f8: 222e 000c movel %fp@(12),%d1
486fc: 2f02 movel %d2,%sp@-
long return_value;
rtems_libio_t *iop;
const rtems_filesystem_limits_and_options_t *the_limits;
rtems_libio_check_fd(fd);
486fe: b0b9 0005 cf94 cmpl 5cf94 <rtems_libio_number_iops>,%d0
48704: 6400 00f4 bccw 487fa <fpathconf+0x10a>
iop = rtems_libio_iop(fd);
48708: 2400 movel %d0,%d2 <== NOT EXECUTED
4870a: ed88 lsll #6,%d0 <== NOT EXECUTED
4870c: e98a lsll #4,%d2 <== NOT EXECUTED
4870e: 2079 0005 df8c moveal 5df8c <rtems_libio_iops>,%a0 <== NOT EXECUTED
48714: 9082 subl %d2,%d0 <== NOT EXECUTED
48716: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
48718: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
4871c: 0280 0000 0100 andil #256,%d0 <== NOT EXECUTED
48722: 6700 00d6 beqw 487fa <fpathconf+0x10a> <== NOT EXECUTED
/*
* Now process the information request.
*/
the_limits = iop->pathinfo.mt_entry->pathconf_limits_and_options;
48726: 2068 0024 moveal %a0@(36),%a0 <== NOT EXECUTED
switch ( name ) {
4872a: 700b moveq #11,%d0 <== NOT EXECUTED
/*
* Now process the information request.
*/
the_limits = iop->pathinfo.mt_entry->pathconf_limits_and_options;
4872c: 2068 002a moveal %a0@(42),%a0 <== NOT EXECUTED
switch ( name ) {
48730: b081 cmpl %d1,%d0 <== NOT EXECUTED
48732: 6416 bccs 4874a <fpathconf+0x5a> <== NOT EXECUTED
break;
case _PC_SYNC_IO:
return_value = the_limits->posix_sync_io;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
48734: 4eb9 0004 a04c jsr 4a04c <__errno> <== NOT EXECUTED
break;
}
return return_value;
}
4873a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
break;
case _PC_SYNC_IO:
return_value = the_limits->posix_sync_io;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4873e: 2040 moveal %d0,%a0 <== NOT EXECUTED
48740: 7216 moveq #22,%d1 <== NOT EXECUTED
48742: 70ff moveq #-1,%d0 <== NOT EXECUTED
break;
}
return return_value;
}
48744: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_SYNC_IO:
return_value = the_limits->posix_sync_io;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
48746: 2081 movel %d1,%a0@ <== NOT EXECUTED
break;
}
return return_value;
}
48748: 4e75 rts <== NOT EXECUTED
* Now process the information request.
*/
the_limits = iop->pathinfo.mt_entry->pathconf_limits_and_options;
switch ( name ) {
4874a: 303b 1a08 movew %pc@(48754 <fpathconf+0x64>,%d1:l:2),%d0<== NOT EXECUTED
4874e: 48c0 extl %d0 <== NOT EXECUTED
48750: 4efb 0802 jmp %pc@(48754 <fpathconf+0x64>,%d0:l) <== NOT EXECUTED
48754: 0090 0084 0078 oril #8650872,%d0 <== NOT EXECUTED
4875a: 006c .short 0x006c <== NOT EXECUTED
4875c: 0060 .short 0x0060 <== NOT EXECUTED
4875e: 0054 .short 0x0054 <== NOT EXECUTED
48760: 0048 .short 0x0048 <== NOT EXECUTED
48762: 003c .short 0x003c <== NOT EXECUTED
48764: 0030 .short 0x0030 <== NOT EXECUTED
48766: 0024 .short 0x0024 <== NOT EXECUTED
48768: 0018 .short 0x0018 <== NOT EXECUTED
4876a: 009a 242e fffc oril #607059964,%d2 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
48770: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_ASYNC_IO:
return_value = the_limits->posix_async_io;
break;
case _PC_PRIO_IO:
return_value = the_limits->posix_prio_io;
48772: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
48776: 4e75 rts <== NOT EXECUTED
48778: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4877c: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_VDISABLE:
return_value = the_limits->posix_vdisable;
break;
case _PC_ASYNC_IO:
return_value = the_limits->posix_async_io;
4877e: 2028 0018 movel %a0@(24),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
48782: 4e75 rts <== NOT EXECUTED
48784: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
48788: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_NO_TRUNC:
return_value = the_limits->posix_no_trunc;
break;
case _PC_VDISABLE:
return_value = the_limits->posix_vdisable;
4878a: 2028 002c movel %a0@(44),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
4878e: 4e75 rts <== NOT EXECUTED
48790: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
48794: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_CHOWN_RESTRICTED:
return_value = the_limits->posix_chown_restrictions;
break;
case _PC_NO_TRUNC:
return_value = the_limits->posix_no_trunc;
48796: 2028 0020 movel %a0@(32),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
4879a: 4e75 rts <== NOT EXECUTED
4879c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
487a0: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_PIPE_BUF:
return_value = the_limits->pipe_buf;
break;
case _PC_CHOWN_RESTRICTED:
return_value = the_limits->posix_chown_restrictions;
487a2: 2028 001c movel %a0@(28),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
487a6: 4e75 rts <== NOT EXECUTED
487a8: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
487ac: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_PATH_MAX:
return_value = the_limits->path_max;
break;
case _PC_PIPE_BUF:
return_value = the_limits->pipe_buf;
487ae: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
487b2: 4e75 rts <== NOT EXECUTED
487b4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
487b8: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_NAME_MAX:
return_value = the_limits->name_max;
break;
case _PC_PATH_MAX:
return_value = the_limits->path_max;
487ba: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
487be: 4e75 rts <== NOT EXECUTED
487c0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
487c4: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_MAX_INPUT:
return_value = the_limits->max_input;
break;
case _PC_NAME_MAX:
return_value = the_limits->name_max;
487c6: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
487ca: 4e75 rts <== NOT EXECUTED
487cc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
487d0: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_MAX_CANON:
return_value = the_limits->max_canon;
break;
case _PC_MAX_INPUT:
return_value = the_limits->max_input;
487d2: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
487d6: 4e75 rts <== NOT EXECUTED
487d8: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
487dc: 4e5e unlk %fp <== NOT EXECUTED
switch ( name ) {
case _PC_LINK_MAX:
return_value = the_limits->link_max;
break;
case _PC_MAX_CANON:
return_value = the_limits->max_canon;
487de: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
487e2: 4e75 rts <== NOT EXECUTED
487e4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
487e8: 4e5e unlk %fp <== NOT EXECUTED
the_limits = iop->pathinfo.mt_entry->pathconf_limits_and_options;
switch ( name ) {
case _PC_LINK_MAX:
return_value = the_limits->link_max;
487ea: 2010 movel %a0@,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
487ec: 4e75 rts <== NOT EXECUTED
487ee: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
487f2: 4e5e unlk %fp <== NOT EXECUTED
break;
case _PC_PRIO_IO:
return_value = the_limits->posix_prio_io;
break;
case _PC_SYNC_IO:
return_value = the_limits->posix_sync_io;
487f4: 2028 0028 movel %a0@(40),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
487f8: 4e75 rts <== NOT EXECUTED
rtems_libio_t *iop;
const rtems_filesystem_limits_and_options_t *the_limits;
rtems_libio_check_fd(fd);
iop = rtems_libio_iop(fd);
rtems_libio_check_is_open(iop);
487fa: 4eb9 0004 a04c jsr 4a04c <__errno>
48800: 7409 moveq #9,%d2
48802: 2040 moveal %d0,%a0
48804: 70ff moveq #-1,%d0
48806: 2082 movel %d2,%a0@
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
48808: 242e fffc movel %fp@(-4),%d2
4880c: 4e5e unlk %fp <== NOT EXECUTED
000430cc <free>:
#include <stdlib.h>
void free(
void *ptr
)
{
430cc: 4e56 0000 linkw %fp,#0
MSBUMP(free_calls, 1);
430d0: 52b9 0005 f90c addql #1,5f90c <rtems_malloc_statistics+0xc>
#include <stdlib.h>
void free(
void *ptr
)
{
430d6: 2f02 movel %d2,%sp@-
430d8: 242e 0008 movel %fp@(8),%d2
MSBUMP(free_calls, 1);
if ( !ptr )
430dc: 6732 beqs 43110 <free+0x44>
return;
/*
* Do not attempt to free memory if in a critical section or ISR.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
430de: 7003 moveq #3,%d0
430e0: b0b9 0005 fb6c cmpl 5fb6c <_System_state_Current>,%d0
430e6: 6758 beqs 43140 <free+0x74> <== ALWAYS TAKEN
}
/*
* If configured, update the statistics
*/
if ( rtems_malloc_statistics_helpers )
430e8: 2079 0005 e8c4 moveal 5e8c4 <rtems_malloc_statistics_helpers>,%a0
430ee: 4a88 tstl %a0
430f0: 670a beqs 430fc <free+0x30>
(*rtems_malloc_statistics_helpers->at_free)(ptr);
430f2: 2f02 movel %d2,%sp@-
430f4: 2068 0008 moveal %a0@(8),%a0
430f8: 4e90 jsr %a0@
430fa: 588f addql #4,%sp
if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {
430fc: 2f02 movel %d2,%sp@-
430fe: 2f39 0005 e21c movel 5e21c <RTEMS_Malloc_Heap>,%sp@-
43104: 4eb9 0004 91bc jsr 491bc <_Protected_heap_Free>
4310a: 508f addql #8,%sp
4310c: 4a00 tstb %d0
4310e: 6708 beqs 43118 <free+0x4c>
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
);
}
}
43110: 242e fffc movel %fp@(-4),%d2
43114: 4e5e unlk %fp
43116: 4e75 rts
if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {
printk( "Program heap: free of bad pointer %p -- range %p - %p \n",
ptr,
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
43118: 2079 0005 e21c moveal 5e21c <RTEMS_Malloc_Heap>,%a0
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_free)(ptr);
if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {
printk( "Program heap: free of bad pointer %p -- range %p - %p \n",
4311e: 2f28 001c movel %a0@(28),%sp@-
43122: 2f28 0018 movel %a0@(24),%sp@-
43126: 2f02 movel %d2,%sp@-
43128: 4879 0005 d224 pea 5d224 <rtems_status_assoc+0x168>
4312e: 4eb9 0004 3f4c jsr 43f4c <printk>
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
);
}
}
43134: 242e fffc movel %fp@(-4),%d2
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_free)(ptr);
if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {
printk( "Program heap: free of bad pointer %p -- range %p - %p \n",
43138: 4fef 0010 lea %sp@(16),%sp
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
);
}
}
4313c: 4e5e unlk %fp
4313e: 4e75 rts
/*
* Do not attempt to free memory if in a critical section or ISR.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
!malloc_is_system_state_OK() ) {
43140: 4eb9 0004 32b8 jsr 432b8 <malloc_is_system_state_OK>
return;
/*
* Do not attempt to free memory if in a critical section or ISR.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
43146: 4a00 tstb %d0
43148: 669e bnes 430e8 <free+0x1c>
!malloc_is_system_state_OK() ) {
malloc_deferred_free(ptr);
4314a: 2d42 0008 movel %d2,%fp@(8)
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
);
}
}
4314e: 242e fffc movel %fp@(-4),%d2
43152: 4e5e unlk %fp
/*
* Do not attempt to free memory if in a critical section or ISR.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
!malloc_is_system_state_OK() ) {
malloc_deferred_free(ptr);
43154: 4ef9 0004 331a jmp 4331a <malloc_deferred_free>
...
0005bca8 <fstat>:
int fstat(
int fd,
struct stat *sbuf
)
{
5bca8: 4e56 0000 linkw %fp,#0
5bcac: 202e 0008 movel %fp@(8),%d0
5bcb0: 2f0a movel %a2,%sp@-
5bcb2: 2f02 movel %d2,%sp@-
5bcb4: 242e 000c movel %fp@(12),%d2
rtems_libio_t *iop;
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
5bcb8: 6770 beqs 5bd2a <fstat+0x82> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EFAULT );
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
5bcba: b0b9 0005 e260 cmpl 5e260 <rtems_libio_number_iops>,%d0
5bcc0: 644e bccs 5bd10 <fstat+0x68>
5bcc2: 2200 movel %d0,%d1
5bcc4: ed88 lsll #6,%d0
5bcc6: e989 lsll #4,%d1
5bcc8: 2479 0005 f8f4 moveal 5f8f4 <rtems_libio_iops>,%a2
5bcce: 9081 subl %d1,%d0
5bcd0: d5c0 addal %d0,%a2
rtems_libio_check_fd( fd );
rtems_libio_check_is_open(iop);
5bcd2: 202a 000c movel %a2@(12),%d0
5bcd6: 0280 0000 0100 andil #256,%d0
5bcdc: 6732 beqs 5bd10 <fstat+0x68>
/*
* Zero out the stat structure so the various support
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
5bcde: 4878 0046 pea 46 <DBL_MANT_DIG+0x11>
5bce2: 42a7 clrl %sp@-
5bce4: 2f02 movel %d2,%sp@-
5bce6: 4eb9 0004 e9d4 jsr 4e9d4 <memset>
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
5bcec: 206a 0020 moveal %a2@(32),%a0
5bcf0: 45ea 0010 lea %a2@(16),%a2
5bcf4: 4fef 000c lea %sp@(12),%sp
5bcf8: 2d4a 0008 movel %a2,%fp@(8)
}
5bcfc: 246e fffc moveal %fp@(-4),%a2
* Zero out the stat structure so the various support
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
5bd00: 2d42 000c movel %d2,%fp@(12)
}
5bd04: 242e fff8 movel %fp@(-8),%d2
5bd08: 4e5e unlk %fp
* Zero out the stat structure so the various support
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
5bd0a: 2268 0018 moveal %a0@(24),%a1
5bd0e: 4ed1 jmp %a1@
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
rtems_libio_check_fd( fd );
rtems_libio_check_is_open(iop);
5bd10: 4eb9 0004 e144 jsr 4e144 <__errno>
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
}
5bd16: 242e fff8 movel %fp@(-8),%d2
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
rtems_libio_check_fd( fd );
rtems_libio_check_is_open(iop);
5bd1a: 2040 moveal %d0,%a0
5bd1c: 7009 moveq #9,%d0
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
}
5bd1e: 246e fffc moveal %fp@(-4),%a2
5bd22: 4e5e unlk %fp
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
rtems_libio_check_fd( fd );
rtems_libio_check_is_open(iop);
5bd24: 2080 movel %d0,%a0@
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
}
5bd26: 70ff moveq #-1,%d0
5bd28: 4e75 rts
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
rtems_set_errno_and_return_minus_one( EFAULT );
5bd2a: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
}
5bd30: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
rtems_set_errno_and_return_minus_one( EFAULT );
5bd34: 2040 moveal %d0,%a0 <== NOT EXECUTED
5bd36: 720e moveq #14,%d1 <== NOT EXECUTED
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
}
5bd38: 70ff moveq #-1,%d0 <== NOT EXECUTED
5bd3a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5bd3e: 4e5e unlk %fp <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
rtems_set_errno_and_return_minus_one( EFAULT );
5bd40: 2081 movel %d1,%a0@ <== NOT EXECUTED
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
}
00043224 <get_disk_entry>:
}
}
static rtems_disk_device *
get_disk_entry(dev_t dev, bool lookup_only)
{
43224: 4e56 0000 linkw %fp,#0
43228: 202e 0008 movel %fp@(8),%d0
4322c: 2f02 movel %d2,%sp@-
4322e: 206e 000c moveal %fp@(12),%a0
43232: 142e 0013 moveb %fp@(19),%d2
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
rtems_filesystem_split_dev_t(dev, major, minor);
if (major < disktab_size && disktab != NULL) {
43236: b0b9 0006 3636 cmpl 63636 <disktab_size>,%d0
4323c: 6436 bccs 43274 <get_disk_entry+0x50> <== NEVER TAKEN
4323e: 2239 0006 363a movel 6363a <disktab>,%d1
43244: 672e beqs 43274 <get_disk_entry+0x50> <== NEVER TAKEN
rtems_disk_device_table *dtab = disktab + major;
43246: 2241 moveal %d1,%a1
43248: e788 lsll #3,%d0
4324a: d3c0 addal %d0,%a1
if (minor < dtab->size && dtab->minor != NULL) {
4324c: b1e9 0004 cmpal %a1@(4),%a0
43250: 6422 bccs 43274 <get_disk_entry+0x50> <== NEVER TAKEN
43252: 2251 moveal %a1@,%a1
43254: 4a89 tstl %a1
43256: 671c beqs 43274 <get_disk_entry+0x50> <== NEVER TAKEN
rtems_disk_device *dd = dtab->minor [minor];
43258: 2031 8c00 movel %a1@(00000000,%a0:l:4),%d0
if (dd != NULL && !lookup_only) {
4325c: 6710 beqs 4326e <get_disk_entry+0x4a>
4325e: 4a02 tstb %d2
43260: 660c bnes 4326e <get_disk_entry+0x4a>
if (!dd->deleted) {
43262: 2040 moveal %d0,%a0
43264: 4a28 0040 tstb %a0@(64)
43268: 660a bnes 43274 <get_disk_entry+0x50>
++dd->uses;
4326a: 52a8 0014 addql #1,%a0@(20)
return dd;
}
}
return NULL;
}
4326e: 241f movel %sp@+,%d2
43270: 4e5e unlk %fp
43272: 4e75 rts
43274: 241f movel %sp@+,%d2
return dd;
}
}
return NULL;
43276: 4280 clrl %d0
}
43278: 4e5e unlk %fp <== NOT EXECUTED
000442ba <get_sector.part.0>:
* NOTES:
* get_sector() operates with device via bdbuf library,
* and does not support devices with sector size other than 512 bytes
*/
static rtems_status_code
get_sector(int fd,
442ba: 4e56 0000 linkw %fp,#0
442be: 2f0a movel %a2,%sp@-
new_off = lseek(fd, off, SEEK_SET);
if (new_off != off) {
return RTEMS_IO_ERROR;
}
s = (rtems_sector_data_t *) malloc(sizeof(rtems_sector_data_t) + RTEMS_IDE_SECTOR_SIZE);
442c0: 4878 0204 pea 204 <DBL_MANT_DIG+0x1cf>
442c4: 4eb9 0004 594c jsr 4594c <malloc>
if (s == NULL)
442ca: 588f addql #4,%sp
new_off = lseek(fd, off, SEEK_SET);
if (new_off != off) {
return RTEMS_IO_ERROR;
}
s = (rtems_sector_data_t *) malloc(sizeof(rtems_sector_data_t) + RTEMS_IDE_SECTOR_SIZE);
442cc: 2440 moveal %d0,%a2
if (s == NULL)
442ce: 4a80 tstl %d0
442d0: 6732 beqs 44304 <get_sector.part.0+0x4a> <== NEVER TAKEN
{
return RTEMS_NO_MEMORY;
}
n = read(fd, s->data, RTEMS_IDE_SECTOR_SIZE);
442d2: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb>
442d6: 486a 0004 pea %a2@(4)
442da: 2f2e 0008 movel %fp@(8),%sp@-
442de: 4eb9 0004 64e4 jsr 464e4 <read>
if (n != RTEMS_IDE_SECTOR_SIZE)
442e4: 4fef 000c lea %sp@(12),%sp
442e8: 0c80 0000 0200 cmpil #512,%d0
442ee: 671e beqs 4430e <get_sector.part.0+0x54> <== ALWAYS TAKEN
{
free(s);
442f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
442f2: 4eb9 0004 5344 jsr 45344 <free> <== NOT EXECUTED
s->sector_num = sector_num;
*sector = s;
return RTEMS_SUCCESSFUL;
}
442f8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
n = read(fd, s->data, RTEMS_IDE_SECTOR_SIZE);
if (n != RTEMS_IDE_SECTOR_SIZE)
{
free(s);
442fc: 588f addql #4,%sp <== NOT EXECUTED
return RTEMS_IO_ERROR;
442fe: 701b moveq #27,%d0 <== NOT EXECUTED
s->sector_num = sector_num;
*sector = s;
return RTEMS_SUCCESSFUL;
}
44300: 4e5e unlk %fp <== NOT EXECUTED
44302: 4e75 rts <== NOT EXECUTED
44304: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
s = (rtems_sector_data_t *) malloc(sizeof(rtems_sector_data_t) + RTEMS_IDE_SECTOR_SIZE);
if (s == NULL)
{
return RTEMS_NO_MEMORY;
44308: 701a moveq #26,%d0 <== NOT EXECUTED
s->sector_num = sector_num;
*sector = s;
return RTEMS_SUCCESSFUL;
}
4430a: 4e5e unlk %fp <== NOT EXECUTED
4430c: 4e75 rts <== NOT EXECUTED
{
free(s);
return RTEMS_IO_ERROR;
}
s->sector_num = sector_num;
4430e: 24ae 000c movel %fp@(12),%a2@
*sector = s;
return RTEMS_SUCCESSFUL;
44312: 4280 clrl %d0
return RTEMS_IO_ERROR;
}
s->sector_num = sector_num;
*sector = s;
44314: 206e 0010 moveal %fp@(16),%a0
44318: 208a movel %a2,%a0@
return RTEMS_SUCCESSFUL;
}
4431a: 246e fffc moveal %fp@(-4),%a2
4431e: 4e5e unlk %fp <== NOT EXECUTED
0006ee08 <getdents>:
int getdents(
int dd_fd,
char *dd_buf,
int dd_len
)
{
6ee08: 4e56 fff4 linkw %fp,#-12
6ee0c: 202e 0008 movel %fp@(8),%d0
6ee10: 48d7 040c moveml %d2-%d3/%a2,%sp@
6ee14: 242e 000c movel %fp@(12),%d2
6ee18: 262e 0010 movel %fp@(16),%d3
rtems_filesystem_node_types_t type;
/*
* Get the file control block structure associated with the file descriptor
*/
iop = rtems_libio_iop( dd_fd );
6ee1c: b0b9 0007 40d8 cmpl 740d8 <rtems_libio_number_iops>,%d0
6ee22: 643e bccs 6ee62 <getdents+0x5a> <== NEVER TAKEN
6ee24: 2200 movel %d0,%d1
6ee26: ed88 lsll #6,%d0
6ee28: e989 lsll #4,%d1
6ee2a: 2479 0008 58c4 moveal 858c4 <rtems_libio_iops>,%a2
6ee30: 9081 subl %d1,%d0
6ee32: d5c0 addal %d0,%a2
/*
* Make sure we are working on a directory
*/
type = rtems_filesystem_node_type( &iop->pathinfo );
6ee34: 486a 0010 pea %a2@(16)
6ee38: 4eb9 0004 9578 jsr 49578 <rtems_filesystem_node_type>
if ( type != RTEMS_FILESYSTEM_DIRECTORY )
6ee3e: 588f addql #4,%sp
6ee40: 4a80 tstl %d0
6ee42: 6622 bnes 6ee66 <getdents+0x5e>
/*
* Return the number of bytes that were actually transfered as a result
* of the read attempt.
*/
return (*iop->pathinfo.handlers->read_h)( iop, dd_buf, dd_len );
6ee44: 206a 0020 moveal %a2@(32),%a0
6ee48: 2d43 0010 movel %d3,%fp@(16)
6ee4c: 2d42 000c movel %d2,%fp@(12)
6ee50: 2d4a 0008 movel %a2,%fp@(8)
6ee54: 2268 0008 moveal %a0@(8),%a1
}
6ee58: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
6ee5e: 4e5e unlk %fp
/*
* Return the number of bytes that were actually transfered as a result
* of the read attempt.
*/
return (*iop->pathinfo.handlers->read_h)( iop, dd_buf, dd_len );
6ee60: 4ed1 jmp %a1@
rtems_filesystem_node_types_t type;
/*
* Get the file control block structure associated with the file descriptor
*/
iop = rtems_libio_iop( dd_fd );
6ee62: 95ca subal %a2,%a2 <== NOT EXECUTED
6ee64: 60ce bras 6ee34 <getdents+0x2c> <== NOT EXECUTED
/*
* Make sure we are working on a directory
*/
type = rtems_filesystem_node_type( &iop->pathinfo );
if ( type != RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
6ee66: 4eb9 0006 0414 jsr 60414 <__errno>
6ee6c: 2040 moveal %d0,%a0
6ee6e: 7014 moveq #20,%d0
/*
* Return the number of bytes that were actually transfered as a result
* of the read attempt.
*/
return (*iop->pathinfo.handlers->read_h)( iop, dd_buf, dd_len );
}
6ee70: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
/*
* Make sure we are working on a directory
*/
type = rtems_filesystem_node_type( &iop->pathinfo );
if ( type != RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
6ee76: 2080 movel %d0,%a0@
/*
* Return the number of bytes that were actually transfered as a result
* of the read attempt.
*/
return (*iop->pathinfo.handlers->read_h)( iop, dd_buf, dd_len );
}
6ee78: 70ff moveq #-1,%d0
6ee7a: 4e5e unlk %fp
...
00064b24 <getpw_r>:
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
64b24: 4e56 ffe4 linkw %fp,#-28
64b28: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
64b2c: 242e 0008 movel %fp@(8),%d2
64b30: 47fa fd1e lea %pc@(64850 <scanpw>),%a3
for(;;) {
if (!scanpw(fp, pwd, buffer, bufsize))
goto error_einval;
if (name) {
match = (strcmp(pwd->pw_name, name) == 0);
64b34: 49f9 0007 d284 lea 7d284 <strcmp>,%a4
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
64b3a: 246e 0010 moveal %fp@(16),%a2
64b3e: 2a2e 0014 movel %fp@(20),%d5
64b42: 282e 0018 movel %fp@(24),%d4
FILE *fp;
int match;
init_etc_passwd_group();
64b46: 4eb9 0006 4948 jsr 64948 <init_etc_passwd_group>
if ((fp = fopen("/etc/passwd", "r")) == NULL)
64b4c: 4879 0009 36aa pea 936aa <rtems_bdpart_shell_usage+0x313>
64b52: 4879 0009 6e4d pea 96e4d <RTEMS_BDPART_MBR_MASTER_TYPE+0x6b2>
64b58: 4eb9 0007 8172 jsr 78172 <fopen>
64b5e: 508f addql #8,%sp
64b60: 2600 movel %d0,%d3
64b62: 677a beqs 64bde <getpw_r+0xba>
rtems_set_errno_and_return_minus_one( EINVAL );
for(;;) {
if (!scanpw(fp, pwd, buffer, bufsize))
64b64: 2f04 movel %d4,%sp@-
64b66: 2f05 movel %d5,%sp@-
64b68: 2f0a movel %a2,%sp@-
64b6a: 2f03 movel %d3,%sp@-
64b6c: 4e93 jsr %a3@
64b6e: 4fef 0010 lea %sp@(16),%sp
64b72: 4a80 tstl %d0
64b74: 6746 beqs 64bbc <getpw_r+0x98>
goto error_einval;
if (name) {
64b76: 4a82 tstl %d2
64b78: 672e beqs 64ba8 <getpw_r+0x84>
match = (strcmp(pwd->pw_name, name) == 0);
64b7a: 2f02 movel %d2,%sp@-
64b7c: 2f12 movel %a2@,%sp@-
64b7e: 4e94 jsr %a4@
64b80: 508f addql #8,%sp
64b82: 4a80 tstl %d0
64b84: 57c1 seq %d1
64b86: 49c1 extbl %d1
64b88: 4481 negl %d1
} else {
match = (pwd->pw_uid == uid);
}
if (match) {
64b8a: 67d8 beqs 64b64 <getpw_r+0x40> <== NEVER TAKEN
fclose(fp);
64b8c: 2f03 movel %d3,%sp@-
64b8e: 4eb9 0007 78d4 jsr 778d4 <fclose>
*result = pwd;
64b94: 206e 001c moveal %fp@(28),%a0
return 0;
64b98: 588f addql #4,%sp
64b9a: 4280 clrl %d0
match = (pwd->pw_uid == uid);
}
if (match) {
fclose(fp);
*result = pwd;
64b9c: 208a movel %a2,%a0@
}
}
error_einval:
fclose(fp);
rtems_set_errno_and_return_minus_one( EINVAL );
}
64b9e: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
64ba4: 4e5e unlk %fp
64ba6: 4e75 rts
goto error_einval;
if (name) {
match = (strcmp(pwd->pw_name, name) == 0);
} else {
match = (pwd->pw_uid == uid);
64ba8: 4280 clrl %d0
64baa: 302a 0008 movew %a2@(8),%d0
64bae: b0ae 000c cmpl %fp@(12),%d0
64bb2: 57c1 seq %d1
64bb4: 49c1 extbl %d1
64bb6: 4481 negl %d1
}
if (match) {
64bb8: 67aa beqs 64b64 <getpw_r+0x40>
64bba: 60d0 bras 64b8c <getpw_r+0x68>
*result = pwd;
return 0;
}
}
error_einval:
fclose(fp);
64bbc: 2f03 movel %d3,%sp@-
rtems_set_errno_and_return_minus_one( EINVAL );
64bbe: 7616 moveq #22,%d3
*result = pwd;
return 0;
}
}
error_einval:
fclose(fp);
64bc0: 4eb9 0007 78d4 jsr 778d4 <fclose>
rtems_set_errno_and_return_minus_one( EINVAL );
64bc6: 4eb9 0007 7798 jsr 77798 <__errno>
64bcc: 588f addql #4,%sp
64bce: 2040 moveal %d0,%a0
64bd0: 70ff moveq #-1,%d0
64bd2: 2083 movel %d3,%a0@
}
64bd4: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
64bda: 4e5e unlk %fp
64bdc: 4e75 rts
int match;
init_etc_passwd_group();
if ((fp = fopen("/etc/passwd", "r")) == NULL)
rtems_set_errno_and_return_minus_one( EINVAL );
64bde: 4eb9 0007 7798 jsr 77798 <__errno>
64be4: 7816 moveq #22,%d4
64be6: 2040 moveal %d0,%a0
64be8: 70ff moveq #-1,%d0
64bea: 2084 movel %d4,%a0@
}
}
error_einval:
fclose(fp);
rtems_set_errno_and_return_minus_one( EINVAL );
}
64bec: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
64bf2: 4e5e unlk %fp <== NOT EXECUTED
0004315c <gettimeofday>:
*/
int gettimeofday(
struct timeval *tp,
void * __tz __attribute__((unused))
)
{
4315c: 4e56 ffe8 linkw %fp,#-24
43160: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
43164: 246e 0008 moveal %fp@(8),%a2
/* struct timezone* tzp = (struct timezone*) __tz; */
if ( !tp )
43168: 4a8a tstl %a2
4316a: 6768 beqs 431d4 <gettimeofday+0x78> <== NEVER TAKEN
)
{
Timestamp_Control snapshot_as_timestamp;
Timestamp_Control *snapshot_as_timestamp_ptr;
snapshot_as_timestamp_ptr =
4316c: 4879 0005 f9a8 pea 5f9a8 <_TOD>
static inline void _Timestamp64_implementation_To_timeval(
const Timestamp64_Control *_timestamp,
struct timeval *_timeval
)
{
_timeval->tv_sec = (time_t) (*_timestamp / 1000000000U);
43172: 47f9 0005 a79c lea 5a79c <__divdi3>,%a3
43178: 486e fff8 pea %fp@(-8)
4317c: 4eb9 0004 843c jsr 4843c <_TOD_Get_with_nanoseconds>
struct timeval *tp,
struct timezone *tzp
)
{
return gettimeofday( tp, tzp );
}
43182: 2040 moveal %d0,%a0
43184: 2410 movel %a0@,%d2
43186: 2628 0004 movel %a0@(4),%d3
4318a: 2f3c 3b9a ca00 movel #1000000000,%sp@-
43190: 42a7 clrl %sp@-
43192: 2f03 movel %d3,%sp@-
43194: 2f02 movel %d2,%sp@-
43196: 4e93 jsr %a3@
_timeval->tv_usec = (suseconds_t) ((*_timestamp % 1000000000U) / 1000U);
43198: 4fef 000c lea %sp@(12),%sp
4319c: 2ebc 3b9a ca00 movel #1000000000,%sp@
431a2: 42a7 clrl %sp@-
static inline void _Timestamp64_implementation_To_timeval(
const Timestamp64_Control *_timestamp,
struct timeval *_timeval
)
{
_timeval->tv_sec = (time_t) (*_timestamp / 1000000000U);
431a4: 2481 movel %d1,%a2@
_timeval->tv_usec = (suseconds_t) ((*_timestamp % 1000000000U) / 1000U);
431a6: 2f03 movel %d3,%sp@-
431a8: 2f02 movel %d2,%sp@-
431aa: 4eb9 0005 abfc jsr 5abfc <__moddi3>
431b0: 4fef 0010 lea %sp@(16),%sp
431b4: 4878 03e8 pea 3e8 <DBL_MANT_DIG+0x3b3>
431b8: 42a7 clrl %sp@-
431ba: 2f01 movel %d1,%sp@-
431bc: 2f00 movel %d0,%sp@-
431be: 4e93 jsr %a3@
431c0: 4fef 0018 lea %sp@(24),%sp
* Timezone information ignored by the OS proper. Per email
* with Eric Norum, this is how GNU/Linux, Solaris, and MacOS X
* do it. This puts us in good company.
*/
return 0;
431c4: 4280 clrl %d0
431c6: 2541 0004 movel %d1,%a2@(4)
}
431ca: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3
431d0: 4e5e unlk %fp
431d2: 4e75 rts
void * __tz __attribute__((unused))
)
{
/* struct timezone* tzp = (struct timezone*) __tz; */
if ( !tp )
rtems_set_errno_and_return_minus_one( EFAULT );
431d4: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
431da: 720e moveq #14,%d1 <== NOT EXECUTED
431dc: 2040 moveal %d0,%a0 <== NOT EXECUTED
431de: 70ff moveq #-1,%d0 <== NOT EXECUTED
* with Eric Norum, this is how GNU/Linux, Solaris, and MacOS X
* do it. This puts us in good company.
*/
return 0;
}
431e0: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
void * __tz __attribute__((unused))
)
{
/* struct timezone* tzp = (struct timezone*) __tz; */
if ( !tp )
rtems_set_errno_and_return_minus_one( EFAULT );
431e6: 2081 movel %d1,%a0@ <== NOT EXECUTED
* with Eric Norum, this is how GNU/Linux, Solaris, and MacOS X
* do it. This puts us in good company.
*/
return 0;
}
431e8: 4e5e unlk %fp <== NOT EXECUTED
00045e34 <iproc>:
/*
* Process a single input character
*/
static int
iproc (unsigned char c, struct rtems_termios_tty *tty)
{
45e34: 4e56 fff0 linkw %fp,#-16
45e38: 222e 0008 movel %fp@(8),%d1
45e3c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
45e40: 246e 000c moveal %fp@(12),%a2
if (tty->termios.c_iflag & ISTRIP)
45e44: 202a 0030 movel %a2@(48),%d0
/*
* Process a single input character
*/
static int
iproc (unsigned char c, struct rtems_termios_tty *tty)
{
45e48: 1401 moveb %d1,%d2
if (tty->termios.c_iflag & ISTRIP)
45e4a: 0800 0005 btst #5,%d0
45e4e: 6704 beqs 45e54 <iproc+0x20> <== ALWAYS TAKEN
c &= 0x7f;
45e50: 747f moveq #127,%d2 <== NOT EXECUTED
45e52: c481 andl %d1,%d2 <== NOT EXECUTED
if (tty->termios.c_iflag & IUCLC)
45e54: 0800 0009 btst #9,%d0
45e58: 671e beqs 45e78 <iproc+0x44>
c = tolower (c);
45e5a: 2079 0005 e3cc moveal 5e3cc <__ctype_ptr__>,%a0
45e60: 7603 moveq #3,%d3
45e62: 0282 0000 00ff andil #255,%d2
45e68: 1230 2801 moveb %a0@(00000001,%d2:l),%d1
45e6c: c283 andl %d3,%d1
45e6e: 163c 0001 moveb #1,%d3
45e72: b681 cmpl %d1,%d3
45e74: 6700 00ee beqw 45f64 <iproc+0x130>
if (c == '\r') {
45e78: 4281 clrl %d1
45e7a: 1202 moveb %d2,%d1
45e7c: 760d moveq #13,%d3
45e7e: b681 cmpl %d1,%d3
45e80: 675c beqs 45ede <iproc+0xaa>
if (tty->termios.c_iflag & IGNCR)
return 0;
if (tty->termios.c_iflag & ICRNL)
c = '\n';
} else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {
45e82: 760a moveq #10,%d3
45e84: b681 cmpl %d1,%d3
45e86: 6700 00d2 beqw 45f5a <iproc+0x126>
c = '\r';
}
if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {
45e8a: 4a02 tstb %d2
45e8c: 665c bnes 45eea <iproc+0xb6> <== ALWAYS TAKEN
}
/*
* FIXME: Should do IMAXBEL handling somehow
*/
if (tty->ccount < (CBUFSIZE-1)) {
45e8e: 2039 0005 e2a4 movel 5e2a4 <rtems_termios_cbufsize>,%d0
45e94: 5380 subql #1,%d0
45e96: 222a 0020 movel %a2@(32),%d1
45e9a: b081 cmpl %d1,%d0
45e9c: 6334 blss 45ed2 <iproc+0x9e> <== NEVER TAKEN
if (tty->termios.c_lflag & ECHO)
45e9e: 7008 moveq #8,%d0
45ea0: c0aa 003c andl %a2@(60),%d0
45ea4: 6600 00c8 bnew 45f6e <iproc+0x13a>
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
45ea8: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
}
return 0;
45eac: 4280 clrl %d0 <== NOT EXECUTED
* FIXME: Should do IMAXBEL handling somehow
*/
if (tty->ccount < (CBUFSIZE-1)) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
45eae: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED
45eb2: 5281 addql #1,%d1 <== NOT EXECUTED
45eb4: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
}
return 0;
}
45eb8: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
45ebe: 4e5e unlk %fp
45ec0: 4e75 rts
* FIXME: Some of the tests should check for IEXTEN, too.
*/
static void
erase (struct rtems_termios_tty *tty, int lineFlag)
{
if (tty->ccount == 0)
45ec2: 4aaa 0020 tstl %a2@(32)
45ec6: 670a beqs 45ed2 <iproc+0x9e>
45ec8: 42a7 clrl %sp@-
45eca: 2f0a movel %a2,%sp@-
45ecc: 4eba fdc4 jsr %pc@(45c92 <erase.part.2>)
45ed0: 508f addql #8,%sp
}
if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {
if (c == tty->termios.c_cc[VERASE]) {
erase (tty, 0);
return 0;
45ed2: 4280 clrl %d0
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
45ed4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
45eda: 4e5e unlk %fp
45edc: 4e75 rts
if (tty->termios.c_iflag & IUCLC)
c = tolower (c);
if (c == '\r') {
if (tty->termios.c_iflag & IGNCR)
45ede: 4a00 tstb %d0
45ee0: 6df0 blts 45ed2 <iproc+0x9e> <== NEVER TAKEN
return 0;
if (tty->termios.c_iflag & ICRNL)
45ee2: 0800 0008 btst #8,%d0
45ee6: 6702 beqs 45eea <iproc+0xb6> <== NEVER TAKEN
c = '\n';
45ee8: 740a moveq #10,%d2
} else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {
c = '\r';
}
if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {
45eea: 222a 003c movel %a2@(60),%d1
45eee: 0801 0001 btst #1,%d1
45ef2: 679a beqs 45e8e <iproc+0x5a>
if (c == tty->termios.c_cc[VERASE]) {
45ef4: 4283 clrl %d3
45ef6: 162a 0043 moveb %a2@(67),%d3
45efa: 4280 clrl %d0
45efc: 1002 moveb %d2,%d0
45efe: b083 cmpl %d3,%d0
45f00: 67c0 beqs 45ec2 <iproc+0x8e>
erase (tty, 0);
return 0;
}
else if (c == tty->termios.c_cc[VKILL]) {
45f02: 4283 clrl %d3
45f04: 162a 0044 moveb %a2@(68),%d3
45f08: b083 cmpl %d3,%d0
45f0a: 6700 00a8 beqw 45fb4 <iproc+0x180>
erase (tty, 1);
return 0;
}
else if (c == tty->termios.c_cc[VEOF]) {
45f0e: 4283 clrl %d3
45f10: 162a 0045 moveb %a2@(69),%d3
45f14: b083 cmpl %d3,%d0
45f16: 6700 0110 beqw 46028 <iproc+0x1f4>
return 1;
} else if (c == '\n') {
45f1a: 760a moveq #10,%d3
45f1c: b680 cmpl %d0,%d3
45f1e: 6700 00be beqw 45fde <iproc+0x1aa>
if (tty->termios.c_lflag & (ECHO | ECHONL))
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
return 1;
} else if ((c == tty->termios.c_cc[VEOL]) ||
45f22: 4283 clrl %d3
45f24: 162a 004c moveb %a2@(76),%d3
45f28: b083 cmpl %d3,%d0
45f2a: 670c beqs 45f38 <iproc+0x104> <== NEVER TAKEN
45f2c: 4283 clrl %d3
45f2e: 162a 0051 moveb %a2@(81),%d3
45f32: b083 cmpl %d3,%d0
45f34: 6600 ff58 bnew 45e8e <iproc+0x5a>
(c == tty->termios.c_cc[VEOL2])) {
if (tty->termios.c_lflag & ECHO)
45f38: 44c1 movew %d1,%ccr <== NOT EXECUTED
45f3a: 6b58 bmis 45f94 <iproc+0x160> <== NOT EXECUTED
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
45f3c: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
return 1;
45f40: 7001 moveq #1,%d0 <== NOT EXECUTED
return 1;
} else if ((c == tty->termios.c_cc[VEOL]) ||
(c == tty->termios.c_cc[VEOL2])) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
45f42: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
45f46: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED
45f4a: 5281 addql #1,%d1 <== NOT EXECUTED
45f4c: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
45f50: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
45f56: 4e5e unlk %fp <== NOT EXECUTED
45f58: 4e75 rts <== NOT EXECUTED
if (c == '\r') {
if (tty->termios.c_iflag & IGNCR)
return 0;
if (tty->termios.c_iflag & ICRNL)
c = '\n';
} else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {
45f5a: 0800 0006 btst #6,%d0
45f5e: 678a beqs 45eea <iproc+0xb6> <== ALWAYS TAKEN
c = '\r';
45f60: 740d moveq #13,%d2 <== NOT EXECUTED
45f62: 6086 bras 45eea <iproc+0xb6> <== NOT EXECUTED
{
if (tty->termios.c_iflag & ISTRIP)
c &= 0x7f;
if (tty->termios.c_iflag & IUCLC)
c = tolower (c);
45f64: 0682 0000 0020 addil #32,%d2
45f6a: 6000 ff0c braw 45e78 <iproc+0x44>
/*
* FIXME: Should do IMAXBEL handling somehow
*/
if (tty->ccount < (CBUFSIZE-1)) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
45f6e: 2f0a movel %a2,%sp@-
45f70: 4280 clrl %d0
45f72: 1002 moveb %d2,%d0
45f74: 2f00 movel %d0,%sp@-
45f76: 4eba fc90 jsr %pc@(45c08 <echo>)
45f7a: 222a 0020 movel %a2@(32),%d1
45f7e: 508f addql #8,%sp
tty->cbuf[tty->ccount++] = c;
}
return 0;
45f80: 4280 clrl %d0
* FIXME: Should do IMAXBEL handling somehow
*/
if (tty->ccount < (CBUFSIZE-1)) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
45f82: 206a 001c moveal %a2@(28),%a0
45f86: 1182 1800 moveb %d2,%a0@(00000000,%d1:l)
45f8a: 5281 addql #1,%d1
45f8c: 2541 0020 movel %d1,%a2@(32)
45f90: 6000 ff26 braw 45eb8 <iproc+0x84>
tty->cbuf[tty->ccount++] = c;
return 1;
} else if ((c == tty->termios.c_cc[VEOL]) ||
(c == tty->termios.c_cc[VEOL2])) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
45f94: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45f96: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45f98: 4eba fc6e jsr %pc@(45c08 <echo>) <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
45f9c: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
return 1;
} else if ((c == tty->termios.c_cc[VEOL]) ||
(c == tty->termios.c_cc[VEOL2])) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
45fa0: 508f addql #8,%sp <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
return 1;
45fa2: 7001 moveq #1,%d0 <== NOT EXECUTED
return 1;
} else if ((c == tty->termios.c_cc[VEOL]) ||
(c == tty->termios.c_cc[VEOL2])) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
45fa4: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
45fa8: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED
45fac: 5281 addql #1,%d1 <== NOT EXECUTED
45fae: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
45fb2: 609c bras 45f50 <iproc+0x11c> <== NOT EXECUTED
* FIXME: Some of the tests should check for IEXTEN, too.
*/
static void
erase (struct rtems_termios_tty *tty, int lineFlag)
{
if (tty->ccount == 0)
45fb4: 4aaa 0020 tstl %a2@(32)
45fb8: 6700 ff18 beqw 45ed2 <iproc+0x9e>
return;
if (lineFlag) {
if (!(tty->termios.c_lflag & ECHO)) {
45fbc: 44c1 movew %d1,%ccr
45fbe: 6a74 bpls 46034 <iproc+0x200> <== NEVER TAKEN
tty->ccount = 0;
return;
}
if (!(tty->termios.c_lflag & ECHOE)) {
45fc0: 0801 0004 btst #4,%d1
45fc4: 677e beqs 46044 <iproc+0x210> <== NEVER TAKEN
45fc6: 4878 0001 pea 1 <ADD>
45fca: 2f0a movel %a2,%sp@-
45fcc: 4eba fcc4 jsr %pc@(45c92 <erase.part.2>)
45fd0: 508f addql #8,%sp
erase (tty, 0);
return 0;
}
else if (c == tty->termios.c_cc[VKILL]) {
erase (tty, 1);
return 0;
45fd2: 4280 clrl %d0
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
45fd4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
45fda: 4e5e unlk %fp
45fdc: 4e75 rts
return 0;
}
else if (c == tty->termios.c_cc[VEOF]) {
return 1;
} else if (c == '\n') {
if (tty->termios.c_lflag & (ECHO | ECHONL))
45fde: 7048 moveq #72,%d0
45fe0: c280 andl %d0,%d1
45fe2: 6620 bnes 46004 <iproc+0x1d0> <== ALWAYS TAKEN
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
45fe4: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
return 1;
45fe8: 7001 moveq #1,%d0 <== NOT EXECUTED
else if (c == tty->termios.c_cc[VEOF]) {
return 1;
} else if (c == '\n') {
if (tty->termios.c_lflag & (ECHO | ECHONL))
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
45fea: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
45fee: 740a moveq #10,%d2 <== NOT EXECUTED
45ff0: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED
45ff4: 5281 addql #1,%d1 <== NOT EXECUTED
45ff6: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
45ffa: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
46000: 4e5e unlk %fp
46002: 4e75 rts
}
else if (c == tty->termios.c_cc[VEOF]) {
return 1;
} else if (c == '\n') {
if (tty->termios.c_lflag & (ECHO | ECHONL))
echo (c, tty);
46004: 2f0a movel %a2,%sp@-
46006: 4878 000a pea a <LASTO>
tty->cbuf[tty->ccount++] = c;
4600a: 740a moveq #10,%d2
}
else if (c == tty->termios.c_cc[VEOF]) {
return 1;
} else if (c == '\n') {
if (tty->termios.c_lflag & (ECHO | ECHONL))
echo (c, tty);
4600c: 4eba fbfa jsr %pc@(45c08 <echo>)
tty->cbuf[tty->ccount++] = c;
46010: 222a 0020 movel %a2@(32),%d1
}
else if (c == tty->termios.c_cc[VEOF]) {
return 1;
} else if (c == '\n') {
if (tty->termios.c_lflag & (ECHO | ECHONL))
echo (c, tty);
46014: 508f addql #8,%sp
tty->cbuf[tty->ccount++] = c;
return 1;
46016: 7001 moveq #1,%d0
else if (c == tty->termios.c_cc[VEOF]) {
return 1;
} else if (c == '\n') {
if (tty->termios.c_lflag & (ECHO | ECHONL))
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
46018: 206a 001c moveal %a2@(28),%a0
4601c: 1182 1800 moveb %d2,%a0@(00000000,%d1:l)
46020: 5281 addql #1,%d1
46022: 2541 0020 movel %d1,%a2@(32)
46026: 60d2 bras 45ffa <iproc+0x1c6>
else if (c == tty->termios.c_cc[VKILL]) {
erase (tty, 1);
return 0;
}
else if (c == tty->termios.c_cc[VEOF]) {
return 1;
46028: 7001 moveq #1,%d0 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
4602a: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
46030: 4e5e unlk %fp <== NOT EXECUTED
46032: 4e75 rts <== NOT EXECUTED
{
if (tty->ccount == 0)
return;
if (lineFlag) {
if (!(tty->termios.c_lflag & ECHO)) {
tty->ccount = 0;
46034: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
erase (tty, 0);
return 0;
}
else if (c == tty->termios.c_cc[VKILL]) {
erase (tty, 1);
return 0;
46038: 4280 clrl %d0 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
4603a: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
46040: 4e5e unlk %fp <== NOT EXECUTED
46042: 4e75 rts <== NOT EXECUTED
tty->ccount = 0;
return;
}
if (!(tty->termios.c_lflag & ECHOE)) {
tty->ccount = 0;
echo (tty->termios.c_cc[VKILL], tty);
46044: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46046: 47fa fbc0 lea %pc@(45c08 <echo>),%a3 <== NOT EXECUTED
4604a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
if (!(tty->termios.c_lflag & ECHO)) {
tty->ccount = 0;
return;
}
if (!(tty->termios.c_lflag & ECHOE)) {
tty->ccount = 0;
4604c: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
echo (tty->termios.c_cc[VKILL], tty);
46050: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->termios.c_lflag & ECHOK)
46052: 508f addql #8,%sp <== NOT EXECUTED
46054: 7020 moveq #32,%d0 <== NOT EXECUTED
46056: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
4605a: 6700 fe76 beqw 45ed2 <iproc+0x9e> <== NOT EXECUTED
echo ('\n', tty);
4605e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46060: 4878 000a pea a <LASTO> <== NOT EXECUTED
46064: 4e93 jsr %a3@ <== NOT EXECUTED
46066: 508f addql #8,%sp <== NOT EXECUTED
erase (tty, 0);
return 0;
}
else if (c == tty->termios.c_cc[VKILL]) {
erase (tty, 1);
return 0;
46068: 4280 clrl %d0 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
4606a: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
46070: 4e5e unlk %fp <== NOT EXECUTED
0005bd88 <kill>:
#if !defined(RTEMS_POSIX_API)
int kill( pid_t pid, int sig )
{
return 0;
}
5bd88: 4280 clrl %d0 <== NOT EXECUTED
* These are directly supported (and completely correct) in the posix api.
*/
#if !defined(RTEMS_POSIX_API)
int kill( pid_t pid, int sig )
{
5bd8a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
5bd8e: 4e5e unlk %fp <== NOT EXECUTED
00043980 <libc_wrapup>:
/*
* In case RTEMS is already down, don't do this. It could be
* dangerous.
*/
if (!_System_state_Is_up(_System_state_Get()))
43980: 7003 moveq #3,%d0
extern void _wrapup_reent(struct _reent *);
extern void _reclaim_reent(struct _reent *);
void libc_wrapup(void)
{
43982: 4e56 0000 linkw %fp,#0
43986: 2f0a movel %a2,%sp@-
/*
* In case RTEMS is already down, don't do this. It could be
* dangerous.
*/
if (!_System_state_Is_up(_System_state_Get()))
43988: b0b9 0005 fb6c cmpl 5fb6c <_System_state_Current>,%d0
4398e: 6708 beqs 43998 <libc_wrapup+0x18> <== ALWAYS TAKEN
*/
fclose (stdin);
fclose (stdout);
fclose (stderr);
}
43990: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
43994: 4e5e unlk %fp <== NOT EXECUTED
43996: 4e75 rts <== NOT EXECUTED
/*
* This was already done if the user called exit() directly .
_wrapup_reent(0);
*/
if (_REENT != _global_impure_ptr) {
43998: 2479 0005 d9d2 moveal 5d9d2 <_global_impure_ptr>,%a2
4399e: b5f9 0005 e3d0 cmpal 5e3d0 <_impure_ptr>,%a2
439a4: 6710 beqs 439b6 <libc_wrapup+0x36>
_wrapup_reent(_global_impure_ptr);
439a6: 2f0a movel %a2,%sp@-
439a8: 4eb9 0004 eb92 jsr 4eb92 <_wrapup_reent>
/* Don't reclaim this one, just in case we do printfs
* on the way out to ROM.
*/
_reclaim_reent(&libc_global_reent);
#endif
_REENT = _global_impure_ptr;
439ae: 588f addql #4,%sp
439b0: 23ca 0005 e3d0 movel %a2,5e3d0 <_impure_ptr>
*
* Should this be changed to do *all* file streams?
* _fwalk (_REENT, fclose);
*/
fclose (stdin);
439b6: 2f2a 0004 movel %a2@(4),%sp@-
439ba: 45f9 0004 e280 lea 4e280 <fclose>,%a2
439c0: 4e92 jsr %a2@
fclose (stdout);
439c2: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
439c8: 2f28 0008 movel %a0@(8),%sp@-
439cc: 4e92 jsr %a2@
fclose (stderr);
439ce: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
439d4: 2f28 000c movel %a0@(12),%sp@-
439d8: 4e92 jsr %a2@
}
439da: 246e fffc moveal %fp@(-4),%a2
* _fwalk (_REENT, fclose);
*/
fclose (stdin);
fclose (stdout);
fclose (stderr);
439de: 4fef 000c lea %sp@(12),%sp
}
439e2: 4e5e unlk %fp <== NOT EXECUTED
000433cc <malloc>:
#include "malloc_p.h"
void *malloc(
size_t size
)
{
433cc: 4e56 0000 linkw %fp,#0
void *return_this;
MSBUMP(malloc_calls, 1);
433d0: 52b9 0005 f904 addql #1,5f904 <rtems_malloc_statistics+0x4>
#include "malloc_p.h"
void *malloc(
size_t size
)
{
433d6: 2f03 movel %d3,%sp@-
433d8: 262e 0008 movel %fp@(8),%d3
433dc: 2f02 movel %d2,%sp@-
MSBUMP(malloc_calls, 1);
/*
* If some free's have been deferred, then do them now.
*/
malloc_deferred_frees_process();
433de: 4eb9 0004 32d8 jsr 432d8 <malloc_deferred_frees_process>
/*
* Validate the parameters
*/
if ( !size )
433e4: 4a83 tstl %d3
433e6: 6762 beqs 4344a <malloc+0x7e>
return (void *) 0;
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
433e8: 7003 moveq #3,%d0
433ea: b0b9 0005 fb6c cmpl 5fb6c <_System_state_Current>,%d0
433f0: 674e beqs 43440 <malloc+0x74>
RTEMS_INLINE_ROUTINE void *_Protected_heap_Allocate(
Heap_Control *heap,
uintptr_t size
)
{
return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
433f2: 42a7 clrl %sp@-
433f4: 42a7 clrl %sp@-
433f6: 2f03 movel %d3,%sp@-
433f8: 2f39 0005 e21c movel 5e21c <RTEMS_Malloc_Heap>,%sp@-
433fe: 4eb9 0004 917c jsr 4917c <_Protected_heap_Allocate_aligned_with_boundary>
* If this fails then return a NULL pointer.
*/
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
if ( !return_this ) {
43404: 4fef 0010 lea %sp@(16),%sp
43408: 2400 movel %d0,%d2
4340a: 674e beqs 4345a <malloc+0x8e>
}
/*
* If the user wants us to dirty the allocated memory, then do it.
*/
if ( rtems_malloc_dirty_helper )
4340c: 2079 0005 e8c0 moveal 5e8c0 <rtems_malloc_dirty_helper>,%a0
43412: 4a88 tstl %a0
43414: 6708 beqs 4341e <malloc+0x52>
(*rtems_malloc_dirty_helper)( return_this, size );
43416: 2f03 movel %d3,%sp@-
43418: 2f02 movel %d2,%sp@-
4341a: 4e90 jsr %a0@
4341c: 508f addql #8,%sp
/*
* If configured, update the statistics
*/
if ( rtems_malloc_statistics_helpers )
4341e: 2079 0005 e8c4 moveal 5e8c4 <rtems_malloc_statistics_helpers>,%a0
43424: 4a88 tstl %a0
43426: 670a beqs 43432 <malloc+0x66>
(*rtems_malloc_statistics_helpers->at_malloc)(return_this);
43428: 2f02 movel %d2,%sp@-
4342a: 2068 0004 moveal %a0@(4),%a0
4342e: 4e90 jsr %a0@
43430: 588f addql #4,%sp
return return_this;
}
43432: 2002 movel %d2,%d0
43434: 242e fff8 movel %fp@(-8),%d2
43438: 262e fffc movel %fp@(-4),%d3
4343c: 4e5e unlk %fp
4343e: 4e75 rts
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
!malloc_is_system_state_OK() )
43440: 4eb9 0004 32b8 jsr 432b8 <malloc_is_system_state_OK>
return (void *) 0;
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
43446: 4a00 tstb %d0
43448: 66a8 bnes 433f2 <malloc+0x26> <== ALWAYS TAKEN
/*
* Validate the parameters
*/
if ( !size )
return (void *) 0;
4344a: 4282 clrl %d2
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(return_this);
return return_this;
}
4344c: 2002 movel %d2,%d0
4344e: 242e fff8 movel %fp@(-8),%d2
43452: 262e fffc movel %fp@(-4),%d3
43456: 4e5e unlk %fp
43458: 4e75 rts
*/
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
if ( !return_this ) {
return_this = (*rtems_malloc_extend_handler)( RTEMS_Malloc_Heap, size );
4345a: 2f03 movel %d3,%sp@-
4345c: 2f39 0005 e21c movel 5e21c <RTEMS_Malloc_Heap>,%sp@-
43462: 2079 0005 c61c moveal 5c61c <rtems_malloc_extend_handler>,%a0
43468: 4e90 jsr %a0@
if ( !return_this ) {
4346a: 508f addql #8,%sp
*/
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
if ( !return_this ) {
return_this = (*rtems_malloc_extend_handler)( RTEMS_Malloc_Heap, size );
4346c: 2400 movel %d0,%d2
if ( !return_this ) {
4346e: 669c bnes 4340c <malloc+0x40> <== NEVER TAKEN
errno = ENOMEM;
43470: 4eb9 0004 e144 jsr 4e144 <__errno>
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(return_this);
return return_this;
}
43476: 262e fffc movel %fp@(-4),%d3
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
if ( !return_this ) {
return_this = (*rtems_malloc_extend_handler)( RTEMS_Malloc_Heap, size );
if ( !return_this ) {
errno = ENOMEM;
4347a: 2040 moveal %d0,%a0
4347c: 700c moveq #12,%d0
4347e: 2080 movel %d0,%a0@
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(return_this);
return return_this;
}
43480: 2002 movel %d2,%d0
43482: 242e fff8 movel %fp@(-8),%d2
43486: 4e5e unlk %fp
...
000432d8 <malloc_deferred_frees_process>:
void malloc_deferred_frees_process(void)
{
432d8: 4e56 0000 linkw %fp,#0
432dc: 2f0b movel %a3,%sp@-
/*
* If some free's have been deferred, then do them now.
*/
while ((to_be_freed = rtems_chain_get(&RTEMS_Malloc_GC_list)) != NULL)
free(to_be_freed);
432de: 47f9 0004 30cc lea 430cc <free>,%a3
return true;
}
void malloc_deferred_frees_process(void)
{
432e4: 2f0a movel %a2,%sp@-
*/
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(
rtems_chain_control *the_chain
)
{
return _Chain_Get( the_chain );
432e6: 4879 0005 e280 pea 5e280 <RTEMS_Malloc_GC_list>
432ec: 45f9 0004 7f74 lea 47f74 <_Chain_Get>,%a2
432f2: 4e92 jsr %a2@
rtems_chain_node *to_be_freed;
/*
* If some free's have been deferred, then do them now.
*/
while ((to_be_freed = rtems_chain_get(&RTEMS_Malloc_GC_list)) != NULL)
432f4: 588f addql #4,%sp
432f6: 4a80 tstl %d0
432f8: 6714 beqs 4330e <malloc_deferred_frees_process+0x36>
free(to_be_freed);
432fa: 2f00 movel %d0,%sp@-
432fc: 4e93 jsr %a3@
432fe: 588f addql #4,%sp
43300: 4879 0005 e280 pea 5e280 <RTEMS_Malloc_GC_list>
43306: 4e92 jsr %a2@
rtems_chain_node *to_be_freed;
/*
* If some free's have been deferred, then do them now.
*/
while ((to_be_freed = rtems_chain_get(&RTEMS_Malloc_GC_list)) != NULL)
43308: 588f addql #4,%sp
4330a: 4a80 tstl %d0
4330c: 66ec bnes 432fa <malloc_deferred_frees_process+0x22><== NEVER TAKEN
free(to_be_freed);
}
4330e: 246e fff8 moveal %fp@(-8),%a2
43312: 266e fffc moveal %fp@(-4),%a3
43316: 4e5e unlk %fp <== NOT EXECUTED
0004cd34 <memfile_alloc_block>:
* Allocate a block for an in-memory file.
*/
int memfile_blocks_allocated = 0;
void *memfile_alloc_block(void)
{
4cd34: 4e56 0000 linkw %fp,#0
void *memory;
memory = (void *)calloc(1, IMFS_MEMFILE_BYTES_PER_BLOCK);
4cd38: 2f39 0005 f0f0 movel 5f0f0 <imfs_memfile_bytes_per_block>,%sp@-
4cd3e: 4878 0001 pea 1 <ADD>
4cd42: 4eb9 0004 2e28 jsr 42e28 <calloc>
if ( memory )
4cd48: 508f addql #8,%sp
4cd4a: 4a80 tstl %d0
4cd4c: 6706 beqs 4cd54 <memfile_alloc_block+0x20> <== NEVER TAKEN
memfile_blocks_allocated++;
4cd4e: 52b9 0005 f204 addql #1,5f204 <memfile_blocks_allocated>
return memory;
}
4cd54: 4e5e unlk %fp <== NOT EXECUTED
0004d206 <memfile_free_blocks_in_table>:
*/
static void memfile_free_blocks_in_table(
block_p **block_table,
int entries
)
{
4d206: 4e56 ffec linkw %fp,#-20
4d20a: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
4d20e: 286e 0008 moveal %fp@(8),%a4
4d212: 47f9 0004 d1ec lea 4d1ec <memfile_free_block>,%a3
4d218: 262e 000c movel %fp@(12),%d3
IMFS_assert( block_table );
/*
* Now go through all the slots in the table and free the memory.
*/
b = *block_table;
4d21c: 2454 moveal %a4@,%a2
for ( i=0 ; i<entries ; i++ ) {
4d21e: 6f20 bles 4d240 <memfile_free_blocks_in_table+0x3a><== NEVER TAKEN
4d220: 4282 clrl %d2
4d222: 47f9 0004 d1ec lea 4d1ec <memfile_free_block>,%a3
if ( b[i] ) {
4d228: 2012 movel %a2@,%d0
/*
* Now go through all the slots in the table and free the memory.
*/
b = *block_table;
for ( i=0 ; i<entries ; i++ ) {
4d22a: 5282 addql #1,%d2
if ( b[i] ) {
4d22c: 4a80 tstl %d0
4d22e: 6708 beqs 4d238 <memfile_free_blocks_in_table+0x32>
memfile_free_block( b[i] );
4d230: 2f00 movel %d0,%sp@-
4d232: 4e93 jsr %a3@
b[i] = 0;
4d234: 588f addql #4,%sp
4d236: 4292 clrl %a2@
4d238: 588a addql #4,%a2
/*
* Now go through all the slots in the table and free the memory.
*/
b = *block_table;
for ( i=0 ; i<entries ; i++ ) {
4d23a: b682 cmpl %d2,%d3
4d23c: 66ea bnes 4d228 <memfile_free_blocks_in_table+0x22>
4d23e: 2454 moveal %a4@,%a2
/*
* Now that all the blocks in the block table are free, we can
* free the block table itself.
*/
memfile_free_block( *block_table );
4d240: 2f0a movel %a2,%sp@-
4d242: 4e93 jsr %a3@
*block_table = 0;
4d244: 588f addql #4,%sp
4d246: 4294 clrl %a4@
}
4d248: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
4d24e: 4e5e unlk %fp <== NOT EXECUTED
0004d758 <memfile_open>:
the_jnode = iop->pathinfo.node_access;
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & LIBIO_FLAGS_WRITE)
4d758: 7004 moveq #4,%d0
rtems_libio_t *iop,
const char *pathname,
int oflag,
mode_t mode
)
{
4d75a: 4e56 0000 linkw %fp,#0
4d75e: 206e 0008 moveal %fp@(8),%a0
4d762: 2f03 movel %d3,%sp@-
the_jnode = iop->pathinfo.node_access;
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & LIBIO_FLAGS_WRITE)
4d764: c0a8 000c andl %a0@(12),%d0
mode_t mode
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4d768: 2068 0018 moveal %a0@(24),%a0
rtems_libio_t *iop,
const char *pathname,
int oflag,
mode_t mode
)
{
4d76c: 2f02 movel %d2,%sp@-
the_jnode = iop->pathinfo.node_access;
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & LIBIO_FLAGS_WRITE)
4d76e: 4a80 tstl %d0
4d770: 670a beqs 4d77c <memfile_open+0x24>
4d772: 2268 004a moveal %a0@(74),%a1
&& (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {
4d776: 7005 moveq #5,%d0
4d778: b091 cmpl %a1@,%d0
4d77a: 670e beqs 4d78a <memfile_open+0x32> <== NEVER TAKEN
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
return -1;
}
return 0;
}
4d77c: 242e fff8 movel %fp@(-8),%d2
if ((count != 0)
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
return -1;
}
return 0;
4d780: 4280 clrl %d0
}
4d782: 262e fffc movel %fp@(-4),%d3
4d786: 4e5e unlk %fp
4d788: 4e75 rts
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & LIBIO_FLAGS_WRITE)
&& (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {
uint32_t count = the_jnode->info.linearfile.size;
4d78a: 2028 0052 movel %a0@(82),%d0 <== NOT EXECUTED
const unsigned char *buffer = the_jnode->info.linearfile.direct;
the_jnode->control = &IMFS_node_control_memfile;
4d78e: 243c 0005 d766 movel #382822,%d2 <== NOT EXECUTED
4d794: 2142 004a movel %d2,%a0@(74) <== NOT EXECUTED
* Perform 'copy on write' for linear files
*/
if ((iop->flags & LIBIO_FLAGS_WRITE)
&& (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {
uint32_t count = the_jnode->info.linearfile.size;
const unsigned char *buffer = the_jnode->info.linearfile.direct;
4d798: 2228 0056 movel %a0@(86),%d1 <== NOT EXECUTED
the_jnode->control = &IMFS_node_control_memfile;
the_jnode->info.file.size = 0;
4d79c: 4282 clrl %d2 <== NOT EXECUTED
4d79e: 4283 clrl %d3 <== NOT EXECUTED
the_jnode->info.file.indirect = 0;
4d7a0: 42a8 0056 clrl %a0@(86) <== NOT EXECUTED
&& (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {
uint32_t count = the_jnode->info.linearfile.size;
const unsigned char *buffer = the_jnode->info.linearfile.direct;
the_jnode->control = &IMFS_node_control_memfile;
the_jnode->info.file.size = 0;
4d7a4: 2142 004e movel %d2,%a0@(78) <== NOT EXECUTED
4d7a8: 2143 0052 movel %d3,%a0@(82) <== NOT EXECUTED
the_jnode->info.file.indirect = 0;
the_jnode->info.file.doubly_indirect = 0;
4d7ac: 42a8 005a clrl %a0@(90) <== NOT EXECUTED
the_jnode->info.file.triply_indirect = 0;
4d7b0: 42a8 005e clrl %a0@(94) <== NOT EXECUTED
if ((count != 0)
4d7b4: 4a80 tstl %d0 <== NOT EXECUTED
4d7b6: 67c4 beqs 4d77c <memfile_open+0x24> <== NOT EXECUTED
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
4d7b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
return -1;
4d7ba: 76ff moveq #-1,%d3 <== NOT EXECUTED
the_jnode->info.file.size = 0;
the_jnode->info.file.indirect = 0;
the_jnode->info.file.doubly_indirect = 0;
the_jnode->info.file.triply_indirect = 0;
if ((count != 0)
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
4d7bc: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d7be: 42a7 clrl %sp@- <== NOT EXECUTED
4d7c0: 42a7 clrl %sp@- <== NOT EXECUTED
4d7c2: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4d7c4: 4eb9 0004 d518 jsr 4d518 <IMFS_memfile_write> <== NOT EXECUTED
return -1;
}
return 0;
}
4d7ca: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
the_jnode->info.file.indirect = 0;
the_jnode->info.file.doubly_indirect = 0;
the_jnode->info.file.triply_indirect = 0;
if ((count != 0)
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
return -1;
4d7ce: b680 cmpl %d0,%d3 <== NOT EXECUTED
4d7d0: 57c0 seq %d0 <== NOT EXECUTED
}
return 0;
}
4d7d2: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
the_jnode->info.file.size = 0;
the_jnode->info.file.indirect = 0;
the_jnode->info.file.doubly_indirect = 0;
the_jnode->info.file.triply_indirect = 0;
if ((count != 0)
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
4d7d6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
return -1;
4d7da: 49c0 extbl %d0 <== NOT EXECUTED
}
return 0;
}
4d7dc: 4e5e unlk %fp <== NOT EXECUTED
00043614 <mount>:
const void *data
)
{
int rv = 0;
if (
43614: 7001 moveq #1,%d0
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
43616: 4e56 ff84 linkw %fp,#-124
4361a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4361e: 282e 0008 movel %fp@(8),%d4
43622: 262e 000c movel %fp@(12),%d3
43626: 2c2e 0010 movel %fp@(16),%d6
int rv = 0;
if (
4362a: b0ae 0014 cmpl %fp@(20),%d0
4362e: 6500 0286 bcsw 438b6 <mount+0x2a2>
options == RTEMS_FILESYSTEM_READ_ONLY
|| options == RTEMS_FILESYSTEM_READ_WRITE
) {
rtems_filesystem_fsmount_me_t fsmount_me_h =
43632: 2f06 movel %d6,%sp@-
43634: 4eb9 0004 bba4 jsr 4bba4 <rtems_filesystem_get_mount_handler>
rtems_filesystem_get_mount_handler( filesystemtype );
if ( fsmount_me_h != NULL ) {
4363a: 588f addql #4,%sp
if (
options == RTEMS_FILESYSTEM_READ_ONLY
|| options == RTEMS_FILESYSTEM_READ_WRITE
) {
rtems_filesystem_fsmount_me_t fsmount_me_h =
4363c: 2e00 movel %d0,%d7
rtems_filesystem_get_mount_handler( filesystemtype );
if ( fsmount_me_h != NULL ) {
4363e: 6700 0276 beqw 438b6 <mount+0x2a2>
const char *target_or_null,
const char *filesystemtype,
size_t *target_length_ptr
)
{
const char *target = target_or_null != NULL ? target_or_null : "/";
43642: 4a83 tstl %d3
43644: 6700 0212 beqw 43858 <mount+0x244>
}
return rv;
}
int mount(
43648: 2f03 movel %d3,%sp@-
4364a: 45f9 0004 f488 lea 4f488 <strlen>,%a2
43650: 2d43 ffac movel %d3,%fp@(-84)
43654: 4e92 jsr %a2@
43656: 588f addql #4,%sp
43658: 2a40 moveal %d0,%a5
4365a: 528d addql #1,%a5
const char *filesystemtype,
size_t *target_length_ptr
)
{
const char *target = target_or_null != NULL ? target_or_null : "/";
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
4365c: 2f06 movel %d6,%sp@-
4365e: 4e92 jsr %a2@
43660: 588f addql #4,%sp
43662: 2400 movel %d0,%d2
43664: 2640 moveal %d0,%a3
43666: 5282 addql #1,%d2
size_t source_size = source_or_null != NULL ?
strlen( source_or_null ) + 1 : 0;
43668: 4a84 tstl %d4
4366a: 6700 0212 beqw 4387e <mount+0x26a>
4366e: 2f04 movel %d4,%sp@-
43670: 4eb9 0004 f488 jsr 4f488 <strlen>
43676: 588f addql #4,%sp
43678: 2440 moveal %d0,%a2
4367a: 528a addql #1,%a2
size_t target_size = strlen( target ) + 1;
size_t size = sizeof( rtems_filesystem_mount_table_entry_t )
+ filesystemtype_size + source_size + target_size
4367c: 41f5 b863 lea %a5@(00000063,%a3:l),%a0
+ sizeof( rtems_filesystem_global_location_t );
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
43680: 4870 a800 pea %a0@(00000000,%a2:l)
43684: 4878 0001 pea 1 <ADD>
43688: 4eb9 0004 2e28 jsr 42e28 <calloc>
if ( mt_entry != NULL ) {
4368e: 508f addql #8,%sp
strlen( source_or_null ) + 1 : 0;
size_t target_size = strlen( target ) + 1;
size_t size = sizeof( rtems_filesystem_mount_table_entry_t )
+ filesystemtype_size + source_size + target_size
+ sizeof( rtems_filesystem_global_location_t );
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
43690: 2840 moveal %d0,%a4
if ( mt_entry != NULL ) {
43692: 4a80 tstl %d0
43694: 6700 0206 beqw 4389c <mount+0x288>
rtems_filesystem_global_location_t *mt_fs_root =
(rtems_filesystem_global_location_t *)
((char *) mt_entry + sizeof( *mt_entry ));
char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );
memcpy( str, filesystemtype, filesystemtype_size );
43698: 2f02 movel %d2,%sp@-
if ( mt_entry != NULL ) {
rtems_filesystem_global_location_t *mt_fs_root =
(rtems_filesystem_global_location_t *)
((char *) mt_entry + sizeof( *mt_entry ));
char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );
4369a: 2a00 movel %d0,%d5
4369c: 0685 0000 0062 addil #98,%d5
memcpy( str, filesystemtype, filesystemtype_size );
436a2: 47f9 0004 e964 lea 4e964 <memcpy>,%a3
mt_entry->type = str;
str += filesystemtype_size;
436a8: d485 addl %d5,%d2
rtems_filesystem_global_location_t *mt_fs_root =
(rtems_filesystem_global_location_t *)
((char *) mt_entry + sizeof( *mt_entry ));
char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );
memcpy( str, filesystemtype, filesystemtype_size );
436aa: 2f06 movel %d6,%sp@-
+ filesystemtype_size + source_size + target_size
+ sizeof( rtems_filesystem_global_location_t );
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
if ( mt_entry != NULL ) {
rtems_filesystem_global_location_t *mt_fs_root =
436ac: 2c00 movel %d0,%d6
436ae: 0686 0000 003e addil #62,%d6
(rtems_filesystem_global_location_t *)
((char *) mt_entry + sizeof( *mt_entry ));
char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );
memcpy( str, filesystemtype, filesystemtype_size );
436b4: 2f05 movel %d5,%sp@-
436b6: 4e93 jsr %a3@
mt_entry->type = str;
str += filesystemtype_size;
if ( source_or_null != NULL ) {
436b8: 4fef 000c lea %sp@(12),%sp
(rtems_filesystem_global_location_t *)
((char *) mt_entry + sizeof( *mt_entry ));
char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );
memcpy( str, filesystemtype, filesystemtype_size );
mt_entry->type = str;
436bc: 2945 0032 movel %d5,%a4@(50)
str += filesystemtype_size;
if ( source_or_null != NULL ) {
436c0: 4a84 tstl %d4
436c2: 6712 beqs 436d6 <mount+0xc2>
memcpy( str, source_or_null, source_size );
436c4: 2f0a movel %a2,%sp@-
436c6: 2f04 movel %d4,%sp@-
436c8: 2f02 movel %d2,%sp@-
436ca: 4e93 jsr %a3@
mt_entry->dev = str;
str += source_size;
436cc: 4fef 000c lea %sp@(12),%sp
mt_entry->type = str;
str += filesystemtype_size;
if ( source_or_null != NULL ) {
memcpy( str, source_or_null, source_size );
mt_entry->dev = str;
436d0: 2942 0036 movel %d2,%a4@(54)
str += source_size;
436d4: d48a addl %a2,%d2
}
memcpy( str, target, target_size );
436d6: 2f0d movel %a5,%sp@-
436d8: 2f2e ffac movel %fp@(-84),%sp@-
filesystemtype,
&target_length
);
if ( mt_entry != NULL ) {
mt_entry->writeable = options == RTEMS_FILESYSTEM_READ_WRITE;
436dc: 7a01 moveq #1,%d5
memcpy( str, source_or_null, source_size );
mt_entry->dev = str;
str += source_size;
}
memcpy( str, target, target_size );
436de: 2f02 movel %d2,%sp@-
436e0: 4e93 jsr %a3@
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
_Chain_Initialize( the_chain, starting_address, number_nodes, node_size );
436e2: 4878 0024 pea 24 <OPER2+0x10>
mt_entry->target = str;
str += target_size;
mt_entry->mounted = true;
mt_entry->mt_fs_root = mt_fs_root;
mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
436e6: 203c 0005 d25e movel #381534,%d0
436ec: 2940 002a movel %d0,%a4@(42)
436f0: 4878 0001 pea 1 <ADD>
memcpy( str, target, target_size );
mt_entry->target = str;
str += target_size;
mt_entry->mounted = true;
436f4: 7001 moveq #1,%d0
436f6: 1940 0028 moveb %d0,%a4@(40)
mt_entry->mt_fs_root = mt_fs_root;
mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
mt_fs_root->location.mt_entry = mt_entry;
mt_fs_root->reference_count = 1;
436fa: 7001 moveq #1,%d0
436fc: 2f06 movel %d6,%sp@-
436fe: 486c 0014 pea %a4@(20)
mt_entry->dev = str;
str += source_size;
}
memcpy( str, target, target_size );
mt_entry->target = str;
43702: 2942 002e movel %d2,%a4@(46)
mt_entry->mounted = true;
mt_entry->mt_fs_root = mt_fs_root;
mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
mt_fs_root->location.mt_entry = mt_entry;
mt_fs_root->reference_count = 1;
43706: 2940 0056 movel %d0,%a4@(86)
memcpy( str, target, target_size );
mt_entry->target = str;
str += target_size;
mt_entry->mounted = true;
mt_entry->mt_fs_root = mt_fs_root;
4370a: 2946 0024 movel %d6,%a4@(36)
mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
mt_fs_root->location.mt_entry = mt_entry;
4370e: 294c 0052 movel %a4,%a4@(82)
43712: 4eb9 0004 7fb0 jsr 47fb0 <_Chain_Initialize>
);
if ( mt_entry != NULL ) {
mt_entry->writeable = options == RTEMS_FILESYSTEM_READ_WRITE;
rv = (*fsmount_me_h)( mt_entry, data );
43718: 2f2e 0018 movel %fp@(24),%sp@-
4371c: 2047 moveal %d7,%a0
filesystemtype,
&target_length
);
if ( mt_entry != NULL ) {
mt_entry->writeable = options == RTEMS_FILESYSTEM_READ_WRITE;
4371e: caae 0014 andl %fp@(20),%d5
43722: 1945 0029 moveb %d5,%a4@(41)
rv = (*fsmount_me_h)( mt_entry, data );
43726: 2f0c movel %a4,%sp@-
43728: 4e90 jsr %a0@
if ( rv == 0 ) {
4372a: 4fef 0024 lea %sp@(36),%sp
);
if ( mt_entry != NULL ) {
mt_entry->writeable = options == RTEMS_FILESYSTEM_READ_WRITE;
rv = (*fsmount_me_h)( mt_entry, data );
4372e: 2400 movel %d0,%d2
if ( rv == 0 ) {
43730: 6600 00f6 bnew 43828 <mount+0x214>
if ( target != NULL ) {
43734: 4a83 tstl %d3
43736: 6700 0198 beqw 438d0 <mount+0x2bc>
{
int rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_PERMS_RWX
| RTEMS_FS_FOLLOW_LINK;
rtems_filesystem_location_info_t *currentloc =
4373a: 4878 001f pea 1f <OPER2+0xb>
rtems_filesystem_eval_path_start( &ctx, target, eval_flags );
4373e: 280e movel %fp,%d4
43740: 0684 ffff ffc8 addil #-56,%d4
{
int rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_PERMS_RWX
| RTEMS_FS_FOLLOW_LINK;
rtems_filesystem_location_info_t *currentloc =
43746: 2f03 movel %d3,%sp@-
43748: 2f04 movel %d4,%sp@-
4374a: 4eb9 0004 4382 jsr 44382 <rtems_filesystem_eval_path_start>
static inline bool rtems_filesystem_location_is_instance_root(
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
43750: 2040 moveal %d0,%a0
43752: 2268 0014 moveal %a0@(20),%a1
return (*mt_entry->ops->are_nodes_equal_h)(
43756: 2469 000c moveal %a1@(12),%a2
4375a: 2f29 0024 movel %a1@(36),%sp@-
4375e: 2f00 movel %d0,%sp@-
43760: 226a 0010 moveal %a2@(16),%a1
43764: 4e91 jsr %a1@
rtems_filesystem_eval_path_start( &ctx, target, eval_flags );
if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {
43766: 4fef 0014 lea %sp@(20),%sp
4376a: 4a00 tstb %d0
4376c: 6600 01ee bnew 4395c <mount+0x348>
static inline void rtems_filesystem_eval_path_extract_currentloc(
rtems_filesystem_eval_path_context_t *ctx,
rtems_filesystem_location_info_t *get
)
{
rtems_filesystem_location_copy_and_detach(
43770: 486e ffe0 pea %fp@(-32)
rtems_filesystem_location_info_t targetloc;
rtems_filesystem_global_location_t *mt_point_node;
rtems_filesystem_eval_path_extract_currentloc( &ctx, &targetloc );
43774: 240e movel %fp,%d2
43776: 0682 ffff ffb0 addil #-80,%d2
4377c: 2f02 movel %d2,%sp@-
4377e: 4eb9 0004 4834 jsr 44834 <rtems_filesystem_location_copy_and_detach>
mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
43784: 2f02 movel %d2,%sp@-
43786: 4eb9 0004 4a78 jsr 44a78 <rtems_filesystem_location_transform_to_global>
4378c: 2440 moveal %d0,%a2
mt_entry->mt_point_node = mt_point_node;
rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
4378e: 226a 0014 moveal %a2@(20),%a1
43792: 2269 000c moveal %a1@(12),%a1
43796: 2f0c movel %a4,%sp@-
43798: 2269 0030 moveal %a1@(48),%a1
rtems_filesystem_location_info_t targetloc;
rtems_filesystem_global_location_t *mt_point_node;
rtems_filesystem_eval_path_extract_currentloc( &ctx, &targetloc );
mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
mt_entry->mt_point_node = mt_point_node;
4379c: 2940 0020 movel %d0,%a4@(32)
rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
437a0: 4e91 jsr %a1@
if ( rv == 0 ) {
437a2: 4fef 0010 lea %sp@(16),%sp
rtems_filesystem_global_location_t *mt_point_node;
rtems_filesystem_eval_path_extract_currentloc( &ctx, &targetloc );
mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
mt_entry->mt_point_node = mt_point_node;
rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
437a6: 2400 movel %d0,%d2
if ( rv == 0 ) {
437a8: 6600 0094 bnew 4383e <mount+0x22a>
*/
#include <rtems/userenv.h>
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
437ac: 42a7 clrl %sp@-
437ae: 42a7 clrl %sp@-
437b0: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
437b6: 4eb9 0004 7458 jsr 47458 <rtems_semaphore_obtain>
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
437bc: 2279 0005 e294 moveal 5e294 <rtems_filesystem_mount_table+0x8>,%a1
the_node->next = tail;
437c2: 28bc 0005 e290 movel #385680,%a4@
tail->previous = the_node;
old_last->next = the_node;
437c8: 228c movel %a4,%a1@
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
437ca: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
437d0: 23cc 0005 e294 movel %a4,5e294 <rtems_filesystem_mount_table+0x8>
old_last->next = the_node;
the_node->previous = old_last;
437d6: 2949 0004 movel %a1,%a4@(4)
437da: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
437e0: 4fef 0010 lea %sp@(16),%sp
} else {
rtems_filesystem_eval_path_error( &ctx, EBUSY );
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
437e4: 2f04 movel %d4,%sp@-
437e6: 4eb9 0004 44d6 jsr 444d6 <rtems_filesystem_eval_path_cleanup>
437ec: 588f addql #4,%sp
rv = register_subordinate_file_system( mt_entry, target );
} else {
rv = register_root_file_system( mt_entry );
}
if ( rv != 0 ) {
437ee: 4a82 tstl %d2
437f0: 6628 bnes 4381a <mount+0x206> <== NEVER TAKEN
errno = EINVAL;
rv = -1;
}
return rv;
}
437f2: 2002 movel %d2,%d0
437f4: 4cee 3cfc ff84 moveml %fp@(-124),%d2-%d7/%a2-%a5
437fa: 4e5e unlk %fp
437fc: 4e75 rts
rtems_chain_append_unprotected(
&rtems_filesystem_mount_table,
&mt_entry->mt_node
);
} else {
errno = EINVAL;
437fe: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
43804: 7616 moveq #22,%d3 <== NOT EXECUTED
rv = -1;
43806: 74ff moveq #-1,%d2 <== NOT EXECUTED
rtems_chain_append_unprotected(
&rtems_filesystem_mount_table,
&mt_entry->mt_node
);
} else {
errno = EINVAL;
43808: 2040 moveal %d0,%a0 <== NOT EXECUTED
4380a: 2083 movel %d3,%a0@ <== NOT EXECUTED
4380c: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
43812: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release> <== NOT EXECUTED
43818: 588f addql #4,%sp <== NOT EXECUTED
} else {
rv = register_root_file_system( mt_entry );
}
if ( rv != 0 ) {
(*mt_entry->ops->fsunmount_me_h)( mt_entry );
4381a: 226c 000c moveal %a4@(12),%a1
4381e: 2f0c movel %a4,%sp@-
43820: 2269 003c moveal %a1@(60),%a1
43824: 4e91 jsr %a1@
43826: 588f addql #4,%sp
}
}
if ( rv != 0 ) {
free( mt_entry );
43828: 2f0c movel %a4,%sp@-
4382a: 4eb9 0004 30cc jsr 430cc <free>
43830: 588f addql #4,%sp
errno = EINVAL;
rv = -1;
}
return rv;
}
43832: 2002 movel %d2,%d0
43834: 4cee 3cfc ff84 moveml %fp@(-124),%d2-%d7/%a2-%a5
4383a: 4e5e unlk %fp
4383c: 4e75 rts
&rtems_filesystem_mount_table,
&mt_entry->mt_node
);
rtems_filesystem_mt_unlock();
} else {
rtems_filesystem_global_location_release( mt_point_node );
4383e: 2f0a movel %a2,%sp@-
43840: 4eb9 0004 4954 jsr 44954 <rtems_filesystem_global_location_release>
43846: 588f addql #4,%sp
} else {
rtems_filesystem_eval_path_error( &ctx, EBUSY );
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
43848: 2f04 movel %d4,%sp@-
4384a: 4eb9 0004 44d6 jsr 444d6 <rtems_filesystem_eval_path_cleanup>
43850: 588f addql #4,%sp
rv = register_subordinate_file_system( mt_entry, target );
} else {
rv = register_root_file_system( mt_entry );
}
if ( rv != 0 ) {
43852: 4a82 tstl %d2
43854: 679c beqs 437f2 <mount+0x1de> <== NEVER TAKEN
43856: 60c2 bras 4381a <mount+0x206>
const char *target_or_null,
const char *filesystemtype,
size_t *target_length_ptr
)
{
const char *target = target_or_null != NULL ? target_or_null : "/";
43858: 41f9 0005 d25c lea 5d25c <rtems_status_assoc+0x1a0>,%a0
4385e: 45f9 0004 f488 lea 4f488 <strlen>,%a2
43864: 3a7c 0002 moveaw #2,%a5
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
43868: 2f06 movel %d6,%sp@-
const char *target_or_null,
const char *filesystemtype,
size_t *target_length_ptr
)
{
const char *target = target_or_null != NULL ? target_or_null : "/";
4386a: 2d48 ffac movel %a0,%fp@(-84)
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
4386e: 4e92 jsr %a2@
43870: 588f addql #4,%sp
43872: 2400 movel %d0,%d2
43874: 2640 moveal %d0,%a3
43876: 5282 addql #1,%d2
size_t source_size = source_or_null != NULL ?
strlen( source_or_null ) + 1 : 0;
43878: 4a84 tstl %d4
4387a: 6600 fdf2 bnew 4366e <mount+0x5a>
4387e: 95ca subal %a2,%a2
size_t target_size = strlen( target ) + 1;
size_t size = sizeof( rtems_filesystem_mount_table_entry_t )
+ filesystemtype_size + source_size + target_size
43880: 41f5 b863 lea %a5@(00000063,%a3:l),%a0
+ sizeof( rtems_filesystem_global_location_t );
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
43884: 4870 a800 pea %a0@(00000000,%a2:l)
43888: 4878 0001 pea 1 <ADD>
4388c: 4eb9 0004 2e28 jsr 42e28 <calloc>
if ( mt_entry != NULL ) {
43892: 508f addql #8,%sp
strlen( source_or_null ) + 1 : 0;
size_t target_size = strlen( target ) + 1;
size_t size = sizeof( rtems_filesystem_mount_table_entry_t )
+ filesystemtype_size + source_size + target_size
+ sizeof( rtems_filesystem_global_location_t );
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
43894: 2840 moveal %d0,%a4
if ( mt_entry != NULL ) {
43896: 4a80 tstl %d0
43898: 6600 fdfe bnew 43698 <mount+0x84>
if ( rv != 0 ) {
free( mt_entry );
}
} else {
errno = ENOMEM;
4389c: 4eb9 0004 e144 jsr 4e144 <__errno>
rv = -1;
438a2: 74ff moveq #-1,%d2
if ( rv != 0 ) {
free( mt_entry );
}
} else {
errno = ENOMEM;
438a4: 2040 moveal %d0,%a0
438a6: 700c moveq #12,%d0
438a8: 2080 movel %d0,%a0@
errno = EINVAL;
rv = -1;
}
return rv;
}
438aa: 2002 movel %d2,%d0
438ac: 4cee 3cfc ff84 moveml %fp@(-124),%d2-%d7/%a2-%a5
438b2: 4e5e unlk %fp
438b4: 4e75 rts
} else {
errno = EINVAL;
rv = -1;
}
} else {
errno = EINVAL;
438b6: 4eb9 0004 e144 jsr 4e144 <__errno>
rv = -1;
438bc: 74ff moveq #-1,%d2
} else {
errno = EINVAL;
rv = -1;
}
} else {
errno = EINVAL;
438be: 7216 moveq #22,%d1
438c0: 2040 moveal %d0,%a0
rv = -1;
}
return rv;
}
438c2: 2002 movel %d2,%d0
438c4: 4cee 3cfc ff84 moveml %fp@(-124),%d2-%d7/%a2-%a5
} else {
errno = EINVAL;
rv = -1;
}
} else {
errno = EINVAL;
438ca: 2081 movel %d1,%a0@
rv = -1;
}
return rv;
}
438cc: 4e5e unlk %fp
438ce: 4e75 rts
*/
#include <rtems/userenv.h>
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
438d0: 42a7 clrl %sp@-
438d2: 42a7 clrl %sp@-
438d4: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
438da: 4eb9 0004 7458 jsr 47458 <rtems_semaphore_obtain>
)
{
int rv = 0;
rtems_filesystem_mt_lock();
if ( rtems_chain_is_empty( &rtems_filesystem_mount_table ) ) {
438e0: 4fef 000c lea %sp@(12),%sp
438e4: 203c 0005 e290 movel #385680,%d0
438ea: b0b9 0005 e28c cmpl 5e28c <rtems_filesystem_mount_table>,%d0
438f0: 6600 ff0c bnew 437fe <mount+0x1ea>
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
438f4: 2279 0005 e294 moveal 5e294 <rtems_filesystem_mount_table+0x8>,%a1
}
rtems_filesystem_mt_unlock();
if ( rv == 0 ) {
rtems_filesystem_global_location_t *new_fs_root =
rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
438fa: 260c movel %a4,%d3
438fc: 0683 0000 0024 addil #36,%d3
rv = -1;
}
rtems_filesystem_mt_unlock();
if ( rv == 0 ) {
rtems_filesystem_global_location_t *new_fs_root =
43902: 47f9 0004 49c8 lea 449c8 <rtems_filesystem_global_location_obtain>,%a3
rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
rtems_filesystem_global_location_t *new_fs_current =
rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
rtems_filesystem_global_location_assign(
43908: 45f9 0004 499e lea 4499e <rtems_filesystem_global_location_assign>,%a2
the_node->next = tail;
4390e: 2880 movel %d0,%a4@
tail->previous = the_node;
old_last->next = the_node;
43910: 228c movel %a4,%a1@
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
43912: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
43918: 23cc 0005 e294 movel %a4,5e294 <rtems_filesystem_mount_table+0x8>
old_last->next = the_node;
the_node->previous = old_last;
4391e: 2949 0004 movel %a1,%a4@(4)
43922: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
rv = -1;
}
rtems_filesystem_mt_unlock();
if ( rv == 0 ) {
rtems_filesystem_global_location_t *new_fs_root =
43928: 2f03 movel %d3,%sp@-
4392a: 4e93 jsr %a3@
4392c: 2800 movel %d0,%d4
rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
rtems_filesystem_global_location_t *new_fs_current =
4392e: 2f03 movel %d3,%sp@-
43930: 4e93 jsr %a3@
rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
rtems_filesystem_global_location_assign(
43932: 2079 0005 e2ac moveal 5e2ac <rtems_current_user_env>,%a0
43938: 5888 addql #4,%a0
rtems_filesystem_mt_unlock();
if ( rv == 0 ) {
rtems_filesystem_global_location_t *new_fs_root =
rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
rtems_filesystem_global_location_t *new_fs_current =
4393a: 2600 movel %d0,%d3
rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
rtems_filesystem_global_location_assign(
4393c: 2f04 movel %d4,%sp@-
4393e: 2f08 movel %a0,%sp@-
43940: 4e92 jsr %a2@
&rtems_filesystem_root,
new_fs_root
);
rtems_filesystem_global_location_assign(
43942: 2f03 movel %d3,%sp@-
43944: 2f39 0005 e2ac movel 5e2ac <rtems_current_user_env>,%sp@-
4394a: 4e92 jsr %a2@
4394c: 4fef 001c lea %sp@(28),%sp
errno = EINVAL;
rv = -1;
}
return rv;
}
43950: 2002 movel %d2,%d0
43952: 4cee 3cfc ff84 moveml %fp@(-124),%d2-%d7/%a2-%a5
43958: 4e5e unlk %fp
4395a: 4e75 rts
rtems_filesystem_mt_unlock();
} else {
rtems_filesystem_global_location_release( mt_point_node );
}
} else {
rtems_filesystem_eval_path_error( &ctx, EBUSY );
4395c: 4878 0010 pea 10 <INVALID_OPERATION>
rv = -1;
43960: 74ff moveq #-1,%d2
rtems_filesystem_mt_unlock();
} else {
rtems_filesystem_global_location_release( mt_point_node );
}
} else {
rtems_filesystem_eval_path_error( &ctx, EBUSY );
43962: 2f04 movel %d4,%sp@-
43964: 4eb9 0004 402a jsr 4402a <rtems_filesystem_eval_path_error>
4396a: 508f addql #8,%sp
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
4396c: 2f04 movel %d4,%sp@-
4396e: 4eb9 0004 44d6 jsr 444d6 <rtems_filesystem_eval_path_cleanup>
43974: 588f addql #4,%sp
rv = register_subordinate_file_system( mt_entry, target );
} else {
rv = register_root_file_system( mt_entry );
}
if ( rv != 0 ) {
43976: 4a82 tstl %d2
43978: 6700 fe78 beqw 437f2 <mount+0x1de>
4397c: 6000 fe9c braw 4381a <mount+0x206>
00047b94 <mount_and_make_target_path>:
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
47b94: 4e56 ffec linkw %fp,#-20
47b98: 48d7 007c moveml %d2-%d6,%sp@
47b9c: 262e 0008 movel %fp@(8),%d3
47ba0: 242e 000c movel %fp@(12),%d2
47ba4: 282e 0010 movel %fp@(16),%d4
47ba8: 2a2e 0014 movel %fp@(20),%d5
47bac: 2c2e 0018 movel %fp@(24),%d6
int rv = -1;
if (target != NULL) {
47bb0: 4a82 tstl %d2
47bb2: 673e beqs 47bf2 <mount_and_make_target_path+0x5e>
rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);
47bb4: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca>
47bb8: 2f02 movel %d2,%sp@-
47bba: 4eb9 0004 883c jsr 4883c <rtems_mkdir>
if (rv == 0) {
47bc0: 508f addql #8,%sp
47bc2: 4a80 tstl %d0
47bc4: 670a beqs 47bd0 <mount_and_make_target_path+0x3c><== ALWAYS TAKEN
} else {
errno = EINVAL;
}
return rv;
}
47bc6: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED
47bcc: 4e5e unlk %fp <== NOT EXECUTED
47bce: 4e75 rts <== NOT EXECUTED
int rv = -1;
if (target != NULL) {
rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);
if (rv == 0) {
rv = mount(
47bd0: 2d46 0018 movel %d6,%fp@(24)
47bd4: 2d45 0014 movel %d5,%fp@(20)
47bd8: 2d44 0010 movel %d4,%fp@(16)
47bdc: 2d42 000c movel %d2,%fp@(12)
47be0: 2d43 0008 movel %d3,%fp@(8)
} else {
errno = EINVAL;
}
return rv;
}
47be4: 4cee 007c ffec moveml %fp@(-20),%d2-%d6
47bea: 4e5e unlk %fp
int rv = -1;
if (target != NULL) {
rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);
if (rv == 0) {
rv = mount(
47bec: 4ef9 0004 7c0c jmp 47c0c <mount>
options,
data
);
}
} else {
errno = EINVAL;
47bf2: 4eb9 0006 0414 jsr 60414 <__errno>
47bf8: 7216 moveq #22,%d1
47bfa: 2040 moveal %d0,%a0
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
int rv = -1;
47bfc: 70ff moveq #-1,%d0
} else {
errno = EINVAL;
}
return rv;
}
47bfe: 4cee 007c ffec moveml %fp@(-20),%d2-%d6
options,
data
);
}
} else {
errno = EINVAL;
47c04: 2081 movel %d1,%a0@
}
return rv;
}
47c06: 4e5e unlk %fp
...
00056aac <msdos_creat_node>:
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
dir_pos->sname.ofs = 0;
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
56aac: 72ff moveq #-1,%d1
msdos_node_type_t type,
const char *name,
int name_len,
mode_t mode,
const fat_file_fd_t *link_fd)
{
56aae: 4e56 ff44 linkw %fp,#-188
ssize_t ret = 0;
msdos_fs_info_t *fs_info = parent_loc->mt_entry->fs_info;
fat_file_fd_t *parent_fat_fd = parent_loc->node_access;
fat_file_fd_t *fat_fd = NULL;
time_t time_ret = 0;
uint16_t time_val = 0;
56ab2: 4240 clrw %d0
msdos_node_type_t type,
const char *name,
int name_len,
mode_t mode,
const fat_file_fd_t *link_fd)
{
56ab4: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
56ab8: 246e 0008 moveal %fp@(8),%a2
uint32_t sec = 0;
uint32_t byte = 0;
fat_dir_pos_init(&dir_pos);
memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
56abc: 47ee ff80 lea %fp@(-128),%a3
mode_t mode,
const fat_file_fd_t *link_fd)
{
int rc = RC_OK;
ssize_t ret = 0;
msdos_fs_info_t *fs_info = parent_loc->mt_entry->fs_info;
56ac0: 206a 0014 moveal %a2@(20),%a0
56ac4: 2868 0008 moveal %a0@(8),%a4
uint32_t byte = 0;
fat_dir_pos_init(&dir_pos);
memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);
56ac8: 4878 0040 pea 40 <DBL_MANT_DIG+0xb>
msdos_node_type_t type,
const char *name,
int name_len,
mode_t mode,
const fat_file_fd_t *link_fd)
{
56acc: 282e 0010 movel %fp@(16),%d4
uint32_t byte = 0;
fat_dir_pos_init(&dir_pos);
memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);
56ad0: 42a7 clrl %sp@-
msdos_node_type_t type,
const char *name,
int name_len,
mode_t mode,
const fat_file_fd_t *link_fd)
{
56ad2: 262e 0014 movel %fp@(20),%d3
56ad6: 2d41 ff78 movel %d1,%fp@(-136)
int rc = RC_OK;
ssize_t ret = 0;
msdos_fs_info_t *fs_info = parent_loc->mt_entry->fs_info;
fat_file_fd_t *parent_fat_fd = parent_loc->node_access;
56ada: 2a6a 0008 moveal %a2@(8),%a5
dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
56ade: 2d41 ff7c movel %d1,%fp@(-132)
fat_file_fd_t *fat_fd = NULL;
time_t time_ret = 0;
uint16_t time_val = 0;
56ae2: 3d40 ff68 movew %d0,%fp@(-152)
{
int rc = RC_OK;
ssize_t ret = 0;
msdos_fs_info_t *fs_info = parent_loc->mt_entry->fs_info;
fat_file_fd_t *parent_fat_fd = parent_loc->node_access;
fat_file_fd_t *fat_fd = NULL;
56ae6: 42ae ff6c clrl %fp@(-148)
time_t time_ret = 0;
uint16_t time_val = 0;
uint16_t date = 0;
56aea: 3d40 ff6a movew %d0,%fp@(-150)
static inline void
fat_dir_pos_init(
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
56aee: 42ae ff70 clrl %fp@(-144)
dir_pos->sname.ofs = 0;
56af2: 42ae ff74 clrl %fp@(-140)
uint32_t sec = 0;
uint32_t byte = 0;
fat_dir_pos_init(&dir_pos);
memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
56af6: 4293 clrl %a3@
56af8: 42ae ff84 clrl %fp@(-124)
56afc: 42ae ff88 clrl %fp@(-120)
56b00: 42ae ff8c clrl %fp@(-116)
56b04: 42ae ff90 clrl %fp@(-112)
56b08: 42ae ff94 clrl %fp@(-108)
56b0c: 42ae ff98 clrl %fp@(-104)
56b10: 42ae ff9c clrl %fp@(-100)
memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);
56b14: 486e ffc0 pea %fp@(-64)
56b18: 4eb9 0005 b1f8 jsr 5b1f8 <memset>
if (name_len > MSDOS_NAME_MAX_LFN_WITH_DOT) {
56b1e: 4fef 000c lea %sp@(12),%sp
56b22: 0c83 0000 0104 cmpil #260,%d3
56b28: 6e00 038c bgtw 56eb6 <msdos_creat_node+0x40a>
rtems_set_errno_and_return_minus_one(ENAMETOOLONG);
}
name_type = msdos_long_to_short (name, name_len,
56b2c: 4878 000b pea b <LASTO+0x1>
56b30: 2f0b movel %a3,%sp@-
56b32: 2f03 movel %d3,%sp@-
56b34: 2f04 movel %d4,%sp@-
56b36: 4eb9 0005 7050 jsr 57050 <msdos_long_to_short>
MSDOS_DIR_NAME(short_node),
MSDOS_NAME_MAX);
if (name_type == MSDOS_NAME_INVALID) {
56b3c: 4fef 0010 lea %sp@(16),%sp
if (name_len > MSDOS_NAME_MAX_LFN_WITH_DOT) {
rtems_set_errno_and_return_minus_one(ENAMETOOLONG);
}
name_type = msdos_long_to_short (name, name_len,
56b40: 2a00 movel %d0,%d5
MSDOS_DIR_NAME(short_node),
MSDOS_NAME_MAX);
if (name_type == MSDOS_NAME_INVALID) {
56b42: 6700 0384 beqw 56ec8 <msdos_creat_node+0x41c>
/* fill reserved field */
*MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE;
/* set up last write date and time */
time_ret = time(NULL);
56b46: 42a7 clrl %sp@-
if (name_type == MSDOS_NAME_INVALID) {
rtems_set_errno_and_return_minus_one(EINVAL);
}
/* fill reserved field */
*MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE;
56b48: 4200 clrb %d0
56b4a: 1d40 ff8c moveb %d0,%fp@(-116)
/* set up last write date and time */
time_ret = time(NULL);
56b4e: 4eb9 0005 eab8 jsr 5eab8 <time>
if ( time_ret == -1 )
56b54: 588f addql #4,%sp
56b56: 72ff moveq #-1,%d1
56b58: b280 cmpl %d0,%d1
56b5a: 6700 037e beqw 56eda <msdos_creat_node+0x42e>
return -1;
msdos_date_unix2dos(time_ret, &date, &time_val);
56b5e: 486e ff68 pea %fp@(-152)
static inline uint16_t m68k_swap_u16(
uint16_t value
)
{
return (((value & 0xff) << 8) | ((value >> 8) & 0xff));
56b62: 4282 clrl %d2
56b64: 486e ff6a pea %fp@(-150)
56b68: 2f00 movel %d0,%sp@-
56b6a: 4eb9 0005 97bc jsr 597bc <msdos_date_unix2dos>
*MSDOS_DIR_LAST_ACCESS_DATE(short_node) = CT_LE_W(date);
/* initialize directory/file size */
*MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;
if (type == MSDOS_DIRECTORY) {
56b70: 4fef 000c lea %sp@(12),%sp
56b74: 4281 clrl %d1
56b76: 342e ff68 movew %fp@(-152),%d2
56b7a: 322e ff6a movew %fp@(-150),%d1
*MSDOS_DIR_WRITE_TIME(short_node) = CT_LE_W(time_val);
*MSDOS_DIR_WRITE_DATE(short_node) = CT_LE_W(date);
*MSDOS_DIR_LAST_ACCESS_DATE(short_node) = CT_LE_W(date);
/* initialize directory/file size */
*MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;
56b7e: 42ae ff9c clrl %fp@(-100)
56b82: 2c02 movel %d2,%d6
56b84: 2001 movel %d1,%d0
56b86: e08e lsrl #8,%d6
56b88: e088 lsrl #8,%d0
56b8a: e18a lsll #8,%d2
56b8c: e189 lsll #8,%d1
56b8e: 8486 orl %d6,%d2
56b90: 8280 orl %d0,%d1
time_ret = time(NULL);
if ( time_ret == -1 )
return -1;
msdos_date_unix2dos(time_ret, &date, &time_val);
*MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val);
56b92: 3d42 ff8e movew %d2,%fp@(-114)
*MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date);
56b96: 3d41 ff90 movew %d1,%fp@(-112)
*MSDOS_DIR_WRITE_TIME(short_node) = CT_LE_W(time_val);
56b9a: 3d42 ff96 movew %d2,%fp@(-106)
*MSDOS_DIR_WRITE_DATE(short_node) = CT_LE_W(date);
56b9e: 3d41 ff98 movew %d1,%fp@(-104)
*MSDOS_DIR_LAST_ACCESS_DATE(short_node) = CT_LE_W(date);
56ba2: 3d41 ff92 movew %d1,%fp@(-110)
/* initialize directory/file size */
*MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;
if (type == MSDOS_DIRECTORY) {
56ba6: 4aae 000c tstl %fp@(12)
56baa: 6600 01ba bnew 56d66 <msdos_creat_node+0x2ba>
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56bae: 2f0b movel %a3,%sp@- <== NOT EXECUTED
56bb0: 2c0e movel %fp,%d6 <== NOT EXECUTED
56bb2: 0686 ffff ff70 addil #-144,%d6 <== NOT EXECUTED
/* initialize directory/file size */
*MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;
if (type == MSDOS_DIRECTORY) {
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;
56bb8: 7410 moveq #16,%d2 <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56bba: 2f06 movel %d6,%sp@- <== NOT EXECUTED
/* initialize directory/file size */
*MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;
if (type == MSDOS_DIRECTORY) {
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;
56bbc: 102e ff8b moveb %fp@(-117),%d0 <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56bc0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
/* initialize directory/file size */
*MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;
if (type == MSDOS_DIRECTORY) {
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;
56bc2: 8082 orl %d2,%d0 <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56bc4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
/* initialize directory/file size */
*MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;
if (type == MSDOS_DIRECTORY) {
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;
56bc6: 1d40 ff8b moveb %d0,%fp@(-117) <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56bca: 2f04 movel %d4,%sp@- <== NOT EXECUTED
56bcc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
56bd0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
56bd2: 4eb9 0005 85f8 jsr 585f8 <msdos_get_name_node> <== NOT EXECUTED
name_type, &dir_pos, short_node);
if ( rc != RC_OK )
56bd8: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56bdc: 2400 movel %d0,%d2 <== NOT EXECUTED
name_type, &dir_pos, short_node);
if ( rc != RC_OK )
56bde: 6600 017a bnew 56d5a <msdos_creat_node+0x2ae> <== NOT EXECUTED
* to do
*/
if (type == MSDOS_DIRECTORY)
{
/* open new directory as fat-file */
rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);
56be2: 486e ff6c pea %fp@(-148) <== NOT EXECUTED
56be6: 2f06 movel %d6,%sp@- <== NOT EXECUTED
56be8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
56bea: 4eb9 0005 1914 jsr 51914 <fat_file_open> <== NOT EXECUTED
if (rc != RC_OK)
56bf0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* to do
*/
if (type == MSDOS_DIRECTORY)
{
/* open new directory as fat-file */
rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);
56bf4: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc != RC_OK)
56bf6: 6600 01bc bnew 56db4 <msdos_creat_node+0x308> <== NOT EXECUTED
/*
* we opened fat-file for node we just created, so initialize fat-file
* descritor
*/
fat_fd->fat_file_size = 0;
56bfa: 222e ff6c movel %fp@(-148),%d1 <== NOT EXECUTED
fat_fd->fat_file_type = FAT_DIRECTORY;
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
56bfe: 2041 moveal %d1,%a0 <== NOT EXECUTED
/*
* here we can ommit FAT32 condition because for all FAT types dirs
* right under root dir should contain 0 in dotdot entry but for
* FAT12/16 parent_fat_fd->cluster_num always contains such value
*/
if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&
56c00: 7401 moveq #1,%d2 <== NOT EXECUTED
* we opened fat-file for node we just created, so initialize fat-file
* descritor
*/
fat_fd->fat_file_size = 0;
fat_fd->fat_file_type = FAT_DIRECTORY;
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
56c02: 7020 moveq #32,%d0 <== NOT EXECUTED
56c04: 4840 swap %d0 <== NOT EXECUTED
/*
* we opened fat-file for node we just created, so initialize fat-file
* descritor
*/
fat_fd->fat_file_size = 0;
56c06: 42a8 0018 clrl %a0@(24) <== NOT EXECUTED
fat_fd->fat_file_type = FAT_DIRECTORY;
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
56c0a: 2140 0014 movel %d0,%a0@(20) <== NOT EXECUTED
/*
* we opened fat-file for node we just created, so initialize fat-file
* descritor
*/
fat_fd->fat_file_size = 0;
fat_fd->fat_file_type = FAT_DIRECTORY;
56c0e: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED
/*
* dot and dotdot entries are identical to new node except the
* names
*/
memcpy(DOT_NODE_P(dot_dotdot), short_node,
56c12: 2d53 ffc0 movel %a3@,%fp@(-64) <== NOT EXECUTED
56c16: 2d6e ff84 ffc4 movel %fp@(-124),%fp@(-60) <== NOT EXECUTED
56c1c: 2d6e ff88 ffc8 movel %fp@(-120),%fp@(-56) <== NOT EXECUTED
56c22: 2d6e ff8c ffcc movel %fp@(-116),%fp@(-52) <== NOT EXECUTED
56c28: 2d6e ff90 ffd0 movel %fp@(-112),%fp@(-48) <== NOT EXECUTED
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,
56c2e: 2d53 ffe0 movel %a3@,%fp@(-32) <== NOT EXECUTED
/*
* dot and dotdot entries are identical to new node except the
* names
*/
memcpy(DOT_NODE_P(dot_dotdot), short_node,
56c32: 2d6e ff94 ffd4 movel %fp@(-108),%fp@(-44) <== NOT EXECUTED
56c38: 2d6e ff98 ffd8 movel %fp@(-104),%fp@(-40) <== NOT EXECUTED
56c3e: 2d6e ff9c ffdc movel %fp@(-100),%fp@(-36) <== NOT EXECUTED
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,
56c44: 2d6e ff84 ffe4 movel %fp@(-124),%fp@(-28) <== NOT EXECUTED
56c4a: 2d6e ff88 ffe8 movel %fp@(-120),%fp@(-24) <== NOT EXECUTED
56c50: 2d6e ff8c ffec movel %fp@(-116),%fp@(-20) <== NOT EXECUTED
56c56: 2d6e ff90 fff0 movel %fp@(-112),%fp@(-16) <== NOT EXECUTED
56c5c: 2d6e ff94 fff4 movel %fp@(-108),%fp@(-12) <== NOT EXECUTED
56c62: 2d6e ff98 fff8 movel %fp@(-104),%fp@(-8) <== NOT EXECUTED
56c68: 2d6e ff9c fffc movel %fp@(-100),%fp@(-4) <== NOT EXECUTED
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,
56c6e: 2279 0006 a0c0 moveal 6a0c0 <MSDOS_DOT_NAME>,%a1 <== NOT EXECUTED
56c74: 2d59 ffc0 movel %a1@+,%fp@(-64) <== NOT EXECUTED
56c78: 2d59 ffc4 movel %a1@+,%fp@(-60) <== NOT EXECUTED
MSDOS_NAME_MAX);
memcpy(MSDOS_DIR_NAME(DOTDOT_NODE_P(dot_dotdot)), MSDOS_DOTDOT_NAME,
56c7c: 2079 0006 a0bc moveal 6a0bc <MSDOS_DOTDOT_NAME>,%a0 <== NOT EXECUTED
*/
memcpy(DOT_NODE_P(dot_dotdot), short_node,
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,
56c82: 3d59 ffc8 movew %a1@+,%fp@(-56) <== NOT EXECUTED
56c86: 1d51 ffca moveb %a1@,%fp@(-54) <== NOT EXECUTED
MSDOS_NAME_MAX);
memcpy(MSDOS_DIR_NAME(DOTDOT_NODE_P(dot_dotdot)), MSDOS_DOTDOT_NAME,
56c8a: 2d58 ffe0 movel %a0@+,%fp@(-32) <== NOT EXECUTED
56c8e: 2d58 ffe4 movel %a0@+,%fp@(-28) <== NOT EXECUTED
56c92: 3d58 ffe8 movew %a0@+,%fp@(-24) <== NOT EXECUTED
56c96: 1d50 ffea moveb %a0@,%fp@(-22) <== NOT EXECUTED
/*
* here we can ommit FAT32 condition because for all FAT types dirs
* right under root dir should contain 0 in dotdot entry but for
* FAT12/16 parent_fat_fd->cluster_num always contains such value
*/
if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&
56c9a: b4ad 0020 cmpl %a5@(32),%d2 <== NOT EXECUTED
56c9e: 6700 01f0 beqw 56e90 <msdos_creat_node+0x3e4> <== NOT EXECUTED
*MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
}
else
{
*MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) =
CT_LE_W((uint16_t )((parent_fat_fd->cln) & 0x0000FFFF));
56ca2: 202d 001c movel %a5@(28),%d0 <== NOT EXECUTED
err:
/* mark the used 32bytes structure on the disk as free */
msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);
return rc;
}
56ca6: 2400 movel %d0,%d2 <== NOT EXECUTED
56ca8: 4240 clrw %d0 <== NOT EXECUTED
56caa: 4840 swap %d0 <== NOT EXECUTED
56cac: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
56cb2: 2600 movel %d0,%d3 <== NOT EXECUTED
56cb4: 2802 movel %d2,%d4 <== NOT EXECUTED
56cb6: e08a lsrl #8,%d2 <== NOT EXECUTED
56cb8: e088 lsrl #8,%d0 <== NOT EXECUTED
56cba: e18c lsll #8,%d4 <== NOT EXECUTED
56cbc: e18b lsll #8,%d3 <== NOT EXECUTED
56cbe: 8484 orl %d4,%d2 <== NOT EXECUTED
56cc0: 8083 orl %d3,%d0 <== NOT EXECUTED
*MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
*MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
}
else
{
*MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) =
56cc2: 3d42 fffa movew %d2,%fp@(-6) <== NOT EXECUTED
CT_LE_W((uint16_t )((parent_fat_fd->cln) & 0x0000FFFF));
*MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) =
56cc6: 3d40 fff4 movew %d0,%fp@(-12) <== NOT EXECUTED
/*
* write dot and dotdot entries to new fat-file: currently fat-file
* correspondes to a new node is zero length, so it will be extended
* by one cluster and entries will be written
*/
ret = fat_file_write(&fs_info->fat, fat_fd, 0,
56cca: 486e ffc0 pea %fp@(-64) <== NOT EXECUTED
56cce: 47f9 0005 22ee lea 522ee <fat_file_write>,%a3 <== NOT EXECUTED
56cd4: 4878 0040 pea 40 <DBL_MANT_DIG+0xb> <== NOT EXECUTED
56cd8: 42a7 clrl %sp@- <== NOT EXECUTED
56cda: 2f01 movel %d1,%sp@- <== NOT EXECUTED
56cdc: 2f0c movel %a4,%sp@- <== NOT EXECUTED
56cde: 4e93 jsr %a3@ <== NOT EXECUTED
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2,
(uint8_t *)dot_dotdot);
if (ret < 0)
56ce0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
56ce4: 4a80 tstl %d0 <== NOT EXECUTED
56ce6: 6d00 00bc bltw 56da4 <msdos_creat_node+0x2f8> <== NOT EXECUTED
rc = -1;
goto error;
}
/* increment fat-file size by cluster size */
fat_fd->fat_file_size += fs_info->fat.vol.bpc;
56cea: 4280 clrl %d0 <== NOT EXECUTED
56cec: 302c 0006 movew %a4@(6),%d0 <== NOT EXECUTED
56cf0: 206e ff6c moveal %fp@(-148),%a0 <== NOT EXECUTED
56cf4: d1a8 0018 addl %d0,%a0@(24) <== NOT EXECUTED
/* set up cluster num for dot entry */
*MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =
CT_LE_W((uint16_t )((fat_fd->cln) & 0x0000FFFF));
56cf8: 2228 001c movel %a0@(28),%d1 <== NOT EXECUTED
*MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =
CT_LE_W((uint16_t )(((fat_fd->cln) & 0xFFFF0000) >> 16));
/* rewrite dot entry */
ret = fat_file_write(&fs_info->fat, fat_fd, 0,
56cfc: 486e ffc0 pea %fp@(-64) <== NOT EXECUTED
err:
/* mark the used 32bytes structure on the disk as free */
msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);
return rc;
}
56d00: 2001 movel %d1,%d0 <== NOT EXECUTED
CT_LE_W((uint16_t )((fat_fd->cln) & 0x0000FFFF));
*MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =
CT_LE_W((uint16_t )(((fat_fd->cln) & 0xFFFF0000) >> 16));
/* rewrite dot entry */
ret = fat_file_write(&fs_info->fat, fat_fd, 0,
56d02: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
err:
/* mark the used 32bytes structure on the disk as free */
msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);
return rc;
}
56d06: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
56d0c: 4241 clrw %d1 <== NOT EXECUTED
56d0e: 4841 swap %d1 <== NOT EXECUTED
CT_LE_W((uint16_t )((fat_fd->cln) & 0x0000FFFF));
*MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =
CT_LE_W((uint16_t )(((fat_fd->cln) & 0xFFFF0000) >> 16));
/* rewrite dot entry */
ret = fat_file_write(&fs_info->fat, fat_fd, 0,
56d10: 42a7 clrl %sp@- <== NOT EXECUTED
56d12: 2400 movel %d0,%d2 <== NOT EXECUTED
56d14: 2601 movel %d1,%d3 <== NOT EXECUTED
56d16: e08a lsrl #8,%d2 <== NOT EXECUTED
56d18: e089 lsrl #8,%d1 <== NOT EXECUTED
56d1a: e188 lsll #8,%d0 <== NOT EXECUTED
56d1c: e18b lsll #8,%d3 <== NOT EXECUTED
56d1e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
56d20: 8480 orl %d0,%d2 <== NOT EXECUTED
56d22: 8283 orl %d3,%d1 <== NOT EXECUTED
56d24: 2f0c movel %a4,%sp@- <== NOT EXECUTED
/* increment fat-file size by cluster size */
fat_fd->fat_file_size += fs_info->fat.vol.bpc;
/* set up cluster num for dot entry */
*MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =
56d26: 3d42 ffda movew %d2,%fp@(-38) <== NOT EXECUTED
CT_LE_W((uint16_t )((fat_fd->cln) & 0x0000FFFF));
*MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =
56d2a: 3d41 ffd4 movew %d1,%fp@(-44) <== NOT EXECUTED
CT_LE_W((uint16_t )(((fat_fd->cln) & 0xFFFF0000) >> 16));
/* rewrite dot entry */
ret = fat_file_write(&fs_info->fat, fat_fd, 0,
56d2e: 4e93 jsr %a3@ <== NOT EXECUTED
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,
(uint8_t *)DOT_NODE_P(dot_dotdot));
if (ret < 0)
56d30: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
56d34: 4a80 tstl %d0 <== NOT EXECUTED
56d36: 6d6c blts 56da4 <msdos_creat_node+0x2f8> <== NOT EXECUTED
rc = -1;
goto error;
}
/* write first cluster num of a new directory to disk */
rc = msdos_set_first_cluster_num(parent_loc->mt_entry, fat_fd);
56d38: 2f2e ff6c movel %fp@(-148),%sp@- <== NOT EXECUTED
56d3c: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED
56d40: 4eb9 0005 7366 jsr 57366 <msdos_set_first_cluster_num> <== NOT EXECUTED
if (rc != RC_OK)
56d46: 508f addql #8,%sp <== NOT EXECUTED
rc = -1;
goto error;
}
/* write first cluster num of a new directory to disk */
rc = msdos_set_first_cluster_num(parent_loc->mt_entry, fat_fd);
56d48: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc != RC_OK)
56d4a: 665a bnes 56da6 <msdos_creat_node+0x2fa> <== NOT EXECUTED
goto error;
fat_file_close(&fs_info->fat, fat_fd);
56d4c: 2f2e ff6c movel %fp@(-148),%sp@- <== NOT EXECUTED
56d50: 2f0c movel %a4,%sp@- <== NOT EXECUTED
56d52: 4eb9 0005 1f16 jsr 51f16 <fat_file_close> <== NOT EXECUTED
56d58: 508f addql #8,%sp <== NOT EXECUTED
err:
/* mark the used 32bytes structure on the disk as free */
msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);
return rc;
}
56d5a: 2002 movel %d2,%d0 <== NOT EXECUTED
56d5c: 4cee 3c7c ff44 moveml %fp@(-188),%d2-%d6/%a2-%a5 <== NOT EXECUTED
56d62: 4e5e unlk %fp <== NOT EXECUTED
56d64: 4e75 rts <== NOT EXECUTED
*MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;
if (type == MSDOS_DIRECTORY) {
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;
}
else if (type == MSDOS_HARD_LINK) {
56d66: 7002 moveq #2,%d0
56d68: b0ae 000c cmpl %fp@(12),%d0
56d6c: 6766 beqs 56dd4 <msdos_creat_node+0x328> <== NEVER TAKEN
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56d6e: 2f0b movel %a3,%sp@-
56d70: 486e ff70 pea %fp@(-144)
* set "archive bit" due to changes
*/
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
}
else { /* regular file... */
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
56d74: 7420 moveq #32,%d2
56d76: 102e ff8b moveb %fp@(-117),%d0
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56d7a: 2f05 movel %d5,%sp@-
* set "archive bit" due to changes
*/
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
}
else { /* regular file... */
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
56d7c: 8082 orl %d2,%d0
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56d7e: 2f03 movel %d3,%sp@-
* set "archive bit" due to changes
*/
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
}
else { /* regular file... */
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
56d80: 1d40 ff8b moveb %d0,%fp@(-117)
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56d84: 2f04 movel %d4,%sp@-
56d86: 4878 0001 pea 1 <ADD>
56d8a: 2f0a movel %a2,%sp@-
56d8c: 4eb9 0005 85f8 jsr 585f8 <msdos_get_name_node>
56d92: 4fef 001c lea %sp@(28),%sp
56d96: 2400 movel %d0,%d2
err:
/* mark the used 32bytes structure on the disk as free */
msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);
return rc;
}
56d98: 2002 movel %d2,%d0
56d9a: 4cee 3c7c ff44 moveml %fp@(-188),%d2-%d6/%a2-%a5
56da0: 4e5e unlk %fp
56da2: 4e75 rts
ret = fat_file_write(&fs_info->fat, fat_fd, 0,
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2,
(uint8_t *)dot_dotdot);
if (ret < 0)
{
rc = -1;
56da4: 74ff moveq #-1,%d2 <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
}
return RC_OK;
error:
fat_file_close(&fs_info->fat, fat_fd);
56da6: 2f2e ff6c movel %fp@(-148),%sp@- <== NOT EXECUTED
56daa: 2f0c movel %a4,%sp@- <== NOT EXECUTED
56dac: 4eb9 0005 1f16 jsr 51f16 <fat_file_close> <== NOT EXECUTED
56db2: 508f addql #8,%sp <== NOT EXECUTED
err:
/* mark the used 32bytes structure on the disk as free */
msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);
56db4: 4878 00e5 pea e5 <DBL_MANT_DIG+0xb0> <== NOT EXECUTED
56db8: 2f06 movel %d6,%sp@- <== NOT EXECUTED
56dba: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED
56dbe: 4eb9 0005 7558 jsr 57558 <msdos_set_first_char4file_name> <== NOT EXECUTED
56dc4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return rc;
}
56dc8: 2002 movel %d2,%d0 <== NOT EXECUTED
56dca: 4cee 3c7c ff44 moveml %fp@(-188),%d2-%d6/%a2-%a5 <== NOT EXECUTED
56dd0: 4e5e unlk %fp <== NOT EXECUTED
56dd2: 4e75 rts <== NOT EXECUTED
* node to the newly created
*/
/*
* read the original directory entry
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat,
56dd4: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED
56dd8: 2028 0020 movel %a0@(32),%d0 <== NOT EXECUTED
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
56ddc: 6600 00a0 bnew 56e7e <msdos_creat_node+0x3d2> <== NOT EXECUTED
56de0: 7403 moveq #3,%d2 <== NOT EXECUTED
56de2: 122c 000e moveb %a4@(14),%d1 <== NOT EXECUTED
56de6: c282 andl %d2,%d1 <== NOT EXECUTED
56de8: 4a01 tstb %d1 <== NOT EXECUTED
56dea: 6700 0092 beqw 56e7e <msdos_creat_node+0x3d2> <== NOT EXECUTED
return fs_info->vol.rdir_loc;
56dee: 202c 001e movel %a4@(30),%d0 <== NOT EXECUTED
link_fd->dir_pos.sname.cln);
sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
ret = _fat_block_read(&fs_info->fat,
56df2: 486e ffa0 pea %fp@(-96) <== NOT EXECUTED
* read the original directory entry
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat,
link_fd->dir_pos.sname.cln);
sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
56df6: 4282 clrl %d2 <== NOT EXECUTED
ret = _fat_block_read(&fs_info->fat,
56df8: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
/*
* read the original directory entry
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat,
link_fd->dir_pos.sname.cln);
sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
56dfc: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED
byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
56e00: 3414 movew %a4@,%d2 <== NOT EXECUTED
/*
* read the original directory entry
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat,
link_fd->dir_pos.sname.cln);
sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
56e02: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED
byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
56e06: 5382 subql #1,%d2 <== NOT EXECUTED
ret = _fat_block_read(&fs_info->fat,
56e08: 2040 moveal %d0,%a0 <== NOT EXECUTED
56e0a: c481 andl %d1,%d2 <== NOT EXECUTED
56e0c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* read the original directory entry
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat,
link_fd->dir_pos.sname.cln);
sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
56e0e: 4282 clrl %d2 <== NOT EXECUTED
56e10: 142c 0002 moveb %a4@(2),%d2 <== NOT EXECUTED
56e14: e4a9 lsrl %d2,%d1 <== NOT EXECUTED
byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
ret = _fat_block_read(&fs_info->fat,
56e16: 4870 1800 pea %a0@(00000000,%d1:l) <== NOT EXECUTED
56e1a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
56e1c: 4eb9 0005 29c4 jsr 529c4 <_fat_block_read> <== NOT EXECUTED
sec, byte, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,
link_node);
if (ret < 0) {
56e22: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
56e26: 4a80 tstl %d0 <== NOT EXECUTED
56e28: 6d00 00b0 bltw 56eda <msdos_creat_node+0x42e> <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56e2c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
56e2e: 486e ff70 pea %fp@(-144) <== NOT EXECUTED
*MSDOS_DIR_FIRST_CLUSTER_HI(short_node) =
*MSDOS_DIR_FIRST_CLUSTER_HI(link_node);
/*
* set "archive bit" due to changes
*/
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
56e32: 7220 moveq #32,%d1 <== NOT EXECUTED
56e34: 102e ffab moveb %fp@(-85),%d0 <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56e38: 2f05 movel %d5,%sp@- <== NOT EXECUTED
*MSDOS_DIR_CRT_DATE(short_node) =*MSDOS_DIR_CRT_DATE(link_node);
/*
* copy/set "file size", "first cluster"
*/
*MSDOS_DIR_FILE_SIZE(short_node) =*MSDOS_DIR_FILE_SIZE(link_node);
56e3a: 2d6e ffbc ff9c movel %fp@(-68),%fp@(-100) <== NOT EXECUTED
*MSDOS_DIR_FIRST_CLUSTER_HI(short_node) =
*MSDOS_DIR_FIRST_CLUSTER_HI(link_node);
/*
* set "archive bit" due to changes
*/
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
56e40: 8081 orl %d1,%d0 <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56e42: 2f03 movel %d3,%sp@- <== NOT EXECUTED
}
/*
* copy various attributes
*/
*MSDOS_DIR_ATTR(short_node) =*MSDOS_DIR_ATTR(link_node);
*MSDOS_DIR_CRT_TIME_TENTH(short_node)=*MSDOS_DIR_CRT_TIME_TENTH(link_node);
56e44: 1d6e ffad ff8d moveb %fp@(-83),%fp@(-115) <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56e4a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
56e4c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
/*
* copy various attributes
*/
*MSDOS_DIR_ATTR(short_node) =*MSDOS_DIR_ATTR(link_node);
*MSDOS_DIR_CRT_TIME_TENTH(short_node)=*MSDOS_DIR_CRT_TIME_TENTH(link_node);
*MSDOS_DIR_CRT_TIME(short_node) =*MSDOS_DIR_CRT_TIME(link_node);
56e50: 3d6e ffae ff8e movew %fp@(-82),%fp@(-114) <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56e56: 2f0a movel %a2,%sp@- <== NOT EXECUTED
* copy various attributes
*/
*MSDOS_DIR_ATTR(short_node) =*MSDOS_DIR_ATTR(link_node);
*MSDOS_DIR_CRT_TIME_TENTH(short_node)=*MSDOS_DIR_CRT_TIME_TENTH(link_node);
*MSDOS_DIR_CRT_TIME(short_node) =*MSDOS_DIR_CRT_TIME(link_node);
*MSDOS_DIR_CRT_DATE(short_node) =*MSDOS_DIR_CRT_DATE(link_node);
56e58: 3d6e ffb0 ff90 movew %fp@(-80),%fp@(-112) <== NOT EXECUTED
/*
* copy/set "file size", "first cluster"
*/
*MSDOS_DIR_FILE_SIZE(short_node) =*MSDOS_DIR_FILE_SIZE(link_node);
*MSDOS_DIR_FIRST_CLUSTER_LOW(short_node) =
56e5e: 3d6e ffba ff9a movew %fp@(-70),%fp@(-102) <== NOT EXECUTED
*MSDOS_DIR_FIRST_CLUSTER_LOW(link_node);
*MSDOS_DIR_FIRST_CLUSTER_HI(short_node) =
56e64: 3d6e ffb4 ff94 movew %fp@(-76),%fp@(-108) <== NOT EXECUTED
*MSDOS_DIR_FIRST_CLUSTER_HI(link_node);
/*
* set "archive bit" due to changes
*/
*MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
56e6a: 1d40 ff8b moveb %d0,%fp@(-117) <== NOT EXECUTED
/*
* find free space in the parent directory and write new initialized
* FAT 32 Bytes Directory Entry Structure to the disk
*/
rc = msdos_get_name_node(parent_loc, true, name, name_len,
56e6e: 4eb9 0005 85f8 jsr 585f8 <msdos_get_name_node> <== NOT EXECUTED
56e74: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
56e78: 2400 movel %d0,%d2 <== NOT EXECUTED
56e7a: 6000 ff1c braw 56d98 <msdos_creat_node+0x2ec> <== NOT EXECUTED
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
56e7e: 4281 clrl %d1 <== NOT EXECUTED
56e80: 122c 0005 moveb %a4@(5),%d1 <== NOT EXECUTED
56e84: 5580 subql #2,%d0 <== NOT EXECUTED
56e86: e3a8 lsll %d1,%d0 <== NOT EXECUTED
56e88: d0ac 0030 addl %a4@(48),%d0 <== NOT EXECUTED
56e8c: 6000 ff64 braw 56df2 <msdos_creat_node+0x346> <== NOT EXECUTED
/*
* here we can ommit FAT32 condition because for all FAT types dirs
* right under root dir should contain 0 in dotdot entry but for
* FAT12/16 parent_fat_fd->cluster_num always contains such value
*/
if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&
56e90: 4aad 0024 tstl %a5@(36) <== NOT EXECUTED
56e94: 6600 fe0c bnew 56ca2 <msdos_creat_node+0x1f6> <== NOT EXECUTED
56e98: 143c 0004 moveb #4,%d2 <== NOT EXECUTED
56e9c: 102c 000e moveb %a4@(14),%d0 <== NOT EXECUTED
56ea0: c082 andl %d2,%d0 <== NOT EXECUTED
56ea2: 4a00 tstb %d0 <== NOT EXECUTED
56ea4: 6700 fdfc beqw 56ca2 <msdos_creat_node+0x1f6> <== NOT EXECUTED
(fs_info->fat.vol.type & FAT_FAT32))
{
*MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
56ea8: 4240 clrw %d0 <== NOT EXECUTED
56eaa: 3d40 fffa movew %d0,%fp@(-6) <== NOT EXECUTED
*MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
56eae: 3d40 fff4 movew %d0,%fp@(-12) <== NOT EXECUTED
56eb2: 6000 fe16 braw 56cca <msdos_creat_node+0x21e> <== NOT EXECUTED
memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);
if (name_len > MSDOS_NAME_MAX_LFN_WITH_DOT) {
rtems_set_errno_and_return_minus_one(ENAMETOOLONG);
56eb6: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
56ebc: 74ff moveq #-1,%d2 <== NOT EXECUTED
56ebe: 725b moveq #91,%d1 <== NOT EXECUTED
56ec0: 2040 moveal %d0,%a0 <== NOT EXECUTED
56ec2: 2081 movel %d1,%a0@ <== NOT EXECUTED
56ec4: 6000 fe94 braw 56d5a <msdos_creat_node+0x2ae> <== NOT EXECUTED
name_type = msdos_long_to_short (name, name_len,
MSDOS_DIR_NAME(short_node),
MSDOS_NAME_MAX);
if (name_type == MSDOS_NAME_INVALID) {
rtems_set_errno_and_return_minus_one(EINVAL);
56ec8: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
56ece: 74ff moveq #-1,%d2 <== NOT EXECUTED
56ed0: 2040 moveal %d0,%a0 <== NOT EXECUTED
56ed2: 7016 moveq #22,%d0 <== NOT EXECUTED
56ed4: 2080 movel %d0,%a0@ <== NOT EXECUTED
56ed6: 6000 fe82 braw 56d5a <msdos_creat_node+0x2ae> <== NOT EXECUTED
*MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE;
/* set up last write date and time */
time_ret = time(NULL);
if ( time_ret == -1 )
return -1;
56eda: 74ff moveq #-1,%d2 <== NOT EXECUTED
56edc: 6000 fe7c braw 56d5a <msdos_creat_node+0x2ae> <== NOT EXECUTED
0005991e <msdos_date_dos2unix>:
* called from the stat(), and fstat() system calls and so probably need
* not be too efficient.
*/
unsigned int
msdos_date_dos2unix(unsigned int dd, unsigned int dt)
{
5991e: 4e56 fff0 linkw %fp,#-16
59922: 48d7 003c moveml %d2-%d5,%sp@
59926: 242e 000c movel %fp@(12),%d2
uint32_t y, year;
uint32_t days;
uint16_t *months;
seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
+ ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
5992a: 2202 movel %d2,%d1
+ ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
5992c: 2002 movel %d2,%d0
5992e: 760b moveq #11,%d3
59930: 2a3c 0000 0708 movel #1800,%d5
uint32_t y, year;
uint32_t days;
uint16_t *months;
seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
+ ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
59936: 0281 0000 07e0 andil #2016,%d1
+ ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
5993c: 0280 0000 f800 andil #63488,%d0
* called from the stat(), and fstat() system calls and so probably need
* not be too efficient.
*/
unsigned int
msdos_date_dos2unix(unsigned int dd, unsigned int dt)
{
59942: 282e 0008 movel %fp@(8),%d4
uint32_t y, year;
uint32_t days;
uint16_t *months;
seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
+ ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
59946: ea89 lsrl #5,%d1
+ ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
59948: e6a8 lsrl %d3,%d0
uint32_t y, year;
uint32_t days;
uint16_t *months;
seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
+ ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
5994a: 2601 movel %d1,%d3
+ ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
5994c: 4c05 0800 mulsl %d5,%d0
uint32_t y, year;
uint32_t days;
uint16_t *months;
seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
+ ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
59950: d683 addl %d3,%d3
59952: eb89 lsll #5,%d1
uint32_t m, month;
uint32_t y, year;
uint32_t days;
uint16_t *months;
seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
59954: 3a3c 001f movew #31,%d5
+ ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
59958: 9283 subl %d3,%d1
+ ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
5995a: d081 addl %d1,%d0
/*
* If the year, month, and day from the last conversion are the
* same then use the saved value.
*/
if (lastdosdate != dd) {
5995c: 4281 clrl %d1
uint32_t m, month;
uint32_t y, year;
uint32_t days;
uint16_t *months;
seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
5995e: c485 andl %d5,%d2
+ ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
/*
* If the year, month, and day from the last conversion are the
* same then use the saved value.
*/
if (lastdosdate != dd) {
59960: 3239 0006 bcac movew 6bcac <lastdosdate>,%d1
uint32_t days;
uint16_t *months;
seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
+ ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
+ ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
59966: d082 addl %d2,%d0
uint32_t m, month;
uint32_t y, year;
uint32_t days;
uint16_t *months;
seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
59968: d080 addl %d0,%d0
+ ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
/*
* If the year, month, and day from the last conversion are the
* same then use the saved value.
*/
if (lastdosdate != dd) {
5996a: b881 cmpl %d1,%d4
5996c: 6700 00a2 beqw 59a10 <msdos_date_dos2unix+0xf2>
lastdosdate = dd;
days = 0;
year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;
59970: 2604 movel %d4,%d3
59972: 7209 moveq #9,%d1
for (y = 0; y < year; y++)
59974: 91c8 subal %a0,%a0
* same then use the saved value.
*/
if (lastdosdate != dd) {
lastdosdate = dd;
days = 0;
year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;
59976: 0283 0000 fe00 andil #65024,%d3
/*
* If the year, month, and day from the last conversion are the
* same then use the saved value.
*/
if (lastdosdate != dd) {
lastdosdate = dd;
5997c: 33c4 0006 bcac movew %d4,6bcac <lastdosdate>
days = 0;
year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;
59982: e2ab lsrl %d1,%d3
for (y = 0; y < year; y++)
59984: 6700 0082 beqw 59a08 <msdos_date_dos2unix+0xea>
59988: 243c 0000 016e movel #366,%d2
5998e: 4281 clrl %d1
days += y & 0x03 ? 365 : 366;
59990: d1c2 addal %d2,%a0
*/
if (lastdosdate != dd) {
lastdosdate = dd;
days = 0;
year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;
for (y = 0; y < year; y++)
59992: 5281 addql #1,%d1
days += y & 0x03 ? 365 : 366;
59994: 7403 moveq #3,%d2
*/
if (lastdosdate != dd) {
lastdosdate = dd;
days = 0;
year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;
for (y = 0; y < year; y++)
59996: b681 cmpl %d1,%d3
59998: 671c beqs 599b6 <msdos_date_dos2unix+0x98> <== NEVER TAKEN
days += y & 0x03 ? 365 : 366;
5999a: 2a3c 0000 016d movel #365,%d5
599a0: c481 andl %d1,%d2
*/
if (lastdosdate != dd) {
lastdosdate = dd;
days = 0;
year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;
for (y = 0; y < year; y++)
599a2: 5281 addql #1,%d1
days += y & 0x03 ? 365 : 366;
599a4: 4a82 tstl %d2
599a6: 57c2 seq %d2
599a8: 49c2 extbl %d2
599aa: 9a82 subl %d2,%d5
599ac: 2405 movel %d5,%d2
599ae: d1c2 addal %d2,%a0
599b0: 7403 moveq #3,%d2
*/
if (lastdosdate != dd) {
lastdosdate = dd;
days = 0;
year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;
for (y = 0; y < year; y++)
599b2: b681 cmpl %d1,%d3
599b4: 66e4 bnes 5999a <msdos_date_dos2unix+0x7c>
days += y & 0x03 ? 365 : 366;
months = year & 0x03 ? regyear : leapyear;
599b6: c282 andl %d2,%d1
599b8: 674e beqs 59a08 <msdos_date_dos2unix+0xea> <== ALWAYS TAKEN
599ba: 43f9 0006 ad8c lea 6ad8c <regyear>,%a1 <== NOT EXECUTED
/*
* Prevent going from 0 to 0xffffffff in the following
* loop.
*/
month = (dd & MSDOS_DD_MONTH_MASK) >> MSDOS_DD_MONTH_SHIFT;
599c0: 2604 movel %d4,%d3
599c2: 0283 0000 01e0 andil #480,%d3
599c8: ea8b lsrl #5,%d3
if (month == 0) {
599ca: 6712 beqs 599de <msdos_date_dos2unix+0xc0> <== NEVER TAKEN
month = 1;
}
for (m = 0; m < month - 1; m++)
599cc: 5383 subql #1,%d3
599ce: 670e beqs 599de <msdos_date_dos2unix+0xc0> <== ALWAYS TAKEN
599d0: 4281 clrl %d1 <== NOT EXECUTED
days += months[m];
599d2: 4282 clrl %d2 <== NOT EXECUTED
*/
month = (dd & MSDOS_DD_MONTH_MASK) >> MSDOS_DD_MONTH_SHIFT;
if (month == 0) {
month = 1;
}
for (m = 0; m < month - 1; m++)
599d4: 5281 addql #1,%d1 <== NOT EXECUTED
days += months[m];
599d6: 3419 movew %a1@+,%d2 <== NOT EXECUTED
599d8: d1c2 addal %d2,%a0 <== NOT EXECUTED
*/
month = (dd & MSDOS_DD_MONTH_MASK) >> MSDOS_DD_MONTH_SHIFT;
if (month == 0) {
month = 1;
}
for (m = 0; m < month - 1; m++)
599da: b681 cmpl %d1,%d3 <== NOT EXECUTED
599dc: 66f4 bnes 599d2 <msdos_date_dos2unix+0xb4> <== NOT EXECUTED
days += months[m];
days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;
599de: 761f moveq #31,%d3
lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;
599e0: 2a3c 0001 5180 movel #86400,%d5
if (month == 0) {
month = 1;
}
for (m = 0; m < month - 1; m++)
days += months[m];
days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;
599e6: c883 andl %d3,%d4
599e8: 41f0 48ff lea %a0@(ffffffff,%d4:l),%a0
599ec: 2208 movel %a0,%d1
lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;
599ee: 4c05 1800 mulsl %d5,%d1
}
return seconds + lastseconds;
}
599f2: 4cd7 003c moveml %sp@,%d2-%d5
599f6: 4e5e unlk %fp
month = 1;
}
for (m = 0; m < month - 1; m++)
days += months[m];
days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;
lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;
599f8: 0681 12ce a600 addil #315532800,%d1
}
return seconds + lastseconds;
}
599fe: d081 addl %d1,%d0
month = 1;
}
for (m = 0; m < month - 1; m++)
days += months[m];
days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;
lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;
59a00: 23c1 0006 bcae movel %d1,6bcae <lastseconds>
}
return seconds + lastseconds;
}
59a06: 4e75 rts
lastdosdate = dd;
days = 0;
year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;
for (y = 0; y < year; y++)
days += y & 0x03 ? 365 : 366;
months = year & 0x03 ? regyear : leapyear;
59a08: 43f9 0006 ada4 lea 6ada4 <leapyear>,%a1
59a0e: 60b0 bras 599c0 <msdos_date_dos2unix+0xa2>
59a10: 2239 0006 bcae movel 6bcae <lastseconds>,%d1
days += months[m];
days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;
lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;
}
return seconds + lastseconds;
}
59a16: d081 addl %d1,%d0
59a18: 4cd7 003c moveml %sp@,%d2-%d5
59a1c: 4e5e unlk %fp <== NOT EXECUTED
000597bc <msdos_date_unix2dos>:
* file timestamps. The passed in unix time is assumed to be in GMT.
*/
void
msdos_date_unix2dos(unsigned int t, uint16_t *ddp,
uint16_t *dtp)
{
597bc: 4e56 fff0 linkw %fp,#-16
597c0: 202e 0008 movel %fp@(8),%d0
597c4: 48d7 003c moveml %d2-%d5,%sp@
/*
* If the time from the last conversion is the same as now, then
* skip the computations and use the saved result.
*/
if (lasttime != t) {
597c8: b0b9 0006 bca0 cmpl 6bca0 <lasttime>,%d0
597ce: 6700 0114 beqw 598e4 <msdos_date_unix2dos+0x128>
lasttime = t;
lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
+ (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)
597d2: 2800 movel %d0,%d4
597d4: 723c moveq #60,%d1
+ (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);
597d6: 2600 movel %d0,%d3
597d8: 243c 0000 0e10 movel #3600,%d2
* skip the computations and use the saved result.
*/
if (lasttime != t) {
lasttime = t;
lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
+ (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)
597de: 4c41 4005 remul %d1,%d5,%d4
597e2: 4c41 4004 remul %d1,%d4,%d4
+ (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);
597e6: 4c42 3003 remul %d2,%d3,%d3
/*
* If the time from the last conversion is the same as now, then
* skip the computations and use the saved result.
*/
if (lasttime != t) {
lasttime = t;
597ea: 23c0 0006 bca0 movel %d0,6bca0 <lasttime>
lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
+ (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)
597f0: 723c moveq #60,%d1
* If the time from the last conversion is the same as now, then
* skip the computations and use the saved result.
*/
if (lasttime != t) {
lasttime = t;
lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
597f2: e28d lsrl #1,%d5
+ (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)
597f4: 4c41 4002 remul %d1,%d2,%d4
+ (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);
597f8: 7818 moveq #24,%d4
597fa: 4c44 3001 remul %d4,%d1,%d3
* If the time from the last conversion is the same as now, then
* skip the computations and use the saved result.
*/
if (lasttime != t) {
lasttime = t;
lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
597fe: eb8a lsll #5,%d2
59800: 760b moveq #11,%d3
/*
* If the number of days since 1970 is the same as the last
* time we did the computation then skip all this leap year
* and month stuff.
*/
days = t / (SECONDSPERDAY);
59802: 283c 0001 5180 movel #86400,%d4
* If the time from the last conversion is the same as now, then
* skip the computations and use the saved result.
*/
if (lasttime != t) {
lasttime = t;
lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
59808: e7a9 lsll %d3,%d1
/*
* If the number of days since 1970 is the same as the last
* time we did the computation then skip all this leap year
* and month stuff.
*/
days = t / (SECONDSPERDAY);
5980a: 4c44 0000 remul %d4,%d0,%d0
* If the time from the last conversion is the same as now, then
* skip the computations and use the saved result.
*/
if (lasttime != t) {
lasttime = t;
lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
5980e: d282 addl %d2,%d1
59810: d285 addl %d5,%d1
/*
* If the number of days since 1970 is the same as the last
* time we did the computation then skip all this leap year
* and month stuff.
*/
days = t / (SECONDSPERDAY);
59812: 2040 moveal %d0,%a0
* If the time from the last conversion is the same as now, then
* skip the computations and use the saved result.
*/
if (lasttime != t) {
lasttime = t;
lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
59814: 3601 movew %d1,%d3
59816: 33c1 0006 bca4 movew %d1,6bca4 <lastdtime>
* If the number of days since 1970 is the same as the last
* time we did the computation then skip all this leap year
* and month stuff.
*/
days = t / (SECONDSPERDAY);
if (days != lastday) {
5981c: b0b9 0006 bca6 cmpl 6bca6 <lastday>,%d0
59822: 6700 00e0 beqw 59904 <msdos_date_unix2dos+0x148>
lastday = days;
for (year = 1970;; year++) {
59826: 223c 0000 07b2 movel #1970,%d1
inc = year & 0x03 ? 365 : 366;
5982c: 7403 moveq #3,%d2
5982e: 283c 0000 016d movel #365,%d4
59834: c481 andl %d1,%d2
* time we did the computation then skip all this leap year
* and month stuff.
*/
days = t / (SECONDSPERDAY);
if (days != lastday) {
lastday = days;
59836: 23c0 0006 bca6 movel %d0,6bca6 <lastday>
for (year = 1970;; year++) {
inc = year & 0x03 ? 365 : 366;
5983c: 4a82 tstl %d2
5983e: 57c0 seq %d0
59840: 49c0 extbl %d0
59842: 9880 subl %d0,%d4
if (days < inc)
59844: b888 cmpl %a0,%d4
59846: 6218 bhis 59860 <msdos_date_unix2dos+0xa4> <== NEVER TAKEN
* and month stuff.
*/
days = t / (SECONDSPERDAY);
if (days != lastday) {
lastday = days;
for (year = 1970;; year++) {
59848: 5281 addql #1,%d1
inc = year & 0x03 ? 365 : 366;
5984a: 7403 moveq #3,%d2
if (days < inc)
break;
days -= inc;
5984c: 91c4 subal %d4,%a0
*/
days = t / (SECONDSPERDAY);
if (days != lastday) {
lastday = days;
for (year = 1970;; year++) {
inc = year & 0x03 ? 365 : 366;
5984e: 283c 0000 016d movel #365,%d4
59854: c481 andl %d1,%d2
59856: 57c0 seq %d0
59858: 49c0 extbl %d0
5985a: 9880 subl %d0,%d4
if (days < inc)
5985c: b888 cmpl %a0,%d4
5985e: 63e8 blss 59848 <msdos_date_unix2dos+0x8c>
break;
days -= inc;
}
months = year & 0x03 ? regyear : leapyear;
59860: 4a82 tstl %d2
59862: 6754 beqs 598b8 <msdos_date_unix2dos+0xfc> <== ALWAYS TAKEN
59864: 43f9 0006 ad8c lea 6ad8c <regyear>,%a1 <== NOT EXECUTED
for (month = 0; month < 12; month++) {
5986a: 4280 clrl %d0 <== NOT EXECUTED
if (days < months[month])
5986c: 4282 clrl %d2
5986e: 3419 movew %a1@+,%d2
59870: b1c2 cmpal %d2,%a0
59872: 6568 bcss 598dc <msdos_date_unix2dos+0x120> <== ALWAYS TAKEN
break;
days -= months[month];
59874: 91c2 subal %d2,%a0 <== NOT EXECUTED
if (days < inc)
break;
days -= inc;
}
months = year & 0x03 ? regyear : leapyear;
for (month = 0; month < 12; month++) {
59876: 5280 addql #1,%d0 <== NOT EXECUTED
59878: 740c moveq #12,%d2 <== NOT EXECUTED
5987a: b480 cmpl %d0,%d2 <== NOT EXECUTED
5987c: 66ee bnes 5986c <msdos_date_unix2dos+0xb0> <== NOT EXECUTED
5987e: 327c 01a0 moveaw #416,%a1 <== NOT EXECUTED
if (days < months[month])
break;
days -= months[month];
}
lastddate = ((days + 1) << MSDOS_DD_DAY_SHIFT)
59882: 41f0 9801 lea %a0@(00000001,%a1:l),%a0
59886: 3008 movew %a0,%d0
* Remember dos's idea of time is relative to 1980.
* unix's is relative to 1970. If somehow we get a
* time before 1980 then don't give totally crazy
* results.
*/
if (year > 1980)
59888: 0c81 0000 07bc cmpil #1980,%d1
5988e: 6332 blss 598c2 <msdos_date_unix2dos+0x106> <== NEVER TAKEN
lastddate += (year - 1980) <<
59890: 7809 moveq #9,%d4
59892: 0681 ffff f844 addil #-1980,%d1
59898: e9a9 lsll %d4,%d1
5989a: d288 addl %a0,%d1
MSDOS_DD_YEAR_SHIFT;
}
}
*dtp = lastdtime;
5989c: 206e 0010 moveal %fp@(16),%a0
598a0: 3083 movew %d3,%a0@
*ddp = lastddate;
598a2: 206e 000c moveal %fp@(12),%a0
* unix's is relative to 1970. If somehow we get a
* time before 1980 then don't give totally crazy
* results.
*/
if (year > 1980)
lastddate += (year - 1980) <<
598a6: 3001 movew %d1,%d0
MSDOS_DD_YEAR_SHIFT;
}
}
*dtp = lastdtime;
*ddp = lastddate;
}
598a8: 4cd7 003c moveml %sp@,%d2-%d5
* unix's is relative to 1970. If somehow we get a
* time before 1980 then don't give totally crazy
* results.
*/
if (year > 1980)
lastddate += (year - 1980) <<
598ac: 33c1 0006 bcaa movew %d1,6bcaa <lastddate>
MSDOS_DD_YEAR_SHIFT;
}
}
*dtp = lastdtime;
*ddp = lastddate;
598b2: 3080 movew %d0,%a0@
}
598b4: 4e5e unlk %fp
598b6: 4e75 rts
inc = year & 0x03 ? 365 : 366;
if (days < inc)
break;
days -= inc;
}
months = year & 0x03 ? regyear : leapyear;
598b8: 43f9 0006 ada4 lea 6ada4 <leapyear>,%a1
for (month = 0; month < 12; month++) {
598be: 4280 clrl %d0
598c0: 60aa bras 5986c <msdos_date_unix2dos+0xb0>
if (days < months[month])
break;
days -= months[month];
}
lastddate = ((days + 1) << MSDOS_DD_DAY_SHIFT)
598c2: 33c8 0006 bcaa movew %a0,6bcaa <lastddate> <== NOT EXECUTED
if (year > 1980)
lastddate += (year - 1980) <<
MSDOS_DD_YEAR_SHIFT;
}
}
*dtp = lastdtime;
598c8: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
598cc: 3083 movew %d3,%a0@ <== NOT EXECUTED
*ddp = lastddate;
598ce: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
}
598d2: 4cd7 003c moveml %sp@,%d2-%d5 <== NOT EXECUTED
lastddate += (year - 1980) <<
MSDOS_DD_YEAR_SHIFT;
}
}
*dtp = lastdtime;
*ddp = lastddate;
598d6: 3080 movew %d0,%a0@ <== NOT EXECUTED
}
598d8: 4e5e unlk %fp <== NOT EXECUTED
598da: 4e75 rts <== NOT EXECUTED
598dc: 5280 addql #1,%d0
598de: eb88 lsll #5,%d0
598e0: 2240 moveal %d0,%a1
598e2: 609e bras 59882 <msdos_date_unix2dos+0xc6>
if (year > 1980)
lastddate += (year - 1980) <<
MSDOS_DD_YEAR_SHIFT;
}
}
*dtp = lastdtime;
598e4: 206e 0010 moveal %fp@(16),%a0
598e8: 3639 0006 bca4 movew 6bca4 <lastdtime>,%d3
598ee: 3039 0006 bcaa movew 6bcaa <lastddate>,%d0
598f4: 3083 movew %d3,%a0@
*ddp = lastddate;
598f6: 206e 000c moveal %fp@(12),%a0
}
598fa: 4cd7 003c moveml %sp@,%d2-%d5
lastddate += (year - 1980) <<
MSDOS_DD_YEAR_SHIFT;
}
}
*dtp = lastdtime;
*ddp = lastddate;
598fe: 3080 movew %d0,%a0@
}
59900: 4e5e unlk %fp
59902: 4e75 rts
if (year > 1980)
lastddate += (year - 1980) <<
MSDOS_DD_YEAR_SHIFT;
}
}
*dtp = lastdtime;
59904: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
59908: 3083 movew %d3,%a0@ <== NOT EXECUTED
*ddp = lastddate;
5990a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5990e: 3039 0006 bcaa movew 6bcaa <lastddate>,%d0 <== NOT EXECUTED
}
59914: 4cd7 003c moveml %sp@,%d2-%d5 <== NOT EXECUTED
59918: 4e5e unlk %fp <== NOT EXECUTED
lastddate += (year - 1980) <<
MSDOS_DD_YEAR_SHIFT;
}
}
*dtp = lastdtime;
*ddp = lastddate;
5991a: 3080 movew %d0,%a0@ <== NOT EXECUTED
}
0005771e <msdos_dir_is_empty>:
msdos_dir_is_empty(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd,
bool *ret_val
)
{
5771e: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
57722: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
msdos_dir_is_empty(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd,
bool *ret_val
)
{
57726: 48d7 3cbc moveml %d2-%d5/%d7/%a2-%a5,%sp@ <== NOT EXECUTED
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
5772a: 2868 0008 moveal %a0@(8),%a4 <== NOT EXECUTED
5772e: 4283 clrl %d3 <== NOT EXECUTED
uint32_t j = 0, i = 0;
57730: 4285 clrl %d5 <== NOT EXECUTED
57732: 47f9 0005 1bd0 lea 51bd0 <fat_file_read>,%a3 <== NOT EXECUTED
*/
if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
MSDOS_THIS_DIR_ENTRY_EMPTY) ||
((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==
MSDOS_ATTR_LFN) ||
(strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,
57738: 4bf9 0005 c508 lea 5c508 <strncmp>,%a5 <== NOT EXECUTED
5773e: 282c 0094 movel %a4@(148),%d4 <== NOT EXECUTED
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t j = 0, i = 0;
/* dir is not empty */
*ret_val = false;
57742: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
57746: 3614 movew %a4@,%d3 <== NOT EXECUTED
57748: 4210 clrb %a0@ <== NOT EXECUTED
while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * fs_info->fat.vol.bps,
5774a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5774c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5774e: 4c05 3800 mulsl %d5,%d3 <== NOT EXECUTED
57752: 2f03 movel %d3,%sp@- <== NOT EXECUTED
57754: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
57758: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5775a: 4e93 jsr %a3@ <== NOT EXECUTED
5775c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
57760: 4a80 tstl %d0 <== NOT EXECUTED
57762: 676e beqs 577d2 <msdos_dir_is_empty+0xb4> <== NOT EXECUTED
fs_info->fat.vol.bps,
fs_info->cl_buf)) != FAT_EOF)
{
if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
57764: 721f moveq #31,%d1 <== NOT EXECUTED
57766: b280 cmpl %d0,%d1 <== NOT EXECUTED
57768: 6c00 0098 bgew 57802 <msdos_dir_is_empty+0xe4> <== NOT EXECUTED
return -1;
assert(ret == fs_info->fat.vol.bps);
5776c: 4283 clrl %d3 <== NOT EXECUTED
5776e: 3614 movew %a4@,%d3 <== NOT EXECUTED
57770: b083 cmpl %d3,%d0 <== NOT EXECUTED
57772: 6600 009a bnew 5780e <msdos_dir_is_empty+0xf0> <== NOT EXECUTED
/* have to look at the DIR_NAME as "raw" 8-bit data */
for (i = 0;
57776: 4a83 tstl %d3 <== NOT EXECUTED
57778: 677e beqs 577f8 <msdos_dir_is_empty+0xda> <== NOT EXECUTED
5777a: 282c 0094 movel %a4@(148),%d4 <== NOT EXECUTED
5777e: 4282 clrl %d2 <== NOT EXECUTED
57780: 2444 moveal %d4,%a2 <== NOT EXECUTED
* then consider it as empty.
*
* Just ignore long file name entries. They must have a short entry to
* be valid.
*/
if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
57782: 4280 clrl %d0 <== NOT EXECUTED
57784: 1e12 moveb %a2@,%d7 <== NOT EXECUTED
57786: 1007 moveb %d7,%d0 <== NOT EXECUTED
57788: 0c80 0000 00e5 cmpil #229,%d0 <== NOT EXECUTED
5778e: 6754 beqs 577e4 <msdos_dir_is_empty+0xc6> <== NOT EXECUTED
MSDOS_THIS_DIR_ENTRY_EMPTY) ||
57790: 723f moveq #63,%d1 <== NOT EXECUTED
57792: 102a 000b moveb %a2@(11),%d0 <== NOT EXECUTED
57796: c081 andl %d1,%d0 <== NOT EXECUTED
57798: 123c 000f moveb #15,%d1 <== NOT EXECUTED
5779c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5779e: 6744 beqs 577e4 <msdos_dir_is_empty+0xc6> <== NOT EXECUTED
((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==
MSDOS_ATTR_LFN) ||
(strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,
577a0: 4878 000b pea b <LASTO+0x1> <== NOT EXECUTED
577a4: 4879 0006 a089 pea 6a089 <msdos_file_handlers+0xab> <== NOT EXECUTED
577aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
577ac: 4e95 jsr %a5@ <== NOT EXECUTED
577ae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* be valid.
*/
if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
MSDOS_THIS_DIR_ENTRY_EMPTY) ||
((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==
MSDOS_ATTR_LFN) ||
577b2: 4a80 tstl %d0 <== NOT EXECUTED
577b4: 672e beqs 577e4 <msdos_dir_is_empty+0xc6> <== NOT EXECUTED
(strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,
MSDOS_SHORT_NAME_LEN) == 0) ||
(strncmp(MSDOS_DIR_NAME((entry)),
577b6: 4878 000b pea b <LASTO+0x1> <== NOT EXECUTED
577ba: 4879 0006 a095 pea 6a095 <msdos_file_handlers+0xb7> <== NOT EXECUTED
577c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
577c2: 4e95 jsr %a5@ <== NOT EXECUTED
577c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
MSDOS_THIS_DIR_ENTRY_EMPTY) ||
((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==
MSDOS_ATTR_LFN) ||
(strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,
MSDOS_SHORT_NAME_LEN) == 0) ||
577c8: 4a80 tstl %d0 <== NOT EXECUTED
577ca: 6718 beqs 577e4 <msdos_dir_is_empty+0xc6> <== NOT EXECUTED
*/
if ((*MSDOS_DIR_NAME(entry)) ==
MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)
{
*ret_val = true;
return RC_OK;
577cc: 4280 clrl %d0 <== NOT EXECUTED
continue;
/*
* Nothing more to look at.
*/
if ((*MSDOS_DIR_NAME(entry)) ==
577ce: 4a07 tstb %d7 <== NOT EXECUTED
577d0: 6608 bnes 577da <msdos_dir_is_empty+0xbc> <== NOT EXECUTED
*/
return RC_OK;
}
j++;
}
*ret_val = true;
577d2: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
577d6: 10bc 0001 moveb #1,%a0@ <== NOT EXECUTED
return RC_OK;
}
577da: 4cee 3cbc ffdc moveml %fp@(-36),%d2-%d5/%d7/%a2-%a5 <== NOT EXECUTED
577e0: 4e5e unlk %fp <== NOT EXECUTED
577e2: 4e75 rts <== NOT EXECUTED
assert(ret == fs_info->fat.vol.bps);
/* have to look at the DIR_NAME as "raw" 8-bit data */
for (i = 0;
i < fs_info->fat.vol.bps;
i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
577e4: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
577ea: 45ea 0020 lea %a2@(32),%a2 <== NOT EXECUTED
return -1;
assert(ret == fs_info->fat.vol.bps);
/* have to look at the DIR_NAME as "raw" 8-bit data */
for (i = 0;
577ee: b682 cmpl %d2,%d3 <== NOT EXECUTED
577f0: 6290 bhis 57782 <msdos_dir_is_empty+0x64> <== NOT EXECUTED
/*
* Short file name entries mean not empty.
*/
return RC_OK;
}
j++;
577f2: 5285 addql #1,%d5 <== NOT EXECUTED
577f4: 6000 ff54 braw 5774a <msdos_dir_is_empty+0x2c> <== NOT EXECUTED
577f8: 282c 0094 movel %a4@(148),%d4 <== NOT EXECUTED
577fc: 5285 addql #1,%d5 <== NOT EXECUTED
577fe: 6000 ff4a braw 5774a <msdos_dir_is_empty+0x2c> <== NOT EXECUTED
while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * fs_info->fat.vol.bps,
fs_info->fat.vol.bps,
fs_info->cl_buf)) != FAT_EOF)
{
if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
return -1;
57802: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
j++;
}
*ret_val = true;
return RC_OK;
}
57804: 4cee 3cbc ffdc moveml %fp@(-36),%d2-%d5/%d7/%a2-%a5 <== NOT EXECUTED
5780a: 4e5e unlk %fp <== NOT EXECUTED
5780c: 4e75 rts <== NOT EXECUTED
fs_info->cl_buf)) != FAT_EOF)
{
if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
return -1;
assert(ret == fs_info->fat.vol.bps);
5780e: 4879 0006 a023 pea 6a023 <msdos_file_handlers+0x45> <== NOT EXECUTED
57814: 4879 0006 a0c4 pea 6a0c4 <__FUNCTION__.7640> <== NOT EXECUTED
5781a: 4878 0365 pea 365 <DBL_MANT_DIG+0x330> <== NOT EXECUTED
5781e: 4879 0006 a03f pea 6a03f <msdos_file_handlers+0x61> <== NOT EXECUTED
57824: 4eb9 0005 43cc jsr 543cc <__assert_func> <== NOT EXECUTED
00059ba8 <msdos_dir_read>:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
{
59ba8: 4e56 fe88 linkw %fp,#-376 <== NOT EXECUTED
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
59bac: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
59bb0: 2069 0024 moveal %a1@(36),%a0 <== NOT EXECUTED
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
{
59bb4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
59bb8: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
/*
* cast start and count - protect against using sizes that are not exact
* multiples of the -dirent- size. These could result in unexpected
* results
*/
start = iop->offset / sizeof(struct dirent);
59bbc: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
{
59bc0: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
/*
* cast start and count - protect against using sizes that are not exact
* multiples of the -dirent- size. These could result in unexpected
* results
*/
start = iop->offset / sizeof(struct dirent);
59bc4: 42a7 clrl %sp@- <== NOT EXECUTED
59bc6: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
59bca: 2f29 0004 movel %a1@(4),%sp@- <== NOT EXECUTED
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
{
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
59bce: 2069 0018 moveal %a1@(24),%a0 <== NOT EXECUTED
fat_file_fd_t *tmp_fat_fd = NULL;
59bd2: 42ae fed8 clrl %fp@(-296) <== NOT EXECUTED
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
{
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
59bd6: 2d48 fecc movel %a0,%fp@(-308) <== NOT EXECUTED
uint32_t start = 0;
ssize_t ret = 0;
uint32_t cmpltd = 0;
uint32_t j = 0, i = 0;
uint32_t bts2rd = 0;
uint32_t cur_cln = 0;
59bda: 42ae fedc clrl %fp@(-292) <== NOT EXECUTED
/*
* cast start and count - protect against using sizes that are not exact
* multiples of the -dirent- size. These could result in unexpected
* results
*/
start = iop->offset / sizeof(struct dirent);
59bde: 4eb9 0004 16ec jsr 416ec <__divdi3> <== NOT EXECUTED
* too, so read such set of sectors is quick operation for low-level IO
* layer.
*/
bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?
fat_fd->fat_file_size :
59be4: 206e fecc moveal %fp@(-308),%a0 <== NOT EXECUTED
/*
* cast start and count - protect against using sizes that are not exact
* multiples of the -dirent- size. These could result in unexpected
* results
*/
start = iop->offset / sizeof(struct dirent);
59be8: 2a41 moveal %d1,%a5 <== NOT EXECUTED
count = (count / sizeof(struct dirent)) * sizeof(struct dirent);
59bea: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
/*
* cast start and count - protect against using sizes that are not exact
* multiples of the -dirent- size. These could result in unexpected
* results
*/
start = iop->offset / sizeof(struct dirent);
59bf0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
count = (count / sizeof(struct dirent)) * sizeof(struct dirent);
59bf4: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
59bf8: 2002 movel %d2,%d0 <== NOT EXECUTED
59bfa: e988 lsll #4,%d0 <== NOT EXECUTED
59bfc: e18a lsll #8,%d2 <== NOT EXECUTED
59bfe: 2c00 movel %d0,%d6 <== NOT EXECUTED
59c00: dc82 addl %d2,%d6 <== NOT EXECUTED
* too, so read such set of sectors is quick operation for low-level IO
* layer.
*/
bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?
fat_fd->fat_file_size :
59c02: 7401 moveq #1,%d2 <== NOT EXECUTED
59c04: b4a8 0020 cmpl %a0@(32),%d2 <== NOT EXECUTED
59c08: 6700 03d2 beqw 59fdc <msdos_dir_read+0x434> <== NOT EXECUTED
59c0c: 4284 clrl %d4 <== NOT EXECUTED
59c0e: 382a 0006 movew %a2@(6),%d4 <== NOT EXECUTED
59c12: 2d44 fec6 movel %d4,%fp@(-314) <== NOT EXECUTED
fs_info->fat.vol.bpc;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
59c16: 42a7 clrl %sp@- <== NOT EXECUTED
59c18: 42a7 clrl %sp@- <== NOT EXECUTED
59c1a: 2f2a 0090 movel %a2@(144),%sp@- <== NOT EXECUTED
59c1e: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain> <== NOT EXECUTED
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
59c24: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59c28: 4a80 tstl %d0 <== NOT EXECUTED
59c2a: 6600 052e bnew 5a15a <msdos_dir_read+0x5b2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
while (count > 0)
59c2e: 4285 clrl %d5 <== NOT EXECUTED
59c30: 4a86 tstl %d6 <== NOT EXECUTED
59c32: 6700 00da beqw 59d0e <msdos_dir_read+0x166> <== NOT EXECUTED
59c36: 4287 clrl %d7 <== NOT EXECUTED
59c38: 2007 movel %d7,%d0 <== NOT EXECUTED
* also the checksum of the short entry.
*/
lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &
MSDOS_LAST_LONG_ENTRY_MASK);
lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));
59c3a: 43ee fef0 lea %fp@(-272),%a1 <== NOT EXECUTED
59c3e: 43e9 0010 lea %a1@(16),%a1 <== NOT EXECUTED
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
while (count > 0)
59c42: 2e06 movel %d6,%d7 <== NOT EXECUTED
59c44: 2c0d movel %a5,%d6 <== NOT EXECUTED
59c46: 78ff moveq #-1,%d4 <== NOT EXECUTED
59c48: 2a40 moveal %d0,%a5 <== NOT EXECUTED
59c4a: 4201 clrb %d1 <== NOT EXECUTED
59c4c: 42ae fed0 clrl %fp@(-304) <== NOT EXECUTED
59c50: 1d41 fecb moveb %d1,%fp@(-309) <== NOT EXECUTED
59c54: 42ae fed4 clrl %fp@(-300) <== NOT EXECUTED
* also the checksum of the short entry.
*/
lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &
MSDOS_LAST_LONG_ENTRY_MASK);
lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));
59c58: 2d49 fec2 movel %a1,%fp@(-318) <== NOT EXECUTED
* fat-file is already opened by open call, so read it
* Always read directory fat-file from the beggining because of MSDOS
* directories feature :( - we should count elements currently
* present in the directory because there may be holes :)
*/
ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),
59c5c: 2f2a 0094 movel %a2@(148),%sp@- <== NOT EXECUTED
bts2rd, fs_info->cl_buf);
if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
59c60: 741f moveq #31,%d2 <== NOT EXECUTED
* fat-file is already opened by open call, so read it
* Always read directory fat-file from the beggining because of MSDOS
* directories feature :( - we should count elements currently
* present in the directory because there may be holes :)
*/
ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),
59c62: 2f2e fec6 movel %fp@(-314),%sp@- <== NOT EXECUTED
59c66: 2f2e fed0 movel %fp@(-304),%sp@- <== NOT EXECUTED
59c6a: 2f2e fecc movel %fp@(-308),%sp@- <== NOT EXECUTED
59c6e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59c70: 4eb9 0005 1bd0 jsr 51bd0 <fat_file_read> <== NOT EXECUTED
bts2rd, fs_info->cl_buf);
if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
59c76: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
* fat-file is already opened by open call, so read it
* Always read directory fat-file from the beggining because of MSDOS
* directories feature :( - we should count elements currently
* present in the directory because there may be holes :)
*/
ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),
59c7a: 2600 movel %d0,%d3 <== NOT EXECUTED
bts2rd, fs_info->cl_buf);
if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
59c7c: b480 cmpl %d0,%d2 <== NOT EXECUTED
59c7e: 6c00 0478 bgew 5a0f8 <msdos_dir_read+0x550> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
}
for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
{
char* entry = (char*) fs_info->cl_buf + i;
59c82: 266a 0094 moveal %a2@(148),%a3 <== NOT EXECUTED
/*
* Is this directory from here on empty ?
*/
if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
59c86: 1013 moveb %a3@,%d0 <== NOT EXECUTED
59c88: 673c beqs 59cc6 <msdos_dir_read+0x11e> <== NOT EXECUTED
59c8a: 4202 clrb %d2 <== NOT EXECUTED
rtems_semaphore_release(fs_info->vol_sema);
return cmpltd;
}
/* Is the directory entry empty */
if ((*MSDOS_DIR_ENTRY_TYPE(entry)) == MSDOS_THIS_DIR_ENTRY_EMPTY)
59c8c: 4281 clrl %d1 <== NOT EXECUTED
59c8e: 1200 moveb %d0,%d1 <== NOT EXECUTED
59c90: 0c81 0000 00e5 cmpil #229,%d1 <== NOT EXECUTED
59c96: 671a beqs 59cb2 <msdos_dir_read+0x10a> <== NOT EXECUTED
continue;
/* Is the directory entry empty a volume label */
if (((*MSDOS_DIR_ATTR(entry)) & MSDOS_ATTR_VOLUME_ID) &&
59c98: 7a08 moveq #8,%d5 <== NOT EXECUTED
59c9a: 122b 000b moveb %a3@(11),%d1 <== NOT EXECUTED
59c9e: ca81 andl %d1,%d5 <== NOT EXECUTED
59ca0: 4a05 tstb %d5 <== NOT EXECUTED
59ca2: 6700 0130 beqw 59dd4 <msdos_dir_read+0x22c> <== NOT EXECUTED
59ca6: 7a3f moveq #63,%d5 <== NOT EXECUTED
59ca8: c285 andl %d5,%d1 <== NOT EXECUTED
59caa: 1a3c 000f moveb #15,%d5 <== NOT EXECUTED
59cae: ba81 cmpl %d1,%d5 <== NOT EXECUTED
59cb0: 672e beqs 59ce0 <msdos_dir_read+0x138> <== NOT EXECUTED
{
rtems_semaphore_release(fs_info->vol_sema);
rtems_set_errno_and_return_minus_one(EIO);
}
for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
59cb2: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
59cb8: b682 cmpl %d2,%d3 <== NOT EXECUTED
59cba: 6342 blss 59cfe <msdos_dir_read+0x156> <== NOT EXECUTED
{
char* entry = (char*) fs_info->cl_buf + i;
59cbc: 266a 0094 moveal %a2@(148),%a3 <== NOT EXECUTED
59cc0: d7c2 addal %d2,%a3 <== NOT EXECUTED
/*
* Is this directory from here on empty ?
*/
if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
59cc2: 1013 moveb %a3@,%d0 <== NOT EXECUTED
59cc4: 66c6 bnes 59c8c <msdos_dir_read+0xe4> <== NOT EXECUTED
MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)
{
rtems_semaphore_release(fs_info->vol_sema);
59cc6: 2f2a 0090 movel %a2@(144),%sp@- <== NOT EXECUTED
return cmpltd;
59cca: 2a0d movel %a5,%d5 <== NOT EXECUTED
* Is this directory from here on empty ?
*/
if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)
{
rtems_semaphore_release(fs_info->vol_sema);
59ccc: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release> <== NOT EXECUTED
return cmpltd;
59cd2: 588f addql #4,%sp <== NOT EXECUTED
j++;
}
rtems_semaphore_release(fs_info->vol_sema);
return cmpltd;
}
59cd4: 2005 movel %d5,%d0 <== NOT EXECUTED
59cd6: 4cee 3cfc fe88 moveml %fp@(-376),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59cdc: 4e5e unlk %fp <== NOT EXECUTED
59cde: 4e75 rts <== NOT EXECUTED
int q;
/*
* Is this is the first entry of a LFN ?
*/
if (lfn_start == FAT_FILE_SHORT_NAME)
59ce0: 72ff moveq #-1,%d1 <== NOT EXECUTED
59ce2: b284 cmpl %d4,%d1 <== NOT EXECUTED
59ce4: 6740 beqs 59d26 <msdos_dir_read+0x17e> <== NOT EXECUTED
* If the entry number or the check sum do not match
* forget this series of long directory entries. These could
* be orphaned entries depending on the history of the
* disk.
*/
if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &
59ce6: 7a3f moveq #63,%d5 <== NOT EXECUTED
59ce8: 1013 moveb %a3@,%d0 <== NOT EXECUTED
59cea: c085 andl %d5,%d0 <== NOT EXECUTED
59cec: b0ae fed4 cmpl %fp@(-300),%d0 <== NOT EXECUTED
59cf0: 6774 beqs 59d66 <msdos_dir_read+0x1be> <== NOT EXECUTED
MSDOS_LAST_LONG_ENTRY_MASK)) ||
(lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry)))
{
lfn_start = FAT_FILE_SHORT_NAME;
59cf2: 78ff moveq #-1,%d4 <== NOT EXECUTED
{
rtems_semaphore_release(fs_info->vol_sema);
rtems_set_errno_and_return_minus_one(EIO);
}
for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
59cf4: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
59cfa: b682 cmpl %d2,%d3 <== NOT EXECUTED
59cfc: 62be bhis 59cbc <msdos_dir_read+0x114> <== NOT EXECUTED
59cfe: 222e fec6 movel %fp@(-314),%d1 <== NOT EXECUTED
59d02: d3ae fed0 addl %d1,%fp@(-304) <== NOT EXECUTED
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
while (count > 0)
59d06: 4a87 tstl %d7 <== NOT EXECUTED
59d08: 6600 ff52 bnew 59c5c <msdos_dir_read+0xb4> <== NOT EXECUTED
59d0c: 2a0d movel %a5,%d5 <== NOT EXECUTED
break;
}
j++;
}
rtems_semaphore_release(fs_info->vol_sema);
59d0e: 2f2a 0090 movel %a2@(144),%sp@- <== NOT EXECUTED
59d12: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release> <== NOT EXECUTED
59d18: 588f addql #4,%sp <== NOT EXECUTED
return cmpltd;
}
59d1a: 2005 movel %d5,%d0 <== NOT EXECUTED
59d1c: 4cee 3cfc fe88 moveml %fp@(-376),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59d22: 4e5e unlk %fp <== NOT EXECUTED
59d24: 4e75 rts <== NOT EXECUTED
if (lfn_start == FAT_FILE_SHORT_NAME)
{
/*
* The first entry must have the last long entry flag set.
*/
if ((*MSDOS_DIR_ENTRY_TYPE(entry) &
59d26: 7240 moveq #64,%d1 <== NOT EXECUTED
59d28: c280 andl %d0,%d1 <== NOT EXECUTED
59d2a: 4a01 tstb %d1 <== NOT EXECUTED
59d2c: 6784 beqs 59cb2 <msdos_dir_read+0x10a> <== NOT EXECUTED
/*
* Get the number of entries so we can count down and
* also the checksum of the short entry.
*/
lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &
59d2e: 723f moveq #63,%d1 <== NOT EXECUTED
MSDOS_LAST_LONG_ENTRY_MASK);
lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
59d30: 1a2b 000d moveb %a3@(13),%d5 <== NOT EXECUTED
memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));
59d34: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
59d38: 282e fed0 movel %fp@(-304),%d4 <== NOT EXECUTED
59d3c: d882 addl %d2,%d4 <== NOT EXECUTED
continue;
/*
* Remember the start location of the long file name.
*/
lfn_start =
59d3e: ea8c lsrl #5,%d4 <== NOT EXECUTED
* also the checksum of the short entry.
*/
lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &
MSDOS_LAST_LONG_ENTRY_MASK);
lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));
59d40: 42a7 clrl %sp@- <== NOT EXECUTED
59d42: 2f2e fec2 movel %fp@(-318),%sp@- <== NOT EXECUTED
/*
* Get the number of entries so we can count down and
* also the checksum of the short entry.
*/
lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &
59d46: c280 andl %d0,%d1 <== NOT EXECUTED
MSDOS_LAST_LONG_ENTRY_MASK);
lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
59d48: 1d45 fecb moveb %d5,%fp@(-309) <== NOT EXECUTED
* If the entry number or the check sum do not match
* forget this series of long directory entries. These could
* be orphaned entries depending on the history of the
* disk.
*/
if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &
59d4c: 7a3f moveq #63,%d5 <== NOT EXECUTED
/*
* Get the number of entries so we can count down and
* also the checksum of the short entry.
*/
lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &
59d4e: 2d41 fed4 movel %d1,%fp@(-300) <== NOT EXECUTED
MSDOS_LAST_LONG_ENTRY_MASK);
lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));
59d52: 4eb9 0005 b1f8 jsr 5b1f8 <memset> <== NOT EXECUTED
59d58: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* If the entry number or the check sum do not match
* forget this series of long directory entries. These could
* be orphaned entries depending on the history of the
* disk.
*/
if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &
59d5c: 1013 moveb %a3@,%d0 <== NOT EXECUTED
59d5e: c085 andl %d5,%d0 <== NOT EXECUTED
59d60: b0ae fed4 cmpl %fp@(-300),%d0 <== NOT EXECUTED
59d64: 668c bnes 59cf2 <msdos_dir_read+0x14a> <== NOT EXECUTED
MSDOS_LAST_LONG_ENTRY_MASK)) ||
59d66: 4280 clrl %d0 <== NOT EXECUTED
59d68: 102e fecb moveb %fp@(-309),%d0 <== NOT EXECUTED
59d6c: 4281 clrl %d1 <== NOT EXECUTED
(lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry)))
59d6e: 1a2b 000d moveb %a3@(13),%d5 <== NOT EXECUTED
* forget this series of long directory entries. These could
* be orphaned entries depending on the history of the
* disk.
*/
if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &
MSDOS_LAST_LONG_ENTRY_MASK)) ||
59d72: 1205 moveb %d5,%d1 <== NOT EXECUTED
59d74: b081 cmpl %d1,%d0 <== NOT EXECUTED
59d76: 6600 ff7a bnew 59cf2 <msdos_dir_read+0x14a> <== NOT EXECUTED
* The DOS maximum length is 255 characters without the
* trailing nul character. We need to range check the length to
* fit in the directory entry name field.
*/
lfn_entries--;
59d7a: 53ae fed4 subql #1,%fp@(-300) <== NOT EXECUTED
p = entry + 1;
o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;
59d7e: 700d moveq #13,%d0 <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
59d80: 41ee ff00 lea %fp@(-256),%a0 <== NOT EXECUTED
* trailing nul character. We need to range check the length to
* fit in the directory entry name field.
*/
lfn_entries--;
p = entry + 1;
59d84: 528b addql #1,%a3 <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
59d86: 2842 moveal %d2,%a4 <== NOT EXECUTED
* fit in the directory entry name field.
*/
lfn_entries--;
p = entry + 1;
o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;
59d88: 222e fed4 movel %fp@(-300),%d1 <== NOT EXECUTED
59d8c: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
59d90: 4200 clrb %d0 <== NOT EXECUTED
59d92: 43f0 1800 lea %a0@(00000000,%d1:l),%a1 <== NOT EXECUTED
59d96: 2040 moveal %d0,%a0 <== NOT EXECUTED
59d98: 5280 addql #1,%d0 <== NOT EXECUTED
p = entry + 1;
o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;
for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)
{
if (o >= (sizeof(tmp_dirent.d_name) - 1))
59d9a: 0c81 0000 00fe cmpil #254,%d1 <== NOT EXECUTED
59da0: 6220 bhis 59dc2 <msdos_dir_read+0x21a> <== NOT EXECUTED
break;
tmp_dirent.d_name[o++] = *p;
59da2: 5281 addql #1,%d1 <== NOT EXECUTED
59da4: 12d3 moveb %a3@,%a1@+ <== NOT EXECUTED
if (*p == '\0')
59da6: 671a beqs 59dc2 <msdos_dir_read+0x21a> <== NOT EXECUTED
break;
switch (q)
59da8: 7404 moveq #4,%d2 <== NOT EXECUTED
59daa: b488 cmpl %a0,%d2 <== NOT EXECUTED
59dac: 6700 0252 beqw 5a000 <msdos_dir_read+0x458> <== NOT EXECUTED
59db0: 143c 000a moveb #10,%d2 <== NOT EXECUTED
59db4: b488 cmpl %a0,%d2 <== NOT EXECUTED
59db6: 6700 024e beqw 5a006 <msdos_dir_read+0x45e> <== NOT EXECUTED
break;
case 10:
p += 4;
break;
default:
p += 2;
59dba: 548b addql #2,%a3 <== NOT EXECUTED
lfn_entries--;
p = entry + 1;
o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;
for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)
59dbc: 740d moveq #13,%d2 <== NOT EXECUTED
59dbe: b480 cmpl %d0,%d2 <== NOT EXECUTED
59dc0: 66d4 bnes 59d96 <msdos_dir_read+0x1ee> <== NOT EXECUTED
59dc2: 240c movel %a4,%d2 <== NOT EXECUTED
if (o >= (sizeof(tmp_dirent.d_name) - 1))
break;
tmp_dirent.d_name[o++] = *p;
if (*p == '\0')
59dc4: 1d45 fecb moveb %d5,%fp@(-309) <== NOT EXECUTED
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
}
if (count <= 0)
59dc8: 4a87 tstl %d7 <== NOT EXECUTED
59dca: 6600 fee6 bnew 59cb2 <msdos_dir_read+0x10a> <== NOT EXECUTED
59dce: 2a0d movel %a5,%d5 <== NOT EXECUTED
59dd0: 6000 ff3c braw 59d0e <msdos_dir_read+0x166> <== NOT EXECUTED
/*
* Check the attribute to see if the entry is for a long file
* name.
*/
if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==
59dd4: 7a3f moveq #63,%d5 <== NOT EXECUTED
59dd6: c285 andl %d5,%d1 <== NOT EXECUTED
59dd8: 1a3c 000f moveb #15,%d5 <== NOT EXECUTED
59ddc: ba81 cmpl %d1,%d5 <== NOT EXECUTED
59dde: 6700 ff00 beqw 59ce0 <msdos_dir_read+0x138> <== NOT EXECUTED
fat_dir_pos_t dir_pos;
/*
* Skip active entries until get the entry to start from.
*/
if (start)
59de2: 4a86 tstl %d6 <== NOT EXECUTED
59de4: 6708 beqs 59dee <msdos_dir_read+0x246> <== NOT EXECUTED
{
lfn_start = FAT_FILE_SHORT_NAME;
start--;
59de6: 5386 subql #1,%d6 <== NOT EXECUTED
/*
* Skip active entries until get the entry to start from.
*/
if (start)
{
lfn_start = FAT_FILE_SHORT_NAME;
59de8: 78ff moveq #-1,%d4 <== NOT EXECUTED
59dea: 6000 fec6 braw 59cb2 <msdos_dir_read+0x10a> <== NOT EXECUTED
* unfortunately there is no method to extract ino except to
* open fat-file descriptor :( ... so, open it
*/
/* get number of cluster we are working with */
rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
59dee: 486e fedc pea %fp@(-292) <== NOT EXECUTED
59df2: 2f2e fed0 movel %fp@(-304),%sp@- <== NOT EXECUTED
59df6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
59dfa: 2f2e fecc movel %fp@(-308),%sp@- <== NOT EXECUTED
59dfe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59e00: 4eb9 0005 2006 jsr 52006 <fat_file_ioctl> <== NOT EXECUTED
j * bts2rd, &cur_cln);
if (rc != RC_OK)
59e06: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
59e0a: 4a80 tstl %d0 <== NOT EXECUTED
59e0c: 6600 014a bnew 59f58 <msdos_dir_read+0x3b0> <== NOT EXECUTED
}
fat_dir_pos_init(&dir_pos);
dir_pos.sname.cln = cur_cln;
dir_pos.sname.ofs = i;
rc = fat_file_open(&fs_info->fat, &dir_pos, &tmp_fat_fd);
59e10: 486e fed8 pea %fp@(-296) <== NOT EXECUTED
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
dir_pos->sname.ofs = 0;
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
59e14: 7aff moveq #-1,%d5 <== NOT EXECUTED
59e16: 486e fee0 pea %fp@(-288) <== NOT EXECUTED
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
fat_dir_pos_init(&dir_pos);
dir_pos.sname.cln = cur_cln;
59e1a: 2d6e fedc fee0 movel %fp@(-292),%fp@(-288) <== NOT EXECUTED
dir_pos.sname.ofs = i;
rc = fat_file_open(&fs_info->fat, &dir_pos, &tmp_fat_fd);
59e20: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59e22: 2d45 fee8 movel %d5,%fp@(-280) <== NOT EXECUTED
dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
59e26: 2d45 feec movel %d5,%fp@(-276) <== NOT EXECUTED
return rc;
}
fat_dir_pos_init(&dir_pos);
dir_pos.sname.cln = cur_cln;
dir_pos.sname.ofs = i;
59e2a: 2d42 fee4 movel %d2,%fp@(-284) <== NOT EXECUTED
rc = fat_file_open(&fs_info->fat, &dir_pos, &tmp_fat_fd);
59e2e: 4eb9 0005 1914 jsr 51914 <fat_file_open> <== NOT EXECUTED
if (rc != RC_OK)
59e34: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59e38: 4a80 tstl %d0 <== NOT EXECUTED
59e3a: 6600 011c bnew 59f58 <msdos_dir_read+0x3b0> <== NOT EXECUTED
return rc;
}
/* fill in dirent structure */
/* XXX: from what and in what d_off should be computed ?! */
tmp_dirent.d_off = start + cmpltd;
59e3e: 42ae fef4 clrl %fp@(-268) <== NOT EXECUTED
/*
* If a long file name check if the correct number of
* entries have been found and if the checksum is correct.
* If not return the short file name.
*/
if (lfn_start != FAT_FILE_SHORT_NAME)
59e42: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
/* fill in dirent structure */
/* XXX: from what and in what d_off should be computed ?! */
tmp_dirent.d_off = start + cmpltd;
tmp_dirent.d_reclen = sizeof(struct dirent);
59e44: 307c 0110 moveaw #272,%a0 <== NOT EXECUTED
59e48: 3d48 fefc movew %a0,%fp@(-260) <== NOT EXECUTED
tmp_dirent.d_ino = tmp_fat_fd->ino;
59e4c: 206e fed8 moveal %fp@(-296),%a0 <== NOT EXECUTED
59e50: 2d68 000c fef0 movel %a0@(12),%fp@(-272) <== NOT EXECUTED
return rc;
}
/* fill in dirent structure */
/* XXX: from what and in what d_off should be computed ?! */
tmp_dirent.d_off = start + cmpltd;
59e56: 2d4d fef8 movel %a5,%fp@(-264) <== NOT EXECUTED
/*
* If a long file name check if the correct number of
* entries have been found and if the checksum is correct.
* If not return the short file name.
*/
if (lfn_start != FAT_FILE_SHORT_NAME)
59e5a: b084 cmpl %d4,%d0 <== NOT EXECUTED
59e5c: 6754 beqs 59eb2 <msdos_dir_read+0x30a> <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
59e5e: 43eb 000b lea %a3@(11),%a1 <== NOT EXECUTED
59e62: 204b moveal %a3,%a0 <== NOT EXECUTED
59e64: 4200 clrb %d0 <== NOT EXECUTED
uint8_t cs = 0;
uint8_t* p = (uint8_t*) entry;
int i;
for (i = 0; i < 11; i++, p++)
cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
59e66: 4205 clrb %d5 <== NOT EXECUTED
59e68: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
59e6e: 1218 moveb %a0@+,%d1 <== NOT EXECUTED
59e70: e288 lsrl #1,%d0 <== NOT EXECUTED
59e72: d081 addl %d1,%d0 <== NOT EXECUTED
59e74: da80 addl %d0,%d5 <== NOT EXECUTED
59e76: 1005 moveb %d5,%d0 <== NOT EXECUTED
{
uint8_t cs = 0;
uint8_t* p = (uint8_t*) entry;
int i;
for (i = 0; i < 11; i++, p++)
59e78: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
59e7a: 671e beqs 59e9a <msdos_dir_read+0x2f2> <== NOT EXECUTED
cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
59e7c: 0805 0000 btst #0,%d5 <== NOT EXECUTED
59e80: 6700 00f0 beqw 59f72 <msdos_dir_read+0x3ca> <== NOT EXECUTED
59e84: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
59e8a: 1218 moveb %a0@+,%d1 <== NOT EXECUTED
59e8c: 7a80 moveq #-128,%d5 <== NOT EXECUTED
59e8e: e288 lsrl #1,%d0 <== NOT EXECUTED
59e90: d081 addl %d1,%d0 <== NOT EXECUTED
59e92: da80 addl %d0,%d5 <== NOT EXECUTED
59e94: 1005 moveb %d5,%d0 <== NOT EXECUTED
{
uint8_t cs = 0;
uint8_t* p = (uint8_t*) entry;
int i;
for (i = 0; i < 11; i++, p++)
59e96: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
59e98: 66e2 bnes 59e7c <msdos_dir_read+0x2d4> <== NOT EXECUTED
cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
if (lfn_entries || (lfn_checksum != cs))
59e9a: 4aae fed4 tstl %fp@(-300) <== NOT EXECUTED
59e9e: 6612 bnes 59eb2 <msdos_dir_read+0x30a> <== NOT EXECUTED
59ea0: 4281 clrl %d1 <== NOT EXECUTED
59ea2: 122e fecb moveb %fp@(-309),%d1 <== NOT EXECUTED
59ea6: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
59eac: b280 cmpl %d0,%d1 <== NOT EXECUTED
59eae: 6700 00c8 beqw 59f78 <msdos_dir_read+0x3d0> <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
59eb2: 41eb 0008 lea %a3@(8),%a0 <== NOT EXECUTED
59eb6: 2248 moveal %a0,%a1 <== NOT EXECUTED
59eb8: 2849 moveal %a1,%a4 <== NOT EXECUTED
59eba: 99cb subal %a3,%a4 <== NOT EXECUTED
/*
* find last non-blank character of base name
*/
for ((i = MSDOS_SHORT_BASE_LEN ,
src_tmp = src + MSDOS_SHORT_BASE_LEN-1);
((i > 0) &&
59ebc: 7220 moveq #32,%d1 <== NOT EXECUTED
59ebe: 1021 moveb %a1@-,%d0 <== NOT EXECUTED
59ec0: 49c0 extbl %d0 <== NOT EXECUTED
59ec2: b280 cmpl %d0,%d1 <== NOT EXECUTED
59ec4: 6600 0146 bnew 5a00c <msdos_dir_read+0x464> <== NOT EXECUTED
const char *src_tmp;
/*
* find last non-blank character of base name
*/
for ((i = MSDOS_SHORT_BASE_LEN ,
59ec8: b7c9 cmpal %a1,%a3 <== NOT EXECUTED
59eca: 66ec bnes 59eb8 <msdos_dir_read+0x310> <== NOT EXECUTED
{
/*
* convert dir entry from fixed 8+3 format (without dot)
* to 0..8 + 1dot + 0..3 format
*/
tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
59ecc: 202e fec2 movel %fp@(-318),%d0 <== NOT EXECUTED
const char *src_tmp;
/*
* find last non-blank character of base name
*/
for ((i = MSDOS_SHORT_BASE_LEN ,
59ed0: 42ae febe clrl %fp@(-322) <== NOT EXECUTED
/*
* find last non-blank character of extension
*/
for ((i = MSDOS_SHORT_EXT_LEN ,
src_tmp = src + MSDOS_SHORT_BASE_LEN+MSDOS_SHORT_EXT_LEN-1);
((i > 0) &&
59ed4: 7820 moveq #32,%d4 <== NOT EXECUTED
59ed6: 122b 000a moveb %a3@(10),%d1 <== NOT EXECUTED
59eda: 49c1 extbl %d1 <== NOT EXECUTED
59edc: b881 cmpl %d1,%d4 <== NOT EXECUTED
59ede: 6600 0294 bnew 5a174 <msdos_dir_read+0x5cc> <== NOT EXECUTED
59ee2: 122b 0009 moveb %a3@(9),%d1 <== NOT EXECUTED
59ee6: 49c1 extbl %d1 <== NOT EXECUTED
59ee8: b881 cmpl %d1,%d4 <== NOT EXECUTED
59eea: 6600 0232 bnew 5a11e <msdos_dir_read+0x576> <== NOT EXECUTED
59eee: 122b 0008 moveb %a3@(8),%d1 <== NOT EXECUTED
59ef2: 49c1 extbl %d1 <== NOT EXECUTED
59ef4: b881 cmpl %d1,%d4 <== NOT EXECUTED
59ef6: 6600 0176 bnew 5a06e <msdos_dir_read+0x4c6> <== NOT EXECUTED
while (i-- > 0) {
*dst++ = tolower((unsigned char)(*src_tmp++));
len++;
}
}
*dst = '\0'; /* terminate string */
59efa: 2840 moveal %d0,%a4 <== NOT EXECUTED
{
/*
* convert dir entry from fixed 8+3 format (without dot)
* to 0..8 + 1dot + 0..3 format
*/
tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
59efc: 78ff moveq #-1,%d4 <== NOT EXECUTED
59efe: 302e fec0 movew %fp@(-320),%d0 <== NOT EXECUTED
while (i-- > 0) {
*dst++ = tolower((unsigned char)(*src_tmp++));
len++;
}
}
*dst = '\0'; /* terminate string */
59f02: 4214 clrb %a4@ <== NOT EXECUTED
{
/*
* convert dir entry from fixed 8+3 format (without dot)
* to 0..8 + 1dot + 0..3 format
*/
tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
59f04: 3d40 fefe movew %d0,%fp@(-258) <== NOT EXECUTED
else
{
tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);
}
memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
59f08: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED
iop->offset = iop->offset + sizeof(struct dirent);
cmpltd += (sizeof(struct dirent));
count -= (sizeof(struct dirent));
59f0c: 0687 ffff fef0 addil #-272,%d7 <== NOT EXECUTED
else
{
tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);
}
memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
59f12: 486e fef0 pea %fp@(-272) <== NOT EXECUTED
59f16: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
59f1a: 4870 d800 pea %a0@(00000000,%a5:l) <== NOT EXECUTED
iop->offset = iop->offset + sizeof(struct dirent);
cmpltd += (sizeof(struct dirent));
59f1e: 4bed 0110 lea %a5@(272),%a5 <== NOT EXECUTED
else
{
tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);
}
memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
59f22: 4eb9 0005 b188 jsr 5b188 <memcpy> <== NOT EXECUTED
iop->offset = iop->offset + sizeof(struct dirent);
cmpltd += (sizeof(struct dirent));
count -= (sizeof(struct dirent));
/* inode number extracted, close fat-file */
rc = fat_file_close(&fs_info->fat, tmp_fat_fd);
59f28: 2f2e fed8 movel %fp@(-296),%sp@- <== NOT EXECUTED
tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);
}
memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
iop->offset = iop->offset + sizeof(struct dirent);
59f2c: 4280 clrl %d0 <== NOT EXECUTED
59f2e: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
59f34: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
59f38: d3a8 0008 addl %d1,%a0@(8) <== NOT EXECUTED
59f3c: 2a28 0004 movel %a0@(4),%d5 <== NOT EXECUTED
59f40: db80 addxl %d0,%d5 <== NOT EXECUTED
59f42: 2145 0004 movel %d5,%a0@(4) <== NOT EXECUTED
cmpltd += (sizeof(struct dirent));
count -= (sizeof(struct dirent));
/* inode number extracted, close fat-file */
rc = fat_file_close(&fs_info->fat, tmp_fat_fd);
59f46: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59f48: 4eb9 0005 1f16 jsr 51f16 <fat_file_close> <== NOT EXECUTED
if (rc != RC_OK)
59f4e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
59f52: 4a80 tstl %d0 <== NOT EXECUTED
59f54: 6700 fe72 beqw 59dc8 <msdos_dir_read+0x220> <== NOT EXECUTED
{
rtems_semaphore_release(fs_info->vol_sema);
59f58: 2f2a 0090 movel %a2@(144),%sp@- <== NOT EXECUTED
59f5c: 2a00 movel %d0,%d5 <== NOT EXECUTED
59f5e: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release> <== NOT EXECUTED
59f64: 588f addql #4,%sp <== NOT EXECUTED
j++;
}
rtems_semaphore_release(fs_info->vol_sema);
return cmpltd;
}
59f66: 2005 movel %d5,%d0 <== NOT EXECUTED
59f68: 4cee 3cfc fe88 moveml %fp@(-376),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59f6e: 4e5e unlk %fp <== NOT EXECUTED
59f70: 4e75 rts <== NOT EXECUTED
uint8_t cs = 0;
uint8_t* p = (uint8_t*) entry;
int i;
for (i = 0; i < 11; i++, p++)
cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
59f72: 4205 clrb %d5 <== NOT EXECUTED
59f74: 6000 fef2 braw 59e68 <msdos_dir_read+0x2c0> <== NOT EXECUTED
tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
tmp_dirent.d_name, entry); /* src text */
}
else
{
tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);
59f78: 2f2e fec2 movel %fp@(-318),%sp@- <== NOT EXECUTED
memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
iop->offset = iop->offset + sizeof(struct dirent);
cmpltd += (sizeof(struct dirent));
count -= (sizeof(struct dirent));
59f7c: 0687 ffff fef0 addil #-272,%d7 <== NOT EXECUTED
tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
tmp_dirent.d_name, entry); /* src text */
}
else
{
tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);
59f82: 4eb9 0005 c4ec jsr 5c4ec <strlen> <== NOT EXECUTED
59f88: 588f addql #4,%sp <== NOT EXECUTED
}
memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
59f8a: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED
59f8e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
59f92: 486e fef0 pea %fp@(-272) <== NOT EXECUTED
59f96: 4870 d800 pea %a0@(00000000,%a5:l) <== NOT EXECUTED
iop->offset = iop->offset + sizeof(struct dirent);
cmpltd += (sizeof(struct dirent));
59f9a: 4bed 0110 lea %a5@(272),%a5 <== NOT EXECUTED
tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
tmp_dirent.d_name, entry); /* src text */
}
else
{
tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);
59f9e: 3d40 fefe movew %d0,%fp@(-258) <== NOT EXECUTED
}
memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
59fa2: 4eb9 0005 b188 jsr 5b188 <memcpy> <== NOT EXECUTED
iop->offset = iop->offset + sizeof(struct dirent);
cmpltd += (sizeof(struct dirent));
count -= (sizeof(struct dirent));
/* inode number extracted, close fat-file */
rc = fat_file_close(&fs_info->fat, tmp_fat_fd);
59fa8: 2f2e fed8 movel %fp@(-296),%sp@- <== NOT EXECUTED
tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);
}
memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
iop->offset = iop->offset + sizeof(struct dirent);
59fac: 4280 clrl %d0 <== NOT EXECUTED
59fae: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
59fb4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
59fb8: d3a8 0008 addl %d1,%a0@(8) <== NOT EXECUTED
59fbc: 2a28 0004 movel %a0@(4),%d5 <== NOT EXECUTED
59fc0: db80 addxl %d0,%d5 <== NOT EXECUTED
59fc2: 2145 0004 movel %d5,%a0@(4) <== NOT EXECUTED
cmpltd += (sizeof(struct dirent));
count -= (sizeof(struct dirent));
/* inode number extracted, close fat-file */
rc = fat_file_close(&fs_info->fat, tmp_fat_fd);
59fc6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59fc8: 4eb9 0005 1f16 jsr 51f16 <fat_file_close> <== NOT EXECUTED
if (rc != RC_OK)
59fce: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
59fd2: 4a80 tstl %d0 <== NOT EXECUTED
59fd4: 6700 fdf2 beqw 59dc8 <msdos_dir_read+0x220> <== NOT EXECUTED
59fd8: 6000 ff7e braw 59f58 <msdos_dir_read+0x3b0> <== NOT EXECUTED
* optimization: we know that root directory for FAT12/16 volumes is
* sequential set of sectors and any cluster is sequential set of sectors
* too, so read such set of sectors is quick operation for low-level IO
* layer.
*/
bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&
59fdc: 4aa8 0024 tstl %a0@(36) <== NOT EXECUTED
59fe0: 6600 fc2a bnew 59c0c <msdos_dir_read+0x64> <== NOT EXECUTED
59fe4: 102a 000e moveb %a2@(14),%d0 <== NOT EXECUTED
59fe8: 323c 0003 movew #3,%d1 <== NOT EXECUTED
59fec: c081 andl %d1,%d0 <== NOT EXECUTED
59fee: 4a00 tstb %d0 <== NOT EXECUTED
59ff0: 6700 fc1a beqw 59c0c <msdos_dir_read+0x64> <== NOT EXECUTED
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?
fat_fd->fat_file_size :
59ff4: 2428 0018 movel %a0@(24),%d2 <== NOT EXECUTED
59ff8: 2d42 fec6 movel %d2,%fp@(-314) <== NOT EXECUTED
59ffc: 6000 fc18 braw 59c16 <msdos_dir_read+0x6e> <== NOT EXECUTED
break;
switch (q)
{
case 4:
p += 5;
5a000: 5a8b addql #5,%a3 <== NOT EXECUTED
break;
5a002: 6000 fd92 braw 59d96 <msdos_dir_read+0x1ee> <== NOT EXECUTED
case 10:
p += 4;
5a006: 588b addql #4,%a3 <== NOT EXECUTED
break;
5a008: 6000 fd8c braw 59d96 <msdos_dir_read+0x1ee> <== NOT EXECUTED
5a00c: 2d4c febe movel %a4,%fp@(-322) <== NOT EXECUTED
/*
* copy base name to destination
*/
src_tmp = src;
len = i;
while (i-- > 0) {
5a010: 6f00 019e blew 5a1b0 <msdos_dir_read+0x608> <== NOT EXECUTED
5a014: 2a39 0006 adbc movel 6adbc <__ctype_ptr__>,%d5 <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
5a01a: 200c movel %a4,%d0 <== NOT EXECUTED
5a01c: d08b addl %a3,%d0 <== NOT EXECUTED
5a01e: 224b moveal %a3,%a1 <== NOT EXECUTED
5a020: 2d47 feba movel %d7,%fp@(-326) <== NOT EXECUTED
5a024: 2e08 movel %a0,%d7 <== NOT EXECUTED
5a026: 2045 moveal %d5,%a0 <== NOT EXECUTED
5a028: 2a00 movel %d0,%d5 <== NOT EXECUTED
{
/*
* convert dir entry from fixed 8+3 format (without dot)
* to 0..8 + 1dot + 0..3 format
*/
tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
5a02a: 286e fec2 moveal %fp@(-318),%a4 <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
5a02e: 2d42 feb6 movel %d2,%fp@(-330) <== NOT EXECUTED
* copy base name to destination
*/
src_tmp = src;
len = i;
while (i-- > 0) {
*dst++ = tolower((unsigned char)(*src_tmp++));
5a032: 4280 clrl %d0 <== NOT EXECUTED
5a034: 1019 moveb %a1@+,%d0 <== NOT EXECUTED
5a036: 7403 moveq #3,%d2 <== NOT EXECUTED
5a038: 2200 movel %d0,%d1 <== NOT EXECUTED
5a03a: 1830 0801 moveb %a0@(00000001,%d0:l),%d4 <== NOT EXECUTED
5a03e: c882 andl %d2,%d4 <== NOT EXECUTED
5a040: 143c 0001 moveb #1,%d2 <== NOT EXECUTED
5a044: b484 cmpl %d4,%d2 <== NOT EXECUTED
5a046: 6716 beqs 5a05e <msdos_dir_read+0x4b6> <== NOT EXECUTED
5a048: 18c1 moveb %d1,%a4@+ <== NOT EXECUTED
5a04a: 200c movel %a4,%d0 <== NOT EXECUTED
/*
* copy base name to destination
*/
src_tmp = src;
len = i;
while (i-- > 0) {
5a04c: ba89 cmpl %a1,%d5 <== NOT EXECUTED
5a04e: 66e2 bnes 5a032 <msdos_dir_read+0x48a> <== NOT EXECUTED
5a050: 2047 moveal %d7,%a0 <== NOT EXECUTED
5a052: 242e feb6 movel %fp@(-330),%d2 <== NOT EXECUTED
5a056: 2e2e feba movel %fp@(-326),%d7 <== NOT EXECUTED
5a05a: 6000 fe78 braw 59ed4 <msdos_dir_read+0x32c> <== NOT EXECUTED
*dst++ = tolower((unsigned char)(*src_tmp++));
5a05e: 0681 0000 0020 addil #32,%d1 <== NOT EXECUTED
5a064: 18c1 moveb %d1,%a4@+ <== NOT EXECUTED
5a066: 200c movel %a4,%d0 <== NOT EXECUTED
/*
* copy base name to destination
*/
src_tmp = src;
len = i;
while (i-- > 0) {
5a068: ba89 cmpl %a1,%d5 <== NOT EXECUTED
5a06a: 66c6 bnes 5a032 <msdos_dir_read+0x48a> <== NOT EXECUTED
5a06c: 60e2 bras 5a050 <msdos_dir_read+0x4a8> <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a06e: 2240 moveal %d0,%a1 <== NOT EXECUTED
5a070: 5289 addql #1,%a1 <== NOT EXECUTED
/*
* find last non-blank character of extension
*/
for ((i = MSDOS_SHORT_EXT_LEN ,
src_tmp = src + MSDOS_SHORT_BASE_LEN+MSDOS_SHORT_EXT_LEN-1);
((i > 0) &&
5a072: 183c 0001 moveb #1,%d4 <== NOT EXECUTED
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
len += i + 1; /* extension + dot */
src_tmp = src + MSDOS_SHORT_BASE_LEN;
while (i-- > 0) {
5a076: 2a04 movel %d4,%d5 <== NOT EXECUTED
5a078: 5385 subql #1,%d5 <== NOT EXECUTED
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
len += i + 1; /* extension + dot */
5a07a: 286e febe moveal %fp@(-322),%a4 <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a07e: 2d49 feba movel %a1,%fp@(-326) <== NOT EXECUTED
5a082: 5389 subql #1,%a1 <== NOT EXECUTED
len += i + 1; /* extension + dot */
5a084: 49f4 4801 lea %a4@(00000001,%d4:l),%a4 <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a088: 12fc 002e moveb #46,%a1@+ <== NOT EXECUTED
5a08c: 2039 0006 adbc movel 6adbc <__ctype_ptr__>,%d0 <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
5a092: 47f3 4808 lea %a3@(00000008,%d4:l),%a3 <== NOT EXECUTED
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
len += i + 1; /* extension + dot */
5a096: 2d4c febe movel %a4,%fp@(-322) <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a09a: 226e feba moveal %fp@(-326),%a1 <== NOT EXECUTED
5a09e: 2840 moveal %d0,%a4 <== NOT EXECUTED
len += i + 1; /* extension + dot */
src_tmp = src + MSDOS_SHORT_BASE_LEN;
while (i-- > 0) {
5a0a0: 2d45 feb6 movel %d5,%fp@(-330) <== NOT EXECUTED
5a0a4: 2d42 feb2 movel %d2,%fp@(-334) <== NOT EXECUTED
*dst++ = tolower((unsigned char)(*src_tmp++));
5a0a8: 4280 clrl %d0 <== NOT EXECUTED
5a0aa: 1018 moveb %a0@+,%d0 <== NOT EXECUTED
5a0ac: 7403 moveq #3,%d2 <== NOT EXECUTED
5a0ae: 2200 movel %d0,%d1 <== NOT EXECUTED
5a0b0: 1a34 0801 moveb %a4@(00000001,%d0:l),%d5 <== NOT EXECUTED
5a0b4: ca82 andl %d2,%d5 <== NOT EXECUTED
5a0b6: 143c 0001 moveb #1,%d2 <== NOT EXECUTED
5a0ba: b485 cmpl %d5,%d2 <== NOT EXECUTED
5a0bc: 6732 beqs 5a0f0 <msdos_dir_read+0x548> <== NOT EXECUTED
5a0be: 12c1 moveb %d1,%a1@+ <== NOT EXECUTED
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
len += i + 1; /* extension + dot */
src_tmp = src + MSDOS_SHORT_BASE_LEN;
while (i-- > 0) {
5a0c0: b7c8 cmpal %a0,%a3 <== NOT EXECUTED
5a0c2: 66e4 bnes 5a0a8 <msdos_dir_read+0x500> <== NOT EXECUTED
5a0c4: 206e febe moveal %fp@(-322),%a0 <== NOT EXECUTED
5a0c8: 226e feb6 moveal %fp@(-330),%a1 <== NOT EXECUTED
5a0cc: 202e feba movel %fp@(-326),%d0 <== NOT EXECUTED
5a0d0: d084 addl %d4,%d0 <== NOT EXECUTED
*dst++ = tolower((unsigned char)(*src_tmp++));
len++;
}
}
*dst = '\0'; /* terminate string */
5a0d2: 2840 moveal %d0,%a4 <== NOT EXECUTED
{
/*
* convert dir entry from fixed 8+3 format (without dot)
* to 0..8 + 1dot + 0..3 format
*/
tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
5a0d4: 78ff moveq #-1,%d4 <== NOT EXECUTED
5a0d6: 41f0 9801 lea %a0@(00000001,%a1:l),%a0 <== NOT EXECUTED
5a0da: 242e feb2 movel %fp@(-334),%d2 <== NOT EXECUTED
5a0de: 2d48 febe movel %a0,%fp@(-322) <== NOT EXECUTED
5a0e2: 302e fec0 movew %fp@(-320),%d0 <== NOT EXECUTED
while (i-- > 0) {
*dst++ = tolower((unsigned char)(*src_tmp++));
len++;
}
}
*dst = '\0'; /* terminate string */
5a0e6: 4214 clrb %a4@ <== NOT EXECUTED
{
/*
* convert dir entry from fixed 8+3 format (without dot)
* to 0..8 + 1dot + 0..3 format
*/
tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
5a0e8: 3d40 fefe movew %d0,%fp@(-258) <== NOT EXECUTED
5a0ec: 6000 fe1a braw 59f08 <msdos_dir_read+0x360> <== NOT EXECUTED
if (i > 0) {
*dst++ = '.'; /* append dot */
len += i + 1; /* extension + dot */
src_tmp = src + MSDOS_SHORT_BASE_LEN;
while (i-- > 0) {
*dst++ = tolower((unsigned char)(*src_tmp++));
5a0f0: 0681 0000 0020 addil #32,%d1 <== NOT EXECUTED
5a0f6: 60c6 bras 5a0be <msdos_dir_read+0x516> <== NOT EXECUTED
*/
ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),
bts2rd, fs_info->cl_buf);
if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
{
rtems_semaphore_release(fs_info->vol_sema);
5a0f8: 2f2a 0090 movel %a2@(144),%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
5a0fc: 7aff moveq #-1,%d5 <== NOT EXECUTED
*/
ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),
bts2rd, fs_info->cl_buf);
if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
{
rtems_semaphore_release(fs_info->vol_sema);
5a0fe: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
5a104: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5a10a: 588f addql #4,%sp <== NOT EXECUTED
5a10c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a10e: 7005 moveq #5,%d0 <== NOT EXECUTED
5a110: 2080 movel %d0,%a0@ <== NOT EXECUTED
j++;
}
rtems_semaphore_release(fs_info->vol_sema);
return cmpltd;
}
5a112: 2005 movel %d5,%d0 <== NOT EXECUTED
5a114: 4cee 3cfc fe88 moveml %fp@(-376),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5a11a: 4e5e unlk %fp <== NOT EXECUTED
5a11c: 4e75 rts <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a11e: 2240 moveal %d0,%a1 <== NOT EXECUTED
5a120: 5289 addql #1,%a1 <== NOT EXECUTED
*/
for ((i = MSDOS_SHORT_EXT_LEN ,
src_tmp = src + MSDOS_SHORT_BASE_LEN+MSDOS_SHORT_EXT_LEN-1);
((i > 0) &&
(*src_tmp == ' '));
i--,src_tmp--)
5a122: 7802 moveq #2,%d4 <== NOT EXECUTED
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
len += i + 1; /* extension + dot */
src_tmp = src + MSDOS_SHORT_BASE_LEN;
while (i-- > 0) {
5a124: 2a04 movel %d4,%d5 <== NOT EXECUTED
5a126: 5385 subql #1,%d5 <== NOT EXECUTED
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
len += i + 1; /* extension + dot */
5a128: 286e febe moveal %fp@(-322),%a4 <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a12c: 2d49 feba movel %a1,%fp@(-326) <== NOT EXECUTED
5a130: 5389 subql #1,%a1 <== NOT EXECUTED
len += i + 1; /* extension + dot */
5a132: 49f4 4801 lea %a4@(00000001,%d4:l),%a4 <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a136: 12fc 002e moveb #46,%a1@+ <== NOT EXECUTED
5a13a: 2039 0006 adbc movel 6adbc <__ctype_ptr__>,%d0 <== NOT EXECUTED
len += i + 1; /* extension + dot */
5a140: 2d4c febe movel %a4,%fp@(-322) <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a144: 226e feba moveal %fp@(-326),%a1 <== NOT EXECUTED
5a148: 2840 moveal %d0,%a4 <== NOT EXECUTED
len += i + 1; /* extension + dot */
src_tmp = src + MSDOS_SHORT_BASE_LEN;
while (i-- > 0) {
5a14a: 2d45 feb6 movel %d5,%fp@(-330) <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
5a14e: 47f3 4808 lea %a3@(00000008,%d4:l),%a3 <== NOT EXECUTED
5a152: 2d42 feb2 movel %d2,%fp@(-334) <== NOT EXECUTED
5a156: 6000 ff50 braw 5a0a8 <msdos_dir_read+0x500> <== NOT EXECUTED
fs_info->fat.vol.bpc;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a15a: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5a160: 7aff moveq #-1,%d5 <== NOT EXECUTED
5a162: 7205 moveq #5,%d1 <== NOT EXECUTED
5a164: 2040 moveal %d0,%a0 <== NOT EXECUTED
j++;
}
rtems_semaphore_release(fs_info->vol_sema);
return cmpltd;
}
5a166: 2005 movel %d5,%d0 <== NOT EXECUTED
5a168: 4cee 3cfc fe88 moveml %fp@(-376),%d2-%d7/%a2-%a5 <== NOT EXECUTED
fs_info->fat.vol.bpc;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a16e: 2081 movel %d1,%a0@ <== NOT EXECUTED
j++;
}
rtems_semaphore_release(fs_info->vol_sema);
return cmpltd;
}
5a170: 4e5e unlk %fp <== NOT EXECUTED
5a172: 4e75 rts <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a174: 2240 moveal %d0,%a1 <== NOT EXECUTED
5a176: 5289 addql #1,%a1 <== NOT EXECUTED
*dst++ = tolower((unsigned char)(*src_tmp++));
}
/*
* find last non-blank character of extension
*/
for ((i = MSDOS_SHORT_EXT_LEN ,
5a178: 7803 moveq #3,%d4 <== NOT EXECUTED
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
len += i + 1; /* extension + dot */
src_tmp = src + MSDOS_SHORT_BASE_LEN;
while (i-- > 0) {
5a17a: 2a04 movel %d4,%d5 <== NOT EXECUTED
5a17c: 5385 subql #1,%d5 <== NOT EXECUTED
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
len += i + 1; /* extension + dot */
5a17e: 286e febe moveal %fp@(-322),%a4 <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a182: 2d49 feba movel %a1,%fp@(-326) <== NOT EXECUTED
5a186: 5389 subql #1,%a1 <== NOT EXECUTED
len += i + 1; /* extension + dot */
5a188: 49f4 4801 lea %a4@(00000001,%d4:l),%a4 <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a18c: 12fc 002e moveb #46,%a1@+ <== NOT EXECUTED
5a190: 2039 0006 adbc movel 6adbc <__ctype_ptr__>,%d0 <== NOT EXECUTED
len += i + 1; /* extension + dot */
5a196: 2d4c febe movel %a4,%fp@(-322) <== NOT EXECUTED
{};
/*
* extension is not empty
*/
if (i > 0) {
*dst++ = '.'; /* append dot */
5a19a: 226e feba moveal %fp@(-326),%a1 <== NOT EXECUTED
5a19e: 2840 moveal %d0,%a4 <== NOT EXECUTED
len += i + 1; /* extension + dot */
src_tmp = src + MSDOS_SHORT_BASE_LEN;
while (i-- > 0) {
5a1a0: 2d45 feb6 movel %d5,%fp@(-330) <== NOT EXECUTED
* RETURNS:
* the number of bytes read on success, or -1 if error occured (errno
* set apropriately).
*/
ssize_t
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
5a1a4: 47f3 4808 lea %a3@(00000008,%d4:l),%a3 <== NOT EXECUTED
5a1a8: 2d42 feb2 movel %d2,%fp@(-334) <== NOT EXECUTED
5a1ac: 6000 fefa braw 5a0a8 <msdos_dir_read+0x500> <== NOT EXECUTED
{
/*
* convert dir entry from fixed 8+3 format (without dot)
* to 0..8 + 1dot + 0..3 format
*/
tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
5a1b0: 202e fec2 movel %fp@(-318),%d0 <== NOT EXECUTED
5a1b4: 6000 fd1e braw 59ed4 <msdos_dir_read+0x32c> <== NOT EXECUTED
0005a1b8 <msdos_dir_stat>:
int
msdos_dir_stat(
const rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
5a1b8: 4e56 ffe8 linkw %fp,#-24
5a1bc: 206e 0008 moveal %fp@(8),%a0
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
5a1c0: 2268 0014 moveal %a0@(20),%a1
int
msdos_dir_stat(
const rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
5a1c4: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
5a1c8: 2669 0008 moveal %a1@(8),%a3
fat_file_fd_t *fat_fd = loc->node_access;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a1cc: 42a7 clrl %sp@-
int
msdos_dir_stat(
const rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
5a1ce: 246e 000c moveal %fp@(12),%a2
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
fat_file_fd_t *fat_fd = loc->node_access;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a1d2: 42a7 clrl %sp@-
5a1d4: 2f2b 0090 movel %a3@(144),%sp@-
struct stat *buf
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
fat_file_fd_t *fat_fd = loc->node_access;
5a1d8: 2868 0008 moveal %a0@(8),%a4
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a1dc: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain>
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
5a1e2: 4fef 000c lea %sp@(12),%sp
5a1e6: 4a80 tstl %d0
5a1e8: 6668 bnes 5a252 <msdos_dir_stat+0x9a> <== NEVER TAKEN
buf->st_blksize = fs_info->fat.vol.bps;
buf->st_mtime = fat_fd->mtime;
rtems_semaphore_release(fs_info->vol_sema);
return RC_OK;
}
5a1ea: 206b 005a moveal %a3@(90),%a0
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
5a1ee: 2010 movel %a0@,%d0
5a1f0: 2228 0004 movel %a0@(4),%d1
buf->st_ino = fat_fd->ino;
5a1f4: 256c 000c 0008 movel %a4@(12),%a2@(8)
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
5a1fa: 2480 movel %d0,%a2@
5a1fc: 2541 0004 movel %d1,%a2@(4)
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
5a200: 202c 0018 movel %a4@(24),%d0
buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;
5a204: 7209 moveq #9,%d1
5a206: 2400 movel %d0,%d2
5a208: e2aa lsrl %d1,%d2
buf->st_blksize = fs_info->fat.vol.bps;
5a20a: 4281 clrl %d1
5a20c: 3213 movew %a3@,%d1
buf->st_mtime = fat_fd->mtime;
5a20e: 256c 003e 002e movel %a4@(62),%a2@(46)
rtems_semaphore_release(fs_info->vol_sema);
5a214: 2f2b 0090 movel %a3@(144),%sp@-
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
5a218: 4283 clrl %d3
5a21a: 4284 clrl %d4
buf->st_size = fat_fd->fat_file_size;
5a21c: 2540 0022 movel %d0,%a2@(34)
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
5a220: 2543 0016 movel %d3,%a2@(22)
5a224: 2544 001a movel %d4,%a2@(26)
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;
5a228: 283c 0000 41ff movel #16895,%d4
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
5a22e: 42aa 001e clrl %a2@(30)
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;
5a232: 2544 000c movel %d4,%a2@(12)
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;
5a236: 2542 0042 movel %d2,%a2@(66)
buf->st_blksize = fs_info->fat.vol.bps;
5a23a: 2541 003e movel %d1,%a2@(62)
buf->st_mtime = fat_fd->mtime;
rtems_semaphore_release(fs_info->vol_sema);
5a23e: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release>
return RC_OK;
5a244: 588f addql #4,%sp
5a246: 4280 clrl %d0
}
5a248: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
5a24e: 4e5e unlk %fp
5a250: 4e75 rts
fat_file_fd_t *fat_fd = loc->node_access;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a252: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5a258: 7405 moveq #5,%d2 <== NOT EXECUTED
5a25a: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a25c: 70ff moveq #-1,%d0 <== NOT EXECUTED
5a25e: 2082 movel %d2,%a0@ <== NOT EXECUTED
buf->st_blksize = fs_info->fat.vol.bps;
buf->st_mtime = fat_fd->mtime;
rtems_semaphore_release(fs_info->vol_sema);
return RC_OK;
}
5a260: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
5a266: 4e5e unlk %fp <== NOT EXECUTED
...
00056ef8 <msdos_eval_token>:
56ef8: 7201 moveq #1,%d1
rtems_filesystem_eval_path_context_t *ctx,
void *arg,
const char *token,
size_t tokenlen
)
{
56efa: 4e56 0000 linkw %fp,#0
56efe: 202e 0014 movel %fp@(20),%d0
56f02: 2f0a movel %a2,%sp@-
56f04: 246e 0008 moveal %fp@(8),%a2
56f08: 2f02 movel %d2,%sp@-
56f0a: b280 cmpl %d0,%d1
56f0c: 674a beqs 56f58 <msdos_eval_token+0x60> <== NEVER TAKEN
rtems_filesystem_eval_path_clear_token(ctx);
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;
} else {
rtems_filesystem_location_info_t *currentloc =
rtems_filesystem_eval_path_get_currentloc(ctx);
int rc = msdos_find_name(currentloc, token, tokenlen);
56f0e: 2f00 movel %d0,%sp@-
56f10: 2f2e 0010 movel %fp@(16),%sp@-
56f14: 486a 0018 pea %a2@(24)
56f18: 4eb9 0005 86c4 jsr 586c4 <msdos_find_name>
if (rc == RC_OK) {
56f1e: 4fef 000c lea %sp@(12),%sp
56f22: 4a80 tstl %d0
56f24: 6652 bnes 56f78 <msdos_eval_token+0x80>
* None
*/
static void
msdos_set_handlers(rtems_filesystem_location_info_t *loc)
{
msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
56f26: 226a 002c moveal %a2@(44),%a1
56f2a: 2269 0008 moveal %a1@(8),%a1
fat_file_fd_t *fat_fd = loc->node_access;
if (fat_fd->fat_file_type == FAT_DIRECTORY)
56f2e: 206a 0020 moveal %a2@(32),%a0
static inline void rtems_filesystem_eval_path_clear_token(
rtems_filesystem_eval_path_context_t *ctx
)
{
ctx->tokenlen = 0;
56f32: 42aa 000c clrl %a2@(12)
56f36: 4aa8 0010 tstl %a0@(16)
56f3a: 6652 bnes 56f8e <msdos_eval_token+0x96> <== ALWAYS TAKEN
int rc = msdos_find_name(currentloc, token, tokenlen);
if (rc == RC_OK) {
rtems_filesystem_eval_path_clear_token(ctx);
msdos_set_handlers(currentloc);
if (rtems_filesystem_eval_path_has_path(ctx)) {
56f3c: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
56f40: 57c0 seq %d0 <== NOT EXECUTED
{
msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
fat_file_fd_t *fat_fd = loc->node_access;
if (fat_fd->fat_file_type == FAT_DIRECTORY)
loc->handlers = fs_info->directory_handlers;
56f42: 2569 0088 0028 movel %a1@(136),%a2@(40) <== NOT EXECUTED
int rc = msdos_find_name(currentloc, token, tokenlen);
if (rc == RC_OK) {
rtems_filesystem_eval_path_clear_token(ctx);
msdos_set_handlers(currentloc);
if (rtems_filesystem_eval_path_has_path(ctx)) {
56f48: 49c0 extbl %d0 <== NOT EXECUTED
56f4a: 4480 negl %d0 <== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, 0);
}
}
return status;
}
56f4c: 242e fff8 movel %fp@(-8),%d2
56f50: 246e fffc moveal %fp@(-4),%a2
56f54: 4e5e unlk %fp
56f56: 4e75 rts
static inline bool rtems_filesystem_is_current_directory(
const char *token,
size_t tokenlen
)
{
return tokenlen == 1 && token [0] == '.';
56f58: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
56f5c: 742e moveq #46,%d2 <== NOT EXECUTED
56f5e: 1210 moveb %a0@,%d1 <== NOT EXECUTED
56f60: 49c1 extbl %d1 <== NOT EXECUTED
56f62: b481 cmpl %d1,%d2 <== NOT EXECUTED
56f64: 66a8 bnes 56f0e <msdos_eval_token+0x16> <== NOT EXECUTED
static inline void rtems_filesystem_eval_path_clear_token(
rtems_filesystem_eval_path_context_t *ctx
)
{
ctx->tokenlen = 0;
56f66: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
56f6a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
56f6e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_filesystem_eval_path_generic_status status =
RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
if (rtems_filesystem_is_current_directory(token, tokenlen)) {
rtems_filesystem_eval_path_clear_token(ctx);
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;
56f72: 4280 clrl %d0 <== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, 0);
}
}
return status;
}
56f74: 4e5e unlk %fp <== NOT EXECUTED
56f76: 4e75 rts <== NOT EXECUTED
rtems_filesystem_eval_path_clear_token(ctx);
msdos_set_handlers(currentloc);
if (rtems_filesystem_eval_path_has_path(ctx)) {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;
}
} else if (rc == MSDOS_NAME_NOT_FOUND_ERR) {
56f78: 0c80 0000 7d01 cmpil #32001,%d0
56f7e: 6620 bnes 56fa0 <msdos_eval_token+0xa8> <== NEVER TAKEN
rtems_filesystem_eval_path_error(ctx, 0);
}
}
return status;
}
56f80: 242e fff8 movel %fp@(-8),%d2
msdos_set_handlers(currentloc);
if (rtems_filesystem_eval_path_has_path(ctx)) {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;
}
} else if (rc == MSDOS_NAME_NOT_FOUND_ERR) {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;
56f84: 7002 moveq #2,%d0
rtems_filesystem_eval_path_error(ctx, 0);
}
}
return status;
}
56f86: 246e fffc moveal %fp@(-4),%a2
56f8a: 4e5e unlk %fp
56f8c: 4e75 rts
int rc = msdos_find_name(currentloc, token, tokenlen);
if (rc == RC_OK) {
rtems_filesystem_eval_path_clear_token(ctx);
msdos_set_handlers(currentloc);
if (rtems_filesystem_eval_path_has_path(ctx)) {
56f8e: 4aaa 0004 tstl %a2@(4)
56f92: 57c0 seq %d0
fat_file_fd_t *fat_fd = loc->node_access;
if (fat_fd->fat_file_type == FAT_DIRECTORY)
loc->handlers = fs_info->directory_handlers;
else
loc->handlers = fs_info->file_handlers;
56f94: 2569 008c 0028 movel %a1@(140),%a2@(40)
int rc = msdos_find_name(currentloc, token, tokenlen);
if (rc == RC_OK) {
rtems_filesystem_eval_path_clear_token(ctx);
msdos_set_handlers(currentloc);
if (rtems_filesystem_eval_path_has_path(ctx)) {
56f9a: 49c0 extbl %d0
56f9c: 4480 negl %d0
56f9e: 60ac bras 56f4c <msdos_eval_token+0x54>
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;
}
} else if (rc == MSDOS_NAME_NOT_FOUND_ERR) {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;
} else {
rtems_filesystem_eval_path_error(ctx, 0);
56fa0: 42a7 clrl %sp@- <== NOT EXECUTED
56fa2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
56fa4: 4eb9 0004 5e86 jsr 45e86 <rtems_filesystem_eval_path_error><== NOT EXECUTED
}
}
return status;
}
56faa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;
}
} else if (rc == MSDOS_NAME_NOT_FOUND_ERR) {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;
} else {
rtems_filesystem_eval_path_error(ctx, 0);
56fae: 508f addql #8,%sp <== NOT EXECUTED
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
56fb0: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, 0);
}
}
return status;
}
56fb2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
56fb6: 4e5e unlk %fp <== NOT EXECUTED
0005a2cc <msdos_file_close>:
* RC_OK, if file closed successfully, or -1 if error occured (errno set
* appropriately)
*/
int
msdos_file_close(rtems_libio_t *iop)
{
5a2cc: 4e56 0000 linkw %fp,#0
5a2d0: 2f0b movel %a3,%sp@-
5a2d2: 2f0a movel %a2,%sp@-
5a2d4: 246e 0008 moveal %fp@(8),%a2
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
5a2d8: 206a 0024 moveal %a2@(36),%a0
5a2dc: 2668 0008 moveal %a0@(8),%a3
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a2e0: 42a7 clrl %sp@-
5a2e2: 42a7 clrl %sp@-
5a2e4: 2f2b 0090 movel %a3@(144),%sp@-
5a2e8: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain>
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
5a2ee: 4fef 000c lea %sp@(12),%sp
5a2f2: 4a80 tstl %d0
5a2f4: 662a bnes 5a320 <msdos_file_close+0x54> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one(EIO);
rc = msdos_file_update(iop);
5a2f6: 486a 0024 pea %a2@(36)
5a2fa: 2f2a 0018 movel %a2@(24),%sp@-
5a2fe: 4eba ff6c jsr %pc@(5a26c <msdos_file_update.isra.1>)
rtems_semaphore_release(fs_info->vol_sema);
5a302: 2f2b 0090 movel %a3@(144),%sp@-
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
rc = msdos_file_update(iop);
5a306: 2440 moveal %d0,%a2
rtems_semaphore_release(fs_info->vol_sema);
5a308: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release>
return rc;
}
5a30e: 266e fffc moveal %fp@(-4),%a3
5a312: 200a movel %a2,%d0
rtems_set_errno_and_return_minus_one(EIO);
rc = msdos_file_update(iop);
rtems_semaphore_release(fs_info->vol_sema);
return rc;
5a314: 4fef 000c lea %sp@(12),%sp
}
5a318: 246e fff8 moveal %fp@(-8),%a2
5a31c: 4e5e unlk %fp
5a31e: 4e75 rts
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a320: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5a326: 347c ffff moveaw #-1,%a2 <== NOT EXECUTED
5a32a: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a32c: 7005 moveq #5,%d0 <== NOT EXECUTED
5a32e: 2080 movel %d0,%a0@ <== NOT EXECUTED
rc = msdos_file_update(iop);
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
5a330: 200a movel %a2,%d0 <== NOT EXECUTED
5a332: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
5a336: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
5a33a: 4e5e unlk %fp <== NOT EXECUTED
0005a572 <msdos_file_ftruncate>:
* RETURNS:
* RC_OK on success, or -1 if error occured (errno set appropriately).
*/
int
msdos_file_ftruncate(rtems_libio_t *iop, off_t length)
{
5a572: 4e56 ffd8 linkw %fp,#-40
5a576: 206e 0008 moveal %fp@(8),%a0
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
5a57a: 2268 0024 moveal %a0@(36),%a1
* RETURNS:
* RC_OK on success, or -1 if error occured (errno set appropriately).
*/
int
msdos_file_ftruncate(rtems_libio_t *iop, off_t length)
{
5a57e: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
5a582: 2469 0008 moveal %a1@(8),%a2
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
uint32_t old_length;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a586: 42a7 clrl %sp@-
msdos_file_ftruncate(rtems_libio_t *iop, off_t length)
{
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
5a588: 2668 0018 moveal %a0@(24),%a3
uint32_t old_length;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a58c: 42a7 clrl %sp@-
5a58e: 2f2a 0090 movel %a2@(144),%sp@-
* RETURNS:
* RC_OK on success, or -1 if error occured (errno set appropriately).
*/
int
msdos_file_ftruncate(rtems_libio_t *iop, off_t length)
{
5a592: 242e 000c movel %fp@(12),%d2
5a596: 262e 0010 movel %fp@(16),%d3
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
uint32_t old_length;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a59a: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain>
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
5a5a0: 4fef 000c lea %sp@(12),%sp
5a5a4: 4a80 tstl %d0
5a5a6: 6600 009e bnew 5a646 <msdos_file_ftruncate+0xd4>
rtems_set_errno_and_return_minus_one(EIO);
old_length = fat_fd->fat_file_size;
5a5aa: 286b 0018 moveal %a3@(24),%a4
if (length < old_length) {
5a5ae: 4284 clrl %d4
5a5b0: 2a0c movel %a4,%d5
5a5b2: 2004 movel %d4,%d0
5a5b4: 2205 movel %d5,%d1
5a5b6: 9283 subl %d3,%d1
5a5b8: 9182 subxl %d2,%d0
5a5ba: 6e62 bgts 5a61e <msdos_file_ftruncate+0xac> <== NEVER TAKEN
rc = fat_file_truncate(&fs_info->fat, fat_fd, length);
} else {
uint32_t new_length;
rc = fat_file_extend(&fs_info->fat,
5a5bc: 486e fffc pea %fp@(-4)
5a5c0: 2f03 movel %d3,%sp@-
5a5c2: 4878 0001 pea 1 <ADD>
5a5c6: 2f0b movel %a3,%sp@-
5a5c8: 2f0a movel %a2,%sp@-
5a5ca: 4eb9 0005 20bc jsr 520bc <fat_file_extend>
fat_fd,
true,
length,
&new_length);
if (rc == RC_OK && length != new_length) {
5a5d0: 4fef 0014 lea %sp@(20),%sp
if (length < old_length) {
rc = fat_file_truncate(&fs_info->fat, fat_fd, length);
} else {
uint32_t new_length;
rc = fat_file_extend(&fs_info->fat,
5a5d4: 2800 movel %d0,%d4
fat_fd,
true,
length,
&new_length);
if (rc == RC_OK && length != new_length) {
5a5d6: 6658 bnes 5a630 <msdos_file_ftruncate+0xbe> <== NEVER TAKEN
5a5d8: 2e2e fffc movel %fp@(-4),%d7
5a5dc: 4286 clrl %d6
5a5de: 2006 movel %d6,%d0
5a5e0: 2207 movel %d7,%d1
5a5e2: 9283 subl %d3,%d1
5a5e4: 9182 subxl %d2,%d0
5a5e6: 674c beqs 5a634 <msdos_file_ftruncate+0xc2> <== ALWAYS TAKEN
fat_file_truncate(&fs_info->fat, fat_fd, old_length);
5a5e8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
errno = ENOSPC;
5a5ea: 7a1c moveq #28,%d5 <== NOT EXECUTED
rc = -1;
5a5ec: 78ff moveq #-1,%d4 <== NOT EXECUTED
fat_fd,
true,
length,
&new_length);
if (rc == RC_OK && length != new_length) {
fat_file_truncate(&fs_info->fat, fat_fd, old_length);
5a5ee: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5a5f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5a5f2: 4eb9 0005 1e22 jsr 51e22 <fat_file_truncate> <== NOT EXECUTED
errno = ENOSPC;
5a5f8: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5a5fe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5a602: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a604: 2085 movel %d5,%a0@ <== NOT EXECUTED
if (rc == RC_OK) {
fat_fd->fat_file_size = length;
}
rtems_semaphore_release(fs_info->vol_sema);
5a606: 2f2a 0090 movel %a2@(144),%sp@- <== NOT EXECUTED
5a60a: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release> <== NOT EXECUTED
return rc;
5a610: 588f addql #4,%sp <== NOT EXECUTED
}
5a612: 2004 movel %d4,%d0
5a614: 4cee 1cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a4
5a61a: 4e5e unlk %fp
5a61c: 4e75 rts
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
old_length = fat_fd->fat_file_size;
if (length < old_length) {
rc = fat_file_truncate(&fs_info->fat, fat_fd, length);
5a61e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5a620: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5a622: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5a624: 4eb9 0005 1e22 jsr 51e22 <fat_file_truncate> <== NOT EXECUTED
5a62a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5a62e: 2800 movel %d0,%d4 <== NOT EXECUTED
errno = ENOSPC;
rc = -1;
}
}
if (rc == RC_OK) {
5a630: 4a84 tstl %d4 <== NOT EXECUTED
5a632: 66d2 bnes 5a606 <msdos_file_ftruncate+0x94> <== NOT EXECUTED
fat_fd->fat_file_size = length;
5a634: 2743 0018 movel %d3,%a3@(24)
}
rtems_semaphore_release(fs_info->vol_sema);
5a638: 2f2a 0090 movel %a2@(144),%sp@-
5a63c: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release>
return rc;
5a642: 588f addql #4,%sp
5a644: 60cc bras 5a612 <msdos_file_ftruncate+0xa0>
uint32_t old_length;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a646: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5a64c: 78ff moveq #-1,%d4 <== NOT EXECUTED
5a64e: 7c05 moveq #5,%d6 <== NOT EXECUTED
5a650: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
5a652: 2004 movel %d4,%d0 <== NOT EXECUTED
uint32_t old_length;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a654: 2086 movel %d6,%a0@ <== NOT EXECUTED
}
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
5a656: 4cee 1cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a4 <== NOT EXECUTED
5a65c: 4e5e unlk %fp <== NOT EXECUTED
0005a33e <msdos_file_read>:
* the number of bytes read on success, or -1 if error occured (errno set
* appropriately)
*/
ssize_t
msdos_file_read(rtems_libio_t *iop, void *buffer, size_t count)
{
5a33e: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
5a342: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
5a346: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
ssize_t ret = 0;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
5a34a: 206a 0024 moveal %a2@(36),%a0 <== NOT EXECUTED
5a34e: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a352: 42a7 clrl %sp@- <== NOT EXECUTED
5a354: 42a7 clrl %sp@- <== NOT EXECUTED
5a356: 2f2b 0090 movel %a3@(144),%sp@- <== NOT EXECUTED
msdos_file_read(rtems_libio_t *iop, void *buffer, size_t count)
{
ssize_t ret = 0;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
5a35a: 242a 0018 movel %a2@(24),%d2 <== NOT EXECUTED
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a35e: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain> <== NOT EXECUTED
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
5a364: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5a368: 4a80 tstl %d0 <== NOT EXECUTED
5a36a: 664a bnes 5a3b6 <msdos_file_read+0x78> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
ret = fat_file_read(&fs_info->fat, fat_fd, iop->offset, count,
5a36c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5a370: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5a374: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
5a378: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a37a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5a37c: 4eb9 0005 1bd0 jsr 51bd0 <fat_file_read> <== NOT EXECUTED
buffer);
if (ret > 0)
5a382: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
ret = fat_file_read(&fs_info->fat, fat_fd, iop->offset, count,
5a386: 2800 movel %d0,%d4 <== NOT EXECUTED
buffer);
if (ret > 0)
5a388: 6f14 bles 5a39e <msdos_file_read+0x60> <== NOT EXECUTED
iop->offset += ret;
5a38a: 2600 movel %d0,%d3 <== NOT EXECUTED
5a38c: 5bc2 smi %d2 <== NOT EXECUTED
5a38e: 49c2 extbl %d2 <== NOT EXECUTED
5a390: d7aa 0008 addl %d3,%a2@(8) <== NOT EXECUTED
5a394: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
5a398: d182 addxl %d2,%d0 <== NOT EXECUTED
5a39a: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
rtems_semaphore_release(fs_info->vol_sema);
5a39e: 2f2b 0090 movel %a3@(144),%sp@- <== NOT EXECUTED
5a3a2: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release> <== NOT EXECUTED
return ret;
5a3a8: 588f addql #4,%sp <== NOT EXECUTED
}
5a3aa: 2004 movel %d4,%d0 <== NOT EXECUTED
5a3ac: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
5a3b2: 4e5e unlk %fp <== NOT EXECUTED
5a3b4: 4e75 rts <== NOT EXECUTED
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a3b6: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5a3bc: 78ff moveq #-1,%d4 <== NOT EXECUTED
5a3be: 7205 moveq #5,%d1 <== NOT EXECUTED
5a3c0: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (ret > 0)
iop->offset += ret;
rtems_semaphore_release(fs_info->vol_sema);
return ret;
}
5a3c2: 2004 movel %d4,%d0 <== NOT EXECUTED
5a3c4: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a3ca: 2081 movel %d1,%a0@ <== NOT EXECUTED
if (ret > 0)
iop->offset += ret;
rtems_semaphore_release(fs_info->vol_sema);
return ret;
}
5a3cc: 4e5e unlk %fp <== NOT EXECUTED
0005a4b0 <msdos_file_stat>:
int
msdos_file_stat(
const rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
5a4b0: 4e56 ffe4 linkw %fp,#-28
5a4b4: 206e 0008 moveal %fp@(8),%a0
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
5a4b8: 2268 0014 moveal %a0@(20),%a1
int
msdos_file_stat(
const rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
5a4bc: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
5a4c0: 2669 0008 moveal %a1@(8),%a3
fat_file_fd_t *fat_fd = loc->node_access;
uint32_t cl_mask = fs_info->fat.vol.bpc - 1;
5a4c4: 4282 clrl %d2
5a4c6: 342b 0006 movew %a3@(6),%d2
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a4ca: 42a7 clrl %sp@-
int
msdos_file_stat(
const rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
5a4cc: 246e 000c moveal %fp@(12),%a2
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
fat_file_fd_t *fat_fd = loc->node_access;
uint32_t cl_mask = fs_info->fat.vol.bpc - 1;
5a4d0: 5382 subql #1,%d2
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a4d2: 42a7 clrl %sp@-
5a4d4: 2f2b 0090 movel %a3@(144),%sp@-
struct stat *buf
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
fat_file_fd_t *fat_fd = loc->node_access;
5a4d8: 2868 0008 moveal %a0@(8),%a4
uint32_t cl_mask = fs_info->fat.vol.bpc - 1;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a4dc: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain>
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
5a4e2: 4fef 000c lea %sp@(12),%sp
5a4e6: 4a80 tstl %d0
5a4e8: 6670 bnes 5a55a <msdos_file_stat+0xaa> <== NEVER TAKEN
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return RC_OK;
}
5a4ea: 206b 005a moveal %a3@(90),%a0
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)
5a4ee: 2002 movel %d2,%d0
5a4f0: 4680 notl %d0
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
5a4f2: 222c 0018 movel %a4@(24),%d1
buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)
5a4f6: d481 addl %d1,%d2
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
5a4f8: 2610 movel %a0@,%d3
5a4fa: 2828 0004 movel %a0@(4),%d4
buf->st_ino = fat_fd->ino;
5a4fe: 256c 000c 0008 movel %a4@(12),%a2@(8)
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
5a504: 2483 movel %d3,%a2@
5a506: 2544 0004 movel %d4,%a2@(4)
buf->st_mode = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)
>> FAT_SECTOR512_BITS;
buf->st_blksize = fs_info->fat.vol.bpc;
5a50a: 4283 clrl %d3
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)
>> FAT_SECTOR512_BITS;
5a50c: 7809 moveq #9,%d4
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)
5a50e: c082 andl %d2,%d0
>> FAT_SECTOR512_BITS;
buf->st_blksize = fs_info->fat.vol.bpc;
5a510: 362b 0006 movew %a3@(6),%d3
buf->st_mtime = fat_fd->mtime;
5a514: 256c 003e 002e movel %a4@(62),%a2@(46)
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)
>> FAT_SECTOR512_BITS;
5a51a: e8a8 lsrl %d4,%d0
buf->st_blksize = fs_info->fat.vol.bpc;
buf->st_mtime = fat_fd->mtime;
rtems_semaphore_release(fs_info->vol_sema);
5a51c: 2f2b 0090 movel %a3@(144),%sp@-
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
5a520: 4284 clrl %d4
5a522: 4285 clrl %d5
buf->st_size = fat_fd->fat_file_size;
5a524: 2541 0022 movel %d1,%a2@(34)
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;
buf->st_rdev = 0ll;
5a528: 2544 0016 movel %d4,%a2@(22)
5a52c: 2545 001a movel %d5,%a2@(26)
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;
5a530: 2a3c 0000 81ff movel #33279,%d5
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
5a536: 42aa 001e clrl %a2@(30)
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
buf->st_ino = fat_fd->ino;
buf->st_mode = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;
5a53a: 2545 000c movel %d5,%a2@(12)
buf->st_rdev = 0ll;
buf->st_size = fat_fd->fat_file_size;
buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)
5a53e: 2540 0042 movel %d0,%a2@(66)
>> FAT_SECTOR512_BITS;
buf->st_blksize = fs_info->fat.vol.bpc;
5a542: 2543 003e movel %d3,%a2@(62)
buf->st_mtime = fat_fd->mtime;
rtems_semaphore_release(fs_info->vol_sema);
5a546: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release>
return RC_OK;
5a54c: 588f addql #4,%sp
5a54e: 4280 clrl %d0
}
5a550: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
5a556: 4e5e unlk %fp
5a558: 4e75 rts
uint32_t cl_mask = fs_info->fat.vol.bpc - 1;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a55a: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5a560: 7605 moveq #5,%d3 <== NOT EXECUTED
5a562: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a564: 70ff moveq #-1,%d0 <== NOT EXECUTED
5a566: 2083 movel %d3,%a0@ <== NOT EXECUTED
buf->st_blksize = fs_info->fat.vol.bpc;
buf->st_mtime = fat_fd->mtime;
rtems_semaphore_release(fs_info->vol_sema);
return RC_OK;
}
5a568: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5a56e: 4e5e unlk %fp <== NOT EXECUTED
0005a660 <msdos_file_sync>:
* RETURNS:
* RC_OK on success, or -1 if error occured (errno set appropriately)
*/
int
msdos_file_sync(rtems_libio_t *iop)
{
5a660: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5a664: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5a666: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5a668: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
5a66c: 206a 0024 moveal %a2@(36),%a0 <== NOT EXECUTED
5a670: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a674: 42a7 clrl %sp@- <== NOT EXECUTED
5a676: 42a7 clrl %sp@- <== NOT EXECUTED
5a678: 2f2b 0090 movel %a3@(144),%sp@- <== NOT EXECUTED
5a67c: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain> <== NOT EXECUTED
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
5a682: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5a686: 4a80 tstl %d0 <== NOT EXECUTED
5a688: 6650 bnes 5a6da <msdos_file_sync+0x7a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
rc = msdos_file_update(iop);
5a68a: 486a 0024 pea %a2@(36) <== NOT EXECUTED
5a68e: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
5a692: 4eba fbd8 jsr %pc@(5a26c <msdos_file_update.isra.1>) <== NOT EXECUTED
if (rc != RC_OK)
5a696: 508f addql #8,%sp <== NOT EXECUTED
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
rc = msdos_file_update(iop);
5a698: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (rc != RC_OK)
5a69a: 4a80 tstl %d0 <== NOT EXECUTED
5a69c: 6622 bnes 5a6c0 <msdos_file_sync+0x60> <== NOT EXECUTED
{
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
rc = fat_sync(&fs_info->fat);
5a69e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5a6a0: 4eb9 0005 36d4 jsr 536d4 <fat_sync> <== NOT EXECUTED
rtems_semaphore_release(fs_info->vol_sema);
5a6a6: 2f2b 0090 movel %a3@(144),%sp@- <== NOT EXECUTED
5a6aa: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release> <== NOT EXECUTED
return RC_OK;
}
5a6b0: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
5a6b4: 200a movel %a2,%d0 <== NOT EXECUTED
}
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return RC_OK;
5a6b6: 508f addql #8,%sp <== NOT EXECUTED
}
5a6b8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
5a6bc: 4e5e unlk %fp <== NOT EXECUTED
5a6be: 4e75 rts <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
rc = msdos_file_update(iop);
if (rc != RC_OK)
{
rtems_semaphore_release(fs_info->vol_sema);
5a6c0: 2f2b 0090 movel %a3@(144),%sp@- <== NOT EXECUTED
5a6c4: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release> <== NOT EXECUTED
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return RC_OK;
}
5a6ca: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
5a6ce: 200a movel %a2,%d0 <== NOT EXECUTED
rc = msdos_file_update(iop);
if (rc != RC_OK)
{
rtems_semaphore_release(fs_info->vol_sema);
return rc;
5a6d0: 588f addql #4,%sp <== NOT EXECUTED
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return RC_OK;
}
5a6d2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
5a6d6: 4e5e unlk %fp <== NOT EXECUTED
5a6d8: 4e75 rts <== NOT EXECUTED
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a6da: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5a6e0: 347c ffff moveaw #-1,%a2 <== NOT EXECUTED
5a6e4: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a6e6: 7005 moveq #5,%d0 <== NOT EXECUTED
5a6e8: 2080 movel %d0,%a0@ <== NOT EXECUTED
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return RC_OK;
}
5a6ea: 200a movel %a2,%d0 <== NOT EXECUTED
5a6ec: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
5a6f0: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
5a6f4: 4e5e unlk %fp <== NOT EXECUTED
0005a26c <msdos_file_update.isra.1>:
#include "fat_file.h"
#include "msdos.h"
static int
msdos_file_update(rtems_libio_t *iop)
5a26c: 4e56 0000 linkw %fp,#0
5a270: 2f0b movel %a3,%sp@-
5a272: 266e 000c moveal %fp@(12),%a3
5a276: 2f0a movel %a2,%sp@-
5a278: 246e 0008 moveal %fp@(8),%a2
/*
* if fat-file descriptor is not marked as "removed", synchronize
* size, first cluster number, write time and date fields of the file
*/
if (!FAT_FILE_IS_REMOVED(fat_fd))
5a27c: 102a 0030 moveb %a2@(48),%d0
5a280: 0800 0000 btst #0,%d0
5a284: 670e beqs 5a294 <msdos_file_update.isra.1+0x28> <== ALWAYS TAKEN
#include "msdos.h"
static int
msdos_file_update(rtems_libio_t *iop)
{
int rc = RC_OK;
5a286: 4280 clrl %d0 <== NOT EXECUTED
return rc;
}
}
return rc;
}
5a288: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
5a28c: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
5a290: 4e5e unlk %fp <== NOT EXECUTED
5a292: 4e75 rts <== NOT EXECUTED
* if fat-file descriptor is not marked as "removed", synchronize
* size, first cluster number, write time and date fields of the file
*/
if (!FAT_FILE_IS_REMOVED(fat_fd))
{
rc = msdos_set_first_cluster_num(iop->pathinfo.mt_entry, fat_fd);
5a294: 2f0a movel %a2,%sp@-
5a296: 2f13 movel %a3@,%sp@-
5a298: 4eb9 0005 7366 jsr 57366 <msdos_set_first_cluster_num>
if (rc != RC_OK)
5a29e: 508f addql #8,%sp
5a2a0: 4a80 tstl %d0
5a2a2: 66e4 bnes 5a288 <msdos_file_update.isra.1+0x1c> <== NEVER TAKEN
{
return rc;
}
rc = msdos_set_file_size(iop->pathinfo.mt_entry, fat_fd);
5a2a4: 2f0a movel %a2,%sp@-
5a2a6: 2f13 movel %a3@,%sp@-
5a2a8: 4eb9 0005 743e jsr 5743e <msdos_set_file_size>
if (rc != RC_OK)
5a2ae: 508f addql #8,%sp
5a2b0: 4a80 tstl %d0
5a2b2: 66d4 bnes 5a288 <msdos_file_update.isra.1+0x1c> <== NEVER TAKEN
{
return rc;
}
rc = msdos_set_dir_wrt_time_and_date(iop->pathinfo.mt_entry, fat_fd);
5a2b4: 2d53 0008 movel %a3@,%fp@(8)
return rc;
}
}
return rc;
}
5a2b8: 266e fffc moveal %fp@(-4),%a3
if (rc != RC_OK)
{
return rc;
}
rc = msdos_set_dir_wrt_time_and_date(iop->pathinfo.mt_entry, fat_fd);
5a2bc: 2d4a 000c movel %a2,%fp@(12)
return rc;
}
}
return rc;
}
5a2c0: 246e fff8 moveal %fp@(-8),%a2
5a2c4: 4e5e unlk %fp
if (rc != RC_OK)
{
return rc;
}
rc = msdos_set_dir_wrt_time_and_date(iop->pathinfo.mt_entry, fat_fd);
5a2c6: 4ef9 0005 7266 jmp 57266 <msdos_set_dir_wrt_time_and_date>
0005a3d0 <msdos_file_write>:
* the number of bytes written on success, or -1 if error occured
* and errno set appropriately
*/
ssize_t
msdos_file_write(rtems_libio_t *iop,const void *buffer, size_t count)
{
5a3d0: 4e56 ffe0 linkw %fp,#-32
5a3d4: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
5a3d8: 246e 0008 moveal %fp@(8),%a2
ssize_t ret = 0;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
5a3dc: 206a 0024 moveal %a2@(36),%a0
5a3e0: 2668 0008 moveal %a0@(8),%a3
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a3e4: 42a7 clrl %sp@-
5a3e6: 42a7 clrl %sp@-
5a3e8: 2f2b 0090 movel %a3@(144),%sp@-
msdos_file_write(rtems_libio_t *iop,const void *buffer, size_t count)
{
ssize_t ret = 0;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
5a3ec: 286a 0018 moveal %a2@(24),%a4
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
5a3f0: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain>
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
5a3f6: 4fef 000c lea %sp@(12),%sp
5a3fa: 4a80 tstl %d0
5a3fc: 667e bnes 5a47c <msdos_file_write+0xac> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one(EIO);
if ((iop->flags & LIBIO_FLAGS_APPEND) != 0)
5a3fe: 202a 000c movel %a2@(12),%d0
5a402: 0280 0000 0200 andil #512,%d0
5a408: 676c beqs 5a476 <msdos_file_write+0xa6> <== ALWAYS TAKEN
iop->offset = fat_fd->fat_file_size;
5a40a: 202c 0018 movel %a4@(24),%d0 <== NOT EXECUTED
5a40e: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
5a412: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
ret = fat_file_write(&fs_info->fat, fat_fd, iop->offset, count,
5a416: 2f2e 000c movel %fp@(12),%sp@-
5a41a: 2f2e 0010 movel %fp@(16),%sp@-
5a41e: 2f00 movel %d0,%sp@-
5a420: 2f0c movel %a4,%sp@-
5a422: 2f0b movel %a3,%sp@-
5a424: 4eb9 0005 22ee jsr 522ee <fat_file_write>
buffer);
if (ret < 0)
5a42a: 4fef 0014 lea %sp@(20),%sp
rtems_set_errno_and_return_minus_one(EIO);
if ((iop->flags & LIBIO_FLAGS_APPEND) != 0)
iop->offset = fat_fd->fat_file_size;
ret = fat_file_write(&fs_info->fat, fat_fd, iop->offset, count,
5a42e: 2c00 movel %d0,%d6
buffer);
if (ret < 0)
5a430: 6d64 blts 5a496 <msdos_file_write+0xc6> <== NEVER TAKEN
/*
* update file size in both fat-file descriptor and file control block if
* file was extended
*/
iop->offset += ret;
if (iop->offset > fat_fd->fat_file_size)
5a432: 2a2c 0018 movel %a4@(24),%d5
5a436: 4284 clrl %d4
/*
* update file size in both fat-file descriptor and file control block if
* file was extended
*/
iop->offset += ret;
5a438: 2600 movel %d0,%d3
5a43a: 5bc2 smi %d2
5a43c: 49c2 extbl %d2
5a43e: 202a 0004 movel %a2@(4),%d0
5a442: d6aa 0008 addl %a2@(8),%d3
5a446: d580 addxl %d0,%d2
if (iop->offset > fat_fd->fat_file_size)
5a448: 2002 movel %d2,%d0
5a44a: 2203 movel %d3,%d1
/*
* update file size in both fat-file descriptor and file control block if
* file was extended
*/
iop->offset += ret;
5a44c: 2542 0004 movel %d2,%a2@(4)
5a450: 2543 0008 movel %d3,%a2@(8)
if (iop->offset > fat_fd->fat_file_size)
5a454: 9285 subl %d5,%d1
5a456: 9184 subxl %d4,%d0
5a458: 6f04 bles 5a45e <msdos_file_write+0x8e> <== ALWAYS TAKEN
fat_fd->fat_file_size = iop->offset;
5a45a: 2943 0018 movel %d3,%a4@(24) <== NOT EXECUTED
rtems_semaphore_release(fs_info->vol_sema);
5a45e: 2f2b 0090 movel %a3@(144),%sp@-
5a462: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release>
return ret;
5a468: 588f addql #4,%sp
}
5a46a: 2006 movel %d6,%d0
5a46c: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4
5a472: 4e5e unlk %fp
5a474: 4e75 rts
5a476: 202a 0008 movel %a2@(8),%d0
5a47a: 609a bras 5a416 <msdos_file_write+0x46>
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a47c: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5a482: 7cff moveq #-1,%d6 <== NOT EXECUTED
5a484: 7405 moveq #5,%d2 <== NOT EXECUTED
5a486: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (iop->offset > fat_fd->fat_file_size)
fat_fd->fat_file_size = iop->offset;
rtems_semaphore_release(fs_info->vol_sema);
return ret;
}
5a488: 2006 movel %d6,%d0 <== NOT EXECUTED
fat_file_fd_t *fat_fd = iop->pathinfo.node_access;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5a48a: 2082 movel %d2,%a0@ <== NOT EXECUTED
if (iop->offset > fat_fd->fat_file_size)
fat_fd->fat_file_size = iop->offset;
rtems_semaphore_release(fs_info->vol_sema);
return ret;
}
5a48c: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
5a492: 4e5e unlk %fp <== NOT EXECUTED
5a494: 4e75 rts <== NOT EXECUTED
ret = fat_file_write(&fs_info->fat, fat_fd, iop->offset, count,
buffer);
if (ret < 0)
{
rtems_semaphore_release(fs_info->vol_sema);
5a496: 2f2b 0090 movel %a3@(144),%sp@- <== NOT EXECUTED
return -1;
5a49a: 7cff moveq #-1,%d6 <== NOT EXECUTED
ret = fat_file_write(&fs_info->fat, fat_fd, iop->offset, count,
buffer);
if (ret < 0)
{
rtems_semaphore_release(fs_info->vol_sema);
5a49c: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release> <== NOT EXECUTED
return -1;
5a4a2: 588f addql #4,%sp <== NOT EXECUTED
if (iop->offset > fat_fd->fat_file_size)
fat_fd->fat_file_size = iop->offset;
rtems_semaphore_release(fs_info->vol_sema);
return ret;
}
5a4a4: 2006 movel %d6,%d0 <== NOT EXECUTED
5a4a6: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
5a4ac: 4e5e unlk %fp <== NOT EXECUTED
00059a20 <msdos_filename_unix2dos>:
/*
* Fill the dos filename string with blanks. These are DOS's pad
* characters.
*/
for (i = 0; i <= 10; i++)
59a20: 4280 clrl %d0
* Convert a unix filename to a DOS filename. Return -1 if wrong name is
* supplied.
*/
int
msdos_filename_unix2dos(const char *un, int unlen, char *dn)
{
59a22: 4e56 ffe8 linkw %fp,#-24
59a26: 226e 0008 moveal %fp@(8),%a1
59a2a: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
59a2e: 246e 0010 moveal %fp@(16),%a2
59a32: 204a moveal %a2,%a0
59a34: 222e 000c movel %fp@(12),%d1
/*
* Fill the dos filename string with blanks. These are DOS's pad
* characters.
*/
for (i = 0; i <= 10; i++)
59a38: 5280 addql #1,%d0
59a3a: 740b moveq #11,%d2
dn[i] = ' ';
59a3c: 10fc 0020 moveb #32,%a0@+
/*
* Fill the dos filename string with blanks. These are DOS's pad
* characters.
*/
for (i = 0; i <= 10; i++)
59a40: b480 cmpl %d0,%d2
59a42: 66f4 bnes 59a38 <msdos_filename_unix2dos+0x18>
/*
* The filenames "." and ".." are handled specially, since they
* don't follow dos filename rules.
*/
if (un[0] == '.' && unlen == 1) {
59a44: 762e moveq #46,%d3
59a46: 1011 moveb %a1@,%d0
59a48: 1400 moveb %d0,%d2
59a4a: 49c2 extbl %d2
59a4c: b682 cmpl %d2,%d3
59a4e: 6700 00f8 beqw 59b48 <msdos_filename_unix2dos+0x128>
}
/*
* Remove any dots from the start of a file name.
*/
while (unlen && (*un == '.')) {
59a52: 4a81 tstl %d1
59a54: 6700 00e8 beqw 59b3e <msdos_filename_unix2dos+0x11e>
* Copy the unix filename into the dos filename string upto the end
* of string, a '.', or 8 characters. Whichever happens first stops
* us. This forms the name portion of the dos filename. Fold to
* upper case.
*/
for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {
59a58: 1400 moveb %d0,%d2
59a5a: 6700 00e2 beqw 59b3e <msdos_filename_unix2dos+0x11e>
if (msdos_map[c] == 0)
59a5e: 47f9 0006 a11e lea 6a11e <msdos_map>,%a3
59a64: 0280 0000 00ff andil #255,%d0
59a6a: 1633 0800 moveb %a3@(00000000,%d0:l),%d3
59a6e: 6700 011c beqw 59b8c <msdos_filename_unix2dos+0x16c>
break;
dn[i] = msdos_map[c];
59a72: 204a moveal %a2,%a0
un++;
unlen--;
59a74: 2001 movel %d1,%d0
*/
for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {
if (msdos_map[c] == 0)
break;
dn[i] = msdos_map[c];
un++;
59a76: 2809 movel %a1,%d4
unlen--;
59a78: 5380 subql #1,%d0
*/
for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {
if (msdos_map[c] == 0)
break;
dn[i] = msdos_map[c];
un++;
59a7a: 5284 addql #1,%d4
/*
* Convert a unix filename to a DOS filename. Return -1 if wrong name is
* supplied.
*/
int
msdos_filename_unix2dos(const char *un, int unlen, char *dn)
59a7c: 5181 subql #8,%d1
* upper case.
*/
for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {
if (msdos_map[c] == 0)
break;
dn[i] = msdos_map[c];
59a7e: 10c3 moveb %d3,%a0@+
59a80: 2244 moveal %d4,%a1
59a82: 5284 addql #1,%d4
* Copy the unix filename into the dos filename string upto the end
* of string, a '.', or 8 characters. Whichever happens first stops
* us. This forms the name portion of the dos filename. Fold to
* upper case.
*/
for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {
59a84: 4a80 tstl %d0
59a86: 6700 00b6 beqw 59b3e <msdos_filename_unix2dos+0x11e>
59a8a: 4283 clrl %d3
59a8c: 1411 moveb %a1@,%d2
59a8e: 1602 moveb %d2,%d3
59a90: 6700 00ac beqw 59b3e <msdos_filename_unix2dos+0x11e>
59a94: 7a2e moveq #46,%d5
59a96: ba83 cmpl %d3,%d5
59a98: 671a beqs 59ab4 <msdos_filename_unix2dos+0x94>
if (msdos_map[c] == 0)
59a9a: 1633 3800 moveb %a3@(00000000,%d3:l),%d3
59a9e: 6714 beqs 59ab4 <msdos_filename_unix2dos+0x94> <== NEVER TAKEN
break;
dn[i] = msdos_map[c];
un++;
unlen--;
59aa0: 5380 subql #1,%d0
* upper case.
*/
for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {
if (msdos_map[c] == 0)
break;
dn[i] = msdos_map[c];
59aa2: 10c3 moveb %d3,%a0@+
* Copy the unix filename into the dos filename string upto the end
* of string, a '.', or 8 characters. Whichever happens first stops
* us. This forms the name portion of the dos filename. Fold to
* upper case.
*/
for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {
59aa4: b280 cmpl %d0,%d1
59aa6: 66d8 bnes 59a80 <msdos_filename_unix2dos+0x60> <== ALWAYS TAKEN
/*
* Strip any further characters up to a '.' or the end of the
* string.
*/
while (unlen && (c = *un)) {
59aa8: 4a80 tstl %d0 <== NOT EXECUTED
59aaa: 6700 0092 beqw 59b3e <msdos_filename_unix2dos+0x11e> <== NOT EXECUTED
59aae: 1429 0001 moveb %a1@(1),%d2 <== NOT EXECUTED
*/
for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {
if (msdos_map[c] == 0)
break;
dn[i] = msdos_map[c];
un++;
59ab2: 2244 moveal %d4,%a1 <== NOT EXECUTED
/*
* Strip any further characters up to a '.' or the end of the
* string.
*/
while (unlen && (c = *un)) {
59ab4: 4a02 tstb %d2
59ab6: 6700 0086 beqw 59b3e <msdos_filename_unix2dos+0x11e>
un++;
unlen--;
59aba: 2200 movel %d0,%d1
/*
* Strip any further characters up to a '.' or the end of the
* string.
*/
while (unlen && (c = *un)) {
un++;
59abc: 5289 addql #1,%a1
unlen--;
59abe: 5381 subql #1,%d1
/* Make sure we've skipped over the dot before stopping. */
if (c == '.')
59ac0: 762e moveq #46,%d3
59ac2: 0282 0000 00ff andil #255,%d2
59ac8: b682 cmpl %d2,%d3
59aca: 671c beqs 59ae8 <msdos_filename_unix2dos+0xc8> <== ALWAYS TAKEN
59acc: 2009 movel %a1,%d0 <== NOT EXECUTED
59ace: 2040 moveal %d0,%a0 <== NOT EXECUTED
59ad0: 5280 addql #1,%d0 <== NOT EXECUTED
/*
* Strip any further characters up to a '.' or the end of the
* string.
*/
while (unlen && (c = *un)) {
un++;
59ad2: 2240 moveal %d0,%a1 <== NOT EXECUTED
/*
* Strip any further characters up to a '.' or the end of the
* string.
*/
while (unlen && (c = *un)) {
59ad4: 4a81 tstl %d1 <== NOT EXECUTED
59ad6: 6766 beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NOT EXECUTED
un++;
unlen--;
/* Make sure we've skipped over the dot before stopping. */
if (c == '.')
59ad8: 4283 clrl %d3 <== NOT EXECUTED
* Strip any further characters up to a '.' or the end of the
* string.
*/
while (unlen && (c = *un)) {
un++;
unlen--;
59ada: 5381 subql #1,%d1 <== NOT EXECUTED
/*
* Strip any further characters up to a '.' or the end of the
* string.
*/
while (unlen && (c = *un)) {
59adc: 1410 moveb %a0@,%d2 <== NOT EXECUTED
un++;
unlen--;
/* Make sure we've skipped over the dot before stopping. */
if (c == '.')
59ade: 1602 moveb %d2,%d3 <== NOT EXECUTED
/*
* Strip any further characters up to a '.' or the end of the
* string.
*/
while (unlen && (c = *un)) {
59ae0: 675c beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NOT EXECUTED
un++;
unlen--;
/* Make sure we've skipped over the dot before stopping. */
if (c == '.')
59ae2: 742e moveq #46,%d2 <== NOT EXECUTED
59ae4: b483 cmpl %d3,%d2 <== NOT EXECUTED
59ae6: 66e6 bnes 59ace <msdos_filename_unix2dos+0xae> <== NOT EXECUTED
/*
* Copy in the extension part of the name, if any. Force to upper
* case. Note that the extension is allowed to contain '.'s.
* Filenames in this form are probably inaccessable under dos.
*/
for (i = 8; i <= 10 && unlen && (c = *un); i++) {
59ae8: 4a81 tstl %d1
59aea: 6752 beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NEVER TAKEN
59aec: 1011 moveb %a1@,%d0
59aee: 674e beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NEVER TAKEN
if (msdos_map[c] == 0)
59af0: 41f9 0006 a11e lea 6a11e <msdos_map>,%a0
59af6: 0280 0000 00ff andil #255,%d0
59afc: 1033 0800 moveb %a3@(00000000,%d0:l),%d0
59b00: 673c beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NEVER TAKEN
/*
* Copy in the extension part of the name, if any. Force to upper
* case. Note that the extension is allowed to contain '.'s.
* Filenames in this form are probably inaccessable under dos.
*/
for (i = 8; i <= 10 && unlen && (c = *un); i++) {
59b02: 7a01 moveq #1,%d5
if (msdos_map[c] == 0)
break;
dn[i] = msdos_map[c];
59b04: 1540 0008 moveb %d0,%a2@(8)
/*
* Copy in the extension part of the name, if any. Force to upper
* case. Note that the extension is allowed to contain '.'s.
* Filenames in this form are probably inaccessable under dos.
*/
for (i = 8; i <= 10 && unlen && (c = *un); i++) {
59b08: ba81 cmpl %d1,%d5
59b0a: 6732 beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NEVER TAKEN
59b0c: 1029 0001 moveb %a1@(1),%d0
59b10: 672c beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NEVER TAKEN
if (msdos_map[c] == 0)
59b12: 0280 0000 00ff andil #255,%d0
59b18: 1030 0800 moveb %a0@(00000000,%d0:l),%d0
59b1c: 6720 beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NEVER TAKEN
break;
dn[i] = msdos_map[c];
59b1e: 1540 0009 moveb %d0,%a2@(9)
/*
* Copy in the extension part of the name, if any. Force to upper
* case. Note that the extension is allowed to contain '.'s.
* Filenames in this form are probably inaccessable under dos.
*/
for (i = 8; i <= 10 && unlen && (c = *un); i++) {
59b22: 7002 moveq #2,%d0
59b24: b081 cmpl %d1,%d0
59b26: 6716 beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NEVER TAKEN
59b28: 1029 0002 moveb %a1@(2),%d0
59b2c: 6710 beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NEVER TAKEN
if (msdos_map[c] == 0)
59b2e: 0280 0000 00ff andil #255,%d0
59b34: 1030 0800 moveb %a0@(00000000,%d0:l),%d0
59b38: 6704 beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NEVER TAKEN
break;
dn[i] = msdos_map[c];
59b3a: 1540 000a moveb %d0,%a2@(10)
un++;
unlen--;
}
return 0;
}
59b3e: 4280 clrl %d0
59b40: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3
59b44: 4e5e unlk %fp
59b46: 4e75 rts
/*
* The filenames "." and ".." are handled specially, since they
* don't follow dos filename rules.
*/
if (un[0] == '.' && unlen == 1) {
59b48: 7a01 moveq #1,%d5 <== NOT EXECUTED
59b4a: ba81 cmpl %d1,%d5 <== NOT EXECUTED
59b4c: 6730 beqs 59b7e <msdos_filename_unix2dos+0x15e> <== NOT EXECUTED
dn[0] = '.';
return 0;
}
if (un[0] == '.' && un[1] == '.' && unlen == 2) {
59b4e: 742e moveq #46,%d2 <== NOT EXECUTED
59b50: 1029 0001 moveb %a1@(1),%d0 <== NOT EXECUTED
59b54: 49c0 extbl %d0 <== NOT EXECUTED
59b56: b480 cmpl %d0,%d2 <== NOT EXECUTED
59b58: 6606 bnes 59b60 <msdos_filename_unix2dos+0x140> <== NOT EXECUTED
59b5a: 7602 moveq #2,%d3 <== NOT EXECUTED
59b5c: b681 cmpl %d1,%d3 <== NOT EXECUTED
59b5e: 6732 beqs 59b92 <msdos_filename_unix2dos+0x172> <== NOT EXECUTED
/*
* Convert a unix filename to a DOS filename. Return -1 if wrong name is
* supplied.
*/
int
msdos_filename_unix2dos(const char *un, int unlen, char *dn)
59b60: 41e9 0001 lea %a1@(1),%a0 <== NOT EXECUTED
}
/*
* Remove any dots from the start of a file name.
*/
while (unlen && (*un == '.')) {
59b64: 4a81 tstl %d1 <== NOT EXECUTED
59b66: 67d6 beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NOT EXECUTED
un++;
59b68: 2248 moveal %a0,%a1 <== NOT EXECUTED
unlen--;
59b6a: 5381 subql #1,%d1 <== NOT EXECUTED
}
/*
* Remove any dots from the start of a file name.
*/
while (unlen && (*un == '.')) {
59b6c: 67d0 beqs 59b3e <msdos_filename_unix2dos+0x11e> <== NOT EXECUTED
59b6e: 762e moveq #46,%d3 <== NOT EXECUTED
59b70: 1018 moveb %a0@+,%d0 <== NOT EXECUTED
59b72: 1400 moveb %d0,%d2 <== NOT EXECUTED
59b74: 49c2 extbl %d2 <== NOT EXECUTED
59b76: b682 cmpl %d2,%d3 <== NOT EXECUTED
59b78: 67ee beqs 59b68 <msdos_filename_unix2dos+0x148> <== NOT EXECUTED
59b7a: 6000 fedc braw 59a58 <msdos_filename_unix2dos+0x38> <== NOT EXECUTED
dn[i] = msdos_map[c];
un++;
unlen--;
}
return 0;
}
59b7e: 4280 clrl %d0 <== NOT EXECUTED
/*
* The filenames "." and ".." are handled specially, since they
* don't follow dos filename rules.
*/
if (un[0] == '.' && unlen == 1) {
dn[0] = '.';
59b80: 14bc 002e moveb #46,%a2@ <== NOT EXECUTED
dn[i] = msdos_map[c];
un++;
unlen--;
}
return 0;
}
59b84: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3 <== NOT EXECUTED
59b88: 4e5e unlk %fp <== NOT EXECUTED
59b8a: 4e75 rts <== NOT EXECUTED
* of string, a '.', or 8 characters. Whichever happens first stops
* us. This forms the name portion of the dos filename. Fold to
* upper case.
*/
for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {
if (msdos_map[c] == 0)
59b8c: 2001 movel %d1,%d0 <== NOT EXECUTED
59b8e: 6000 ff24 braw 59ab4 <msdos_filename_unix2dos+0x94> <== NOT EXECUTED
dn[i] = msdos_map[c];
un++;
unlen--;
}
return 0;
}
59b92: 4280 clrl %d0 <== NOT EXECUTED
dn[0] = '.';
return 0;
}
if (un[0] == '.' && un[1] == '.' && unlen == 2) {
dn[0] = '.';
dn[1] = '.';
59b94: 7a2e moveq #46,%d5 <== NOT EXECUTED
if (un[0] == '.' && unlen == 1) {
dn[0] = '.';
return 0;
}
if (un[0] == '.' && un[1] == '.' && unlen == 2) {
dn[0] = '.';
59b96: 14bc 002e moveb #46,%a2@ <== NOT EXECUTED
dn[1] = '.';
59b9a: 1545 0001 moveb %d5,%a2@(1) <== NOT EXECUTED
dn[i] = msdos_map[c];
un++;
unlen--;
}
return 0;
}
59b9e: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3 <== NOT EXECUTED
59ba2: 4e5e unlk %fp <== NOT EXECUTED
...
000586c4 <msdos_find_name>:
msdos_find_name(
rtems_filesystem_location_info_t *parent_loc,
const char *name,
int name_len
)
{
586c4: 4e56 ffb0 linkw %fp,#-80
586c8: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
586cc: 266e 0008 moveal %fp@(8),%a3
fat_dir_pos_t dir_pos;
unsigned short time_val = 0;
unsigned short date = 0;
char node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE];
memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
586d0: 45ee ffe0 lea %fp@(-32),%a2
const char *name,
int name_len
)
{
int rc = RC_OK;
msdos_fs_info_t *fs_info = parent_loc->mt_entry->fs_info;
586d4: 206b 0014 moveal %a3@(20),%a0
586d8: 2868 0008 moveal %a0@(8),%a4
unsigned short date = 0;
char node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE];
memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
name_type = msdos_long_to_short (name,
586dc: 4878 000b pea b <LASTO+0x1>
msdos_find_name(
rtems_filesystem_location_info_t *parent_loc,
const char *name,
int name_len
)
{
586e0: 262e 0010 movel %fp@(16),%d3
unsigned short date = 0;
char node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE];
memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
name_type = msdos_long_to_short (name,
586e4: 2f0a movel %a2,%sp@-
msdos_find_name(
rtems_filesystem_location_info_t *parent_loc,
const char *name,
int name_len
)
{
586e6: 242e 000c movel %fp@(12),%d2
unsigned short date = 0;
char node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE];
memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
name_type = msdos_long_to_short (name,
586ea: 2f03 movel %d3,%sp@-
586ec: 2f02 movel %d2,%sp@-
int name_len
)
{
int rc = RC_OK;
msdos_fs_info_t *fs_info = parent_loc->mt_entry->fs_info;
fat_file_fd_t *fat_fd = NULL;
586ee: 42ae ffcc clrl %fp@(-52)
fat_dir_pos_t dir_pos;
unsigned short time_val = 0;
unsigned short date = 0;
char node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE];
memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
586f2: 4292 clrl %a2@
586f4: 42ae ffe4 clrl %fp@(-28)
586f8: 42ae ffe8 clrl %fp@(-24)
586fc: 42ae ffec clrl %fp@(-20)
58700: 42ae fff0 clrl %fp@(-16)
58704: 42ae fff4 clrl %fp@(-12)
58708: 42ae fff8 clrl %fp@(-8)
5870c: 42ae fffc clrl %fp@(-4)
name_type = msdos_long_to_short (name,
58710: 4eb9 0005 7050 jsr 57050 <msdos_long_to_short>
/*
* find the node which correspondes to the name in the directory pointed by
* 'parent_loc'
*/
rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,
58716: 2f0a movel %a2,%sp@-
58718: 486e ffd0 pea %fp@(-48)
5871c: 2f00 movel %d0,%sp@-
5871e: 2f03 movel %d3,%sp@-
58720: 2f02 movel %d2,%sp@-
58722: 42a7 clrl %sp@-
58724: 2f0b movel %a3,%sp@-
58726: 4eb9 0005 85f8 jsr 585f8 <msdos_get_name_node>
&dir_pos, node_entry);
if (rc != RC_OK)
5872c: 4fef 002c lea %sp@(44),%sp
/*
* find the node which correspondes to the name in the directory pointed by
* 'parent_loc'
*/
rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,
58730: 2440 moveal %d0,%a2
&dir_pos, node_entry);
if (rc != RC_OK)
58732: 4a80 tstl %d0
58734: 6610 bnes 58746 <msdos_find_name+0x82>
return rc;
if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||
58736: 7208 moveq #8,%d1
((*MSDOS_DIR_ATTR(node_entry) & MSDOS_ATTR_LFN_MASK) == MSDOS_ATTR_LFN))
return MSDOS_NAME_NOT_FOUND_ERR;
58738: 347c 7d01 moveaw #32001,%a2
rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,
&dir_pos, node_entry);
if (rc != RC_OK)
return rc;
if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||
5873c: 102e ffeb moveb %fp@(-21),%d0
58740: c280 andl %d0,%d1
58742: 4a01 tstb %d1
58744: 670c beqs 58752 <msdos_find_name+0x8e> <== ALWAYS TAKEN
/* update node_info_ptr field */
parent_loc->node_access = fat_fd;
return rc;
}
58746: 200a movel %a2,%d0
58748: 4cee 3c1c ffb0 moveml %fp@(-80),%d2-%d4/%a2-%a5
5874e: 4e5e unlk %fp
58750: 4e75 rts
rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,
&dir_pos, node_entry);
if (rc != RC_OK)
return rc;
if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||
58752: 723f moveq #63,%d1
58754: 760f moveq #15,%d3
58756: c081 andl %d1,%d0
58758: b680 cmpl %d0,%d3
5875a: 67ea beqs 58746 <msdos_find_name+0x82> <== NEVER TAKEN
((*MSDOS_DIR_ATTR(node_entry) & MSDOS_ATTR_LFN_MASK) == MSDOS_ATTR_LFN))
return MSDOS_NAME_NOT_FOUND_ERR;
/* open fat-file corresponded to the found node */
rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);
5875c: 486e ffcc pea %fp@(-52)
58760: 486e ffd0 pea %fp@(-48)
58764: 2f0c movel %a4,%sp@-
58766: 4eb9 0005 1914 jsr 51914 <fat_file_open>
if (rc != RC_OK)
5876c: 4fef 000c lea %sp@(12),%sp
if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||
((*MSDOS_DIR_ATTR(node_entry) & MSDOS_ATTR_LFN_MASK) == MSDOS_ATTR_LFN))
return MSDOS_NAME_NOT_FOUND_ERR;
/* open fat-file corresponded to the found node */
rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);
58770: 2440 moveal %d0,%a2
if (rc != RC_OK)
58772: 4a80 tstl %d0
58774: 66d0 bnes 58746 <msdos_find_name+0x82> <== NEVER TAKEN
return rc;
fat_fd->dir_pos = dir_pos;
58776: 246e ffcc moveal %fp@(-52),%a2
* size and first cluster num to the disk after each write operation
* (even if one byte is written - that is TOO slow) because
* otherwise real values of these fields stored in fat-file descriptor
* may be accidentally rewritten with wrong values stored on the disk
*/
if (fat_fd->links_num == 1)
5877a: 7801 moveq #1,%d4
/* open fat-file corresponded to the found node */
rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);
if (rc != RC_OK)
return rc;
fat_fd->dir_pos = dir_pos;
5877c: 256e ffd0 0020 movel %fp@(-48),%a2@(32)
58782: 256e ffd4 0024 movel %fp@(-44),%a2@(36)
58788: 256e ffd8 0028 movel %fp@(-40),%a2@(40)
5878e: 256e ffdc 002c movel %fp@(-36),%a2@(44)
* size and first cluster num to the disk after each write operation
* (even if one byte is written - that is TOO slow) because
* otherwise real values of these fields stored in fat-file descriptor
* may be accidentally rewritten with wrong values stored on the disk
*/
if (fat_fd->links_num == 1)
58794: b8aa 0008 cmpl %a2@(8),%d4
58798: 672a beqs 587c4 <msdos_find_name+0x100> <== ALWAYS TAKEN
fat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
}
}
/* close fat-file corresponded to the node we searched in */
rc = fat_file_close(&fs_info->fat, parent_loc->node_access);
5879a: 2f2b 0008 movel %a3@(8),%sp@-
5879e: 4bf9 0005 1f16 lea 51f16 <fat_file_close>,%a5
587a4: 2f0c movel %a4,%sp@-
587a6: 4e95 jsr %a5@
if (rc != RC_OK)
587a8: 508f addql #8,%sp
fat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
}
}
/* close fat-file corresponded to the node we searched in */
rc = fat_file_close(&fs_info->fat, parent_loc->node_access);
587aa: 2440 moveal %d0,%a2
if (rc != RC_OK)
587ac: 4a80 tstl %d0
587ae: 6600 00da bnew 5888a <msdos_find_name+0x1c6>
/* update node_info_ptr field */
parent_loc->node_access = fat_fd;
return rc;
}
587b2: 200a movel %a2,%d0
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
/* update node_info_ptr field */
parent_loc->node_access = fat_fd;
587b4: 276e ffcc 0008 movel %fp@(-52),%a3@(8)
return rc;
}
587ba: 4cee 3c1c ffb0 moveml %fp@(-80),%d2-%d4/%a2-%a5
587c0: 4e5e unlk %fp
587c2: 4e75 rts
587c4: 4283 clrl %d3
587c6: 4281 clrl %d1
587c8: 362e fff4 movew %fp@(-12),%d3
587cc: 322e fffa movew %fp@(-6),%d1
587d0: 2003 movel %d3,%d0
587d2: 2401 movel %d1,%d2
587d4: 2803 movel %d3,%d4
587d6: e08c lsrl #8,%d4
587d8: e089 lsrl #8,%d1
587da: e188 lsll #8,%d0
587dc: e18a lsll #8,%d2
587de: 362e fff6 movew %fp@(-10),%d3
587e2: 8084 orl %d4,%d0
587e4: 8481 orl %d1,%d2
587e6: 2203 movel %d3,%d1
587e8: 2803 movel %d3,%d4
587ea: e08c lsrl #8,%d4
* otherwise real values of these fields stored in fat-file descriptor
* may be accidentally rewritten with wrong values stored on the disk
*/
if (fat_fd->links_num == 1)
{
fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(node_entry);
587ec: 4840 swap %d0
587ee: 4240 clrw %d0
587f0: 0282 0000 ffff andil #65535,%d2
587f6: e189 lsll #8,%d1
587f8: 362e fff8 movew %fp@(-8),%d3
587fc: 8082 orl %d2,%d0
587fe: 8284 orl %d4,%d1
58800: 2540 001c movel %d0,%a2@(28)
58804: 2003 movel %d3,%d0
time_val = *MSDOS_DIR_WRITE_TIME(node_entry);
date = *MSDOS_DIR_WRITE_DATE(node_entry);
fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
58806: 3f01 movew %d1,%sp@-
58808: 2203 movel %d3,%d1
5880a: e089 lsrl #8,%d1
5880c: e188 lsll #8,%d0
5880e: 4267 clrw %sp@-
58810: 8081 orl %d1,%d0
58812: 3f00 movew %d0,%sp@-
58814: 4267 clrw %sp@-
58816: 4eb9 0005 991e jsr 5991e <msdos_date_dos2unix>
if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)
5881c: 508f addql #8,%sp
5881e: 7210 moveq #16,%d1
fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(node_entry);
time_val = *MSDOS_DIR_WRITE_TIME(node_entry);
date = *MSDOS_DIR_WRITE_DATE(node_entry);
fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
58820: 2540 003e movel %d0,%a2@(62)
if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)
58824: 102e ffeb moveb %fp@(-21),%d0
58828: c081 andl %d1,%d0
5882a: 4a00 tstb %d0
5882c: 667c bnes 588aa <msdos_find_name+0x1e6> <== NEVER TAKEN
return rc;
}
}
else
{
fat_fd->fat_file_size = CF_LE_L(*MSDOS_DIR_FILE_SIZE(node_entry));
5882e: 222e fffc movel %fp@(-4),%d1
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
58832: 7818 moveq #24,%d4
58834: 2601 movel %d1,%d3
byte3 = (value >> 16) & 0xff;
58836: 2401 movel %d1,%d2
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
58838: 2001 movel %d1,%d0
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
5883a: e8ab lsrl %d4,%d3
byte3 = (value >> 16) & 0xff;
5883c: e08a lsrl #8,%d2
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
5883e: e9a8 lsll %d4,%d0
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
58840: e189 lsll #8,%d1
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
58842: 0282 0000 ff00 andil #65280,%d2
58848: 8083 orl %d3,%d0
5884a: 206e ffcc moveal %fp@(-52),%a0
fat_fd->fat_file_type = FAT_FILE;
5884e: 7604 moveq #4,%d3
fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;
58850: 78ff moveq #-1,%d4
58852: 0281 00ff 0000 andil #16711680,%d1
}
}
else
{
fat_fd->fat_file_size = CF_LE_L(*MSDOS_DIR_FILE_SIZE(node_entry));
fat_fd->fat_file_type = FAT_FILE;
58858: 2143 0010 movel %d3,%a0@(16)
5885c: 8081 orl %d1,%d0
fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;
5885e: 2144 0014 movel %d4,%a0@(20)
58862: 8082 orl %d2,%d0
return rc;
}
}
else
{
fat_fd->fat_file_size = CF_LE_L(*MSDOS_DIR_FILE_SIZE(node_entry));
58864: 2140 0018 movel %d0,%a0@(24)
fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;
}
/* these data is not actual for zero-length fat-file */
fat_fd->map.file_cln = 0;
fat_fd->map.disk_cln = fat_fd->cln;
58868: 2228 001c movel %a0@(28),%d1
fat_fd->fat_file_type = FAT_FILE;
fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;
}
/* these data is not actual for zero-length fat-file */
fat_fd->map.file_cln = 0;
5886c: 42a8 0032 clrl %a0@(50)
fat_fd->map.disk_cln = fat_fd->cln;
58870: 2141 0036 movel %d1,%a0@(54)
if ((fat_fd->fat_file_size != 0) &&
58874: 4a80 tstl %d0
58876: 6728 beqs 588a0 <msdos_find_name+0x1dc> <== ALWAYS TAKEN
(fat_fd->fat_file_size <= fs_info->fat.vol.bpc))
58878: 4282 clrl %d2 <== NOT EXECUTED
5887a: 342c 0006 movew %a4@(6),%d2 <== NOT EXECUTED
/* these data is not actual for zero-length fat-file */
fat_fd->map.file_cln = 0;
fat_fd->map.disk_cln = fat_fd->cln;
if ((fat_fd->fat_file_size != 0) &&
5887e: b082 cmpl %d2,%d0 <== NOT EXECUTED
58880: 621e bhis 588a0 <msdos_find_name+0x1dc> <== NOT EXECUTED
(fat_fd->fat_file_size <= fs_info->fat.vol.bpc))
{
fat_fd->map.last_cln = fat_fd->cln;
58882: 2141 003a movel %d1,%a0@(58) <== NOT EXECUTED
58886: 6000 ff12 braw 5879a <msdos_find_name+0xd6> <== NOT EXECUTED
/* close fat-file corresponded to the node we searched in */
rc = fat_file_close(&fs_info->fat, parent_loc->node_access);
if (rc != RC_OK)
{
fat_file_close(&fs_info->fat, fat_fd);
5888a: 2f2e ffcc movel %fp@(-52),%sp@- <== NOT EXECUTED
5888e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
58890: 4e95 jsr %a5@ <== NOT EXECUTED
58892: 508f addql #8,%sp <== NOT EXECUTED
/* update node_info_ptr field */
parent_loc->node_access = fat_fd;
return rc;
}
58894: 200a movel %a2,%d0 <== NOT EXECUTED
58896: 4cee 3c1c ffb0 moveml %fp@(-80),%d2-%d4/%a2-%a5 <== NOT EXECUTED
5889c: 4e5e unlk %fp <== NOT EXECUTED
5889e: 4e75 rts <== NOT EXECUTED
{
fat_fd->map.last_cln = fat_fd->cln;
}
else
{
fat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
588a0: 70ff moveq #-1,%d0
588a2: 2140 003a movel %d0,%a0@(58)
588a6: 6000 fef2 braw 5879a <msdos_find_name+0xd6>
fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)
{
fat_fd->fat_file_type = FAT_DIRECTORY;
588aa: 206e ffcc moveal %fp@(-52),%a0 <== NOT EXECUTED
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
588ae: 7620 moveq #32,%d3 <== NOT EXECUTED
588b0: 4843 swap %d3 <== NOT EXECUTED
fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)
{
fat_fd->fat_file_type = FAT_DIRECTORY;
588b2: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
588b6: 2143 0014 movel %d3,%a0@(20) <== NOT EXECUTED
rc = fat_file_size(&fs_info->fat, fat_fd);
588ba: 2f08 movel %a0,%sp@- <== NOT EXECUTED
588bc: 2f0c movel %a4,%sp@- <== NOT EXECUTED
588be: 4eb9 0005 2680 jsr 52680 <fat_file_size> <== NOT EXECUTED
if (rc != RC_OK)
588c4: 508f addql #8,%sp <== NOT EXECUTED
if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)
{
fat_fd->fat_file_type = FAT_DIRECTORY;
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
rc = fat_file_size(&fs_info->fat, fat_fd);
588c6: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (rc != RC_OK)
588c8: 4a80 tstl %d0 <== NOT EXECUTED
588ca: 660a bnes 588d6 <msdos_find_name+0x212> <== NOT EXECUTED
588cc: 206e ffcc moveal %fp@(-52),%a0 <== NOT EXECUTED
588d0: 2028 0018 movel %a0@(24),%d0 <== NOT EXECUTED
588d4: 6092 bras 58868 <msdos_find_name+0x1a4> <== NOT EXECUTED
{
fat_file_close(&fs_info->fat, fat_fd);
588d6: 2f2e ffcc movel %fp@(-52),%sp@- <== NOT EXECUTED
588da: 2f0c movel %a4,%sp@- <== NOT EXECUTED
588dc: 4eb9 0005 1f16 jsr 51f16 <fat_file_close> <== NOT EXECUTED
588e2: 508f addql #8,%sp <== NOT EXECUTED
/* update node_info_ptr field */
parent_loc->node_access = fat_fd;
return rc;
}
588e4: 200a movel %a2,%d0 <== NOT EXECUTED
588e6: 4cee 3c1c ffb0 moveml %fp@(-80),%d2-%d4/%a2-%a5 <== NOT EXECUTED
588ec: 4e5e unlk %fp <== NOT EXECUTED
0005782a <msdos_find_name_in_fat_file>:
int name_len,
msdos_name_type_t name_type,
fat_dir_pos_t *dir_pos,
char *name_dir_entry
)
{
5782a: 4e56 ffa0 linkw %fp,#-96
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
5782e: 206e 0008 moveal %fp@(8),%a0
57832: 2068 0008 moveal %a0@(8),%a0
int name_len,
msdos_name_type_t name_type,
fat_dir_pos_t *dir_pos,
char *name_dir_entry
)
{
57836: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
5783a: 2d48 ffe2 movel %a0,%fp@(-30)
int name_len,
msdos_name_type_t name_type,
fat_dir_pos_t *dir_pos,
char *name_dir_entry
)
{
5783e: 1a2e 0013 moveb %fp@(19),%d5
uint32_t empty_space_count = 0;
bool empty_space_found = false;
uint32_t entries_per_block;
bool read_cluster = false;
assert(name_len > 0);
57842: 4aae 0018 tstl %fp@(24)
57846: 6f00 0972 blew 581ba <msdos_find_name_in_fat_file+0x990>
static inline void
fat_dir_pos_init(
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
5784a: 206e 0020 moveal %fp@(32),%a0
dir_pos->sname.ofs = 0;
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
5784e: 70ff moveq #-1,%d0
static inline void
fat_dir_pos_init(
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
57850: 4290 clrl %a0@
dir_pos->sname.ofs = 0;
57852: 42a8 0004 clrl %a0@(4)
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
57856: 2140 0008 movel %d0,%a0@(8)
dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
5785a: 2140 000c movel %d0,%a0@(12)
fat_dir_pos_init(dir_pos);
lfn_start.cln = lfn_start.ofs = FAT_FILE_SHORT_NAME;
5785e: 2d40 fffc movel %d0,%fp@(-4)
57862: 2d40 fff8 movel %d0,%fp@(-8)
* is short still check for possible long entries with the short name.
*
* In PR1491 we need to have a LFN for a short file name entry. To
* test this make this test always fail, ie add "0 &&".
*/
if (create_node && (name_type == MSDOS_NAME_SHORT))
57866: 4a05 tstb %d5
57868: 670a beqs 57874 <msdos_find_name_in_fat_file+0x4a>
5786a: 7201 moveq #1,%d1
5786c: b2ae 001c cmpl %fp@(28),%d1
57870: 6700 047e beqw 57cf0 <msdos_find_name_in_fat_file+0x4c6>
lfn_entries = 0;
else
lfn_entries =
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
57874: 242e 0018 movel %fp@(24),%d2
* test this make this test always fail, ie add "0 &&".
*/
if (create_node && (name_type == MSDOS_NAME_SHORT))
lfn_entries = 0;
else
lfn_entries =
57878: 7c0d moveq #13,%d6
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
5787a: 0682 0000 000c addil #12,%d2
* test this make this test always fail, ie add "0 &&".
*/
if (create_node && (name_type == MSDOS_NAME_SHORT))
lfn_entries = 0;
else
lfn_entries =
57880: 4c46 2802 remsl %d6,%d2,%d2
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
57884: 206e 000c moveal %fp@(12),%a0
57888: 7001 moveq #1,%d0
* test this make this test always fail, ie add "0 &&".
*/
if (create_node && (name_type == MSDOS_NAME_SHORT))
lfn_entries = 0;
else
lfn_entries =
5788a: 2d42 ffd2 movel %d2,%fp@(-46)
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
5788e: b0a8 0020 cmpl %a0@(32),%d0
57892: 6700 03e0 beqw 57c74 <msdos_find_name_in_fat_file+0x44a>
/*
* Remainder is not empty so is this entry empty ?
*/
empty_space_count++;
if (empty_space_count == (lfn_entries + 1))
57896: 222e ffd2 movel %fp@(-46),%d1 <== NOT EXECUTED
5789a: 5281 addql #1,%d1 <== NOT EXECUTED
uint32_t bts2rd = 0;
fat_pos_t lfn_start;
bool lfn_matched = false;
uint8_t lfn_checksum = 0;
int lfn_entries;
int lfn_entry = 0;
5789c: 4287 clrl %d7 <== NOT EXECUTED
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
bts2rd = fat_fd->fat_file_size;
else
bts2rd = fs_info->fat.vol.bpc;
5789e: 4284 clrl %d4 <== NOT EXECUTED
uint8_t lfn_checksum = 0;
int lfn_entries;
int lfn_entry = 0;
uint32_t empty_space_offset = 0;
uint32_t empty_space_entry = 0;
uint32_t empty_space_count = 0;
578a0: 4283 clrl %d3 <== NOT EXECUTED
bool lfn_matched = false;
uint8_t lfn_checksum = 0;
int lfn_entries;
int lfn_entry = 0;
uint32_t empty_space_offset = 0;
uint32_t empty_space_entry = 0;
578a2: 9bcd subal %a5,%a5 <== NOT EXECUTED
char *name_dir_entry
)
{
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t dir_offset = 0;
578a4: 99cc subal %a4,%a4 <== NOT EXECUTED
578a6: 266e ffe2 moveal %fp@(-30),%a3 <== NOT EXECUTED
/*
* Remainder is not empty so is this entry empty ?
*/
empty_space_count++;
if (empty_space_count == (lfn_entries + 1))
578aa: 2d41 ffda movel %d1,%fp@(-38) <== NOT EXECUTED
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
bts2rd = fat_fd->fat_file_size;
else
bts2rd = fs_info->fat.vol.bpc;
578ae: 226e ffe2 moveal %fp@(-30),%a1 <== NOT EXECUTED
int lfn_entries;
int lfn_entry = 0;
uint32_t empty_space_offset = 0;
uint32_t empty_space_entry = 0;
uint32_t empty_space_count = 0;
bool empty_space_found = false;
578b2: 4202 clrb %d2 <== NOT EXECUTED
uint32_t dir_offset = 0;
uint32_t dir_entry = 0;
uint32_t bts2rd = 0;
fat_pos_t lfn_start;
bool lfn_matched = false;
uint8_t lfn_checksum = 0;
578b4: 4201 clrb %d1 <== NOT EXECUTED
578b6: 266b 0094 moveal %a3@(148),%a3 <== NOT EXECUTED
578ba: 2d47 ffea movel %d7,%fp@(-22) <== NOT EXECUTED
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
bts2rd = fat_fd->fat_file_size;
else
bts2rd = fs_info->fat.vol.bpc;
578be: 3829 0006 movew %a1@(6),%d4 <== NOT EXECUTED
int lfn_entries;
int lfn_entry = 0;
uint32_t empty_space_offset = 0;
uint32_t empty_space_entry = 0;
uint32_t empty_space_count = 0;
bool empty_space_found = false;
578c2: 1d42 ffe6 moveb %d2,%fp@(-26) <== NOT EXECUTED
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t dir_offset = 0;
uint32_t dir_entry = 0;
uint32_t bts2rd = 0;
fat_pos_t lfn_start;
bool lfn_matched = false;
578c6: 4206 clrb %d6 <== NOT EXECUTED
578c8: 1e01 moveb %d1,%d7 <== NOT EXECUTED
578ca: 2d4b ffde movel %a3,%fp@(-34) <== NOT EXECUTED
uint8_t lfn_checksum = 0;
int lfn_entries;
int lfn_entry = 0;
uint32_t empty_space_offset = 0;
578ce: 97cb subal %a3,%a3 <== NOT EXECUTED
/*
* Scan the directory seeing if the file is present. While
* doing this see if a suitable location can be found to
* create the entry if the name is not found.
*/
while ((ret = fat_file_read(&fs_info->fat, fat_fd, (dir_offset * bts2rd),
578d0: 42ae ffd6 clrl %fp@(-42) <== NOT EXECUTED
578d4: 2f2e ffde movel %fp@(-34),%sp@-
578d8: 2f04 movel %d4,%sp@-
578da: 2f2e ffd6 movel %fp@(-42),%sp@-
578de: 2f2e 000c movel %fp@(12),%sp@-
578e2: 2f2e ffe2 movel %fp@(-30),%sp@-
578e6: 4eb9 0005 1bd0 jsr 51bd0 <fat_file_read>
578ec: 4fef 0014 lea %sp@(20),%sp
578f0: 4a80 tstl %d0
578f2: 6700 08a8 beqw 5819c <msdos_find_name_in_fat_file+0x972>
bool remainder_empty = false;
#if MSDOS_FIND_PRINT
printf ("MSFS:[2] dir_offset:%li\n", dir_offset);
#endif
if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
578f6: 721f moveq #31,%d1
578f8: b280 cmpl %d0,%d1
578fa: 6c00 04fe bgew 57dfa <msdos_find_name_in_fat_file+0x5d0>
rtems_set_errno_and_return_minus_one(EIO);
assert(ret == bts2rd);
578fe: b880 cmpl %d0,%d4
57900: 6600 087e bnew 58180 <msdos_find_name_in_fat_file+0x956>
57904: 226e ffe2 moveal %fp@(-30),%a1
57908: 4282 clrl %d2
5790a: 2269 0094 moveal %a1@(148),%a1
5790e: 2449 moveal %a1,%a2
57910: 2d49 ffde movel %a1,%fp@(-34)
57914: 3246 moveaw %d6,%a1
/*
* See if the entry is empty or the remainder of the directory is
* empty ? Localise to make the code read better.
*/
bool entry_empty = (*MSDOS_DIR_ENTRY_TYPE(entry) ==
57916: 1212 moveb %a2@,%d1
* to here and write the long file name if this is the start of
* a series of empty entries. If empty_space_count is 0 then
* we are currently not inside an empty series of entries. It
* is a count of empty entries.
*/
if (empty_space_count == 0)
57918: 4a83 tstl %d3
5791a: 6604 bnes 57920 <msdos_find_name_in_fat_file+0xf6><== NEVER TAKEN
5791c: 2842 moveal %d2,%a4
5791e: 264d moveal %a5,%a3
{
empty_space_entry = dir_entry;
empty_space_offset = dir_offset;
}
if (remainder_empty)
57920: 4a01 tstb %d1
57922: 6700 02b8 beqw 57bdc <msdos_find_name_in_fat_file+0x3b2>
printf ("MSFS:[3.2] esf:%i esc%i\n", empty_space_found, empty_space_count);
#endif
}
break;
}
else if (entry_empty)
57926: 4280 clrl %d0
57928: 1001 moveb %d1,%d0
5792a: 0c80 0000 00e5 cmpil #229,%d0
57930: 6700 0156 beqw 57a88 <msdos_find_name_in_fat_file+0x25e>
* A valid entry so handle it.
*
* If empty space has not been found we need to start the
* count again.
*/
if (create_node && !empty_space_found)
57934: 4a05 tstb %d5
57936: 670a beqs 57942 <msdos_find_name_in_fat_file+0x118><== ALWAYS TAKEN
57938: 4a2e ffe6 tstb %fp@(-26) <== NOT EXECUTED
5793c: 6604 bnes 57942 <msdos_find_name_in_fat_file+0x118><== NOT EXECUTED
{
empty_space_entry = 0;
empty_space_count = 0;
5793e: 4283 clrl %d3 <== NOT EXECUTED
* If empty space has not been found we need to start the
* count again.
*/
if (create_node && !empty_space_found)
{
empty_space_entry = 0;
57940: 99cc subal %a4,%a4 <== NOT EXECUTED
/*
* Check the attribute to see if the entry is for a long
* file name.
*/
if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==
57942: 7c3f moveq #63,%d6
57944: 102a 000b moveb %a2@(11),%d0
57948: c086 andl %d6,%d0
5794a: 1c3c 000f moveb #15,%d6
5794e: bc80 cmpl %d0,%d6
57950: 6700 0160 beqw 57ab2 <msdos_find_name_in_fat_file+0x288>
* If a LFN has been found and it matched check the
* entries have all been found and the checksum is
* correct. If this is the case return the short file
* name entry.
*/
if (lfn_matched)
57954: 3c09 movew %a1,%d6
57956: 4a06 tstb %d6
57958: 674e beqs 579a8 <msdos_find_name_in_fat_file+0x17e><== ALWAYS TAKEN
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
5795a: 41ea 0001 lea %a2@(1),%a0 <== NOT EXECUTED
5795e: 43ea 000b lea %a2@(11),%a1 <== NOT EXECUTED
57962: 4200 clrb %d0 <== NOT EXECUTED
uint8_t cs = 0;
uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
int i;
for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
57964: 4206 clrb %d6 <== NOT EXECUTED
57966: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
5796c: d286 addl %d6,%d1 <== NOT EXECUTED
5796e: e288 lsrl #1,%d0 <== NOT EXECUTED
57970: d280 addl %d0,%d1 <== NOT EXECUTED
57972: 1001 moveb %d1,%d0 <== NOT EXECUTED
{
uint8_t cs = 0;
uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
int i;
for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
57974: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
57976: 671c beqs 57994 <msdos_find_name_in_fat_file+0x16a><== NOT EXECUTED
cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
57978: 0801 0000 btst #0,%d1 <== NOT EXECUTED
5797c: 6756 beqs 579d4 <msdos_find_name_in_fat_file+0x1aa><== NOT EXECUTED
5797e: 7c80 moveq #-128,%d6 <== NOT EXECUTED
57980: 1218 moveb %a0@+,%d1 <== NOT EXECUTED
57982: d286 addl %d6,%d1 <== NOT EXECUTED
57984: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
5798a: e288 lsrl #1,%d0 <== NOT EXECUTED
5798c: d280 addl %d0,%d1 <== NOT EXECUTED
5798e: 1001 moveb %d1,%d0 <== NOT EXECUTED
{
uint8_t cs = 0;
uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
int i;
for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
57990: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
57992: 66e4 bnes 57978 <msdos_find_name_in_fat_file+0x14e><== NOT EXECUTED
cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
if (lfn_entry || (lfn_checksum != cs))
57994: 4aae ffea tstl %fp@(-22) <== NOT EXECUTED
57998: 660e bnes 579a8 <msdos_find_name_in_fat_file+0x17e><== NOT EXECUTED
5799a: 4281 clrl %d1 <== NOT EXECUTED
5799c: 1207 moveb %d7,%d1 <== NOT EXECUTED
5799e: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
579a4: b280 cmpl %d0,%d1 <== NOT EXECUTED
579a6: 6752 beqs 579fa <msdos_find_name_in_fat_file+0x1d0><== NOT EXECUTED
* short and they match then we have the entry. We will not
* match a long file name against a short file name because
* a long file name that generates a matching short file
* name is not a long file name.
*/
if (lfn_matched ||
579a8: 7001 moveq #1,%d0
579aa: b0ae 001c cmpl %fp@(28),%d0
579ae: 672a beqs 579da <msdos_find_name_in_fat_file+0x1b0><== ALWAYS TAKEN
memcpy(name_dir_entry, entry,
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
return RC_OK;
}
lfn_start.cln = FAT_FILE_SHORT_NAME;
579b0: 70ff moveq #-1,%d0 <== NOT EXECUTED
lfn_matched = false;
579b2: 93c9 subal %a1,%a1 <== NOT EXECUTED
memcpy(name_dir_entry, entry,
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
return RC_OK;
}
lfn_start.cln = FAT_FILE_SHORT_NAME;
579b4: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
579b8: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
579be: 45ea 0020 lea %a2@(32),%a2 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
assert(ret == bts2rd);
/* have to look at the DIR_NAME as "raw" 8-bit data */
for (dir_entry = 0;
579c2: b484 cmpl %d4,%d2 <== NOT EXECUTED
579c4: 6500 ff50 bcsw 57916 <msdos_find_name_in_fat_file+0xec><== NOT EXECUTED
579c8: d9ae ffd6 addl %d4,%fp@(-42) <== NOT EXECUTED
}
if (remainder_empty)
break;
dir_offset++;
579cc: 528d addql #1,%a5 <== NOT EXECUTED
579ce: 3c09 movew %a1,%d6 <== NOT EXECUTED
579d0: 6000 ff02 braw 578d4 <msdos_find_name_in_fat_file+0xaa><== NOT EXECUTED
uint8_t cs = 0;
uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
int i;
for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
579d4: 4206 clrb %d6 <== NOT EXECUTED
579d6: 1218 moveb %a0@+,%d1 <== NOT EXECUTED
579d8: 60a8 bras 57982 <msdos_find_name_in_fat_file+0x158><== NOT EXECUTED
* match a long file name against a short file name because
* a long file name that generates a matching short file
* name is not a long file name.
*/
if (lfn_matched ||
((name_type == MSDOS_NAME_SHORT) &&
579da: 70ff moveq #-1,%d0
579dc: b0ae fff8 cmpl %fp@(-8),%d0
579e0: 66ce bnes 579b0 <msdos_find_name_in_fat_file+0x186><== NEVER TAKEN
(lfn_start.cln == FAT_FILE_SHORT_NAME) &&
(memcmp(MSDOS_DIR_NAME(entry),
579e2: 4878 000b pea b <LASTO+0x1>
579e6: 2f2e 0024 movel %fp@(36),%sp@-
579ea: 2f0a movel %a2,%sp@-
579ec: 4eb9 0005 b0f8 jsr 5b0f8 <memcmp>
579f2: 4fef 000c lea %sp@(12),%sp
* a long file name that generates a matching short file
* name is not a long file name.
*/
if (lfn_matched ||
((name_type == MSDOS_NAME_SHORT) &&
(lfn_start.cln == FAT_FILE_SHORT_NAME) &&
579f6: 4a80 tstl %d0
579f8: 66b6 bnes 579b0 <msdos_find_name_in_fat_file+0x186><== NEVER TAKEN
#endif
/*
* We get the entry we looked for - fill the position
* structure and the 32 bytes of the short entry
*/
int rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
579fa: 2f2e 0020 movel %fp@(32),%sp@-
579fe: 47f9 0005 2006 lea 52006 <fat_file_ioctl>,%a3
57a04: 2f2e ffd6 movel %fp@(-42),%sp@-
57a08: 4878 0001 pea 1 <ADD>
57a0c: 2f2e 000c movel %fp@(12),%sp@-
57a10: 2f2e ffe2 movel %fp@(-30),%sp@-
57a14: 4e93 jsr %a3@
dir_offset * bts2rd,
&dir_pos->sname.cln);
if (rc != RC_OK)
57a16: 4fef 0014 lea %sp@(20),%sp
#endif
/*
* We get the entry we looked for - fill the position
* structure and the 32 bytes of the short entry
*/
int rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
57a1a: 2c00 movel %d0,%d6
dir_offset * bts2rd,
&dir_pos->sname.cln);
if (rc != RC_OK)
57a1c: 665e bnes 57a7c <msdos_find_name_in_fat_file+0x252><== NEVER TAKEN
return rc;
dir_pos->sname.ofs = dir_entry;
57a1e: 206e 0020 moveal %fp@(32),%a0
if (lfn_start.cln != FAT_FILE_SHORT_NAME)
57a22: 72ff moveq #-1,%d1
57a24: 202e fff8 movel %fp@(-8),%d0
dir_offset * bts2rd,
&dir_pos->sname.cln);
if (rc != RC_OK)
return rc;
dir_pos->sname.ofs = dir_entry;
57a28: 2142 0004 movel %d2,%a0@(4)
if (lfn_start.cln != FAT_FILE_SHORT_NAME)
57a2c: b280 cmpl %d0,%d1
57a2e: 6700 02d6 beqw 57d06 <msdos_find_name_in_fat_file+0x4dc>
{
rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
57a32: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
57a36: 4c00 4800 mulsl %d0,%d4 <== NOT EXECUTED
57a3a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
57a3c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
57a40: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
57a44: 2f2e ffe2 movel %fp@(-30),%sp@- <== NOT EXECUTED
57a48: 4e93 jsr %a3@ <== NOT EXECUTED
lfn_start.cln * bts2rd,
&lfn_start.cln);
if (rc != RC_OK)
57a4a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
57a4e: 4a80 tstl %d0 <== NOT EXECUTED
57a50: 6600 0290 bnew 57ce2 <msdos_find_name_in_fat_file+0x4b8><== NOT EXECUTED
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
57a54: 226e 0020 moveal %fp@(32),%a1 <== NOT EXECUTED
57a58: 47ee fffc lea %fp@(-4),%a3 <== NOT EXECUTED
57a5c: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
memcpy(name_dir_entry, entry,
57a60: 206e 0024 moveal %fp@(36),%a0 <== NOT EXECUTED
if (rc != RC_OK)
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
57a64: 2353 000c movel %a3@,%a1@(12) <== NOT EXECUTED
&lfn_start.cln);
if (rc != RC_OK)
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
57a68: 2340 0008 movel %d0,%a1@(8) <== NOT EXECUTED
dir_pos->lname.ofs = lfn_start.ofs;
memcpy(name_dir_entry, entry,
57a6c: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
57a6e: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
57a70: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
57a72: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
57a74: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
57a76: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
57a78: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
57a7a: 2092 movel %a2@,%a0@ <== NOT EXECUTED
empty_space_entry = 0;
read_cluster = true;
}
return 0;
}
57a7c: 2006 movel %d6,%d0
57a7e: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5
57a84: 4e5e unlk %fp
57a86: 4e75 rts
}
break;
}
else if (entry_empty)
{
if (create_node)
57a88: 4a05 tstb %d5 <== NOT EXECUTED
57a8a: 6700 ff2c beqw 579b8 <msdos_find_name_in_fat_file+0x18e><== NOT EXECUTED
{
/*
* Remainder is not empty so is this entry empty ?
*/
empty_space_count++;
57a8e: 5283 addql #1,%d3 <== NOT EXECUTED
if (empty_space_count == (lfn_entries + 1))
57a90: b6ae ffda cmpl %fp@(-38),%d3 <== NOT EXECUTED
57a94: 6600 ff22 bnew 579b8 <msdos_find_name_in_fat_file+0x18e><== NOT EXECUTED
57a98: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
57a9e: 45ea 0020 lea %a2@(32),%a2 <== NOT EXECUTED
empty_space_found = true;
57aa2: 7201 moveq #1,%d1 <== NOT EXECUTED
57aa4: 1d41 ffe6 moveb %d1,%fp@(-26) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
assert(ret == bts2rd);
/* have to look at the DIR_NAME as "raw" 8-bit data */
for (dir_entry = 0;
57aa8: b484 cmpl %d4,%d2 <== NOT EXECUTED
57aaa: 6500 fe6a bcsw 57916 <msdos_find_name_in_fat_file+0xec><== NOT EXECUTED
57aae: 6000 ff18 braw 579c8 <msdos_find_name_in_fat_file+0x19e><== NOT EXECUTED
#endif
/*
* If we are not already processing a LFN see if this is
* the first entry of a LFN ?
*/
if (lfn_start.cln == FAT_FILE_SHORT_NAME)
57ab2: 70ff moveq #-1,%d0 <== NOT EXECUTED
57ab4: b0ae fff8 cmpl %fp@(-8),%d0 <== NOT EXECUTED
57ab8: 6724 beqs 57ade <msdos_find_name_in_fat_file+0x2b4><== NOT EXECUTED
* If the entry number or the check sum do not match
* forget this series of long directory entries. These
* could be orphaned entries depending on the history
* of the disk.
*/
if ((lfn_entry != (*MSDOS_DIR_ENTRY_TYPE(entry) &
57aba: 7c3f moveq #63,%d6 <== NOT EXECUTED
57abc: c286 andl %d6,%d1 <== NOT EXECUTED
57abe: b2ae ffea cmpl %fp@(-22),%d1 <== NOT EXECUTED
57ac2: 6746 beqs 57b0a <msdos_find_name_in_fat_file+0x2e0><== NOT EXECUTED
(lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry)))
{
#if MSDOS_FIND_PRINT
printf ("MSFS:[4.4] no match\n");
#endif
lfn_start.cln = FAT_FILE_SHORT_NAME;
57ac4: 70ff moveq #-1,%d0 <== NOT EXECUTED
57ac6: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
57acc: 45ea 0020 lea %a2@(32),%a2 <== NOT EXECUTED
57ad0: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
assert(ret == bts2rd);
/* have to look at the DIR_NAME as "raw" 8-bit data */
for (dir_entry = 0;
57ad4: b484 cmpl %d4,%d2 <== NOT EXECUTED
57ad6: 6500 fe3e bcsw 57916 <msdos_find_name_in_fat_file+0xec><== NOT EXECUTED
57ada: 6000 feec braw 579c8 <msdos_find_name_in_fat_file+0x19e><== NOT EXECUTED
/*
* The first entry must have the last long entry
* flag set.
*/
if ((*MSDOS_DIR_ENTRY_TYPE(entry) &
57ade: 7040 moveq #64,%d0 <== NOT EXECUTED
57ae0: c081 andl %d1,%d0 <== NOT EXECUTED
57ae2: 4a00 tstb %d0 <== NOT EXECUTED
57ae4: 670e beqs 57af4 <msdos_find_name_in_fat_file+0x2ca><== NOT EXECUTED
* entry match the number we expect for this
* file name. Note we do not know the number of
* characters in the entry so this is check further
* on when the characters are checked.
*/
if (lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &
57ae6: 1c3c 003f moveb #63,%d6 <== NOT EXECUTED
57aea: c286 andl %d6,%d1 <== NOT EXECUTED
57aec: b2ae ffd2 cmpl %fp@(-46),%d1 <== NOT EXECUTED
57af0: 6700 0150 beqw 57c42 <msdos_find_name_in_fat_file+0x418><== NOT EXECUTED
57af4: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
57afa: 45ea 0020 lea %a2@(32),%a2 <== NOT EXECUTED
* If we are not already processing a LFN see if this is
* the first entry of a LFN ?
*/
if (lfn_start.cln == FAT_FILE_SHORT_NAME)
{
lfn_matched = false;
57afe: 93c9 subal %a1,%a1 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
assert(ret == bts2rd);
/* have to look at the DIR_NAME as "raw" 8-bit data */
for (dir_entry = 0;
57b00: b484 cmpl %d4,%d2 <== NOT EXECUTED
57b02: 6500 fe12 bcsw 57916 <msdos_find_name_in_fat_file+0xec><== NOT EXECUTED
57b06: 6000 fec0 braw 579c8 <msdos_find_name_in_fat_file+0x19e><== NOT EXECUTED
* forget this series of long directory entries. These
* could be orphaned entries depending on the history
* of the disk.
*/
if ((lfn_entry != (*MSDOS_DIR_ENTRY_TYPE(entry) &
MSDOS_LAST_LONG_ENTRY_MASK)) ||
57b0a: 4286 clrl %d6 <== NOT EXECUTED
(lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry)))
57b0c: 102a 000d moveb %a2@(13),%d0 <== NOT EXECUTED
57b10: 1d40 ffee moveb %d0,%fp@(-18) <== NOT EXECUTED
* forget this series of long directory entries. These
* could be orphaned entries depending on the history
* of the disk.
*/
if ((lfn_entry != (*MSDOS_DIR_ENTRY_TYPE(entry) &
MSDOS_LAST_LONG_ENTRY_MASK)) ||
57b14: 4280 clrl %d0 <== NOT EXECUTED
57b16: 1007 moveb %d7,%d0 <== NOT EXECUTED
57b18: 1c2e ffee moveb %fp@(-18),%d6 <== NOT EXECUTED
57b1c: 2046 moveal %d6,%a0 <== NOT EXECUTED
57b1e: b088 cmpl %a0,%d0 <== NOT EXECUTED
57b20: 66a2 bnes 57ac4 <msdos_find_name_in_fat_file+0x29a><== NOT EXECUTED
#endif
lfn_start.cln = FAT_FILE_SHORT_NAME;
continue;
}
lfn_entry--;
57b22: 53ae ffea subql #1,%fp@(-22) <== NOT EXECUTED
o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;
57b26: 700d moveq #13,%d0 <== NOT EXECUTED
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57b28: 41ea 0001 lea %a2@(1),%a0 <== NOT EXECUTED
lfn_start.cln = FAT_FILE_SHORT_NAME;
continue;
}
lfn_entry--;
o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;
57b2c: 2c2e ffea movel %fp@(-22),%d6 <== NOT EXECUTED
57b30: 4c00 6800 mulsl %d0,%d6 <== NOT EXECUTED
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57b34: 4200 clrb %d0 <== NOT EXECUTED
57b36: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
57b3a: d3c6 addal %d6,%a1 <== NOT EXECUTED
lfn_start.cln = FAT_FILE_SHORT_NAME;
continue;
}
lfn_entry--;
o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;
57b3c: 2d46 fff0 movel %d6,%fp@(-16) <== NOT EXECUTED
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57b40: 2d41 ffce movel %d1,%fp@(-50) <== NOT EXECUTED
57b44: 2c00 movel %d0,%d6 <== NOT EXECUTED
{
#if MSDOS_FIND_PRINT > 1
printf ("MSFS:[6] o:%i i:%i *p:%c(%02x) name[o + i]:%c(%02x)\n",
o, i, *p, *p, name[o + i], name[o + i]);
#endif
if (*p == '\0')
57b46: 1210 moveb %a0@,%d1 <== NOT EXECUTED
57b48: 6768 beqs 57bb2 <msdos_find_name_in_fat_file+0x388><== NOT EXECUTED
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57b4a: 2e2e fff0 movel %fp@(-16),%d7 <== NOT EXECUTED
57b4e: de80 addl %d0,%d7 <== NOT EXECUTED
((o + i) != name_len))
lfn_start.cln = FAT_FILE_SHORT_NAME;
break;
}
if (((o + i) >= name_len) || (*p != name[o + i]))
57b50: beae 0018 cmpl %fp@(24),%d7 <== NOT EXECUTED
57b54: 6c00 017c bgew 57cd2 <msdos_find_name_in_fat_file+0x4a8><== NOT EXECUTED
57b58: 5280 addql #1,%d0 <== NOT EXECUTED
57b5a: 49c1 extbl %d1 <== NOT EXECUTED
57b5c: 1e19 moveb %a1@+,%d7 <== NOT EXECUTED
57b5e: 49c7 extbl %d7 <== NOT EXECUTED
57b60: be81 cmpl %d1,%d7 <== NOT EXECUTED
57b62: 6600 016e bnew 57cd2 <msdos_find_name_in_fat_file+0x4a8><== NOT EXECUTED
{
lfn_start.cln = FAT_FILE_SHORT_NAME;
break;
}
switch (i)
57b66: 7204 moveq #4,%d1 <== NOT EXECUTED
57b68: b286 cmpl %d6,%d1 <== NOT EXECUTED
57b6a: 676a beqs 57bd6 <msdos_find_name_in_fat_file+0x3ac><== NOT EXECUTED
57b6c: 123c 000a moveb #10,%d1 <== NOT EXECUTED
57b70: b286 cmpl %d6,%d1 <== NOT EXECUTED
57b72: 6736 beqs 57baa <msdos_find_name_in_fat_file+0x380><== NOT EXECUTED
break;
case 10:
p += 4;
break;
default:
p += 2;
57b74: 5488 addql #2,%a0 <== NOT EXECUTED
p = entry + 1;
#if MSDOS_FIND_PRINT
printf ("MSFS:[5] lfne:%i\n", lfn_entry);
#endif
for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)
57b76: 7c0d moveq #13,%d6 <== NOT EXECUTED
57b78: bc80 cmpl %d0,%d6 <== NOT EXECUTED
57b7a: 66c8 bnes 57b44 <msdos_find_name_in_fat_file+0x31a><== NOT EXECUTED
p += 2;
break;
}
}
lfn_matched = ((lfn_entry == 0) &&
57b7c: 4aae ffea tstl %fp@(-22) <== NOT EXECUTED
57b80: 6600 00e8 bnew 57c6a <msdos_find_name_in_fat_file+0x440><== NOT EXECUTED
57b84: 70ff moveq #-1,%d0 <== NOT EXECUTED
57b86: b0ae fff8 cmpl %fp@(-8),%d0 <== NOT EXECUTED
57b8a: 56c6 sne %d6 <== NOT EXECUTED
* If we are not already processing a LFN see if this is
* the first entry of a LFN ?
*/
if (lfn_start.cln == FAT_FILE_SHORT_NAME)
{
lfn_matched = false;
57b8c: 1e2e ffee moveb %fp@(-18),%d7 <== NOT EXECUTED
p += 2;
break;
}
}
lfn_matched = ((lfn_entry == 0) &&
57b90: 2206 movel %d6,%d1 <== NOT EXECUTED
57b92: 4481 negl %d1 <== NOT EXECUTED
57b94: 2241 moveal %d1,%a1 <== NOT EXECUTED
57b96: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
57b9c: 45ea 0020 lea %a2@(32),%a2 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
assert(ret == bts2rd);
/* have to look at the DIR_NAME as "raw" 8-bit data */
for (dir_entry = 0;
57ba0: b484 cmpl %d4,%d2 <== NOT EXECUTED
57ba2: 6500 fd72 bcsw 57916 <msdos_find_name_in_fat_file+0xec><== NOT EXECUTED
57ba6: 6000 fe20 braw 579c8 <msdos_find_name_in_fat_file+0x19e><== NOT EXECUTED
{
case 4:
p += 5;
break;
case 10:
p += 4;
57baa: 5888 addql #4,%a0 <== NOT EXECUTED
57bac: 2c00 movel %d0,%d6 <== NOT EXECUTED
{
#if MSDOS_FIND_PRINT > 1
printf ("MSFS:[6] o:%i i:%i *p:%c(%02x) name[o + i]:%c(%02x)\n",
o, i, *p, *p, name[o + i], name[o + i]);
#endif
if (*p == '\0')
57bae: 1210 moveb %a0@,%d1 <== NOT EXECUTED
57bb0: 6698 bnes 57b4a <msdos_find_name_in_fat_file+0x320><== NOT EXECUTED
57bb2: 222e ffce movel %fp@(-50),%d1 <== NOT EXECUTED
/*
* If this is the first entry, ie the last part of the
* long file name and the length does not match then
* the file names do not match.
*/
if (((lfn_entry + 1) == lfn_entries) &&
57bb6: b2ae ffd2 cmpl %fp@(-46),%d1 <== NOT EXECUTED
57bba: 66c0 bnes 57b7c <msdos_find_name_in_fat_file+0x352><== NOT EXECUTED
((o + i) != name_len))
57bbc: d0ae fff0 addl %fp@(-16),%d0 <== NOT EXECUTED
/*
* If this is the first entry, ie the last part of the
* long file name and the length does not match then
* the file names do not match.
*/
if (((lfn_entry + 1) == lfn_entries) &&
57bc0: b0ae 0018 cmpl %fp@(24),%d0 <== NOT EXECUTED
57bc4: 67b6 beqs 57b7c <msdos_find_name_in_fat_file+0x352><== NOT EXECUTED
((o + i) != name_len))
lfn_start.cln = FAT_FILE_SHORT_NAME;
57bc6: 72ff moveq #-1,%d1 <== NOT EXECUTED
57bc8: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
p += 2;
break;
}
}
lfn_matched = ((lfn_entry == 0) &&
57bcc: 4aae ffea tstl %fp@(-22) <== NOT EXECUTED
57bd0: 6600 0098 bnew 57c6a <msdos_find_name_in_fat_file+0x440><== NOT EXECUTED
57bd4: 60ae bras 57b84 <msdos_find_name_in_fat_file+0x35a><== NOT EXECUTED
}
switch (i)
{
case 4:
p += 5;
57bd6: 5a88 addql #5,%a0 <== NOT EXECUTED
break;
57bd8: 6000 ff6a braw 57b44 <msdos_find_name_in_fat_file+0x31a><== NOT EXECUTED
57bdc: 200c movel %a4,%d0
57bde: 284d moveal %a5,%a4
57be0: 2a40 moveal %d0,%a5
#endif
/*
* If just looking and there is no more entries in the
* directory - return name-not-found
*/
if (!create_node)
57be2: 4a05 tstb %d5
57be4: 6700 04ce beqw 580b4 <msdos_find_name_in_fat_file+0x88a>
* Lets go and write the directory entries. If we have not found
* any available space add the remaining number of entries to any that
* we may have already found that are just before this entry. If more
* are needed FAT_EOF is returned by the read and we extend the file.
*/
if (!empty_space_found)
57be8: 4a2e ffe6 tstb %fp@(-26)
57bec: 660a bnes 57bf8 <msdos_find_name_in_fat_file+0x3ce><== NEVER TAKEN
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
bts2rd = fat_fd->fat_file_size;
else
bts2rd = fs_info->fat.vol.bpc;
entries_per_block = bts2rd / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
57bee: 2004 movel %d4,%d0
57bf0: ea88 lsrl #5,%d0
* are needed FAT_EOF is returned by the read and we extend the file.
*/
if (!empty_space_found)
{
empty_space_count +=
entries_per_block - (dir_entry / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
57bf2: d680 addl %d0,%d3
57bf4: ea8a lsrl #5,%d2
* we may have already found that are just before this entry. If more
* are needed FAT_EOF is returned by the read and we extend the file.
*/
if (!empty_space_found)
{
empty_space_count +=
57bf6: 9682 subl %d2,%d3
* data to place in each long file name entry. First set the short
* file name to the slot of the SFN entry. This will mean no clashes
* in this directory.
*/
lfn_checksum = 0;
if (name_type == MSDOS_NAME_LONG)
57bf8: 7402 moveq #2,%d2
57bfa: b4ae 001c cmpl %fp@(28),%d2
57bfe: 6700 04d4 beqw 580d4 <msdos_find_name_in_fat_file+0x8aa>
int slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
msdos_short_name_hex(MSDOS_DIR_NAME(name_dir_entry), slot);
}
if (lfn_entries)
57c02: 4aae ffd2 tstl %fp@(-46)
57c06: 6700 0128 beqw 57d30 <msdos_find_name_in_fat_file+0x506>
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57c0a: 226e 0024 moveal %fp@(36),%a1 <== NOT EXECUTED
57c0e: 43e9 000b lea %a1@(11),%a1 <== NOT EXECUTED
57c12: 4201 clrb %d1 <== NOT EXECUTED
if (lfn_entries)
{
uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);
int i;
for (i = 0; i < 11; i++, p++)
lfn_checksum =
57c14: 4202 clrb %d2 <== NOT EXECUTED
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57c16: 206e 0024 moveal %fp@(36),%a0 <== NOT EXECUTED
57c1a: 1d41 ffef moveb %d1,%fp@(-17) <== NOT EXECUTED
if (lfn_entries)
{
uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);
int i;
for (i = 0; i < 11; i++, p++)
lfn_checksum =
57c1e: 4280 clrl %d0 <== NOT EXECUTED
57c20: 102e ffef moveb %fp@(-17),%d0 <== NOT EXECUTED
57c24: e288 lsrl #1,%d0 <== NOT EXECUTED
57c26: 1218 moveb %a0@+,%d1 <== NOT EXECUTED
57c28: d081 addl %d1,%d0 <== NOT EXECUTED
57c2a: d480 addl %d0,%d2 <== NOT EXECUTED
57c2c: 1d42 ffef moveb %d2,%fp@(-17) <== NOT EXECUTED
if (lfn_entries)
{
uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);
int i;
for (i = 0; i < 11; i++, p++)
57c30: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
57c32: 6700 0102 beqw 57d36 <msdos_find_name_in_fat_file+0x50c><== NOT EXECUTED
lfn_checksum =
57c36: 0802 0000 btst #0,%d2 <== NOT EXECUTED
57c3a: 6700 042a beqw 58066 <msdos_find_name_in_fat_file+0x83c><== NOT EXECUTED
57c3e: 7480 moveq #-128,%d2 <== NOT EXECUTED
57c40: 60dc bras 57c1e <msdos_find_name_in_fat_file+0x3f4><== NOT EXECUTED
* Get the checksum of the short entry.
*/
lfn_start.cln = dir_offset;
lfn_start.ofs = dir_entry;
lfn_entry = lfn_entries;
lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
57c42: 222e ffd2 movel %fp@(-46),%d1 <== NOT EXECUTED
* If the entry number or the check sum do not match
* forget this series of long directory entries. These
* could be orphaned entries depending on the history
* of the disk.
*/
if ((lfn_entry != (*MSDOS_DIR_ENTRY_TYPE(entry) &
57c46: 7c3f moveq #63,%d6 <== NOT EXECUTED
continue;
/*
* Get the checksum of the short entry.
*/
lfn_start.cln = dir_offset;
57c48: 2d4d fff8 movel %a5,%fp@(-8) <== NOT EXECUTED
* If we are not already processing a LFN see if this is
* the first entry of a LFN ?
*/
if (lfn_start.cln == FAT_FILE_SHORT_NAME)
{
lfn_matched = false;
57c4c: 93c9 subal %a1,%a1 <== NOT EXECUTED
/*
* Get the checksum of the short entry.
*/
lfn_start.cln = dir_offset;
lfn_start.ofs = dir_entry;
57c4e: 2d42 fffc movel %d2,%fp@(-4) <== NOT EXECUTED
lfn_entry = lfn_entries;
lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
57c52: 1e2a 000d moveb %a2@(13),%d7 <== NOT EXECUTED
57c56: 2d41 ffea movel %d1,%fp@(-22) <== NOT EXECUTED
57c5a: 1212 moveb %a2@,%d1 <== NOT EXECUTED
* If the entry number or the check sum do not match
* forget this series of long directory entries. These
* could be orphaned entries depending on the history
* of the disk.
*/
if ((lfn_entry != (*MSDOS_DIR_ENTRY_TYPE(entry) &
57c5c: c286 andl %d6,%d1 <== NOT EXECUTED
57c5e: b2ae ffea cmpl %fp@(-22),%d1 <== NOT EXECUTED
57c62: 6600 fe60 bnew 57ac4 <msdos_find_name_in_fat_file+0x29a><== NOT EXECUTED
57c66: 6000 fea2 braw 57b0a <msdos_find_name_in_fat_file+0x2e0><== NOT EXECUTED
p += 2;
break;
}
}
lfn_matched = ((lfn_entry == 0) &&
57c6a: 93c9 subal %a1,%a1 <== NOT EXECUTED
* If we are not already processing a LFN see if this is
* the first entry of a LFN ?
*/
if (lfn_start.cln == FAT_FILE_SHORT_NAME)
{
lfn_matched = false;
57c6c: 1e2e ffee moveb %fp@(-18),%d7 <== NOT EXECUTED
57c70: 6000 ff24 braw 57b96 <msdos_find_name_in_fat_file+0x36c><== NOT EXECUTED
lfn_entries = 0;
else
lfn_entries =
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
57c74: 4aa8 0024 tstl %a0@(36)
57c78: 6600 fc1c bnew 57896 <msdos_find_name_in_fat_file+0x6c>
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
57c7c: 206e ffe2 moveal %fp@(-30),%a0
lfn_entries = 0;
else
lfn_entries =
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
57c80: 7203 moveq #3,%d1
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
57c82: 1028 000e moveb %a0@(14),%d0
57c86: 1d40 ffcd moveb %d0,%fp@(-51)
lfn_entries = 0;
else
lfn_entries =
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
57c8a: c081 andl %d1,%d0
57c8c: 4a00 tstb %d0
57c8e: 6700 fc06 beqw 57896 <msdos_find_name_in_fat_file+0x6c>
57c92: 266e ffe2 moveal %fp@(-30),%a3
uint32_t bts2rd = 0;
fat_pos_t lfn_start;
bool lfn_matched = false;
uint8_t lfn_checksum = 0;
int lfn_entries;
int lfn_entry = 0;
57c96: 4287 clrl %d7
uint32_t empty_space_offset = 0;
uint32_t empty_space_entry = 0;
uint32_t empty_space_count = 0;
57c98: 4283 clrl %d3
bool lfn_matched = false;
uint8_t lfn_checksum = 0;
int lfn_entries;
int lfn_entry = 0;
uint32_t empty_space_offset = 0;
uint32_t empty_space_entry = 0;
57c9a: 9bcd subal %a5,%a5
char *name_dir_entry
)
{
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t dir_offset = 0;
57c9c: 99cc subal %a4,%a4
/*
* Remainder is not empty so is this entry empty ?
*/
empty_space_count++;
if (empty_space_count == (lfn_entries + 1))
57c9e: 222e ffd2 movel %fp@(-46),%d1
57ca2: 5281 addql #1,%d1
57ca4: 266b 0094 moveal %a3@(148),%a3
lfn_entries =
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
bts2rd = fat_fd->fat_file_size;
57ca8: 206e 000c moveal %fp@(12),%a0
/*
* Remainder is not empty so is this entry empty ?
*/
empty_space_count++;
if (empty_space_count == (lfn_entries + 1))
57cac: 2d41 ffda movel %d1,%fp@(-38)
lfn_entries =
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
bts2rd = fat_fd->fat_file_size;
57cb0: 2828 0018 movel %a0@(24),%d4
int lfn_entries;
int lfn_entry = 0;
uint32_t empty_space_offset = 0;
uint32_t empty_space_entry = 0;
uint32_t empty_space_count = 0;
bool empty_space_found = false;
57cb4: 4202 clrb %d2
uint32_t dir_offset = 0;
uint32_t dir_entry = 0;
uint32_t bts2rd = 0;
fat_pos_t lfn_start;
bool lfn_matched = false;
uint8_t lfn_checksum = 0;
57cb6: 4201 clrb %d1
57cb8: 2d4b ffde movel %a3,%fp@(-34)
int lfn_entries;
int lfn_entry = 0;
uint32_t empty_space_offset = 0;
57cbc: 97cb subal %a3,%a3
57cbe: 2d47 ffea movel %d7,%fp@(-22)
uint32_t empty_space_entry = 0;
uint32_t empty_space_count = 0;
bool empty_space_found = false;
57cc2: 1d42 ffe6 moveb %d2,%fp@(-26)
/*
* Scan the directory seeing if the file is present. While
* doing this see if a suitable location can be found to
* create the entry if the name is not found.
*/
while ((ret = fat_file_read(&fs_info->fat, fat_fd, (dir_offset * bts2rd),
57cc6: 42ae ffd6 clrl %fp@(-42)
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t dir_offset = 0;
uint32_t dir_entry = 0;
uint32_t bts2rd = 0;
fat_pos_t lfn_start;
bool lfn_matched = false;
57cca: 4206 clrb %d6
57ccc: 1e01 moveb %d1,%d7
57cce: 6000 fc04 braw 578d4 <msdos_find_name_in_fat_file+0xaa>
break;
}
if (((o + i) >= name_len) || (*p != name[o + i]))
{
lfn_start.cln = FAT_FILE_SHORT_NAME;
57cd2: 7cff moveq #-1,%d6 <== NOT EXECUTED
57cd4: 2d46 fff8 movel %d6,%fp@(-8) <== NOT EXECUTED
p += 2;
break;
}
}
lfn_matched = ((lfn_entry == 0) &&
57cd8: 4aae ffea tstl %fp@(-22) <== NOT EXECUTED
57cdc: 668c bnes 57c6a <msdos_find_name_in_fat_file+0x440><== NOT EXECUTED
57cde: 6000 fea4 braw 57b84 <msdos_find_name_in_fat_file+0x35a><== NOT EXECUTED
if (lfn_start.cln != FAT_FILE_SHORT_NAME)
{
rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
lfn_start.cln * bts2rd,
&lfn_start.cln);
if (rc != RC_OK)
57ce2: 2c00 movel %d0,%d6 <== NOT EXECUTED
empty_space_entry = 0;
read_cluster = true;
}
return 0;
}
57ce4: 2006 movel %d6,%d0 <== NOT EXECUTED
57ce6: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5 <== NOT EXECUTED
57cec: 4e5e unlk %fp <== NOT EXECUTED
57cee: 4e75 rts <== NOT EXECUTED
lfn_entries = 0;
else
lfn_entries =
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
57cf0: 206e 000c moveal %fp@(12),%a0
57cf4: 7001 moveq #1,%d0
*
* In PR1491 we need to have a LFN for a short file name entry. To
* test this make this test always fail, ie add "0 &&".
*/
if (create_node && (name_type == MSDOS_NAME_SHORT))
lfn_entries = 0;
57cf6: 42ae ffd2 clrl %fp@(-46)
else
lfn_entries =
((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
57cfa: b0a8 0020 cmpl %a0@(32),%d0
57cfe: 6600 fb96 bnew 57896 <msdos_find_name_in_fat_file+0x6c>
57d02: 6000 ff70 braw 57c74 <msdos_find_name_in_fat_file+0x44a>
if (rc != RC_OK)
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
57d06: 226e 0020 moveal %fp@(32),%a1
57d0a: 47ee fffc lea %fp@(-4),%a3
if (rc != RC_OK)
return rc;
dir_pos->sname.ofs = dir_entry;
if (lfn_start.cln != FAT_FILE_SHORT_NAME)
57d0e: 70ff moveq #-1,%d0
}
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
memcpy(name_dir_entry, entry,
57d10: 206e 0024 moveal %fp@(36),%a0
if (rc != RC_OK)
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
57d14: 2353 000c movel %a3@,%a1@(12)
&lfn_start.cln);
if (rc != RC_OK)
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
57d18: 2340 0008 movel %d0,%a1@(8)
dir_pos->lname.ofs = lfn_start.ofs;
memcpy(name_dir_entry, entry,
57d1c: 20da movel %a2@+,%a0@+
57d1e: 20da movel %a2@+,%a0@+
57d20: 20da movel %a2@+,%a0@+
57d22: 20da movel %a2@+,%a0@+
57d24: 20da movel %a2@+,%a0@+
57d26: 20da movel %a2@+,%a0@+
57d28: 20da movel %a2@+,%a0@+
57d2a: 2092 movel %a2@,%a0@
57d2c: 6000 fd4e braw 57a7c <msdos_find_name_in_fat_file+0x252>
* If a long file name calculate the checksum of the short file name
* data to place in each long file name entry. First set the short
* file name to the slot of the SFN entry. This will mean no clashes
* in this directory.
*/
lfn_checksum = 0;
57d30: 4202 clrb %d2
57d32: 1d42 ffef moveb %d2,%fp@(-17)
* empty_space_count is a count of empty entries in the currently
* read cluster so if 0 there is no space. Note, dir_offset will
* be at the next cluster so we can just make empty_space_offset
* that value.
*/
if (empty_space_count == 0)
57d36: 4a83 tstl %d3
57d38: 6700 0370 beqw 580aa <msdos_find_name_in_fat_file+0x880>
uint32_t empty_space_offset = 0;
uint32_t empty_space_entry = 0;
uint32_t empty_space_count = 0;
bool empty_space_found = false;
uint32_t entries_per_block;
bool read_cluster = false;
57d3c: b7cc cmpal %a4,%a3
57d3e: 56c0 sne %d0
57d40: 4480 negl %d0
read_cluster = true;
/*
* Handle the entry writes.
*/
lfn_start.cln = lfn_start.ofs = FAT_FILE_SHORT_NAME;
57d42: 7aff moveq #-1,%d5
57d44: 2d45 fffc movel %d5,%fp@(-4)
57d48: 2d45 fff8 movel %d5,%fp@(-8)
#endif
/*
* The one more is the short entry.
*/
while (lfn_entry < (lfn_entries + 1))
57d4c: 4aae ffd2 tstl %fp@(-46)
57d50: 6d00 0298 bltw 57fea <msdos_find_name_in_fat_file+0x7c0>
57d54: 2c0b movel %a3,%d6
57d56: 4c04 6800 mulsl %d4,%d6
/*
* Handle the entry writes.
*/
lfn_start.cln = lfn_start.ofs = FAT_FILE_SHORT_NAME;
lfn_entry = 0;
57d5a: 4287 clrl %d7
57d5c: 2d46 ffde movel %d6,%fp@(-34)
*/
while (lfn_entry < (lfn_entries + 1))
{
int length = 0;
if (read_cluster)
57d60: 4a00 tstb %d0
57d62: 6700 00b0 beqw 57e14 <msdos_find_name_in_fat_file+0x5ea>
{
uint32_t new_length;
#if MSDOS_FIND_PRINT
printf ("MSFS:[9.1] eso:%li\n", empty_space_offset);
#endif
ret = fat_file_read(&fs_info->fat, fat_fd,
57d66: 206e ffe2 moveal %fp@(-30),%a0 <== NOT EXECUTED
57d6a: 2f28 0094 movel %a0@(148),%sp@- <== NOT EXECUTED
57d6e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
57d70: 2f2e ffde movel %fp@(-34),%sp@- <== NOT EXECUTED
57d74: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
57d78: 2f08 movel %a0,%sp@- <== NOT EXECUTED
57d7a: 4eb9 0005 1bd0 jsr 51bd0 <fat_file_read> <== NOT EXECUTED
(empty_space_offset * bts2rd), bts2rd,
fs_info->cl_buf);
if (ret != bts2rd)
57d80: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
57d84: b880 cmpl %d0,%d4 <== NOT EXECUTED
57d86: 6700 008c beqw 57e14 <msdos_find_name_in_fat_file+0x5ea><== NOT EXECUTED
{
if (ret != FAT_EOF)
57d8a: 4a80 tstl %d0 <== NOT EXECUTED
57d8c: 6600 03d8 bnew 58166 <msdos_find_name_in_fat_file+0x93c><== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
#if MSDOS_FIND_PRINT
printf ("MSFS:[9.2] extending file:%li\n", empty_space_offset);
#endif
ret = fat_file_extend (&fs_info->fat, fat_fd, false,
57d90: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
57d94: 2f2e ffde movel %fp@(-34),%sp@- <== NOT EXECUTED
57d98: 42a7 clrl %sp@- <== NOT EXECUTED
57d9a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
57d9e: 2f2e ffe2 movel %fp@(-30),%sp@- <== NOT EXECUTED
57da2: 4eb9 0005 20bc jsr 520bc <fat_file_extend> <== NOT EXECUTED
empty_space_offset * bts2rd, &new_length);
if (ret != RC_OK)
57da8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
#if MSDOS_FIND_PRINT
printf ("MSFS:[9.2] extending file:%li\n", empty_space_offset);
#endif
ret = fat_file_extend (&fs_info->fat, fat_fd, false,
57dac: 2c00 movel %d0,%d6 <== NOT EXECUTED
empty_space_offset * bts2rd, &new_length);
if (ret != RC_OK)
57dae: 6600 fccc bnew 57a7c <msdos_find_name_in_fat_file+0x252><== NOT EXECUTED
return ret;
#if MSDOS_FIND_PRINT
printf ("MSFS:[9.3] extended: %d <-> %d\n", new_length, empty_space_offset * bts2rd);
#endif
if (new_length != (empty_space_offset * bts2rd))
57db2: 286e ffde moveal %fp@(-34),%a4 <== NOT EXECUTED
57db6: b9ee fff4 cmpal %fp@(-12),%a4 <== NOT EXECUTED
57dba: 663e bnes 57dfa <msdos_find_name_in_fat_file+0x5d0><== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EIO);
memset(fs_info->cl_buf, 0, bts2rd);
57dbc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
57dbe: 226e ffe2 moveal %fp@(-30),%a1 <== NOT EXECUTED
57dc2: 42a7 clrl %sp@- <== NOT EXECUTED
57dc4: 2f29 0094 movel %a1@(148),%sp@- <== NOT EXECUTED
57dc8: 4eb9 0005 b1f8 jsr 5b1f8 <memset> <== NOT EXECUTED
ret = fat_file_write(&fs_info->fat, fat_fd,
57dce: 286e ffe2 moveal %fp@(-30),%a4 <== NOT EXECUTED
57dd2: 2f2c 0094 movel %a4@(148),%sp@- <== NOT EXECUTED
57dd6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
57dd8: 2f2e ffde movel %fp@(-34),%sp@- <== NOT EXECUTED
57ddc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
57de0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
57de2: 4eb9 0005 22ee jsr 522ee <fat_file_write> <== NOT EXECUTED
empty_space_offset * bts2rd,
bts2rd, fs_info->cl_buf);
#if MSDOS_FIND_PRINT
printf ("MSFS:[9.4] clear write: %d\n", ret);
#endif
if (ret == -1)
57de8: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
if (new_length != (empty_space_offset * bts2rd))
rtems_set_errno_and_return_minus_one(EIO);
memset(fs_info->cl_buf, 0, bts2rd);
ret = fat_file_write(&fs_info->fat, fat_fd,
57dec: 2c00 movel %d0,%d6 <== NOT EXECUTED
empty_space_offset * bts2rd,
bts2rd, fs_info->cl_buf);
#if MSDOS_FIND_PRINT
printf ("MSFS:[9.4] clear write: %d\n", ret);
#endif
if (ret == -1)
57dee: 70ff moveq #-1,%d0 <== NOT EXECUTED
57df0: b086 cmpl %d6,%d0 <== NOT EXECUTED
57df2: 6700 fc88 beqw 57a7c <msdos_find_name_in_fat_file+0x252><== NOT EXECUTED
return ret;
else if (ret != bts2rd)
57df6: b886 cmpl %d6,%d4 <== NOT EXECUTED
57df8: 671a beqs 57e14 <msdos_find_name_in_fat_file+0x5ea><== NOT EXECUTED
(empty_space_offset * bts2rd) + empty_space_entry,
length, fs_info->cl_buf + empty_space_entry);
if (ret == -1)
return ret;
else if (ret != length)
rtems_set_errno_and_return_minus_one(EIO);
57dfa: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
57e00: 7cff moveq #-1,%d6 <== NOT EXECUTED
57e02: 2040 moveal %d0,%a0 <== NOT EXECUTED
57e04: 7005 moveq #5,%d0 <== NOT EXECUTED
57e06: 2080 movel %d0,%a0@ <== NOT EXECUTED
empty_space_entry = 0;
read_cluster = true;
}
return 0;
}
57e08: 2006 movel %d6,%d0 <== NOT EXECUTED
57e0a: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5 <== NOT EXECUTED
57e10: 4e5e unlk %fp <== NOT EXECUTED
57e12: 4e75 rts <== NOT EXECUTED
#if MSDOS_FIND_PRINT
printf ("MSFS:[10] eso:%li\n", empty_space_offset);
#endif
for (dir_entry = empty_space_entry;
57e14: bbc4 cmpal %d4,%a5
57e16: 6400 028a bccw 580a2 <msdos_find_name_in_fat_file+0x878>
dir_entry < bts2rd;
dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
{
char* entry = (char*) fs_info->cl_buf + dir_entry;
57e1a: 226e ffe2 moveal %fp@(-30),%a1
const char* n;
int i;
char fill = 0;
length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
lfn_entry++;
57e1e: 2a07 movel %d7,%d5
57e20: 5285 addql #1,%d5
length, lfn_entry);
#endif
/*
* Time to write the short file name entry.
*/
if (lfn_entry == (lfn_entries + 1))
57e22: 286e ffd2 moveal %fp@(-46),%a4
57e26: 528c addql #1,%a4
for (dir_entry = empty_space_entry;
dir_entry < bts2rd;
dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
{
char* entry = (char*) fs_info->cl_buf + dir_entry;
57e28: 2469 0094 moveal %a1@(148),%a2
57e2c: d5cd addal %a5,%a2
length, lfn_entry);
#endif
/*
* Time to write the short file name entry.
*/
if (lfn_entry == (lfn_entries + 1))
57e2e: 2d4c ffea movel %a4,%fp@(-22)
57e32: ba8c cmpl %a4,%d5
57e34: 6700 0264 beqw 5809a <msdos_find_name_in_fat_file+0x870>
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57e38: 4687 notl %d7 <== NOT EXECUTED
57e3a: deae ffd2 addl %fp@(-46),%d7 <== NOT EXECUTED
57e3e: 700d moveq #13,%d0 <== NOT EXECUTED
57e40: 4c00 7800 mulsl %d0,%d7 <== NOT EXECUTED
57e44: 2c0d movel %a5,%d6 <== NOT EXECUTED
char* p;
const char* n;
int i;
char fill = 0;
length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
57e46: 7420 moveq #32,%d2 <== NOT EXECUTED
57e48: 122e ffed moveb %fp@(-19),%d1 <== NOT EXECUTED
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57e4c: 2d4d ffd6 movel %a5,%fp@(-42) <== NOT EXECUTED
57e50: deae 0014 addl %fp@(20),%d7 <== NOT EXECUTED
57e54: 1d41 ffe9 moveb %d1,%fp@(-23) <== NOT EXECUTED
57e58: 2d4b ffda movel %a3,%fp@(-38) <== NOT EXECUTED
57e5c: 2a6e ffe2 moveal %fp@(-30),%a5 <== NOT EXECUTED
57e60: 2642 moveal %d2,%a3 <== NOT EXECUTED
* This is a long file name and we need to write
* a long file name entry. See if this is the
* first entry written and if so remember the
* the location of the long file name.
*/
if (lfn_start.cln == FAT_FILE_SHORT_NAME)
57e62: 74ff moveq #-1,%d2 <== NOT EXECUTED
57e64: b4ae fff8 cmpl %fp@(-8),%d2 <== NOT EXECUTED
57e68: 6700 01c0 beqw 5802a <msdos_find_name_in_fat_file+0x800><== NOT EXECUTED
}
/*
* Clear the entry before loading the data.
*/
memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
57e6c: 284a moveal %a2,%a4 <== NOT EXECUTED
*MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;
p = entry + 1;
57e6e: 41ea 0001 lea %a2@(1),%a0 <== NOT EXECUTED
n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
57e72: 2247 moveal %d7,%a1 <== NOT EXECUTED
57e74: 7001 moveq #1,%d0 <== NOT EXECUTED
}
/*
* Clear the entry before loading the data.
*/
memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
57e76: 429c clrl %a4@+ <== NOT EXECUTED
{
char* entry = (char*) fs_info->cl_buf + dir_entry;
char* p;
const char* n;
int i;
char fill = 0;
57e78: 4203 clrb %d3 <== NOT EXECUTED
}
/*
* Clear the entry before loading the data.
*/
memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
57e7a: 429c clrl %a4@+ <== NOT EXECUTED
57e7c: 429c clrl %a4@+ <== NOT EXECUTED
57e7e: 429c clrl %a4@+ <== NOT EXECUTED
57e80: 429c clrl %a4@+ <== NOT EXECUTED
57e82: 429c clrl %a4@+ <== NOT EXECUTED
57e84: 429c clrl %a4@+ <== NOT EXECUTED
57e86: 4294 clrl %a4@ <== NOT EXECUTED
*MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;
57e88: 122e ffef moveb %fp@(-17),%d1 <== NOT EXECUTED
57e8c: 1541 000d moveb %d1,%a2@(13) <== NOT EXECUTED
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57e90: 2200 movel %d0,%d1 <== NOT EXECUTED
57e92: 5381 subql #1,%d1 <== NOT EXECUTED
p = entry + 1;
n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)
{
if (*n != 0)
57e94: 1411 moveb %a1@,%d2 <== NOT EXECUTED
57e96: 6726 beqs 57ebe <msdos_find_name_in_fat_file+0x694><== NOT EXECUTED
{
*p = *n;
n++;
57e98: 5289 addql #1,%a1 <== NOT EXECUTED
for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)
{
if (*n != 0)
{
*p = *n;
57e9a: 1082 moveb %d2,%a0@ <== NOT EXECUTED
p [0] = fill;
p [1] = fill;
fill = 0xff;
}
switch (i)
57e9c: 7404 moveq #4,%d2 <== NOT EXECUTED
57e9e: b481 cmpl %d1,%d2 <== NOT EXECUTED
57ea0: 672a beqs 57ecc <msdos_find_name_in_fat_file+0x6a2><== NOT EXECUTED
57ea2: 143c 000a moveb #10,%d2 <== NOT EXECUTED
57ea6: b481 cmpl %d1,%d2 <== NOT EXECUTED
57ea8: 6700 01b4 beqw 5805e <msdos_find_name_in_fat_file+0x834><== NOT EXECUTED
break;
case 10:
p += 4;
break;
default:
p += 2;
57eac: 5488 addql #2,%a0 <== NOT EXECUTED
*MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;
p = entry + 1;
n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)
57eae: 720d moveq #13,%d1 <== NOT EXECUTED
57eb0: b280 cmpl %d0,%d1 <== NOT EXECUTED
57eb2: 671e beqs 57ed2 <msdos_find_name_in_fat_file+0x6a8><== NOT EXECUTED
57eb4: 5280 addql #1,%d0 <== NOT EXECUTED
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57eb6: 2200 movel %d0,%d1 <== NOT EXECUTED
57eb8: 5381 subql #1,%d1 <== NOT EXECUTED
p = entry + 1;
n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)
{
if (*n != 0)
57eba: 1411 moveb %a1@,%d2 <== NOT EXECUTED
57ebc: 66da bnes 57e98 <msdos_find_name_in_fat_file+0x66e><== NOT EXECUTED
p [0] = fill;
p [1] = fill;
fill = 0xff;
}
switch (i)
57ebe: 7404 moveq #4,%d2 <== NOT EXECUTED
*p = *n;
n++;
}
else
{
p [0] = fill;
57ec0: 1083 moveb %d3,%a0@ <== NOT EXECUTED
p [1] = fill;
57ec2: 1143 0001 moveb %d3,%a0@(1) <== NOT EXECUTED
fill = 0xff;
57ec6: 50c3 st %d3 <== NOT EXECUTED
}
switch (i)
57ec8: b481 cmpl %d1,%d2 <== NOT EXECUTED
57eca: 66d6 bnes 57ea2 <msdos_find_name_in_fat_file+0x678><== NOT EXECUTED
{
case 4:
p += 5;
57ecc: 5a88 addql #5,%a0 <== NOT EXECUTED
57ece: 5280 addql #1,%d0 <== NOT EXECUTED
57ed0: 60e4 bras 57eb6 <msdos_find_name_in_fat_file+0x68c><== NOT EXECUTED
break;
}
}
*MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
if (lfn_entry == 1)
57ed2: 7401 moveq #1,%d2 <== NOT EXECUTED
* RC_OK on success, or error code if error occured (errno set
* appropriately)
*
*/
#define MSDOS_FIND_PRINT 0
int msdos_find_name_in_fat_file(
57ed4: 102e ffe9 moveb %fp@(-23),%d0 <== NOT EXECUTED
57ed8: 9085 subl %d5,%d0 <== NOT EXECUTED
p += 2;
break;
}
}
*MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
57eda: 1480 moveb %d0,%a2@ <== NOT EXECUTED
if (lfn_entry == 1)
57edc: b485 cmpl %d5,%d2 <== NOT EXECUTED
57ede: 6700 0118 beqw 57ff8 <msdos_find_name_in_fat_file+0x7ce><== NOT EXECUTED
*MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
*MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;
57ee2: 740f moveq #15,%d2 <== NOT EXECUTED
printf ("MSFS:[10] eso:%li\n", empty_space_offset);
#endif
for (dir_entry = empty_space_entry;
dir_entry < bts2rd;
dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
57ee4: 0686 0000 0020 addil #32,%d6 <== NOT EXECUTED
}
*MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
if (lfn_entry == 1)
*MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
*MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;
57eea: 102a 000b moveb %a2@(11),%d0 <== NOT EXECUTED
57eee: 8082 orl %d2,%d0 <== NOT EXECUTED
57ef0: 1540 000b moveb %d0,%a2@(11) <== NOT EXECUTED
#if MSDOS_FIND_PRINT
printf ("MSFS:[10] eso:%li\n", empty_space_offset);
#endif
for (dir_entry = empty_space_entry;
57ef4: bc84 cmpl %d4,%d6 <== NOT EXECUTED
57ef6: 6400 0120 bccw 58018 <msdos_find_name_in_fat_file+0x7ee><== NOT EXECUTED
dir_entry < bts2rd;
dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
{
char* entry = (char*) fs_info->cl_buf + dir_entry;
57efa: 246d 0094 moveal %a5@(148),%a2 <== NOT EXECUTED
char* p;
const char* n;
int i;
char fill = 0;
length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
57efe: 47eb 0020 lea %a3@(32),%a3 <== NOT EXECUTED
for (dir_entry = empty_space_entry;
dir_entry < bts2rd;
dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
{
char* entry = (char*) fs_info->cl_buf + dir_entry;
57f02: d5c6 addal %d6,%a2 <== NOT EXECUTED
const char* n;
int i;
char fill = 0;
length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
lfn_entry++;
57f04: 5285 addql #1,%d5 <== NOT EXECUTED
57f06: 0687 ffff fff3 addil #-13,%d7 <== NOT EXECUTED
length, lfn_entry);
#endif
/*
* Time to write the short file name entry.
*/
if (lfn_entry == (lfn_entries + 1))
57f0c: baae ffea cmpl %fp@(-22),%d5 <== NOT EXECUTED
57f10: 6600 ff50 bnew 57e62 <msdos_find_name_in_fat_file+0x638><== NOT EXECUTED
57f14: 240b movel %a3,%d2 <== NOT EXECUTED
57f16: 2a6e ffd6 moveal %fp@(-42),%a5 <== NOT EXECUTED
57f1a: 266e ffda moveal %fp@(-38),%a3 <== NOT EXECUTED
{
/* get current cluster number */
int rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
57f1e: 2f2e 0020 movel %fp@(32),%sp@-
57f22: 49f9 0005 2006 lea 52006 <fat_file_ioctl>,%a4
57f28: 2f2e ffde movel %fp@(-34),%sp@-
57f2c: 4878 0001 pea 1 <ADD>
57f30: 2f2e 000c movel %fp@(12),%sp@-
57f34: 2f2e ffe2 movel %fp@(-30),%sp@-
57f38: 4e94 jsr %a4@
empty_space_offset * bts2rd,
&dir_pos->sname.cln);
if (rc != RC_OK)
57f3a: 4fef 0014 lea %sp@(20),%sp
57f3e: 4a80 tstl %d0
57f40: 6600 fda0 bnew 57ce2 <msdos_find_name_in_fat_file+0x4b8>
return rc;
dir_pos->sname.ofs = dir_entry;
57f44: 206e 0020 moveal %fp@(32),%a0
if (lfn_start.cln != FAT_FILE_SHORT_NAME)
57f48: 72ff moveq #-1,%d1
57f4a: 202e fff8 movel %fp@(-8),%d0
empty_space_offset * bts2rd,
&dir_pos->sname.cln);
if (rc != RC_OK)
return rc;
dir_pos->sname.ofs = dir_entry;
57f4e: 2146 0004 movel %d6,%a0@(4)
if (lfn_start.cln != FAT_FILE_SHORT_NAME)
57f52: b280 cmpl %d0,%d1
57f54: 6700 0116 beqw 5806c <msdos_find_name_in_fat_file+0x842>
{
rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
57f58: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
57f5c: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED
57f60: 2f00 movel %d0,%sp@- <== NOT EXECUTED
57f62: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
57f66: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
57f6a: 2f2e ffe2 movel %fp@(-30),%sp@- <== NOT EXECUTED
57f6e: 4e94 jsr %a4@ <== NOT EXECUTED
lfn_start.cln * bts2rd,
&lfn_start.cln);
if (rc != RC_OK)
57f70: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
57f74: 4a80 tstl %d0 <== NOT EXECUTED
57f76: 6600 fd6a bnew 57ce2 <msdos_find_name_in_fat_file+0x4b8><== NOT EXECUTED
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
57f7a: 226e 0020 moveal %fp@(32),%a1 <== NOT EXECUTED
57f7e: 49ee fffc lea %fp@(-4),%a4 <== NOT EXECUTED
57f82: 2002 movel %d2,%d0 <== NOT EXECUTED
const char* n;
int i;
char fill = 0;
length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
lfn_entry++;
57f84: 2e05 movel %d5,%d7 <== NOT EXECUTED
57f86: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
/* write new node entry */
memcpy (entry, (uint8_t *) name_dir_entry,
57f8a: 206e 0024 moveal %fp@(36),%a0 <== NOT EXECUTED
if (rc != RC_OK)
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
57f8e: 2354 000c movel %a4@,%a1@(12) <== NOT EXECUTED
&lfn_start.cln);
if (rc != RC_OK)
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
57f92: 2341 0008 movel %d1,%a1@(8) <== NOT EXECUTED
dir_pos->lname.ofs = lfn_start.ofs;
/* write new node entry */
memcpy (entry, (uint8_t *) name_dir_entry,
57f96: 24d8 movel %a0@+,%a2@+ <== NOT EXECUTED
57f98: 24d8 movel %a0@+,%a2@+ <== NOT EXECUTED
57f9a: 24d8 movel %a0@+,%a2@+ <== NOT EXECUTED
57f9c: 24d8 movel %a0@+,%a2@+ <== NOT EXECUTED
57f9e: 24d8 movel %a0@+,%a2@+ <== NOT EXECUTED
57fa0: 24d8 movel %a0@+,%a2@+ <== NOT EXECUTED
57fa2: 24d8 movel %a0@+,%a2@+ <== NOT EXECUTED
57fa4: 2490 movel %a0@,%a2@ <== NOT EXECUTED
if (lfn_entry == 1)
*MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
*MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;
}
ret = fat_file_write(&fs_info->fat, fat_fd,
57fa6: 206e ffe2 moveal %fp@(-30),%a0
57faa: 2268 0094 moveal %a0@(148),%a1
57fae: d3cd addal %a5,%a1
57fb0: 2f09 movel %a1,%sp@-
57fb2: 286e ffde moveal %fp@(-34),%a4
57fb6: 2f00 movel %d0,%sp@-
57fb8: 4874 d800 pea %a4@(00000000,%a5:l)
57fbc: 2f2e 000c movel %fp@(12),%sp@-
57fc0: 2f08 movel %a0,%sp@-
57fc2: 4eb9 0005 22ee jsr 522ee <fat_file_write>
(empty_space_offset * bts2rd) + empty_space_entry,
length, fs_info->cl_buf + empty_space_entry);
if (ret == -1)
57fc8: 4fef 0014 lea %sp@(20),%sp
57fcc: 72ff moveq #-1,%d1
57fce: b280 cmpl %d0,%d1
57fd0: 6700 00f4 beqw 580c6 <msdos_find_name_in_fat_file+0x89c>
return ret;
else if (ret != length)
57fd4: b480 cmpl %d0,%d2
57fd6: 6600 fe22 bnew 57dfa <msdos_find_name_in_fat_file+0x5d0>
rtems_set_errno_and_return_minus_one(EIO);
empty_space_offset++;
57fda: 528b addql #1,%a3
57fdc: d9ae ffde addl %d4,%fp@(-34)
empty_space_entry = 0;
57fe0: 9bcd subal %a5,%a5
#endif
/*
* The one more is the short entry.
*/
while (lfn_entry < (lfn_entries + 1))
57fe2: beae ffd2 cmpl %fp@(-46),%d7
57fe6: 6f00 fd7e blew 57d66 <msdos_find_name_in_fat_file+0x53c>
empty_space_offset++;
empty_space_entry = 0;
read_cluster = true;
}
return 0;
57fea: 4286 clrl %d6
}
57fec: 2006 movel %d6,%d0
57fee: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5
57ff4: 4e5e unlk %fp
57ff6: 4e75 rts
}
}
*MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
if (lfn_entry == 1)
*MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
57ff8: 123c 0040 moveb #64,%d1 <== NOT EXECUTED
*MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;
57ffc: 740f moveq #15,%d2 <== NOT EXECUTED
printf ("MSFS:[10] eso:%li\n", empty_space_offset);
#endif
for (dir_entry = empty_space_entry;
dir_entry < bts2rd;
dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
57ffe: 0686 0000 0020 addil #32,%d6 <== NOT EXECUTED
}
}
*MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
if (lfn_entry == 1)
*MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
58004: 8081 orl %d1,%d0 <== NOT EXECUTED
58006: 1480 moveb %d0,%a2@ <== NOT EXECUTED
*MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;
58008: 102a 000b moveb %a2@(11),%d0 <== NOT EXECUTED
5800c: 8082 orl %d2,%d0 <== NOT EXECUTED
5800e: 1540 000b moveb %d0,%a2@(11) <== NOT EXECUTED
#if MSDOS_FIND_PRINT
printf ("MSFS:[10] eso:%li\n", empty_space_offset);
#endif
for (dir_entry = empty_space_entry;
58012: bc84 cmpl %d4,%d6 <== NOT EXECUTED
58014: 6500 fee4 bcsw 57efa <msdos_find_name_in_fat_file+0x6d0><== NOT EXECUTED
58018: 240b movel %a3,%d2 <== NOT EXECUTED
5801a: 2002 movel %d2,%d0 <== NOT EXECUTED
5801c: 2e05 movel %d5,%d7 <== NOT EXECUTED
5801e: 266e ffda moveal %fp@(-38),%a3 <== NOT EXECUTED
58022: 2a6e ffd6 moveal %fp@(-42),%a5 <== NOT EXECUTED
58026: 6000 ff7e braw 57fa6 <msdos_find_name_in_fat_file+0x77c><== NOT EXECUTED
* first entry written and if so remember the
* the location of the long file name.
*/
if (lfn_start.cln == FAT_FILE_SHORT_NAME)
{
lfn_start.cln = empty_space_offset;
5802a: 202e ffda movel %fp@(-38),%d0 <== NOT EXECUTED
}
/*
* Clear the entry before loading the data.
*/
memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
5802e: 284a moveal %a2,%a4 <== NOT EXECUTED
*MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;
p = entry + 1;
58030: 41ea 0001 lea %a2@(1),%a0 <== NOT EXECUTED
n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
58034: 2247 moveal %d7,%a1 <== NOT EXECUTED
* first entry written and if so remember the
* the location of the long file name.
*/
if (lfn_start.cln == FAT_FILE_SHORT_NAME)
{
lfn_start.cln = empty_space_offset;
58036: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
*MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;
p = entry + 1;
n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
5803a: 7001 moveq #1,%d0 <== NOT EXECUTED
* the location of the long file name.
*/
if (lfn_start.cln == FAT_FILE_SHORT_NAME)
{
lfn_start.cln = empty_space_offset;
lfn_start.ofs = dir_entry;
5803c: 2d46 fffc movel %d6,%fp@(-4) <== NOT EXECUTED
{
char* entry = (char*) fs_info->cl_buf + dir_entry;
char* p;
const char* n;
int i;
char fill = 0;
58040: 4203 clrb %d3 <== NOT EXECUTED
}
/*
* Clear the entry before loading the data.
*/
memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
58042: 429c clrl %a4@+ <== NOT EXECUTED
58044: 429c clrl %a4@+ <== NOT EXECUTED
58046: 429c clrl %a4@+ <== NOT EXECUTED
58048: 429c clrl %a4@+ <== NOT EXECUTED
5804a: 429c clrl %a4@+ <== NOT EXECUTED
5804c: 429c clrl %a4@+ <== NOT EXECUTED
5804e: 429c clrl %a4@+ <== NOT EXECUTED
58050: 4294 clrl %a4@ <== NOT EXECUTED
*MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;
58052: 122e ffef moveb %fp@(-17),%d1 <== NOT EXECUTED
58056: 1541 000d moveb %d1,%a2@(13) <== NOT EXECUTED
5805a: 6000 fe34 braw 57e90 <msdos_find_name_in_fat_file+0x666><== NOT EXECUTED
{
case 4:
p += 5;
break;
case 10:
p += 4;
5805e: 5888 addql #4,%a0 <== NOT EXECUTED
58060: 5280 addql #1,%d0 <== NOT EXECUTED
58062: 6000 fe52 braw 57eb6 <msdos_find_name_in_fat_file+0x68c><== NOT EXECUTED
if (lfn_entries)
{
uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);
int i;
for (i = 0; i < 11; i++, p++)
lfn_checksum =
58066: 4202 clrb %d2 <== NOT EXECUTED
58068: 6000 fbb4 braw 57c1e <msdos_find_name_in_fat_file+0x3f4><== NOT EXECUTED
if (rc != RC_OK)
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
5806c: 226e 0020 moveal %fp@(32),%a1
58070: 49ee fffc lea %fp@(-4),%a4
if (rc != RC_OK)
return rc;
dir_pos->sname.ofs = dir_entry;
if (lfn_start.cln != FAT_FILE_SHORT_NAME)
58074: 72ff moveq #-1,%d1
58076: 2002 movel %d2,%d0
const char* n;
int i;
char fill = 0;
length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
lfn_entry++;
58078: 2e05 movel %d5,%d7
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
/* write new node entry */
memcpy (entry, (uint8_t *) name_dir_entry,
5807a: 206e 0024 moveal %fp@(36),%a0
if (rc != RC_OK)
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
dir_pos->lname.ofs = lfn_start.ofs;
5807e: 2354 000c movel %a4@,%a1@(12)
&lfn_start.cln);
if (rc != RC_OK)
return rc;
}
dir_pos->lname.cln = lfn_start.cln;
58082: 2341 0008 movel %d1,%a1@(8)
dir_pos->lname.ofs = lfn_start.ofs;
/* write new node entry */
memcpy (entry, (uint8_t *) name_dir_entry,
58086: 24d8 movel %a0@+,%a2@+
58088: 24d8 movel %a0@+,%a2@+
5808a: 24d8 movel %a0@+,%a2@+
5808c: 24d8 movel %a0@+,%a2@+
5808e: 24d8 movel %a0@+,%a2@+
58090: 24d8 movel %a0@+,%a2@+
58092: 24d8 movel %a0@+,%a2@+
58094: 2490 movel %a0@,%a2@
58096: 6000 ff0e braw 57fa6 <msdos_find_name_in_fat_file+0x77c>
length, lfn_entry);
#endif
/*
* Time to write the short file name entry.
*/
if (lfn_entry == (lfn_entries + 1))
5809a: 2c0d movel %a5,%d6
char* p;
const char* n;
int i;
char fill = 0;
length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
5809c: 7420 moveq #32,%d2
5809e: 6000 fe7e braw 57f1e <msdos_find_name_in_fat_file+0x6f4>
#if MSDOS_FIND_PRINT
printf ("MSFS:[10] eso:%li\n", empty_space_offset);
#endif
for (dir_entry = empty_space_entry;
580a2: 4280 clrl %d0 <== NOT EXECUTED
580a4: 4282 clrl %d2 <== NOT EXECUTED
580a6: 6000 fefe braw 57fa6 <msdos_find_name_in_fat_file+0x77c><== NOT EXECUTED
* empty_space_count is a count of empty entries in the currently
* read cluster so if 0 there is no space. Note, dir_offset will
* be at the next cluster so we can just make empty_space_offset
* that value.
*/
if (empty_space_count == 0)
580aa: 264c moveal %a4,%a3 <== NOT EXECUTED
{
read_cluster = true;
empty_space_offset = dir_offset;
empty_space_entry = 0;
580ac: 9bcd subal %a5,%a5 <== NOT EXECUTED
* be at the next cluster so we can just make empty_space_offset
* that value.
*/
if (empty_space_count == 0)
{
read_cluster = true;
580ae: 7001 moveq #1,%d0 <== NOT EXECUTED
580b0: 6000 fc90 braw 57d42 <msdos_find_name_in_fat_file+0x518><== NOT EXECUTED
/*
* If just looking and there is no more entries in the
* directory - return name-not-found
*/
if (!create_node)
return MSDOS_NAME_NOT_FOUND_ERR;
580b4: 2c3c 0000 7d01 movel #32001,%d6
empty_space_entry = 0;
read_cluster = true;
}
return 0;
}
580ba: 2006 movel %d6,%d0
580bc: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5
580c2: 4e5e unlk %fp
580c4: 4e75 rts
}
ret = fat_file_write(&fs_info->fat, fat_fd,
(empty_space_offset * bts2rd) + empty_space_entry,
length, fs_info->cl_buf + empty_space_entry);
if (ret == -1)
580c6: 7cff moveq #-1,%d6 <== NOT EXECUTED
empty_space_entry = 0;
read_cluster = true;
}
return 0;
}
580c8: 2006 movel %d6,%d0 <== NOT EXECUTED
580ca: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5 <== NOT EXECUTED
580d0: 4e5e unlk %fp <== NOT EXECUTED
580d2: 4e75 rts <== NOT EXECUTED
* in this directory.
*/
lfn_checksum = 0;
if (name_type == MSDOS_NAME_LONG)
{
int slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
580d4: 200b movel %a3,%d0 <== NOT EXECUTED
580d6: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED
{
static const char* hex = "0123456789ABCDEF";
char* c = MSDOS_DIR_NAME(sfn);
int i;
for (i = 0; i < 2; i++, c++)
if ((*c == ' ') || (*c == '.'))
580da: 206e 0024 moveal %fp@(36),%a0 <== NOT EXECUTED
* in this directory.
*/
lfn_checksum = 0;
if (name_type == MSDOS_NAME_LONG)
{
int slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
580de: d08d addl %a5,%d0 <== NOT EXECUTED
580e0: ea88 lsrl #5,%d0 <== NOT EXECUTED
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
580e2: 226e ffd2 moveal %fp@(-46),%a1 <== NOT EXECUTED
{
static const char* hex = "0123456789ABCDEF";
char* c = MSDOS_DIR_NAME(sfn);
int i;
for (i = 0; i < 2; i++, c++)
if ((*c == ' ') || (*c == '.'))
580e6: 1210 moveb %a0@,%d1 <== NOT EXECUTED
*/
lfn_checksum = 0;
if (name_type == MSDOS_NAME_LONG)
{
int slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
580e8: 43f1 0801 lea %a1@(00000001,%d0:l),%a1 <== NOT EXECUTED
{
static const char* hex = "0123456789ABCDEF";
char* c = MSDOS_DIR_NAME(sfn);
int i;
for (i = 0; i < 2; i++, c++)
if ((*c == ' ') || (*c == '.'))
580ec: 7020 moveq #32,%d0 <== NOT EXECUTED
580ee: 49c1 extbl %d1 <== NOT EXECUTED
*/
lfn_checksum = 0;
if (name_type == MSDOS_NAME_LONG)
{
int slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
580f0: 2409 movel %a1,%d2 <== NOT EXECUTED
{
static const char* hex = "0123456789ABCDEF";
char* c = MSDOS_DIR_NAME(sfn);
int i;
for (i = 0; i < 2; i++, c++)
if ((*c == ' ') || (*c == '.'))
580f2: b081 cmpl %d1,%d0 <== NOT EXECUTED
580f4: 6766 beqs 5815c <msdos_find_name_in_fat_file+0x932><== NOT EXECUTED
580f6: 702e moveq #46,%d0 <== NOT EXECUTED
580f8: b081 cmpl %d1,%d0 <== NOT EXECUTED
580fa: 6760 beqs 5815c <msdos_find_name_in_fat_file+0x932><== NOT EXECUTED
580fc: 206e 0024 moveal %fp@(36),%a0 <== NOT EXECUTED
58100: 7220 moveq #32,%d1 <== NOT EXECUTED
58102: 1028 0001 moveb %a0@(1),%d0 <== NOT EXECUTED
58106: 49c0 extbl %d0 <== NOT EXECUTED
58108: b280 cmpl %d0,%d1 <== NOT EXECUTED
5810a: 6744 beqs 58150 <msdos_find_name_in_fat_file+0x926><== NOT EXECUTED
5810c: 722e moveq #46,%d1 <== NOT EXECUTED
5810e: b280 cmpl %d0,%d1 <== NOT EXECUTED
58110: 673e beqs 58150 <msdos_find_name_in_fat_file+0x926><== NOT EXECUTED
msdos_short_name_hex(char* sfn, int num)
{
static const char* hex = "0123456789ABCDEF";
char* c = MSDOS_DIR_NAME(sfn);
int i;
for (i = 0; i < 2; i++, c++)
58112: 206e 0024 moveal %fp@(36),%a0 <== NOT EXECUTED
58116: 700c moveq #12,%d0 <== NOT EXECUTED
58118: 5488 addql #2,%a0 <== NOT EXECUTED
5811a: 43f9 0006 9a0e lea 69a0e <null_ops+0x54>,%a1 <== NOT EXECUTED
if ((*c == ' ') || (*c == '.'))
*c = '_';
for (i = 0; i < 4; i++, c++)
*c = hex[(num >> ((3 - i) * 4)) & 0xf];
58120: 2202 movel %d2,%d1 <== NOT EXECUTED
58122: e0a1 asrl %d0,%d1 <== NOT EXECUTED
58124: 7a0f moveq #15,%d5 <== NOT EXECUTED
58126: 5980 subql #4,%d0 <== NOT EXECUTED
char* c = MSDOS_DIR_NAME(sfn);
int i;
for (i = 0; i < 2; i++, c++)
if ((*c == ' ') || (*c == '.'))
*c = '_';
for (i = 0; i < 4; i++, c++)
58128: 7cfc moveq #-4,%d6 <== NOT EXECUTED
*c = hex[(num >> ((3 - i) * 4)) & 0xf];
5812a: c285 andl %d5,%d1 <== NOT EXECUTED
5812c: 10f1 1800 moveb %a1@(00000000,%d1:l),%a0@+ <== NOT EXECUTED
char* c = MSDOS_DIR_NAME(sfn);
int i;
for (i = 0; i < 2; i++, c++)
if ((*c == ' ') || (*c == '.'))
*c = '_';
for (i = 0; i < 4; i++, c++)
58130: bc80 cmpl %d0,%d6 <== NOT EXECUTED
58132: 66ec bnes 58120 <msdos_find_name_in_fat_file+0x8f6><== NOT EXECUTED
*c = hex[(num >> ((3 - i) * 4)) & 0xf];
*c++ = '~';
58134: 206e 0024 moveal %fp@(36),%a0 <== NOT EXECUTED
58138: 707e moveq #126,%d0 <== NOT EXECUTED
5813a: 1140 0006 moveb %d0,%a0@(6) <== NOT EXECUTED
*c++ = '1';
5813e: 7031 moveq #49,%d0 <== NOT EXECUTED
58140: 1140 0007 moveb %d0,%a0@(7) <== NOT EXECUTED
int slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
msdos_short_name_hex(MSDOS_DIR_NAME(name_dir_entry), slot);
}
if (lfn_entries)
58144: 4aae ffd2 tstl %fp@(-46) <== NOT EXECUTED
58148: 6700 fbe6 beqw 57d30 <msdos_find_name_in_fat_file+0x506><== NOT EXECUTED
5814c: 6000 fabc braw 57c0a <msdos_find_name_in_fat_file+0x3e0><== NOT EXECUTED
static const char* hex = "0123456789ABCDEF";
char* c = MSDOS_DIR_NAME(sfn);
int i;
for (i = 0; i < 2; i++, c++)
if ((*c == ' ') || (*c == '.'))
*c = '_';
58150: 206e 0024 moveal %fp@(36),%a0 <== NOT EXECUTED
58154: 7a5f moveq #95,%d5 <== NOT EXECUTED
58156: 1145 0001 moveb %d5,%a0@(1) <== NOT EXECUTED
5815a: 60b6 bras 58112 <msdos_find_name_in_fat_file+0x8e8><== NOT EXECUTED
5815c: 206e 0024 moveal %fp@(36),%a0 <== NOT EXECUTED
58160: 10bc 005f moveb #95,%a0@ <== NOT EXECUTED
58164: 6096 bras 580fc <msdos_find_name_in_fat_file+0x8d2><== NOT EXECUTED
fs_info->cl_buf);
if (ret != bts2rd)
{
if (ret != FAT_EOF)
rtems_set_errno_and_return_minus_one(EIO);
58166: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
5816c: 7cff moveq #-1,%d6 <== NOT EXECUTED
5816e: 7205 moveq #5,%d1 <== NOT EXECUTED
58170: 2240 moveal %d0,%a1 <== NOT EXECUTED
empty_space_entry = 0;
read_cluster = true;
}
return 0;
}
58172: 2006 movel %d6,%d0 <== NOT EXECUTED
58174: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5 <== NOT EXECUTED
fs_info->cl_buf);
if (ret != bts2rd)
{
if (ret != FAT_EOF)
rtems_set_errno_and_return_minus_one(EIO);
5817a: 2281 movel %d1,%a1@ <== NOT EXECUTED
empty_space_entry = 0;
read_cluster = true;
}
return 0;
}
5817c: 4e5e unlk %fp <== NOT EXECUTED
5817e: 4e75 rts <== NOT EXECUTED
#endif
if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
rtems_set_errno_and_return_minus_one(EIO);
assert(ret == bts2rd);
58180: 4879 0006 a0ae pea 6a0ae <msdos_file_handlers+0xd0> <== NOT EXECUTED
58186: 4879 0006 a0d7 pea 6a0d7 <__FUNCTION__.7675> <== NOT EXECUTED
5818c: 4878 03f9 pea 3f9 <DBL_MANT_DIG+0x3c4> <== NOT EXECUTED
58190: 4879 0006 a03f pea 6a03f <msdos_file_handlers+0x61> <== NOT EXECUTED
58196: 4eb9 0005 43cc jsr 543cc <__assert_func> <== NOT EXECUTED
5819c: 200c movel %a4,%d0 <== NOT EXECUTED
5819e: 284d moveal %a5,%a4 <== NOT EXECUTED
581a0: 2a40 moveal %d0,%a5 <== NOT EXECUTED
/*
* If we are not to create the entry return a not found error.
*/
if (!create_node)
return MSDOS_NAME_NOT_FOUND_ERR;
581a2: 2c3c 0000 7d01 movel #32001,%d6 <== NOT EXECUTED
}
/*
* If we are not to create the entry return a not found error.
*/
if (!create_node)
581a8: 4a05 tstb %d5 <== NOT EXECUTED
581aa: 6600 fa4c bnew 57bf8 <msdos_find_name_in_fat_file+0x3ce><== NOT EXECUTED
empty_space_entry = 0;
read_cluster = true;
}
return 0;
}
581ae: 2006 movel %d6,%d0 <== NOT EXECUTED
581b0: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5 <== NOT EXECUTED
581b6: 4e5e unlk %fp <== NOT EXECUTED
581b8: 4e75 rts <== NOT EXECUTED
uint32_t empty_space_count = 0;
bool empty_space_found = false;
uint32_t entries_per_block;
bool read_cluster = false;
assert(name_len > 0);
581ba: 4879 0006 a0a1 pea 6a0a1 <msdos_file_handlers+0xc3> <== NOT EXECUTED
581c0: 4879 0006 a0d7 pea 6a0d7 <__FUNCTION__.7675> <== NOT EXECUTED
581c6: 4878 03c9 pea 3c9 <DBL_MANT_DIG+0x394> <== NOT EXECUTED
581ca: 4879 0006 a03f pea 6a03f <msdos_file_handlers+0x61> <== NOT EXECUTED
581d0: 4eb9 0005 43cc jsr 543cc <__assert_func> <== NOT EXECUTED
000581d6 <msdos_find_node_by_cluster_num_in_fat_file>:
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t bts2rd = 0;
uint32_t i = 0, j = 0;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
581d6: 7001 moveq #1,%d0 <== NOT EXECUTED
fat_file_fd_t *fat_fd,
uint32_t cl4find,
fat_dir_pos_t *dir_pos,
char *dir_entry
)
{
581d8: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
int rc = RC_OK;
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
581dc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
fat_file_fd_t *fat_fd,
uint32_t cl4find,
fat_dir_pos_t *dir_pos,
char *dir_entry
)
{
581e0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
581e4: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
581e8: 2c2e 0010 movel %fp@(16),%d6 <== NOT EXECUTED
int rc = RC_OK;
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
581ec: 2a68 0008 moveal %a0@(8),%a5 <== NOT EXECUTED
uint32_t bts2rd = 0;
uint32_t i = 0, j = 0;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
581f0: b0ab 0020 cmpl %a3@(32),%d0 <== NOT EXECUTED
581f4: 6700 00ec beqw 582e2 <msdos_find_node_by_cluster_num_in_fat_file+0x10c><== NOT EXECUTED
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
bts2rd = fat_fd->fat_file_size;
else
bts2rd = fs_info->fat.vol.bpc;
581f8: 4285 clrl %d5 <== NOT EXECUTED
fs_info->cl_buf)) != FAT_EOF)
{
if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )
rtems_set_errno_and_return_minus_one( EIO );
assert(ret == bts2rd);
581fa: 4287 clrl %d7 <== NOT EXECUTED
581fc: 49f9 0005 1bd0 lea 51bd0 <fat_file_read>,%a4 <== NOT EXECUTED
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
bts2rd = fat_fd->fat_file_size;
else
bts2rd = fs_info->fat.vol.bpc;
58202: 3a2d 0006 movew %a5@(6),%d5 <== NOT EXECUTED
58206: 206d 0094 moveal %a5@(148),%a0 <== NOT EXECUTED
while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * bts2rd, bts2rd,
5820a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5820c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5820e: 2f07 movel %d7,%sp@- <== NOT EXECUTED
58210: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58212: 2f0d movel %a5,%sp@- <== NOT EXECUTED
58214: 4e94 jsr %a4@ <== NOT EXECUTED
58216: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5821a: 4a80 tstl %d0 <== NOT EXECUTED
5821c: 6700 00ee beqw 5830c <msdos_find_node_by_cluster_num_in_fat_file+0x136><== NOT EXECUTED
fs_info->cl_buf)) != FAT_EOF)
{
if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )
58220: 721f moveq #31,%d1 <== NOT EXECUTED
58222: b280 cmpl %d0,%d1 <== NOT EXECUTED
58224: 6c00 00f4 bgew 5831a <msdos_find_node_by_cluster_num_in_fat_file+0x144><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EIO );
assert(ret == bts2rd);
58228: ba80 cmpl %d0,%d5 <== NOT EXECUTED
5822a: 6600 0106 bnew 58332 <msdos_find_node_by_cluster_num_in_fat_file+0x15c><== NOT EXECUTED
5822e: 206d 0094 moveal %a5@(148),%a0 <== NOT EXECUTED
58232: 4282 clrl %d2 <== NOT EXECUTED
58234: 2448 moveal %a0,%a2 <== NOT EXECUTED
for (i = 0; i < bts2rd; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
{
char* entry = (char*) fs_info->cl_buf + i;
/* if this and all rest entries are empty - return not-found */
if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
58236: 1012 moveb %a2@,%d0 <== NOT EXECUTED
58238: 674c beqs 58286 <msdos_find_node_by_cluster_num_in_fat_file+0xb0><== NOT EXECUTED
MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)
return MSDOS_NAME_NOT_FOUND_ERR;
/* if this entry is empty - skip it */
if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
5823a: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
58240: 0c80 0000 00e5 cmpil #229,%d0 <== NOT EXECUTED
58246: 672c beqs 58274 <msdos_find_node_by_cluster_num_in_fat_file+0x9e><== NOT EXECUTED
static inline uint16_t m68k_swap_u16(
uint16_t value
)
{
return (((value & 0xff) << 8) | ((value >> 8) & 0xff));
58248: 4284 clrl %d4 <== NOT EXECUTED
5824a: 4283 clrl %d3 <== NOT EXECUTED
5824c: 382a 0014 movew %a2@(20),%d4 <== NOT EXECUTED
58250: 362a 001a movew %a2@(26),%d3 <== NOT EXECUTED
58254: 2004 movel %d4,%d0 <== NOT EXECUTED
58256: 2203 movel %d3,%d1 <== NOT EXECUTED
58258: e08c lsrl #8,%d4 <== NOT EXECUTED
5825a: e08b lsrl #8,%d3 <== NOT EXECUTED
5825c: e188 lsll #8,%d0 <== NOT EXECUTED
5825e: e189 lsll #8,%d1 <== NOT EXECUTED
58260: 8084 orl %d4,%d0 <== NOT EXECUTED
58262: 8283 orl %d3,%d1 <== NOT EXECUTED
MSDOS_THIS_DIR_ENTRY_EMPTY)
continue;
/* if get a non-empty entry - compare clusters num */
if (MSDOS_EXTRACT_CLUSTER_NUM(entry) == cl4find)
58264: 4840 swap %d0 <== NOT EXECUTED
58266: 4240 clrw %d0 <== NOT EXECUTED
58268: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
5826e: 8081 orl %d1,%d0 <== NOT EXECUTED
58270: bc80 cmpl %d0,%d6 <== NOT EXECUTED
58272: 6722 beqs 58296 <msdos_find_node_by_cluster_num_in_fat_file+0xc0><== NOT EXECUTED
if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )
rtems_set_errno_and_return_minus_one( EIO );
assert(ret == bts2rd);
for (i = 0; i < bts2rd; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
58274: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
5827a: 45ea 0020 lea %a2@(32),%a2 <== NOT EXECUTED
5827e: ba82 cmpl %d2,%d5 <== NOT EXECUTED
58280: 62b4 bhis 58236 <msdos_find_node_by_cluster_num_in_fat_file+0x60><== NOT EXECUTED
58282: de85 addl %d5,%d7 <== NOT EXECUTED
58284: 6084 bras 5820a <msdos_find_node_by_cluster_num_in_fat_file+0x34><== NOT EXECUTED
char* entry = (char*) fs_info->cl_buf + i;
/* if this and all rest entries are empty - return not-found */
if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)
return MSDOS_NAME_NOT_FOUND_ERR;
58286: 203c 0000 7d01 movel #32001,%d0 <== NOT EXECUTED
}
}
j++;
}
return MSDOS_NAME_NOT_FOUND_ERR;
}
5828c: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
58292: 4e5e unlk %fp <== NOT EXECUTED
58294: 4e75 rts <== NOT EXECUTED
/* if get a non-empty entry - compare clusters num */
if (MSDOS_EXTRACT_CLUSTER_NUM(entry) == cl4find)
{
/* on success fill aux structure and copy all 32 bytes */
rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM, j * bts2rd,
58296: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5829a: 2f07 movel %d7,%sp@- <== NOT EXECUTED
5829c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
582a0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
582a2: 2f0d movel %a5,%sp@- <== NOT EXECUTED
582a4: 4eb9 0005 2006 jsr 52006 <fat_file_ioctl> <== NOT EXECUTED
&dir_pos->sname.cln);
if (rc != RC_OK)
582aa: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
582ae: 4a80 tstl %d0 <== NOT EXECUTED
582b0: 66da bnes 5828c <msdos_find_node_by_cluster_num_in_fat_file+0xb6><== NOT EXECUTED
return rc;
dir_pos->sname.ofs = i;
582b2: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
582b6: 72ff moveq #-1,%d1 <== NOT EXECUTED
dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
memcpy(dir_entry, entry,
582b8: 206e 0018 moveal %fp@(24),%a0 <== NOT EXECUTED
rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM, j * bts2rd,
&dir_pos->sname.cln);
if (rc != RC_OK)
return rc;
dir_pos->sname.ofs = i;
582bc: 2342 0004 movel %d2,%a1@(4) <== NOT EXECUTED
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
582c0: 2341 0008 movel %d1,%a1@(8) <== NOT EXECUTED
dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
582c4: 2341 000c movel %d1,%a1@(12) <== NOT EXECUTED
memcpy(dir_entry, entry,
582c8: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
582ca: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
582cc: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
582ce: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
582d0: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
582d2: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
582d4: 20da movel %a2@+,%a0@+ <== NOT EXECUTED
582d6: 2092 movel %a2@,%a0@ <== NOT EXECUTED
}
}
j++;
}
return MSDOS_NAME_NOT_FOUND_ERR;
}
582d8: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
582de: 4e5e unlk %fp <== NOT EXECUTED
582e0: 4e75 rts <== NOT EXECUTED
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t bts2rd = 0;
uint32_t i = 0, j = 0;
if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
582e2: 4aab 0024 tstl %a3@(36) <== NOT EXECUTED
582e6: 6600 ff10 bnew 581f8 <msdos_find_node_by_cluster_num_in_fat_file+0x22><== NOT EXECUTED
582ea: 7203 moveq #3,%d1 <== NOT EXECUTED
582ec: 102d 000e moveb %a5@(14),%d0 <== NOT EXECUTED
582f0: c081 andl %d1,%d0 <== NOT EXECUTED
582f2: 4a00 tstb %d0 <== NOT EXECUTED
582f4: 6700 ff02 beqw 581f8 <msdos_find_node_by_cluster_num_in_fat_file+0x22><== NOT EXECUTED
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
bts2rd = fat_fd->fat_file_size;
582f8: 2a2b 0018 movel %a3@(24),%d5 <== NOT EXECUTED
fs_info->cl_buf)) != FAT_EOF)
{
if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )
rtems_set_errno_and_return_minus_one( EIO );
assert(ret == bts2rd);
582fc: 4287 clrl %d7 <== NOT EXECUTED
582fe: 49f9 0005 1bd0 lea 51bd0 <fat_file_read>,%a4 <== NOT EXECUTED
58304: 206d 0094 moveal %a5@(148),%a0 <== NOT EXECUTED
58308: 6000 ff00 braw 5820a <msdos_find_node_by_cluster_num_in_fat_file+0x34><== NOT EXECUTED
}
}
j++;
}
return MSDOS_NAME_NOT_FOUND_ERR;
}
5830c: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
return RC_OK;
}
}
j++;
}
return MSDOS_NAME_NOT_FOUND_ERR;
58312: 303c 7d01 movew #32001,%d0 <== NOT EXECUTED
}
58316: 4e5e unlk %fp <== NOT EXECUTED
58318: 4e75 rts <== NOT EXECUTED
while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * bts2rd, bts2rd,
fs_info->cl_buf)) != FAT_EOF)
{
if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )
rtems_set_errno_and_return_minus_one( EIO );
5831a: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
58320: 7405 moveq #5,%d2 <== NOT EXECUTED
58322: 2040 moveal %d0,%a0 <== NOT EXECUTED
58324: 70ff moveq #-1,%d0 <== NOT EXECUTED
58326: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
}
j++;
}
return MSDOS_NAME_NOT_FOUND_ERR;
}
58328: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5832e: 4e5e unlk %fp <== NOT EXECUTED
58330: 4e75 rts <== NOT EXECUTED
fs_info->cl_buf)) != FAT_EOF)
{
if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )
rtems_set_errno_and_return_minus_one( EIO );
assert(ret == bts2rd);
58332: 4879 0006 a0ae pea 6a0ae <msdos_file_handlers+0xd0> <== NOT EXECUTED
58338: 4879 0006 a0f3 pea 6a0f3 <__FUNCTION__.7743> <== NOT EXECUTED
5833e: 4878 064e pea 64e <DBL_MAX_EXP+0x24d> <== NOT EXECUTED
58342: 4879 0006 a03f pea 6a03f <msdos_file_handlers+0x61> <== NOT EXECUTED
58348: 4eb9 0005 43cc jsr 543cc <__assert_func> <== NOT EXECUTED
0004d1ea <msdos_format>:
)
/*-------------------------------------------------------------------------*\
| Return Value: |
| 0, if success, -1 and errno if failed |
\*=========================================================================*/
{
4d1ea: 4e56 fd20 linkw %fp,#-736
4d1ee: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
msdos_format_param_t fmt_params;
/*
* open device for writing
*/
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "open device\n");
4d1f2: 4879 0006 9bd7 pea 69bd7 <_CPU_m68k_BFFFO_table+0x140>
4d1f8: 4878 0002 pea 2 <DOUBLE_FLOAT>
)
/*-------------------------------------------------------------------------*\
| Return Value: |
| 0, if success, -1 and errno if failed |
\*=========================================================================*/
{
4d1fc: 286e 000c moveal %fp@(12),%a4
4d200: 282e 0008 movel %fp@(8),%d4
msdos_format_param_t fmt_params;
/*
* open device for writing
*/
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "open device\n");
4d204: 2f0c movel %a4,%sp@-
4d206: 4eba fd08 jsr %pc@(4cf10 <msdos_format_printf>)
fd = open(devname, O_RDWR);
4d20a: 4878 0002 pea 2 <DOUBLE_FLOAT>
4d20e: 2f04 movel %d4,%sp@-
4d210: 4eb9 0004 5a28 jsr 45a28 <open>
if (fd == -1) {
4d216: 4fef 0014 lea %sp@(20),%sp
/*
* open device for writing
*/
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "open device\n");
fd = open(devname, O_RDWR);
4d21a: 2640 moveal %d0,%a3
if (fd == -1) {
4d21c: 70ff moveq #-1,%d0
4d21e: b08b cmpl %a3,%d0
4d220: 6700 04b8 beqw 4d6da <msdos_format+0x4f0>
}
/*
* sanity check on device
*/
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d224: 2f04 movel %d4,%sp@-
4d226: 4879 0006 9c89 pea 69c89 <_CPU_m68k_BFFFO_table+0x1f2>
4d22c: 4878 0002 pea 2 <DOUBLE_FLOAT>
4d230: 2f0c movel %a4,%sp@-
4d232: 4eba fcdc jsr %pc@(4cf10 <msdos_format_printf>)
"stat check: %s\n", devname);
if (ret_val == 0) {
ret_val = fstat(fd, &stat_buf);
4d236: 486e fd6a pea %fp@(-662)
4d23a: 2f0b movel %a3,%sp@-
4d23c: 4eb9 0004 4c7c jsr 44c7c <fstat>
4d242: 2e00 movel %d0,%d7
}
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,
4d244: 2f04 movel %d4,%sp@-
4d246: 4879 0006 9c99 pea 69c99 <_CPU_m68k_BFFFO_table+0x202>
4d24c: 4878 0001 pea 1 <ADD>
4d250: 2f0c movel %a4,%sp@-
4d252: 4eba fcbc jsr %pc@(4cf10 <msdos_format_printf>)
"formating: %s\n", devname);
/* rtems feature: no block devices, all are character devices */
if ((ret_val == 0) && (!S_ISBLK(stat_buf.st_mode))) {
4d256: 4fef 0028 lea %sp@(40),%sp
4d25a: 4a87 tstl %d7
4d25c: 6620 bnes 4d27e <msdos_format+0x94> <== NEVER TAKEN
4d25e: 202e fd76 movel %fp@(-650),%d0
4d262: 0280 0000 f000 andil #61440,%d0
4d268: 0c80 0000 6000 cmpil #24576,%d0
4d26e: 6758 beqs 4d2c8 <msdos_format+0xde> <== ALWAYS TAKEN
errno = ENOTTY;
4d270: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
ret_val = -1;
4d276: 7eff moveq #-1,%d7 <== NOT EXECUTED
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,
"formating: %s\n", devname);
/* rtems feature: no block devices, all are character devices */
if ((ret_val == 0) && (!S_ISBLK(stat_buf.st_mode))) {
errno = ENOTTY;
4d278: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d27a: 7019 moveq #25,%d0 <== NOT EXECUTED
4d27c: 2080 movel %d0,%a0@ <== NOT EXECUTED
/*
* cleanup:
* sync and unlock disk
* free any data structures (not needed now)
*/
if (fd != -1) {
4d27e: 70ff moveq #-1,%d0 <== NOT EXECUTED
4d280: b08b cmpl %a3,%d0 <== NOT EXECUTED
4d282: 662e bnes 4d2b2 <msdos_format+0xc8> <== NOT EXECUTED
close(fd);
}
return ret_val;
}
4d284: 2007 movel %d7,%d0 <== NOT EXECUTED
4d286: 4cee 3cfc fd20 moveml %fp@(-736),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d28c: 4e5e unlk %fp <== NOT EXECUTED
4d28e: 4e75 rts <== NOT EXECUTED
4d290: 2e00 movel %d0,%d7
fmt_params.bytes_per_sector,
tmp_sec);
}
}
if (ret_val == 0 && rqdata != NULL && rqdata->sync_device) {
4d292: 4a87 tstl %d7
4d294: 661c bnes 4d2b2 <msdos_format+0xc8> <== NEVER TAKEN
4d296: 4a8c tstl %a4
4d298: 6718 beqs 4d2b2 <msdos_format+0xc8> <== NEVER TAKEN
4d29a: 4a2c 0017 tstb %a4@(23)
4d29e: 6712 beqs 4d2b2 <msdos_format+0xc8>
return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);
}
static inline int rtems_disk_fd_sync(int fd)
{
return ioctl(fd, RTEMS_BLKIO_SYNCDEV);
4d2a0: 2f3c 2000 4206 movel #536887814,%sp@-
4d2a6: 2f0b movel %a3,%sp@-
4d2a8: 4eb9 0005 46f4 jsr 546f4 <ioctl>
4d2ae: 508f addql #8,%sp
4d2b0: 2e00 movel %d0,%d7
* cleanup:
* sync and unlock disk
* free any data structures (not needed now)
*/
if (fd != -1) {
close(fd);
4d2b2: 2f0b movel %a3,%sp@-
4d2b4: 4eb9 0004 4918 jsr 44918 <close>
4d2ba: 588f addql #4,%sp
}
return ret_val;
}
4d2bc: 2007 movel %d7,%d0
4d2be: 4cee 3cfc fd20 moveml %fp@(-736),%d2-%d7/%a2-%a5
4d2c4: 4e5e unlk %fp
4d2c6: 4e75 rts
uint64_t total_size = 0;
uint32_t data_clusters_cnt;
uint8_t iteration_cnt = 0;
uint8_t fat_type = UINT8_MAX;
memset(fmt_params,0,sizeof(*fmt_params));
4d2c8: 4878 0050 pea 50 <DBL_MANT_DIG+0x1b>
4d2cc: 42a7 clrl %sp@-
4d2ce: 486e fdb0 pea %fp@(-592)
4d2d2: 4eb9 0005 b1f8 jsr 5b1f8 <memset>
static inline int rtems_disk_fd_get_media_block_size(
int fd,
uint32_t *media_block_size
)
{
return ioctl(fd, RTEMS_BLKIO_GETMEDIABLKSIZE, media_block_size);
4d2d8: 486e fdb0 pea %fp@(-592)
4d2dc: 2f3c 4004 4202 movel #1074020866,%sp@-
4d2e2: 2f0b movel %a3,%sp@-
4d2e4: 4eb9 0005 46f4 jsr 546f4 <ioctl>
* At least one thing we don't have to magically guess...
*/
if (ret_val == 0) {
ret_val = rtems_disk_fd_get_media_block_size(fd, &fmt_params->bytes_per_sector);
}
if (ret_val == 0) {
4d2ea: 4fef 0018 lea %sp@(24),%sp
4d2ee: 4a80 tstl %d0
4d2f0: 6700 041e beqw 4d710 <msdos_format+0x526>
4d2f4: 226e fdb4 moveal %fp@(-588),%a1 <== NOT EXECUTED
}
++iteration_cnt;
}
}
if ( fmt_params->totl_sector_cnt == 0 )
4d2f8: 4a89 tstl %a1 <== NOT EXECUTED
4d2fa: 6700 06f8 beqw 4d9f4 <msdos_format+0x80a> <== NOT EXECUTED
4d2fe: 242e fdb8 movel %fp@(-584),%d2 <== NOT EXECUTED
4d302: 2e00 movel %d0,%d7 <== NOT EXECUTED
}
/*
* determine location and size of root directory
* for formatting
*/
if (fmt_params->root_dir_sectors > 0) {
4d304: 202e fdcc movel %fp@(-564),%d0
4d308: 6700 086c beqw 4db76 <msdos_format+0x98c>
fmt_params->root_dir_start_sec =
fmt_params->rsvd_sector_cnt
+ (fmt_params-> fat_num*fmt_params->sectors_per_fat);
fmt_params->root_dir_fmt_sec_cnt = fmt_params->root_dir_sectors;
4d30c: 2d40 fdd4 movel %d0,%fp@(-556)
* for formatting
*/
if (fmt_params->root_dir_sectors > 0) {
fmt_params->root_dir_start_sec =
fmt_params->rsvd_sector_cnt
+ (fmt_params-> fat_num*fmt_params->sectors_per_fat);
4d310: 4280 clrl %d0
4d312: 102e fde0 moveb %fp@(-544),%d0
4d316: 41ee fdc0 lea %fp@(-576),%a0
4d31a: 4c10 0800 mulsl %a0@,%d0
4d31e: d480 addl %d0,%d2
4d320: 2d42 fdd0 movel %d2,%fp@(-560)
fmt_params->root_dir_fmt_sec_cnt = fmt_params->sectors_per_cluster;
}
/*
* determine usable OEMName
*/
if (ret_val == 0) {
4d324: 4a87 tstl %d7
4d326: 6600 ff56 bnew 4d27e <msdos_format+0x94>
const char *from;
char *to = fmt_params->OEMName;
int cnt;
from = "RTEMS"; /* default: make "from" point to OS Name */
if ((rqdata != NULL) &&
4d32a: 4a8c tstl %a4
4d32c: 6700 0be0 beqw 4df0e <msdos_format+0xd24>
(rqdata->OEMName != NULL)) {
4d330: 2454 moveal %a4@,%a2
if (ret_val == 0) {
const char *from;
char *to = fmt_params->OEMName;
int cnt;
from = "RTEMS"; /* default: make "from" point to OS Name */
if ((rqdata != NULL) &&
4d332: 4a8a tstl %a2
4d334: 6700 0bd8 beqw 4df0e <msdos_format+0xd24>
/*
* determine usable OEMName
*/
if (ret_val == 0) {
const char *from;
char *to = fmt_params->OEMName;
4d338: 41ee fdb0 lea %fp@(-592),%a0
const char valid_media_codes[] =
{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
if (NULL==memchr(valid_media_codes,
rqdata->media,
sizeof(valid_media_codes))) {
ret_val = -1;
4d33c: 7208 moveq #8,%d1
/*
* determine usable OEMName
*/
if (ret_val == 0) {
const char *from;
char *to = fmt_params->OEMName;
4d33e: 41e8 0033 lea %a0@(51),%a0
4d342: 2279 0006 adbc moveal 6adbc <__ctype_ptr__>,%a1
from = rqdata->OEMName;
}
for (cnt = 0;
cnt < (sizeof(fmt_params->OEMName)-1);
cnt++) {
if (isprint((unsigned char)*from)) {
4d348: 4280 clrl %d0
4d34a: 1412 moveb %a2@,%d2
4d34c: 1002 moveb %d2,%d0
4d34e: 1031 0801 moveb %a1@(00000001,%d0:l),%d0
4d352: 49c0 extbl %d0
4d354: 0280 0000 0097 andil #151,%d0
4d35a: 6700 0804 beqw 4db60 <msdos_format+0x976>
*to++ = *from++;
4d35e: 528a addql #1,%a2
4d360: 10c2 moveb %d2,%a0@+
4d362: 5381 subql #1,%d1
* at that character and replace all following characters
* with a ' '
*/
*to++=' ';
}
*to = '\0';
4d364: 4210 clrb %a0@
from = "RTEMS"; /* default: make "from" point to OS Name */
if ((rqdata != NULL) &&
(rqdata->OEMName != NULL)) {
from = rqdata->OEMName;
}
for (cnt = 0;
4d366: 4a81 tstl %d1
4d368: 66de bnes 4d348 <msdos_format+0x15e>
if (ret_val == 0) {
const char *from;
char *to = fmt_params->VolLabel;
int cnt;
from = ""; /* default: make "from" point to empty string */
if ((rqdata != NULL) &&
4d36a: 4a8c tstl %a4
4d36c: 6700 0c12 beqw 4df80 <msdos_format+0xd96>
(rqdata->VolLabel != NULL)) {
4d370: 246c 0004 moveal %a4@(4),%a2
if (ret_val == 0) {
const char *from;
char *to = fmt_params->VolLabel;
int cnt;
from = ""; /* default: make "from" point to empty string */
if ((rqdata != NULL) &&
4d374: 4a8a tstl %a2
4d376: 6700 0c08 beqw 4df80 <msdos_format+0xd96>
/*
* determine usable Volume Label
*/
if (ret_val == 0) {
const char *from;
char *to = fmt_params->VolLabel;
4d37a: 41ee fdb0 lea %fp@(-592),%a0
const char valid_media_codes[] =
{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
if (NULL==memchr(valid_media_codes,
rqdata->media,
sizeof(valid_media_codes))) {
ret_val = -1;
4d37e: 720b moveq #11,%d1
/*
* determine usable Volume Label
*/
if (ret_val == 0) {
const char *from;
char *to = fmt_params->VolLabel;
4d380: 41e8 003c lea %a0@(60),%a0
int cnt;
from = ""; /* default: make "from" point to empty string */
if ((rqdata != NULL) &&
(rqdata->VolLabel != NULL)) {
from = rqdata->VolLabel;
fmt_params->VolLabel_present = true;
4d384: 7001 moveq #1,%d0
4d386: 1d40 fdf8 moveb %d0,%fp@(-520)
}
for (cnt = 0;
cnt < (sizeof(fmt_params->VolLabel)-1);
cnt++) {
if (isprint((unsigned char)*from)) {
4d38a: 4280 clrl %d0
4d38c: 1412 moveb %a2@,%d2
4d38e: 1002 moveb %d2,%d0
4d390: 1031 0801 moveb %a1@(00000001,%d0:l),%d0
4d394: 49c0 extbl %d0
4d396: 0280 0000 0097 andil #151,%d0
4d39c: 6700 07b0 beqw 4db4e <msdos_format+0x964>
*to++ = *from++;
4d3a0: 528a addql #1,%a2
4d3a2: 5381 subql #1,%d1
4d3a4: 10c2 moveb %d2,%a0@+
* at that character and replace all following characters
* with a ' '
*/
*to++=' ';
}
*to = '\0';
4d3a6: 4210 clrb %a0@
if ((rqdata != NULL) &&
(rqdata->VolLabel != NULL)) {
from = rqdata->VolLabel;
fmt_params->VolLabel_present = true;
}
for (cnt = 0;
4d3a8: 4a81 tstl %d1
4d3aa: 66de bnes 4d38a <msdos_format+0x1a0> <== ALWAYS TAKEN
{
int ret_val = 0;
int rc;
struct timeval time_value;
rc = rtems_clock_get_tod_timeval(&time_value);
4d3ac: 45ee fe00 lea %fp@(-512),%a2
4d3b0: 2f0a movel %a2,%sp@-
4d3b2: 4eb9 0005 502c jsr 5502c <rtems_clock_get_tod_timeval>
if (rc == RTEMS_SUCCESSFUL) {
4d3b8: 588f addql #4,%sp
4d3ba: 4a80 tstl %d0
4d3bc: 6600 0baa bnew 4df68 <msdos_format+0xd7e>
*volid_ptr = time_value.tv_sec + time_value.tv_sec;
4d3c0: 202e fe00 movel %fp@(-512),%d0 <== NOT EXECUTED
4d3c4: d080 addl %d0,%d0 <== NOT EXECUTED
4d3c6: 2d40 fdfa movel %d0,%fp@(-518) <== NOT EXECUTED
ret_val = msdos_format_determine_fmt_params(fd,rqdata,&fmt_params);
}
/*
* if requested, write whole disk/partition with 0xe5
*/
if ((ret_val == 0) &&
4d3ca: 4a8c tstl %a4
4d3cc: 6708 beqs 4d3d6 <msdos_format+0x1ec> <== NEVER TAKEN
(rqdata != NULL) &&
4d3ce: 4a2c 0015 tstb %a4@(21)
4d3d2: 6700 0636 beqw 4da0a <msdos_format+0x820>
*/
if (ret_val == 0) {
/*
* Read the current MBR to obtain the partition table.
*/
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d3d6: 4879 0006 9c4c pea 69c4c <_CPU_m68k_BFFFO_table+0x1b5>
4d3dc: 4878 0002 pea 2 <DOUBLE_FLOAT>
4d3e0: 2f0c movel %a4,%sp@-
4d3e2: 4eba fb2c jsr %pc@(4cf10 <msdos_format_printf>)
"read MRB sector\n");
ret_val = msdos_format_read_sec(fd,
4d3e6: 242e fdb0 movel %fp@(-592),%d2
| 0, if success, -1 and errno if failed |
\*=========================================================================*/
{
int ret_val = 0;
if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {
4d3ea: 42a7 clrl %sp@-
4d3ec: 42a7 clrl %sp@-
4d3ee: 42a7 clrl %sp@-
4d3f0: 2f0b movel %a3,%sp@-
4d3f2: 4eb9 0005 4750 jsr 54750 <lseek>
4d3f8: 4fef 001c lea %sp@(28),%sp
4d3fc: 4a80 tstl %d0
4d3fe: 6b00 0768 bmiw 4db68 <msdos_format+0x97e>
ret_val = -1;
}
if (ret_val == 0) {
if (0 > read(fd,buffer,sector_size)) {
4d402: 2f02 movel %d2,%sp@-
4d404: 2f0a movel %a2,%sp@-
4d406: 2f0b movel %a3,%sp@-
4d408: 4eb9 0005 4a98 jsr 54a98 <read>
4d40e: 4fef 000c lea %sp@(12),%sp
4d412: 4a80 tstl %d0
4d414: 6d00 0752 bltw 4db68 <msdos_format+0x97e>
ret_val = msdos_format_read_sec(fd,
0,
fmt_params.bytes_per_sector,
tmp_sec);
if (ret_val == 0) {
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d418: 4879 0006 9ca8 pea 69ca8 <_CPU_m68k_BFFFO_table+0x211>
4d41e: 4878 0002 pea 2 <DOUBLE_FLOAT>
4d422: 2f0c movel %a4,%sp@-
4d424: 4eba faea jsr %pc@(4cf10 <msdos_format_printf>)
{
uint32_t total_sectors_num16 = 0;
uint32_t total_sectors_num32 = 0;
/* store total sector count in either 16 or 32 bit field in mbr */
if (fmt_params->totl_sector_cnt < 0x10000) {
4d428: 262e fdb4 movel %fp@(-588),%d3
4d42c: 4fef 000c lea %sp@(12),%sp
4d430: 0c83 0000 ffff cmpil #65535,%d3
4d436: 6200 0a0e bhiw 4de46 <msdos_format+0xc5c>
4d43a: 2203 movel %d3,%d1
4d43c: e089 lsrl #8,%d1
4d43e: 4204 clrb %d4
4d440: 1d43 fd60 moveb %d3,%fp@(-672)
4d444: 1d41 fd5f moveb %d1,%fp@(-673)
4d448: 9bcd subal %a5,%a5
4d44a: 4203 clrb %d3
4d44c: 4202 clrb %d2
4d44e: 1d44 fd58 moveb %d4,%fp@(-680)
* finally we are there: let's fill in the values into the MBR
* but first clear the MRB leaving the partition table.
*/
#define RTEMS_IDE_PARTITION_TABLE_OFFSET 0x1be
#define RTEMS_IDE_PARTITION_TABLE_SIZE (4 * 16)
memset(mbr,0,RTEMS_IDE_PARTITION_TABLE_OFFSET);
4d452: 4878 01be pea 1be <DBL_MANT_DIG+0x189>
FAT_SET_BR_SECTORS_PER_TRACK(mbr , 255); /* only needed for INT13... */
FAT_SET_BR_NUMBER_OF_HEADS(mbr , 6); /* only needed for INT13... */
FAT_SET_BR_HIDDEN_SECTORS(mbr , 1); /* only needed for INT13... */
FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);
if (fmt_params->fattype != FAT_FAT32) {
4d456: 4284 clrl %d4
* finally we are there: let's fill in the values into the MBR
* but first clear the MRB leaving the partition table.
*/
#define RTEMS_IDE_PARTITION_TABLE_OFFSET 0x1be
#define RTEMS_IDE_PARTITION_TABLE_SIZE (4 * 16)
memset(mbr,0,RTEMS_IDE_PARTITION_TABLE_OFFSET);
4d458: 42a7 clrl %sp@-
4d45a: 2f0a movel %a2,%sp@-
4d45c: 4eb9 0005 b1f8 jsr 5b1f8 <memset>
memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
fmt_params->OEMName,
FAT_BR_OEMNAME_SIZE);
FAT_SET_BR_BYTES_PER_SECTOR(mbr , fmt_params->bytes_per_sector);
FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
4d462: 222e fdb8 movel %fp@(-584),%d1
*/
/*
* fill OEMName
*/
memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
fmt_params->OEMName,
4d466: 43ee fdb0 lea %fp@(-592),%a1
4d46a: 43e9 0033 lea %a1@(51),%a1
* with 0xEB,....
*/
/*
* fill OEMName
*/
memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
4d46e: 41ea 0003 lea %a2@(3),%a0
fmt_params->OEMName,
FAT_BR_OEMNAME_SIZE);
FAT_SET_BR_BYTES_PER_SECTOR(mbr , fmt_params->bytes_per_sector);
FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
4d472: 2c01 movel %d1,%d6
4d474: e08e lsrl #8,%d6
FAT_SET_BR_SECTORS_PER_TRACK(mbr , 255); /* only needed for INT13... */
FAT_SET_BR_NUMBER_OF_HEADS(mbr , 6); /* only needed for INT13... */
FAT_SET_BR_HIDDEN_SECTORS(mbr , 1); /* only needed for INT13... */
FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);
if (fmt_params->fattype != FAT_FAT32) {
4d476: 182e fde2 moveb %fp@(-542),%d4
4d47a: 4fef 000c lea %sp@(12),%sp
* but first clear the MRB leaving the partition table.
*/
#define RTEMS_IDE_PARTITION_TABLE_OFFSET 0x1be
#define RTEMS_IDE_PARTITION_TABLE_SIZE (4 * 16)
memset(mbr,0,RTEMS_IDE_PARTITION_TABLE_OFFSET);
memset(mbr + RTEMS_IDE_PARTITION_TABLE_OFFSET + RTEMS_IDE_PARTITION_TABLE_SIZE,
4d47e: 4240 clrw %d0
* fill OEMName
*/
memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
fmt_params->OEMName,
FAT_BR_OEMNAME_SIZE);
FAT_SET_BR_BYTES_PER_SECTOR(mbr , fmt_params->bytes_per_sector);
4d480: 2e2e fdb0 movel %fp@(-592),%d7
4d484: e08f lsrl #8,%d7
* but first clear the MRB leaving the partition table.
*/
#define RTEMS_IDE_PARTITION_TABLE_OFFSET 0x1be
#define RTEMS_IDE_PARTITION_TABLE_SIZE (4 * 16)
memset(mbr,0,RTEMS_IDE_PARTITION_TABLE_OFFSET);
memset(mbr + RTEMS_IDE_PARTITION_TABLE_OFFSET + RTEMS_IDE_PARTITION_TABLE_SIZE,
4d486: 3d40 fffe movew %d0,%fp@(-2)
* fill OEMName
*/
memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
fmt_params->OEMName,
FAT_BR_OEMNAME_SIZE);
FAT_SET_BR_BYTES_PER_SECTOR(mbr , fmt_params->bytes_per_sector);
4d48a: 102e fdb3 moveb %fp@(-589),%d0
* with 0xEB,....
*/
/*
* fill OEMName
*/
memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
4d48e: 2091 movel %a1@,%a0@
4d490: 2569 0004 0007 movel %a1@(4),%a2@(7)
FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
/* number of FATs on medium */
FAT_SET_BR_FAT_NUM(mbr , 2); /* standard/recommended value */
FAT_SET_BR_FILES_PER_ROOT_DIR(mbr , fmt_params->files_per_root_dir);
4d496: 2a2e fdc8 movel %fp@(-568),%d5
4d49a: e08d lsrl #8,%d5
memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
fmt_params->OEMName,
FAT_BR_OEMNAME_SIZE);
FAT_SET_BR_BYTES_PER_SECTOR(mbr , fmt_params->bytes_per_sector);
FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
4d49c: 1d41 fe0e moveb %d1,%fp@(-498)
/* number of FATs on medium */
FAT_SET_BR_FAT_NUM(mbr , 2); /* standard/recommended value */
4d4a0: 7202 moveq #2,%d1
* fill OEMName
*/
memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
fmt_params->OEMName,
FAT_BR_OEMNAME_SIZE);
FAT_SET_BR_BYTES_PER_SECTOR(mbr , fmt_params->bytes_per_sector);
4d4a2: 1d47 fe0c moveb %d7,%fp@(-500)
FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
4d4a6: 1d46 fe0f moveb %d6,%fp@(-497)
/* number of FATs on medium */
FAT_SET_BR_FAT_NUM(mbr , 2); /* standard/recommended value */
4d4aa: 1d41 fe10 moveb %d1,%fp@(-496)
FAT_SET_BR_FILES_PER_ROOT_DIR(mbr , fmt_params->files_per_root_dir);
4d4ae: 1c2e fdcb moveb %fp@(-565),%d6
FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);
4d4b2: 1e2e fd60 moveb %fp@(-672),%d7
4d4b6: 122e fd5f moveb %fp@(-673),%d1
* fill OEMName
*/
memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
fmt_params->OEMName,
FAT_BR_OEMNAME_SIZE);
FAT_SET_BR_BYTES_PER_SECTOR(mbr , fmt_params->bytes_per_sector);
4d4ba: 1d40 fe0b moveb %d0,%fp@(-501)
FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
/* number of FATs on medium */
FAT_SET_BR_FAT_NUM(mbr , 2); /* standard/recommended value */
FAT_SET_BR_FILES_PER_ROOT_DIR(mbr , fmt_params->files_per_root_dir);
4d4be: 1d46 fe11 moveb %d6,%fp@(-495)
FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);
4d4c2: 1d47 fe13 moveb %d7,%fp@(-493)
4d4c6: 1d41 fe14 moveb %d1,%fp@(-492)
FAT_SET_BR_SECTORS_PER_TRACK(mbr , 255); /* only needed for INT13... */
FAT_SET_BR_NUMBER_OF_HEADS(mbr , 6); /* only needed for INT13... */
FAT_SET_BR_HIDDEN_SECTORS(mbr , 1); /* only needed for INT13... */
FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);
4d4ca: 122e fd58 moveb %fp@(-680),%d1
4d4ce: 1d42 fe21 moveb %d2,%fp@(-479)
FAT_SET_BR_FAT_NUM(mbr , 2); /* standard/recommended value */
FAT_SET_BR_FILES_PER_ROOT_DIR(mbr , fmt_params->files_per_root_dir);
FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);
FAT_SET_BR_MEDIA(mbr , fmt_params->media_code);
FAT_SET_BR_SECTORS_PER_TRACK(mbr , 255); /* only needed for INT13... */
4d4d2: 50c6 st %d6
FAT_SET_BR_NUMBER_OF_HEADS(mbr , 6); /* only needed for INT13... */
4d4d4: 7e06 moveq #6,%d7
FAT_SET_BR_HIDDEN_SECTORS(mbr , 1); /* only needed for INT13... */
4d4d6: 7001 moveq #1,%d0
FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);
4d4d8: 340d movew %a5,%d2
4d4da: 1d43 fe22 moveb %d3,%fp@(-478)
if (fmt_params->fattype != FAT_FAT32) {
4d4de: 7604 moveq #4,%d3
*/
memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
fmt_params->OEMName,
FAT_BR_OEMNAME_SIZE);
FAT_SET_BR_BYTES_PER_SECTOR(mbr , fmt_params->bytes_per_sector);
FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
4d4e0: 1d6e fdbf fe0d moveb %fp@(-577),%fp@(-499)
FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
/* number of FATs on medium */
FAT_SET_BR_FAT_NUM(mbr , 2); /* standard/recommended value */
FAT_SET_BR_FILES_PER_ROOT_DIR(mbr , fmt_params->files_per_root_dir);
4d4e6: 1d45 fe12 moveb %d5,%fp@(-494)
FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);
FAT_SET_BR_MEDIA(mbr , fmt_params->media_code);
4d4ea: 1d6e fde1 fe15 moveb %fp@(-543),%fp@(-491)
FAT_SET_BR_SECTORS_PER_TRACK(mbr , 255); /* only needed for INT13... */
4d4f0: 1d46 fe18 moveb %d6,%fp@(-488)
FAT_SET_BR_NUMBER_OF_HEADS(mbr , 6); /* only needed for INT13... */
4d4f4: 1d47 fe1a moveb %d7,%fp@(-486)
FAT_SET_BR_HIDDEN_SECTORS(mbr , 1); /* only needed for INT13... */
4d4f8: 1d40 fe1c moveb %d0,%fp@(-484)
FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);
4d4fc: 1d41 fe20 moveb %d1,%fp@(-480)
4d500: 1d42 fe23 moveb %d2,%fp@(-477)
if (fmt_params->fattype != FAT_FAT32) {
4d504: b684 cmpl %d4,%d3
4d506: 6700 0a94 beqw 4df9c <msdos_format+0xdb2>
FAT_SET_BR_SECTORS_PER_FAT(mbr ,fmt_params->sectors_per_fat);
FAT_SET_BR_DRVNUM(mbr , 0); /* only needed for INT13... */
FAT_SET_BR_RSVD1(mbr , 0); /* fill with zero */
FAT_SET_BR_BOOTSIG(mbr , FAT_BR_BOOTSIG_VAL);
FAT_SET_BR_VOLID(mbr , fmt_params->vol_id); /* volume id */
4d50a: 202e fdfa movel %fp@(-518),%d0
4d50e: 7c18 moveq #24,%d6
4d510: 2400 movel %d0,%d2
4d512: 2600 movel %d0,%d3
4d514: ecaa lsrl %d6,%d2
4d516: 2a00 movel %d0,%d5
4d518: e08d lsrl #8,%d5
memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),
fmt_params->VolLabel,
FAT_BR_VOLLAB_SIZE);
memcpy(FAT_GET_ADDR_BR_FILSYSTYPE(mbr),
4d51a: 41f9 0006 9bc8 lea 69bc8 <_CPU_m68k_BFFFO_table+0x131>,%a0
FAT_SET_BR_NUMBER_OF_HEADS(mbr , 6); /* only needed for INT13... */
FAT_SET_BR_HIDDEN_SECTORS(mbr , 1); /* only needed for INT13... */
FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);
if (fmt_params->fattype != FAT_FAT32) {
FAT_SET_BR_SECTORS_PER_FAT(mbr ,fmt_params->sectors_per_fat);
4d520: 222e fdc0 movel %fp@(-576),%d1
4d524: 2c01 movel %d1,%d6
4d526: e08e lsrl #8,%d6
FAT_SET_BR_DRVNUM(mbr , 0); /* only needed for INT13... */
FAT_SET_BR_RSVD1(mbr , 0); /* fill with zero */
FAT_SET_BR_BOOTSIG(mbr , FAT_BR_BOOTSIG_VAL);
FAT_SET_BR_VOLID(mbr , fmt_params->vol_id); /* volume id */
4d528: 4243 clrw %d3
4d52a: 4843 swap %d3
FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);
if (fmt_params->fattype != FAT_FAT32) {
FAT_SET_BR_SECTORS_PER_FAT(mbr ,fmt_params->sectors_per_fat);
FAT_SET_BR_DRVNUM(mbr , 0); /* only needed for INT13... */
FAT_SET_BR_RSVD1(mbr , 0); /* fill with zero */
FAT_SET_BR_BOOTSIG(mbr , FAT_BR_BOOTSIG_VAL);
4d52c: 7e29 moveq #41,%d7
FAT_SET_BR_VOLID(mbr , fmt_params->vol_id); /* volume id */
4d52e: 1d40 fe27 moveb %d0,%fp@(-473)
FAT_SET_BR_NUMBER_OF_HEADS(mbr , 6); /* only needed for INT13... */
FAT_SET_BR_HIDDEN_SECTORS(mbr , 1); /* only needed for INT13... */
FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);
if (fmt_params->fattype != FAT_FAT32) {
FAT_SET_BR_SECTORS_PER_FAT(mbr ,fmt_params->sectors_per_fat);
4d532: 1d41 fe16 moveb %d1,%fp@(-490)
FAT_SET_BR_BOOTSIG(mbr , FAT_BR_BOOTSIG_VAL);
FAT_SET_BR_VOLID(mbr , fmt_params->vol_id); /* volume id */
memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),
fmt_params->VolLabel,
FAT_BR_VOLLAB_SIZE);
memcpy(FAT_GET_ADDR_BR_FILSYSTYPE(mbr),
4d536: 7001 moveq #1,%d0
FAT_SET_BR_NUMBER_OF_HEADS(mbr , 6); /* only needed for INT13... */
FAT_SET_BR_HIDDEN_SECTORS(mbr , 1); /* only needed for INT13... */
FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);
if (fmt_params->fattype != FAT_FAT32) {
FAT_SET_BR_SECTORS_PER_FAT(mbr ,fmt_params->sectors_per_fat);
4d538: 1d46 fe17 moveb %d6,%fp@(-489)
FAT_SET_BR_DRVNUM(mbr , 0); /* only needed for INT13... */
FAT_SET_BR_RSVD1(mbr , 0); /* fill with zero */
FAT_SET_BR_BOOTSIG(mbr , FAT_BR_BOOTSIG_VAL);
4d53c: 1d47 fe26 moveb %d7,%fp@(-474)
FAT_SET_BR_VOLID(mbr , fmt_params->vol_id); /* volume id */
4d540: 1d45 fe28 moveb %d5,%fp@(-472)
4d544: 1d43 fe29 moveb %d3,%fp@(-471)
4d548: 1d42 fe2a moveb %d2,%fp@(-470)
memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),
4d54c: 356e fdf4 0033 movew %fp@(-524),%a2@(51)
4d552: 256e fdec 002b movel %fp@(-532),%a2@(43)
4d558: 256e fdf0 002f movel %fp@(-528),%a2@(47)
4d55e: 156e fdf6 0035 moveb %fp@(-522),%a2@(53)
fmt_params->VolLabel,
FAT_BR_VOLLAB_SIZE);
memcpy(FAT_GET_ADDR_BR_FILSYSTYPE(mbr),
4d564: b084 cmpl %d4,%d0
4d566: 6700 09e2 beqw 4df4a <msdos_format+0xd60>
4d56a: 43ea 0036 lea %a2@(54),%a1 <== NOT EXECUTED
4d56e: 2290 movel %a0@,%a1@ <== NOT EXECUTED
4d570: 2568 0004 003a movel %a0@(4),%a2@(58) <== NOT EXECUTED
/*
* write master boot record to disk
* also write copy of MBR to disk
*/
if (ret_val == 0) {
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d576: 4879 0006 9c5d pea 69c5d <_CPU_m68k_BFFFO_table+0x1c6>
"write MRB sector\n");
ret_val = msdos_format_write_sec(fd,
4d57c: 263c 0004 cf5a movel #315226,%d3
/*
* write master boot record to disk
* also write copy of MBR to disk
*/
if (ret_val == 0) {
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d582: 4878 0002 pea 2 <DOUBLE_FLOAT>
/*
* add jump to boot loader at start of sector
*/
FAT_SET_VAL8(mbr,0,0xeb);
FAT_SET_VAL8(mbr,1,0x3c);
FAT_SET_VAL8(mbr,2,0x90);
4d586: 7090 moveq #-112,%d0
/*
* add jump to boot loader at start of sector
*/
FAT_SET_VAL8(mbr,0,0xeb);
FAT_SET_VAL8(mbr,1,0x3c);
4d588: 7e3c moveq #60,%d7
FAT_BR_FILSYSTYPE_SIZE);
}
/*
* add boot record signature
*/
FAT_SET_BR_SIGNATURE(mbr, FAT_BR_SIGNATURE_VAL);
4d58a: 7455 moveq #85,%d2
/*
* write master boot record to disk
* also write copy of MBR to disk
*/
if (ret_val == 0) {
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d58c: 2f0c movel %a4,%sp@-
FAT_BR_FILSYSTYPE_SIZE);
}
/*
* add boot record signature
*/
FAT_SET_BR_SIGNATURE(mbr, FAT_BR_SIGNATURE_VAL);
4d58e: 78aa moveq #-86,%d4
/*
* add jump to boot loader at start of sector
*/
FAT_SET_VAL8(mbr,0,0xeb);
4d590: 7ceb moveq #-21,%d6
FAT_SET_VAL8(mbr,1,0x3c);
4d592: 1d47 fe01 moveb %d7,%fp@(-511)
FAT_SET_VAL8(mbr,2,0x90);
4d596: 1d40 fe02 moveb %d0,%fp@(-510)
FAT_BR_FILSYSTYPE_SIZE);
}
/*
* add boot record signature
*/
FAT_SET_BR_SIGNATURE(mbr, FAT_BR_SIGNATURE_VAL);
4d59a: 1d42 fffe moveb %d2,%fp@(-2)
4d59e: 1d44 ffff moveb %d4,%fp@(-1)
/*
* add jump to boot loader at start of sector
*/
FAT_SET_VAL8(mbr,0,0xeb);
4d5a2: 1d46 fe00 moveb %d6,%fp@(-512)
/*
* write master boot record to disk
* also write copy of MBR to disk
*/
if (ret_val == 0) {
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d5a6: 4eba f968 jsr %pc@(4cf10 <msdos_format_printf>)
"write MRB sector\n");
ret_val = msdos_format_write_sec(fd,
4d5aa: 2043 moveal %d3,%a0
4d5ac: 2f0a movel %a2,%sp@-
4d5ae: 2f2e fdb0 movel %fp@(-592),%sp@-
4d5b2: 42a7 clrl %sp@-
4d5b4: 2f0b movel %a3,%sp@-
4d5b6: 4e90 jsr %a0@
0,
fmt_params.bytes_per_sector,
tmp_sec);
}
if ((ret_val == 0) &&
4d5b8: 4fef 001c lea %sp@(28),%sp
* also write copy of MBR to disk
*/
if (ret_val == 0) {
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
"write MRB sector\n");
ret_val = msdos_format_write_sec(fd,
4d5bc: 2e00 movel %d0,%d7
0,
fmt_params.bytes_per_sector,
tmp_sec);
}
if ((ret_val == 0) &&
4d5be: 6600 fcbe bnew 4d27e <msdos_format+0x94>
4d5c2: 4aae fdd8 tstl %fp@(-552)
4d5c6: 6600 08d4 bnew 4de9c <msdos_format+0xcb2>
}
/*
* for FAT32: initialize info sector on disk
*/
if ((ret_val == 0) &&
(fmt_params.fsinfo_sec != 0)) {
4d5ca: 242e fddc movel %fp@(-548),%d2
}
}
/*
* for FAT32: initialize info sector on disk
*/
if ((ret_val == 0) &&
4d5ce: 6600 04b4 bnew 4da84 <msdos_format+0x89a>
* write FAT as all empty
* -> write all FAT sectors as zero
*/
if (ret_val == 0) {
ret_val = msdos_format_fill_sectors
(rqdata,
4d5d2: 4280 clrl %d0
4d5d4: 102e fde0 moveb %fp@(-544),%d0
/*
* write FAT as all empty
* -> write all FAT sectors as zero
*/
if (ret_val == 0) {
ret_val = msdos_format_fill_sectors
4d5d8: 4bfa f9f0 lea %pc@(4cfca <msdos_format_fill_sectors>),%a5
4d5dc: 42a7 clrl %sp@-
4d5de: 222e fdc0 movel %fp@(-576),%d1
4d5e2: 4c00 1800 mulsl %d0,%d1
4d5e6: 2f2e fdb0 movel %fp@(-592),%sp@-
4d5ea: 2f01 movel %d1,%sp@-
4d5ec: 2f2e fdb8 movel %fp@(-584),%sp@-
4d5f0: 2f0b movel %a3,%sp@-
4d5f2: 2f0c movel %a4,%sp@-
4d5f4: 4e95 jsr %a5@
}
/*
* clear/init root directory
* -> write all directory sectors as 0x00
*/
if (ret_val == 0) {
4d5f6: 4fef 0018 lea %sp@(24),%sp
/*
* write FAT as all empty
* -> write all FAT sectors as zero
*/
if (ret_val == 0) {
ret_val = msdos_format_fill_sectors
4d5fa: 2e00 movel %d0,%d7
}
/*
* clear/init root directory
* -> write all directory sectors as 0x00
*/
if (ret_val == 0) {
4d5fc: 6600 fc80 bnew 4d27e <msdos_format+0x94>
ret_val = msdos_format_fill_sectors
4d600: 42a7 clrl %sp@-
4d602: 2f2e fdb0 movel %fp@(-592),%sp@-
4d606: 2f2e fdd4 movel %fp@(-556),%sp@-
4d60a: 2f2e fdd0 movel %fp@(-560),%sp@-
4d60e: 2f0b movel %a3,%sp@-
4d610: 2f0c movel %a4,%sp@-
4d612: 4e95 jsr %a5@
0x00);
}
/*
* write volume label to first entry of directory
*/
if ((ret_val == 0) && fmt_params.VolLabel_present) {
4d614: 4fef 0018 lea %sp@(24),%sp
/*
* clear/init root directory
* -> write all directory sectors as 0x00
*/
if (ret_val == 0) {
ret_val = msdos_format_fill_sectors
4d618: 2400 movel %d0,%d2
0x00);
}
/*
* write volume label to first entry of directory
*/
if ((ret_val == 0) && fmt_params.VolLabel_present) {
4d61a: 6600 0a54 bnew 4e070 <msdos_format+0xe86>
4d61e: 4a2e fdf8 tstb %fp@(-520)
4d622: 6600 0412 bnew 4da36 <msdos_format+0x84c>
uint32_t start_sector;
/*
* empty sector: all clusters are free/do not link further on
*/
memset(tmp_sec,0,sizeof(tmp_sec));
4d626: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb>
4d62a: 42a7 clrl %sp@-
4d62c: 2f0a movel %a2,%sp@-
4d62e: 4eb9 0005 b1f8 jsr 5b1f8 <memset>
switch(fmt_params.fattype) {
4d634: 4fef 000c lea %sp@(12),%sp
4d638: 4280 clrl %d0
4d63a: 102e fde2 moveb %fp@(-542),%d0
4d63e: 7202 moveq #2,%d1
4d640: b280 cmpl %d0,%d1
4d642: 6700 0550 beqw 4db94 <msdos_format+0x9aa>
4d646: 7804 moveq #4,%d4
4d648: b880 cmpl %d0,%d4
4d64a: 6700 04c0 beqw 4db0c <msdos_format+0x922>
4d64e: 7c01 moveq #1,%d6
4d650: bc80 cmpl %d0,%d6
4d652: 6700 055a beqw 4dbae <msdos_format+0x9c4>
FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);
break;
default:
ret_val = -1;
errno = EINVAL;
4d656: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
4d65c: 7816 moveq #22,%d4 <== NOT EXECUTED
/* FAT entry 1: EOC */
FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);
break;
default:
ret_val = -1;
4d65e: 74ff moveq #-1,%d2 <== NOT EXECUTED
errno = EINVAL;
4d660: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
if (fmt_params.fattype == FAT_FAT32) {
4d662: 4280 clrl %d0 <== NOT EXECUTED
4d664: 7204 moveq #4,%d1 <== NOT EXECUTED
FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);
break;
default:
ret_val = -1;
errno = EINVAL;
4d666: 2084 movel %d4,%a0@ <== NOT EXECUTED
}
if (fmt_params.fattype == FAT_FAT32) {
4d668: 102e fde2 moveb %fp@(-542),%d0 <== NOT EXECUTED
4d66c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4d66e: 6700 04c4 beqw 4db34 <msdos_format+0x94a> <== NOT EXECUTED
* mark this in every copy of the FAT
*/
FAT_SET_VAL32(tmp_sec,8,FAT_FAT32_EOC);
}
start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,
4d672: 202e fdbc movel %fp@(-580),%d0
4d676: 2a6e fdb8 moveal %fp@(-584),%a5
static uint32_t
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
4d67a: 4a2e fdfe tstb %fp@(-514)
4d67e: 660e bnes 4d68e <msdos_format+0x4a4>
return (sectors + clustersize - 1) & ~(clustersize - 1);
4d680: 2200 movel %d0,%d1
4d682: 4481 negl %d1
4d684: 4bf5 08ff lea %a5@(ffffffff,%d0:l),%a5
4d688: 200d movel %a5,%d0
4d68a: c081 andl %d1,%d0
4d68c: 2a40 moveal %d0,%a5
}
start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,
fmt_params.sectors_per_cluster,
fmt_params.skip_alignment);
for (i = 0;
4d68e: 4a2e fde0 tstb %fp@(-544)
4d692: 6700 0986 beqw 4e01a <msdos_format+0xe30>
(i < fmt_params.fat_num) && (ret_val == 0);
4d696: 4a82 tstl %d2
4d698: 6600 08a0 bnew 4df3a <msdos_format+0xd50>
4d69c: 202e fdc0 movel %fp@(-576),%d0
i++) {
ret_val = msdos_format_write_sec
(fd,
start_sector
+ (i * fmt_params.sectors_per_fat),
4d6a0: 4c02 0800 mulsl %d2,%d0
fmt_params.sectors_per_cluster,
fmt_params.skip_alignment);
for (i = 0;
(i < fmt_params.fat_num) && (ret_val == 0);
i++) {
ret_val = msdos_format_write_sec
4d6a4: 2043 moveal %d3,%a0
start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,
fmt_params.sectors_per_cluster,
fmt_params.skip_alignment);
for (i = 0;
(i < fmt_params.fat_num) && (ret_val == 0);
i++) {
4d6a6: 5282 addql #1,%d2
ret_val = msdos_format_write_sec
4d6a8: 2f0a movel %a2,%sp@-
4d6aa: 2f2e fdb0 movel %fp@(-592),%sp@-
4d6ae: 4875 0800 pea %a5@(00000000,%d0:l)
4d6b2: 2f0b movel %a3,%sp@-
4d6b4: 4e90 jsr %a0@
}
start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,
fmt_params.sectors_per_cluster,
fmt_params.skip_alignment);
for (i = 0;
4d6b6: 4fef 0010 lea %sp@(16),%sp
(i < fmt_params.fat_num) && (ret_val == 0);
4d6ba: 4281 clrl %d1
4d6bc: 122e fde0 moveb %fp@(-544),%d1
}
start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,
fmt_params.sectors_per_cluster,
fmt_params.skip_alignment);
for (i = 0;
4d6c0: b481 cmpl %d1,%d2
4d6c2: 6c00 fbcc bgew 4d290 <msdos_format+0xa6>
(i < fmt_params.fat_num) && (ret_val == 0);
4d6c6: 4a80 tstl %d0
4d6c8: 67d2 beqs 4d69c <msdos_format+0x4b2> <== ALWAYS TAKEN
* cleanup:
* sync and unlock disk
* free any data structures (not needed now)
*/
if (fd != -1) {
close(fd);
4d6ca: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d6cc: 2e00 movel %d0,%d7 <== NOT EXECUTED
4d6ce: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
4d6d4: 588f addql #4,%sp <== NOT EXECUTED
4d6d6: 6000 fbe4 braw 4d2bc <msdos_format+0xd2> <== NOT EXECUTED
}
/*
* sanity check on device
*/
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d6da: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d6dc: 4879 0006 9c89 pea 69c89 <_CPU_m68k_BFFFO_table+0x1f2> <== NOT EXECUTED
"stat check: %s\n", devname);
if (ret_val == 0) {
ret_val = fstat(fd, &stat_buf);
}
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,
4d6e2: 7eff moveq #-1,%d7 <== NOT EXECUTED
}
/*
* sanity check on device
*/
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d6e4: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4d6e8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d6ea: 4eba f824 jsr %pc@(4cf10 <msdos_format_printf>) <== NOT EXECUTED
"stat check: %s\n", devname);
if (ret_val == 0) {
ret_val = fstat(fd, &stat_buf);
}
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,
4d6ee: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d6f0: 4879 0006 9c99 pea 69c99 <_CPU_m68k_BFFFO_table+0x202> <== NOT EXECUTED
4d6f6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4d6fa: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d6fc: 4eba f812 jsr %pc@(4cf10 <msdos_format_printf>) <== NOT EXECUTED
4d700: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
if (fd != -1) {
close(fd);
}
return ret_val;
}
4d704: 2007 movel %d7,%d0 <== NOT EXECUTED
4d706: 4cee 3cfc fd20 moveml %fp@(-736),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d70c: 4e5e unlk %fp <== NOT EXECUTED
4d70e: 4e75 rts <== NOT EXECUTED
static inline int rtems_disk_fd_get_block_count(
int fd,
rtems_blkdev_bnum *block_count
)
{
return ioctl(fd, RTEMS_BLKIO_GETSIZE, block_count);
4d710: 486e fdb4 pea %fp@(-588)
4d714: 2f3c 4004 4205 movel #1074020869,%sp@-
4d71a: 2f0b movel %a3,%sp@-
4d71c: 4eb9 0005 46f4 jsr 546f4 <ioctl>
ret_val = rtems_disk_fd_get_media_block_size(fd, &fmt_params->bytes_per_sector);
}
if (ret_val == 0) {
ret_val = rtems_disk_fd_get_block_count(fd, &fmt_params->totl_sector_cnt);
}
if (ret_val == 0) {
4d722: 4fef 000c lea %sp@(12),%sp
4d726: 4a80 tstl %d0
4d728: 6600 fbca bnew 4d2f4 <msdos_format+0x10a>
total_size = fmt_params->bytes_per_sector * fmt_params->totl_sector_cnt;
4d72c: 222e fdb4 movel %fp@(-588),%d1
4d730: 2801 movel %d1,%d4
4d732: 4282 clrl %d2
4d734: 202e fdb0 movel %fp@(-592),%d0
4d738: 4c00 4800 mulsl %d0,%d4
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d73c: 2f04 movel %d4,%sp@-
}
if (ret_val == 0) {
ret_val = rtems_disk_fd_get_block_count(fd, &fmt_params->totl_sector_cnt);
}
if (ret_val == 0) {
total_size = fmt_params->bytes_per_sector * fmt_params->totl_sector_cnt;
4d73e: 2604 movel %d4,%d3
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d740: 2f02 movel %d2,%sp@-
4d742: 2f01 movel %d1,%sp@-
4d744: 2f00 movel %d0,%sp@-
4d746: 4879 0006 9be4 pea 69be4 <_CPU_m68k_BFFFO_table+0x14d>
4d74c: 4878 0002 pea 2 <DOUBLE_FLOAT>
4d750: 2f0c movel %a4,%sp@-
4d752: 4eba f7bc jsr %pc@(4cf10 <msdos_format_printf>)
/*
* determine number of FATs
*/
if (ret_val == 0) {
if ((rqdata == NULL) ||
4d756: 4fef 001c lea %sp@(28),%sp
4d75a: 4a8c tstl %a4
4d75c: 6700 08c2 beqw 4e020 <msdos_format+0xe36>
(rqdata->fat_num == 0)) {
4d760: 202c 000c movel %a4@(12),%d0
/*
* determine number of FATs
*/
if (ret_val == 0) {
if ((rqdata == NULL) ||
4d764: 6700 045e beqw 4dbc4 <msdos_format+0x9da>
(rqdata->fat_num == 0)) {
fmt_params->fat_num = 2;
}
else if (rqdata->fat_num <= 6) {
4d768: 7206 moveq #6,%d1
4d76a: b280 cmpl %d0,%d1
4d76c: 6500 07ba bcsw 4df28 <msdos_format+0xd3e>
ret_val = -1;
}
}
if (ret_val == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d770: 2f00 movel %d0,%sp@-
4d772: 4879 0006 9c1f pea 69c1f <_CPU_m68k_BFFFO_table+0x188>
4d778: 4878 0002 pea 2 <DOUBLE_FLOAT>
if ((rqdata == NULL) ||
(rqdata->fat_num == 0)) {
fmt_params->fat_num = 2;
}
else if (rqdata->fat_num <= 6) {
fmt_params->fat_num = rqdata->fat_num;
4d77c: 1d40 fde0 moveb %d0,%fp@(-544)
ret_val = -1;
}
}
if (ret_val == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d780: 2f0c movel %a4,%sp@-
4d782: 4eba f78c jsr %pc@(4cf10 <msdos_format_printf>)
/*
* determine FAT type and sectors per cluster
* depends on
*/
if (ret_val == 0) {
fmt_params->sectors_per_cluster = 1;
4d786: 4fef 0010 lea %sp@(16),%sp
* are a compromise concerning capacity and efficency
*/
uint32_t fat12_sect_per_clust = 8;
uint32_t fat16_sect_per_clust = 32;
if (rqdata != NULL && rqdata->sectors_per_cluster != 0) {
4d78a: 202c 0008 movel %a4@(8),%d0
4d78e: 6700 05da beqw 4dd6a <msdos_format+0xb80>
4d792: 283c 0000 0ff5 movel #4085,%d4
4d798: 4c00 4800 mulsl %d0,%d4
fat12_sect_per_clust = rqdata->sectors_per_cluster;
fat16_sect_per_clust = rqdata->sectors_per_cluster;
}
if (fmt_params->totl_sector_cnt < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) {
4d79c: 222e fdb4 movel %fp@(-588),%d1
4d7a0: b881 cmpl %d1,%d4
4d7a2: 6300 05a6 blsw 4dd4a <msdos_format+0xb60>
fmt_params->fattype = FAT_FAT12;
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
4d7a6: 7802 moveq #2,%d4
fat12_sect_per_clust = rqdata->sectors_per_cluster;
fat16_sect_per_clust = rqdata->sectors_per_cluster;
}
if (fmt_params->totl_sector_cnt < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) {
fmt_params->fattype = FAT_FAT12;
4d7a8: 7c01 moveq #1,%d6
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
4d7aa: 2d44 fdbc movel %d4,%fp@(-580)
fat12_sect_per_clust = rqdata->sectors_per_cluster;
fat16_sect_per_clust = rqdata->sectors_per_cluster;
}
if (fmt_params->totl_sector_cnt < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) {
fmt_params->fattype = FAT_FAT12;
4d7ae: 1d46 fde2 moveb %d6,%fp@(-542)
if ((gigs & (1 << b)) != 0)
break;
fmt_params->sectors_per_cluster = 1 << b;
}
ret_val = msdos_set_sectors_per_cluster_from_request( rqdata, fmt_params );
4d7b2: 283c ffff fdbc movel #-580,%d4
4d7b8: d88e addl %fp,%d4
4d7ba: 2f04 movel %d4,%sp@-
4d7bc: 486e fdb0 pea %fp@(-592)
4d7c0: 2f0c movel %a4,%sp@-
4d7c2: 4eba f9ae jsr %pc@(4d172 <msdos_set_sectors_per_cluster_from_request.isra.1>)
if (ret_val == 0) {
data_clusters_cnt =
fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
}
while( ret_val == 0
4d7c6: 4fef 000c lea %sp@(12),%sp
if ((gigs & (1 << b)) != 0)
break;
fmt_params->sectors_per_cluster = 1 << b;
}
ret_val = msdos_set_sectors_per_cluster_from_request( rqdata, fmt_params );
4d7ca: 2e00 movel %d0,%d7
if (ret_val == 0) {
data_clusters_cnt =
fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
}
while( ret_val == 0
4d7cc: 6600 0884 bnew 4e052 <msdos_format+0xe68>
&& fmt_params->fattype != fat_type
4d7d0: 4280 clrl %d0
4d7d2: 102e fde2 moveb %fp@(-542),%d0
4d7d6: 0c80 0000 00ff cmpil #255,%d0
4d7dc: 6700 086c beqw 4e04a <msdos_format+0xe60>
&& fmt_params->totl_sector_cnt > 0 ) {
4d7e0: 4aae fdb4 tstl %fp@(-588)
4d7e4: 6700 020e beqw 4d9f4 <msdos_format+0x80a>
data_clusters_cnt );
/* Correct sectors per cluster to the fat type specific default value */
if (fat_type != fmt_params->fattype) {
msdos_set_default_sectors_per_cluster_for_fattype( fmt_params,
total_size );
ret_val = msdos_set_sectors_per_cluster_from_request( rqdata,
4d7e8: 2d44 fd54 movel %d4,%fp@(-684)
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
}
else {
#define ONE_GB ( 1024L * 1024L * 1024L )
uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;
4d7ec: 7c1e moveq #30,%d6
4d7ee: 4280 clrl %d0
4d7f0: 0683 4000 0000 addil #1073741824,%d3
4d7f6: d580 addxl %d0,%d2
4d7f8: 2d4b fd50 movel %a3,%fp@(-688)
4d7fc: 2802 movel %d2,%d4
4d7fe: 2003 movel %d3,%d0
4d800: eca8 lsrl %d6,%d0
4d802: e58c lsll #2,%d4
4d804: 4201 clrb %d1
4d806: 2d47 fd4c movel %d7,%fp@(-692)
4d80a: 3441 moveaw %d1,%a2
4d80c: 2d44 fd5c movel %d4,%fp@(-676)
4d810: 81ae fd5c orl %d0,%fp@(-676)
&& fmt_params->fattype != fat_type
&& fmt_params->totl_sector_cnt > 0 ) {
/*
* Skip aligning structures or d align them
*/
if (ret_val == 0 && rqdata != NULL)
4d814: 4a8c tstl %a4
4d816: 6706 beqs 4d81e <msdos_format+0x634> <== NEVER TAKEN
fmt_params->skip_alignment = rqdata->skip_alignment;
4d818: 1d6c 0016 fdfe moveb %a4@(22),%fp@(-514)
if (ret_val == 0) {
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d81e: 2f2e fdbc movel %fp@(-580),%sp@-
"sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
if (fmt_params->fattype == FAT_FAT32) {
4d822: 4285 clrl %d5
*/
if (ret_val == 0 && rqdata != NULL)
fmt_params->skip_alignment = rqdata->skip_alignment;
if (ret_val == 0) {
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d824: 4879 0006 9c33 pea 69c33 <_CPU_m68k_BFFFO_table+0x19c>
"sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
if (fmt_params->fattype == FAT_FAT32) {
4d82a: 7e04 moveq #4,%d7
*/
if (ret_val == 0 && rqdata != NULL)
fmt_params->skip_alignment = rqdata->skip_alignment;
if (ret_val == 0) {
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d82c: 4878 0002 pea 2 <DOUBLE_FLOAT>
4d830: 2f0c movel %a4,%sp@-
4d832: 4eba f6dc jsr %pc@(4cf10 <msdos_format_printf>)
"sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
if (fmt_params->fattype == FAT_FAT32) {
4d836: 4fef 0010 lea %sp@(16),%sp
4d83a: 1a2e fde2 moveb %fp@(-542),%d5
4d83e: be85 cmpl %d5,%d7
4d840: 6700 049a beqw 4dcdc <msdos_format+0xaf2>
fmt_params->fsinfo_sec = 1;
}
else {
/* recommended: for FAT12/FAT16, always set reserved sector count to 1 */
fmt_params->rsvd_sector_cnt = 1;
4d844: 7601 moveq #1,%d3
4d846: 2d43 fdb8 movel %d3,%fp@(-584)
/* recommended: for FAT16, set files per root directory to 512 */
/* for FAT12/FAT16, set files per root directory */
/* must fill up an even count of sectors */
if ((rqdata != NULL) &&
4d84a: 4a8c tstl %a4
4d84c: 6700 0460 beqw 4dcae <msdos_format+0xac4>
(rqdata->files_per_root_dir > 0)) {
4d850: 222c 0010 movel %a4@(16),%d1
/* recommended: for FAT12/FAT16, always set reserved sector count to 1 */
fmt_params->rsvd_sector_cnt = 1;
/* recommended: for FAT16, set files per root directory to 512 */
/* for FAT12/FAT16, set files per root directory */
/* must fill up an even count of sectors */
if ((rqdata != NULL) &&
4d854: 6700 0458 beqw 4dcae <msdos_format+0xac4>
else {
fmt_params->files_per_root_dir = 64;
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
(2*fmt_params->bytes_per_sector/
4d858: 282e fdb0 movel %fp@(-592),%d4
4d85c: 2004 movel %d4,%d0
4d85e: 5381 subql #1,%d1
FAT_DIRENTRY_SIZE-1));
fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
4d860: 367c 0001 moveaw #1,%a3
else {
fmt_params->files_per_root_dir = 64;
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
(2*fmt_params->bytes_per_sector/
4d864: d080 addl %d0,%d0
4d866: ea88 lsrl #5,%d0
}
else {
fmt_params->files_per_root_dir = 64;
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
4d868: d280 addl %d0,%d1
(2*fmt_params->bytes_per_sector/
FAT_DIRENTRY_SIZE-1));
fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
4d86a: 2c01 movel %d1,%d6
4d86c: 4c40 6002 remul %d0,%d2,%d6
4d870: 9282 subl %d2,%d1
4d872: 2001 movel %d1,%d0
4d874: eb88 lsll #5,%d0
4d876: 2d41 fdc8 movel %d1,%fp@(-568)
/FAT_DIRENTRY_SIZE));
}
fmt_params->root_dir_sectors =
(((fmt_params->files_per_root_dir * FAT_DIRENTRY_SIZE)
+ fmt_params->bytes_per_sector - 1)
4d87a: 2044 moveal %d4,%a0
4d87c: 5388 subql #1,%a0
4d87e: d088 addl %a0,%d0
/ fmt_params->bytes_per_sector);
4d880: 2e00 movel %d0,%d7
uint32_t fatdata_sect_cnt;
uint32_t fat_sectors_cnt;
/*
* ensure, that maximum cluster size (32KByte) is not exceeded
*/
while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
4d882: 223c 0000 8000 movel #32768,%d1
}
fmt_params->root_dir_sectors =
(((fmt_params->files_per_root_dir * FAT_DIRENTRY_SIZE)
+ fmt_params->bytes_per_sector - 1)
/ fmt_params->bytes_per_sector);
4d888: 4c44 7007 remul %d4,%d7,%d7
uint32_t fatdata_sect_cnt;
uint32_t fat_sectors_cnt;
/*
* ensure, that maximum cluster size (32KByte) is not exceeded
*/
while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
4d88c: 4c44 1001 remul %d4,%d1,%d1
if (ret_val == 0) {
/*
* check values to get legal arrangement of FAT type and cluster count
*/
ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,
4d890: 202e fdbc movel %fp@(-580),%d0
}
fmt_params->root_dir_sectors =
(((fmt_params->files_per_root_dir * FAT_DIRENTRY_SIZE)
+ fmt_params->bytes_per_sector - 1)
/ fmt_params->bytes_per_sector);
4d894: 2d47 fd64 movel %d7,%fp@(-668)
if (ret_val == 0) {
/*
* check values to get legal arrangement of FAT type and cluster count
*/
ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,
4d898: 226e fdb4 moveal %fp@(-588),%a1
fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
(2*fmt_params->bytes_per_sector
/FAT_DIRENTRY_SIZE));
}
fmt_params->root_dir_sectors =
4d89c: 2d47 fdcc movel %d7,%fp@(-564)
fmt_params->totl_sector_cnt,
fmt_params->rsvd_sector_cnt,
fmt_params->root_dir_sectors,
fmt_params->fat_num,
fmt_params->sectors_per_cluster,
fmt_params->skip_alignment,
4d8a0: 1c2e fdfe moveb %fp@(-514),%d6
ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,
fmt_params->bytes_per_sector,
fmt_params->totl_sector_cnt,
fmt_params->rsvd_sector_cnt,
fmt_params->root_dir_sectors,
fmt_params->fat_num,
4d8a4: 1e2e fde0 moveb %fp@(-544),%d7
uint32_t fatdata_sect_cnt;
uint32_t fat_sectors_cnt;
/*
* ensure, that maximum cluster size (32KByte) is not exceeded
*/
while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
4d8a8: b280 cmpl %d0,%d1
4d8aa: 6406 bccs 4d8b2 <msdos_format+0x6c8> <== ALWAYS TAKEN
sectors_per_cluster /= 2;
4d8ac: e288 lsrl #1,%d0 <== NOT EXECUTED
uint32_t fatdata_sect_cnt;
uint32_t fat_sectors_cnt;
/*
* ensure, that maximum cluster size (32KByte) is not exceeded
*/
while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
4d8ae: b280 cmpl %d0,%d1 <== NOT EXECUTED
4d8b0: 65fa bcss 4d8ac <msdos_format+0x6c2> <== NOT EXECUTED
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
return (sectors + clustersize - 1) & ~(clustersize - 1);
4d8b2: 242e fd64 movel %fp@(-668),%d2
* compute number of data clusters for current data:
* - compute cluster count for data AND fat
* - compute storage size for FAT
* - subtract from total cluster count
*/
fatdata_sect_cnt = total_sector_cnt
4d8b6: 2209 movel %a1,%d1
4d8b8: 928b subl %a3,%d1
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
return (sectors + clustersize - 1) & ~(clustersize - 1);
4d8ba: 5382 subql #1,%d2
4d8bc: 538b subql #1,%a3
4d8be: 0287 0000 00ff andil #255,%d7
* compute number of data clusters for current data:
* - compute cluster count for data AND fat
* - compute storage size for FAT
* - subtract from total cluster count
*/
fatdata_sect_cnt = total_sector_cnt
4d8c4: 2d41 fd58 movel %d1,%fp@(-680)
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
return (sectors + clustersize - 1) & ~(clustersize - 1);
4d8c8: 2d42 fd60 movel %d2,%fp@(-672)
4d8cc: 2d47 fd48 movel %d7,%fp@(-696)
static uint32_t
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
4d8d0: 4a06 tstb %d6
4d8d2: 6700 0312 beqw 4dbe6 <msdos_format+0x9fc>
* compute number of data clusters for current data:
* - compute cluster count for data AND fat
* - compute storage size for FAT
* - subtract from total cluster count
*/
fatdata_sect_cnt = total_sector_cnt
4d8d6: 262e fd58 movel %fp@(-680),%d3
- loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
if (fattype == FAT_FAT12) {
4d8da: 7201 moveq #1,%d1
4d8dc: b285 cmpl %d5,%d1
4d8de: 6700 079e beqw 4e07e <msdos_format+0xe94>
fatdata_sect_cnt = fatdata_sect_cnt
- loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
fat_capacity = fatdata_cluster_cnt * 3 / 2;
}
else if (fattype == FAT_FAT16) {
4d8e2: 7202 moveq #2,%d1 <== NOT EXECUTED
4d8e4: b285 cmpl %d5,%d1 <== NOT EXECUTED
4d8e6: 6600 031c bnew 4dc04 <msdos_format+0xa1a> <== NOT EXECUTED
const bool skip_alignment)
{
if (! skip_alignment)
return (sectors + clustersize - 1) & ~(clustersize - 1);
else
return sectors;
4d8ea: 222e fd64 movel %fp@(-668),%d1 <== NOT EXECUTED
- loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
fat_capacity = fatdata_cluster_cnt * 3 / 2;
}
else if (fattype == FAT_FAT16) {
fatdata_sect_cnt = fatdata_sect_cnt
4d8ee: 9681 subl %d1,%d3 <== NOT EXECUTED
- loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
4d8f0: 4c40 3003 remul %d0,%d3,%d3 <== NOT EXECUTED
fat_capacity = fatdata_cluster_cnt * 2;
4d8f4: 2203 movel %d3,%d1 <== NOT EXECUTED
4d8f6: d281 addl %d1,%d1 <== NOT EXECUTED
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
fat_capacity = fatdata_cluster_cnt * 4;
}
sectors_per_fat = ((fat_capacity
+ (bytes_per_sector - 1))
4d8f8: d288 addl %a0,%d1
else { /* FAT32 */
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
fat_capacity = fatdata_cluster_cnt * 4;
}
sectors_per_fat = ((fat_capacity
4d8fa: 4c44 1001 remul %d4,%d1,%d1
+ (bytes_per_sector - 1))
/ bytes_per_sector);
fat_sectors_cnt = loc_align_object (sectors_per_fat * fat_num,
4d8fe: 242e fd48 movel %fp@(-696),%d2
4d902: 4c02 1800 mulsl %d2,%d1
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
return (sectors + clustersize - 1) & ~(clustersize - 1);
4d906: 2400 movel %d0,%d2
4d908: 5382 subql #1,%d2
static uint32_t
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
4d90a: 4a06 tstb %d6
4d90c: 6608 bnes 4d916 <msdos_format+0x72c>
return (sectors + clustersize - 1) & ~(clustersize - 1);
4d90e: 2e00 movel %d0,%d7
4d910: d282 addl %d2,%d1
4d912: 4487 negl %d7
4d914: c287 andl %d7,%d1
sectors_per_cluster,
skip_alignment);
*data_cluster_cnt = (fatdata_cluster_cnt -
((fat_sectors_cnt
+ (sectors_per_cluster - 1))
4d916: d481 addl %d1,%d2
/ sectors_per_cluster));
4d918: 4c40 2002 remul %d0,%d2,%d2
fat_sectors_cnt = loc_align_object (sectors_per_fat * fat_num,
sectors_per_cluster,
skip_alignment);
*data_cluster_cnt = (fatdata_cluster_cnt -
4d91c: 9682 subl %d2,%d3
+ (sectors_per_cluster - 1))
/ sectors_per_cluster));
/*
* data cluster count too big? Then make clusters bigger
*/
if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
4d91e: 7401 moveq #1,%d2
4d920: b485 cmpl %d5,%d2
4d922: 6700 02ec beqw 4dc10 <msdos_format+0xa26>
4d926: 7e02 moveq #2,%d7 <== NOT EXECUTED
4d928: be85 cmpl %d5,%d7 <== NOT EXECUTED
4d92a: 6700 0330 beqw 4dc5c <msdos_format+0xa72> <== NOT EXECUTED
*/
if (fattype == FAT_FAT12) {
if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {
finished = true;
}
} else if ((sectors_per_cluster * bytes_per_sector)
4d92e: 2e00 movel %d0,%d7 <== NOT EXECUTED
4d930: 4c04 7800 mulsl %d4,%d7 <== NOT EXECUTED
if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
sectors_per_cluster *= 2;
}
else {
finished = true;
4d934: 7401 moveq #1,%d2 <== NOT EXECUTED
*/
if (fattype == FAT_FAT12) {
if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {
finished = true;
}
} else if ((sectors_per_cluster * bytes_per_sector)
4d936: 0c87 0000 8000 cmpil #32768,%d7 <== NOT EXECUTED
4d93c: 6300 02ee blsw 4dc2c <msdos_format+0xa42> <== NOT EXECUTED
4d940: 2e2e fd48 movel %fp@(-696),%d7 <== NOT EXECUTED
finished = true;
}
} while (!finished);
*sectors_per_cluster_adj = sectors_per_cluster;
*sectors_per_fat_ptr = fat_sectors_cnt / fat_num;
4d944: 4c47 1001 remul %d7,%d1,%d1 <== NOT EXECUTED
fmt_params->sectors_per_cluster,
fmt_params->skip_alignment,
§ors_per_cluster_adj,
&fmt_params->sectors_per_fat,
&data_clusters_cnt);
fmt_params->sectors_per_cluster = sectors_per_cluster_adj;
4d948: 2d40 fdbc movel %d0,%fp@(-580) <== NOT EXECUTED
finished = true;
}
} while (!finished);
*sectors_per_cluster_adj = sectors_per_cluster;
*sectors_per_fat_ptr = fat_sectors_cnt / fat_num;
4d94c: 2d41 fdc0 movel %d1,%fp@(-576) <== NOT EXECUTED
( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;
uint32_t ms_sectors_per_cluster_limit_FAT16 =
( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;
uint8_t fattype = FAT_FAT32;
if ( number_of_clusters < FAT_FAT12_MAX_CLN
4d950: 0c83 0000 0ff4 cmpil #4084,%d3 <== NOT EXECUTED
4d956: 6200 02f4 bhiw 4dc4c <msdos_format+0xa62> <== NOT EXECUTED
static uint8_t
msdos_get_fat_type( const uint32_t bytes_per_sector,
const uint32_t sectors_per_cluster,
const uint32_t number_of_clusters )
{
uint32_t ms_sectors_per_cluster_limit_FAT12 =
4d95a: 223c 0000 1001 movel #4097,%d1
4d960: 4c44 1001 remul %d4,%d1,%d1
uint32_t ms_sectors_per_cluster_limit_FAT16 =
( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;
uint8_t fattype = FAT_FAT32;
if ( number_of_clusters < FAT_FAT12_MAX_CLN
&& sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT12 ) {
4d964: b081 cmpl %d1,%d0
4d966: 6200 03cc bhiw 4dd34 <msdos_format+0xb4a>
fattype = FAT_FAT12;
4d96a: 7001 moveq #1,%d0
fmt_params->fattype = msdos_get_fat_type(
fmt_params->bytes_per_sector,
fmt_params->sectors_per_cluster,
data_clusters_cnt );
/* Correct sectors per cluster to the fat type specific default value */
if (fat_type != fmt_params->fattype) {
4d96c: 4281 clrl %d1
4d96e: 1200 moveb %d0,%d1
fmt_params->sectors_per_cluster = sectors_per_cluster_adj;
fat_type = fmt_params->fattype;
/* Correct the FAT type according to the new data cluster count */
if ( ret_val == 0 ) {
fmt_params->fattype = msdos_get_fat_type(
4d970: 1d40 fde2 moveb %d0,%fp@(-542)
fmt_params->bytes_per_sector,
fmt_params->sectors_per_cluster,
data_clusters_cnt );
/* Correct sectors per cluster to the fat type specific default value */
if (fat_type != fmt_params->fattype) {
4d974: b285 cmpl %d5,%d1
4d976: 6700 03fe beqw 4dd76 <msdos_format+0xb8c>
msdos_set_default_sectors_per_cluster_for_fattype(
msdos_format_param_t *fmt_params,
const uint64_t total_size )
{
if ( fmt_params->fattype == FAT_FAT12
|| fmt_params->fattype == FAT_FAT16 ) {
4d97a: 5380 subql #1,%d0 <== NOT EXECUTED
static void
msdos_set_default_sectors_per_cluster_for_fattype(
msdos_format_param_t *fmt_params,
const uint64_t total_size )
{
if ( fmt_params->fattype == FAT_FAT12
4d97c: 7601 moveq #1,%d3 <== NOT EXECUTED
4d97e: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
4d984: b680 cmpl %d0,%d3 <== NOT EXECUTED
4d986: 6400 05ee bccw 4df76 <msdos_format+0xd8c> <== NOT EXECUTED
#define ONE_GB ( 1024L * 1024L * 1024L )
uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;
int b;
/* scale with the size of disk... */
for ( b = 31; b > 0; b-- ) {
if ( (gigs & ( 1 << b) ) != 0 )
4d98a: 282e fd5c movel %fp@(-676),%d4 <== NOT EXECUTED
static void
msdos_set_default_sectors_per_cluster_for_fattype(
msdos_format_param_t *fmt_params,
const uint64_t total_size )
{
if ( fmt_params->fattype == FAT_FAT12
4d98e: 701f moveq #31,%d0 <== NOT EXECUTED
#define ONE_GB ( 1024L * 1024L * 1024L )
uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;
int b;
/* scale with the size of disk... */
for ( b = 31; b > 0; b-- ) {
if ( (gigs & ( 1 << b) ) != 0 )
4d990: 7601 moveq #1,%d3 <== NOT EXECUTED
4d992: 2203 movel %d3,%d1 <== NOT EXECUTED
4d994: e1a9 lsll %d0,%d1 <== NOT EXECUTED
else {
#define ONE_GB ( 1024L * 1024L * 1024L )
uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;
int b;
/* scale with the size of disk... */
for ( b = 31; b > 0; b-- ) {
4d996: 5380 subql #1,%d0 <== NOT EXECUTED
if ( (gigs & ( 1 << b) ) != 0 )
4d998: 2401 movel %d1,%d2 <== NOT EXECUTED
4d99a: c484 andl %d4,%d2 <== NOT EXECUTED
4d99c: 6606 bnes 4d9a4 <msdos_format+0x7ba> <== NOT EXECUTED
else {
#define ONE_GB ( 1024L * 1024L * 1024L )
uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;
int b;
/* scale with the size of disk... */
for ( b = 31; b > 0; b-- ) {
4d99e: 4a80 tstl %d0 <== NOT EXECUTED
4d9a0: 66f0 bnes 4d992 <msdos_format+0x7a8> <== NOT EXECUTED
4d9a2: 7201 moveq #1,%d1 <== NOT EXECUTED
if ( (gigs & ( 1 << b) ) != 0 )
break;
}
fmt_params->sectors_per_cluster = 1 << b;
4d9a4: 2d41 fdbc movel %d1,%fp@(-580) <== NOT EXECUTED
data_clusters_cnt );
/* Correct sectors per cluster to the fat type specific default value */
if (fat_type != fmt_params->fattype) {
msdos_set_default_sectors_per_cluster_for_fattype( fmt_params,
total_size );
ret_val = msdos_set_sectors_per_cluster_from_request( rqdata,
4d9a8: 2f2e fd54 movel %fp@(-684),%sp@- <== NOT EXECUTED
4d9ac: 486e fdb0 pea %fp@(-592) <== NOT EXECUTED
4d9b0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d9b2: 4eba f7be jsr %pc@(4d172 <msdos_set_sectors_per_cluster_from_request.isra.1>)<== NOT EXECUTED
fmt_params );
}
}
if (fat_type != fmt_params->fattype && 1 < iteration_cnt) {
4d9b6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d9ba: 4281 clrl %d1 <== NOT EXECUTED
4d9bc: 122e fde2 moveb %fp@(-542),%d1 <== NOT EXECUTED
4d9c0: b285 cmpl %d5,%d1 <== NOT EXECUTED
4d9c2: 6700 05d0 beqw 4df94 <msdos_format+0xdaa> <== NOT EXECUTED
4d9c6: 4282 clrl %d2 <== NOT EXECUTED
4d9c8: 7e01 moveq #1,%d7 <== NOT EXECUTED
4d9ca: 3c0a movew %a2,%d6 <== NOT EXECUTED
--fmt_params->totl_sector_cnt;
4d9cc: 226e fdb4 moveal %fp@(-588),%a1 <== NOT EXECUTED
total_size );
ret_val = msdos_set_sectors_per_cluster_from_request( rqdata,
fmt_params );
}
}
if (fat_type != fmt_params->fattype && 1 < iteration_cnt) {
4d9d0: 1406 moveb %d6,%d2 <== NOT EXECUTED
4d9d2: be82 cmpl %d2,%d7 <== NOT EXECUTED
4d9d4: 6406 bccs 4d9dc <msdos_format+0x7f2> <== NOT EXECUTED
--fmt_params->totl_sector_cnt;
4d9d6: 5389 subql #1,%a1 <== NOT EXECUTED
4d9d8: 2d49 fdb4 movel %a1,%fp@(-588) <== NOT EXECUTED
}
}
++iteration_cnt;
4d9dc: 528a addql #1,%a2 <== NOT EXECUTED
if (ret_val == 0) {
data_clusters_cnt =
fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
}
while( ret_val == 0
4d9de: 4a80 tstl %d0 <== NOT EXECUTED
4d9e0: 6600 057e bnew 4df60 <msdos_format+0xd76> <== NOT EXECUTED
&& fmt_params->fattype != fat_type
4d9e4: b285 cmpl %d5,%d1 <== NOT EXECUTED
4d9e6: 6700 038e beqw 4dd76 <msdos_format+0xb8c> <== NOT EXECUTED
&& fmt_params->totl_sector_cnt > 0 ) {
4d9ea: 4a89 tstl %a1 <== NOT EXECUTED
4d9ec: 6600 fe26 bnew 4d814 <msdos_format+0x62a> <== NOT EXECUTED
4d9f0: 266e fd50 moveal %fp@(-688),%a3 <== NOT EXECUTED
++iteration_cnt;
}
}
if ( fmt_params->totl_sector_cnt == 0 )
{
errno = EINVAL;
4d9f4: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
4d9fa: 7c16 moveq #22,%d6 <== NOT EXECUTED
ret_val = -1;
4d9fc: 7eff moveq #-1,%d7 <== NOT EXECUTED
++iteration_cnt;
}
}
if ( fmt_params->totl_sector_cnt == 0 )
{
errno = EINVAL;
4d9fe: 2040 moveal %d0,%a0 <== NOT EXECUTED
4da00: 242e fdb8 movel %fp@(-584),%d2 <== NOT EXECUTED
4da04: 2086 movel %d6,%a0@ <== NOT EXECUTED
4da06: 6000 f8fc braw 4d304 <msdos_format+0x11a> <== NOT EXECUTED
* if requested, write whole disk/partition with 0xe5
*/
if ((ret_val == 0) &&
(rqdata != NULL) &&
!(rqdata->quick_format)) {
ret_val = msdos_format_fill_sectors
4da0a: 4878 ffe5 pea ffffffe5 <DBL_MIN_EXP+0x3e2>
4da0e: 2f2e fdb0 movel %fp@(-592),%sp@-
4da12: 2f2e fdb4 movel %fp@(-588),%sp@-
4da16: 42a7 clrl %sp@-
4da18: 2f0b movel %a3,%sp@-
4da1a: 2f0c movel %a4,%sp@-
4da1c: 4eba f5ac jsr %pc@(4cfca <msdos_format_fill_sectors>)
}
/*
* create master boot record
*/
if (ret_val == 0) {
4da20: 4fef 0018 lea %sp@(24),%sp
* if requested, write whole disk/partition with 0xe5
*/
if ((ret_val == 0) &&
(rqdata != NULL) &&
!(rqdata->quick_format)) {
ret_val = msdos_format_fill_sectors
4da24: 2e00 movel %d0,%d7
}
/*
* create master boot record
*/
if (ret_val == 0) {
4da26: 6700 f9ae beqw 4d3d6 <msdos_format+0x1ec>
/*
* cleanup:
* sync and unlock disk
* free any data structures (not needed now)
*/
if (fd != -1) {
4da2a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4da2c: b08b cmpl %a3,%d0 <== NOT EXECUTED
4da2e: 6700 f854 beqw 4d284 <msdos_format+0x9a> <== NOT EXECUTED
4da32: 6000 f87e braw 4d2b2 <msdos_format+0xc8> <== NOT EXECUTED
}
/*
* write volume label to first entry of directory
*/
if ((ret_val == 0) && fmt_params.VolLabel_present) {
memset(tmp_sec,0,sizeof(tmp_sec));
4da36: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb>
memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);
*MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;
4da3a: 7808 moveq #8,%d4
}
/*
* write volume label to first entry of directory
*/
if ((ret_val == 0) && fmt_params.VolLabel_present) {
memset(tmp_sec,0,sizeof(tmp_sec));
4da3c: 42a7 clrl %sp@-
4da3e: 2f0a movel %a2,%sp@-
4da40: 4eb9 0005 b1f8 jsr 5b1f8 <memset>
memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);
4da46: 204a moveal %a2,%a0
4da48: 20ee fdec movel %fp@(-532),%a0@+
4da4c: 20ee fdf0 movel %fp@(-528),%a0@+
4da50: 30ee fdf4 movew %fp@(-524),%a0@+
4da54: 10ae fdf6 moveb %fp@(-522),%a0@
*MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;
4da58: 1d44 fe0b moveb %d4,%fp@(-501)
ret_val = msdos_format_write_sec
4da5c: 2f0a movel %a2,%sp@-
4da5e: 2f2e fdb0 movel %fp@(-592),%sp@-
4da62: 2043 moveal %d3,%a0
4da64: 2f2e fdd0 movel %fp@(-560),%sp@-
4da68: 2f0b movel %a3,%sp@-
4da6a: 4e90 jsr %a0@
/*
* write FAT entry 0 as (0xffffff00|Media_type)EOC,
* write FAT entry 1 as EOC
* allocate directory in a FAT32 FS
*/
if (ret_val == 0) {
4da6c: 4fef 001c lea %sp@(28),%sp
*/
if ((ret_val == 0) && fmt_params.VolLabel_present) {
memset(tmp_sec,0,sizeof(tmp_sec));
memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);
*MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;
ret_val = msdos_format_write_sec
4da70: 2e00 movel %d0,%d7
/*
* write FAT entry 0 as (0xffffff00|Media_type)EOC,
* write FAT entry 1 as EOC
* allocate directory in a FAT32 FS
*/
if (ret_val == 0) {
4da72: 6700 fbb2 beqw 4d626 <msdos_format+0x43c>
* cleanup:
* sync and unlock disk
* free any data structures (not needed now)
*/
if (fd != -1) {
close(fd);
4da76: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4da78: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
4da7e: 588f addql #4,%sp <== NOT EXECUTED
4da80: 6000 f83a braw 4d2bc <msdos_format+0xd2> <== NOT EXECUTED
\*=========================================================================*/
{
/*
* clear fsinfo sector data
*/
memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);
4da84: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb> <== NOT EXECUTED
/*
* write LEADSIG, STRUCTSIG, TRAILSIG
*/
FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
4da88: 7872 moveq #114,%d4 <== NOT EXECUTED
\*=========================================================================*/
{
/*
* clear fsinfo sector data
*/
memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);
4da8a: 42a7 clrl %sp@- <== NOT EXECUTED
/*
* write LEADSIG, STRUCTSIG, TRAILSIG
*/
FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
4da8c: 7eaa moveq #-86,%d7 <== NOT EXECUTED
\*=========================================================================*/
{
/*
* clear fsinfo sector data
*/
memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);
4da8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
/*
* write LEADSIG, STRUCTSIG, TRAILSIG
*/
FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
4da90: 7c55 moveq #85,%d6 <== NOT EXECUTED
\*=========================================================================*/
{
/*
* clear fsinfo sector data
*/
memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);
4da92: 4eb9 0005 b1f8 jsr 5b1f8 <memset> <== NOT EXECUTED
/*
* write LEADSIG, STRUCTSIG, TRAILSIG
*/
FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
4da98: 7052 moveq #82,%d0 <== NOT EXECUTED
/*
* write fsinfo sector
*/
if ((ret_val == 0) &&
(fmt_params.fsinfo_sec != 0)) {
ret_val = msdos_format_write_sec(fd,
4da9a: 2043 moveal %d3,%a0 <== NOT EXECUTED
4da9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4da9e: 2f2e fdb0 movel %fp@(-592),%sp@- <== NOT EXECUTED
*/
memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);
/*
* write LEADSIG, STRUCTSIG, TRAILSIG
*/
FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
4daa2: 1d40 fe00 moveb %d0,%fp@(-512) <== NOT EXECUTED
/*
* write fsinfo sector
*/
if ((ret_val == 0) &&
(fmt_params.fsinfo_sec != 0)) {
ret_val = msdos_format_write_sec(fd,
4daa6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
*/
memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);
/*
* write LEADSIG, STRUCTSIG, TRAILSIG
*/
FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
4daa8: 1d40 fe01 moveb %d0,%fp@(-511) <== NOT EXECUTED
FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
/*
* write "empty" values for free cluster count and next cluster number
*/
FAT_SET_FSINFO_FREE_CLUSTER_COUNT(fsinfo+FAT_FSI_INFO,
4daac: 50c0 st %d0 <== NOT EXECUTED
*/
memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);
/*
* write LEADSIG, STRUCTSIG, TRAILSIG
*/
FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
4daae: 7261 moveq #97,%d1 <== NOT EXECUTED
4dab0: 7441 moveq #65,%d2 <== NOT EXECUTED
/*
* write fsinfo sector
*/
if ((ret_val == 0) &&
(fmt_params.fsinfo_sec != 0)) {
ret_val = msdos_format_write_sec(fd,
4dab2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
/*
* write LEADSIG, STRUCTSIG, TRAILSIG
*/
FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
4dab4: 1d47 ffff moveb %d7,%fp@(-1) <== NOT EXECUTED
*/
memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);
/*
* write LEADSIG, STRUCTSIG, TRAILSIG
*/
FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
4dab8: 1d41 fe02 moveb %d1,%fp@(-510) <== NOT EXECUTED
4dabc: 1d42 fe03 moveb %d2,%fp@(-509) <== NOT EXECUTED
FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
4dac0: 1d44 ffe4 moveb %d4,%fp@(-28) <== NOT EXECUTED
4dac4: 1d44 ffe5 moveb %d4,%fp@(-27) <== NOT EXECUTED
4dac8: 1d42 ffe6 moveb %d2,%fp@(-26) <== NOT EXECUTED
4dacc: 1d41 ffe7 moveb %d1,%fp@(-25) <== NOT EXECUTED
FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
4dad0: 1d46 fffe moveb %d6,%fp@(-2) <== NOT EXECUTED
/*
* write "empty" values for free cluster count and next cluster number
*/
FAT_SET_FSINFO_FREE_CLUSTER_COUNT(fsinfo+FAT_FSI_INFO,
4dad4: 1d40 ffe8 moveb %d0,%fp@(-24) <== NOT EXECUTED
4dad8: 1d40 ffe9 moveb %d0,%fp@(-23) <== NOT EXECUTED
4dadc: 1d40 ffea moveb %d0,%fp@(-22) <== NOT EXECUTED
4dae0: 1d40 ffeb moveb %d0,%fp@(-21) <== NOT EXECUTED
0xffffffff);
FAT_SET_FSINFO_NEXT_FREE_CLUSTER (fsinfo+FAT_FSI_INFO,
4dae4: 1d40 ffec moveb %d0,%fp@(-20) <== NOT EXECUTED
4dae8: 1d40 ffed moveb %d0,%fp@(-19) <== NOT EXECUTED
4daec: 1d40 ffee moveb %d0,%fp@(-18) <== NOT EXECUTED
4daf0: 1d40 ffef moveb %d0,%fp@(-17) <== NOT EXECUTED
/*
* write fsinfo sector
*/
if ((ret_val == 0) &&
(fmt_params.fsinfo_sec != 0)) {
ret_val = msdos_format_write_sec(fd,
4daf4: 4e90 jsr %a0@ <== NOT EXECUTED
}
/*
* write FAT as all empty
* -> write all FAT sectors as zero
*/
if (ret_val == 0) {
4daf6: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
/*
* write fsinfo sector
*/
if ((ret_val == 0) &&
(fmt_params.fsinfo_sec != 0)) {
ret_val = msdos_format_write_sec(fd,
4dafa: 2e00 movel %d0,%d7 <== NOT EXECUTED
}
/*
* write FAT as all empty
* -> write all FAT sectors as zero
*/
if (ret_val == 0) {
4dafc: 6700 fad4 beqw 4d5d2 <msdos_format+0x3e8> <== NOT EXECUTED
/*
* cleanup:
* sync and unlock disk
* free any data structures (not needed now)
*/
if (fd != -1) {
4db00: 70ff moveq #-1,%d0 <== NOT EXECUTED
4db02: b08b cmpl %a3,%d0 <== NOT EXECUTED
4db04: 6700 f77e beqw 4d284 <msdos_format+0x9a> <== NOT EXECUTED
4db08: 6000 f7a8 braw 4d2b2 <msdos_format+0xc8> <== NOT EXECUTED
FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);
break;
case FAT_FAT32:
/* FAT entry 0: 0xffffff00|media_type */
FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);
4db0c: 50c6 st %d6 <== NOT EXECUTED
/* FAT entry 1: EOC */
FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);
4db0e: 7ef8 moveq #-8,%d7 <== NOT EXECUTED
4db10: 700f moveq #15,%d0 <== NOT EXECUTED
FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);
break;
case FAT_FAT32:
/* FAT entry 0: 0xffffff00|media_type */
FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);
4db12: 1d6e fde1 fe00 moveb %fp@(-543),%fp@(-512) <== NOT EXECUTED
4db18: 1d46 fe01 moveb %d6,%fp@(-511) <== NOT EXECUTED
4db1c: 1d46 fe02 moveb %d6,%fp@(-510) <== NOT EXECUTED
4db20: 1d46 fe03 moveb %d6,%fp@(-509) <== NOT EXECUTED
/* FAT entry 1: EOC */
FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);
4db24: 1d47 fe04 moveb %d7,%fp@(-508) <== NOT EXECUTED
4db28: 1d46 fe05 moveb %d6,%fp@(-507) <== NOT EXECUTED
4db2c: 1d46 fe06 moveb %d6,%fp@(-506) <== NOT EXECUTED
4db30: 1d40 fe07 moveb %d0,%fp@(-505) <== NOT EXECUTED
/*
* only first valid cluster (cluster number 2) belongs
* to root directory, and is end of chain
* mark this in every copy of the FAT
*/
FAT_SET_VAL32(tmp_sec,8,FAT_FAT32_EOC);
4db34: 50c6 st %d6 <== NOT EXECUTED
4db36: 78f8 moveq #-8,%d4 <== NOT EXECUTED
4db38: 7e0f moveq #15,%d7 <== NOT EXECUTED
4db3a: 1d44 fe08 moveb %d4,%fp@(-504) <== NOT EXECUTED
4db3e: 1d46 fe09 moveb %d6,%fp@(-503) <== NOT EXECUTED
4db42: 1d46 fe0a moveb %d6,%fp@(-502) <== NOT EXECUTED
4db46: 1d47 fe0b moveb %d7,%fp@(-501) <== NOT EXECUTED
4db4a: 6000 fb26 braw 4d672 <msdos_format+0x488> <== NOT EXECUTED
4db4e: 5381 subql #1,%d1
/*
* non-printable character in given name, so keep stuck
* at that character and replace all following characters
* with a ' '
*/
*to++=' ';
4db50: 10fc 0020 moveb #32,%a0@+
}
*to = '\0';
4db54: 4210 clrb %a0@
if ((rqdata != NULL) &&
(rqdata->VolLabel != NULL)) {
from = rqdata->VolLabel;
fmt_params->VolLabel_present = true;
}
for (cnt = 0;
4db56: 4a81 tstl %d1
4db58: 6600 f830 bnew 4d38a <msdos_format+0x1a0>
4db5c: 6000 f84e braw 4d3ac <msdos_format+0x1c2>
/*
* non-printable character in given name, so keep stuck
* at that character and replace all following characters
* with a ' '
*/
*to++=' ';
4db60: 10fc 0020 moveb #32,%a0@+
4db64: 6000 f7fc braw 4d362 <msdos_format+0x178>
}
++iteration_cnt;
}
}
if ( fmt_params->totl_sector_cnt == 0 )
4db68: 7eff moveq #-1,%d7 <== NOT EXECUTED
/*
* cleanup:
* sync and unlock disk
* free any data structures (not needed now)
*/
if (fd != -1) {
4db6a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4db6c: b08b cmpl %a3,%d0 <== NOT EXECUTED
4db6e: 6700 f714 beqw 4d284 <msdos_format+0x9a> <== NOT EXECUTED
4db72: 6000 f73e braw 4d2b2 <msdos_format+0xc8> <== NOT EXECUTED
/*
* for FAT32: root directory is in cluster 2
*/
fmt_params->root_dir_start_sec =
fmt_params->rsvd_sector_cnt
+ (fmt_params-> fat_num*fmt_params->sectors_per_fat);
4db76: 4280 clrl %d0 <== NOT EXECUTED
4db78: 102e fde0 moveb %fp@(-544),%d0 <== NOT EXECUTED
4db7c: 4bee fdc0 lea %fp@(-576),%a5 <== NOT EXECUTED
4db80: 4c15 0800 mulsl %a5@,%d0 <== NOT EXECUTED
fmt_params->root_dir_fmt_sec_cnt = fmt_params->sectors_per_cluster;
4db84: 2d6e fdbc fdd4 movel %fp@(-580),%fp@(-556) <== NOT EXECUTED
/*
* for FAT32: root directory is in cluster 2
*/
fmt_params->root_dir_start_sec =
fmt_params->rsvd_sector_cnt
+ (fmt_params-> fat_num*fmt_params->sectors_per_fat);
4db8a: d480 addl %d0,%d2 <== NOT EXECUTED
4db8c: 2d42 fdd0 movel %d2,%fp@(-560) <== NOT EXECUTED
4db90: 6000 f792 braw 4d324 <msdos_format+0x13a> <== NOT EXECUTED
break;
case FAT_FAT16:
/* FAT entry 0: 0xff00|media_type */
FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);
FAT_SET_VAL8(tmp_sec,1,0xff);
4db94: 50c1 st %d1 <== NOT EXECUTED
/* FAT entry 1: EOC */
FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);
4db96: 78f8 moveq #-8,%d4 <== NOT EXECUTED
FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));
break;
case FAT_FAT16:
/* FAT entry 0: 0xff00|media_type */
FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);
4db98: 1d6e fde1 fe00 moveb %fp@(-543),%fp@(-512) <== NOT EXECUTED
FAT_SET_VAL8(tmp_sec,1,0xff);
4db9e: 1d41 fe01 moveb %d1,%fp@(-511) <== NOT EXECUTED
/* FAT entry 1: EOC */
FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);
4dba2: 1d44 fe02 moveb %d4,%fp@(-510) <== NOT EXECUTED
4dba6: 1d41 fe03 moveb %d1,%fp@(-509) <== NOT EXECUTED
break;
4dbaa: 6000 fac6 braw 4d672 <msdos_format+0x488> <== NOT EXECUTED
switch(fmt_params.fattype) {
case FAT_FAT12:
/* LSBits of FAT entry 0: media_type */
FAT_SET_VAL8(tmp_sec,0,(fmt_params.media_code));
/* MSBits of FAT entry 0:0xf, LSBits of FAT entry 1: LSB of EOC */
FAT_SET_VAL8(tmp_sec,1,(0x0f | (FAT_FAT12_EOC << 4)));
4dbae: 7e8f moveq #-113,%d7
/* MSBits of FAT entry 1: MSBits of EOC */
FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));
4dbb0: 50c0 st %d0
memset(tmp_sec,0,sizeof(tmp_sec));
switch(fmt_params.fattype) {
case FAT_FAT12:
/* LSBits of FAT entry 0: media_type */
FAT_SET_VAL8(tmp_sec,0,(fmt_params.media_code));
4dbb2: 1d6e fde1 fe00 moveb %fp@(-543),%fp@(-512)
/* MSBits of FAT entry 0:0xf, LSBits of FAT entry 1: LSB of EOC */
FAT_SET_VAL8(tmp_sec,1,(0x0f | (FAT_FAT12_EOC << 4)));
4dbb8: 1d47 fe01 moveb %d7,%fp@(-511)
/* MSBits of FAT entry 1: MSBits of EOC */
FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));
4dbbc: 1d40 fe02 moveb %d0,%fp@(-510)
break;
4dbc0: 6000 fab0 braw 4d672 <msdos_format+0x488>
ret_val = -1;
}
}
if (ret_val == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4dbc4: 4878 0002 pea 2 <DOUBLE_FLOAT>
4dbc8: 4879 0006 9c1f pea 69c1f <_CPU_m68k_BFFFO_table+0x188>
4dbce: 4878 0002 pea 2 <DOUBLE_FLOAT>
* determine number of FATs
*/
if (ret_val == 0) {
if ((rqdata == NULL) ||
(rqdata->fat_num == 0)) {
fmt_params->fat_num = 2;
4dbd2: 7c02 moveq #2,%d6
ret_val = -1;
}
}
if (ret_val == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4dbd4: 2f0c movel %a4,%sp@-
* determine number of FATs
*/
if (ret_val == 0) {
if ((rqdata == NULL) ||
(rqdata->fat_num == 0)) {
fmt_params->fat_num = 2;
4dbd6: 1d46 fde0 moveb %d6,%fp@(-544)
ret_val = -1;
}
}
if (ret_val == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4dbda: 4eba f334 jsr %pc@(4cf10 <msdos_format_printf>)
/*
* determine FAT type and sectors per cluster
* depends on
*/
if (ret_val == 0) {
fmt_params->sectors_per_cluster = 1;
4dbde: 4fef 0010 lea %sp@(16),%sp
4dbe2: 6000 fba6 braw 4d78a <msdos_format+0x5a0>
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
return (sectors + clustersize - 1) & ~(clustersize - 1);
4dbe6: 240b movel %a3,%d2
4dbe8: 2200 movel %d0,%d1
4dbea: d480 addl %d0,%d2
4dbec: 4481 negl %d1
* compute number of data clusters for current data:
* - compute cluster count for data AND fat
* - compute storage size for FAT
* - subtract from total cluster count
*/
fatdata_sect_cnt = total_sector_cnt
4dbee: 2609 movel %a1,%d3
- loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
if (fattype == FAT_FAT12) {
4dbf0: 7e01 moveq #1,%d7
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
return (sectors + clustersize - 1) & ~(clustersize - 1);
4dbf2: c481 andl %d1,%d2
* compute number of data clusters for current data:
* - compute cluster count for data AND fat
* - compute storage size for FAT
* - subtract from total cluster count
*/
fatdata_sect_cnt = total_sector_cnt
4dbf4: 9682 subl %d2,%d3
- loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
if (fattype == FAT_FAT12) {
4dbf6: be85 cmpl %d5,%d7
4dbf8: 6700 0082 beqw 4dc7c <msdos_format+0xa92>
fatdata_sect_cnt = fatdata_sect_cnt
- loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
fat_capacity = fatdata_cluster_cnt * 3 / 2;
}
else if (fattype == FAT_FAT16) {
4dbfc: 7e02 moveq #2,%d7 <== NOT EXECUTED
4dbfe: be85 cmpl %d5,%d7 <== NOT EXECUTED
4dc00: 6700 0096 beqw 4dc98 <msdos_format+0xaae> <== NOT EXECUTED
- loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
fat_capacity = fatdata_cluster_cnt * 2;
}
else { /* FAT32 */
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
4dc04: 4c40 3003 remul %d0,%d3,%d3 <== NOT EXECUTED
fat_capacity = fatdata_cluster_cnt * 4;
4dc08: 2203 movel %d3,%d1 <== NOT EXECUTED
4dc0a: e589 lsll #2,%d1 <== NOT EXECUTED
4dc0c: 6000 fcea braw 4d8f8 <msdos_format+0x70e> <== NOT EXECUTED
+ (sectors_per_cluster - 1))
/ sectors_per_cluster));
/*
* data cluster count too big? Then make clusters bigger
*/
if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
4dc10: 0c83 0000 0ff5 cmpil #4085,%d3
4dc16: 6304 blss 4dc1c <msdos_format+0xa32> <== ALWAYS TAKEN
((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
sectors_per_cluster *= 2;
4dc18: d080 addl %d0,%d0 <== NOT EXECUTED
4dc1a: 4202 clrb %d2 <== NOT EXECUTED
}
/*
* when maximum cluster size is exceeded, we have invalid data, abort...
*/
if (fattype == FAT_FAT12) {
if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {
4dc1c: 2e00 movel %d0,%d7
4dc1e: 4c04 7800 mulsl %d4,%d7
4dc22: 0c87 0000 1000 cmpil #4096,%d7
4dc28: 6200 fd16 bhiw 4d940 <msdos_format+0x756>
}
} else if ((sectors_per_cluster * bytes_per_sector)
> MS_BYTES_PER_CLUSTER_LIMIT) {
finished = true;
}
} while (!finished);
4dc2c: 4a02 tstb %d2
4dc2e: 6700 fca0 beqw 4d8d0 <msdos_format+0x6e6>
4dc32: 2e2e fd48 movel %fp@(-696),%d7
*sectors_per_cluster_adj = sectors_per_cluster;
*sectors_per_fat_ptr = fat_sectors_cnt / fat_num;
4dc36: 4c47 1001 remul %d7,%d1,%d1
fmt_params->sectors_per_cluster,
fmt_params->skip_alignment,
§ors_per_cluster_adj,
&fmt_params->sectors_per_fat,
&data_clusters_cnt);
fmt_params->sectors_per_cluster = sectors_per_cluster_adj;
4dc3a: 2d40 fdbc movel %d0,%fp@(-580)
finished = true;
}
} while (!finished);
*sectors_per_cluster_adj = sectors_per_cluster;
*sectors_per_fat_ptr = fat_sectors_cnt / fat_num;
4dc3e: 2d41 fdc0 movel %d1,%fp@(-576)
( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;
uint32_t ms_sectors_per_cluster_limit_FAT16 =
( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;
uint8_t fattype = FAT_FAT32;
if ( number_of_clusters < FAT_FAT12_MAX_CLN
4dc42: 0c83 0000 0ff4 cmpil #4084,%d3
4dc48: 6300 fd10 blsw 4d95a <msdos_format+0x770>
&& sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT12 ) {
fattype = FAT_FAT12;
}
else if ( number_of_clusters < FAT_FAT16_MAX_CLN
4dc4c: 0c83 0000 fff4 cmpil #65524,%d3 <== NOT EXECUTED
4dc52: 6300 00e0 blsw 4dd34 <msdos_format+0xb4a> <== NOT EXECUTED
{
uint32_t ms_sectors_per_cluster_limit_FAT12 =
( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;
uint32_t ms_sectors_per_cluster_limit_FAT16 =
( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;
uint8_t fattype = FAT_FAT32;
4dc56: 7004 moveq #4,%d0 <== NOT EXECUTED
4dc58: 6000 fd12 braw 4d96c <msdos_format+0x782> <== NOT EXECUTED
/ sectors_per_cluster));
/*
* data cluster count too big? Then make clusters bigger
*/
if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
4dc5c: 0c83 0000 fff5 cmpil #65525,%d3 <== NOT EXECUTED
4dc62: 6300 fcca blsw 4d92e <msdos_format+0x744> <== NOT EXECUTED
sectors_per_cluster *= 2;
4dc66: d080 addl %d0,%d0 <== NOT EXECUTED
4dc68: 4202 clrb %d2 <== NOT EXECUTED
*/
if (fattype == FAT_FAT12) {
if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {
finished = true;
}
} else if ((sectors_per_cluster * bytes_per_sector)
4dc6a: 2e00 movel %d0,%d7 <== NOT EXECUTED
4dc6c: 4c04 7800 mulsl %d4,%d7 <== NOT EXECUTED
4dc70: 0c87 0000 8000 cmpil #32768,%d7 <== NOT EXECUTED
4dc76: 6200 fcc8 bhiw 4d940 <msdos_format+0x756> <== NOT EXECUTED
4dc7a: 60b0 bras 4dc2c <msdos_format+0xa42> <== NOT EXECUTED
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
return (sectors + clustersize - 1) & ~(clustersize - 1);
4dc7c: 242e fd60 movel %fp@(-672),%d2
4dc80: d480 addl %d0,%d2
4dc82: c481 andl %d1,%d2
* - subtract from total cluster count
*/
fatdata_sect_cnt = total_sector_cnt
- loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
if (fattype == FAT_FAT12) {
fatdata_sect_cnt = fatdata_sect_cnt
4dc84: 9682 subl %d2,%d3
- loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
4dc86: 4c40 3003 remul %d0,%d3,%d3
fat_capacity = fatdata_cluster_cnt * 3 / 2;
4dc8a: 2a43 moveal %d3,%a5
4dc8c: 4bf5 3a00 lea %a5@(00000000,%d3:l:2),%a5
4dc90: 220d movel %a5,%d1
4dc92: e289 lsrl #1,%d1
4dc94: 6000 fc62 braw 4d8f8 <msdos_format+0x70e>
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
return (sectors + clustersize - 1) & ~(clustersize - 1);
4dc98: 242e fd60 movel %fp@(-672),%d2 <== NOT EXECUTED
4dc9c: d480 addl %d0,%d2 <== NOT EXECUTED
4dc9e: c282 andl %d2,%d1 <== NOT EXECUTED
- loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
fat_capacity = fatdata_cluster_cnt * 3 / 2;
}
else if (fattype == FAT_FAT16) {
fatdata_sect_cnt = fatdata_sect_cnt
4dca0: 9681 subl %d1,%d3 <== NOT EXECUTED
- loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
4dca2: 4c40 3003 remul %d0,%d3,%d3 <== NOT EXECUTED
fat_capacity = fatdata_cluster_cnt * 2;
4dca6: 2203 movel %d3,%d1 <== NOT EXECUTED
4dca8: d281 addl %d1,%d1 <== NOT EXECUTED
4dcaa: 6000 fc4c braw 4d8f8 <msdos_format+0x70e> <== NOT EXECUTED
if ((rqdata != NULL) &&
(rqdata->files_per_root_dir > 0)) {
fmt_params->files_per_root_dir = rqdata->files_per_root_dir;
}
else {
if (fmt_params->fattype == FAT_FAT16) {
4dcae: 7802 moveq #2,%d4
4dcb0: b885 cmpl %d5,%d4
4dcb2: 6700 01be beqw 4de72 <msdos_format+0xc88>
else {
fmt_params->files_per_root_dir = 64;
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
(2*fmt_params->bytes_per_sector/
4dcb6: 282e fdb0 movel %fp@(-592),%d4
4dcba: 2004 movel %d4,%d0
if ((rqdata != NULL) &&
(rqdata->files_per_root_dir > 0)) {
fmt_params->files_per_root_dir = rqdata->files_per_root_dir;
}
else {
if (fmt_params->fattype == FAT_FAT16) {
4dcbc: 723f moveq #63,%d1
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
(2*fmt_params->bytes_per_sector/
FAT_DIRENTRY_SIZE-1));
fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
4dcbe: 367c 0001 moveaw #1,%a3
else {
fmt_params->files_per_root_dir = 64;
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
(2*fmt_params->bytes_per_sector/
4dcc2: d080 addl %d0,%d0
4dcc4: ea88 lsrl #5,%d0
}
else {
fmt_params->files_per_root_dir = 64;
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
4dcc6: d280 addl %d0,%d1
(2*fmt_params->bytes_per_sector/
FAT_DIRENTRY_SIZE-1));
fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
4dcc8: 2c01 movel %d1,%d6
4dcca: 4c40 6002 remul %d0,%d2,%d6
4dcce: 9282 subl %d2,%d1
4dcd0: 2001 movel %d1,%d0
4dcd2: 2d41 fdc8 movel %d1,%fp@(-568)
4dcd6: eb88 lsll #5,%d0
4dcd8: 6000 fba0 braw 4d87a <msdos_format+0x690>
4dcdc: 282e fdb0 movel %fp@(-592),%d4 <== NOT EXECUTED
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
"sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
if (fmt_params->fattype == FAT_FAT32) {
/* recommended: for FAT32, always set reserved sector count to 32 */
fmt_params->rsvd_sector_cnt = 32;
4dce0: 7020 moveq #32,%d0 <== NOT EXECUTED
/FAT_DIRENTRY_SIZE));
}
fmt_params->root_dir_sectors =
(((fmt_params->files_per_root_dir * FAT_DIRENTRY_SIZE)
+ fmt_params->bytes_per_sector - 1)
4dce2: 2044 moveal %d4,%a0 <== NOT EXECUTED
4dce4: 5388 subql #1,%a0 <== NOT EXECUTED
/* recommended: for FAT32, always set reserved sector count to 32 */
fmt_params->rsvd_sector_cnt = 32;
/* for FAT32, always set files per root directory 0 */
fmt_params->files_per_root_dir = 0;
/* location of copy of MBR */
fmt_params->mbr_copy_sec = 6;
4dce6: 7206 moveq #6,%d1 <== NOT EXECUTED
/* location of fsinfo sector */
fmt_params->fsinfo_sec = 1;
4dce8: 7401 moveq #1,%d2 <== NOT EXECUTED
4dcea: 367c 0020 moveaw #32,%a3 <== NOT EXECUTED
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
"sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
if (fmt_params->fattype == FAT_FAT32) {
/* recommended: for FAT32, always set reserved sector count to 32 */
fmt_params->rsvd_sector_cnt = 32;
4dcee: 2d40 fdb8 movel %d0,%fp@(-584) <== NOT EXECUTED
/* for FAT32, always set files per root directory 0 */
fmt_params->files_per_root_dir = 0;
/* location of copy of MBR */
fmt_params->mbr_copy_sec = 6;
/* location of fsinfo sector */
fmt_params->fsinfo_sec = 1;
4dcf2: 4200 clrb %d0 <== NOT EXECUTED
/FAT_DIRENTRY_SIZE));
}
fmt_params->root_dir_sectors =
(((fmt_params->files_per_root_dir * FAT_DIRENTRY_SIZE)
+ fmt_params->bytes_per_sector - 1)
4dcf4: d088 addl %a0,%d0 <== NOT EXECUTED
/ fmt_params->bytes_per_sector);
4dcf6: 2e00 movel %d0,%d7 <== NOT EXECUTED
/* recommended: for FAT32, always set reserved sector count to 32 */
fmt_params->rsvd_sector_cnt = 32;
/* for FAT32, always set files per root directory 0 */
fmt_params->files_per_root_dir = 0;
/* location of copy of MBR */
fmt_params->mbr_copy_sec = 6;
4dcf8: 2d41 fdd8 movel %d1,%fp@(-552) <== NOT EXECUTED
uint32_t fatdata_sect_cnt;
uint32_t fat_sectors_cnt;
/*
* ensure, that maximum cluster size (32KByte) is not exceeded
*/
while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
4dcfc: 223c 0000 8000 movel #32768,%d1 <== NOT EXECUTED
}
fmt_params->root_dir_sectors =
(((fmt_params->files_per_root_dir * FAT_DIRENTRY_SIZE)
+ fmt_params->bytes_per_sector - 1)
/ fmt_params->bytes_per_sector);
4dd02: 4c44 7007 remul %d4,%d7,%d7 <== NOT EXECUTED
uint32_t fatdata_sect_cnt;
uint32_t fat_sectors_cnt;
/*
* ensure, that maximum cluster size (32KByte) is not exceeded
*/
while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
4dd06: 4c44 1001 remul %d4,%d1,%d1 <== NOT EXECUTED
if (ret_val == 0) {
/*
* check values to get legal arrangement of FAT type and cluster count
*/
ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,
4dd0a: 202e fdbc movel %fp@(-580),%d0 <== NOT EXECUTED
}
fmt_params->root_dir_sectors =
(((fmt_params->files_per_root_dir * FAT_DIRENTRY_SIZE)
+ fmt_params->bytes_per_sector - 1)
/ fmt_params->bytes_per_sector);
4dd0e: 2d47 fd64 movel %d7,%fp@(-668) <== NOT EXECUTED
if (ret_val == 0) {
/*
* check values to get legal arrangement of FAT type and cluster count
*/
ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,
4dd12: 226e fdb4 moveal %fp@(-588),%a1 <== NOT EXECUTED
fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
(2*fmt_params->bytes_per_sector
/FAT_DIRENTRY_SIZE));
}
fmt_params->root_dir_sectors =
4dd16: 2d47 fdcc movel %d7,%fp@(-564) <== NOT EXECUTED
fmt_params->totl_sector_cnt,
fmt_params->rsvd_sector_cnt,
fmt_params->root_dir_sectors,
fmt_params->fat_num,
fmt_params->sectors_per_cluster,
fmt_params->skip_alignment,
4dd1a: 1c2e fdfe moveb %fp@(-514),%d6 <== NOT EXECUTED
if (fmt_params->fattype == FAT_FAT32) {
/* recommended: for FAT32, always set reserved sector count to 32 */
fmt_params->rsvd_sector_cnt = 32;
/* for FAT32, always set files per root directory 0 */
fmt_params->files_per_root_dir = 0;
4dd1e: 42ae fdc8 clrl %fp@(-568) <== NOT EXECUTED
ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,
fmt_params->bytes_per_sector,
fmt_params->totl_sector_cnt,
fmt_params->rsvd_sector_cnt,
fmt_params->root_dir_sectors,
fmt_params->fat_num,
4dd22: 1e2e fde0 moveb %fp@(-544),%d7 <== NOT EXECUTED
/* for FAT32, always set files per root directory 0 */
fmt_params->files_per_root_dir = 0;
/* location of copy of MBR */
fmt_params->mbr_copy_sec = 6;
/* location of fsinfo sector */
fmt_params->fsinfo_sec = 1;
4dd26: 2d42 fddc movel %d2,%fp@(-548) <== NOT EXECUTED
uint32_t fatdata_sect_cnt;
uint32_t fat_sectors_cnt;
/*
* ensure, that maximum cluster size (32KByte) is not exceeded
*/
while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
4dd2a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4dd2c: 6500 fb7e bcsw 4d8ac <msdos_format+0x6c2> <== NOT EXECUTED
4dd30: 6000 fb80 braw 4d8b2 <msdos_format+0x6c8> <== NOT EXECUTED
const uint32_t sectors_per_cluster,
const uint32_t number_of_clusters )
{
uint32_t ms_sectors_per_cluster_limit_FAT12 =
( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;
uint32_t ms_sectors_per_cluster_limit_FAT16 =
4dd34: 243c 0000 8001 movel #32769,%d2 <== NOT EXECUTED
4dd3a: 4c44 2002 remul %d4,%d2,%d2 <== NOT EXECUTED
if ( number_of_clusters < FAT_FAT12_MAX_CLN
&& sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT12 ) {
fattype = FAT_FAT12;
}
else if ( number_of_clusters < FAT_FAT16_MAX_CLN
&& sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT16 ) {
4dd3e: b082 cmpl %d2,%d0 <== NOT EXECUTED
4dd40: 6200 ff14 bhiw 4dc56 <msdos_format+0xa6c> <== NOT EXECUTED
fattype = FAT_FAT16;
4dd44: 7002 moveq #2,%d0 <== NOT EXECUTED
4dd46: 6000 fc24 braw 4d96c <msdos_format+0x782> <== NOT EXECUTED
if (fmt_params->totl_sector_cnt < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) {
fmt_params->fattype = FAT_FAT12;
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
}
else if (fmt_params->totl_sector_cnt < FAT_FAT16_MAX_CLN * fat16_sect_per_clust) {
4dd4a: 2e3c 0000 fff5 movel #65525,%d7 <== NOT EXECUTED
4dd50: 4c07 0800 mulsl %d7,%d0 <== NOT EXECUTED
4dd54: b081 cmpl %d1,%d0 <== NOT EXECUTED
4dd56: 6300 017a blsw 4ded2 <msdos_format+0xce8> <== NOT EXECUTED
fmt_params->fattype = FAT_FAT16;
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
4dd5a: 7002 moveq #2,%d0 <== NOT EXECUTED
fmt_params->fattype = FAT_FAT12;
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
}
else if (fmt_params->totl_sector_cnt < FAT_FAT16_MAX_CLN * fat16_sect_per_clust) {
fmt_params->fattype = FAT_FAT16;
4dd5c: 7202 moveq #2,%d1 <== NOT EXECUTED
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
4dd5e: 2d40 fdbc movel %d0,%fp@(-580) <== NOT EXECUTED
fmt_params->fattype = FAT_FAT12;
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
}
else if (fmt_params->totl_sector_cnt < FAT_FAT16_MAX_CLN * fat16_sect_per_clust) {
fmt_params->fattype = FAT_FAT16;
4dd62: 1d41 fde2 moveb %d1,%fp@(-542) <== NOT EXECUTED
4dd66: 6000 fa4a braw 4d7b2 <msdos_format+0x5c8> <== NOT EXECUTED
* are a compromise concerning capacity and efficency
*/
uint32_t fat12_sect_per_clust = 8;
uint32_t fat16_sect_per_clust = 32;
if (rqdata != NULL && rqdata->sectors_per_cluster != 0) {
4dd6a: 283c 0000 7fa8 movel #32680,%d4
* limiting values for disk size, fat type, sectors per cluster
* NOTE: maximum sect_per_clust is arbitrarily choosen with values that
* are a compromise concerning capacity and efficency
*/
uint32_t fat12_sect_per_clust = 8;
uint32_t fat16_sect_per_clust = 32;
4dd70: 7020 moveq #32,%d0
4dd72: 6000 fa28 braw 4d79c <msdos_format+0x5b2>
4dd76: 266e fd50 moveal %fp@(-688),%a3
4dd7a: 2e2e fd4c movel %fp@(-692),%d7
}
++iteration_cnt;
}
}
if ( fmt_params->totl_sector_cnt == 0 )
4dd7e: 4a89 tstl %a1
4dd80: 6700 fc72 beqw 4d9f4 <msdos_format+0x80a>
ret_val = -1;
}
if (0 == ret_val)
{
if (FAT_FAT32 != fmt_params->fattype)
4dd84: 4280 clrl %d0
4dd86: 102e fde2 moveb %fp@(-542),%d0
4dd8a: 7204 moveq #4,%d1
{
fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
4dd8c: 282e fdbc movel %fp@(-580),%d4
fmt_params->sectors_per_cluster,
fmt_params->skip_alignment)
4dd90: 162e fdfe moveb %fp@(-514),%d3
ret_val = -1;
}
if (0 == ret_val)
{
if (FAT_FAT32 != fmt_params->fattype)
4dd94: b280 cmpl %d0,%d1
4dd96: 6724 beqs 4ddbc <msdos_format+0xbd2> <== NEVER TAKEN
{
fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
4dd98: 222e fdcc movel %fp@(-564),%d1
static uint32_t
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
4dd9c: 4a03 tstb %d3
4dd9e: 660e bnes 4ddae <msdos_format+0xbc4>
return (sectors + clustersize - 1) & ~(clustersize - 1);
4dda0: 2044 moveal %d4,%a0
4dda2: 2004 movel %d4,%d0
4dda4: 4480 negl %d0
4dda6: 41f0 18ff lea %a0@(ffffffff,%d1:l),%a0
4ddaa: 2208 movel %a0,%d1
4ddac: c280 andl %d0,%d1
if (FAT_FAT32 != fmt_params->fattype)
{
fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
fmt_params->sectors_per_cluster,
fmt_params->skip_alignment)
* (fmt_params->bytes_per_sector / FAT_DIRENTRY_SIZE);
4ddae: 202e fdb0 movel %fp@(-592),%d0
4ddb2: ea88 lsrl #5,%d0
4ddb4: 4c00 1800 mulsl %d0,%d1
4ddb8: 2d41 fdc8 movel %d1,%fp@(-568)
}
fmt_params->rsvd_sector_cnt = loc_align_object (fmt_params->rsvd_sector_cnt,
4ddbc: 242e fdb8 movel %fp@(-584),%d2
static uint32_t
loc_align_object (const uint32_t sectors,
const uint32_t clustersize,
const bool skip_alignment)
{
if (! skip_alignment)
4ddc0: 4a03 tstb %d3
4ddc2: 660e bnes 4ddd2 <msdos_format+0xbe8>
return (sectors + clustersize - 1) & ~(clustersize - 1);
4ddc4: 2a44 moveal %d4,%a5
4ddc6: 2004 movel %d4,%d0
4ddc8: 4480 negl %d0
4ddca: 4bf5 28ff lea %a5@(ffffffff,%d2:l),%a5
4ddce: 240d movel %a5,%d2
4ddd0: c480 andl %d0,%d2
fmt_params->sectors_per_cluster,
fmt_params->skip_alignment)
* (fmt_params->bytes_per_sector / FAT_DIRENTRY_SIZE);
}
fmt_params->rsvd_sector_cnt = loc_align_object (fmt_params->rsvd_sector_cnt,
4ddd2: 2d42 fdb8 movel %d2,%fp@(-584)
/*
* determine media code
*/
if (ret_val == 0) {
if ((rqdata != NULL) &&
4ddd6: 4a8c tstl %a4
4ddd8: 6762 beqs 4de3c <msdos_format+0xc52> <== NEVER TAKEN
(rqdata->media != 0)) {
4ddda: 162c 0014 moveb %a4@(20),%d3
/*
* determine media code
*/
if (ret_val == 0) {
if ((rqdata != NULL) &&
4ddde: 675c beqs 4de3c <msdos_format+0xc52> <== ALWAYS TAKEN
(rqdata->media != 0)) {
const char valid_media_codes[] =
{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
if (NULL==memchr(valid_media_codes,
4dde0: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED
4dde4: 4280 clrl %d0 <== NOT EXECUTED
4dde6: 1003 moveb %d3,%d0 <== NOT EXECUTED
* determine media code
*/
if (ret_val == 0) {
if ((rqdata != NULL) &&
(rqdata->media != 0)) {
const char valid_media_codes[] =
4dde8: 72f0 moveq #-16,%d1 <== NOT EXECUTED
{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
if (NULL==memchr(valid_media_codes,
4ddea: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4ddec: 486e fe00 pea %fp@(-512) <== NOT EXECUTED
* determine media code
*/
if (ret_val == 0) {
if ((rqdata != NULL) &&
(rqdata->media != 0)) {
const char valid_media_codes[] =
4ddf0: 1d41 fe00 moveb %d1,%fp@(-512) <== NOT EXECUTED
4ddf4: 78f8 moveq #-8,%d4 <== NOT EXECUTED
4ddf6: 7cf9 moveq #-7,%d6 <== NOT EXECUTED
4ddf8: 70fa moveq #-6,%d0 <== NOT EXECUTED
4ddfa: 72fb moveq #-5,%d1 <== NOT EXECUTED
4ddfc: 1d44 fe01 moveb %d4,%fp@(-511) <== NOT EXECUTED
4de00: 1d46 fe02 moveb %d6,%fp@(-510) <== NOT EXECUTED
4de04: 1d40 fe03 moveb %d0,%fp@(-509) <== NOT EXECUTED
4de08: 1d41 fe04 moveb %d1,%fp@(-508) <== NOT EXECUTED
4de0c: 70fe moveq #-2,%d0 <== NOT EXECUTED
4de0e: 50c1 st %d1 <== NOT EXECUTED
4de10: 78fc moveq #-4,%d4 <== NOT EXECUTED
4de12: 7cfd moveq #-3,%d6 <== NOT EXECUTED
4de14: 1d44 fe05 moveb %d4,%fp@(-507) <== NOT EXECUTED
4de18: 1d46 fe06 moveb %d6,%fp@(-506) <== NOT EXECUTED
4de1c: 1d40 fe07 moveb %d0,%fp@(-505) <== NOT EXECUTED
4de20: 1d41 fe08 moveb %d1,%fp@(-504) <== NOT EXECUTED
{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
if (NULL==memchr(valid_media_codes,
4de24: 4eb9 0005 b000 jsr 5b000 <memchr> <== NOT EXECUTED
4de2a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4de2e: 4a80 tstl %d0 <== NOT EXECUTED
4de30: 6700 0228 beqw 4e05a <msdos_format+0xe70> <== NOT EXECUTED
sizeof(valid_media_codes))) {
ret_val = -1;
errno = EINVAL;
}
else {
fmt_params->media_code = rqdata->media;
4de34: 1d43 fde1 moveb %d3,%fp@(-543) <== NOT EXECUTED
4de38: 6000 f4ca braw 4d304 <msdos_format+0x11a> <== NOT EXECUTED
}
}
else {
fmt_params->media_code = FAT_BR_MEDIA_FIXED;
4de3c: 70f8 moveq #-8,%d0
4de3e: 1d40 fde1 moveb %d0,%fp@(-543)
4de42: 6000 f4c0 braw 4d304 <msdos_format+0x11a>
4de46: 2003 movel %d3,%d0 <== NOT EXECUTED
4de48: 7218 moveq #24,%d1 <== NOT EXECUTED
4de4a: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
4de4c: 2a40 moveal %d0,%a5 <== NOT EXECUTED
4de4e: 2003 movel %d3,%d0 <== NOT EXECUTED
4de50: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
{
uint32_t total_sectors_num16 = 0;
uint32_t total_sectors_num32 = 0;
/* store total sector count in either 16 or 32 bit field in mbr */
if (fmt_params->totl_sector_cnt < 0x10000) {
4de56: 4204 clrb %d4 <== NOT EXECUTED
4de58: 4206 clrb %d6 <== NOT EXECUTED
4de5a: 2400 movel %d0,%d2 <== NOT EXECUTED
4de5c: e08a lsrl #8,%d2 <== NOT EXECUTED
4de5e: 1d43 fd58 moveb %d3,%fp@(-680) <== NOT EXECUTED
4de62: 4243 clrw %d3 <== NOT EXECUTED
4de64: 4843 swap %d3 <== NOT EXECUTED
4de66: 1d44 fd5f moveb %d4,%fp@(-673) <== NOT EXECUTED
4de6a: 1d46 fd60 moveb %d6,%fp@(-672) <== NOT EXECUTED
4de6e: 6000 f5e2 braw 4d452 <msdos_format+0x268> <== NOT EXECUTED
else {
fmt_params->files_per_root_dir = 64;
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
(2*fmt_params->bytes_per_sector/
4de72: 282e fdb0 movel %fp@(-592),%d4 <== NOT EXECUTED
4de76: 2004 movel %d4,%d0 <== NOT EXECUTED
if ((rqdata != NULL) &&
(rqdata->files_per_root_dir > 0)) {
fmt_params->files_per_root_dir = rqdata->files_per_root_dir;
}
else {
if (fmt_params->fattype == FAT_FAT16) {
4de78: 223c 0000 01ff movel #511,%d1 <== NOT EXECUTED
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
(2*fmt_params->bytes_per_sector/
FAT_DIRENTRY_SIZE-1));
fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
4de7e: 367c 0001 moveaw #1,%a3 <== NOT EXECUTED
else {
fmt_params->files_per_root_dir = 64;
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
(2*fmt_params->bytes_per_sector/
4de82: d080 addl %d0,%d0 <== NOT EXECUTED
4de84: ea88 lsrl #5,%d0 <== NOT EXECUTED
}
else {
fmt_params->files_per_root_dir = 64;
}
}
fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
4de86: d280 addl %d0,%d1 <== NOT EXECUTED
(2*fmt_params->bytes_per_sector/
FAT_DIRENTRY_SIZE-1));
fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
4de88: 2c01 movel %d1,%d6 <== NOT EXECUTED
4de8a: 4c40 6002 remul %d0,%d2,%d6 <== NOT EXECUTED
4de8e: 9282 subl %d2,%d1 <== NOT EXECUTED
4de90: 2001 movel %d1,%d0 <== NOT EXECUTED
4de92: 2d41 fdc8 movel %d1,%fp@(-568) <== NOT EXECUTED
4de96: eb88 lsll #5,%d0 <== NOT EXECUTED
4de98: 6000 f9e0 braw 4d87a <msdos_format+0x690> <== NOT EXECUTED
if ((ret_val == 0) &&
(fmt_params.mbr_copy_sec != 0)) {
/*
* write copy of MBR
*/
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4de9c: 4879 0006 9c6f pea 69c6f <_CPU_m68k_BFFFO_table+0x1d8> <== NOT EXECUTED
"write back up MRB sector\n");
ret_val = msdos_format_write_sec(fd,
4dea2: 2a43 moveal %d3,%a5 <== NOT EXECUTED
if ((ret_val == 0) &&
(fmt_params.mbr_copy_sec != 0)) {
/*
* write copy of MBR
*/
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4dea4: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4dea8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4deaa: 4eba f064 jsr %pc@(4cf10 <msdos_format_printf>) <== NOT EXECUTED
"write back up MRB sector\n");
ret_val = msdos_format_write_sec(fd,
4deae: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4deb0: 2f2e fdb0 movel %fp@(-592),%sp@- <== NOT EXECUTED
4deb4: 2f2e fdd8 movel %fp@(-552),%sp@- <== NOT EXECUTED
4deb8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4deba: 4e95 jsr %a5@ <== NOT EXECUTED
}
}
/*
* for FAT32: initialize info sector on disk
*/
if ((ret_val == 0) &&
4debc: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
/*
* write copy of MBR
*/
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
"write back up MRB sector\n");
ret_val = msdos_format_write_sec(fd,
4dec0: 2e00 movel %d0,%d7 <== NOT EXECUTED
}
}
/*
* for FAT32: initialize info sector on disk
*/
if ((ret_val == 0) &&
4dec2: 6600 f3ba bnew 4d27e <msdos_format+0x94> <== NOT EXECUTED
(fmt_params.fsinfo_sec != 0)) {
4dec6: 242e fddc movel %fp@(-548),%d2 <== NOT EXECUTED
}
}
/*
* for FAT32: initialize info sector on disk
*/
if ((ret_val == 0) &&
4deca: 6700 f706 beqw 4d5d2 <msdos_format+0x3e8> <== NOT EXECUTED
4dece: 6000 fbb4 braw 4da84 <msdos_format+0x89a> <== NOT EXECUTED
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
}
else {
#define ONE_GB (1024L * 1024L * 1024L)
uint32_t gigs = (total_size + ONE_GB) / ONE_GB;
4ded2: 7e1e moveq #30,%d7 <== NOT EXECUTED
int b;
fmt_params->fattype = FAT_FAT32;
/* scale with the size of disk... */
for (b = 31; b > 0; b--)
4ded4: 781f moveq #31,%d4 <== NOT EXECUTED
if ((gigs & (1 << b)) != 0)
4ded6: 7a01 moveq #1,%d5 <== NOT EXECUTED
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
}
else {
#define ONE_GB (1024L * 1024L * 1024L)
uint32_t gigs = (total_size + ONE_GB) / ONE_GB;
4ded8: 4280 clrl %d0 <== NOT EXECUTED
4deda: 223c 4000 0000 movel #1073741824,%d1 <== NOT EXECUTED
int b;
fmt_params->fattype = FAT_FAT32;
4dee0: 7c04 moveq #4,%d6 <== NOT EXECUTED
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
}
else {
#define ONE_GB (1024L * 1024L * 1024L)
uint32_t gigs = (total_size + ONE_GB) / ONE_GB;
4dee2: d283 addl %d3,%d1 <== NOT EXECUTED
4dee4: d182 addxl %d2,%d0 <== NOT EXECUTED
int b;
fmt_params->fattype = FAT_FAT32;
4dee6: 1d46 fde2 moveb %d6,%fp@(-542) <== NOT EXECUTED
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
}
else {
#define ONE_GB (1024L * 1024L * 1024L)
uint32_t gigs = (total_size + ONE_GB) / ONE_GB;
4deea: 2c00 movel %d0,%d6 <== NOT EXECUTED
4deec: 2001 movel %d1,%d0 <== NOT EXECUTED
4deee: eea8 lsrl %d7,%d0 <== NOT EXECUTED
4def0: e58e lsll #2,%d6 <== NOT EXECUTED
4def2: 8c80 orl %d0,%d6 <== NOT EXECUTED
int b;
fmt_params->fattype = FAT_FAT32;
/* scale with the size of disk... */
for (b = 31; b > 0; b--)
if ((gigs & (1 << b)) != 0)
4def4: 2005 movel %d5,%d0 <== NOT EXECUTED
4def6: e9a8 lsll %d4,%d0 <== NOT EXECUTED
#define ONE_GB (1024L * 1024L * 1024L)
uint32_t gigs = (total_size + ONE_GB) / ONE_GB;
int b;
fmt_params->fattype = FAT_FAT32;
/* scale with the size of disk... */
for (b = 31; b > 0; b--)
4def8: 5384 subql #1,%d4 <== NOT EXECUTED
if ((gigs & (1 << b)) != 0)
4defa: 2200 movel %d0,%d1 <== NOT EXECUTED
4defc: c286 andl %d6,%d1 <== NOT EXECUTED
4defe: 6606 bnes 4df06 <msdos_format+0xd1c> <== NOT EXECUTED
#define ONE_GB (1024L * 1024L * 1024L)
uint32_t gigs = (total_size + ONE_GB) / ONE_GB;
int b;
fmt_params->fattype = FAT_FAT32;
/* scale with the size of disk... */
for (b = 31; b > 0; b--)
4df00: 4a84 tstl %d4 <== NOT EXECUTED
4df02: 66f0 bnes 4def4 <msdos_format+0xd0a> <== NOT EXECUTED
4df04: 7001 moveq #1,%d0 <== NOT EXECUTED
if ((gigs & (1 << b)) != 0)
break;
fmt_params->sectors_per_cluster = 1 << b;
4df06: 2d40 fdbc movel %d0,%fp@(-580) <== NOT EXECUTED
4df0a: 6000 f8a6 braw 4d7b2 <msdos_format+0x5c8> <== NOT EXECUTED
/*
* determine usable OEMName
*/
if (ret_val == 0) {
const char *from;
char *to = fmt_params->OEMName;
4df0e: 41ee fdb0 lea %fp@(-592),%a0
int cnt;
from = "RTEMS"; /* default: make "from" point to OS Name */
4df12: 45f9 0006 9bd1 lea 69bd1 <_CPU_m68k_BFFFO_table+0x13a>,%a2
const char valid_media_codes[] =
{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
if (NULL==memchr(valid_media_codes,
rqdata->media,
sizeof(valid_media_codes))) {
ret_val = -1;
4df18: 7208 moveq #8,%d1
/*
* determine usable OEMName
*/
if (ret_val == 0) {
const char *from;
char *to = fmt_params->OEMName;
4df1a: 41e8 0033 lea %a0@(51),%a0
4df1e: 2279 0006 adbc moveal 6adbc <__ctype_ptr__>,%a1
4df24: 6000 f422 braw 4d348 <msdos_format+0x15e>
}
else if (rqdata->fat_num <= 6) {
fmt_params->fat_num = rqdata->fat_num;
}
else {
errno = EINVAL;
4df28: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
4df2e: 7e16 moveq #22,%d7 <== NOT EXECUTED
4df30: 2040 moveal %d0,%a0 <== NOT EXECUTED
ret_val = -1;
4df32: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
else if (rqdata->fat_num <= 6) {
fmt_params->fat_num = rqdata->fat_num;
}
else {
errno = EINVAL;
4df34: 2087 movel %d7,%a0@ <== NOT EXECUTED
4df36: 6000 f3bc braw 4d2f4 <msdos_format+0x10a> <== NOT EXECUTED
* cleanup:
* sync and unlock disk
* free any data structures (not needed now)
*/
if (fd != -1) {
close(fd);
4df3a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,
fmt_params.sectors_per_cluster,
fmt_params.skip_alignment);
for (i = 0;
(i < fmt_params.fat_num) && (ret_val == 0);
4df3c: 7eff moveq #-1,%d7 <== NOT EXECUTED
* cleanup:
* sync and unlock disk
* free any data structures (not needed now)
*/
if (fd != -1) {
close(fd);
4df3e: 4eb9 0004 4918 jsr 44918 <close> <== NOT EXECUTED
4df44: 588f addql #4,%sp <== NOT EXECUTED
4df46: 6000 f374 braw 4d2bc <msdos_format+0xd2> <== NOT EXECUTED
FAT_SET_BR_BOOTSIG(mbr , FAT_BR_BOOTSIG_VAL);
FAT_SET_BR_VOLID(mbr , fmt_params->vol_id); /* volume id */
memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),
fmt_params->VolLabel,
FAT_BR_VOLLAB_SIZE);
memcpy(FAT_GET_ADDR_BR_FILSYSTYPE(mbr),
4df4a: 41f9 0006 9bbf lea 69bbf <_CPU_m68k_BFFFO_table+0x128>,%a0
4df50: 43ea 0036 lea %a2@(54),%a1
4df54: 2290 movel %a0@,%a1@
4df56: 2568 0004 003a movel %a0@(4),%a2@(58)
4df5c: 6000 f618 braw 4d576 <msdos_format+0x38c>
4df60: 266e fd50 moveal %fp@(-688),%a3 <== NOT EXECUTED
4df64: 6000 f392 braw 4d2f8 <msdos_format+0x10e> <== NOT EXECUTED
rc = rtems_clock_get_tod_timeval(&time_value);
if (rc == RTEMS_SUCCESSFUL) {
*volid_ptr = time_value.tv_sec + time_value.tv_sec;
}
else {
*volid_ptr = rand();
4df68: 4eb9 0005 b8f8 jsr 5b8f8 <rand>
4df6e: 2d40 fdfa movel %d0,%fp@(-518)
4df72: 6000 f456 braw 4d3ca <msdos_format+0x1e0>
const uint64_t total_size )
{
if ( fmt_params->fattype == FAT_FAT12
|| fmt_params->fattype == FAT_FAT16 ) {
/* start trying with small clusters */
fmt_params->sectors_per_cluster = 2;
4df76: 7802 moveq #2,%d4 <== NOT EXECUTED
4df78: 2d44 fdbc movel %d4,%fp@(-580) <== NOT EXECUTED
4df7c: 6000 fa2a braw 4d9a8 <msdos_format+0x7be> <== NOT EXECUTED
/*
* determine usable Volume Label
*/
if (ret_val == 0) {
const char *from;
char *to = fmt_params->VolLabel;
4df80: 41ee fdb0 lea %fp@(-592),%a0
int cnt;
from = ""; /* default: make "from" point to empty string */
4df84: 45f9 0006 998d lea 6998d <rtems_termios_baud_table+0x101>,%a2
const char valid_media_codes[] =
{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
if (NULL==memchr(valid_media_codes,
rqdata->media,
sizeof(valid_media_codes))) {
ret_val = -1;
4df8a: 720b moveq #11,%d1
/*
* determine usable Volume Label
*/
if (ret_val == 0) {
const char *from;
char *to = fmt_params->VolLabel;
4df8c: 41e8 003c lea %a0@(60),%a0
4df90: 6000 f3f8 braw 4d38a <msdos_format+0x1a0>
4df94: 226e fdb4 moveal %fp@(-588),%a1 <== NOT EXECUTED
4df98: 6000 fa42 braw 4d9dc <msdos_format+0x7f2> <== NOT EXECUTED
? "FAT12 "
: "FAT16 ",
FAT_BR_FILSYSTYPE_SIZE);
}
else {
FAT_SET_BR_SECTORS_PER_FAT32(mbr ,fmt_params->sectors_per_fat);
4df9c: 202e fdc0 movel %fp@(-576),%d0 <== NOT EXECUTED
4dfa0: 2800 movel %d0,%d4 <== NOT EXECUTED
4dfa2: 2a00 movel %d0,%d5 <== NOT EXECUTED
4dfa4: e08d lsrl #8,%d5 <== NOT EXECUTED
4dfa6: 2600 movel %d0,%d3 <== NOT EXECUTED
4dfa8: 7218 moveq #24,%d1 <== NOT EXECUTED
4dfaa: e2ab lsrl %d1,%d3 <== NOT EXECUTED
FAT_SET_BR_FAT32_DRVNUM(mbr , 0); /* only needed for INT13... */
FAT_SET_BR_FAT32_RSVD1(mbr , 0); /* fill with zero */
FAT_SET_BR_FAT32_BOOTSIG(mbr ,FAT_BR_FAT32_BOOTSIG_VAL);
FAT_SET_BR_FAT32_VOLID(mbr , 0); /* not set */
memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr) ,0,FAT_BR_VOLLAB_SIZE);
memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),
4dfac: 41ea 0052 lea %a2@(82),%a0 <== NOT EXECUTED
? "FAT12 "
: "FAT16 ",
FAT_BR_FILSYSTYPE_SIZE);
}
else {
FAT_SET_BR_SECTORS_PER_FAT32(mbr ,fmt_params->sectors_per_fat);
4dfb0: 4244 clrw %d4 <== NOT EXECUTED
4dfb2: 4844 swap %d4 <== NOT EXECUTED
4dfb4: 1d40 fe24 moveb %d0,%fp@(-476) <== NOT EXECUTED
4dfb8: 1d45 fe25 moveb %d5,%fp@(-475) <== NOT EXECUTED
4dfbc: 1d44 fe26 moveb %d4,%fp@(-474) <== NOT EXECUTED
FAT_SET_BR_EXT_FLAGS(mbr , 0);
FAT_SET_BR_FSVER(mbr , 0); /* FAT32 Version:0.0 */
FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr , 2); /* put root dir to cluster 2 */
FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo to rsrvd sec 1*/
FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
4dfc0: 222e fdd8 movel %fp@(-552),%d1 <== NOT EXECUTED
4dfc4: 2401 movel %d1,%d2 <== NOT EXECUTED
4dfc6: e08a lsrl #8,%d2 <== NOT EXECUTED
memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
4dfc8: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED
? "FAT12 "
: "FAT16 ",
FAT_BR_FILSYSTYPE_SIZE);
}
else {
FAT_SET_BR_SECTORS_PER_FAT32(mbr ,fmt_params->sectors_per_fat);
4dfcc: 1d43 fe27 moveb %d3,%fp@(-473) <== NOT EXECUTED
FAT_SET_BR_EXT_FLAGS(mbr , 0);
FAT_SET_BR_FSVER(mbr , 0); /* FAT32 Version:0.0 */
FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr , 2); /* put root dir to cluster 2 */
4dfd0: 7602 moveq #2,%d3 <== NOT EXECUTED
FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo to rsrvd sec 1*/
4dfd2: 7801 moveq #1,%d4 <== NOT EXECUTED
}
else {
FAT_SET_BR_SECTORS_PER_FAT32(mbr ,fmt_params->sectors_per_fat);
FAT_SET_BR_EXT_FLAGS(mbr , 0);
FAT_SET_BR_FSVER(mbr , 0); /* FAT32 Version:0.0 */
FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr , 2); /* put root dir to cluster 2 */
4dfd4: 1d43 fe2c moveb %d3,%fp@(-468) <== NOT EXECUTED
FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
FAT_SET_BR_FAT32_DRVNUM(mbr , 0); /* only needed for INT13... */
FAT_SET_BR_FAT32_RSVD1(mbr , 0); /* fill with zero */
FAT_SET_BR_FAT32_BOOTSIG(mbr ,FAT_BR_FAT32_BOOTSIG_VAL);
4dfd8: 7c29 moveq #41,%d6 <== NOT EXECUTED
FAT_SET_BR_EXT_FLAGS(mbr , 0);
FAT_SET_BR_FSVER(mbr , 0); /* FAT32 Version:0.0 */
FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr , 2); /* put root dir to cluster 2 */
FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo to rsrvd sec 1*/
FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
4dfda: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
FAT_SET_BR_SECTORS_PER_FAT32(mbr ,fmt_params->sectors_per_fat);
FAT_SET_BR_EXT_FLAGS(mbr , 0);
FAT_SET_BR_FSVER(mbr , 0); /* FAT32 Version:0.0 */
FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr , 2); /* put root dir to cluster 2 */
FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo to rsrvd sec 1*/
FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
4dfde: 1d41 fe32 moveb %d1,%fp@(-462) <== NOT EXECUTED
else {
FAT_SET_BR_SECTORS_PER_FAT32(mbr ,fmt_params->sectors_per_fat);
FAT_SET_BR_EXT_FLAGS(mbr , 0);
FAT_SET_BR_FSVER(mbr , 0); /* FAT32 Version:0.0 */
FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr , 2); /* put root dir to cluster 2 */
FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo to rsrvd sec 1*/
4dfe2: 1d44 fe30 moveb %d4,%fp@(-464) <== NOT EXECUTED
FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
4dfe6: 42aa 003c clrl %a2@(60) <== NOT EXECUTED
FAT_SET_BR_FAT32_DRVNUM(mbr , 0); /* only needed for INT13... */
FAT_SET_BR_FAT32_RSVD1(mbr , 0); /* fill with zero */
FAT_SET_BR_FAT32_BOOTSIG(mbr ,FAT_BR_FAT32_BOOTSIG_VAL);
FAT_SET_BR_FAT32_VOLID(mbr , 0); /* not set */
memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr) ,0,FAT_BR_VOLLAB_SIZE);
memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),
4dfea: 223c 3220 2020 movel #840966176,%d1 <== NOT EXECUTED
FAT_SET_BR_SECTORS_PER_FAT32(mbr ,fmt_params->sectors_per_fat);
FAT_SET_BR_EXT_FLAGS(mbr , 0);
FAT_SET_BR_FSVER(mbr , 0); /* FAT32 Version:0.0 */
FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr , 2); /* put root dir to cluster 2 */
FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo to rsrvd sec 1*/
FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
4dff0: 1d42 fe33 moveb %d2,%fp@(-461) <== NOT EXECUTED
memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
FAT_SET_BR_FAT32_DRVNUM(mbr , 0); /* only needed for INT13... */
FAT_SET_BR_FAT32_RSVD1(mbr , 0); /* fill with zero */
FAT_SET_BR_FAT32_BOOTSIG(mbr ,FAT_BR_FAT32_BOOTSIG_VAL);
4dff4: 1d46 fe42 moveb %d6,%fp@(-446) <== NOT EXECUTED
FAT_SET_BR_FAT32_VOLID(mbr , 0); /* not set */
memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr) ,0,FAT_BR_VOLLAB_SIZE);
4dff8: 4247 clrw %d7 <== NOT EXECUTED
4dffa: 42aa 0047 clrl %a2@(71) <== NOT EXECUTED
4dffe: 4200 clrb %d0 <== NOT EXECUTED
4e000: 42aa 004b clrl %a2@(75) <== NOT EXECUTED
4e004: 3547 004f movew %d7,%a2@(79) <== NOT EXECUTED
4e008: 1540 0051 moveb %d0,%a2@(81) <== NOT EXECUTED
memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),
4e00c: 20bc 4641 5433 movel #1178686515,%a0@ <== NOT EXECUTED
4e012: 2541 0056 movel %d1,%a2@(86) <== NOT EXECUTED
4e016: 6000 f55e braw 4d576 <msdos_format+0x38c> <== NOT EXECUTED
}
start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,
fmt_params.sectors_per_cluster,
fmt_params.skip_alignment);
for (i = 0;
4e01a: 2e02 movel %d2,%d7 <== NOT EXECUTED
4e01c: 6000 f274 braw 4d292 <msdos_format+0xa8> <== NOT EXECUTED
ret_val = -1;
}
}
if (ret_val == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4e020: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4e024: 4879 0006 9c1f pea 69c1f <_CPU_m68k_BFFFO_table+0x188> <== NOT EXECUTED
4e02a: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
* determine number of FATs
*/
if (ret_val == 0) {
if ((rqdata == NULL) ||
(rqdata->fat_num == 0)) {
fmt_params->fat_num = 2;
4e02e: 7802 moveq #2,%d4 <== NOT EXECUTED
ret_val = -1;
}
}
if (ret_val == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4e030: 42a7 clrl %sp@- <== NOT EXECUTED
* determine number of FATs
*/
if (ret_val == 0) {
if ((rqdata == NULL) ||
(rqdata->fat_num == 0)) {
fmt_params->fat_num = 2;
4e032: 1d44 fde0 moveb %d4,%fp@(-544) <== NOT EXECUTED
ret_val = -1;
}
}
if (ret_val == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4e036: 4eba eed8 jsr %pc@(4cf10 <msdos_format_printf>) <== NOT EXECUTED
/*
* determine FAT type and sectors per cluster
* depends on
*/
if (ret_val == 0) {
fmt_params->sectors_per_cluster = 1;
4e03a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e03e: 283c 0000 7fa8 movel #32680,%d4 <== NOT EXECUTED
* limiting values for disk size, fat type, sectors per cluster
* NOTE: maximum sect_per_clust is arbitrarily choosen with values that
* are a compromise concerning capacity and efficency
*/
uint32_t fat12_sect_per_clust = 8;
uint32_t fat16_sect_per_clust = 32;
4e044: 7020 moveq #32,%d0 <== NOT EXECUTED
4e046: 6000 f754 braw 4d79c <msdos_format+0x5b2> <== NOT EXECUTED
4e04a: 226e fdb4 moveal %fp@(-588),%a1 <== NOT EXECUTED
4e04e: 6000 fd2e braw 4dd7e <msdos_format+0xb94> <== NOT EXECUTED
4e052: 226e fdb4 moveal %fp@(-588),%a1 <== NOT EXECUTED
4e056: 6000 f2a0 braw 4d2f8 <msdos_format+0x10e> <== NOT EXECUTED
{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
if (NULL==memchr(valid_media_codes,
rqdata->media,
sizeof(valid_media_codes))) {
ret_val = -1;
errno = EINVAL;
4e05a: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
4e060: 7a16 moveq #22,%d5 <== NOT EXECUTED
const char valid_media_codes[] =
{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
if (NULL==memchr(valid_media_codes,
rqdata->media,
sizeof(valid_media_codes))) {
ret_val = -1;
4e062: 7eff moveq #-1,%d7 <== NOT EXECUTED
errno = EINVAL;
4e064: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e066: 242e fdb8 movel %fp@(-584),%d2 <== NOT EXECUTED
4e06a: 2085 movel %d5,%a0@ <== NOT EXECUTED
4e06c: 6000 f296 braw 4d304 <msdos_format+0x11a> <== NOT EXECUTED
0x00);
}
/*
* write volume label to first entry of directory
*/
if ((ret_val == 0) && fmt_params.VolLabel_present) {
4e070: 2e00 movel %d0,%d7 <== NOT EXECUTED
/*
* cleanup:
* sync and unlock disk
* free any data structures (not needed now)
*/
if (fd != -1) {
4e072: 70ff moveq #-1,%d0 <== NOT EXECUTED
4e074: b08b cmpl %a3,%d0 <== NOT EXECUTED
4e076: 6700 f20c beqw 4d284 <msdos_format+0x9a> <== NOT EXECUTED
4e07a: 6000 f236 braw 4d2b2 <msdos_format+0xc8> <== NOT EXECUTED
const bool skip_alignment)
{
if (! skip_alignment)
return (sectors + clustersize - 1) & ~(clustersize - 1);
else
return sectors;
4e07e: 242e fd64 movel %fp@(-668),%d2
* - subtract from total cluster count
*/
fatdata_sect_cnt = total_sector_cnt
- loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
if (fattype == FAT_FAT12) {
fatdata_sect_cnt = fatdata_sect_cnt
4e082: 9682 subl %d2,%d3
- loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
4e084: 4c40 3003 remul %d0,%d3,%d3
fat_capacity = fatdata_cluster_cnt * 3 / 2;
4e088: 2a43 moveal %d3,%a5
4e08a: 4bf5 3a00 lea %a5@(00000000,%d3:l:2),%a5
4e08e: 220d movel %a5,%d1
4e090: e289 lsrl #1,%d1
4e092: 6000 f864 braw 4d8f8 <msdos_format+0x70e>
...
0004cfca <msdos_format_fill_sectors>:
)
/*-------------------------------------------------------------------------*\
| Return Value: |
| 0, if success, -1 and errno if failed |
\*=========================================================================*/
{
4cfca: 4e56 ffd4 linkw %fp,#-44
4cfce: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4cfd2: 2e2e 0018 movel %fp@(24),%d7
4cfd6: 246e 000c moveal %fp@(12),%a2
/*
* allocate and fill buffer
*/
if (ret_val == 0) {
fill_buffer = malloc(sector_size);
4cfda: 2f07 movel %d7,%sp@-
)
/*-------------------------------------------------------------------------*\
| Return Value: |
| 0, if success, -1 and errno if failed |
\*=========================================================================*/
{
4cfdc: 242e 0010 movel %fp@(16),%d2
4cfe0: 282e 0014 movel %fp@(20),%d4
4cfe4: 162e 001f moveb %fp@(31),%d3
/*
* allocate and fill buffer
*/
if (ret_val == 0) {
fill_buffer = malloc(sector_size);
4cfe8: 4eb9 0004 50f4 jsr 450f4 <malloc>
if (fill_buffer == NULL) {
4cfee: 588f addql #4,%sp
/*
* allocate and fill buffer
*/
if (ret_val == 0) {
fill_buffer = malloc(sector_size);
4cff0: 2c00 movel %d0,%d6
if (fill_buffer == NULL) {
4cff2: 6700 011a beqw 4d10e <msdos_format_fill_sectors+0x144>
errno = ENOMEM;
ret_val = -1;
}
else {
memset(fill_buffer,fill_byte,sector_size);
4cff6: 2f07 movel %d7,%sp@-
4cff8: 49c3 extbl %d3
}
}
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4cffa: 4bfa ff14 lea %pc@(4cf10 <msdos_format_printf>),%a5
if (fill_buffer == NULL) {
errno = ENOMEM;
ret_val = -1;
}
else {
memset(fill_buffer,fill_byte,sector_size);
4cffe: 2f03 movel %d3,%sp@-
4d000: 2f00 movel %d0,%sp@-
4d002: 4eb9 0005 b1f8 jsr 5b1f8 <memset>
}
}
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d008: 4879 0006 9b97 pea 69b97 <_CPU_m68k_BFFFO_table+0x100>
4d00e: 4878 0002 pea 2 <DOUBLE_FLOAT>
4d012: 2f2e 0008 movel %fp@(8),%sp@-
4d016: 4e95 jsr %a5@
"Filling : ");
/*
* write to consecutive sectors
*/
while ((ret_val == 0) &&
4d018: 4fef 0018 lea %sp@(24),%sp
4d01c: 4a84 tstl %d4
4d01e: 6740 beqs 4d060 <msdos_format_fill_sectors+0x96> <== NEVER TAKEN
4d020: 7064 moveq #100,%d0
4d022: 4c04 0800 mulsl %d4,%d0
4d026: 2604 movel %d4,%d3
\*=========================================================================*/
{
int ret_val = 0;
char *fill_buffer = NULL;
uint32_t total_sectors = sector_cnt;
int last_percent = -1;
4d028: 7aff moveq #-1,%d5
4d02a: 47fa ff2e lea %pc@(4cf5a <msdos_format_write_sec>),%a3
4d02e: 2840 moveal %d0,%a4
/*
* write to consecutive sectors
*/
while ((ret_val == 0) &&
(sector_cnt > 0)) {
int percent = (sector_cnt * 100) / total_sectors;
4d030: 200c movel %a4,%d0
4d032: 4c44 0000 remul %d4,%d0,%d0
if (percent != last_percent) {
4d036: ba80 cmpl %d0,%d5
4d038: 6708 beqs 4d042 <msdos_format_fill_sectors+0x78>
if ((percent & 1) == 0)
4d03a: 2a00 movel %d0,%d5
4d03c: 0800 0000 btst #0,%d0
4d040: 6758 beqs 4d09a <msdos_format_fill_sectors+0xd0>
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
last_percent = percent;
}
ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
4d042: 2f06 movel %d6,%sp@-
start_sector++;
sector_cnt--;
4d044: 5383 subql #1,%d3
4d046: 49ec ff9c lea %a4@(-100),%a4
if (percent != last_percent) {
if ((percent & 1) == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
last_percent = percent;
}
ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
4d04a: 2f07 movel %d7,%sp@-
4d04c: 2f02 movel %d2,%sp@-
start_sector++;
4d04e: 5282 addql #1,%d2
if (percent != last_percent) {
if ((percent & 1) == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
last_percent = percent;
}
ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
4d050: 2f0a movel %a2,%sp@-
4d052: 4e93 jsr %a3@
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
"Filling : ");
/*
* write to consecutive sectors
*/
while ((ret_val == 0) &&
4d054: 4fef 0010 lea %sp@(16),%sp
4d058: 4a80 tstl %d0
4d05a: 666c bnes 4d0c8 <msdos_format_fill_sectors+0xfe> <== NEVER TAKEN
4d05c: 4a83 tstl %d3
4d05e: 66d0 bnes 4d030 <msdos_format_fill_sectors+0x66>
ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
start_sector++;
sector_cnt--;
}
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");
4d060: 4879 0006 8e96 pea 68e96 <Configuration_Initial_Extensions+0x286>
4d066: 4280 clrl %d0
4d068: 4878 0002 pea 2 <DOUBLE_FLOAT>
4d06c: 2f2e 0008 movel %fp@(8),%sp@-
4d070: 2d40 fffc movel %d0,%fp@(-4)
4d074: 4e95 jsr %a5@
4d076: 202e fffc movel %fp@(-4),%d0
4d07a: 4fef 000c lea %sp@(12),%sp
/*
* cleanup
*/
if (fill_buffer != NULL) {
free(fill_buffer);
4d07e: 2d40 fffc movel %d0,%fp@(-4)
4d082: 2f06 movel %d6,%sp@-
4d084: 4eb9 0004 4bec jsr 44bec <free>
4d08a: 202e fffc movel %fp@(-4),%d0
4d08e: 588f addql #4,%sp
fill_buffer = NULL;
}
return ret_val;
}
4d090: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
4d096: 4e5e unlk %fp
4d098: 4e75 rts
while ((ret_val == 0) &&
(sector_cnt > 0)) {
int percent = (sector_cnt * 100) / total_sectors;
if (percent != last_percent) {
if ((percent & 1) == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
4d09a: 4879 0006 9f9b pea 69f9b <IMFS_memfile_handlers+0x79>
last_percent = percent;
}
ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
start_sector++;
sector_cnt--;
4d0a0: 5383 subql #1,%d3
while ((ret_val == 0) &&
(sector_cnt > 0)) {
int percent = (sector_cnt * 100) / total_sectors;
if (percent != last_percent) {
if ((percent & 1) == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
4d0a2: 4878 0002 pea 2 <DOUBLE_FLOAT>
4d0a6: 49ec ff9c lea %a4@(-100),%a4
4d0aa: 2f2e 0008 movel %fp@(8),%sp@-
4d0ae: 4e95 jsr %a5@
4d0b0: 4fef 000c lea %sp@(12),%sp
last_percent = percent;
}
ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
4d0b4: 2f06 movel %d6,%sp@-
4d0b6: 2f07 movel %d7,%sp@-
4d0b8: 2f02 movel %d2,%sp@-
start_sector++;
4d0ba: 5282 addql #1,%d2
if (percent != last_percent) {
if ((percent & 1) == 0)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
last_percent = percent;
}
ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
4d0bc: 2f0a movel %a2,%sp@-
4d0be: 4e93 jsr %a3@
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
"Filling : ");
/*
* write to consecutive sectors
*/
while ((ret_val == 0) &&
4d0c0: 4fef 0010 lea %sp@(16),%sp
4d0c4: 4a80 tstl %d0
4d0c6: 6794 beqs 4d05c <msdos_format_fill_sectors+0x92> <== ALWAYS TAKEN
ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
start_sector++;
sector_cnt--;
}
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");
4d0c8: 4879 0006 8e96 pea 68e96 <Configuration_Initial_Extensions+0x286><== NOT EXECUTED
4d0ce: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4d0d2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d0d6: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4d0da: 4e95 jsr %a5@ <== NOT EXECUTED
if (ret_val)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,
4d0dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d0de: 4879 0006 9ba2 pea 69ba2 <_CPU_m68k_BFFFO_table+0x10b> <== NOT EXECUTED
4d0e4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4d0e8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d0ec: 4e95 jsr %a5@ <== NOT EXECUTED
"filling error on sector: %d\n", start_sector);
/*
* cleanup
*/
if (fill_buffer != NULL) {
4d0ee: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d0f2: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4d0f6: 4a86 tstl %d6 <== NOT EXECUTED
4d0f8: 6796 beqs 4d090 <msdos_format_fill_sectors+0xc6> <== NOT EXECUTED
free(fill_buffer);
4d0fa: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4d0fc: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4d100: 4eb9 0004 4bec jsr 44bec <free> <== NOT EXECUTED
4d106: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d10a: 588f addql #4,%sp <== NOT EXECUTED
4d10c: 6082 bras 4d090 <msdos_format_fill_sectors+0xc6> <== NOT EXECUTED
* allocate and fill buffer
*/
if (ret_val == 0) {
fill_buffer = malloc(sector_size);
if (fill_buffer == NULL) {
errno = ENOMEM;
4d10e: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
else {
memset(fill_buffer,fill_byte,sector_size);
}
}
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d114: 4bfa fdfa lea %pc@(4cf10 <msdos_format_printf>),%a5 <== NOT EXECUTED
* allocate and fill buffer
*/
if (ret_val == 0) {
fill_buffer = malloc(sector_size);
if (fill_buffer == NULL) {
errno = ENOMEM;
4d118: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d11a: 720c moveq #12,%d1 <== NOT EXECUTED
ret_val = -1;
4d11c: 70ff moveq #-1,%d0 <== NOT EXECUTED
* allocate and fill buffer
*/
if (ret_val == 0) {
fill_buffer = malloc(sector_size);
if (fill_buffer == NULL) {
errno = ENOMEM;
4d11e: 2081 movel %d1,%a0@ <== NOT EXECUTED
else {
memset(fill_buffer,fill_byte,sector_size);
}
}
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
4d120: 4879 0006 9b97 pea 69b97 <_CPU_m68k_BFFFO_table+0x100> <== NOT EXECUTED
4d126: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4d12a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d12e: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4d132: 4e95 jsr %a5@ <== NOT EXECUTED
4d134: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
start_sector++;
sector_cnt--;
}
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");
4d138: 4879 0006 8e96 pea 68e96 <Configuration_Initial_Extensions+0x286><== NOT EXECUTED
4d13e: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4d142: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d146: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d14a: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4d14e: 4e95 jsr %a5@ <== NOT EXECUTED
if (ret_val)
msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,
4d150: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d152: 4879 0006 9ba2 pea 69ba2 <_CPU_m68k_BFFFO_table+0x10b> <== NOT EXECUTED
4d158: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4d15c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d160: 4e95 jsr %a5@ <== NOT EXECUTED
"filling error on sector: %d\n", start_sector);
/*
* cleanup
*/
if (fill_buffer != NULL) {
4d162: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d166: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4d16a: 4a86 tstl %d6 <== NOT EXECUTED
4d16c: 668c bnes 4d0fa <msdos_format_fill_sectors+0x130><== NOT EXECUTED
4d16e: 6000 ff20 braw 4d090 <msdos_format_fill_sectors+0xc6> <== NOT EXECUTED
0004cf10 <msdos_format_printf>:
*/
static void
msdos_format_printf (const msdos_format_request_param_t *rqdata,
int info_level,
const char *format, ...)
{
4cf10: 4e56 0000 linkw %fp,#0
4cf14: 206e 0008 moveal %fp@(8),%a0
va_list args;
va_start (args, format);
if (rqdata != NULL && rqdata->info_level >= info_level)
4cf18: 4a88 tstl %a0
4cf1a: 670a beqs 4cf26 <msdos_format_printf+0x16> <== NEVER TAKEN
4cf1c: 202e 000c movel %fp@(12),%d0
4cf20: b0a8 0018 cmpl %a0@(24),%d0
4cf24: 6f04 bles 4cf2a <msdos_format_printf+0x1a> <== NEVER TAKEN
{
vfprintf (stdout, format, args);
fflush (stdout);
}
va_end (args);
}
4cf26: 4e5e unlk %fp
4cf28: 4e75 rts
{
va_list args;
va_start (args, format);
if (rqdata != NULL && rqdata->info_level >= info_level)
{
vfprintf (stdout, format, args);
4cf2a: 486e 0014 pea %fp@(20) <== NOT EXECUTED
4cf2e: 2079 0006 adc0 moveal 6adc0 <_impure_ptr>,%a0 <== NOT EXECUTED
4cf34: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4cf38: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4cf3c: 4eb9 0006 215c jsr 6215c <vfprintf> <== NOT EXECUTED
fflush (stdout);
4cf42: 2079 0006 adc0 moveal 6adc0 <_impure_ptr>,%a0 <== NOT EXECUTED
4cf48: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4cf4c: 4eb9 0005 ab5e jsr 5ab5e <fflush> <== NOT EXECUTED
4cf52: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
va_end (args);
}
4cf56: 4e5e unlk %fp <== NOT EXECUTED
0004cf5a <msdos_format_write_sec>:
| 0, if success, -1 and errno if failed |
\*=========================================================================*/
{
int ret_val = 0;
if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {
4cf5a: 4280 clrl %d0
)
/*-------------------------------------------------------------------------*\
| Return Value: |
| 0, if success, -1 and errno if failed |
\*=========================================================================*/
{
4cf5c: 4e56 0000 linkw %fp,#0
int ret_val = 0;
if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {
4cf60: 222e 000c movel %fp@(12),%d1
)
/*-------------------------------------------------------------------------*\
| Return Value: |
| 0, if success, -1 and errno if failed |
\*=========================================================================*/
{
4cf64: 2f03 movel %d3,%sp@-
4cf66: 262e 0010 movel %fp@(16),%d3
4cf6a: 2f02 movel %d2,%sp@-
4cf6c: 242e 0008 movel %fp@(8),%d2
int ret_val = 0;
if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {
4cf70: 42a7 clrl %sp@-
4cf72: 2f03 movel %d3,%sp@-
4cf74: 42a7 clrl %sp@-
4cf76: 2f01 movel %d1,%sp@-
4cf78: 2f00 movel %d0,%sp@-
4cf7a: 4eb9 0004 1684 jsr 41684 <__muldi3>
4cf80: 4fef 000c lea %sp@(12),%sp
4cf84: 2e81 movel %d1,%sp@
4cf86: 2f00 movel %d0,%sp@-
4cf88: 2f02 movel %d2,%sp@-
4cf8a: 4eb9 0005 4750 jsr 54750 <lseek>
4cf90: 4fef 0010 lea %sp@(16),%sp
4cf94: 4a80 tstl %d0
4cf96: 6b24 bmis 4cfbc <msdos_format_write_sec+0x62> <== NEVER TAKEN
ret_val = -1;
}
if (ret_val == 0) {
if (0 > write(fd,buffer,sector_size)) {
4cf98: 2f03 movel %d3,%sp@-
4cf9a: 2f2e 0014 movel %fp@(20),%sp@-
4cf9e: 2f02 movel %d2,%sp@-
4cfa0: 4eb9 0004 8d50 jsr 48d50 <write>
ret_val = -1;
}
}
return ret_val;
}
4cfa6: 242e fff8 movel %fp@(-8),%d2
if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {
ret_val = -1;
}
if (ret_val == 0) {
if (0 > write(fd,buffer,sector_size)) {
4cfaa: 4a80 tstl %d0
4cfac: 5dc0 slt %d0
ret_val = -1;
}
}
return ret_val;
}
4cfae: 262e fffc movel %fp@(-4),%d3
if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {
ret_val = -1;
}
if (ret_val == 0) {
if (0 > write(fd,buffer,sector_size)) {
4cfb2: 4fef 000c lea %sp@(12),%sp
4cfb6: 49c0 extbl %d0
ret_val = -1;
}
}
return ret_val;
}
4cfb8: 4e5e unlk %fp
4cfba: 4e75 rts
4cfbc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
| 0, if success, -1 and errno if failed |
\*=========================================================================*/
{
int ret_val = 0;
if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {
4cfc0: 70ff moveq #-1,%d0 <== NOT EXECUTED
ret_val = -1;
}
}
return ret_val;
}
4cfc2: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4cfc6: 4e5e unlk %fp <== NOT EXECUTED
0005834e <msdos_get_dotdot_dir_info_cluster_num_and_offset>:
rtems_filesystem_mount_table_entry_t *mt_entry,
uint32_t cln,
fat_dir_pos_t *dir_pos,
char *dir_entry
)
{
5834e: 4e56 ff94 linkw %fp,#-108 <== NOT EXECUTED
58352: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
uint32_t cl4find = 0;
/*
* open fat-file corresponded to ".."
*/
rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
58356: 486e ffbc pea %fp@(-68) <== NOT EXECUTED
5835a: 4bf9 0005 1914 lea 51914 <fat_file_open>,%a5 <== NOT EXECUTED
rtems_filesystem_mount_table_entry_t *mt_entry,
uint32_t cln,
fat_dir_pos_t *dir_pos,
char *dir_entry
)
{
58360: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
58364: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
int rc = RC_OK;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
58368: 246b 0008 moveal %a3@(8),%a2 <== NOT EXECUTED
uint32_t cl4find = 0;
/*
* open fat-file corresponded to ".."
*/
rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
5836c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
char *dir_entry
)
{
int rc = RC_OK;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
fat_file_fd_t *fat_fd = NULL;
5836e: 42ae ffbc clrl %fp@(-68) <== NOT EXECUTED
uint32_t cl4find = 0;
/*
* open fat-file corresponded to ".."
*/
rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
58372: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58374: 4e95 jsr %a5@ <== NOT EXECUTED
if (rc != RC_OK)
58376: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
uint32_t cl4find = 0;
/*
* open fat-file corresponded to ".."
*/
rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
5837a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc != RC_OK)
5837c: 670c beqs 5838a <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x3c><== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
rc = fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
5837e: 2002 movel %d2,%d0 <== NOT EXECUTED
58380: 4cee 3cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a5 <== NOT EXECUTED
58386: 4e5e unlk %fp <== NOT EXECUTED
58388: 4e75 rts <== NOT EXECUTED
*/
rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
if (rc != RC_OK)
return rc;
fat_fd->cln = cln;
5838a: 206e ffbc moveal %fp@(-68),%a0 <== NOT EXECUTED
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
fat_fd->map.file_cln = 0;
fat_fd->map.disk_cln = fat_fd->cln;
rc = fat_file_size(&fs_info->fat, fat_fd);
5838e: 49f9 0005 2680 lea 52680 <fat_file_size>,%a4 <== NOT EXECUTED
*/
rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
if (rc != RC_OK)
return rc;
fat_fd->cln = cln;
58394: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
58398: 2140 001c movel %d0,%a0@(28) <== NOT EXECUTED
fat_fd->fat_file_type = FAT_DIRECTORY;
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
5839c: 7020 moveq #32,%d0 <== NOT EXECUTED
5839e: 4840 swap %d0 <== NOT EXECUTED
rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
if (rc != RC_OK)
return rc;
fat_fd->cln = cln;
fat_fd->fat_file_type = FAT_DIRECTORY;
583a0: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
583a4: 2140 0014 movel %d0,%a0@(20) <== NOT EXECUTED
fat_fd->map.file_cln = 0;
fat_fd->map.disk_cln = fat_fd->cln;
583a8: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
fat_fd->cln = cln;
fat_fd->fat_file_type = FAT_DIRECTORY;
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
fat_fd->map.file_cln = 0;
583ac: 42a8 0032 clrl %a0@(50) <== NOT EXECUTED
fat_fd->map.disk_cln = fat_fd->cln;
583b0: 2140 0036 movel %d0,%a0@(54) <== NOT EXECUTED
rc = fat_file_size(&fs_info->fat, fat_fd);
583b4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
583b6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
583b8: 4e94 jsr %a4@ <== NOT EXECUTED
if (rc != RC_OK)
583ba: 508f addql #8,%sp <== NOT EXECUTED
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
fat_fd->map.file_cln = 0;
fat_fd->map.disk_cln = fat_fd->cln;
rc = fat_file_size(&fs_info->fat, fat_fd);
583bc: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc != RC_OK)
583be: 6600 01fe bnew 585be <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x270><== NOT EXECUTED
return rc;
}
/* find "." node in opened directory */
memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);
583c2: 4878 000b pea b <LASTO+0x1> <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
/* find "." node in opened directory */
memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
583c6: 240e movel %fp,%d2 <== NOT EXECUTED
583c8: 0682 ffff ffc0 addil #-64,%d2 <== NOT EXECUTED
583ce: 2042 moveal %d2,%a0 <== NOT EXECUTED
msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);
583d0: 2a3c 0005 7050 movel #356432,%d5 <== NOT EXECUTED
rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, ".", 1,
583d6: 283c 0005 782a movel #358442,%d4 <== NOT EXECUTED
return rc;
}
/* find "." node in opened directory */
memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);
583dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
583de: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
583e2: 4879 0006 9f9b pea 69f9b <IMFS_memfile_handlers+0x79> <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
/* find "." node in opened directory */
memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
583e8: 42ae ffc4 clrl %fp@(-60) <== NOT EXECUTED
583ec: 4290 clrl %a0@ <== NOT EXECUTED
msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);
583ee: 2045 moveal %d5,%a0 <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
/* find "." node in opened directory */
memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
583f0: 42ae ffc8 clrl %fp@(-56) <== NOT EXECUTED
583f4: 42ae ffcc clrl %fp@(-52) <== NOT EXECUTED
583f8: 42ae ffd0 clrl %fp@(-48) <== NOT EXECUTED
583fc: 42ae ffd4 clrl %fp@(-44) <== NOT EXECUTED
58400: 42ae ffd8 clrl %fp@(-40) <== NOT EXECUTED
58404: 42ae ffdc clrl %fp@(-36) <== NOT EXECUTED
msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);
58408: 4e90 jsr %a0@ <== NOT EXECUTED
rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, ".", 1,
5840a: 2044 moveal %d4,%a0 <== NOT EXECUTED
5840c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5840e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
58410: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
58414: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
58418: 4879 0006 9f9b pea 69f9b <IMFS_memfile_handlers+0x79> <== NOT EXECUTED
5841e: 42a7 clrl %sp@- <== NOT EXECUTED
58420: 2f2e ffbc movel %fp@(-68),%sp@- <== NOT EXECUTED
58424: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58426: 4e90 jsr %a0@ <== NOT EXECUTED
MSDOS_NAME_SHORT, dir_pos, dot_node);
if (rc != RC_OK)
58428: 4fef 0030 lea %sp@(48),%sp <== NOT EXECUTED
}
/* find "." node in opened directory */
memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);
rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, ".", 1,
5842c: 2400 movel %d0,%d2 <== NOT EXECUTED
MSDOS_NAME_SHORT, dir_pos, dot_node);
if (rc != RC_OK)
5842e: 6600 018e bnew 585be <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x270><== NOT EXECUTED
return rc;
}
/* find ".." node in opened directory */
memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);
58432: 4878 000b pea b <LASTO+0x1> <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
/* find ".." node in opened directory */
memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
58436: 240e movel %fp,%d2 <== NOT EXECUTED
58438: 0682 ffff ffe0 addil #-32,%d2 <== NOT EXECUTED
5843e: 2042 moveal %d2,%a0 <== NOT EXECUTED
msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);
58440: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58442: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
58446: 4879 0006 9f9a pea 69f9a <IMFS_memfile_handlers+0x78> <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
/* find ".." node in opened directory */
memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
5844c: 42ae ffe4 clrl %fp@(-28) <== NOT EXECUTED
58450: 4290 clrl %a0@ <== NOT EXECUTED
msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);
58452: 2045 moveal %d5,%a0 <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
/* find ".." node in opened directory */
memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
58454: 42ae ffe8 clrl %fp@(-24) <== NOT EXECUTED
58458: 42ae ffec clrl %fp@(-20) <== NOT EXECUTED
5845c: 42ae fff0 clrl %fp@(-16) <== NOT EXECUTED
58460: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED
58464: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
58468: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);
5846c: 4e90 jsr %a0@ <== NOT EXECUTED
rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, "..", 2,
5846e: 2044 moveal %d4,%a0 <== NOT EXECUTED
58470: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58472: 2f03 movel %d3,%sp@- <== NOT EXECUTED
58474: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
58478: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
5847c: 4879 0006 9f9a pea 69f9a <IMFS_memfile_handlers+0x78> <== NOT EXECUTED
58482: 42a7 clrl %sp@- <== NOT EXECUTED
58484: 2f2e ffbc movel %fp@(-68),%sp@- <== NOT EXECUTED
58488: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5848a: 4e90 jsr %a0@ <== NOT EXECUTED
MSDOS_NAME_SHORT, dir_pos,
dotdot_node);
if (rc != RC_OK)
5848c: 4fef 0030 lea %sp@(48),%sp <== NOT EXECUTED
}
/* find ".." node in opened directory */
memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);
rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, "..", 2,
58490: 2400 movel %d0,%d2 <== NOT EXECUTED
MSDOS_NAME_SHORT, dir_pos,
dotdot_node);
if (rc != RC_OK)
58492: 6600 012a bnew 585be <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x270><== NOT EXECUTED
}
cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);
/* close fat-file corresponded to ".." directory */
rc = fat_file_close(&fs_info->fat, fat_fd);
58496: 2f2e ffbc movel %fp@(-68),%sp@- <== NOT EXECUTED
5849a: 283c 0005 1f16 movel #335638,%d4 <== NOT EXECUTED
584a0: 2044 moveal %d4,%a0 <== NOT EXECUTED
584a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
{
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);
584a4: 3a2e ffda movew %fp@(-38),%d5 <== NOT EXECUTED
584a8: 3c2e ffd4 movew %fp@(-44),%d6 <== NOT EXECUTED
/* close fat-file corresponded to ".." directory */
rc = fat_file_close(&fs_info->fat, fat_fd);
584ac: 4e90 jsr %a0@ <== NOT EXECUTED
if ( rc != RC_OK )
584ae: 508f addql #8,%sp <== NOT EXECUTED
}
cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);
/* close fat-file corresponded to ".." directory */
rc = fat_file_close(&fs_info->fat, fat_fd);
584b0: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( rc != RC_OK )
584b2: 6600 feca bnew 5837e <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x30><== NOT EXECUTED
584b6: 4287 clrl %d7 <== NOT EXECUTED
584b8: 4282 clrl %d2 <== NOT EXECUTED
584ba: 3e2e fff4 movew %fp@(-12),%d7 <== NOT EXECUTED
584be: 342e fffa movew %fp@(-6),%d2 <== NOT EXECUTED
584c2: 2207 movel %d7,%d1 <== NOT EXECUTED
584c4: 2002 movel %d2,%d0 <== NOT EXECUTED
584c6: e08f lsrl #8,%d7 <== NOT EXECUTED
584c8: e08a lsrl #8,%d2 <== NOT EXECUTED
584ca: e189 lsll #8,%d1 <== NOT EXECUTED
584cc: e188 lsll #8,%d0 <== NOT EXECUTED
584ce: 8287 orl %d7,%d1 <== NOT EXECUTED
584d0: 8082 orl %d2,%d0 <== NOT EXECUTED
return rc;
if ( (MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)
584d2: 4841 swap %d1 <== NOT EXECUTED
584d4: 4241 clrw %d1 <== NOT EXECUTED
584d6: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
584dc: 8280 orl %d0,%d1 <== NOT EXECUTED
584de: 6614 bnes 584f4 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x1a6><== NOT EXECUTED
fat_dir_pos_init(
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
dir_pos->sname.ofs = 0;
584e0: 2043 moveal %d3,%a0 <== NOT EXECUTED
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
584e2: 70ff moveq #-1,%d0 <== NOT EXECUTED
/*
* we handle root dir for all FAT types in the same way with the
* ordinary directories ( through fat_file_* calls )
*/
fat_dir_pos_init(dir_pos);
dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
584e4: 7e01 moveq #1,%d7 <== NOT EXECUTED
fat_dir_pos_init(
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
dir_pos->sname.ofs = 0;
584e6: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
584ea: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
584ee: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED
584f2: 2087 movel %d7,%a0@ <== NOT EXECUTED
}
/* open fat-file corresponded to second ".." */
rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
584f4: 486e ffbc pea %fp@(-68) <== NOT EXECUTED
584f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
584fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
584fc: 4e95 jsr %a5@ <== NOT EXECUTED
if (rc != RC_OK)
584fe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
fat_dir_pos_init(dir_pos);
dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
}
/* open fat-file corresponded to second ".." */
rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
58502: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc != RC_OK)
58504: 6600 fe78 bnew 5837e <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x30><== NOT EXECUTED
58508: 4287 clrl %d7 <== NOT EXECUTED
5850a: 4282 clrl %d2 <== NOT EXECUTED
5850c: 3e2e fff4 movew %fp@(-12),%d7 <== NOT EXECUTED
58510: 342e fffa movew %fp@(-6),%d2 <== NOT EXECUTED
return rc;
if ((MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)
fat_fd->cln = fs_info->fat.vol.rdir_cl;
58514: 206e ffbc moveal %fp@(-68),%a0 <== NOT EXECUTED
58518: 2007 movel %d7,%d0 <== NOT EXECUTED
5851a: 2202 movel %d2,%d1 <== NOT EXECUTED
5851c: e08f lsrl #8,%d7 <== NOT EXECUTED
5851e: e08a lsrl #8,%d2 <== NOT EXECUTED
58520: e188 lsll #8,%d0 <== NOT EXECUTED
58522: e189 lsll #8,%d1 <== NOT EXECUTED
58524: 8087 orl %d7,%d0 <== NOT EXECUTED
58526: 8282 orl %d2,%d1 <== NOT EXECUTED
/* open fat-file corresponded to second ".." */
rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
if (rc != RC_OK)
return rc;
if ((MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)
58528: 4840 swap %d0 <== NOT EXECUTED
5852a: 4240 clrw %d0 <== NOT EXECUTED
5852c: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
58532: 8081 orl %d1,%d0 <== NOT EXECUTED
58534: 6600 00ba bnew 585f0 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x2a2><== NOT EXECUTED
fat_fd->cln = fs_info->fat.vol.rdir_cl;
58538: 216a 0038 001c movel %a2@(56),%a0@(28) <== NOT EXECUTED
else
fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node);
fat_fd->fat_file_type = FAT_DIRECTORY;
5853e: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
58542: 7020 moveq #32,%d0 <== NOT EXECUTED
58544: 4840 swap %d0 <== NOT EXECUTED
fat_fd->map.file_cln = 0;
fat_fd->map.disk_cln = fat_fd->cln;
58546: 2168 001c 0036 movel %a0@(28),%a0@(54) <== NOT EXECUTED
fat_fd->cln = fs_info->fat.vol.rdir_cl;
else
fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node);
fat_fd->fat_file_type = FAT_DIRECTORY;
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
5854c: 2140 0014 movel %d0,%a0@(20) <== NOT EXECUTED
fat_fd->map.file_cln = 0;
58550: 42a8 0032 clrl %a0@(50) <== NOT EXECUTED
fat_fd->map.disk_cln = fat_fd->cln;
rc = fat_file_size(&fs_info->fat, fat_fd);
58554: 2f08 movel %a0,%sp@- <== NOT EXECUTED
58556: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58558: 4e94 jsr %a4@ <== NOT EXECUTED
if (rc != RC_OK)
5855a: 508f addql #8,%sp <== NOT EXECUTED
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
fat_fd->map.file_cln = 0;
fat_fd->map.disk_cln = fat_fd->cln;
rc = fat_file_size(&fs_info->fat, fat_fd);
5855c: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc != RC_OK)
5855e: 6678 bnes 585d8 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x28a><== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
/* in this directory find slot with specified cluster num */
rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,
58560: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
58564: 0286 0000 ffff andil #65535,%d6 <== NOT EXECUTED
5856a: 0285 0000 ffff andil #65535,%d5 <== NOT EXECUTED
58570: 2f03 movel %d3,%sp@- <== NOT EXECUTED
58572: 2206 movel %d6,%d1 <== NOT EXECUTED
58574: 2005 movel %d5,%d0 <== NOT EXECUTED
58576: e089 lsrl #8,%d1 <== NOT EXECUTED
58578: e08d lsrl #8,%d5 <== NOT EXECUTED
5857a: e18e lsll #8,%d6 <== NOT EXECUTED
5857c: e188 lsll #8,%d0 <== NOT EXECUTED
5857e: 8c81 orl %d1,%d6 <== NOT EXECUTED
58580: 8085 orl %d5,%d0 <== NOT EXECUTED
{
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);
58582: 4846 swap %d6 <== NOT EXECUTED
58584: 4246 clrw %d6 <== NOT EXECUTED
58586: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
/* in this directory find slot with specified cluster num */
rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,
5858c: 8c80 orl %d0,%d6 <== NOT EXECUTED
5858e: 2f06 movel %d6,%sp@- <== NOT EXECUTED
58590: 2f2e ffbc movel %fp@(-68),%sp@- <== NOT EXECUTED
58594: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58596: 4eb9 0005 81d6 jsr 581d6 <msdos_find_node_by_cluster_num_in_fat_file><== NOT EXECUTED
dir_pos, dir_entry);
if (rc != RC_OK)
5859c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
/* in this directory find slot with specified cluster num */
rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,
585a0: 2400 movel %d0,%d2 <== NOT EXECUTED
dir_pos, dir_entry);
if (rc != RC_OK)
585a2: 6634 bnes 585d8 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x28a><== NOT EXECUTED
{
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
rc = fat_file_close(&fs_info->fat, fat_fd);
585a4: 2f2e ffbc movel %fp@(-68),%sp@- <== NOT EXECUTED
585a8: 2044 moveal %d4,%a0 <== NOT EXECUTED
585aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
585ac: 4e90 jsr %a0@ <== NOT EXECUTED
585ae: 508f addql #8,%sp <== NOT EXECUTED
585b0: 2400 movel %d0,%d2 <== NOT EXECUTED
return rc;
}
585b2: 2002 movel %d2,%d0 <== NOT EXECUTED
585b4: 4cee 3cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a5 <== NOT EXECUTED
585ba: 4e5e unlk %fp <== NOT EXECUTED
585bc: 4e75 rts <== NOT EXECUTED
MSDOS_NAME_SHORT, dir_pos,
dotdot_node);
if (rc != RC_OK)
{
fat_file_close(&fs_info->fat, fat_fd);
585be: 2f2e ffbc movel %fp@(-68),%sp@- <== NOT EXECUTED
585c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
585c4: 4eb9 0005 1f16 jsr 51f16 <fat_file_close> <== NOT EXECUTED
585ca: 508f addql #8,%sp <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
rc = fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
585cc: 2002 movel %d2,%d0 <== NOT EXECUTED
585ce: 4cee 3cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a5 <== NOT EXECUTED
585d4: 4e5e unlk %fp <== NOT EXECUTED
585d6: 4e75 rts <== NOT EXECUTED
/* in this directory find slot with specified cluster num */
rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,
dir_pos, dir_entry);
if (rc != RC_OK)
{
fat_file_close(&fs_info->fat, fat_fd);
585d8: 2f2e ffbc movel %fp@(-68),%sp@- <== NOT EXECUTED
585dc: 2044 moveal %d4,%a0 <== NOT EXECUTED
585de: 2f0a movel %a2,%sp@- <== NOT EXECUTED
585e0: 4e90 jsr %a0@ <== NOT EXECUTED
585e2: 508f addql #8,%sp <== NOT EXECUTED
return rc;
}
rc = fat_file_close(&fs_info->fat, fat_fd);
return rc;
}
585e4: 2002 movel %d2,%d0 <== NOT EXECUTED
585e6: 4cee 3cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a5 <== NOT EXECUTED
585ec: 4e5e unlk %fp <== NOT EXECUTED
585ee: 4e75 rts <== NOT EXECUTED
return rc;
if ((MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)
fat_fd->cln = fs_info->fat.vol.rdir_cl;
else
fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node);
585f0: 2140 001c movel %d0,%a0@(28) <== NOT EXECUTED
585f4: 6000 ff48 braw 5853e <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x1f0><== NOT EXECUTED
000585f8 <msdos_get_name_node>:
int rc = RC_OK;
fat_file_fd_t *fat_fd = parent_loc->node_access;
uint32_t dotdot_cln = 0;
/* find name in fat-file which corresponds to the directory */
rc = msdos_find_name_in_fat_file(parent_loc->mt_entry, fat_fd,
585f8: 4280 clrl %d0
int name_len,
msdos_name_type_t name_type,
fat_dir_pos_t *dir_pos,
char *name_dir_entry
)
{
585fa: 4e56 ffe8 linkw %fp,#-24
585fe: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
58602: 286e 0020 moveal %fp@(32),%a4
58606: 266e 001c moveal %fp@(28),%a3
int rc = RC_OK;
fat_file_fd_t *fat_fd = parent_loc->node_access;
uint32_t dotdot_cln = 0;
/* find name in fat-file which corresponds to the directory */
rc = msdos_find_name_in_fat_file(parent_loc->mt_entry, fat_fd,
5860a: 2f0c movel %a4,%sp@-
int name_len,
msdos_name_type_t name_type,
fat_dir_pos_t *dir_pos,
char *name_dir_entry
)
{
5860c: 262e 0010 movel %fp@(16),%d3
int rc = RC_OK;
fat_file_fd_t *fat_fd = parent_loc->node_access;
uint32_t dotdot_cln = 0;
/* find name in fat-file which corresponds to the directory */
rc = msdos_find_name_in_fat_file(parent_loc->mt_entry, fat_fd,
58610: 2f0b movel %a3,%sp@-
58612: 2f2e 0018 movel %fp@(24),%sp@-
58616: 2f2e 0014 movel %fp@(20),%sp@-
int name_len,
msdos_name_type_t name_type,
fat_dir_pos_t *dir_pos,
char *name_dir_entry
)
{
5861a: 246e 0008 moveal %fp@(8),%a2
5861e: 182e 000f moveb %fp@(15),%d4
int rc = RC_OK;
fat_file_fd_t *fat_fd = parent_loc->node_access;
uint32_t dotdot_cln = 0;
/* find name in fat-file which corresponds to the directory */
rc = msdos_find_name_in_fat_file(parent_loc->mt_entry, fat_fd,
58622: 2f03 movel %d3,%sp@-
58624: 1004 moveb %d4,%d0
58626: 2f00 movel %d0,%sp@-
58628: 2f2a 0008 movel %a2@(8),%sp@-
5862c: 2f2a 0014 movel %a2@(20),%sp@-
58630: 4eb9 0005 782a jsr 5782a <msdos_find_name_in_fat_file>
create_node, name, name_len, name_type,
dir_pos, name_dir_entry);
if ((rc != RC_OK) && (rc != MSDOS_NAME_NOT_FOUND_ERR))
58636: 4fef 0020 lea %sp@(32),%sp
int rc = RC_OK;
fat_file_fd_t *fat_fd = parent_loc->node_access;
uint32_t dotdot_cln = 0;
/* find name in fat-file which corresponds to the directory */
rc = msdos_find_name_in_fat_file(parent_loc->mt_entry, fat_fd,
5863a: 2400 movel %d0,%d2
create_node, name, name_len, name_type,
dir_pos, name_dir_entry);
if ((rc != RC_OK) && (rc != MSDOS_NAME_NOT_FOUND_ERR))
5863c: 665a bnes 58698 <msdos_get_name_node+0xa0>
return rc;
if (!create_node)
5863e: 4a04 tstb %d4
58640: 6656 bnes 58698 <msdos_get_name_node+0xa0>
* Really, we should return cluster num and offset not of ".." slot, but
* slot which correspondes to real directory name.
*/
if (rc == RC_OK)
{
if (strncmp(name, "..", 2) == 0)
58642: 4878 0002 pea 2 <DOUBLE_FLOAT>
58646: 4879 0006 9f9a pea 69f9a <IMFS_memfile_handlers+0x78>
5864c: 2f03 movel %d3,%sp@-
5864e: 4eb9 0005 c508 jsr 5c508 <strncmp>
58654: 4fef 000c lea %sp@(12),%sp
58658: 4a80 tstl %d0
5865a: 663c bnes 58698 <msdos_get_name_node+0xa0> <== ALWAYS TAKEN
5865c: 4284 clrl %d4 <== NOT EXECUTED
5865e: 4283 clrl %d3 <== NOT EXECUTED
58660: 382c 0014 movew %a4@(20),%d4 <== NOT EXECUTED
58664: 362c 001a movew %a4@(26),%d3 <== NOT EXECUTED
58668: 2004 movel %d4,%d0 <== NOT EXECUTED
5866a: 2203 movel %d3,%d1 <== NOT EXECUTED
5866c: e08c lsrl #8,%d4 <== NOT EXECUTED
5866e: e08b lsrl #8,%d3 <== NOT EXECUTED
58670: e188 lsll #8,%d0 <== NOT EXECUTED
58672: e189 lsll #8,%d1 <== NOT EXECUTED
58674: 8084 orl %d4,%d0 <== NOT EXECUTED
58676: 8283 orl %d3,%d1 <== NOT EXECUTED
{
dotdot_cln = MSDOS_EXTRACT_CLUSTER_NUM((name_dir_entry));
58678: 4840 swap %d0 <== NOT EXECUTED
5867a: 4240 clrw %d0 <== NOT EXECUTED
5867c: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
58682: 8081 orl %d1,%d0 <== NOT EXECUTED
/* are we right under root dir ? */
if (dotdot_cln == 0)
58684: 661e bnes 586a4 <msdos_get_name_node+0xac> <== NOT EXECUTED
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
dir_pos->sname.ofs = 0;
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
58686: 70ff moveq #-1,%d0 <== NOT EXECUTED
58688: 2740 0008 movel %d0,%a3@(8) <== NOT EXECUTED
dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
5868c: 2740 000c movel %d0,%a3@(12) <== NOT EXECUTED
/*
* we can relax about first_char field - it never should be
* used for root dir
*/
fat_dir_pos_init(dir_pos);
dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
58690: 7001 moveq #1,%d0 <== NOT EXECUTED
fat_dir_pos_init(
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
dir_pos->sname.ofs = 0;
58692: 42ab 0004 clrl %a3@(4) <== NOT EXECUTED
58696: 2680 movel %d0,%a3@ <== NOT EXECUTED
}
}
}
}
return rc;
}
58698: 2002 movel %d2,%d0
5869a: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
586a0: 4e5e unlk %fp
586a2: 4e75 rts
fat_dir_pos_init(dir_pos);
dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
}
else
{
rc =
586a4: 2d4c 0014 movel %a4,%fp@(20) <== NOT EXECUTED
586a8: 2d6a 0014 0008 movel %a2@(20),%fp@(8) <== NOT EXECUTED
586ae: 2d4b 0010 movel %a3,%fp@(16) <== NOT EXECUTED
}
}
}
}
return rc;
}
586b2: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
fat_dir_pos_init(dir_pos);
dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
}
else
{
rc =
586b8: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
}
}
}
return rc;
}
586bc: 4e5e unlk %fp <== NOT EXECUTED
fat_dir_pos_init(dir_pos);
dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
}
else
{
rc =
586be: 4ef9 0005 834e jmp 5834e <msdos_get_dotdot_dir_info_cluster_num_and_offset><== NOT EXECUTED
0004e130 <msdos_initialize_support>:
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
const rtems_filesystem_operations_table *op_table,
const rtems_filesystem_file_handlers_r *file_handlers,
const rtems_filesystem_file_handlers_r *directory_handlers
)
{
4e130: 4e56 ffdc linkw %fp,#-36
4e134: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
msdos_fs_info_t *fs_info = NULL;
fat_file_fd_t *fat_fd = NULL;
fat_dir_pos_t root_pos;
uint32_t cl_buf_size;
fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));
4e138: 4878 0098 pea 98 <DBL_MANT_DIG+0x63>
4e13c: 49f9 0004 48cc lea 448cc <calloc>,%a4
4e142: 4878 0001 pea 1 <ADD>
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
const rtems_filesystem_operations_table *op_table,
const rtems_filesystem_file_handlers_r *file_handlers,
const rtems_filesystem_file_handlers_r *directory_handlers
)
{
4e146: 266e 0008 moveal %fp@(8),%a3
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = NULL;
fat_file_fd_t *fat_fd = NULL;
4e14a: 42ae ffec clrl %fp@(-20)
fat_dir_pos_t root_pos;
uint32_t cl_buf_size;
fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));
4e14e: 4e94 jsr %a4@
if (!fs_info)
4e150: 508f addql #8,%sp
msdos_fs_info_t *fs_info = NULL;
fat_file_fd_t *fat_fd = NULL;
fat_dir_pos_t root_pos;
uint32_t cl_buf_size;
fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));
4e152: 2440 moveal %d0,%a2
if (!fs_info)
4e154: 4a80 tstl %d0
4e156: 6700 01a6 beqw 4e2fe <msdos_initialize_support+0x1ce>
rtems_set_errno_and_return_minus_one(ENOMEM);
temp_mt_entry->fs_info = fs_info;
rc = fat_init_volume_info(&fs_info->fat, temp_mt_entry->dev);
4e15a: 2f2b 0036 movel %a3@(54),%sp@-
fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));
if (!fs_info)
rtems_set_errno_and_return_minus_one(ENOMEM);
temp_mt_entry->fs_info = fs_info;
4e15e: 2740 0008 movel %d0,%a3@(8)
rc = fat_init_volume_info(&fs_info->fat, temp_mt_entry->dev);
4e162: 2f00 movel %d0,%sp@-
4e164: 4eb9 0005 2df2 jsr 52df2 <fat_init_volume_info>
if (rc != RC_OK)
4e16a: 508f addql #8,%sp
if (!fs_info)
rtems_set_errno_and_return_minus_one(ENOMEM);
temp_mt_entry->fs_info = fs_info;
rc = fat_init_volume_info(&fs_info->fat, temp_mt_entry->dev);
4e16c: 2400 movel %d0,%d2
if (rc != RC_OK)
4e16e: 6600 00cc bnew 4e23c <msdos_initialize_support+0x10c>
* open fat-file which correspondes to root directory
* (so inode number 0x00000010 is always used for root directory)
*/
fat_dir_pos_init(&root_pos);
root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);
4e172: 486e ffec pea %fp@(-20)
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
dir_pos->sname.ofs = 0;
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
4e176: 72ff moveq #-1,%d1
4e178: 486e fff0 pea %fp@(-16)
free(fs_info);
return rc;
}
fs_info->file_handlers = file_handlers;
fs_info->directory_handlers = directory_handlers;
4e17c: 202e 0014 movel %fp@(20),%d0
4e180: 2540 0088 movel %d0,%a2@(136)
/*
* open fat-file which correspondes to root directory
* (so inode number 0x00000010 is always used for root directory)
*/
fat_dir_pos_init(&root_pos);
root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
4e184: 7001 moveq #1,%d0
{
free(fs_info);
return rc;
}
fs_info->file_handlers = file_handlers;
4e186: 256e 0010 008c movel %fp@(16),%a2@(140)
* open fat-file which correspondes to root directory
* (so inode number 0x00000010 is always used for root directory)
*/
fat_dir_pos_init(&root_pos);
root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);
4e18c: 2f0a movel %a2,%sp@-
fat_dir_pos_init(
fat_dir_pos_t *dir_pos
)
{
dir_pos->sname.cln = 0;
dir_pos->sname.ofs = 0;
4e18e: 42ae fff4 clrl %fp@(-12)
dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
4e192: 2d41 fff8 movel %d1,%fp@(-8)
dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
4e196: 2d41 fffc movel %d1,%fp@(-4)
/*
* open fat-file which correspondes to root directory
* (so inode number 0x00000010 is always used for root directory)
*/
fat_dir_pos_init(&root_pos);
root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
4e19a: 2d40 fff0 movel %d0,%fp@(-16)
rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);
4e19e: 4eb9 0005 1914 jsr 51914 <fat_file_open>
if (rc != RC_OK)
4e1a4: 4fef 000c lea %sp@(12),%sp
* open fat-file which correspondes to root directory
* (so inode number 0x00000010 is always used for root directory)
*/
fat_dir_pos_init(&root_pos);
root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);
4e1a8: 2400 movel %d0,%d2
if (rc != RC_OK)
4e1aa: 6600 00aa bnew 4e256 <msdos_initialize_support+0x126>
free(fs_info);
return rc;
}
/* again: unfortunately "fat-file" is just almost fat file :( */
fat_fd->fat_file_type = FAT_DIRECTORY;
4e1ae: 206e ffec moveal %fp@(-20),%a0
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
fat_fd->cln = fs_info->fat.vol.rdir_cl;
4e1b2: 202a 0038 movel %a2@(56),%d0
return rc;
}
/* again: unfortunately "fat-file" is just almost fat file :( */
fat_fd->fat_file_type = FAT_DIRECTORY;
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
4e1b6: 7220 moveq #32,%d1
4e1b8: 4841 swap %d1
free(fs_info);
return rc;
}
/* again: unfortunately "fat-file" is just almost fat file :( */
fat_fd->fat_file_type = FAT_DIRECTORY;
4e1ba: 42a8 0010 clrl %a0@(16)
fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
4e1be: 2141 0014 movel %d1,%a0@(20)
fat_fd->cln = fs_info->fat.vol.rdir_cl;
4e1c2: 2140 001c movel %d0,%a0@(28)
fat_fd->map.file_cln = 0;
4e1c6: 42a8 0032 clrl %a0@(50)
fat_fd->map.disk_cln = fat_fd->cln;
4e1ca: 2140 0036 movel %d0,%a0@(54)
/* if we have FAT12/16 */
if ( fat_fd->cln == 0 )
4e1ce: 6600 00a4 bnew 4e274 <msdos_initialize_support+0x144>
{
fat_fd->fat_file_size = fs_info->fat.vol.rdir_size;
cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?
fs_info->fat.vol.bpc :
4e1d2: 4280 clrl %d0
fat_fd->map.disk_cln = fat_fd->cln;
/* if we have FAT12/16 */
if ( fat_fd->cln == 0 )
{
fat_fd->fat_file_size = fs_info->fat.vol.rdir_size;
4e1d4: 222a 0028 movel %a2@(40),%d1
cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?
fs_info->fat.vol.bpc :
4e1d8: 302a 0006 movew %a2@(6),%d0
fat_fd->map.disk_cln = fat_fd->cln;
/* if we have FAT12/16 */
if ( fat_fd->cln == 0 )
{
fat_fd->fat_file_size = fs_info->fat.vol.rdir_size;
4e1dc: 2141 0018 movel %d1,%a0@(24)
cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?
4e1e0: b280 cmpl %d0,%d1
4e1e2: 626e bhis 4e252 <msdos_initialize_support+0x122> <== ALWAYS TAKEN
return rc;
}
cl_buf_size = fs_info->fat.vol.bpc;
}
fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));
4e1e4: 4878 0001 pea 1 <ADD>
4e1e8: 2f00 movel %d0,%sp@-
4e1ea: 4e94 jsr %a4@
if (fs_info->cl_buf == NULL)
4e1ec: 508f addql #8,%sp
return rc;
}
cl_buf_size = fs_info->fat.vol.bpc;
}
fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));
4e1ee: 2540 0094 movel %d0,%a2@(148)
if (fs_info->cl_buf == NULL)
4e1f2: 6700 0124 beqw 4e318 <msdos_initialize_support+0x1e8>
fat_shutdown_drive(&fs_info->fat);
free(fs_info);
rtems_set_errno_and_return_minus_one(ENOMEM);
}
sc = rtems_semaphore_create(3,
4e1f6: 486a 0090 pea %a2@(144)
4e1fa: 42a7 clrl %sp@-
4e1fc: 4878 0010 pea 10 <INVALID_OPERATION>
4e200: 4878 0001 pea 1 <ADD>
4e204: 4878 0003 pea 3 <DIVIDE>
4e208: 4eb9 0004 9258 jsr 49258 <rtems_semaphore_create>
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_FIFO,
0,
&fs_info->vol_sema);
if (sc != RTEMS_SUCCESSFUL)
4e20e: 4fef 0014 lea %sp@(20),%sp
4e212: 4a80 tstl %d0
4e214: 6600 00a6 bnew 4e2bc <msdos_initialize_support+0x18c>
free(fs_info->cl_buf);
free(fs_info);
rtems_set_errno_and_return_minus_one( EIO );
}
temp_mt_entry->mt_fs_root->location.node_access = fat_fd;
4e218: 206b 0024 moveal %a3@(36),%a0
temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
4e21c: 202e 0014 movel %fp@(20),%d0
free(fs_info->cl_buf);
free(fs_info);
rtems_set_errno_and_return_minus_one( EIO );
}
temp_mt_entry->mt_fs_root->location.node_access = fat_fd;
4e220: 216e ffec 0008 movel %fp@(-20),%a0@(8)
temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
4e226: 2140 0010 movel %d0,%a0@(16)
temp_mt_entry->ops = op_table;
4e22a: 276e 000c 000c movel %fp@(12),%a3@(12)
return rc;
}
4e230: 2002 movel %d2,%d0
4e232: 4cee 1c04 ffdc moveml %fp@(-36),%d2/%a2-%a4
4e238: 4e5e unlk %fp
4e23a: 4e75 rts
temp_mt_entry->fs_info = fs_info;
rc = fat_init_volume_info(&fs_info->fat, temp_mt_entry->dev);
if (rc != RC_OK)
{
free(fs_info);
4e23c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e23e: 4eb9 0004 4bec jsr 44bec <free> <== NOT EXECUTED
4e244: 588f addql #4,%sp <== NOT EXECUTED
temp_mt_entry->mt_fs_root->location.node_access = fat_fd;
temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
temp_mt_entry->ops = op_table;
return rc;
}
4e246: 2002 movel %d2,%d0 <== NOT EXECUTED
4e248: 4cee 1c04 ffdc moveml %fp@(-36),%d2/%a2-%a4 <== NOT EXECUTED
4e24e: 4e5e unlk %fp <== NOT EXECUTED
4e250: 4e75 rts <== NOT EXECUTED
/* if we have FAT12/16 */
if ( fat_fd->cln == 0 )
{
fat_fd->fat_file_size = fs_info->fat.vol.rdir_size;
cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?
4e252: 2001 movel %d1,%d0
4e254: 608e bras 4e1e4 <msdos_initialize_support+0xb4>
fat_dir_pos_init(&root_pos);
root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);
if (rc != RC_OK)
{
fat_shutdown_drive(&fs_info->fat);
4e256: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e258: 4eb9 0005 3810 jsr 53810 <fat_shutdown_drive> <== NOT EXECUTED
free(fs_info);
4e25e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e260: 4eb9 0004 4bec jsr 44bec <free> <== NOT EXECUTED
4e266: 508f addql #8,%sp <== NOT EXECUTED
temp_mt_entry->mt_fs_root->location.node_access = fat_fd;
temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
temp_mt_entry->ops = op_table;
return rc;
}
4e268: 2002 movel %d2,%d0 <== NOT EXECUTED
4e26a: 4cee 1c04 ffdc moveml %fp@(-36),%d2/%a2-%a4 <== NOT EXECUTED
4e270: 4e5e unlk %fp <== NOT EXECUTED
4e272: 4e75 rts <== NOT EXECUTED
fs_info->fat.vol.bpc :
fs_info->fat.vol.rdir_size;
}
else
{
rc = fat_file_size(&fs_info->fat, fat_fd);
4e274: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4e276: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e278: 4eb9 0005 2680 jsr 52680 <fat_file_size> <== NOT EXECUTED
if ( rc != RC_OK )
4e27e: 508f addql #8,%sp <== NOT EXECUTED
4e280: 4a80 tstl %d0 <== NOT EXECUTED
4e282: 660a bnes 4e28e <msdos_initialize_support+0x15e> <== NOT EXECUTED
fat_file_close(&fs_info->fat, fat_fd);
fat_shutdown_drive(&fs_info->fat);
free(fs_info);
return rc;
}
cl_buf_size = fs_info->fat.vol.bpc;
4e284: 4280 clrl %d0 <== NOT EXECUTED
4e286: 302a 0006 movew %a2@(6),%d0 <== NOT EXECUTED
4e28a: 6000 ff58 braw 4e1e4 <msdos_initialize_support+0xb4> <== NOT EXECUTED
else
{
rc = fat_file_size(&fs_info->fat, fat_fd);
if ( rc != RC_OK )
{
fat_file_close(&fs_info->fat, fat_fd);
4e28e: 2f2e ffec movel %fp@(-20),%sp@- <== NOT EXECUTED
fat_shutdown_drive(&fs_info->fat);
free(fs_info);
4e292: 2400 movel %d0,%d2 <== NOT EXECUTED
else
{
rc = fat_file_size(&fs_info->fat, fat_fd);
if ( rc != RC_OK )
{
fat_file_close(&fs_info->fat, fat_fd);
4e294: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e296: 4eb9 0005 1f16 jsr 51f16 <fat_file_close> <== NOT EXECUTED
fat_shutdown_drive(&fs_info->fat);
4e29c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e29e: 4eb9 0005 3810 jsr 53810 <fat_shutdown_drive> <== NOT EXECUTED
free(fs_info);
4e2a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e2a6: 4eb9 0004 4bec jsr 44bec <free> <== NOT EXECUTED
4e2ac: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
temp_mt_entry->mt_fs_root->location.node_access = fat_fd;
temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
temp_mt_entry->ops = op_table;
return rc;
}
4e2b0: 2002 movel %d2,%d0 <== NOT EXECUTED
4e2b2: 4cee 1c04 ffdc moveml %fp@(-36),%d2/%a2-%a4 <== NOT EXECUTED
4e2b8: 4e5e unlk %fp <== NOT EXECUTED
4e2ba: 4e75 rts <== NOT EXECUTED
RTEMS_BINARY_SEMAPHORE | RTEMS_FIFO,
0,
&fs_info->vol_sema);
if (sc != RTEMS_SUCCESSFUL)
{
fat_file_close(&fs_info->fat, fat_fd);
4e2bc: 2f2e ffec movel %fp@(-20),%sp@-
fat_shutdown_drive(&fs_info->fat);
free(fs_info->cl_buf);
4e2c0: 47f9 0004 4bec lea 44bec <free>,%a3
free(fs_info);
rtems_set_errno_and_return_minus_one( EIO );
4e2c6: 74ff moveq #-1,%d2
RTEMS_BINARY_SEMAPHORE | RTEMS_FIFO,
0,
&fs_info->vol_sema);
if (sc != RTEMS_SUCCESSFUL)
{
fat_file_close(&fs_info->fat, fat_fd);
4e2c8: 2f0a movel %a2,%sp@-
4e2ca: 4eb9 0005 1f16 jsr 51f16 <fat_file_close>
fat_shutdown_drive(&fs_info->fat);
4e2d0: 2f0a movel %a2,%sp@-
4e2d2: 4eb9 0005 3810 jsr 53810 <fat_shutdown_drive>
free(fs_info->cl_buf);
4e2d8: 2f2a 0094 movel %a2@(148),%sp@-
4e2dc: 4e93 jsr %a3@
free(fs_info);
4e2de: 2f0a movel %a2,%sp@-
4e2e0: 4e93 jsr %a3@
rtems_set_errno_and_return_minus_one( EIO );
4e2e2: 4eb9 0005 a7e0 jsr 5a7e0 <__errno>
4e2e8: 4fef 0014 lea %sp@(20),%sp
4e2ec: 2040 moveal %d0,%a0
4e2ee: 7005 moveq #5,%d0
4e2f0: 2080 movel %d0,%a0@
temp_mt_entry->mt_fs_root->location.node_access = fat_fd;
temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
temp_mt_entry->ops = op_table;
return rc;
}
4e2f2: 2002 movel %d2,%d0
4e2f4: 4cee 1c04 ffdc moveml %fp@(-36),%d2/%a2-%a4
4e2fa: 4e5e unlk %fp
4e2fc: 4e75 rts
fat_dir_pos_t root_pos;
uint32_t cl_buf_size;
fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));
if (!fs_info)
rtems_set_errno_and_return_minus_one(ENOMEM);
4e2fe: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
4e304: 74ff moveq #-1,%d2 <== NOT EXECUTED
4e306: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e308: 700c moveq #12,%d0 <== NOT EXECUTED
4e30a: 2080 movel %d0,%a0@ <== NOT EXECUTED
temp_mt_entry->mt_fs_root->location.node_access = fat_fd;
temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
temp_mt_entry->ops = op_table;
return rc;
}
4e30c: 2002 movel %d2,%d0 <== NOT EXECUTED
4e30e: 4cee 1c04 ffdc moveml %fp@(-36),%d2/%a2-%a4 <== NOT EXECUTED
4e314: 4e5e unlk %fp <== NOT EXECUTED
4e316: 4e75 rts <== NOT EXECUTED
}
fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));
if (fs_info->cl_buf == NULL)
{
fat_file_close(&fs_info->fat, fat_fd);
4e318: 2f2e ffec movel %fp@(-20),%sp@- <== NOT EXECUTED
fat_shutdown_drive(&fs_info->fat);
free(fs_info);
rtems_set_errno_and_return_minus_one(ENOMEM);
4e31c: 74ff moveq #-1,%d2 <== NOT EXECUTED
}
fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));
if (fs_info->cl_buf == NULL)
{
fat_file_close(&fs_info->fat, fat_fd);
4e31e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e320: 4eb9 0005 1f16 jsr 51f16 <fat_file_close> <== NOT EXECUTED
fat_shutdown_drive(&fs_info->fat);
4e326: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e328: 4eb9 0005 3810 jsr 53810 <fat_shutdown_drive> <== NOT EXECUTED
free(fs_info);
4e32e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e330: 4eb9 0004 4bec jsr 44bec <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENOMEM);
4e336: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
4e33c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e340: 720c moveq #12,%d1 <== NOT EXECUTED
4e342: 2040 moveal %d0,%a0 <== NOT EXECUTED
temp_mt_entry->mt_fs_root->location.node_access = fat_fd;
temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
temp_mt_entry->ops = op_table;
return rc;
}
4e344: 2002 movel %d2,%d0 <== NOT EXECUTED
4e346: 4cee 1c04 ffdc moveml %fp@(-36),%d2/%a2-%a4 <== NOT EXECUTED
if (fs_info->cl_buf == NULL)
{
fat_file_close(&fs_info->fat, fat_fd);
fat_shutdown_drive(&fs_info->fat);
free(fs_info);
rtems_set_errno_and_return_minus_one(ENOMEM);
4e34c: 2081 movel %d1,%a0@ <== NOT EXECUTED
temp_mt_entry->mt_fs_root->location.node_access = fat_fd;
temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
temp_mt_entry->ops = op_table;
return rc;
}
4e34e: 4e5e unlk %fp <== NOT EXECUTED
...
0004e0fe <msdos_lock>:
.rename_h = msdos_rename,
.statvfs_h = rtems_filesystem_default_statvfs
};
void msdos_lock(const rtems_filesystem_mount_table_entry_t *mt_entry)
{
4e0fe: 4e56 0000 linkw %fp,#0
msdos_fs_info_t *fs_info = mt_entry->fs_info;
rtems_status_code sc = rtems_semaphore_obtain(
fs_info->vol_sema,
4e102: 206e 0008 moveal %fp@(8),%a0
};
void msdos_lock(const rtems_filesystem_mount_table_entry_t *mt_entry)
{
msdos_fs_info_t *fs_info = mt_entry->fs_info;
rtems_status_code sc = rtems_semaphore_obtain(
4e106: 42a7 clrl %sp@-
fs_info->vol_sema,
4e108: 2068 0008 moveal %a0@(8),%a0
};
void msdos_lock(const rtems_filesystem_mount_table_entry_t *mt_entry)
{
msdos_fs_info_t *fs_info = mt_entry->fs_info;
rtems_status_code sc = rtems_semaphore_obtain(
4e10c: 42a7 clrl %sp@-
4e10e: 2f28 0090 movel %a0@(144),%sp@-
4e112: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain>
fs_info->vol_sema,
RTEMS_WAIT,
RTEMS_NO_TIMEOUT
);
if (sc != RTEMS_SUCCESSFUL) {
4e118: 4fef 000c lea %sp@(12),%sp
4e11c: 4a80 tstl %d0
4e11e: 6604 bnes 4e124 <msdos_lock+0x26> <== NEVER TAKEN
rtems_fatal_error_occurred(0xdeadbeef);
}
}
4e120: 4e5e unlk %fp
4e122: 4e75 rts
fs_info->vol_sema,
RTEMS_WAIT,
RTEMS_NO_TIMEOUT
);
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
4e124: 2f3c dead beef movel #-559038737,%sp@- <== NOT EXECUTED
4e12a: 4eb9 0004 9d54 jsr 49d54 <rtems_fatal_error_occurred> <== NOT EXECUTED
00057050 <msdos_long_to_short>:
*
*/
#define MSDOS_L2S_PRINT 0
msdos_name_type_t
msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len)
{
57050: 4e56 ffd0 linkw %fp,#-48
57054: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
int i;
/*
* Fill with spaces. This is how a short directory entry is padded.
*/
memset (sfn, ' ', sfn_len);
57058: 2f2e 0014 movel %fp@(20),%sp@-
5705c: 4878 0020 pea 20 <OPER2+0xc>
57060: 2f2e 0010 movel %fp@(16),%sp@-
*
*/
#define MSDOS_L2S_PRINT 0
msdos_name_type_t
msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len)
{
57064: 286e 0008 moveal %fp@(8),%a4
57068: 242e 000c movel %fp@(12),%d2
int i;
/*
* Fill with spaces. This is how a short directory entry is padded.
*/
memset (sfn, ' ', sfn_len);
5706c: 4eb9 0005 b1f8 jsr 5b1f8 <memset>
/*
* Handle '.' and '..' specially.
*/
if ((lfn[0] == '.') && (lfn_len == 1))
57072: 4fef 000c lea %sp@(12),%sp
57076: 702e moveq #46,%d0
57078: 1c14 moveb %a4@,%d6
5707a: 1606 moveb %d6,%d3
5707c: 49c3 extbl %d3
5707e: b083 cmpl %d3,%d0
57080: 6730 beqs 570b2 <msdos_long_to_short+0x62> <== NEVER TAKEN
}
/*
* Filenames with only blanks and dots are not allowed!
*/
for (i = 0; i < lfn_len; i++)
57082: 4a82 tstl %d2
57084: 6f00 01c2 blew 57248 <msdos_long_to_short+0x1f8>
57088: 204c moveal %a4,%a0
5708a: 4280 clrl %d0
5708c: 5280 addql #1,%d0
if ((lfn[i] != ' ') && (lfn[i] != '.'))
5708e: 7820 moveq #32,%d4
57090: 1218 moveb %a0@+,%d1
57092: 49c1 extbl %d1
57094: b881 cmpl %d1,%d4
57096: 6708 beqs 570a0 <msdos_long_to_short+0x50> <== NEVER TAKEN
57098: 183c 002e moveb #46,%d4
5709c: b881 cmpl %d1,%d4
5709e: 665c bnes 570fc <msdos_long_to_short+0xac>
}
/*
* Filenames with only blanks and dots are not allowed!
*/
for (i = 0; i < lfn_len; i++)
570a0: b480 cmpl %d0,%d2 <== NOT EXECUTED
570a2: 66e8 bnes 5708c <msdos_long_to_short+0x3c> <== NOT EXECUTED
if (i == lfn_len)
{
#if MSDOS_L2S_PRINT
printf ("MSDOS_L2S: INVALID[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_INVALID;
570a4: 4283 clrl %d3 <== NOT EXECUTED
#if MSDOS_L2S_PRINT
printf ("MSDOS_L2S: TYPE:%d lfn:'%s' SFN:'%s'\n", type, lfn, sfn);
#endif
return type;
}
570a6: 2003 movel %d3,%d0 <== NOT EXECUTED
570a8: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
570ae: 4e5e unlk %fp <== NOT EXECUTED
570b0: 4e75 rts <== NOT EXECUTED
memset (sfn, ' ', sfn_len);
/*
* Handle '.' and '..' specially.
*/
if ((lfn[0] == '.') && (lfn_len == 1))
570b2: 7201 moveq #1,%d1 <== NOT EXECUTED
570b4: b282 cmpl %d2,%d1 <== NOT EXECUTED
570b6: 672e beqs 570e6 <msdos_long_to_short+0x96> <== NOT EXECUTED
printf ("MSDOS_L2S: SHORT[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_SHORT;
}
if ((lfn[0] == '.') && (lfn[1] == '.') && (lfn_len == 2))
570b8: 722e moveq #46,%d1 <== NOT EXECUTED
570ba: 102c 0001 moveb %a4@(1),%d0 <== NOT EXECUTED
570be: 49c0 extbl %d0 <== NOT EXECUTED
570c0: b280 cmpl %d0,%d1 <== NOT EXECUTED
570c2: 66be bnes 57082 <msdos_long_to_short+0x32> <== NOT EXECUTED
570c4: 7802 moveq #2,%d4 <== NOT EXECUTED
570c6: b882 cmpl %d2,%d4 <== NOT EXECUTED
570c8: 66b8 bnes 57082 <msdos_long_to_short+0x32> <== NOT EXECUTED
{
sfn[0] = sfn[1] = '.';
570ca: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
#if MSDOS_L2S_PRINT
printf ("MSDOS_L2S: SHORT[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_SHORT;
570ce: 7601 moveq #1,%d3 <== NOT EXECUTED
return MSDOS_NAME_SHORT;
}
if ((lfn[0] == '.') && (lfn[1] == '.') && (lfn_len == 2))
{
sfn[0] = sfn[1] = '.';
570d0: 702e moveq #46,%d0 <== NOT EXECUTED
570d2: 10bc 002e moveb #46,%a0@ <== NOT EXECUTED
570d6: 1140 0001 moveb %d0,%a0@(1) <== NOT EXECUTED
#if MSDOS_L2S_PRINT
printf ("MSDOS_L2S: TYPE:%d lfn:'%s' SFN:'%s'\n", type, lfn, sfn);
#endif
return type;
}
570da: 2003 movel %d3,%d0 <== NOT EXECUTED
570dc: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
570e2: 4e5e unlk %fp <== NOT EXECUTED
570e4: 4e75 rts <== NOT EXECUTED
/*
* Handle '.' and '..' specially.
*/
if ((lfn[0] == '.') && (lfn_len == 1))
{
sfn[0] = '.';
570e6: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
#if MSDOS_L2S_PRINT
printf ("MSDOS_L2S: SHORT[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_SHORT;
570ea: 7601 moveq #1,%d3 <== NOT EXECUTED
#if MSDOS_L2S_PRINT
printf ("MSDOS_L2S: TYPE:%d lfn:'%s' SFN:'%s'\n", type, lfn, sfn);
#endif
return type;
}
570ec: 2003 movel %d3,%d0 <== NOT EXECUTED
/*
* Handle '.' and '..' specially.
*/
if ((lfn[0] == '.') && (lfn_len == 1))
{
sfn[0] = '.';
570ee: 10bc 002e moveb #46,%a0@ <== NOT EXECUTED
#if MSDOS_L2S_PRINT
printf ("MSDOS_L2S: TYPE:%d lfn:'%s' SFN:'%s'\n", type, lfn, sfn);
#endif
return type;
}
570f2: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
570f8: 4e5e unlk %fp <== NOT EXECUTED
570fa: 4e75 rts <== NOT EXECUTED
bool lowercase = false;
bool uppercase = false;
int dot_at = -1;
int count = 0;
while (*name && (count < name_len))
570fc: 4a06 tstb %d6
570fe: 6700 014e beqw 5724e <msdos_long_to_short+0x1fe>
*
*/
static msdos_name_type_t
msdos_is_valid_name_char(const char ch)
{
if (strchr(" +,;=[]", ch) != NULL)
57102: 2f03 movel %d3,%sp@-
57104: 4879 0006 a00a pea 6a00a <msdos_file_handlers+0x2c>
5710a: 47f9 0005 bdb4 lea 5bdb4 <strchr>,%a3
* true the name is long, else the name is short.
*
*/
#define MSDOS_L2S_PRINT 0
msdos_name_type_t
msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len)
57110: 45ec 0001 lea %a4@(1),%a2
57114: 4287 clrl %d7
57116: 78ff moveq #-1,%d4
57118: 4201 clrb %d1
msdos_is_valid_name_char(const char ch)
{
if (strchr(" +,;=[]", ch) != NULL)
return MSDOS_NAME_LONG;
if ((ch == '.') || isalnum((unsigned char)ch) ||
5711a: 2a79 0006 adbc moveal 6adbc <__ctype_ptr__>,%a5
* true the name is long, else the name is short.
*
*/
#define MSDOS_L2S_PRINT 0
msdos_name_type_t
msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len)
57120: 1d41 ffff moveb %d1,%fp@(-1)
*
*/
static msdos_name_type_t
msdos_is_valid_name_char(const char ch)
{
if (strchr(" +,;=[]", ch) != NULL)
57124: 4e93 jsr %a3@
57126: 508f addql #8,%sp
* true the name is long, else the name is short.
*
*/
#define MSDOS_L2S_PRINT 0
msdos_name_type_t
msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len)
57128: 4205 clrb %d5
*
*/
static msdos_name_type_t
msdos_is_valid_name_char(const char ch)
{
if (strchr(" +,;=[]", ch) != NULL)
5712a: 4a80 tstl %d0
5712c: 6720 beqs 5714e <msdos_long_to_short+0xfe> <== ALWAYS TAKEN
printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_INVALID;
}
msdos_filename_unix2dos (lfn, lfn_len, sfn);
5712e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
{
#if MSDOS_NAME_TYPE_PRINT
printf ("MSDOS_NAME_TYPE: LONG[1]: is_dot:%d, at:%d cnt\n",
is_dot, dot_at, count);
#endif
return MSDOS_NAME_LONG;
57132: 7602 moveq #2,%d3 <== NOT EXECUTED
printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_INVALID;
}
msdos_filename_unix2dos (lfn, lfn_len, sfn);
57134: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57136: 2f0c movel %a4,%sp@- <== NOT EXECUTED
57138: 4eb9 0005 9a20 jsr 59a20 <msdos_filename_unix2dos> <== NOT EXECUTED
#if MSDOS_L2S_PRINT
printf ("MSDOS_L2S: TYPE:%d lfn:'%s' SFN:'%s'\n", type, lfn, sfn);
#endif
return type;
5713e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
57142: 2003 movel %d3,%d0
57144: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
5714a: 4e5e unlk %fp
5714c: 4e75 rts
int dot_at = -1;
int count = 0;
while (*name && (count < name_len))
{
bool is_dot = *name == '.';
5714e: 103c 002e moveb #46,%d0
57152: bd80 eorl %d6,%d0
57154: 4a00 tstb %d0
57156: 57c1 seq %d1
57158: 2001 movel %d1,%d0
5715a: 4480 negl %d0
5715c: 2240 moveal %d0,%a1
msdos_is_valid_name_char(const char ch)
{
if (strchr(" +,;=[]", ch) != NULL)
return MSDOS_NAME_LONG;
if ((ch == '.') || isalnum((unsigned char)ch) ||
5715e: 4a00 tstb %d0
57160: 6600 0092 bnew 571f4 <msdos_long_to_short+0x1a4>
57164: 4280 clrl %d0
57166: 1006 moveb %d6,%d0
57168: 7207 moveq #7,%d1
5716a: 1035 0801 moveb %a5@(00000001,%d0:l),%d0
5716e: 3040 moveaw %d0,%a0
57170: 2008 movel %a0,%d0
57172: c081 andl %d1,%d0
57174: 4a00 tstb %d0
57176: 661e bnes 57196 <msdos_long_to_short+0x146> <== ALWAYS TAKEN
(strchr("$%'-_@~`!(){}^#&", ch) != NULL))
57178: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5717a: 4879 0006 a012 pea 6a012 <msdos_file_handlers+0x34> <== NOT EXECUTED
57180: 2d49 fffa movel %a1,%fp@(-6) <== NOT EXECUTED
57184: 4eb9 0005 bdb4 jsr 5bdb4 <strchr> <== NOT EXECUTED
msdos_is_valid_name_char(const char ch)
{
if (strchr(" +,;=[]", ch) != NULL)
return MSDOS_NAME_LONG;
if ((ch == '.') || isalnum((unsigned char)ch) ||
5718a: 226e fffa moveal %fp@(-6),%a1 <== NOT EXECUTED
(strchr("$%'-_@~`!(){}^#&", ch) != NULL))
5718e: 508f addql #8,%sp <== NOT EXECUTED
msdos_is_valid_name_char(const char ch)
{
if (strchr(" +,;=[]", ch) != NULL)
return MSDOS_NAME_LONG;
if ((ch == '.') || isalnum((unsigned char)ch) ||
57190: 4a80 tstl %d0 <== NOT EXECUTED
57192: 6700 ff10 beqw 570a4 <msdos_long_to_short+0x54> <== NOT EXECUTED
#endif
if ((type == MSDOS_NAME_INVALID) || (type == MSDOS_NAME_LONG))
return type;
if (dot_at >= 0)
57196: 70ff moveq #-1,%d0
57198: b084 cmpl %d4,%d0
5719a: 6760 beqs 571fc <msdos_long_to_short+0x1ac>
{
if (is_dot || ((count - dot_at) > 3))
5719c: 2007 movel %d7,%d0
5719e: 9084 subl %d4,%d0
571a0: 7203 moveq #3,%d1
571a2: b280 cmpl %d0,%d1
571a4: 6d88 blts 5712e <msdos_long_to_short+0xde> <== NEVER TAKEN
}
}
if (is_dot)
dot_at = count;
else if ((*name >= 'A') && (*name <= 'Z'))
571a6: 2006 movel %d6,%d0
571a8: 0680 ffff ffbf addil #-65,%d0
571ae: 7219 moveq #25,%d1
571b0: 0280 0000 00ff andil #255,%d0
571b6: b280 cmpl %d0,%d1
571b8: 647e bccs 57238 <msdos_long_to_short+0x1e8> <== NEVER TAKEN
uppercase = true;
else if ((*name >= 'a') && (*name <= 'z'))
571ba: 0686 ffff ff9f addil #-97,%d6
571c0: 0286 0000 00ff andil #255,%d6
571c6: b286 cmpl %d6,%d1
571c8: 6506 bcss 571d0 <msdos_long_to_short+0x180> <== NEVER TAKEN
lowercase = true;
571ca: 7201 moveq #1,%d1
571cc: 1d41 ffff moveb %d1,%fp@(-1)
count++;
571d0: 5287 addql #1,%d7
bool lowercase = false;
bool uppercase = false;
int dot_at = -1;
int count = 0;
while (*name && (count < name_len))
571d2: 1c1a moveb %a2@+,%d6
571d4: 673a beqs 57210 <msdos_long_to_short+0x1c0>
571d6: be82 cmpl %d2,%d7
571d8: 6c36 bges 57210 <msdos_long_to_short+0x1c0> <== NEVER TAKEN
571da: 1606 moveb %d6,%d3
571dc: 49c3 extbl %d3
*
*/
static msdos_name_type_t
msdos_is_valid_name_char(const char ch)
{
if (strchr(" +,;=[]", ch) != NULL)
571de: 2f03 movel %d3,%sp@-
571e0: 4879 0006 a00a pea 6a00a <msdos_file_handlers+0x2c>
571e6: 4e93 jsr %a3@
571e8: 508f addql #8,%sp
571ea: 4a80 tstl %d0
571ec: 6600 ff40 bnew 5712e <msdos_long_to_short+0xde>
571f0: 6000 ff5c braw 5714e <msdos_long_to_short+0xfe>
#endif
if ((type == MSDOS_NAME_INVALID) || (type == MSDOS_NAME_LONG))
return type;
if (dot_at >= 0)
571f4: 72ff moveq #-1,%d1
571f6: b284 cmpl %d4,%d1
571f8: 6600 ff34 bnew 5712e <msdos_long_to_short+0xde>
return MSDOS_NAME_LONG;
}
}
else
{
if (count == 8 && !is_dot)
571fc: 7008 moveq #8,%d0
571fe: b087 cmpl %d7,%d0
57200: 673a beqs 5723c <msdos_long_to_short+0x1ec> <== NEVER TAKEN
#endif
return MSDOS_NAME_LONG;
}
}
if (is_dot)
57202: 3009 movew %a1,%d0
57204: 4a00 tstb %d0
57206: 679e beqs 571a6 <msdos_long_to_short+0x156>
57208: 2807 movel %d7,%d4
else if ((*name >= 'A') && (*name <= 'Z'))
uppercase = true;
else if ((*name >= 'a') && (*name <= 'z'))
lowercase = true;
count++;
5720a: 5287 addql #1,%d7
bool lowercase = false;
bool uppercase = false;
int dot_at = -1;
int count = 0;
while (*name && (count < name_len))
5720c: 1c1a moveb %a2@+,%d6
5720e: 66c6 bnes 571d6 <msdos_long_to_short+0x186> <== ALWAYS TAKEN
count++;
name++;
}
if (lowercase && uppercase)
57210: 4a2e ffff tstb %fp@(-1)
57214: 6738 beqs 5724e <msdos_long_to_short+0x1fe> <== NEVER TAKEN
printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_INVALID;
}
msdos_filename_unix2dos (lfn, lfn_len, sfn);
57216: 2f2e 0010 movel %fp@(16),%sp@-
}
#if MSDOS_NAME_TYPE_PRINT
printf ("MSDOS_NAME_TYPE: SHORT[1]\n");
#endif
return MSDOS_NAME_SHORT;
5721a: 4a05 tstb %d5
5721c: 56c3 sne %d3
printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_INVALID;
}
msdos_filename_unix2dos (lfn, lfn_len, sfn);
5721e: 2f02 movel %d2,%sp@-
}
#if MSDOS_NAME_TYPE_PRINT
printf ("MSDOS_NAME_TYPE: SHORT[1]\n");
#endif
return MSDOS_NAME_SHORT;
57220: 7801 moveq #1,%d4
57222: 49c3 extbl %d3
57224: 9883 subl %d3,%d4
57226: 2604 movel %d4,%d3
printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_INVALID;
}
msdos_filename_unix2dos (lfn, lfn_len, sfn);
57228: 2f0c movel %a4,%sp@-
5722a: 4eb9 0005 9a20 jsr 59a20 <msdos_filename_unix2dos>
#if MSDOS_L2S_PRINT
printf ("MSDOS_L2S: TYPE:%d lfn:'%s' SFN:'%s'\n", type, lfn, sfn);
#endif
return type;
57230: 4fef 000c lea %sp@(12),%sp
57234: 6000 ff0c braw 57142 <msdos_long_to_short+0xf2>
}
if (is_dot)
dot_at = count;
else if ((*name >= 'A') && (*name <= 'Z'))
uppercase = true;
57238: 7a01 moveq #1,%d5 <== NOT EXECUTED
5723a: 6094 bras 571d0 <msdos_long_to_short+0x180> <== NOT EXECUTED
return MSDOS_NAME_LONG;
}
}
else
{
if (count == 8 && !is_dot)
5723c: 3209 movew %a1,%d1 <== NOT EXECUTED
5723e: 4a01 tstb %d1 <== NOT EXECUTED
57240: 6700 feec beqw 5712e <msdos_long_to_short+0xde> <== NOT EXECUTED
57244: 7808 moveq #8,%d4 <== NOT EXECUTED
57246: 6088 bras 571d0 <msdos_long_to_short+0x180> <== NOT EXECUTED
*/
for (i = 0; i < lfn_len; i++)
if ((lfn[i] != ' ') && (lfn[i] != '.'))
break;
if (i == lfn_len)
57248: 4a82 tstl %d2 <== NOT EXECUTED
5724a: 6700 fe58 beqw 570a4 <msdos_long_to_short+0x54> <== NOT EXECUTED
printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_INVALID;
}
msdos_filename_unix2dos (lfn, lfn_len, sfn);
5724e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
}
#if MSDOS_NAME_TYPE_PRINT
printf ("MSDOS_NAME_TYPE: SHORT[1]\n");
#endif
return MSDOS_NAME_SHORT;
57252: 7601 moveq #1,%d3 <== NOT EXECUTED
printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif
return MSDOS_NAME_INVALID;
}
msdos_filename_unix2dos (lfn, lfn_len, sfn);
57254: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57256: 2f0c movel %a4,%sp@- <== NOT EXECUTED
57258: 4eb9 0005 9a20 jsr 59a20 <msdos_filename_unix2dos> <== NOT EXECUTED
#if MSDOS_L2S_PRINT
printf ("MSDOS_L2S: TYPE:%d lfn:'%s' SFN:'%s'\n", type, lfn, sfn);
#endif
return type;
5725e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
57262: 6000 fede braw 57142 <msdos_long_to_short+0xf2> <== NOT EXECUTED
0004e354 <msdos_mknod>:
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
4e354: 4e56 0000 linkw %fp,#0
4e358: 202e 0014 movel %fp@(20),%d0
msdos_node_type_t type = 0;
/*
* Figure out what type of msdos node this is.
*/
if (S_ISDIR(mode))
4e35c: 2200 movel %d0,%d1
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
4e35e: 2f03 movel %d3,%sp@-
4e360: 206e 0008 moveal %fp@(8),%a0
4e364: 2f02 movel %d2,%sp@-
4e366: 226e 000c moveal %fp@(12),%a1
msdos_node_type_t type = 0;
/*
* Figure out what type of msdos node this is.
*/
if (S_ISDIR(mode))
4e36a: 0281 0000 f000 andil #61440,%d1
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
4e370: 242e 0010 movel %fp@(16),%d2
msdos_node_type_t type = 0;
/*
* Figure out what type of msdos node this is.
*/
if (S_ISDIR(mode))
4e374: 0c81 0000 4000 cmpil #16384,%d1
4e37a: 6732 beqs 4e3ae <msdos_mknod+0x5a> <== NEVER TAKEN
{
type = MSDOS_DIRECTORY;
}
else if (S_ISREG(mode))
{
type = MSDOS_REGULAR_FILE;
4e37c: 7604 moveq #4,%d3
*/
if (S_ISDIR(mode))
{
type = MSDOS_DIRECTORY;
}
else if (S_ISREG(mode))
4e37e: 0c81 0000 8000 cmpil #32768,%d1
4e384: 6652 bnes 4e3d8 <msdos_mknod+0x84> <== NEVER TAKEN
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
4e386: 2d42 0014 movel %d2,%fp@(20)
return rc;
}
4e38a: 242e fff8 movel %fp@(-8),%d2
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
4e38e: 2d43 000c movel %d3,%fp@(12)
return rc;
}
4e392: 262e fffc movel %fp@(-4),%d3
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
4e396: 42ae 001c clrl %fp@(28)
4e39a: 2d40 0018 movel %d0,%fp@(24)
4e39e: 2d49 0010 movel %a1,%fp@(16)
4e3a2: 2d48 0008 movel %a0,%fp@(8)
return rc;
}
4e3a6: 4e5e unlk %fp
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
4e3a8: 4ef9 0005 6aac jmp 56aac <msdos_creat_node>
/*
* Figure out what type of msdos node this is.
*/
if (S_ISDIR(mode))
{
type = MSDOS_DIRECTORY;
4e3ae: 4283 clrl %d3 <== NOT EXECUTED
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
4e3b0: 2d42 0014 movel %d2,%fp@(20) <== NOT EXECUTED
return rc;
}
4e3b4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
4e3b8: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
return rc;
}
4e3bc: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
4e3c0: 42ae 001c clrl %fp@(28) <== NOT EXECUTED
4e3c4: 2d40 0018 movel %d0,%fp@(24) <== NOT EXECUTED
4e3c8: 2d49 0010 movel %a1,%fp@(16) <== NOT EXECUTED
4e3cc: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
return rc;
}
4e3d0: 4e5e unlk %fp <== NOT EXECUTED
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
4e3d2: 4ef9 0005 6aac jmp 56aac <msdos_creat_node> <== NOT EXECUTED
else if (S_ISREG(mode))
{
type = MSDOS_REGULAR_FILE;
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
4e3d8: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
return rc;
}
4e3de: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
else if (S_ISREG(mode))
{
type = MSDOS_REGULAR_FILE;
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
4e3e2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e3e4: 7016 moveq #22,%d0 <== NOT EXECUTED
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
return rc;
}
4e3e6: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4e3ea: 4e5e unlk %fp <== NOT EXECUTED
else if (S_ISREG(mode))
{
type = MSDOS_REGULAR_FILE;
}
else
rtems_set_errno_and_return_minus_one(EINVAL);
4e3ec: 2080 movel %d0,%a0@ <== NOT EXECUTED
/* Create an MSDOS node */
rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
return rc;
}
4e3ee: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
0004e408 <msdos_rename>:
const rtems_filesystem_location_info_t *old_loc,
const rtems_filesystem_location_info_t *new_parent_loc,
const char *new_name,
size_t new_namelen
)
{
4e408: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4e40c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e40e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4e412: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int rc = RC_OK;
fat_file_fd_t *old_fat_fd = old_loc->node_access;
4e414: 242a 0008 movel %a2@(8),%d2 <== NOT EXECUTED
/*
* create new directory entry as "hard link", copying relevant info from
* existing file
*/
rc = msdos_creat_node(new_parent_loc,
4e418: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e41a: 2f3c 0000 8000 movel #32768,%sp@- <== NOT EXECUTED
4e420: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
4e424: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4e428: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4e42c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4e430: 4eb9 0005 6aac jsr 56aac <msdos_creat_node> <== NOT EXECUTED
MSDOS_HARD_LINK,new_name,new_namelen,S_IFREG,
old_fat_fd);
if (rc != RC_OK)
4e436: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4e43a: 4a80 tstl %d0 <== NOT EXECUTED
4e43c: 670c beqs 4e44a <msdos_rename+0x42> <== NOT EXECUTED
rc = msdos_set_first_char4file_name(old_loc->mt_entry,
&old_fat_fd->dir_pos,
MSDOS_THIS_DIR_ENTRY_EMPTY);
return rc;
}
4e43e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4e442: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4e446: 4e5e unlk %fp <== NOT EXECUTED
4e448: 4e75 rts <== NOT EXECUTED
}
/*
* mark file removed
*/
rc = msdos_set_first_char4file_name(old_loc->mt_entry,
4e44a: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
4e450: 103c ffe5 moveb #-27,%d0 <== NOT EXECUTED
4e454: 2d6a 0014 0008 movel %a2@(20),%fp@(8) <== NOT EXECUTED
&old_fat_fd->dir_pos,
MSDOS_THIS_DIR_ENTRY_EMPTY);
return rc;
}
4e45a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
/*
* mark file removed
*/
rc = msdos_set_first_char4file_name(old_loc->mt_entry,
4e45e: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED
&old_fat_fd->dir_pos,
MSDOS_THIS_DIR_ENTRY_EMPTY);
return rc;
}
4e462: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
}
/*
* mark file removed
*/
rc = msdos_set_first_char4file_name(old_loc->mt_entry,
4e466: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
&old_fat_fd->dir_pos,
MSDOS_THIS_DIR_ENTRY_EMPTY);
return rc;
}
4e46a: 4e5e unlk %fp <== NOT EXECUTED
}
/*
* mark file removed
*/
rc = msdos_set_first_char4file_name(old_loc->mt_entry,
4e46c: 4ef9 0005 7558 jmp 57558 <msdos_set_first_char4file_name> <== NOT EXECUTED
...
0004e474 <msdos_rmnod>:
#include "msdos.h"
int
msdos_rmnod(const rtems_filesystem_location_info_t *parent_pathloc,
const rtems_filesystem_location_info_t *pathloc)
{
4e474: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4e478: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4e47c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
int rc = RC_OK;
msdos_fs_info_t *fs_info = pathloc->mt_entry->fs_info;
4e480: 206b 0014 moveal %a3@(20),%a0 <== NOT EXECUTED
fat_file_fd_t *fat_fd = pathloc->node_access;
4e484: 246b 0008 moveal %a3@(8),%a2 <== NOT EXECUTED
int
msdos_rmnod(const rtems_filesystem_location_info_t *parent_pathloc,
const rtems_filesystem_location_info_t *pathloc)
{
int rc = RC_OK;
msdos_fs_info_t *fs_info = pathloc->mt_entry->fs_info;
4e488: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
fat_file_fd_t *fat_fd = pathloc->node_access;
if (fat_fd->fat_file_type == MSDOS_DIRECTORY)
4e48c: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4e490: 6642 bnes 4e4d4 <msdos_rmnod+0x60> <== NOT EXECUTED
{
bool is_empty = false;
4e492: 224e moveal %fp,%a1 <== NOT EXECUTED
4e494: 4221 clrb %a1@- <== NOT EXECUTED
/*
* You cannot remove a node that still has children
*/
rc = msdos_dir_is_empty(pathloc->mt_entry, fat_fd, &is_empty);
4e496: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4e498: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e49a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4e49c: 4eb9 0005 771e jsr 5771e <msdos_dir_is_empty> <== NOT EXECUTED
if (rc != RC_OK)
4e4a2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e4a6: 4a80 tstl %d0 <== NOT EXECUTED
4e4a8: 661c bnes 4e4c6 <msdos_rmnod+0x52> <== NOT EXECUTED
{
return rc;
}
if (!is_empty)
4e4aa: 4a2e ffff tstb %fp@(-1) <== NOT EXECUTED
4e4ae: 675a beqs 4e50a <msdos_rmnod+0x96> <== NOT EXECUTED
/*
* We deny attempts to delete open directory (if directory is current
* directory we assume it is open one)
*/
if (fat_fd->links_num > 1)
4e4b0: 7001 moveq #1,%d0 <== NOT EXECUTED
4e4b2: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED
4e4b6: 6418 bccs 4e4d0 <msdos_rmnod+0x5c> <== NOT EXECUTED
{
rtems_set_errno_and_return_minus_one(EBUSY);
4e4b8: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
4e4be: 7210 moveq #16,%d1 <== NOT EXECUTED
4e4c0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e4c2: 70ff moveq #-1,%d0 <== NOT EXECUTED
4e4c4: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
fat_file_mark_removed(&fs_info->fat, fat_fd);
return rc;
}
4e4c6: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED
4e4cc: 4e5e unlk %fp <== NOT EXECUTED
4e4ce: 4e75 rts <== NOT EXECUTED
4e4d0: 206b 0014 moveal %a3@(20),%a0 <== NOT EXECUTED
* not used - mount() not implemenetd yet.
*/
}
/* mark file removed */
rc = msdos_set_first_char4file_name(pathloc->mt_entry, &fat_fd->dir_pos,
4e4d4: 4878 00e5 pea e5 <DBL_MANT_DIG+0xb0> <== NOT EXECUTED
4e4d8: 486a 0020 pea %a2@(32) <== NOT EXECUTED
4e4dc: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4e4de: 4eb9 0005 7558 jsr 57558 <msdos_set_first_char4file_name> <== NOT EXECUTED
MSDOS_THIS_DIR_ENTRY_EMPTY);
if (rc != RC_OK)
4e4e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e4e8: 4a80 tstl %d0 <== NOT EXECUTED
4e4ea: 66da bnes 4e4c6 <msdos_rmnod+0x52> <== NOT EXECUTED
{
return rc;
}
fat_file_mark_removed(&fs_info->fat, fat_fd);
4e4ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e4ee: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
4e4f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e4f4: 4eb9 0005 2582 jsr 52582 <fat_file_mark_removed> <== NOT EXECUTED
return rc;
4e4fa: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
4e4fe: 508f addql #8,%sp <== NOT EXECUTED
}
4e500: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED
4e506: 4e5e unlk %fp <== NOT EXECUTED
4e508: 4e75 rts <== NOT EXECUTED
return rc;
}
if (!is_empty)
{
rtems_set_errno_and_return_minus_one(ENOTEMPTY);
4e50a: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
4e510: 745a moveq #90,%d2 <== NOT EXECUTED
4e512: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e514: 70ff moveq #-1,%d0 <== NOT EXECUTED
4e516: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
fat_file_mark_removed(&fs_info->fat, fat_fd);
return rc;
}
4e518: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED
4e51e: 4e5e unlk %fp <== NOT EXECUTED
...
00057266 <msdos_set_dir_wrt_time_and_date>:
int
msdos_set_dir_wrt_time_and_date(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd
)
{
57266: 4e56 ffe0 linkw %fp,#-32
ssize_t ret1 = 0, ret2 = 0, ret3 = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
5726a: 206e 0008 moveal %fp@(8),%a0
int
msdos_set_dir_wrt_time_and_date(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd
)
{
5726e: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
uint16_t time_val;
uint16_t date;
uint32_t sec = 0;
uint32_t byte = 0;
msdos_date_unix2dos(fat_fd->mtime, &date, &time_val);
57272: 240e movel %fp,%d2
57274: 5982 subql #4,%d2
57276: 260e movel %fp,%d3
57278: 5583 subql #2,%d3
5727a: 2f02 movel %d2,%sp@-
int
msdos_set_dir_wrt_time_and_date(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd
)
{
5727c: 266e 000c moveal %fp@(12),%a3
uint16_t time_val;
uint16_t date;
uint32_t sec = 0;
uint32_t byte = 0;
msdos_date_unix2dos(fat_fd->mtime, &date, &time_val);
57280: 2f03 movel %d3,%sp@-
57282: 2f2b 003e movel %a3@(62),%sp@-
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd
)
{
ssize_t ret1 = 0, ret2 = 0, ret3 = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
57286: 2468 0008 moveal %a0@(8),%a2
uint16_t time_val;
uint16_t date;
uint32_t sec = 0;
uint32_t byte = 0;
msdos_date_unix2dos(fat_fd->mtime, &date, &time_val);
5728a: 4eb9 0005 97bc jsr 597bc <msdos_date_unix2dos>
/*
* calculate input for fat_sector_write: convert (cluster num, offset) to
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
57290: 222b 0020 movel %a3@(32),%d1
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
57294: 4fef 000c lea %sp@(12),%sp
57298: 6600 00ae bnew 57348 <msdos_set_dir_wrt_time_and_date+0xe2>
5729c: 7803 moveq #3,%d4
5729e: 102a 000e moveb %a2@(14),%d0
572a2: c084 andl %d4,%d0
572a4: 4a00 tstb %d0
572a6: 6700 00a0 beqw 57348 <msdos_set_dir_wrt_time_and_date+0xe2>
return fs_info->vol.rdir_loc;
572aa: 222a 001e movel %a2@(30),%d1
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
572ae: 4284 clrl %d4
572b0: 182a 0002 moveb %a2@(2),%d4
/* byte points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
572b4: 4285 clrl %d5
time_val = CT_LE_W(time_val);
ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
572b6: 49f9 0005 2a5a lea 52a5a <fat_sector_write>,%a4
/*
* calculate input for fat_sector_write: convert (cluster num, offset) to
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
572bc: 202b 0024 movel %a3@(36),%d0
/* byte points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
572c0: 3a12 movew %a2@,%d5
time_val = CT_LE_W(time_val);
ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
572c2: 2f02 movel %d2,%sp@-
/*
* calculate input for fat_sector_write: convert (cluster num, offset) to
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
572c4: 2400 movel %d0,%d2
/* byte points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
572c6: 2645 moveal %d5,%a3
/*
* calculate input for fat_sector_write: convert (cluster num, offset) to
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
572c8: e8aa lsrl %d4,%d2
572ca: d481 addl %d1,%d2
/* byte points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
572cc: 538b subql #1,%a3
572ce: 220b movel %a3,%d1
time_val = CT_LE_W(time_val);
ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
572d0: 4878 0002 pea 2 <DOUBLE_FLOAT>
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
/* byte points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
572d4: c280 andl %d0,%d1
572d6: 4280 clrl %d0
572d8: 2641 moveal %d1,%a3
time_val = CT_LE_W(time_val);
ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
572da: 486b 0016 pea %a3@(22)
572de: 302e fffc movew %fp@(-4),%d0
572e2: 2f02 movel %d2,%sp@-
572e4: 2200 movel %d0,%d1
572e6: e089 lsrl #8,%d1
572e8: e188 lsll #8,%d0
572ea: 2f0a movel %a2,%sp@-
572ec: 8081 orl %d1,%d0
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
/* byte points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
time_val = CT_LE_W(time_val);
572ee: 3d40 fffc movew %d0,%fp@(-4)
ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
572f2: 4e94 jsr %a4@
572f4: 382e fffe movew %fp@(-2),%d4
572f8: 2a00 movel %d0,%d5
572fa: 2204 movel %d4,%d1
572fc: e08c lsrl #8,%d4
2, (char *)(&time_val));
date = CT_LE_W(date);
ret2 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WDATE_OFFSET,
572fe: 2f03 movel %d3,%sp@-
57300: 4878 0002 pea 2 <DOUBLE_FLOAT>
57304: 486b 0018 pea %a3@(24)
57308: e189 lsll #8,%d1
5730a: 2f02 movel %d2,%sp@-
5730c: 8284 orl %d4,%d1
5730e: 2f0a movel %a2,%sp@-
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
time_val = CT_LE_W(time_val);
ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
2, (char *)(&time_val));
date = CT_LE_W(date);
57310: 3d41 fffe movew %d1,%fp@(-2)
ret2 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WDATE_OFFSET,
57314: 4e94 jsr %a4@
2, (char *)(&date));
ret3 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_ADATE_OFFSET,
57316: 4fef 0024 lea %sp@(36),%sp
time_val = CT_LE_W(time_val);
ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
2, (char *)(&time_val));
date = CT_LE_W(date);
ret2 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WDATE_OFFSET,
5731a: 2800 movel %d0,%d4
2, (char *)(&date));
ret3 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_ADATE_OFFSET,
5731c: 2e83 movel %d3,%sp@
5731e: 4878 0002 pea 2 <DOUBLE_FLOAT>
57322: 486b 0012 pea %a3@(18)
57326: 2f02 movel %d2,%sp@-
57328: 2f0a movel %a2,%sp@-
5732a: 4e94 jsr %a4@
2, (char *)(&date));
if ( (ret1 < 0) || (ret2 < 0) || (ret3 < 0) )
5732c: 4fef 0014 lea %sp@(20),%sp
57330: 4a85 tstl %d5
57332: 6d26 blts 5735a <msdos_set_dir_wrt_time_and_date+0xf4><== NEVER TAKEN
57334: 4a84 tstl %d4
57336: 6d22 blts 5735a <msdos_set_dir_wrt_time_and_date+0xf4><== NEVER TAKEN
57338: 4a80 tstl %d0
5733a: 6d1e blts 5735a <msdos_set_dir_wrt_time_and_date+0xf4><== NEVER TAKEN
return -1;
return RC_OK;
5733c: 4280 clrl %d0
}
5733e: 4cee 1c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a4
57344: 4e5e unlk %fp
57346: 4e75 rts
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
57348: 4280 clrl %d0 <== NOT EXECUTED
5734a: 102a 0005 moveb %a2@(5),%d0 <== NOT EXECUTED
5734e: 5581 subql #2,%d1 <== NOT EXECUTED
57350: e1a9 lsll %d0,%d1 <== NOT EXECUTED
57352: d2aa 0030 addl %a2@(48),%d1 <== NOT EXECUTED
57356: 6000 ff56 braw 572ae <msdos_set_dir_wrt_time_and_date+0x48><== NOT EXECUTED
2, (char *)(&date));
ret3 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_ADATE_OFFSET,
2, (char *)(&date));
if ( (ret1 < 0) || (ret2 < 0) || (ret3 < 0) )
return -1;
5735a: 70ff moveq #-1,%d0 <== NOT EXECUTED
return RC_OK;
}
5735c: 4cee 1c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a4 <== NOT EXECUTED
57362: 4e5e unlk %fp <== NOT EXECUTED
0005743e <msdos_set_file_size>:
int
msdos_set_file_size(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd
)
{
5743e: 4e56 ffe4 linkw %fp,#-28
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
57442: 206e 0008 moveal %fp@(8),%a0
int
msdos_set_file_size(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd
)
{
57446: 48d7 047c moveml %d2-%d6/%a2,%sp@
5744a: 246e 000c moveal %fp@(12),%a2
ssize_t ret = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
5744e: 2068 0008 moveal %a0@(8),%a0
uint32_t le_new_length = 0;
uint32_t sec = 0;
uint32_t byte = 0;
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
57452: 222a 0020 movel %a2@(32),%d1
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
57456: 6600 0082 bnew 574da <msdos_set_file_size+0x9c>
5745a: 7403 moveq #3,%d2
5745c: 1028 000e moveb %a0@(14),%d0
57460: c082 andl %d2,%d0
57462: 4a00 tstb %d0
57464: 6774 beqs 574da <msdos_set_file_size+0x9c> <== NEVER TAKEN
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
le_new_length = CT_LE_L((fat_fd->fat_file_size));
57466: 242a 0018 movel %a2@(24),%d2
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
5746a: 7818 moveq #24,%d4
5746c: 2a02 movel %d2,%d5
byte3 = (value >> 16) & 0xff;
5746e: 2602 movel %d2,%d3
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
57470: 2002 movel %d2,%d0
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
57472: e8ad lsrl %d4,%d5
byte3 = (value >> 16) & 0xff;
57474: e08b lsrl #8,%d3
uint32_t le_new_length = 0;
uint32_t sec = 0;
uint32_t byte = 0;
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
57476: 4286 clrl %d6
57478: 1c28 0002 moveb %a0@(2),%d6
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
5747c: 224e moveal %fp,%a1
5747e: e9a8 lsll %d4,%d0
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
57480: e18a lsll #8,%d2
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
57482: 0283 0000 ff00 andil #65280,%d3
57488: 8085 orl %d5,%d0
byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
5748a: 4285 clrl %d5
5748c: 0282 00ff 0000 andil #16711680,%d2
57492: 3a10 movew %a0@,%d5
uint32_t le_new_length = 0;
uint32_t sec = 0;
uint32_t byte = 0;
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
57494: 282a 0024 movel %a2@(36),%d4
57498: 8082 orl %d2,%d0
return fs_info->vol.rdir_loc;
5749a: 2228 001e movel %a0@(30),%d1
5749e: 2404 movel %d4,%d2
574a0: ecaa lsrl %d6,%d2
574a2: 8083 orl %d3,%d0
574a4: 2300 movel %d0,%a1@-
byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
574a6: 2005 movel %d5,%d0
574a8: 5380 subql #1,%d0
le_new_length = CT_LE_L((fat_fd->fat_file_size));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_SIZE_OFFSET, 4,
574aa: 2f09 movel %a1,%sp@-
574ac: 4878 0004 pea 4 <CONTEXT_ARG>
uint32_t sec = 0;
uint32_t byte = 0;
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
574b0: c084 andl %d4,%d0
le_new_length = CT_LE_L((fat_fd->fat_file_size));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_SIZE_OFFSET, 4,
574b2: 2240 moveal %d0,%a1
574b4: 4869 001c pea %a1@(28)
574b8: 2241 moveal %d1,%a1
574ba: 4871 2800 pea %a1@(00000000,%d2:l)
574be: 2f08 movel %a0,%sp@-
574c0: 4eb9 0005 2a5a jsr 52a5a <fat_sector_write>
(char *)(&le_new_length));
if ( ret < 0 )
574c6: 4fef 0014 lea %sp@(20),%sp
return -1;
574ca: 4a80 tstl %d0
574cc: 5dc0 slt %d0
return RC_OK;
}
574ce: 4cee 047c ffe4 moveml %fp@(-28),%d2-%d6/%a2
574d4: 4e5e unlk %fp
le_new_length = CT_LE_L((fat_fd->fat_file_size));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_SIZE_OFFSET, 4,
(char *)(&le_new_length));
if ( ret < 0 )
return -1;
574d6: 49c0 extbl %d0
return RC_OK;
}
574d8: 4e75 rts
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
574da: 4280 clrl %d0 <== NOT EXECUTED
574dc: 1028 0005 moveb %a0@(5),%d0 <== NOT EXECUTED
574e0: 5581 subql #2,%d1 <== NOT EXECUTED
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
574e2: 7818 moveq #24,%d4 <== NOT EXECUTED
uint32_t le_new_length = 0;
uint32_t sec = 0;
uint32_t byte = 0;
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
574e4: 4286 clrl %d6 <== NOT EXECUTED
574e6: 1c28 0002 moveb %a0@(2),%d6 <== NOT EXECUTED
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
574ea: 224e moveal %fp,%a1 <== NOT EXECUTED
byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
le_new_length = CT_LE_L((fat_fd->fat_file_size));
574ec: 242a 0018 movel %a2@(24),%d2 <== NOT EXECUTED
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
574f0: 2a02 movel %d2,%d5 <== NOT EXECUTED
byte3 = (value >> 16) & 0xff;
574f2: 2602 movel %d2,%d3 <== NOT EXECUTED
uint32_t value
)
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
574f4: e8ad lsrl %d4,%d5 <== NOT EXECUTED
byte3 = (value >> 16) & 0xff;
574f6: e08b lsrl #8,%d3 <== NOT EXECUTED
574f8: e1a9 lsll %d0,%d1 <== NOT EXECUTED
byte2 = (value >> 8) & 0xff;
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
574fa: 2002 movel %d2,%d0 <== NOT EXECUTED
{
uint32_t byte1, byte2, byte3, byte4, swapped;
byte4 = (value >> 24) & 0xff;
byte3 = (value >> 16) & 0xff;
byte2 = (value >> 8) & 0xff;
574fc: e18a lsll #8,%d2 <== NOT EXECUTED
byte1 = value & 0xff;
swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;
574fe: e9a8 lsll %d4,%d0 <== NOT EXECUTED
57500: 0283 0000 ff00 andil #65280,%d3 <== NOT EXECUTED
57506: 0282 00ff 0000 andil #16711680,%d2 <== NOT EXECUTED
5750c: d2a8 0030 addl %a0@(48),%d1 <== NOT EXECUTED
57510: 8085 orl %d5,%d0 <== NOT EXECUTED
uint32_t sec = 0;
uint32_t byte = 0;
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
57512: 4285 clrl %d5 <== NOT EXECUTED
57514: 8082 orl %d2,%d0 <== NOT EXECUTED
57516: 3a10 movew %a0@,%d5 <== NOT EXECUTED
uint32_t le_new_length = 0;
uint32_t sec = 0;
uint32_t byte = 0;
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
57518: 282a 0024 movel %a2@(36),%d4 <== NOT EXECUTED
5751c: 2404 movel %d4,%d2 <== NOT EXECUTED
5751e: ecaa lsrl %d6,%d2 <== NOT EXECUTED
57520: 8083 orl %d3,%d0 <== NOT EXECUTED
57522: 2300 movel %d0,%a1@- <== NOT EXECUTED
byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
57524: 2005 movel %d5,%d0 <== NOT EXECUTED
57526: 5380 subql #1,%d0 <== NOT EXECUTED
le_new_length = CT_LE_L((fat_fd->fat_file_size));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_SIZE_OFFSET, 4,
57528: 2f09 movel %a1,%sp@- <== NOT EXECUTED
5752a: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
uint32_t sec = 0;
uint32_t byte = 0;
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
5752e: c084 andl %d4,%d0 <== NOT EXECUTED
le_new_length = CT_LE_L((fat_fd->fat_file_size));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_SIZE_OFFSET, 4,
57530: 2240 moveal %d0,%a1 <== NOT EXECUTED
57532: 4869 001c pea %a1@(28) <== NOT EXECUTED
57536: 2241 moveal %d1,%a1 <== NOT EXECUTED
57538: 4871 2800 pea %a1@(00000000,%d2:l) <== NOT EXECUTED
5753c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5753e: 4eb9 0005 2a5a jsr 52a5a <fat_sector_write> <== NOT EXECUTED
(char *)(&le_new_length));
if ( ret < 0 )
57544: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
return -1;
57548: 4a80 tstl %d0 <== NOT EXECUTED
5754a: 5dc0 slt %d0 <== NOT EXECUTED
return RC_OK;
}
5754c: 4cee 047c ffe4 moveml %fp@(-28),%d2-%d6/%a2 <== NOT EXECUTED
57552: 4e5e unlk %fp <== NOT EXECUTED
le_new_length = CT_LE_L((fat_fd->fat_file_size));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_SIZE_OFFSET, 4,
(char *)(&le_new_length));
if ( ret < 0 )
return -1;
57554: 49c0 extbl %d0 <== NOT EXECUTED
return RC_OK;
}
00057558 <msdos_set_first_char4file_name>:
msdos_set_first_char4file_name(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_dir_pos_t *dir_pos,
unsigned char fchar
)
{
57558: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED
5755c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
57560: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
ssize_t ret;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
57564: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
uint32_t dir_block_size;
fat_pos_t start = dir_pos->lname;
fat_pos_t end = dir_pos->sname;
57568: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
)
{
ssize_t ret;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t dir_block_size;
fat_pos_t start = dir_pos->lname;
5756c: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED
57570: 2a28 000c movel %a0@(12),%d5 <== NOT EXECUTED
fat_pos_t end = dir_pos->sname;
57574: 2410 movel %a0@,%d2 <== NOT EXECUTED
fat_dir_pos_t *dir_pos,
unsigned char fchar
)
{
ssize_t ret;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
57576: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED
uint32_t dir_block_size;
fat_pos_t start = dir_pos->lname;
fat_pos_t end = dir_pos->sname;
5757a: 2d41 fff2 movel %d1,%fp@(-14) <== NOT EXECUTED
msdos_set_first_char4file_name(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_dir_pos_t *dir_pos,
unsigned char fchar
)
{
5757e: 1d6e 0013 fff6 moveb %fp@(19),%fp@(-10) <== NOT EXECUTED
ssize_t ret;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t dir_block_size;
fat_pos_t start = dir_pos->lname;
57584: 2d44 fff8 movel %d4,%fp@(-8) <== NOT EXECUTED
57588: 2d45 fffc movel %d5,%fp@(-4) <== NOT EXECUTED
fat_pos_t end = dir_pos->sname;
if ((end.cln == fs_info->fat.vol.rdir_cl) &&
5758c: b4aa 0038 cmpl %a2@(56),%d2 <== NOT EXECUTED
57590: 6700 016a beqw 576fc <msdos_set_first_char4file_name+0x1a4><== NOT EXECUTED
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
dir_block_size = fs_info->fat.vol.rdir_size;
else
dir_block_size = fs_info->fat.vol.bpc;
57594: 4284 clrl %d4 <== NOT EXECUTED
if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)
57596: 7aff moveq #-1,%d5 <== NOT EXECUTED
if ((end.cln == fs_info->fat.vol.rdir_cl) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
dir_block_size = fs_info->fat.vol.rdir_size;
else
dir_block_size = fs_info->fat.vol.bpc;
57598: 382a 0006 movew %a2@(6),%d4 <== NOT EXECUTED
5759c: 2d44 ffee movel %d4,%fp@(-18) <== NOT EXECUTED
if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)
575a0: baa8 0008 cmpl %a0@(8),%d5 <== NOT EXECUTED
575a4: 6700 0122 beqw 576c8 <msdos_set_first_char4file_name+0x170><== NOT EXECUTED
575a8: 260e movel %fp,%d3 <== NOT EXECUTED
575aa: 0683 ffff fff6 addil #-10,%d3 <== NOT EXECUTED
575b0: 47f9 0005 2a5a lea 52a5a <fat_sector_write>,%a3 <== NOT EXECUTED
{
int rc;
if ((end.cln == fs_info->fat.vol.rdir_cl) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
break;
rc = fat_get_fat_cluster(&fs_info->fat, start.cln, &start.cln);
575b6: 4bee fff8 lea %fp@(-8),%a5 <== NOT EXECUTED
575ba: 49f9 0005 8ac0 lea 58ac0 <fat_get_fat_cluster>,%a4 <== NOT EXECUTED
575c0: 1c2a 0002 moveb %a2@(2),%d6 <== NOT EXECUTED
575c4: 3e12 movew %a2@,%d7 <== NOT EXECUTED
575c6: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
575ca: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
575ce: 2008 movel %a0,%d0 <== NOT EXECUTED
575d0: 5580 subql #2,%d0 <== NOT EXECUTED
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
575d2: 4a88 tstl %a0 <== NOT EXECUTED
575d4: 6666 bnes 5763c <msdos_set_first_char4file_name+0xe4><== NOT EXECUTED
575d6: 7803 moveq #3,%d4 <== NOT EXECUTED
575d8: 1a2a 000e moveb %a2@(14),%d5 <== NOT EXECUTED
575dc: ca84 andl %d4,%d5 <== NOT EXECUTED
575de: 4a05 tstb %d5 <== NOT EXECUTED
575e0: 675a beqs 5763c <msdos_set_first_char4file_name+0xe4><== NOT EXECUTED
return fs_info->vol.rdir_loc;
575e2: 202a 001e movel %a2@(30),%d0 <== NOT EXECUTED
{
uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
(start.ofs >> fs_info->fat.vol.sec_log2));
uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
575e6: 2040 moveal %d0,%a0 <== NOT EXECUTED
*/
while (true)
{
uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
(start.ofs >> fs_info->fat.vol.sec_log2));
uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
575e8: 0287 0000 ffff andil #65535,%d7 <== NOT EXECUTED
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
575ee: 2f03 movel %d3,%sp@- <== NOT EXECUTED
575f0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
*/
while (true)
{
uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
(start.ofs >> fs_info->fat.vol.sec_log2));
uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
575f4: 2a07 movel %d7,%d5 <== NOT EXECUTED
575f6: 5385 subql #1,%d5 <== NOT EXECUTED
* interface.
*/
while (true)
{
uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
(start.ofs >> fs_info->fat.vol.sec_log2));
575f8: 4287 clrl %d7 <== NOT EXECUTED
575fa: 1e06 moveb %d6,%d7 <== NOT EXECUTED
uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
575fc: ca81 andl %d1,%d5 <== NOT EXECUTED
* interface.
*/
while (true)
{
uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
(start.ofs >> fs_info->fat.vol.sec_log2));
575fe: eea9 lsrl %d7,%d1 <== NOT EXECUTED
uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
57600: 2f05 movel %d5,%sp@- <== NOT EXECUTED
57602: 4870 1800 pea %a0@(00000000,%d1:l) <== NOT EXECUTED
57606: 2f0a movel %a2,%sp@- <== NOT EXECUTED
57608: 4e93 jsr %a3@ <== NOT EXECUTED
1, &fchar);
if (ret < 0)
5760a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5760e: 4a80 tstl %d0 <== NOT EXECUTED
57610: 6d62 blts 57674 <msdos_set_first_char4file_name+0x11c><== NOT EXECUTED
return -1;
if ((start.cln == end.cln) && (start.ofs == end.ofs))
57612: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
57616: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
5761a: b488 cmpl %a0,%d2 <== NOT EXECUTED
5761c: 6762 beqs 57680 <msdos_set_first_char4file_name+0x128><== NOT EXECUTED
break;
start.ofs += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
5761e: 0681 0000 0020 addil #32,%d1 <== NOT EXECUTED
57624: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED
if (start.ofs >= dir_block_size)
57628: b2ae ffee cmpl %fp@(-18),%d1 <== NOT EXECUTED
5762c: 6464 bccs 57692 <msdos_set_first_char4file_name+0x13a><== NOT EXECUTED
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
5762e: 2008 movel %a0,%d0 <== NOT EXECUTED
57630: 5580 subql #2,%d0 <== NOT EXECUTED
57632: 1c2a 0002 moveb %a2@(2),%d6 <== NOT EXECUTED
57636: 3e12 movew %a2@,%d7 <== NOT EXECUTED
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
57638: 4a88 tstl %a0 <== NOT EXECUTED
5763a: 679a beqs 575d6 <msdos_set_first_char4file_name+0x7e><== NOT EXECUTED
return fs_info->vol.rdir_loc;
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
5763c: 4285 clrl %d5 <== NOT EXECUTED
5763e: 1a2a 0005 moveb %a2@(5),%d5 <== NOT EXECUTED
57642: eba8 lsll %d5,%d0 <== NOT EXECUTED
*/
while (true)
{
uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
(start.ofs >> fs_info->fat.vol.sec_log2));
uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
57644: 0287 0000 ffff andil #65535,%d7 <== NOT EXECUTED
5764a: d0aa 0030 addl %a2@(48),%d0 <== NOT EXECUTED
5764e: 2a07 movel %d7,%d5 <== NOT EXECUTED
57650: 5385 subql #1,%d5 <== NOT EXECUTED
* interface.
*/
while (true)
{
uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
(start.ofs >> fs_info->fat.vol.sec_log2));
57652: 4287 clrl %d7 <== NOT EXECUTED
57654: 1e06 moveb %d6,%d7 <== NOT EXECUTED
uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
57656: 2040 moveal %d0,%a0 <== NOT EXECUTED
57658: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5765a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5765e: ca81 andl %d1,%d5 <== NOT EXECUTED
* interface.
*/
while (true)
{
uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
(start.ofs >> fs_info->fat.vol.sec_log2));
57660: eea9 lsrl %d7,%d1 <== NOT EXECUTED
uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
57662: 2f05 movel %d5,%sp@- <== NOT EXECUTED
57664: 4870 1800 pea %a0@(00000000,%d1:l) <== NOT EXECUTED
57668: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5766a: 4e93 jsr %a3@ <== NOT EXECUTED
1, &fchar);
if (ret < 0)
5766c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
57670: 4a80 tstl %d0 <== NOT EXECUTED
57672: 6c9e bges 57612 <msdos_set_first_char4file_name+0xba><== NOT EXECUTED
return -1;
57674: 70ff moveq #-1,%d0 <== NOT EXECUTED
start.ofs = 0;
}
}
return RC_OK;
}
57676: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5767c: 4e5e unlk %fp <== NOT EXECUTED
5767e: 4e75 rts <== NOT EXECUTED
ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
1, &fchar);
if (ret < 0)
return -1;
if ((start.cln == end.cln) && (start.ofs == end.ofs))
57680: b2ae fff2 cmpl %fp@(-14),%d1 <== NOT EXECUTED
57684: 6698 bnes 5761e <msdos_set_first_char4file_name+0xc6><== NOT EXECUTED
return rc;
start.ofs = 0;
}
}
return RC_OK;
57686: 4280 clrl %d0 <== NOT EXECUTED
}
57688: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5768e: 4e5e unlk %fp <== NOT EXECUTED
57690: 4e75 rts <== NOT EXECUTED
start.ofs += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
if (start.ofs >= dir_block_size)
{
int rc;
if ((end.cln == fs_info->fat.vol.rdir_cl) &&
57692: b4aa 0038 cmpl %a2@(56),%d2 <== NOT EXECUTED
57696: 660c bnes 576a4 <msdos_set_first_char4file_name+0x14c><== NOT EXECUTED
57698: 7203 moveq #3,%d1 <== NOT EXECUTED
5769a: 102a 000e moveb %a2@(14),%d0 <== NOT EXECUTED
5769e: c081 andl %d1,%d0 <== NOT EXECUTED
576a0: 4a00 tstb %d0 <== NOT EXECUTED
576a2: 66e2 bnes 57686 <msdos_set_first_char4file_name+0x12e><== NOT EXECUTED
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
break;
rc = fat_get_fat_cluster(&fs_info->fat, start.cln, &start.cln);
576a4: 2f0d movel %a5,%sp@- <== NOT EXECUTED
576a6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
576a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
576aa: 4e94 jsr %a4@ <== NOT EXECUTED
if ( rc != RC_OK )
576ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
576b0: 4a80 tstl %d0 <== NOT EXECUTED
576b2: 66c2 bnes 57676 <msdos_set_first_char4file_name+0x11e><== NOT EXECUTED
return rc;
start.ofs = 0;
576b4: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
576b8: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
576bc: 4281 clrl %d1 <== NOT EXECUTED
576be: 1c2a 0002 moveb %a2@(2),%d6 <== NOT EXECUTED
576c2: 3e12 movew %a2@,%d7 <== NOT EXECUTED
576c4: 6000 ff08 braw 575ce <msdos_set_first_char4file_name+0x76><== NOT EXECUTED
576c8: 260e movel %fp,%d3 <== NOT EXECUTED
576ca: 0683 ffff fff6 addil #-10,%d3 <== NOT EXECUTED
576d0: 47f9 0005 2a5a lea 52a5a <fat_sector_write>,%a3 <== NOT EXECUTED
{
int rc;
if ((end.cln == fs_info->fat.vol.rdir_cl) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
break;
rc = fat_get_fat_cluster(&fs_info->fat, start.cln, &start.cln);
576d6: 4bee fff8 lea %fp@(-8),%a5 <== NOT EXECUTED
576da: 49f9 0005 8ac0 lea 58ac0 <fat_get_fat_cluster>,%a4 <== NOT EXECUTED
dir_block_size = fs_info->fat.vol.rdir_size;
else
dir_block_size = fs_info->fat.vol.bpc;
if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)
start = dir_pos->sname;
576e0: 2010 movel %a0@,%d0 <== NOT EXECUTED
576e2: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
576e6: 3e12 movew %a2@,%d7 <== NOT EXECUTED
576e8: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
576ec: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED
576f0: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
576f4: 1c2a 0002 moveb %a2@(2),%d6 <== NOT EXECUTED
576f8: 6000 fed0 braw 575ca <msdos_set_first_char4file_name+0x72><== NOT EXECUTED
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t dir_block_size;
fat_pos_t start = dir_pos->lname;
fat_pos_t end = dir_pos->sname;
if ((end.cln == fs_info->fat.vol.rdir_cl) &&
576fc: 7a03 moveq #3,%d5 <== NOT EXECUTED
576fe: 102a 000e moveb %a2@(14),%d0 <== NOT EXECUTED
57702: c085 andl %d5,%d0 <== NOT EXECUTED
57704: 4a00 tstb %d0 <== NOT EXECUTED
57706: 6700 fe8c beqw 57594 <msdos_set_first_char4file_name+0x3c><== NOT EXECUTED
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
dir_block_size = fs_info->fat.vol.rdir_size;
5770a: 222a 0028 movel %a2@(40),%d1 <== NOT EXECUTED
else
dir_block_size = fs_info->fat.vol.bpc;
if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)
5770e: 7aff moveq #-1,%d5 <== NOT EXECUTED
fat_pos_t start = dir_pos->lname;
fat_pos_t end = dir_pos->sname;
if ((end.cln == fs_info->fat.vol.rdir_cl) &&
(fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
dir_block_size = fs_info->fat.vol.rdir_size;
57710: 2d41 ffee movel %d1,%fp@(-18) <== NOT EXECUTED
else
dir_block_size = fs_info->fat.vol.bpc;
if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)
57714: baa8 0008 cmpl %a0@(8),%d5 <== NOT EXECUTED
57718: 6600 fe8e bnew 575a8 <msdos_set_first_char4file_name+0x50><== NOT EXECUTED
5771c: 60aa bras 576c8 <msdos_set_first_char4file_name+0x170><== NOT EXECUTED
00057366 <msdos_set_first_cluster_num>:
int
msdos_set_first_cluster_num(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd
)
{
57366: 4e56 ffe4 linkw %fp,#-28
ssize_t ret1 = 0, ret2 = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t new_cln = fat_fd->cln;
uint16_t le_cl_low = 0;
uint16_t le_cl_hi = 0;
5736a: 4240 clrw %d0
int
msdos_set_first_cluster_num(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd
)
{
5736c: 206e 000c moveal %fp@(12),%a0
ssize_t ret1 = 0, ret2 = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
57370: 226e 0008 moveal %fp@(8),%a1
int
msdos_set_first_cluster_num(
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd
)
{
57374: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
ssize_t ret1 = 0, ret2 = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
uint32_t new_cln = fat_fd->cln;
57378: 2628 001c movel %a0@(28),%d3
rtems_filesystem_mount_table_entry_t *mt_entry,
fat_file_fd_t *fat_fd
)
{
ssize_t ret1 = 0, ret2 = 0;
msdos_fs_info_t *fs_info = mt_entry->fs_info;
5737c: 2469 0008 moveal %a1@(8),%a2
uint32_t new_cln = fat_fd->cln;
uint16_t le_cl_low = 0;
uint16_t le_cl_hi = 0;
57380: 3d40 fffe movew %d0,%fp@(-2)
/*
* calculate input for fat_sector_write: convert (cluster num, offset) to
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
57384: 2228 0020 movel %a0@(32),%d1
fat_cluster_num_to_sector_num(
const fat_fs_info_t *fs_info,
uint32_t cln
)
{
if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
57388: 6600 0096 bnew 57420 <msdos_set_first_cluster_num+0xba>
5738c: 7403 moveq #3,%d2
5738e: 102a 000e moveb %a2@(14),%d0
57392: c082 andl %d2,%d0
57394: 4a00 tstb %d0
57396: 6700 0088 beqw 57420 <msdos_set_first_cluster_num+0xba>
return fs_info->vol.rdir_loc;
5739a: 222a 001e movel %a2@(30),%d1
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
/* byte from points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
5739e: 4282 clrl %d2
/*
* calculate input for fat_sector_write: convert (cluster num, offset) to
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
573a0: 4284 clrl %d4
573a2: 182a 0002 moveb %a2@(2),%d4
/* byte from points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
le_cl_low = CT_LE_W((uint16_t )(new_cln & 0x0000FFFF));
ret1 = fat_sector_write(&fs_info->fat, sec,
573a6: 47f9 0005 2a5a lea 52a5a <fat_sector_write>,%a3
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
/* byte from points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
573ac: 3412 movew %a2@,%d2
/*
* calculate input for fat_sector_write: convert (cluster num, offset) to
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
573ae: 2028 0024 movel %a0@(36),%d0
/* byte from points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
573b2: 5382 subql #1,%d2
le_cl_low = CT_LE_W((uint16_t )(new_cln & 0x0000FFFF));
ret1 = fat_sector_write(&fs_info->fat, sec,
573b4: 486e fffc pea %fp@(-4)
/*
* calculate input for fat_sector_write: convert (cluster num, offset) to
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
573b8: 2a00 movel %d0,%d5
/* byte from points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
le_cl_low = CT_LE_W((uint16_t )(new_cln & 0x0000FFFF));
ret1 = fat_sector_write(&fs_info->fat, sec,
573ba: 4878 0002 pea 2 <DOUBLE_FLOAT>
/*
* calculate input for fat_sector_write: convert (cluster num, offset) to
* (sector num, new offset)
*/
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
573be: e8ad lsrl %d4,%d5
573c0: da81 addl %d1,%d5
/* byte from points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
573c2: c480 andl %d0,%d2
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
573c4: 2003 movel %d3,%d0
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
/* byte from points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
le_cl_low = CT_LE_W((uint16_t )(new_cln & 0x0000FFFF));
ret1 = fat_sector_write(&fs_info->fat, sec,
573c6: 2042 moveal %d2,%a0
573c8: 4868 001a pea %a0@(26)
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
573cc: 0280 0000 ffff andil #65535,%d0
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
/* byte from points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
le_cl_low = CT_LE_W((uint16_t )(new_cln & 0x0000FFFF));
ret1 = fat_sector_write(&fs_info->fat, sec,
573d2: 2f05 movel %d5,%sp@-
573d4: 2800 movel %d0,%d4
573d6: e08c lsrl #8,%d4
573d8: e188 lsll #8,%d0
573da: 2f0a movel %a2,%sp@-
573dc: 8880 orl %d0,%d4
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
573de: 4243 clrw %d3
573e0: 4843 swap %d3
sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
/* byte from points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
le_cl_low = CT_LE_W((uint16_t )(new_cln & 0x0000FFFF));
573e2: 3d44 fffc movew %d4,%fp@(-4)
ret1 = fat_sector_write(&fs_info->fat, sec,
573e6: 4e93 jsr %a3@
byte + MSDOS_FIRST_CLUSTER_LOW_OFFSET, 2,
(char *)(&le_cl_low));
le_cl_hi = CT_LE_W((uint16_t )((new_cln & 0xFFFF0000) >> 16));
573e8: 204e moveal %fp,%a0
sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
/* byte from points to start of 32bytes structure */
byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);
le_cl_low = CT_LE_W((uint16_t )(new_cln & 0x0000FFFF));
ret1 = fat_sector_write(&fs_info->fat, sec,
573ea: 2800 movel %d0,%d4
573ec: 2003 movel %d3,%d0
573ee: e08b lsrl #8,%d3
573f0: e188 lsll #8,%d0
573f2: 8680 orl %d0,%d3
byte + MSDOS_FIRST_CLUSTER_LOW_OFFSET, 2,
(char *)(&le_cl_low));
le_cl_hi = CT_LE_W((uint16_t )((new_cln & 0xFFFF0000) >> 16));
573f4: 3103 movew %d3,%a0@-
ret2 = fat_sector_write(&fs_info->fat, sec,
573f6: 2f08 movel %a0,%sp@-
573f8: 4878 0002 pea 2 <DOUBLE_FLOAT>
573fc: 2042 moveal %d2,%a0
573fe: 4868 0014 pea %a0@(20)
57402: 2f05 movel %d5,%sp@-
57404: 2f0a movel %a2,%sp@-
57406: 4e93 jsr %a3@
byte + MSDOS_FIRST_CLUSTER_HI_OFFSET, 2,
(char *)(&le_cl_hi));
if ( (ret1 < 0) || (ret2 < 0) )
57408: 4fef 0028 lea %sp@(40),%sp
5740c: 4a84 tstl %d4
5740e: 6d22 blts 57432 <msdos_set_first_cluster_num+0xcc><== NEVER TAKEN
57410: 4a80 tstl %d0
57412: 6d1e blts 57432 <msdos_set_first_cluster_num+0xcc><== NEVER TAKEN
return -1;
return RC_OK;
57414: 4280 clrl %d0
}
57416: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3
5741c: 4e5e unlk %fp
5741e: 4e75 rts
return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
57420: 4280 clrl %d0 <== NOT EXECUTED
57422: 102a 0005 moveb %a2@(5),%d0 <== NOT EXECUTED
57426: 5581 subql #2,%d1 <== NOT EXECUTED
57428: e1a9 lsll %d0,%d1 <== NOT EXECUTED
5742a: d2aa 0030 addl %a2@(48),%d1 <== NOT EXECUTED
5742e: 6000 ff6e braw 5739e <msdos_set_first_cluster_num+0x38><== NOT EXECUTED
le_cl_hi = CT_LE_W((uint16_t )((new_cln & 0xFFFF0000) >> 16));
ret2 = fat_sector_write(&fs_info->fat, sec,
byte + MSDOS_FIRST_CLUSTER_HI_OFFSET, 2,
(char *)(&le_cl_hi));
if ( (ret1 < 0) || (ret2 < 0) )
return -1;
57432: 70ff moveq #-1,%d0 <== NOT EXECUTED
return RC_OK;
}
57434: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED
5743a: 4e5e unlk %fp <== NOT EXECUTED
0004d172 <msdos_set_sectors_per_cluster_from_request.isra.1>:
return fattype;
}
static int
msdos_set_sectors_per_cluster_from_request(
4d172: 4e56 fff4 linkw %fp,#-12
4d176: 206e 0008 moveal %fp@(8),%a0
4d17a: 48d7 040c moveml %d2-%d3/%a2,%sp@
4d17e: 246e 000c moveal %fp@(12),%a2
4d182: 226e 0010 moveal %fp@(16),%a1
msdos_format_param_t *fmt_params )
{
int ret_val = -1;
uint32_t onebit;
if ( rqdata != NULL && rqdata->sectors_per_cluster > 0 ) {
4d186: 4a88 tstl %a0
4d188: 6732 beqs 4d1bc <msdos_set_sectors_per_cluster_from_request.isra.1+0x4a><== NEVER TAKEN
4d18a: 2068 0008 moveal %a0@(8),%a0
4d18e: 4a88 tstl %a0
4d190: 672a beqs 4d1bc <msdos_set_sectors_per_cluster_from_request.isra.1+0x4a>
fmt_params->sectors_per_cluster = rqdata->sectors_per_cluster;
4d192: 2288 movel %a0,%a1@
return fattype;
}
static int
msdos_set_sectors_per_cluster_from_request(
4d194: 7208 moveq #8,%d1
4d196: 203c 0000 0080 movel #128,%d0
* must be power of 2
* must be smaller than or equal to 128
* sectors_per_cluster*bytes_per_sector must not be bigger than 32K
*/
for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {
if ( fmt_params->sectors_per_cluster >= onebit ) {
4d19c: b088 cmpl %a0,%d0
4d19e: 6228 bhis 4d1c8 <msdos_set_sectors_per_cluster_from_request.isra.1+0x56>
fmt_params->sectors_per_cluster = onebit;
4d1a0: 2280 movel %d0,%a1@
if ( fmt_params->sectors_per_cluster
<= 32768L / fmt_params->bytes_per_sector ) {
4d1a2: 243c 0000 8000 movel #32768,%d2
4d1a8: 4c52 2002 remul %a2@,%d2,%d2
* sectors_per_cluster*bytes_per_sector must not be bigger than 32K
*/
for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {
if ( fmt_params->sectors_per_cluster >= onebit ) {
fmt_params->sectors_per_cluster = onebit;
if ( fmt_params->sectors_per_cluster
4d1ac: b082 cmpl %d2,%d0
4d1ae: 6218 bhis 4d1c8 <msdos_set_sectors_per_cluster_from_request.isra.1+0x56><== NEVER TAKEN
<= 32768L / fmt_params->bytes_per_sector ) {
/* value is small enough so this value is ok */
onebit = 1;
ret_val = 0;
4d1b0: 4280 clrl %d0
if (ret_val != 0) {
errno = EINVAL;
}
return ret_val;
}
4d1b2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
4d1b8: 4e5e unlk %fp
4d1ba: 4e75 rts
4d1bc: 2051 moveal %a1@,%a0
return fattype;
}
static int
msdos_set_sectors_per_cluster_from_request(
4d1be: 7208 moveq #8,%d1
4d1c0: 203c 0000 0080 movel #128,%d0
4d1c6: 60d4 bras 4d19c <msdos_set_sectors_per_cluster_from_request.isra.1+0x2a>
* check sectors per cluster.
* must be power of 2
* must be smaller than or equal to 128
* sectors_per_cluster*bytes_per_sector must not be bigger than 32K
*/
for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {
4d1c8: e288 lsrl #1,%d0
4d1ca: 5381 subql #1,%d1
4d1cc: 6704 beqs 4d1d2 <msdos_set_sectors_per_cluster_from_request.isra.1+0x60><== NEVER TAKEN
4d1ce: 2051 moveal %a1@,%a0
4d1d0: 60ca bras 4d19c <msdos_set_sectors_per_cluster_from_request.isra.1+0x2a>
}
}
}
if (ret_val != 0) {
errno = EINVAL;
4d1d2: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
4d1d8: 7416 moveq #22,%d2 <== NOT EXECUTED
4d1da: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d1dc: 70ff moveq #-1,%d0 <== NOT EXECUTED
4d1de: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return ret_val;
}
4d1e0: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4d1e6: 4e5e unlk %fp <== NOT EXECUTED
00056ff8 <msdos_shut_down>:
* temp_mt_entry - mount table entry
*
*/
void
msdos_shut_down(rtems_filesystem_mount_table_entry_t *temp_mt_entry)
{
56ff8: 4e56 0000 linkw %fp,#0
56ffc: 2f0b movel %a3,%sp@-
56ffe: 266e 0008 moveal %fp@(8),%a3
msdos_fs_info_t *fs_info = temp_mt_entry->fs_info;
fat_file_fd_t *fat_fd = temp_mt_entry->mt_fs_root->location.node_access;
57002: 206b 0024 moveal %a3@(36),%a0
* temp_mt_entry - mount table entry
*
*/
void
msdos_shut_down(rtems_filesystem_mount_table_entry_t *temp_mt_entry)
{
57006: 2f0a movel %a2,%sp@-
msdos_fs_info_t *fs_info = temp_mt_entry->fs_info;
fat_file_fd_t *fat_fd = temp_mt_entry->mt_fs_root->location.node_access;
/* close fat-file which correspondes to root directory */
fat_file_close(&fs_info->fat, fat_fd);
57008: 2f28 0008 movel %a0@(8),%sp@-
*
*/
void
msdos_shut_down(rtems_filesystem_mount_table_entry_t *temp_mt_entry)
{
msdos_fs_info_t *fs_info = temp_mt_entry->fs_info;
5700c: 246b 0008 moveal %a3@(8),%a2
fat_file_fd_t *fat_fd = temp_mt_entry->mt_fs_root->location.node_access;
/* close fat-file which correspondes to root directory */
fat_file_close(&fs_info->fat, fat_fd);
57010: 2f0a movel %a2,%sp@-
57012: 4eb9 0005 1f16 jsr 51f16 <fat_file_close>
fat_shutdown_drive(&fs_info->fat);
57018: 2f0a movel %a2,%sp@-
5701a: 4eb9 0005 3810 jsr 53810 <fat_shutdown_drive>
rtems_semaphore_delete(fs_info->vol_sema);
57020: 2f2a 0090 movel %a2@(144),%sp@-
57024: 4eb9 0004 9444 jsr 49444 <rtems_semaphore_delete>
free(fs_info->cl_buf);
5702a: 2f2a 0094 movel %a2@(148),%sp@-
5702e: 4eb9 0004 4bec jsr 44bec <free>
free(temp_mt_entry->fs_info);
57034: 2d6b 0008 0008 movel %a3@(8),%fp@(8)
5703a: 4fef 0014 lea %sp@(20),%sp
}
5703e: 246e fff8 moveal %fp@(-8),%a2
57042: 266e fffc moveal %fp@(-4),%a3
57046: 4e5e unlk %fp
fat_shutdown_drive(&fs_info->fat);
rtems_semaphore_delete(fs_info->vol_sema);
free(fs_info->cl_buf);
free(temp_mt_entry->fs_info);
57048: 4ef9 0004 4bec jmp 44bec <free>
...
000588f0 <msdos_sync>:
return MSDOS_NAME_NOT_FOUND_ERR;
}
int
msdos_sync(rtems_libio_t *iop)
{
588f0: 4e56 0000 linkw %fp,#0
588f4: 206e 0008 moveal %fp@(8),%a0
588f8: 2f0a movel %a2,%sp@-
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
588fa: 2068 0024 moveal %a0@(36),%a0
return MSDOS_NAME_NOT_FOUND_ERR;
}
int
msdos_sync(rtems_libio_t *iop)
{
588fe: 2f02 movel %d2,%sp@-
int rc = RC_OK;
rtems_status_code sc = RTEMS_SUCCESSFUL;
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
58900: 2468 0008 moveal %a0@(8),%a2
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
58904: 42a7 clrl %sp@-
58906: 42a7 clrl %sp@-
58908: 2f2a 0090 movel %a2@(144),%sp@-
5890c: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain>
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
58912: 4fef 000c lea %sp@(12),%sp
58916: 4a80 tstl %d0
58918: 6624 bnes 5893e <msdos_sync+0x4e> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one(EIO);
rc = fat_sync(&fs_info->fat);
5891a: 2f0a movel %a2,%sp@-
5891c: 4eb9 0005 36d4 jsr 536d4 <fat_sync>
rtems_semaphore_release(fs_info->vol_sema);
58922: 2f2a 0090 movel %a2@(144),%sp@-
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
rc = fat_sync(&fs_info->fat);
58926: 2400 movel %d0,%d2
rtems_semaphore_release(fs_info->vol_sema);
58928: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release>
return rc;
}
5892e: 246e fffc moveal %fp@(-4),%a2
58932: 2002 movel %d2,%d0
rtems_set_errno_and_return_minus_one(EIO);
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return rc;
58934: 508f addql #8,%sp
}
58936: 242e fff8 movel %fp@(-8),%d2
5893a: 4e5e unlk %fp
5893c: 4e75 rts
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
5893e: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
58944: 74ff moveq #-1,%d2 <== NOT EXECUTED
58946: 7205 moveq #5,%d1 <== NOT EXECUTED
58948: 2040 moveal %d0,%a0 <== NOT EXECUTED
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
5894a: 2002 movel %d2,%d0 <== NOT EXECUTED
5894c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
58950: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
58954: 4e5e unlk %fp <== NOT EXECUTED
msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,
MSDOS_VOLUME_SEMAPHORE_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_set_errno_and_return_minus_one(EIO);
58956: 2081 movel %d1,%a0@ <== NOT EXECUTED
rc = fat_sync(&fs_info->fat);
rtems_semaphore_release(fs_info->vol_sema);
return rc;
}
...
0004e0d2 <msdos_unlock>:
rtems_fatal_error_occurred(0xdeadbeef);
}
}
void msdos_unlock(const rtems_filesystem_mount_table_entry_t *mt_entry)
{
4e0d2: 4e56 0000 linkw %fp,#0
4e0d6: 206e 0008 moveal %fp@(8),%a0
msdos_fs_info_t *fs_info = mt_entry->fs_info;
rtems_status_code sc = rtems_semaphore_release(fs_info->vol_sema);
4e0da: 2068 0008 moveal %a0@(8),%a0
4e0de: 2f28 0090 movel %a0@(144),%sp@-
4e0e2: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release>
if (sc != RTEMS_SUCCESSFUL) {
4e0e8: 588f addql #4,%sp
4e0ea: 4a80 tstl %d0
4e0ec: 6604 bnes 4e0f2 <msdos_unlock+0x20> <== NEVER TAKEN
rtems_fatal_error_occurred(0xdeadbeef);
}
}
4e0ee: 4e5e unlk %fp
4e0f0: 4e75 rts
void msdos_unlock(const rtems_filesystem_mount_table_entry_t *mt_entry)
{
msdos_fs_info_t *fs_info = mt_entry->fs_info;
rtems_status_code sc = rtems_semaphore_release(fs_info->vol_sema);
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
4e0f2: 2f3c dead beef movel #-559038737,%sp@- <== NOT EXECUTED
4e0f8: 4eb9 0004 9d54 jsr 49d54 <rtems_fatal_error_occurred> <== NOT EXECUTED
00043c24 <newlib_delete_hook>:
void newlib_delete_hook(
rtems_tcb *current_task,
rtems_tcb *deleted_task
)
{
43c24: 4e56 fff4 linkw %fp,#-12
43c28: 48d7 040c moveml %d2-%d3/%a2,%sp@
43c2c: 262e 0008 movel %fp@(8),%d3
43c30: 246e 000c moveal %fp@(12),%a2
/*
* The reentrancy structure was allocated by newlib using malloc()
*/
if (current_task == deleted_task) {
43c34: b5c3 cmpal %d3,%a2
43c36: 674c beqs 43c84 <newlib_delete_hook+0x60>
ptr = _REENT;
} else {
ptr = deleted_task->libc_reent;
43c38: 242a 00f4 movel %a2@(244),%d2
}
if (ptr && ptr != _global_impure_ptr) {
43c3c: 4a82 tstl %d2
43c3e: 6722 beqs 43c62 <newlib_delete_hook+0x3e> <== NEVER TAKEN
43c40: b4b9 0005 d9d2 cmpl 5d9d2 <_global_impure_ptr>,%d2
43c46: 671a beqs 43c62 <newlib_delete_hook+0x3e>
_reclaim_reent(ptr);
*/
/*
* Just in case there are some buffers lying around.
*/
_fwalk(ptr, newlib_free_buffers);
43c48: 4879 0004 3a08 pea 43a08 <newlib_free_buffers>
43c4e: 2f02 movel %d2,%sp@-
43c50: 4eb9 0004 e894 jsr 4e894 <_fwalk>
#if REENT_MALLOCED
free(ptr);
#else
_Workspace_Free(ptr);
43c56: 2f02 movel %d2,%sp@-
43c58: 4eb9 0004 ac10 jsr 4ac10 <_Workspace_Free>
43c5e: 4fef 000c lea %sp@(12),%sp
#endif
}
deleted_task->libc_reent = NULL;
43c62: 42aa 00f4 clrl %a2@(244)
/*
* Require the switch back to another task to install its own
*/
if ( current_task == deleted_task ) {
43c66: b5c3 cmpal %d3,%a2
43c68: 670a beqs 43c74 <newlib_delete_hook+0x50>
_REENT = 0;
}
}
43c6a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
43c70: 4e5e unlk %fp
43c72: 4e75 rts
/*
* Require the switch back to another task to install its own
*/
if ( current_task == deleted_task ) {
_REENT = 0;
43c74: 42b9 0005 e3d0 clrl 5e3d0 <_impure_ptr>
}
}
43c7a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
43c80: 4e5e unlk %fp
43c82: 4e75 rts
/*
* The reentrancy structure was allocated by newlib using malloc()
*/
if (current_task == deleted_task) {
ptr = _REENT;
43c84: 2439 0005 e3d0 movel 5e3d0 <_impure_ptr>,%d2
43c8a: 60b0 bras 43c3c <newlib_delete_hook+0x18>
00043a08 <newlib_free_buffers>:
* task.
*/
int newlib_free_buffers(
FILE *fp
)
{
43a08: 4e56 0000 linkw %fp,#0
43a0c: 2f0a movel %a2,%sp@-
43a0e: 246e 0008 moveal %fp@(8),%a2
switch ( fileno(fp) ) {
43a12: 2f0a movel %a2,%sp@-
43a14: 4eb9 0004 e4f8 jsr 4e4f8 <fileno>
43a1a: 588f addql #4,%sp
43a1c: 7202 moveq #2,%d1
43a1e: b280 cmpl %d0,%d1
43a20: 6414 bccs 43a36 <newlib_free_buffers+0x2e> <== ALWAYS TAKEN
fp->_flags &= ~__SMBF;
fp->_bf._base = fp->_p = (unsigned char *) NULL;
}
break;
default:
fclose(fp);
43a22: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43a24: 4eb9 0004 e280 jsr 4e280 <fclose> <== NOT EXECUTED
43a2a: 588f addql #4,%sp <== NOT EXECUTED
}
return 0;
}
43a2c: 246e fffc moveal %fp@(-4),%a2
43a30: 4280 clrl %d0
43a32: 4e5e unlk %fp
43a34: 4e75 rts
{
switch ( fileno(fp) ) {
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
43a36: 302a 000c movew %a2@(12),%d0
43a3a: 0280 0000 0080 andil #128,%d0
43a40: 4a40 tstw %d0
43a42: 67e8 beqs 43a2c <newlib_free_buffers+0x24> <== ALWAYS TAKEN
free( fp->_bf._base );
43a44: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
43a48: 4eb9 0004 30cc jsr 430cc <free> <== NOT EXECUTED
fp->_flags &= ~__SMBF;
fp->_bf._base = fp->_p = (unsigned char *) NULL;
43a4e: 588f addql #4,%sp <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
free( fp->_bf._base );
fp->_flags &= ~__SMBF;
43a50: 302a 000c movew %a2@(12),%d0 <== NOT EXECUTED
fp->_bf._base = fp->_p = (unsigned char *) NULL;
43a54: 4292 clrl %a2@ <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
free( fp->_bf._base );
fp->_flags &= ~__SMBF;
43a56: 0880 0007 bclr #7,%d0 <== NOT EXECUTED
fp->_bf._base = fp->_p = (unsigned char *) NULL;
43a5a: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
free( fp->_bf._base );
fp->_flags &= ~__SMBF;
43a5e: 3540 000c movew %d0,%a2@(12) <== NOT EXECUTED
break;
default:
fclose(fp);
}
return 0;
}
43a62: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
43a66: 4280 clrl %d0 <== NOT EXECUTED
43a68: 4e5e unlk %fp <== NOT EXECUTED
000415fa <notify>:
}
void
notify (s)
char *s;
{
415fa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
printf ("%s test appears to be inconsistent...\n", s);
415fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
41602: 4879 0006 ca72 pea 6ca72 <Configuration_Initial_Extensions+0x33e><== NOT EXECUTED
41608: 4eb9 0005 f970 jsr 5f970 <printf> <== NOT EXECUTED
printf (" PLEASE NOTIFY KARPINKSI!\n");
4160e: 508f addql #8,%sp <== NOT EXECUTED
41610: 203c 0006 ca99 movel #445081,%d0 <== NOT EXECUTED
41616: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
4161a: 4e5e unlk %fp <== NOT EXECUTED
void
notify (s)
char *s;
{
printf ("%s test appears to be inconsistent...\n", s);
printf (" PLEASE NOTIFY KARPINKSI!\n");
4161c: 4ef9 0005 fa70 jmp 5fa70 <puts> <== NOT EXECUTED
00046956 <null_op_fsmount_me>:
rtems_filesystem_mount_table_entry_t *mt_entry,
const void *data
)
{
return -1;
}
46956: 70ff moveq #-1,%d0 <== NOT EXECUTED
static int null_op_fsmount_me(
rtems_filesystem_mount_table_entry_t *mt_entry,
const void *data
)
{
46958: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return -1;
}
4695c: 4e5e unlk %fp <== NOT EXECUTED
0004696a <null_op_fsunmount_me>:
static void null_op_fsunmount_me(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
4696a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Do nothing */
}
4696e: 4e5e unlk %fp <== NOT EXECUTED
00046924 <null_op_link>:
const char *name,
size_t namelen
)
{
return -1;
}
46924: 70ff moveq #-1,%d0 <== NOT EXECUTED
const rtems_filesystem_location_info_t *parentloc,
const rtems_filesystem_location_info_t *targetloc,
const char *name,
size_t namelen
)
{
46926: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return -1;
}
4692a: 4e5e unlk %fp <== NOT EXECUTED
0004694c <null_op_mount>:
static int null_op_mount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
return -1;
}
4694c: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
static int null_op_mount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
4694e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return -1;
}
46952: 4e5e unlk %fp <== NOT EXECUTED
00046986 <null_op_readlink>:
char *buf,
size_t bufsize
)
{
return -1;
}
46986: 70ff moveq #-1,%d0 <== NOT EXECUTED
static ssize_t null_op_readlink(
const rtems_filesystem_location_info_t *loc,
char *buf,
size_t bufsize
)
{
46988: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return -1;
}
4698c: 4e5e unlk %fp <== NOT EXECUTED
00046990 <null_op_rename>:
const char *name,
size_t namelen
)
{
return -1;
}
46990: 70ff moveq #-1,%d0 <== NOT EXECUTED
const rtems_filesystem_location_info_t *oldloc,
const rtems_filesystem_location_info_t *newparentloc,
const char *name,
size_t namelen
)
{
46992: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return -1;
}
46996: 4e5e unlk %fp <== NOT EXECUTED
0004691a <null_op_rmnod>:
const rtems_filesystem_location_info_t *parentloc,
const rtems_filesystem_location_info_t *loc
)
{
return -1;
}
4691a: 70ff moveq #-1,%d0 <== NOT EXECUTED
static int null_op_rmnod(
const rtems_filesystem_location_info_t *parentloc,
const rtems_filesystem_location_info_t *loc
)
{
4691c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return -1;
}
46920: 4e5e unlk %fp <== NOT EXECUTED
00043c8c <open_dev_console>:
/*
* This is a replaceable stub which opens the console, if present.
*/
void open_dev_console(void)
{
43c8c: 4e56 0000 linkw %fp,#0
43c90: 2f0a movel %a2,%sp@-
int stderr_fd;
/*
* Attempt to open /dev/console.
*/
if ((stdin_fd = open("/dev/console", O_RDONLY, 0)) == -1) {
43c92: 45f9 0004 3d00 lea 43d00 <open>,%a2
43c98: 42a7 clrl %sp@-
43c9a: 42a7 clrl %sp@-
43c9c: 4879 0005 cc6e pea 5cc6e <CSWTCH.89+0x100>
43ca2: 4e92 jsr %a2@
43ca4: 4fef 000c lea %sp@(12),%sp
43ca8: 72ff moveq #-1,%d1
43caa: b280 cmpl %d0,%d1
43cac: 6730 beqs 43cde <open_dev_console+0x52> <== NEVER TAKEN
/*
* But if we find /dev/console once, we better find it twice more
* or something is REALLY wrong.
*/
if ((stdout_fd = open("/dev/console", O_WRONLY, 0)) == -1)
43cae: 42a7 clrl %sp@-
43cb0: 4878 0001 pea 1 <ADD>
43cb4: 4879 0005 cc6e pea 5cc6e <CSWTCH.89+0x100>
43cba: 4e92 jsr %a2@
43cbc: 4fef 000c lea %sp@(12),%sp
43cc0: 72ff moveq #-1,%d1
43cc2: b280 cmpl %d0,%d1
43cc4: 672c beqs 43cf2 <open_dev_console+0x66>
rtems_fatal_error_occurred( 0x55544431 ); /* error STD1 */
if ((stderr_fd = open("/dev/console", O_WRONLY, 0)) == -1)
43cc6: 42a7 clrl %sp@-
43cc8: 4878 0001 pea 1 <ADD>
43ccc: 4879 0005 cc6e pea 5cc6e <CSWTCH.89+0x100>
43cd2: 4e92 jsr %a2@
43cd4: 4fef 000c lea %sp@(12),%sp
43cd8: 72ff moveq #-1,%d1
43cda: b280 cmpl %d0,%d1
43cdc: 6708 beqs 43ce6 <open_dev_console+0x5a>
rtems_fatal_error_occurred( 0x55544432 ); /* error STD2 */
}
43cde: 246e fffc moveal %fp@(-4),%a2
43ce2: 4e5e unlk %fp
43ce4: 4e75 rts
*/
if ((stdout_fd = open("/dev/console", O_WRONLY, 0)) == -1)
rtems_fatal_error_occurred( 0x55544431 ); /* error STD1 */
if ((stderr_fd = open("/dev/console", O_WRONLY, 0)) == -1)
rtems_fatal_error_occurred( 0x55544432 ); /* error STD2 */
43ce6: 2f3c 5554 4432 movel #1431585842,%sp@-
43cec: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred>
/*
* But if we find /dev/console once, we better find it twice more
* or something is REALLY wrong.
*/
if ((stdout_fd = open("/dev/console", O_WRONLY, 0)) == -1)
rtems_fatal_error_occurred( 0x55544431 ); /* error STD1 */
43cf2: 2f3c 5554 4431 movel #1431585841,%sp@-
43cf8: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred>
...
00045a58 <oproc>:
/*
* Handle output processing
*/
static void
oproc (unsigned char c, struct rtems_termios_tty *tty)
{
45a58: 4e56 fff0 linkw %fp,#-16
45a5c: 202e 0008 movel %fp@(8),%d0
45a60: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
45a64: 246e 000c moveal %fp@(12),%a2
int i;
if (tty->termios.c_oflag & OPOST) {
45a68: 222a 0034 movel %a2@(52),%d1
/*
* Handle output processing
*/
static void
oproc (unsigned char c, struct rtems_termios_tty *tty)
{
45a6c: 1d40 fffe moveb %d0,%fp@(-2)
int i;
if (tty->termios.c_oflag & OPOST) {
45a70: 0801 0000 btst #0,%d1
45a74: 675a beqs 45ad0 <oproc+0x78> <== NEVER TAKEN
switch (c) {
45a76: 7409 moveq #9,%d2
45a78: 0280 0000 00ff andil #255,%d0
45a7e: b480 cmpl %d0,%d2
45a80: 6700 0112 beqw 45b94 <oproc+0x13c>
45a84: 646a bccs 45af0 <oproc+0x98> <== NEVER TAKEN
45a86: 740a moveq #10,%d2
45a88: b480 cmpl %d0,%d2
45a8a: 6700 0090 beqw 45b1c <oproc+0xc4>
45a8e: 143c 000d moveb #13,%d2
45a92: b480 cmpl %d0,%d2
45a94: 6700 00c2 beqw 45b58 <oproc+0x100>
tty->column--;
break;
default:
if (tty->termios.c_oflag & OLCUC)
c = toupper(c);
45a98: 2079 0005 e3cc moveal 5e3cc <__ctype_ptr__>,%a0
if (tty->column > 0)
tty->column--;
break;
default:
if (tty->termios.c_oflag & OLCUC)
45a9e: 0801 0001 btst #1,%d1
45aa2: 671c beqs 45ac0 <oproc+0x68> <== ALWAYS TAKEN
c = toupper(c);
45aa4: 7403 moveq #3,%d2 <== NOT EXECUTED
45aa6: 1230 0801 moveb %a0@(00000001,%d0:l),%d1 <== NOT EXECUTED
45aaa: c282 andl %d2,%d1 <== NOT EXECUTED
45aac: 143c 0002 moveb #2,%d2 <== NOT EXECUTED
45ab0: b481 cmpl %d1,%d2 <== NOT EXECUTED
45ab2: 6700 011c beqw 45bd0 <oproc+0x178> <== NOT EXECUTED
45ab6: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED
45aba: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
if (!iscntrl(c))
45ac0: 7220 moveq #32,%d1
45ac2: 1030 0801 moveb %a0@(00000001,%d0:l),%d0
45ac6: c081 andl %d1,%d0
45ac8: 4a00 tstb %d0
45aca: 6604 bnes 45ad0 <oproc+0x78> <== NEVER TAKEN
tty->column++;
45acc: 52aa 0028 addql #1,%a2@(40)
45ad0: 47f9 0004 5954 lea 45954 <rtems_termios_puts>,%a3
break;
}
}
rtems_termios_puts (&c, 1, tty);
45ad6: 2f0a movel %a2,%sp@-
45ad8: 4878 0001 pea 1 <ADD>
45adc: 486e fffe pea %fp@(-2)
45ae0: 4e93 jsr %a3@
45ae2: 4fef 000c lea %sp@(12),%sp
}
45ae6: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
45aec: 4e5e unlk %fp
45aee: 4e75 rts
oproc (unsigned char c, struct rtems_termios_tty *tty)
{
int i;
if (tty->termios.c_oflag & OPOST) {
switch (c) {
45af0: 143c 0008 moveb #8,%d2 <== NOT EXECUTED
45af4: b480 cmpl %d0,%d2 <== NOT EXECUTED
45af6: 66a0 bnes 45a98 <oproc+0x40> <== NOT EXECUTED
}
tty->column += i;
break;
case '\b':
if (tty->column > 0)
45af8: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
45afc: 6fd2 bles 45ad0 <oproc+0x78> <== NOT EXECUTED
tty->column--;
45afe: 5380 subql #1,%d0 <== NOT EXECUTED
45b00: 47f9 0004 5954 lea 45954 <rtems_termios_puts>,%a3 <== NOT EXECUTED
45b06: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
45b0a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45b0c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45b10: 486e fffe pea %fp@(-2) <== NOT EXECUTED
45b14: 4e93 jsr %a3@ <== NOT EXECUTED
45b16: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45b1a: 60ca bras 45ae6 <oproc+0x8e> <== NOT EXECUTED
int i;
if (tty->termios.c_oflag & OPOST) {
switch (c) {
case '\n':
if (tty->termios.c_oflag & ONLRET)
45b1c: 0801 0005 btst #5,%d1
45b20: 6704 beqs 45b26 <oproc+0xce> <== ALWAYS TAKEN
tty->column = 0;
45b22: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
45b26: 47f9 0004 5954 lea 45954 <rtems_termios_puts>,%a3
if (tty->termios.c_oflag & ONLCR) {
45b2c: 44c1 movew %d1,%ccr
45b2e: 66a6 bnes 45ad6 <oproc+0x7e> <== NEVER TAKEN
rtems_termios_puts ("\r", 1, tty);
45b30: 2f0a movel %a2,%sp@-
45b32: 4878 0001 pea 1 <ADD>
45b36: 4879 0005 d400 pea 5d400 <rtems_termios_baud_table+0xfc>
45b3c: 4e93 jsr %a3@
tty->column = 0;
45b3e: 4fef 000c lea %sp@(12),%sp
45b42: 42aa 0028 clrl %a2@(40)
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
45b46: 2f0a movel %a2,%sp@-
45b48: 4878 0001 pea 1 <ADD>
45b4c: 486e fffe pea %fp@(-2)
45b50: 4e93 jsr %a3@
45b52: 4fef 000c lea %sp@(12),%sp
45b56: 608e bras 45ae6 <oproc+0x8e>
tty->column = 0;
}
break;
case '\r':
if ((tty->termios.c_oflag & ONOCR) && (tty->column == 0))
45b58: 0801 0004 btst #4,%d1 <== NOT EXECUTED
45b5c: 6706 beqs 45b64 <oproc+0x10c> <== NOT EXECUTED
45b5e: 4aaa 0028 tstl %a2@(40) <== NOT EXECUTED
45b62: 6782 beqs 45ae6 <oproc+0x8e> <== NOT EXECUTED
return;
if (tty->termios.c_oflag & OCRNL) {
45b64: 44c1 movew %d1,%ccr <== NOT EXECUTED
45b66: 6a0e bpls 45b76 <oproc+0x11e> <== NOT EXECUTED
c = '\n';
45b68: 700a moveq #10,%d0 <== NOT EXECUTED
45b6a: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED
if (tty->termios.c_oflag & ONLRET)
45b6e: 0801 0005 btst #5,%d1 <== NOT EXECUTED
45b72: 6700 ff5c beqw 45ad0 <oproc+0x78> <== NOT EXECUTED
tty->column = 0;
break;
}
tty->column = 0;
45b76: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
45b7a: 47f9 0004 5954 lea 45954 <rtems_termios_puts>,%a3 <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
45b80: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45b82: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45b86: 486e fffe pea %fp@(-2) <== NOT EXECUTED
45b8a: 4e93 jsr %a3@ <== NOT EXECUTED
45b8c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45b90: 6000 ff54 braw 45ae6 <oproc+0x8e> <== NOT EXECUTED
}
tty->column = 0;
break;
case '\t':
i = 8 - (tty->column & 7);
45b94: 202a 0028 movel %a2@(40),%d0
45b98: 7407 moveq #7,%d2
45b9a: 307c 0008 moveaw #8,%a0
45b9e: c480 andl %d0,%d2
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
45ba0: 0281 0000 1800 andil #6144,%d1
}
tty->column = 0;
break;
case '\t':
i = 8 - (tty->column & 7);
45ba6: 91c2 subal %d2,%a0
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
45ba8: 0c81 0000 1800 cmpil #6144,%d1
45bae: 6734 beqs 45be4 <oproc+0x18c> <== ALWAYS TAKEN
tty->column += i;
rtems_termios_puts ( " ", i, tty);
return;
}
tty->column += i;
45bb0: d088 addl %a0,%d0 <== NOT EXECUTED
45bb2: 47f9 0004 5954 lea 45954 <rtems_termios_puts>,%a3 <== NOT EXECUTED
45bb8: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
45bbc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45bbe: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45bc2: 486e fffe pea %fp@(-2) <== NOT EXECUTED
45bc6: 4e93 jsr %a3@ <== NOT EXECUTED
45bc8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45bcc: 6000 ff18 braw 45ae6 <oproc+0x8e> <== NOT EXECUTED
tty->column--;
break;
default:
if (tty->termios.c_oflag & OLCUC)
c = toupper(c);
45bd0: 0680 ffff ffe0 addil #-32,%d0 <== NOT EXECUTED
45bd6: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED
45bda: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
45be0: 6000 fede braw 45ac0 <oproc+0x68> <== NOT EXECUTED
case '\t':
i = 8 - (tty->column & 7);
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
tty->column += i;
rtems_termios_puts ( " ", i, tty);
45be4: 2f0a movel %a2,%sp@-
break;
case '\t':
i = 8 - (tty->column & 7);
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
tty->column += i;
45be6: d088 addl %a0,%d0
45be8: 2540 0028 movel %d0,%a2@(40)
rtems_termios_puts ( " ", i, tty);
45bec: 2f08 movel %a0,%sp@-
45bee: 4879 0005 d402 pea 5d402 <rtems_termios_baud_table+0xfe>
45bf4: 4eb9 0004 5954 jsr 45954 <rtems_termios_puts>
return;
45bfa: 4fef 000c lea %sp@(12),%sp
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
}
45bfe: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
45c04: 4e5e unlk %fp <== NOT EXECUTED
00044220 <partition_free>:
* RETURNS:
* N/A
*/
static void
partition_free(rtems_part_desc_t *part_desc)
{
44220: 4e56 fff0 linkw %fp,#-16
44224: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
44228: 246e 0008 moveal %fp@(8),%a2
int part_num;
if (part_desc == NULL)
4422c: 4a8a tstl %a2
4422e: 674a beqs 4427a <partition_free+0x5a>
* true if partition type is extended, false otherwise
*/
static bool
is_extended(uint8_t type)
{
return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
44230: 4280 clrl %d0
44232: 102a 0001 moveb %a2@(1),%d0
44236: 7205 moveq #5,%d1
44238: b280 cmpl %d0,%d1
4423a: 671a beqs 44256 <partition_free+0x36> <== NEVER TAKEN
4423c: 0c80 0000 0085 cmpil #133,%d0
44242: 6712 beqs 44256 <partition_free+0x36> <== NEVER TAKEN
{
partition_free(part_desc->sub_part[part_num]);
}
}
free(part_desc);
44244: 2d4a 0008 movel %a2,%fp@(8)
}
44248: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4
4424e: 4e5e unlk %fp
{
partition_free(part_desc->sub_part[part_num]);
}
}
free(part_desc);
44250: 4ef9 0004 5344 jmp 45344 <free>
*
* RETURNS:
* N/A
*/
static void
partition_free(rtems_part_desc_t *part_desc)
44256: 47ea 0018 lea %a2@(24),%a3 <== NOT EXECUTED
4425a: 7404 moveq #4,%d2 <== NOT EXECUTED
4425c: 49fa ffc2 lea %pc@(44220 <partition_free>),%a4 <== NOT EXECUTED
{
for (part_num = 0;
part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
part_num++)
{
partition_free(part_desc->sub_part[part_num]);
44260: 2f1b movel %a3@+,%sp@- <== NOT EXECUTED
44262: 5382 subql #1,%d2 <== NOT EXECUTED
44264: 4e94 jsr %a4@ <== NOT EXECUTED
if (part_desc == NULL)
return;
if (is_extended(part_desc->sys_type))
{
for (part_num = 0;
44266: 588f addql #4,%sp <== NOT EXECUTED
44268: 4a82 tstl %d2 <== NOT EXECUTED
4426a: 67d8 beqs 44244 <partition_free+0x24> <== NOT EXECUTED
part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
part_num++)
{
partition_free(part_desc->sub_part[part_num]);
4426c: 2f1b movel %a3@+,%sp@- <== NOT EXECUTED
4426e: 5382 subql #1,%d2 <== NOT EXECUTED
44270: 4e94 jsr %a4@ <== NOT EXECUTED
if (part_desc == NULL)
return;
if (is_extended(part_desc->sys_type))
{
for (part_num = 0;
44272: 588f addql #4,%sp <== NOT EXECUTED
44274: 4a82 tstl %d2 <== NOT EXECUTED
44276: 66e8 bnes 44260 <partition_free+0x40> <== NOT EXECUTED
44278: 60ca bras 44244 <partition_free+0x24> <== NOT EXECUTED
partition_free(part_desc->sub_part[part_num]);
}
}
free(part_desc);
}
4427a: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4
44280: 4e5e unlk %fp <== NOT EXECUTED
00044596 <partition_table_get>:
* RTEMS_SUCCESSFUL if success,
* RTEMS_INTERNAL_ERROR otherwise
*/
static rtems_status_code
partition_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc)
{
44596: 4e56 ff90 linkw %fp,#-112
4459a: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
struct stat dev_stat;
rtems_status_code rc;
int fd;
fd = open(dev_name, O_RDONLY);
4459e: 42a7 clrl %sp@-
445a0: 2f2e 0008 movel %fp@(8),%sp@-
445a4: 4eb9 0004 6280 jsr 46280 <open>
if (fd < 0)
445aa: 508f addql #8,%sp
{
struct stat dev_stat;
rtems_status_code rc;
int fd;
fd = open(dev_name, O_RDONLY);
445ac: 2600 movel %d0,%d3
if (fd < 0)
445ae: 6c0e bges 445be <partition_table_get+0x28> <== ALWAYS TAKEN
{
return RTEMS_INTERNAL_ERROR;
445b0: 7419 moveq #25,%d2 <== NOT EXECUTED
rc = read_mbr(fd, disk_desc);
close(fd);
return rc;
}
445b2: 2002 movel %d2,%d0 <== NOT EXECUTED
445b4: 4cee 1c7c ff90 moveml %fp@(-112),%d2-%d6/%a2-%a4 <== NOT EXECUTED
445ba: 4e5e unlk %fp <== NOT EXECUTED
445bc: 4e75 rts <== NOT EXECUTED
if (fd < 0)
{
return RTEMS_INTERNAL_ERROR;
}
rc = fstat(fd, &dev_stat);
445be: 486e ffba pea %fp@(-70)
445c2: 2f00 movel %d0,%sp@-
445c4: 4eb9 0004 53d4 jsr 453d4 <fstat>
if (rc != RTEMS_SUCCESSFUL)
445ca: 508f addql #8,%sp
445cc: 4a80 tstl %d0
445ce: 6718 beqs 445e8 <partition_table_get+0x52> <== ALWAYS TAKEN
{
close(fd);
445d0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
return RTEMS_INTERNAL_ERROR;
445d2: 7419 moveq #25,%d2 <== NOT EXECUTED
}
rc = fstat(fd, &dev_stat);
if (rc != RTEMS_SUCCESSFUL)
{
close(fd);
445d4: 4eb9 0004 5070 jsr 45070 <close> <== NOT EXECUTED
445da: 588f addql #4,%sp <== NOT EXECUTED
rc = read_mbr(fd, disk_desc);
close(fd);
return rc;
}
445dc: 2002 movel %d2,%d0 <== NOT EXECUTED
445de: 4cee 1c7c ff90 moveml %fp@(-112),%d2-%d6/%a2-%a4 <== NOT EXECUTED
445e4: 4e5e unlk %fp <== NOT EXECUTED
445e6: 4e75 rts <== NOT EXECUTED
{
close(fd);
return RTEMS_INTERNAL_ERROR;
}
strncpy (disk_desc->dev_name, dev_name, 15);
445e8: 4878 000f pea f <FPTRAP>
445ec: 2f2e 0008 movel %fp@(8),%sp@-
445f0: 206e 000c moveal %fp@(12),%a0
445f4: 4868 0008 pea %a0@(8)
445f8: 4eb9 0005 4f2c jsr 54f2c <strncpy>
disk_desc->dev = dev_stat.st_rdev;
445fe: 206e 000c moveal %fp@(12),%a0
disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
44602: 4fef 000c lea %sp@(12),%sp
44606: 203c 0000 0200 movel #512,%d0
close(fd);
return RTEMS_INTERNAL_ERROR;
}
strncpy (disk_desc->dev_name, dev_name, 15);
disk_desc->dev = dev_stat.st_rdev;
4460c: 226e ffd0 moveal %fp@(-48),%a1
44610: 246e ffd4 moveal %fp@(-44),%a2
disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
44614: 222e fff8 movel %fp@(-8),%d1
close(fd);
return RTEMS_INTERNAL_ERROR;
}
strncpy (disk_desc->dev_name, dev_name, 15);
disk_desc->dev = dev_stat.st_rdev;
44618: 2089 movel %a1,%a0@
4461a: 214a 0004 movel %a2,%a0@(4)
disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
4461e: 4a81 tstl %d1
44620: 6702 beqs 44624 <partition_table_get+0x8e> <== ALWAYS TAKEN
44622: 2001 movel %d1,%d0 <== NOT EXECUTED
{
return RTEMS_INTERNAL_ERROR;
}
off = sector_num * RTEMS_IDE_SECTOR_SIZE;
new_off = lseek(fd, off, SEEK_SET);
44624: 42a7 clrl %sp@-
return RTEMS_INTERNAL_ERROR;
}
strncpy (disk_desc->dev_name, dev_name, 15);
disk_desc->dev = dev_stat.st_rdev;
disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
44626: 226e 000c moveal %fp@(12),%a1
}
off = sector_num * RTEMS_IDE_SECTOR_SIZE;
new_off = lseek(fd, off, SEEK_SET);
if (new_off != off) {
return RTEMS_IO_ERROR;
4462a: 741b moveq #27,%d2
{
return RTEMS_INTERNAL_ERROR;
}
off = sector_num * RTEMS_IDE_SECTOR_SIZE;
new_off = lseek(fd, off, SEEK_SET);
4462c: 42a7 clrl %sp@-
4462e: 42a7 clrl %sp@-
return RTEMS_INTERNAL_ERROR;
}
strncpy (disk_desc->dev_name, dev_name, 15);
disk_desc->dev = dev_stat.st_rdev;
disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
44630: 2340 0018 movel %d0,%a1@(24)
*/
static rtems_status_code
read_mbr(int fd, rtems_disk_desc_t *disk_desc)
{
int part_num;
rtems_sector_data_t *sector = NULL;
44634: 42ae ffb2 clrl %fp@(-78)
{
return RTEMS_INTERNAL_ERROR;
}
off = sector_num * RTEMS_IDE_SECTOR_SIZE;
new_off = lseek(fd, off, SEEK_SET);
44638: 2f03 movel %d3,%sp@-
4463a: 4eb9 0004 5794 jsr 45794 <lseek>
if (new_off != off) {
44640: 4fef 0010 lea %sp@(16),%sp
44644: 2800 movel %d0,%d4
44646: 8881 orl %d1,%d4
44648: 6726 beqs 44670 <partition_table_get+0xda> <== ALWAYS TAKEN
/* get MBR sector */
rc = get_sector(fd, 0, §or);
if (rc != RTEMS_SUCCESSFUL)
{
if (sector)
4464a: 202e ffb2 movel %fp@(-78),%d0 <== NOT EXECUTED
4464e: 670a beqs 4465a <partition_table_get+0xc4> <== NOT EXECUTED
free(sector);
44650: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44652: 4eb9 0004 5344 jsr 45344 <free> <== NOT EXECUTED
44658: 588f addql #4,%sp <== NOT EXECUTED
disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
RTEMS_IDE_SECTOR_SIZE;
rc = read_mbr(fd, disk_desc);
close(fd);
4465a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4465c: 4eb9 0004 5070 jsr 45070 <close> <== NOT EXECUTED
44662: 588f addql #4,%sp <== NOT EXECUTED
return rc;
}
44664: 2002 movel %d2,%d0
44666: 4cee 1c7c ff90 moveml %fp@(-112),%d2-%d6/%a2-%a4
4466c: 4e5e unlk %fp
4466e: 4e75 rts
44670: 486e ffb2 pea %fp@(-78)
44674: 42a7 clrl %sp@-
44676: 2f03 movel %d3,%sp@-
44678: 4eba fc40 jsr %pc@(442ba <get_sector.part.0>)
uint8_t *data;
rtems_status_code rc;
/* get MBR sector */
rc = get_sector(fd, 0, §or);
if (rc != RTEMS_SUCCESSFUL)
4467c: 4fef 000c lea %sp@(12),%sp
44680: 2400 movel %d0,%d2
44682: 66c6 bnes 4464a <partition_table_get+0xb4> <== NEVER TAKEN
free(sector);
return rc;
}
/* check if the partition table structure is MS-DOS style */
if (!msdos_signature_check(sector))
44684: 206e ffb2 moveal %fp@(-78),%a0
static bool
msdos_signature_check (rtems_sector_data_t *sector)
{
uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&
44688: 4280 clrl %d0
4468a: 1028 0202 moveb %a0@(514),%d0
4468e: 7255 moveq #85,%d1
44690: b280 cmpl %d0,%d1
44692: 6718 beqs 446ac <partition_table_get+0x116> <== ALWAYS TAKEN
}
/* check if the partition table structure is MS-DOS style */
if (!msdos_signature_check(sector))
{
free(sector);
44694: 2f08 movel %a0,%sp@- <== NOT EXECUTED
return RTEMS_INTERNAL_ERROR;
44696: 7419 moveq #25,%d2 <== NOT EXECUTED
}
/* check if the partition table structure is MS-DOS style */
if (!msdos_signature_check(sector))
{
free(sector);
44698: 4eb9 0004 5344 jsr 45344 <free> <== NOT EXECUTED
4469e: 588f addql #4,%sp <== NOT EXECUTED
disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
RTEMS_IDE_SECTOR_SIZE;
rc = read_mbr(fd, disk_desc);
close(fd);
446a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
446a2: 4eb9 0004 5070 jsr 45070 <close> <== NOT EXECUTED
446a8: 588f addql #4,%sp <== NOT EXECUTED
446aa: 60b8 bras 44664 <partition_table_get+0xce> <== NOT EXECUTED
static bool
msdos_signature_check (rtems_sector_data_t *sector)
{
uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&
446ac: 4280 clrl %d0
446ae: 1028 0203 moveb %a0@(515),%d0
446b2: 0c80 0000 00aa cmpil #170,%d0
446b8: 66da bnes 44694 <partition_table_get+0xfe> <== NEVER TAKEN
* RETURNS:
* RTEMS_SUCCESSFUL if success,
* RTEMS_INTERNAL_ERROR otherwise
*/
static rtems_status_code
partition_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc)
446ba: 246e 000c moveal %fp@(12),%a2
return RTEMS_INTERNAL_ERROR;
}
/* read and process 4 primary partition descriptors */
data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;
446be: 2a08 movel %a0,%d5
* RETURNS:
* RTEMS_SUCCESSFUL if success,
* RTEMS_INTERNAL_ERROR otherwise
*/
static rtems_status_code
partition_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc)
446c0: 45ea 0028 lea %a2@(40),%a2
446c4: 2c0e movel %fp,%d6
return RTEMS_INTERNAL_ERROR;
}
/* read and process 4 primary partition descriptors */
data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;
446c6: 0685 0000 01c2 addil #450,%d5
* RETURNS:
* RTEMS_SUCCESSFUL if success,
* RTEMS_INTERNAL_ERROR otherwise
*/
static rtems_status_code
partition_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc)
446cc: 264a moveal %a2,%a3
446ce: 0686 ffff ffb6 addil #-74,%d6
446d4: 49fa fc4c lea %pc@(44322 <data_to_part_desc.part.1>),%a4
446d8: 7801 moveq #1,%d4
446da: 2f06 movel %d6,%sp@-
446dc: 2f05 movel %d5,%sp@-
446de: 4e94 jsr %a4@
for (part_num = 0;
part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
part_num++)
{
rc = data_to_part_desc(data, &part_desc);
if (rc != RTEMS_SUCCESSFUL)
446e0: 508f addql #8,%sp
446e2: 2400 movel %d0,%d2
446e4: 6600 00ae bnew 44794 <partition_table_get+0x1fe>
{
free(sector);
return rc;
}
if (part_desc != NULL)
446e8: 206e ffb6 moveal %fp@(-74),%a0
446ec: 4a88 tstl %a0
446ee: 6700 009e beqw 4478e <partition_table_get+0x1f8>
{
part_desc->log_id = part_num + 1;
part_desc->disk_desc = disk_desc;
part_desc->end = part_desc->start + part_desc->size - 1;
446f2: 2028 0004 movel %a0@(4),%d0
446f6: d0a8 0008 addl %a0@(8),%d0
446fa: 5380 subql #1,%d0
}
if (part_desc != NULL)
{
part_desc->log_id = part_num + 1;
part_desc->disk_desc = disk_desc;
446fc: 226e 000c moveal %fp@(12),%a1
part_desc->end = part_desc->start + part_desc->size - 1;
44700: 2140 000c movel %d0,%a0@(12)
return rc;
}
if (part_desc != NULL)
{
part_desc->log_id = part_num + 1;
44704: 1144 0002 moveb %d4,%a0@(2)
part_desc->disk_desc = disk_desc;
44708: 2149 0010 movel %a1,%a0@(16)
part_desc->end = part_desc->start + part_desc->size - 1;
disk_desc->partitions[part_num] = part_desc;
4470c: 2688 movel %a0,%a3@
4470e: 5284 addql #1,%d4
/* read and process 4 primary partition descriptors */
data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;
for (part_num = 0;
44710: 4280 clrl %d0
else
{
disk_desc->partitions[part_num] = NULL;
}
data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;
44712: 0685 0000 0010 addil #16,%d5
44718: 588b addql #4,%a3
/* read and process 4 primary partition descriptors */
data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;
for (part_num = 0;
4471a: 1004 moveb %d4,%d0
4471c: 7205 moveq #5,%d1
4471e: b280 cmpl %d0,%d1
44720: 66b8 bnes 446da <partition_table_get+0x144>
}
data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;
}
free(sector);
44722: 2f2e ffb2 movel %fp@(-78),%sp@-
44726: 47f9 0004 5344 lea 45344 <free>,%a3
disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
4472c: 7804 moveq #4,%d4
}
data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;
}
free(sector);
4472e: 4e93 jsr %a3@
disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
44730: 206e 000c moveal %fp@(12),%a0
44734: 588f addql #4,%sp
part_num++)
{
part_desc = disk_desc->partitions[part_num];
if (part_desc != NULL && is_extended(part_desc->sys_type))
{
read_extended_partition(fd, part_desc->start, part_desc);
44736: 49fa fcdc lea %pc@(44414 <read_extended_partition>),%a4
data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;
}
free(sector);
disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
4473a: 2144 0024 movel %d4,%a0@(36)
but we are to process each primary partition */
for (part_num = 0;
part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
part_num++)
{
part_desc = disk_desc->partitions[part_num];
4473e: 2052 moveal %a2@,%a0
44740: 2d48 ffb6 movel %a0,%fp@(-74)
if (part_desc != NULL && is_extended(part_desc->sys_type))
44744: 6714 beqs 4475a <partition_table_get+0x1c4> <== NEVER TAKEN
* true if partition type is extended, false otherwise
*/
static bool
is_extended(uint8_t type)
{
return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
44746: 4280 clrl %d0
44748: 1028 0001 moveb %a0@(1),%d0
4474c: 7205 moveq #5,%d1
4474e: b280 cmpl %d0,%d1
44750: 671c beqs 4476e <partition_table_get+0x1d8>
44752: 0c80 0000 0085 cmpil #133,%d0
44758: 6714 beqs 4476e <partition_table_get+0x1d8> <== NEVER TAKEN
4475a: 5384 subql #1,%d4
4475c: 588a addql #4,%a2
disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
/* There cannot be more than one extended partition,
but we are to process each primary partition */
for (part_num = 0;
4475e: 66de bnes 4473e <partition_table_get+0x1a8> <== ALWAYS TAKEN
disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
RTEMS_IDE_SECTOR_SIZE;
rc = read_mbr(fd, disk_desc);
close(fd);
44760: 2f03 movel %d3,%sp@-
44762: 4eb9 0004 5070 jsr 45070 <close>
44768: 588f addql #4,%sp
4476a: 6000 fef8 braw 44664 <partition_table_get+0xce>
part_num++)
{
part_desc = disk_desc->partitions[part_num];
if (part_desc != NULL && is_extended(part_desc->sys_type))
{
read_extended_partition(fd, part_desc->start, part_desc);
4476e: 2f08 movel %a0,%sp@-
44770: 2f28 0004 movel %a0@(4),%sp@-
44774: 5384 subql #1,%d4
44776: 2f03 movel %d3,%sp@-
44778: 4e94 jsr %a4@
free(part_desc);
4477a: 2f2e ffb6 movel %fp@(-74),%sp@-
4477e: 4e93 jsr %a3@
disk_desc->partitions[part_num] = NULL;
44780: 4fef 0010 lea %sp@(16),%sp
44784: 4292 clrl %a2@
44786: 588a addql #4,%a2
disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
/* There cannot be more than one extended partition,
but we are to process each primary partition */
for (part_num = 0;
44788: 4a84 tstl %d4
4478a: 66b2 bnes 4473e <partition_table_get+0x1a8> <== NEVER TAKEN
4478c: 60d2 bras 44760 <partition_table_get+0x1ca>
part_desc->end = part_desc->start + part_desc->size - 1;
disk_desc->partitions[part_num] = part_desc;
}
else
{
disk_desc->partitions[part_num] = NULL;
4478e: 4293 clrl %a3@ <== NOT EXECUTED
44790: 6000 ff7c braw 4470e <partition_table_get+0x178> <== NOT EXECUTED
part_num++)
{
rc = data_to_part_desc(data, &part_desc);
if (rc != RTEMS_SUCCESSFUL)
{
free(sector);
44794: 2f2e ffb2 movel %fp@(-78),%sp@- <== NOT EXECUTED
44798: 4eb9 0004 5344 jsr 45344 <free> <== NOT EXECUTED
4479e: 588f addql #4,%sp <== NOT EXECUTED
disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
RTEMS_IDE_SECTOR_SIZE;
rc = read_mbr(fd, disk_desc);
close(fd);
447a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
447a2: 4eb9 0004 5070 jsr 45070 <close> <== NOT EXECUTED
447a8: 588f addql #4,%sp <== NOT EXECUTED
447aa: 6000 feb8 braw 44664 <partition_table_get+0xce> <== NOT EXECUTED
0004370c <pathconf>:
*/
long pathconf(
const char *path,
int name
)
{
4370c: 4e56 0000 linkw %fp,#0
43710: 2f03 movel %d3,%sp@-
43712: 2f02 movel %d2,%sp@-
int status;
int fd;
fd = open( path, O_RDONLY );
43714: 42a7 clrl %sp@-
43716: 2f2e 0008 movel %fp@(8),%sp@-
4371a: 4eb9 0004 34c0 jsr 434c0 <open>
if ( fd == -1 )
43720: 508f addql #8,%sp
)
{
int status;
int fd;
fd = open( path, O_RDONLY );
43722: 2400 movel %d0,%d2
if ( fd == -1 )
43724: 70ff moveq #-1,%d0
43726: b082 cmpl %d2,%d0
43728: 6728 beqs 43752 <pathconf+0x46> <== ALWAYS TAKEN
return -1;
status = fpathconf( fd, name );
4372a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4372e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43730: 4eb9 0004 86f0 jsr 486f0 <fpathconf> <== NOT EXECUTED
43736: 2600 movel %d0,%d3 <== NOT EXECUTED
(void) close( fd );
43738: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4373a: 4eb9 0004 8674 jsr 48674 <close> <== NOT EXECUTED
return status;
}
43740: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
43744: 2003 movel %d3,%d0 <== NOT EXECUTED
status = fpathconf( fd, name );
(void) close( fd );
return status;
43746: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
4374a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4374e: 4e5e unlk %fp <== NOT EXECUTED
43750: 4e75 rts <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_RDONLY );
if ( fd == -1 )
return -1;
43752: 76ff moveq #-1,%d3
status = fpathconf( fd, name );
(void) close( fd );
return status;
}
43754: 2003 movel %d3,%d0
43756: 242e fff8 movel %fp@(-8),%d2
4375a: 262e fffc movel %fp@(-4),%d3
4375e: 4e5e unlk %fp
...
0004ca5c <pipe_create>:
static uint16_t rtems_pipe_no = 0;
int pipe_create(
int filsdes[2]
)
{
4ca5c: 4e56 ffe4 linkw %fp,#-28
4ca60: 48d7 1c00 moveml %a2-%a4,%sp@
rtems_libio_t *iop;
int err = 0;
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
4ca64: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca>
4ca68: 4879 0005 edab pea 5edab <_CPU_m68k_BFFFO_table+0x100>
static uint16_t rtems_pipe_no = 0;
int pipe_create(
int filsdes[2]
)
{
4ca6e: 266e 0008 moveal %fp@(8),%a3
rtems_libio_t *iop;
int err = 0;
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
4ca72: 4eb9 0004 e0e4 jsr 4e0e4 <rtems_mkdir>
4ca78: 508f addql #8,%sp
4ca7a: 4a80 tstl %d0
4ca7c: 6600 00f6 bnew 4cb74 <pipe_create+0x118>
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4ca80: 45ee fff1 lea %fp@(-15),%a2
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4ca84: 3039 0006 07e8 movew 607e8 <rtems_pipe_no>,%d0
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4ca8a: 24bc 2f74 6d70 movel #796159344,%a2@
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4ca90: 2200 movel %d0,%d1
4ca92: 5281 addql #1,%d1
4ca94: 3f00 movew %d0,%sp@-
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4ca96: 203c 2f2e 6669 movel #791570025,%d0
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4ca9c: 4267 clrw %sp@-
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4ca9e: 307c 666f moveaw #26223,%a0
4caa2: 2d40 fff5 movel %d0,%fp@(-11)
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4caa6: 4879 0005 edb0 pea 5edb0 <_CPU_m68k_BFFFO_table+0x105>
4caac: 486e fffb pea %fp@(-5)
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4cab0: 3d48 fff9 movew %a0,%fp@(-7)
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4cab4: 33c1 0006 07e8 movew %d1,607e8 <rtems_pipe_no>
4caba: 4eb9 0005 0368 jsr 50368 <sprintf>
/* Try creating FIFO file until find an available file name */
while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {
4cac0: 4878 0180 pea 180 <DBL_MANT_DIG+0x14b>
4cac4: 2f0a movel %a2,%sp@-
4cac6: 4eb9 0004 de20 jsr 4de20 <mkfifo>
4cacc: 4fef 0014 lea %sp@(20),%sp
4cad0: 4a80 tstl %d0
4cad2: 6600 00c2 bnew 4cb96 <pipe_create+0x13a>
return -1;
/* sprintf(fifopath + 10, "%04x", rtems_pipe_no ++); */
}
/* Non-blocking open to avoid waiting for writers */
filsdes[0] = open(fifopath, O_RDONLY | O_NONBLOCK);
4cad6: 4878 4000 pea 4000 <D_MAX_EXP+0x3801>
4cada: 49f9 0004 48a0 lea 448a0 <open>,%a4
4cae0: 2f0a movel %a2,%sp@-
4cae2: 4e94 jsr %a4@
if (filsdes[0] < 0) {
4cae4: 508f addql #8,%sp
return -1;
/* sprintf(fifopath + 10, "%04x", rtems_pipe_no ++); */
}
/* Non-blocking open to avoid waiting for writers */
filsdes[0] = open(fifopath, O_RDONLY | O_NONBLOCK);
4cae6: 2680 movel %d0,%a3@
if (filsdes[0] < 0) {
4cae8: 6d4e blts 4cb38 <pipe_create+0xdc>
the file node will be deleted after it is closed by all. */
unlink(fifopath);
}
else {
/* Reset open file to blocking mode */
iop = rtems_libio_iop(filsdes[0]);
4caea: b0b9 0005 f830 cmpl 5f830 <rtems_libio_number_iops>,%d0
4caf0: 6442 bccs 4cb34 <pipe_create+0xd8> <== NEVER TAKEN
4caf2: 2200 movel %d0,%d1
4caf4: ed88 lsll #6,%d0
4caf6: e989 lsll #4,%d1
4caf8: 2079 0006 0edc moveal 60edc <rtems_libio_iops>,%a0
4cafe: 9081 subl %d1,%d0
4cb00: d1c0 addal %d0,%a0
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
4cb02: 70fe moveq #-2,%d0
4cb04: c1a8 000c andl %d0,%a0@(12)
filsdes[1] = open(fifopath, O_WRONLY);
4cb08: 4878 0001 pea 1 <ADD>
4cb0c: 2f0a movel %a2,%sp@-
4cb0e: 4e94 jsr %a4@
if (filsdes[1] < 0) {
4cb10: 508f addql #8,%sp
else {
/* Reset open file to blocking mode */
iop = rtems_libio_iop(filsdes[0]);
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
filsdes[1] = open(fifopath, O_WRONLY);
4cb12: 2740 0004 movel %d0,%a3@(4)
if (filsdes[1] < 0) {
4cb16: 6d3c blts 4cb54 <pipe_create+0xf8>
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4cb18: 2f0a movel %a2,%sp@-
int pipe_create(
int filsdes[2]
)
{
rtems_libio_t *iop;
int err = 0;
4cb1a: 99cc subal %a4,%a4
if (filsdes[1] < 0) {
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4cb1c: 4eb9 0004 792c jsr 4792c <unlink>
4cb22: 588f addql #4,%sp
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
4cb24: 4280 clrl %d0
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
}
if(err != 0)
4cb26: 4a8c tstl %a4
4cb28: 6656 bnes 4cb80 <pipe_create+0x124>
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4cb2a: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4
4cb30: 4e5e unlk %fp
4cb32: 4e75 rts
the file node will be deleted after it is closed by all. */
unlink(fifopath);
}
else {
/* Reset open file to blocking mode */
iop = rtems_libio_iop(filsdes[0]);
4cb34: 91c8 subal %a0,%a0 <== NOT EXECUTED
4cb36: 60ca bras 4cb02 <pipe_create+0xa6> <== NOT EXECUTED
}
/* Non-blocking open to avoid waiting for writers */
filsdes[0] = open(fifopath, O_RDONLY | O_NONBLOCK);
if (filsdes[0] < 0) {
err = errno;
4cb38: 4eb9 0004 f6e8 jsr 4f6e8 <__errno>
4cb3e: 2040 moveal %d0,%a0
4cb40: 2850 moveal %a0@,%a4
/* Delete file at errors, or else if pipe is successfully created
the file node will be deleted after it is closed by all. */
unlink(fifopath);
4cb42: 2f0a movel %a2,%sp@-
4cb44: 4eb9 0004 792c jsr 4792c <unlink>
4cb4a: 588f addql #4,%sp
}
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
4cb4c: 4280 clrl %d0
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
}
if(err != 0)
4cb4e: 4a8c tstl %a4
4cb50: 67d8 beqs 4cb2a <pipe_create+0xce> <== NEVER TAKEN
4cb52: 602c bras 4cb80 <pipe_create+0x124>
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
filsdes[1] = open(fifopath, O_WRONLY);
if (filsdes[1] < 0) {
err = errno;
4cb54: 4eb9 0004 f6e8 jsr 4f6e8 <__errno>
4cb5a: 2040 moveal %d0,%a0
4cb5c: 2850 moveal %a0@,%a4
close(filsdes[0]);
4cb5e: 2f13 movel %a3@,%sp@-
4cb60: 4eb9 0004 3848 jsr 43848 <close>
4cb66: 588f addql #4,%sp
}
unlink(fifopath);
4cb68: 2f0a movel %a2,%sp@-
4cb6a: 4eb9 0004 792c jsr 4792c <unlink>
4cb70: 588f addql #4,%sp
4cb72: 60b0 bras 4cb24 <pipe_create+0xc8>
{
rtems_libio_t *iop;
int err = 0;
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
return -1;
4cb74: 70ff moveq #-1,%d0
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4cb76: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4
4cb7c: 4e5e unlk %fp
4cb7e: 4e75 rts
close(filsdes[0]);
}
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
4cb80: 4eb9 0004 f6e8 jsr 4f6e8 <__errno>
4cb86: 2040 moveal %d0,%a0
4cb88: 70ff moveq #-1,%d0
4cb8a: 208c movel %a4,%a0@
return 0;
}
4cb8c: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4
4cb92: 4e5e unlk %fp
4cb94: 4e75 rts
memcpy(fifopath, "/tmp/.fifo", 10);
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
/* Try creating FIFO file until find an available file name */
while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {
if (errno != EEXIST){
4cb96: 4eb9 0004 f6e8 jsr 4f6e8 <__errno> <== NOT EXECUTED
return -1;
4cb9c: 70ff moveq #-1,%d0 <== NOT EXECUTED
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4cb9e: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED
4cba4: 4e5e unlk %fp <== NOT EXECUTED
0004dfb8 <pipe_ioctl>:
pipe_control_t *pipe,
ioctl_command_t cmd,
void *buffer,
rtems_libio_t *iop
)
{
4dfb8: 4e56 0000 linkw %fp,#0
if (cmd == FIONREAD) {
4dfbc: 203c 4004 667f movel #1074030207,%d0
pipe_control_t *pipe,
ioctl_command_t cmd,
void *buffer,
rtems_libio_t *iop
)
{
4dfc2: 2f0b movel %a3,%sp@-
4dfc4: 266e 0010 moveal %fp@(16),%a3
4dfc8: 2f0a movel %a2,%sp@-
4dfca: 246e 0008 moveal %fp@(8),%a2
if (cmd == FIONREAD) {
4dfce: b0ae 000c cmpl %fp@(12),%d0
4dfd2: 6638 bnes 4e00c <pipe_ioctl+0x54>
if (buffer == NULL)
4dfd4: 4a8b tstl %a3
4dfd6: 6750 beqs 4e028 <pipe_ioctl+0x70>
return -EFAULT;
if (! PIPE_LOCK(pipe))
4dfd8: 42a7 clrl %sp@-
4dfda: 42a7 clrl %sp@-
4dfdc: 2f2a 0028 movel %a2@(40),%sp@-
4dfe0: 4eb9 0004 8df0 jsr 48df0 <rtems_semaphore_obtain>
4dfe6: 4fef 000c lea %sp@(12),%sp
4dfea: 4a80 tstl %d0
4dfec: 662c bnes 4e01a <pipe_ioctl+0x62> <== NEVER TAKEN
return -EINTR;
/* Return length of pipe */
*(unsigned int *)buffer = pipe->Length;
4dfee: 26aa 000c movel %a2@(12),%a3@
PIPE_UNLOCK(pipe);
4dff2: 2f2a 0028 movel %a2@(40),%sp@-
4dff6: 4eb9 0004 8f48 jsr 48f48 <rtems_semaphore_release>
return 0;
}
return -EINVAL;
}
4dffc: 246e fff8 moveal %fp@(-8),%a2
return -EINTR;
/* Return length of pipe */
*(unsigned int *)buffer = pipe->Length;
PIPE_UNLOCK(pipe);
return 0;
4e000: 588f addql #4,%sp
4e002: 4280 clrl %d0
}
return -EINVAL;
}
4e004: 266e fffc moveal %fp@(-4),%a3
4e008: 4e5e unlk %fp
4e00a: 4e75 rts
4e00c: 246e fff8 moveal %fp@(-8),%a2
*(unsigned int *)buffer = pipe->Length;
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
4e010: 70ea moveq #-22,%d0
}
4e012: 266e fffc moveal %fp@(-4),%a3
4e016: 4e5e unlk %fp
4e018: 4e75 rts
4e01a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if (cmd == FIONREAD) {
if (buffer == NULL)
return -EFAULT;
if (! PIPE_LOCK(pipe))
return -EINTR;
4e01e: 70fc moveq #-4,%d0 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4e020: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4e024: 4e5e unlk %fp <== NOT EXECUTED
4e026: 4e75 rts <== NOT EXECUTED
4e028: 246e fff8 moveal %fp@(-8),%a2
rtems_libio_t *iop
)
{
if (cmd == FIONREAD) {
if (buffer == NULL)
return -EFAULT;
4e02c: 70f2 moveq #-14,%d0
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4e02e: 266e fffc moveal %fp@(-4),%a3
4e032: 4e5e unlk %fp
...
0004dc04 <pipe_read>:
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4dc04: 4e56 ffd0 linkw %fp,#-48
4dc08: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4dc0c: 42a7 clrl %sp@-
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4dc0e: 246e 0008 moveal %fp@(8),%a2
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4dc12: 47f9 0004 8df0 lea 48df0 <rtems_semaphore_obtain>,%a3
4dc18: 42a7 clrl %sp@-
4dc1a: 2f2a 0028 movel %a2@(40),%sp@-
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4dc1e: 2a6e 0014 moveal %fp@(20),%a5
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4dc22: 4e93 jsr %a3@
4dc24: 4fef 000c lea %sp@(12),%sp
4dc28: 4a80 tstl %d0
4dc2a: 6600 0178 bnew 4dda4 <pipe_read+0x1a0>
return -EINTR;
while (read < count) {
4dc2e: 4aae 0010 tstl %fp@(16)
4dc32: 6700 017e beqw 4ddb2 <pipe_read+0x1ae>
4dc36: 4284 clrl %d4
4dc38: 4283 clrl %d3
4dc3a: 49f9 0004 8f48 lea 48f48 <rtems_semaphore_release>,%a4
}
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
4dc40: 243c 0004 eccc movel #322764,%d2
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
pipe->Start = 0;
if (pipe->waitingWriters > 0)
PIPE_WAKEUPWRITERS(pipe);
4dc46: 2c3c 0004 ec70 movel #322672,%d6
if (chunk > chunk1) {
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);
memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
4dc4c: 2a3c 0005 0cd4 movel #330964,%d5
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
4dc52: 222a 000c movel %a2@(12),%d1
4dc56: 6676 bnes 4dcce <pipe_read+0xca>
/* Not an error */
if (pipe->Writers == 0)
4dc58: 4aaa 0014 tstl %a2@(20)
4dc5c: 6700 0104 beqw 4dd62 <pipe_read+0x15e>
goto out_locked;
if (LIBIO_NODELAY(iop)) {
4dc60: 7001 moveq #1,%d0
4dc62: c0ad 000c andl %a5@(12),%d0
4dc66: 6600 0108 bnew 4dd70 <pipe_read+0x16c>
goto out_locked;
}
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
PIPE_UNLOCK(pipe);
4dc6a: 2f2a 0028 movel %a2@(40),%sp@-
ret = -EAGAIN;
goto out_locked;
}
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
4dc6e: 52aa 0018 addql #1,%a2@(24)
PIPE_UNLOCK(pipe);
4dc72: 4e94 jsr %a4@
if (! PIPE_READWAIT(pipe))
4dc74: 2042 moveal %d2,%a0
4dc76: 42a7 clrl %sp@-
4dc78: 2f2a 002c movel %a2@(44),%sp@-
4dc7c: 4e90 jsr %a0@
4dc7e: 4fef 000c lea %sp@(12),%sp
4dc82: 4a80 tstl %d0
4dc84: 6636 bnes 4dcbc <pipe_read+0xb8> <== NEVER TAKEN
4dc86: 4287 clrl %d7
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4dc88: 42a7 clrl %sp@-
4dc8a: 42a7 clrl %sp@-
4dc8c: 2f2a 0028 movel %a2@(40),%sp@-
4dc90: 4e93 jsr %a3@
4dc92: 4fef 000c lea %sp@(12),%sp
4dc96: 4a80 tstl %d0
4dc98: 6600 00e4 bnew 4dd7e <pipe_read+0x17a>
/* WARN waitingReaders not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingReaders --;
4dc9c: 53aa 0018 subql #1,%a2@(24)
if (ret != 0)
4dca0: 4a87 tstl %d7
4dca2: 67ae beqs 4dc52 <pipe_read+0x4e> <== ALWAYS TAKEN
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4dca4: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4dca8: 4e94 jsr %a4@ <== NOT EXECUTED
4dcaa: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
if (read > 0)
4dcac: 4a83 tstl %d3
4dcae: 6f10 bles 4dcc0 <pipe_read+0xbc>
return read;
return ret;
}
4dcb0: 2003 movel %d3,%d0
4dcb2: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
4dcb8: 4e5e unlk %fp
4dcba: 4e75 rts
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
ret = -EINTR;
4dcbc: 7efc moveq #-4,%d7 <== NOT EXECUTED
4dcbe: 60c8 bras 4dc88 <pipe_read+0x84> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
return read;
return ret;
4dcc0: 2607 movel %d7,%d3
}
4dcc2: 2003 movel %d3,%d0
4dcc4: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
4dcca: 4e5e unlk %fp
4dccc: 4e75 rts
if (ret != 0)
goto out_locked;
}
/* Read chunk bytes */
chunk = MIN(count - read, pipe->Length);
4dcce: 202e 0010 movel %fp@(16),%d0
4dcd2: 2e01 movel %d1,%d7
4dcd4: 9084 subl %d4,%d0
4dcd6: b081 cmpl %d1,%d0
4dcd8: 6402 bccs 4dcdc <pipe_read+0xd8>
4dcda: 2e00 movel %d0,%d7
chunk1 = pipe->Size - pipe->Start;
4dcdc: 202a 0008 movel %a2@(8),%d0
4dce0: 222a 0004 movel %a2@(4),%d1
4dce4: 9280 subl %d0,%d1
if (chunk > chunk1) {
4dce6: b287 cmpl %d7,%d1
4dce8: 6c00 00a0 bgew 4dd8a <pipe_read+0x186>
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);
4dcec: 2f01 movel %d1,%sp@-
4dcee: d092 addl %a2@,%d0
4dcf0: 206e 000c moveal %fp@(12),%a0
4dcf4: 2f00 movel %d0,%sp@-
4dcf6: 4870 4800 pea %a0@(00000000,%d4:l)
4dcfa: 2045 moveal %d5,%a0
4dcfc: 2d41 fff8 movel %d1,%fp@(-8)
4dd00: 4e90 jsr %a0@
memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);
4dd02: 222e fff8 movel %fp@(-8),%d1
4dd06: 2007 movel %d7,%d0
4dd08: 9081 subl %d1,%d0
4dd0a: d881 addl %d1,%d4
4dd0c: 2f00 movel %d0,%sp@-
4dd0e: 2f12 movel %a2@,%sp@-
4dd10: 206e 000c moveal %fp@(12),%a0
4dd14: 4870 4800 pea %a0@(00000000,%d4:l)
4dd18: 2045 moveal %d5,%a0
4dd1a: 4e90 jsr %a0@
4dd1c: 4fef 0018 lea %sp@(24),%sp
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
4dd20: 2207 movel %d7,%d1
4dd22: d2aa 0008 addl %a2@(8),%d1
pipe->Start %= pipe->Size;
pipe->Length -= chunk;
4dd26: 202a 000c movel %a2@(12),%d0
4dd2a: 9087 subl %d7,%d0
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4dd2c: 4c6a 1004 0004 remul %a2@(4),%d4,%d1
pipe->Length -= chunk;
4dd32: 2540 000c movel %d0,%a2@(12)
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4dd36: 2544 0008 movel %d4,%a2@(8)
pipe->Length -= chunk;
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
4dd3a: 4a80 tstl %d0
4dd3c: 6604 bnes 4dd42 <pipe_read+0x13e>
pipe->Start = 0;
4dd3e: 42aa 0008 clrl %a2@(8)
if (pipe->waitingWriters > 0)
4dd42: 4aaa 001c tstl %a2@(28)
4dd46: 670e beqs 4dd56 <pipe_read+0x152>
PIPE_WAKEUPWRITERS(pipe);
4dd48: 486e fffc pea %fp@(-4)
4dd4c: 2046 moveal %d6,%a0
4dd4e: 2f2a 0030 movel %a2@(48),%sp@-
4dd52: 4e90 jsr %a0@
4dd54: 508f addql #8,%sp
read += chunk;
4dd56: d687 addl %d7,%d3
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
4dd58: 2803 movel %d3,%d4
4dd5a: b6ae 0010 cmpl %fp@(16),%d3
4dd5e: 6500 fef2 bcsw 4dc52 <pipe_read+0x4e>
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4dd62: 2f2a 0028 movel %a2@(40),%sp@-
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
/* Not an error */
if (pipe->Writers == 0)
4dd66: 4287 clrl %d7
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4dd68: 4e94 jsr %a4@
4dd6a: 588f addql #4,%sp
4dd6c: 6000 ff3e braw 4dcac <pipe_read+0xa8>
4dd70: 2f2a 0028 movel %a2@(40),%sp@-
/* Not an error */
if (pipe->Writers == 0)
goto out_locked;
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4dd74: 7ef5 moveq #-11,%d7
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4dd76: 4e94 jsr %a4@
4dd78: 588f addql #4,%sp
4dd7a: 6000 ff30 braw 4dcac <pipe_read+0xa8>
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingReaders not restored! */
ret = -EINTR;
4dd7e: 7efc moveq #-4,%d7 <== NOT EXECUTED
out_locked:
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
4dd80: 4a83 tstl %d3 <== NOT EXECUTED
4dd82: 6e00 ff2c bgtw 4dcb0 <pipe_read+0xac> <== NOT EXECUTED
4dd86: 6000 ff38 braw 4dcc0 <pipe_read+0xbc> <== NOT EXECUTED
if (chunk > chunk1) {
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);
memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
4dd8a: 2f07 movel %d7,%sp@-
4dd8c: d092 addl %a2@,%d0
4dd8e: 206e 000c moveal %fp@(12),%a0
4dd92: 2f00 movel %d0,%sp@-
4dd94: 4870 4800 pea %a0@(00000000,%d4:l)
4dd98: 2045 moveal %d5,%a0
4dd9a: 4e90 jsr %a0@
4dd9c: 4fef 000c lea %sp@(12),%sp
4dda0: 6000 ff7e braw 4dd20 <pipe_read+0x11c>
)
{
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4dda4: 76fc moveq #-4,%d3 <== NOT EXECUTED
out_nolock:
if (read > 0)
return read;
return ret;
}
4dda6: 2003 movel %d3,%d0 <== NOT EXECUTED
4dda8: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4ddae: 4e5e unlk %fp <== NOT EXECUTED
4ddb0: 4e75 rts <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4ddb2: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4ddb6: 49f9 0004 8f48 lea 48f48 <rtems_semaphore_release>,%a4 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
4ddbc: 4283 clrl %d3 <== NOT EXECUTED
4ddbe: 4287 clrl %d7 <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4ddc0: 4e94 jsr %a4@ <== NOT EXECUTED
4ddc2: 588f addql #4,%sp <== NOT EXECUTED
4ddc4: 6000 fee6 braw 4dcac <pipe_read+0xa8> <== NOT EXECUTED
0004d69c <pipe_release>:
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4d69c: 4e56 ffe8 linkw %fp,#-24
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4d6a0: 206e 000c moveal %fp@(12),%a0
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4d6a4: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
4d6a8: 286e 0008 moveal %fp@(8),%a4
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4d6ac: 7406 moveq #6,%d2
4d6ae: 2028 000c movel %a0@(12),%d0
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
pipe_control_t *pipe = *pipep;
4d6b2: 2454 moveal %a4@,%a2
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4d6b4: c480 andl %d0,%d2
if (mode & LIBIO_FLAGS_READ)
4d6b6: 0800 0001 btst #1,%d0
4d6ba: 6704 beqs 4d6c0 <pipe_release+0x24>
pipe->Readers --;
4d6bc: 53aa 0010 subql #1,%a2@(16)
if (mode & LIBIO_FLAGS_WRITE)
4d6c0: 44c0 movew %d0,%ccr
4d6c2: 6604 bnes 4d6c8 <pipe_release+0x2c>
pipe->Writers --;
4d6c4: 53aa 0014 subql #1,%a2@(20)
PIPE_UNLOCK(pipe);
4d6c8: 2f2a 0028 movel %a2@(40),%sp@-
4d6cc: 47f9 0004 8f48 lea 48f48 <rtems_semaphore_release>,%a3
4d6d2: 4e93 jsr %a3@
if (pipe->Readers == 0 && pipe->Writers == 0) {
4d6d4: 588f addql #4,%sp
4d6d6: 4aaa 0010 tstl %a2@(16)
4d6da: 6730 beqs 4d70c <pipe_release+0x70>
*pipep = NULL;
}
else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)
/* Notify waiting Writers that all their partners left */
PIPE_WAKEUPWRITERS(pipe);
else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)
4d6dc: 4aaa 0014 tstl %a2@(20)
4d6e0: 6616 bnes 4d6f8 <pipe_release+0x5c> <== NEVER TAKEN
4d6e2: 7002 moveq #2,%d0
4d6e4: b082 cmpl %d2,%d0
4d6e6: 6710 beqs 4d6f8 <pipe_release+0x5c> <== NEVER TAKEN
PIPE_WAKEUPREADERS(pipe);
4d6e8: 486e fffc pea %fp@(-4)
4d6ec: 2f2a 002c movel %a2@(44),%sp@-
4d6f0: 4eb9 0004 ec70 jsr 4ec70 <rtems_barrier_release>
4d6f6: 508f addql #8,%sp
#ifdef RTEMS_DEBUG
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc =
#endif
rtems_semaphore_release(pipe_semaphore);
4d6f8: 2f39 0006 1718 movel 61718 <pipe_semaphore>,%sp@-
4d6fe: 4e93 jsr %a3@
4d700: 588f addql #4,%sp
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4d702: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5
4d708: 4e5e unlk %fp
4d70a: 4e75 rts
if (mode & LIBIO_FLAGS_WRITE)
pipe->Writers --;
PIPE_UNLOCK(pipe);
if (pipe->Readers == 0 && pipe->Writers == 0) {
4d70c: 4aaa 0014 tstl %a2@(20)
4d710: 672a beqs 4d73c <pipe_release+0xa0>
delfile = TRUE;
#endif
pipe_free(pipe);
*pipep = NULL;
}
else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)
4d712: 7004 moveq #4,%d0
4d714: b082 cmpl %d2,%d0
4d716: 67e0 beqs 4d6f8 <pipe_release+0x5c> <== NEVER TAKEN
/* Notify waiting Writers that all their partners left */
PIPE_WAKEUPWRITERS(pipe);
4d718: 486e fffc pea %fp@(-4)
4d71c: 2f2a 0030 movel %a2@(48),%sp@-
4d720: 4eb9 0004 ec70 jsr 4ec70 <rtems_barrier_release>
4d726: 508f addql #8,%sp
#ifdef RTEMS_DEBUG
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc =
#endif
rtems_semaphore_release(pipe_semaphore);
4d728: 2f39 0006 1718 movel 61718 <pipe_semaphore>,%sp@-
4d72e: 4e93 jsr %a3@
4d730: 588f addql #4,%sp
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4d732: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5
4d738: 4e5e unlk %fp
4d73a: 4e75 rts
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d73c: 2f2a 002c movel %a2@(44),%sp@-
rtems_barrier_delete(pipe->writeBarrier);
rtems_semaphore_delete(pipe->Semaphore);
free(pipe->Buffer);
4d740: 4bf9 0004 4394 lea 44394 <free>,%a5
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d746: 243c 0004 ebcc movel #322508,%d2
4d74c: 2042 moveal %d2,%a0
4d74e: 4e90 jsr %a0@
rtems_barrier_delete(pipe->writeBarrier);
4d750: 2f2a 0030 movel %a2@(48),%sp@-
4d754: 2042 moveal %d2,%a0
4d756: 4e90 jsr %a0@
rtems_semaphore_delete(pipe->Semaphore);
4d758: 2f2a 0028 movel %a2@(40),%sp@-
4d75c: 4eb9 0004 8d18 jsr 48d18 <rtems_semaphore_delete>
free(pipe->Buffer);
4d762: 2f12 movel %a2@,%sp@-
4d764: 4e95 jsr %a5@
free(pipe);
4d766: 2f0a movel %a2,%sp@-
4d768: 4e95 jsr %a5@
/* To delete an anonymous pipe file when all users closed it */
if (pipe->Anonymous)
delfile = TRUE;
#endif
pipe_free(pipe);
*pipep = NULL;
4d76a: 4fef 0014 lea %sp@(20),%sp
4d76e: 4294 clrl %a4@
#ifdef RTEMS_DEBUG
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc =
#endif
rtems_semaphore_release(pipe_semaphore);
4d770: 2f39 0006 1718 movel 61718 <pipe_semaphore>,%sp@-
4d776: 4e93 jsr %a3@
4d778: 588f addql #4,%sp
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4d77a: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5
4d780: 4e5e unlk %fp <== NOT EXECUTED
0004ddc8 <pipe_write>:
pipe_control_t *pipe,
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4ddc8: 4e56 ffd4 linkw %fp,#-44
4ddcc: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4ddd0: 246e 0008 moveal %fp@(8),%a2
int chunk, chunk1, written = 0, ret = 0;
/* Write nothing */
if (count == 0)
4ddd4: 4aae 0010 tstl %fp@(16)
4ddd8: 660e bnes 4dde8 <pipe_write+0x20> <== ALWAYS TAKEN
return 0;
4ddda: 4283 clrl %d3 <== NOT EXECUTED
#endif
if (written > 0)
return written;
return ret;
}
4dddc: 2003 movel %d3,%d0
4ddde: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
4dde4: 4e5e unlk %fp
4dde6: 4e75 rts
/* Write nothing */
if (count == 0)
return 0;
if (! PIPE_LOCK(pipe))
4dde8: 42a7 clrl %sp@-
4ddea: 47f9 0004 8df0 lea 48df0 <rtems_semaphore_obtain>,%a3
4ddf0: 42a7 clrl %sp@-
4ddf2: 2f2a 0028 movel %a2@(40),%sp@-
4ddf6: 4e93 jsr %a3@
4ddf8: 4fef 000c lea %sp@(12),%sp
4ddfc: 4a80 tstl %d0
4ddfe: 6600 0188 bnew 4df88 <pipe_write+0x1c0>
return -EINTR;
if (pipe->Readers == 0) {
4de02: 4aaa 0010 tstl %a2@(16)
4de06: 6700 00dc beqw 4dee4 <pipe_write+0x11c>
ret = -EPIPE;
goto out_locked;
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
4de0a: 202a 0004 movel %a2@(4),%d0
4de0e: b0ae 0010 cmpl %fp@(16),%d0
4de12: 6500 0082 bcsw 4de96 <pipe_write+0xce>
4de16: 282e 0010 movel %fp@(16),%d4
4de1a: 4285 clrl %d5
4de1c: 4283 clrl %d3
4de1e: 49f9 0004 8f48 lea 48f48 <rtems_semaphore_release>,%a4
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
4de24: 4bf9 0004 eccc lea 4eccc <rtems_barrier_wait>,%a5
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
if (pipe->waitingReaders > 0)
PIPE_WAKEUPREADERS(pipe);
4de2a: 2e3c 0004 ec70 movel #322672,%d7
if (chunk > chunk1) {
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
}
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
4de30: 2c3c 0005 0cd4 movel #330964,%d6
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
while (PIPE_SPACE(pipe) < chunk) {
4de36: 222a 000c movel %a2@(12),%d1
4de3a: 2240 moveal %d0,%a1
4de3c: 93c1 subal %d1,%a1
4de3e: b889 cmpl %a1,%d4
4de40: 6300 00b6 blsw 4def8 <pipe_write+0x130>
if (LIBIO_NODELAY(iop)) {
4de44: 206e 0014 moveal %fp@(20),%a0
4de48: 7001 moveq #1,%d0
4de4a: c0a8 000c andl %a0@(12),%d0
4de4e: 6600 0124 bnew 4df74 <pipe_write+0x1ac>
goto out_locked;
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
4de52: 2f2a 0028 movel %a2@(40),%sp@-
ret = -EAGAIN;
goto out_locked;
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
4de56: 52aa 001c addql #1,%a2@(28)
PIPE_UNLOCK(pipe);
4de5a: 4e94 jsr %a4@
if (! PIPE_WRITEWAIT(pipe))
4de5c: 42a7 clrl %sp@-
4de5e: 2f2a 0030 movel %a2@(48),%sp@-
4de62: 4e95 jsr %a5@
4de64: 4fef 000c lea %sp@(12),%sp
4de68: 4a80 tstl %d0
4de6a: 664a bnes 4deb6 <pipe_write+0xee> <== NEVER TAKEN
4de6c: 4282 clrl %d2
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4de6e: 42a7 clrl %sp@-
4de70: 42a7 clrl %sp@-
4de72: 2f2a 0028 movel %a2@(40),%sp@-
4de76: 4e93 jsr %a3@
4de78: 4fef 000c lea %sp@(12),%sp
4de7c: 4a80 tstl %d0
4de7e: 6600 0102 bnew 4df82 <pipe_write+0x1ba>
/* WARN waitingWriters not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingWriters --;
4de82: 53aa 001c subql #1,%a2@(28)
if (ret != 0)
4de86: 4a82 tstl %d2
4de88: 6632 bnes 4debc <pipe_write+0xf4> <== NEVER TAKEN
goto out_locked;
if (pipe->Readers == 0) {
4de8a: 4aaa 0010 tstl %a2@(16)
4de8e: 6748 beqs 4ded8 <pipe_write+0x110> <== NEVER TAKEN
4de90: 202a 0004 movel %a2@(4),%d0
4de94: 60a0 bras 4de36 <pipe_write+0x6e>
ret = -EPIPE;
goto out_locked;
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
4de96: 7801 moveq #1,%d4 <== NOT EXECUTED
4de98: 4285 clrl %d5 <== NOT EXECUTED
4de9a: 4283 clrl %d3 <== NOT EXECUTED
4de9c: 49f9 0004 8f48 lea 48f48 <rtems_semaphore_release>,%a4 <== NOT EXECUTED
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
4dea2: 4bf9 0004 eccc lea 4eccc <rtems_barrier_wait>,%a5 <== NOT EXECUTED
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
if (pipe->waitingReaders > 0)
PIPE_WAKEUPREADERS(pipe);
4dea8: 2e3c 0004 ec70 movel #322672,%d7 <== NOT EXECUTED
if (chunk > chunk1) {
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
}
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
4deae: 2c3c 0005 0cd4 movel #330964,%d6 <== NOT EXECUTED
4deb4: 6080 bras 4de36 <pipe_write+0x6e> <== NOT EXECUTED
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
4deb6: 74fc moveq #-4,%d2 <== NOT EXECUTED
4deb8: 60b4 bras 4de6e <pipe_write+0xa6> <== NOT EXECUTED
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
4deba: 4282 clrl %d2
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4debc: 2f2a 0028 movel %a2@(40),%sp@-
4dec0: 4e94 jsr %a4@
4dec2: 588f addql #4,%sp
/* Signal SIGPIPE */
if (ret == -EPIPE)
kill(getpid(), SIGPIPE);
#endif
if (written > 0)
4dec4: 4a83 tstl %d3
4dec6: 6e00 ff14 bgtw 4dddc <pipe_write+0x14>
return written;
return ret;
4deca: 2602 movel %d2,%d3
}
4decc: 2003 movel %d3,%d0
4dece: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
4ded4: 4e5e unlk %fp
4ded6: 4e75 rts
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4ded8: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
pipe->waitingWriters --;
if (ret != 0)
goto out_locked;
if (pipe->Readers == 0) {
ret = -EPIPE;
4dedc: 74e0 moveq #-32,%d2 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4dede: 4e94 jsr %a4@ <== NOT EXECUTED
4dee0: 588f addql #4,%sp <== NOT EXECUTED
4dee2: 60e0 bras 4dec4 <pipe_write+0xfc> <== NOT EXECUTED
4dee4: 2f2a 0028 movel %a2@(40),%sp@-
4dee8: 49f9 0004 8f48 lea 48f48 <rtems_semaphore_release>,%a4
if (! PIPE_LOCK(pipe))
return -EINTR;
if (pipe->Readers == 0) {
ret = -EPIPE;
4deee: 74e0 moveq #-32,%d2
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
int chunk, chunk1, written = 0, ret = 0;
4def0: 4283 clrl %d3
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4def2: 4e94 jsr %a4@
4def4: 588f addql #4,%sp
4def6: 60cc bras 4dec4 <pipe_write+0xfc>
ret = -EPIPE;
goto out_locked;
}
}
chunk = MIN(count - written, PIPE_SPACE(pipe));
4def8: 282e 0010 movel %fp@(16),%d4
4defc: 2409 movel %a1,%d2
4defe: 9885 subl %d5,%d4
4df00: b889 cmpl %a1,%d4
4df02: 6402 bccs 4df06 <pipe_write+0x13e>
4df04: 2404 movel %d4,%d2
chunk1 = pipe->Size - PIPE_WSTART(pipe);
4df06: 2801 movel %d1,%d4
4df08: d8aa 0008 addl %a2@(8),%d4
4df0c: 4c40 4001 remul %d0,%d1,%d4
4df10: 2800 movel %d0,%d4
4df12: 9881 subl %d1,%d4
if (chunk > chunk1) {
4df14: b882 cmpl %d2,%d4
4df16: 6c7e bges 4df96 <pipe_write+0x1ce>
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
4df18: 206e 000c moveal %fp@(12),%a0
4df1c: 2f04 movel %d4,%sp@-
4df1e: 4870 5800 pea %a0@(00000000,%d5:l)
4df22: d292 addl %a2@,%d1
4df24: 2046 moveal %d6,%a0
memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
4df26: da84 addl %d4,%d5
}
chunk = MIN(count - written, PIPE_SPACE(pipe));
chunk1 = pipe->Size - PIPE_WSTART(pipe);
if (chunk > chunk1) {
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
4df28: 2f01 movel %d1,%sp@-
4df2a: 4e90 jsr %a0@
memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
4df2c: 206e 000c moveal %fp@(12),%a0
4df30: 2002 movel %d2,%d0
4df32: 9084 subl %d4,%d0
4df34: 2f00 movel %d0,%sp@-
4df36: 4870 5800 pea %a0@(00000000,%d5:l)
4df3a: 2046 moveal %d6,%a0
4df3c: 2f12 movel %a2@,%sp@-
4df3e: 4e90 jsr %a0@
4df40: 4fef 0018 lea %sp@(24),%sp
}
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
4df44: d5aa 000c addl %d2,%a2@(12)
if (pipe->waitingReaders > 0)
4df48: 4aaa 0018 tstl %a2@(24)
4df4c: 6616 bnes 4df64 <pipe_write+0x19c> <== NEVER TAKEN
PIPE_WAKEUPREADERS(pipe);
written += chunk;
4df4e: d682 addl %d2,%d3
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
4df50: 2a03 movel %d3,%d5
4df52: b6ae 0010 cmpl %fp@(16),%d3
4df56: 6400 ff62 bccw 4deba <pipe_write+0xf2>
4df5a: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
pipe->Length += chunk;
if (pipe->waitingReaders > 0)
PIPE_WAKEUPREADERS(pipe);
written += chunk;
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
4df5e: 7801 moveq #1,%d4 <== NOT EXECUTED
4df60: 6000 fed4 braw 4de36 <pipe_write+0x6e> <== NOT EXECUTED
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
if (pipe->waitingReaders > 0)
PIPE_WAKEUPREADERS(pipe);
4df64: 486e fffc pea %fp@(-4)
4df68: 2047 moveal %d7,%a0
4df6a: 2f2a 002c movel %a2@(44),%sp@-
4df6e: 4e90 jsr %a0@
4df70: 508f addql #8,%sp
4df72: 60da bras 4df4e <pipe_write+0x186>
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4df74: 2f2a 0028 movel %a2@(40),%sp@-
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
while (PIPE_SPACE(pipe) < chunk) {
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4df78: 74f5 moveq #-11,%d2
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4df7a: 4e94 jsr %a4@
4df7c: 588f addql #4,%sp
4df7e: 6000 ff44 braw 4dec4 <pipe_write+0xfc>
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingWriters not restored! */
ret = -EINTR;
4df82: 74fc moveq #-4,%d2 <== NOT EXECUTED
4df84: 6000 ff3e braw 4dec4 <pipe_write+0xfc> <== NOT EXECUTED
/* Write nothing */
if (count == 0)
return 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4df88: 76fc moveq #-4,%d3 <== NOT EXECUTED
#endif
if (written > 0)
return written;
return ret;
}
4df8a: 2003 movel %d3,%d0 <== NOT EXECUTED
4df8c: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4df92: 4e5e unlk %fp <== NOT EXECUTED
4df94: 4e75 rts <== NOT EXECUTED
if (chunk > chunk1) {
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
}
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
4df96: 206e 000c moveal %fp@(12),%a0
4df9a: 2f02 movel %d2,%sp@-
4df9c: 4870 5800 pea %a0@(00000000,%d5:l)
4dfa0: d292 addl %a2@,%d1
4dfa2: 2046 moveal %d6,%a0
4dfa4: 2f01 movel %d1,%sp@-
4dfa6: 4e90 jsr %a0@
4dfa8: 4fef 000c lea %sp@(12),%sp
pipe->Length += chunk;
4dfac: d5aa 000c addl %d2,%a2@(12)
if (pipe->waitingReaders > 0)
4dfb0: 4aaa 0018 tstl %a2@(24)
4dfb4: 6798 beqs 4df4e <pipe_write+0x186>
4dfb6: 60ac bras 4df64 <pipe_write+0x19c>
00047e30 <posix_memalign>:
int posix_memalign(
void **pointer,
size_t alignment,
size_t size
)
{
47e30: 4e56 0000 linkw %fp,#0
47e34: 222e 000c movel %fp@(12),%d1
/*
* Update call statistics
*/
MSBUMP(memalign_calls, 1);
if (((alignment - 1) & alignment) != 0 || (alignment < sizeof(void *)))
47e38: 2001 movel %d1,%d0
47e3a: 5380 subql #1,%d0
)
{
/*
* Update call statistics
*/
MSBUMP(memalign_calls, 1);
47e3c: 52b9 0006 5ed4 addql #1,65ed4 <rtems_malloc_statistics+0x8>
if (((alignment - 1) & alignment) != 0 || (alignment < sizeof(void *)))
47e42: c081 andl %d1,%d0
47e44: 6706 beqs 47e4c <posix_memalign+0x1c> <== ALWAYS TAKEN
/*
* rtems_memalign does all of the error checking work EXCEPT
* for adding restrictionso on the alignment.
*/
return rtems_memalign( pointer, alignment, size );
}
47e46: 7016 moveq #22,%d0
47e48: 4e5e unlk %fp
47e4a: 4e75 rts
/*
* Update call statistics
*/
MSBUMP(memalign_calls, 1);
if (((alignment - 1) & alignment) != 0 || (alignment < sizeof(void *)))
47e4c: 103c 0003 moveb #3,%d0
47e50: b081 cmpl %d1,%d0
47e52: 64f2 bccs 47e46 <posix_memalign+0x16>
/*
* rtems_memalign does all of the error checking work EXCEPT
* for adding restrictionso on the alignment.
*/
return rtems_memalign( pointer, alignment, size );
}
47e54: 4e5e unlk %fp
/*
* rtems_memalign does all of the error checking work EXCEPT
* for adding restrictionso on the alignment.
*/
return rtems_memalign( pointer, alignment, size );
47e56: 4ef9 0004 802c jmp 4802c <rtems_memalign>
0004c8b0 <ramdisk_allocate>:
void *area_begin,
uint32_t media_block_size,
rtems_blkdev_bnum media_block_count,
bool trace
)
{
4c8b0: 4e56 fff4 linkw %fp,#-12
4c8b4: 48d7 040c moveml %d2-%d3/%a2,%sp@
struct ramdisk *rd = malloc(sizeof(struct ramdisk));
4c8b8: 4878 0010 pea 10 <INVALID_OPERATION>
void *area_begin,
uint32_t media_block_size,
rtems_blkdev_bnum media_block_count,
bool trace
)
{
4c8bc: 242e 0008 movel %fp@(8),%d2
4c8c0: 162e 0017 moveb %fp@(23),%d3
struct ramdisk *rd = malloc(sizeof(struct ramdisk));
4c8c4: 4eb9 0004 49d4 jsr 449d4 <malloc>
if (rd == NULL) {
4c8ca: 588f addql #4,%sp
uint32_t media_block_size,
rtems_blkdev_bnum media_block_count,
bool trace
)
{
struct ramdisk *rd = malloc(sizeof(struct ramdisk));
4c8cc: 2440 moveal %d0,%a2
if (rd == NULL) {
4c8ce: 4a80 tstl %d0
4c8d0: 6724 beqs 4c8f6 <ramdisk_allocate+0x46> <== NEVER TAKEN
return NULL;
}
if (area_begin == NULL) {
4c8d2: 4a82 tstl %d2
4c8d4: 672c beqs 4c902 <ramdisk_allocate+0x52>
}
rd->malloced = true;
} else {
rd->malloced = false;
}
rd->block_size = media_block_size;
4c8d6: 24ae 000c movel %fp@(12),%a2@
return NULL;
}
rd->malloced = true;
} else {
rd->malloced = false;
4c8da: 4200 clrb %d0
}
rd->block_size = media_block_size;
rd->block_num = media_block_count;
rd->area = area_begin;
rd->trace = trace;
4c8dc: 1543 000e moveb %d3,%a2@(14)
} else {
rd->malloced = false;
}
rd->block_size = media_block_size;
rd->block_num = media_block_count;
rd->area = area_begin;
4c8e0: 2542 0008 movel %d2,%a2@(8)
return NULL;
}
rd->malloced = true;
} else {
rd->malloced = false;
4c8e4: 1540 000d moveb %d0,%a2@(13)
}
rd->block_size = media_block_size;
rd->block_num = media_block_count;
4c8e8: 202e 0010 movel %fp@(16),%d0
4c8ec: 2540 0004 movel %d0,%a2@(4)
rd->area = area_begin;
rd->trace = trace;
rd->initialized = true;
4c8f0: 7001 moveq #1,%d0
4c8f2: 1540 000c moveb %d0,%a2@(12)
return rd;
}
4c8f6: 200a movel %a2,%d0
4c8f8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
4c8fe: 4e5e unlk %fp
4c900: 4e75 rts
if (rd == NULL) {
return NULL;
}
if (area_begin == NULL) {
area_begin = calloc(media_block_count, media_block_size);
4c902: 2f2e 000c movel %fp@(12),%sp@-
4c906: 2f2e 0010 movel %fp@(16),%sp@-
4c90a: 4eb9 0004 4208 jsr 44208 <calloc>
if (area_begin == NULL) {
4c910: 508f addql #8,%sp
if (rd == NULL) {
return NULL;
}
if (area_begin == NULL) {
area_begin = calloc(media_block_count, media_block_size);
4c912: 2400 movel %d0,%d2
if (area_begin == NULL) {
4c914: 6722 beqs 4c938 <ramdisk_allocate+0x88> <== NEVER TAKEN
}
rd->malloced = true;
} else {
rd->malloced = false;
}
rd->block_size = media_block_size;
4c916: 24ae 000c movel %fp@(12),%a2@
if (area_begin == NULL) {
free(rd);
return NULL;
}
rd->malloced = true;
4c91a: 7001 moveq #1,%d0
} else {
rd->malloced = false;
}
rd->block_size = media_block_size;
rd->block_num = media_block_count;
rd->area = area_begin;
4c91c: 2542 0008 movel %d2,%a2@(8)
if (area_begin == NULL) {
free(rd);
return NULL;
}
rd->malloced = true;
4c920: 1540 000d moveb %d0,%a2@(13)
} else {
rd->malloced = false;
}
rd->block_size = media_block_size;
rd->block_num = media_block_count;
4c924: 202e 0010 movel %fp@(16),%d0
4c928: 2540 0004 movel %d0,%a2@(4)
rd->area = area_begin;
rd->trace = trace;
rd->initialized = true;
4c92c: 7001 moveq #1,%d0
rd->malloced = false;
}
rd->block_size = media_block_size;
rd->block_num = media_block_count;
rd->area = area_begin;
rd->trace = trace;
4c92e: 1543 000e moveb %d3,%a2@(14)
rd->initialized = true;
4c932: 1540 000c moveb %d0,%a2@(12)
4c936: 60be bras 4c8f6 <ramdisk_allocate+0x46>
}
if (area_begin == NULL) {
area_begin = calloc(media_block_count, media_block_size);
if (area_begin == NULL) {
free(rd);
4c938: 2f0a movel %a2,%sp@- <== NOT EXECUTED
return NULL;
4c93a: 95ca subal %a2,%a2 <== NOT EXECUTED
}
if (area_begin == NULL) {
area_begin = calloc(media_block_count, media_block_size);
if (area_begin == NULL) {
free(rd);
4c93c: 4eb9 0004 4528 jsr 44528 <free> <== NOT EXECUTED
return NULL;
4c942: 588f addql #4,%sp <== NOT EXECUTED
rd->area = area_begin;
rd->trace = trace;
rd->initialized = true;
return rd;
}
4c944: 200a movel %a2,%d0 <== NOT EXECUTED
4c946: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4c94c: 4e5e unlk %fp <== NOT EXECUTED
0004c950 <ramdisk_free>:
void ramdisk_free(ramdisk *rd)
{
4c950: 4e56 0000 linkw %fp,#0
4c954: 2f0a movel %a2,%sp@-
4c956: 246e 0008 moveal %fp@(8),%a2
if (rd != NULL) {
4c95a: 4a8a tstl %a2
4c95c: 6732 beqs 4c990 <ramdisk_free+0x40> <== NEVER TAKEN
if (rd->malloced) {
4c95e: 4a2a 000d tstb %a2@(13)
4c962: 6610 bnes 4c974 <ramdisk_free+0x24>
free(rd->area);
}
free(rd);
4c964: 2d4a 0008 movel %a2,%fp@(8)
}
}
4c968: 246e fffc moveal %fp@(-4),%a2
4c96c: 4e5e unlk %fp
{
if (rd != NULL) {
if (rd->malloced) {
free(rd->area);
}
free(rd);
4c96e: 4ef9 0004 4528 jmp 44528 <free>
void ramdisk_free(ramdisk *rd)
{
if (rd != NULL) {
if (rd->malloced) {
free(rd->area);
4c974: 2f2a 0008 movel %a2@(8),%sp@-
4c978: 4eb9 0004 4528 jsr 44528 <free>
4c97e: 588f addql #4,%sp
}
free(rd);
4c980: 2d4a 0008 movel %a2,%fp@(8)
}
}
4c984: 246e fffc moveal %fp@(-4),%a2
4c988: 4e5e unlk %fp
{
if (rd != NULL) {
if (rd->malloced) {
free(rd->area);
}
free(rd);
4c98a: 4ef9 0004 4528 jmp 44528 <free>
}
}
4c990: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c994: 4e5e unlk %fp <== NOT EXECUTED
0004d5e8 <ramdisk_initialize>:
rtems_device_driver
ramdisk_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor __attribute__((unused)),
void *arg __attribute__((unused)))
{
4d5e8: 4e56 ffc0 linkw %fp,#-64
4d5ec: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4d5f0: 2a2e 0008 movel %fp@(8),%d5
rtems_device_minor_number i;
rtems_ramdisk_config *c = rtems_ramdisk_configuration;
struct ramdisk *r;
rtems_status_code rc;
rc = rtems_disk_io_initialize();
4d5f4: 4eb9 0004 40cc jsr 440cc <rtems_disk_io_initialize>
if (rc != RTEMS_SUCCESSFUL)
4d5fa: 4a80 tstl %d0
4d5fc: 670a beqs 4d608 <ramdisk_initialize+0x20> <== ALWAYS TAKEN
}
r->initialized = false;
}
}
return RTEMS_SUCCESSFUL;
}
4d5fe: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d604: 4e5e unlk %fp <== NOT EXECUTED
4d606: 4e75 rts <== NOT EXECUTED
* This is allocating memory for a RAM disk which will persist for
* the life of the system. RTEMS has no "de-initialize" driver call
* so there is no corresponding free(r). Coverity is correct that
* it is never freed but this is not a problem.
*/
r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
4d608: 4878 0010 pea 10 <INVALID_OPERATION>
4d60c: 2439 0006 3868 movel 63868 <rtems_ramdisk_configuration_size>,%d2
4d612: 2f02 movel %d2,%sp@-
4d614: 4eb9 0004 5024 jsr 45024 <calloc>
r->trace = false;
for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)
4d61a: 508f addql #8,%sp
* This is allocating memory for a RAM disk which will persist for
* the life of the system. RTEMS has no "de-initialize" driver call
* so there is no corresponding free(r). Coverity is correct that
* it is never freed but this is not a problem.
*/
r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
4d61c: 2440 moveal %d0,%a2
r->trace = false;
4d61e: 4200 clrb %d0
4d620: 1540 000e moveb %d0,%a2@(14)
for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)
4d624: 4a82 tstl %d2
4d626: 6700 009e beqw 4d6c6 <ramdisk_initialize+0xde>
#include <rtems.h>
#include <rtems/libio.h>
#include <rtems/ramdisk.h>
rtems_device_driver
ramdisk_initialize(
4d62a: 2e0a movel %a2,%d7
4d62c: 49ea 000c lea %a2@(12),%a4
4d630: 5087 addql #8,%d7
rtems_device_major_number major,
rtems_device_minor_number minor __attribute__((unused)),
void *arg __attribute__((unused)))
{
rtems_device_minor_number i;
rtems_ramdisk_config *c = rtems_ramdisk_configuration;
4d632: 47f9 0006 386c lea 6386c <rtems_ramdisk_configuration>,%a3
* so there is no corresponding free(r). Coverity is correct that
* it is never freed but this is not a problem.
*/
r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
r->trace = false;
for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)
4d638: 4284 clrl %d4
4d63a: 4bee fff7 lea %fp@(-9),%a5
{
r->malloced = false;
r->initialized = true;
r->area = c->location;
}
rc = rtems_disk_create_phys(dev, c->block_size, c->block_num,
4d63e: 2c3c 0004 3e96 movel #278166,%d6
r->block_size = c->block_size;
r->block_num = c->block_num;
if (c->location == NULL)
{
r->malloced = true;
r->area = malloc(r->block_size * r->block_num);
4d644: 2d45 ffe8 movel %d5,%fp@(-24)
for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)
{
dev_t dev = rtems_filesystem_make_dev_t(major, i);
char name [] = RAMDISK_DEVICE_BASE_NAME "a";
name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;
r->block_size = c->block_size;
4d648: 2213 movel %a3@,%d1
r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
r->trace = false;
for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)
{
dev_t dev = rtems_filesystem_make_dev_t(major, i);
char name [] = RAMDISK_DEVICE_BASE_NAME "a";
4d64a: 2a3c 2f72 6461 movel #796025953,%d5
4d650: 2604 movel %d4,%d3
name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;
r->block_size = c->block_size;
r->block_num = c->block_num;
4d652: 206b 0004 moveal %a3@(4),%a0
if (c->location == NULL)
4d656: 202b 0008 movel %a3@(8),%d0
for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)
{
dev_t dev = rtems_filesystem_make_dev_t(major, i);
char name [] = RAMDISK_DEVICE_BASE_NAME "a";
name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;
r->block_size = c->block_size;
4d65a: 2481 movel %d1,%a2@
4d65c: 242e ffe8 movel %fp@(-24),%d2
r->block_num = c->block_num;
4d660: 2548 0004 movel %a0,%a2@(4)
r->trace = false;
for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)
{
dev_t dev = rtems_filesystem_make_dev_t(major, i);
char name [] = RAMDISK_DEVICE_BASE_NAME "a";
name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;
4d664: 1d44 ffff moveb %d4,%fp@(-1)
r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
r->trace = false;
for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)
{
dev_t dev = rtems_filesystem_make_dev_t(major, i);
char name [] = RAMDISK_DEVICE_BASE_NAME "a";
4d668: 2abc 2f64 6576 movel #795108726,%a5@
4d66e: 2d45 fffb movel %d5,%fp@(-5)
name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;
r->block_size = c->block_size;
r->block_num = c->block_num;
if (c->location == NULL)
4d672: 4a80 tstl %d0
4d674: 676c beqs 4d6e2 <ramdisk_initialize+0xfa> <== ALWAYS TAKEN
}
else
{
r->malloced = false;
r->initialized = true;
r->area = c->location;
4d676: 2247 moveal %d7,%a1 <== NOT EXECUTED
r->initialized = true;
}
}
else
{
r->malloced = false;
4d678: 4205 clrb %d5 <== NOT EXECUTED
r->initialized = true;
4d67a: 18bc 0001 moveb #1,%a4@ <== NOT EXECUTED
r->initialized = true;
}
}
else
{
r->malloced = false;
4d67e: 1945 0001 moveb %d5,%a4@(1) <== NOT EXECUTED
r->initialized = true;
r->area = c->location;
4d682: 2280 movel %d0,%a1@ <== NOT EXECUTED
}
rc = rtems_disk_create_phys(dev, c->block_size, c->block_num,
4d684: 2f0d movel %a5,%sp@-
4d686: 2f0a movel %a2,%sp@-
4d688: 4879 0004 d718 pea 4d718 <ramdisk_ioctl>
4d68e: 2f08 movel %a0,%sp@-
4d690: 2046 moveal %d6,%a0
4d692: 2f01 movel %d1,%sp@-
4d694: 2f03 movel %d3,%sp@-
4d696: 2f02 movel %d2,%sp@-
4d698: 4e90 jsr %a0@
ramdisk_ioctl, r, name);
if (rc != RTEMS_SUCCESSFUL)
4d69a: 4fef 001c lea %sp@(28),%sp
4d69e: 4a80 tstl %d0
4d6a0: 6708 beqs 4d6aa <ramdisk_initialize+0xc2> <== ALWAYS TAKEN
{
if (r->malloced)
4d6a2: 4a2c 0001 tstb %a4@(1) <== NOT EXECUTED
4d6a6: 662a bnes 4d6d2 <ramdisk_initialize+0xea> <== NOT EXECUTED
{
free(r->area);
}
r->initialized = false;
4d6a8: 4214 clrb %a4@ <== NOT EXECUTED
* so there is no corresponding free(r). Coverity is correct that
* it is never freed but this is not a problem.
*/
r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
r->trace = false;
for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)
4d6aa: 5284 addql #1,%d4
4d6ac: 47eb 000c lea %a3@(12),%a3
4d6b0: 45ea 0010 lea %a2@(16),%a2
4d6b4: 49ec 0010 lea %a4@(16),%a4
4d6b8: 0687 0000 0010 addil #16,%d7
4d6be: b8b9 0006 3868 cmpl 63868 <rtems_ramdisk_configuration_size>,%d4
4d6c4: 6582 bcss 4d648 <ramdisk_initialize+0x60> <== NEVER TAKEN
free(r->area);
}
r->initialized = false;
}
}
return RTEMS_SUCCESSFUL;
4d6c6: 4280 clrl %d0
}
4d6c8: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5
4d6ce: 4e5e unlk %fp
4d6d0: 4e75 rts
ramdisk_ioctl, r, name);
if (rc != RTEMS_SUCCESSFUL)
{
if (r->malloced)
{
free(r->area);
4d6d2: 2247 moveal %d7,%a1 <== NOT EXECUTED
4d6d4: 2f11 movel %a1@,%sp@- <== NOT EXECUTED
4d6d6: 4eb9 0004 5344 jsr 45344 <free> <== NOT EXECUTED
4d6dc: 588f addql #4,%sp <== NOT EXECUTED
}
r->initialized = false;
4d6de: 4214 clrb %a4@ <== NOT EXECUTED
4d6e0: 60c8 bras 4d6aa <ramdisk_initialize+0xc2> <== NOT EXECUTED
r->block_size = c->block_size;
r->block_num = c->block_num;
if (c->location == NULL)
{
r->malloced = true;
r->area = malloc(r->block_size * r->block_num);
4d6e2: 2008 movel %a0,%d0
4d6e4: 4c01 0800 mulsl %d1,%d0
name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;
r->block_size = c->block_size;
r->block_num = c->block_num;
if (c->location == NULL)
{
r->malloced = true;
4d6e8: 7a01 moveq #1,%d5
r->area = malloc(r->block_size * r->block_num);
4d6ea: 2f00 movel %d0,%sp@-
name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;
r->block_size = c->block_size;
r->block_num = c->block_num;
if (c->location == NULL)
{
r->malloced = true;
4d6ec: 1945 0001 moveb %d5,%a4@(1)
r->area = malloc(r->block_size * r->block_num);
4d6f0: 2d41 fff0 movel %d1,%fp@(-16)
4d6f4: 2d48 ffec movel %a0,%fp@(-20)
4d6f8: 4eb9 0004 594c jsr 4594c <malloc>
if (r->area == NULL) /* No enough memory for this disk */
4d6fe: 222e fff0 movel %fp@(-16),%d1
r->block_size = c->block_size;
r->block_num = c->block_num;
if (c->location == NULL)
{
r->malloced = true;
r->area = malloc(r->block_size * r->block_num);
4d702: 2247 moveal %d7,%a1
if (r->area == NULL) /* No enough memory for this disk */
4d704: 588f addql #4,%sp
4d706: 206e ffec moveal %fp@(-20),%a0
r->block_size = c->block_size;
r->block_num = c->block_num;
if (c->location == NULL)
{
r->malloced = true;
r->area = malloc(r->block_size * r->block_num);
4d70a: 2280 movel %d0,%a1@
if (r->area == NULL) /* No enough memory for this disk */
4d70c: 679a beqs 4d6a8 <ramdisk_initialize+0xc0> <== NEVER TAKEN
r->initialized = false;
continue;
}
else
{
r->initialized = true;
4d70e: 18bc 0001 moveb #1,%a4@
4d712: 6000 ff70 braw 4d684 <ramdisk_initialize+0x9c>
...
0004c76c <ramdisk_ioctl>:
return 0;
}
int
ramdisk_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
4c76c: 4e56 ffe8 linkw %fp,#-24
4c770: 206e 0008 moveal %fp@(8),%a0
4c774: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
4c778: 202e 000c movel %fp@(12),%d0
4c77c: 266e 0010 moveal %fp@(16),%a3
break;
}
errno = EINVAL;
return -1;
}
4c780: 2868 003c moveal %a0@(60),%a4
int
ramdisk_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
struct ramdisk *rd = rtems_disk_get_driver_data(dd);
switch (req)
4c784: 0c80 2000 4207 cmpil #536887815,%d0
4c78a: 6722 beqs 4c7ae <ramdisk_ioctl+0x42>
4c78c: 0c80 c018 4201 cmpil #-1072152063,%d0
4c792: 673a beqs 4c7ce <ramdisk_ioctl+0x62>
ramdisk_free(rd);
}
break;
default:
return rtems_blkdev_ioctl (dd, req, argp);
4c794: 2d4b 0010 movel %a3,%fp@(16)
4c798: 2d40 000c movel %d0,%fp@(12)
break;
}
errno = EINVAL;
return -1;
}
4c79c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
ramdisk_free(rd);
}
break;
default:
return rtems_blkdev_ioctl (dd, req, argp);
4c7a2: 2d48 0008 movel %a0,%fp@(8)
break;
}
errno = EINVAL;
return -1;
}
4c7a6: 4e5e unlk %fp
ramdisk_free(rd);
}
break;
default:
return rtems_blkdev_ioctl (dd, req, argp);
4c7a8: 4ef9 0004 eecc jmp 4eecc <rtems_blkdev_ioctl>
}
break;
}
case RTEMS_BLKIO_DELETED:
if (rd->free_at_delete_request) {
4c7ae: 4a2c 000f tstb %a4@(15)
4c7b2: 6600 00de bnew 4c892 <ramdisk_ioctl+0x126>
default:
return rtems_blkdev_ioctl (dd, req, argp);
break;
}
errno = EINVAL;
4c7b6: 4eb9 0005 29b4 jsr 529b4 <__errno>
4c7bc: 7216 moveq #22,%d1
4c7be: 2040 moveal %d0,%a0
return -1;
4c7c0: 70ff moveq #-1,%d0
default:
return rtems_blkdev_ioctl (dd, req, argp);
break;
}
errno = EINVAL;
4c7c2: 2081 movel %d1,%a0@
return -1;
}
4c7c4: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4c7ca: 4e5e unlk %fp
4c7cc: 4e75 rts
{
case RTEMS_BLKIO_REQUEST:
{
rtems_blkdev_request *r = argp;
switch (r->req)
4c7ce: 2013 movel %a3@,%d0
4c7d0: 6654 bnes 4c826 <ramdisk_ioctl+0xba>
break;
}
errno = EINVAL;
return -1;
}
4c7d2: 262c 0008 movel %a4@(8),%d3
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c7d6: 45eb 0018 lea %a3@(24),%a2
4c7da: 4aab 0010 tstl %a3@(16)
4c7de: 672e beqs 4c80e <ramdisk_ioctl+0xa2> <== NEVER TAKEN
4c7e0: 4282 clrl %d2
4c7e2: 4bf9 0005 31d4 lea 531d4 <memcpy>,%a5
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk read: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
from + (sg->block * rd->block_size));
#endif
memcpy(sg->buffer, from + (sg->block * rd->block_size), sg->length);
4c7e8: 2012 movel %a2@,%d0
4c7ea: 4c14 0800 mulsl %a4@,%d0
4c7ee: 2043 moveal %d3,%a0
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c7f0: 5282 addql #1,%d2
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk read: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
from + (sg->block * rd->block_size));
#endif
memcpy(sg->buffer, from + (sg->block * rd->block_size), sg->length);
4c7f2: 2f2a 0004 movel %a2@(4),%sp@-
4c7f6: 4870 0800 pea %a0@(00000000,%d0:l)
4c7fa: 2f2a 0008 movel %a2@(8),%sp@-
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c7fe: 45ea 0010 lea %a2@(16),%a2
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk read: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
from + (sg->block * rd->block_size));
#endif
memcpy(sg->buffer, from + (sg->block * rd->block_size), sg->length);
4c802: 4e95 jsr %a5@
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c804: 4fef 000c lea %sp@(12),%sp
4c808: b4ab 0010 cmpl %a3@(16),%d2
4c80c: 65da bcss 4c7e8 <ramdisk_ioctl+0x7c> <== NEVER TAKEN
static inline void rtems_blkdev_request_done(
rtems_blkdev_request *req,
rtems_status_code status
)
{
(*req->done)(req, status);
4c80e: 42a7 clrl %sp@-
4c810: 206b 0004 moveal %a3@(4),%a0
4c814: 2f0b movel %a3,%sp@-
4c816: 4e90 jsr %a0@
{
case RTEMS_BLKDEV_REQ_READ:
return ramdisk_read(rd, r);
case RTEMS_BLKDEV_REQ_WRITE:
return ramdisk_write(rd, r);
4c818: 508f addql #8,%sp
4c81a: 4280 clrl %d0
break;
}
errno = EINVAL;
return -1;
}
4c81c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4c822: 4e5e unlk %fp
4c824: 4e75 rts
{
case RTEMS_BLKIO_REQUEST:
{
rtems_blkdev_request *r = argp;
switch (r->req)
4c826: 7201 moveq #1,%d1
4c828: b280 cmpl %d0,%d1
4c82a: 668a bnes 4c7b6 <ramdisk_ioctl+0x4a> <== NEVER TAKEN
break;
}
errno = EINVAL;
return -1;
}
4c82c: 262c 0008 movel %a4@(8),%d3
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c830: 45eb 0018 lea %a3@(24),%a2
4c834: 4aab 0010 tstl %a3@(16)
4c838: 67d4 beqs 4c80e <ramdisk_ioctl+0xa2> <== NEVER TAKEN
4c83a: 4282 clrl %d2
4c83c: 4bf9 0005 31d4 lea 531d4 <memcpy>,%a5
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
to + (sg->block * rd->block_size));
#endif
memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
4c842: 2012 movel %a2@,%d0
4c844: 4c14 0800 mulsl %a4@,%d0
4c848: 2043 moveal %d3,%a0
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c84a: 5282 addql #1,%d2
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
to + (sg->block * rd->block_size));
#endif
memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
4c84c: 2f2a 0004 movel %a2@(4),%sp@-
4c850: 2f2a 0008 movel %a2@(8),%sp@-
4c854: 4870 0800 pea %a0@(00000000,%d0:l)
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c858: 45ea 0010 lea %a2@(16),%a2
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
to + (sg->block * rd->block_size));
#endif
memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
4c85c: 4e95 jsr %a5@
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c85e: 4fef 000c lea %sp@(12),%sp
4c862: b4ab 0010 cmpl %a3@(16),%d2
4c866: 64a6 bccs 4c80e <ramdisk_ioctl+0xa2>
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
to + (sg->block * rd->block_size));
#endif
memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
4c868: 2012 movel %a2@,%d0
4c86a: 4c14 0800 mulsl %a4@,%d0
4c86e: 2043 moveal %d3,%a0
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c870: 5282 addql #1,%d2
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
to + (sg->block * rd->block_size));
#endif
memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
4c872: 2f2a 0004 movel %a2@(4),%sp@-
4c876: 2f2a 0008 movel %a2@(8),%sp@-
4c87a: 4870 0800 pea %a0@(00000000,%d0:l)
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c87e: 45ea 0010 lea %a2@(16),%a2
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
to + (sg->block * rd->block_size));
#endif
memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
4c882: 4e95 jsr %a5@
#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
4c884: 4fef 000c lea %sp@(12),%sp
4c888: b4ab 0010 cmpl %a3@(16),%d2
4c88c: 65b4 bcss 4c842 <ramdisk_ioctl+0xd6>
4c88e: 6000 ff7e braw 4c80e <ramdisk_ioctl+0xa2>
break;
}
case RTEMS_BLKIO_DELETED:
if (rd->free_at_delete_request) {
ramdisk_free(rd);
4c892: 2f0c movel %a4,%sp@-
4c894: 4eb9 0004 c950 jsr 4c950 <ramdisk_free>
4c89a: 588f addql #4,%sp
default:
return rtems_blkdev_ioctl (dd, req, argp);
break;
}
errno = EINVAL;
4c89c: 4eb9 0005 29b4 jsr 529b4 <__errno>
4c8a2: 7216 moveq #22,%d1
4c8a4: 2040 moveal %d0,%a0
return -1;
4c8a6: 70ff moveq #-1,%d0
default:
return rtems_blkdev_ioctl (dd, req, argp);
break;
}
errno = EINVAL;
4c8a8: 2081 movel %d1,%a0@
4c8aa: 6000 ff18 braw 4c7c4 <ramdisk_ioctl+0x58>
...
0004c998 <ramdisk_register>:
rtems_blkdev_bnum media_block_count,
bool trace,
const char *disk,
dev_t *dev_ptr
)
{
4c998: 4e56 fff0 linkw %fp,#-16
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_device_major_number major = 0;
4c99c: 204e moveal %fp,%a0
rtems_blkdev_bnum media_block_count,
bool trace,
const char *disk,
dev_t *dev_ptr
)
{
4c99e: 48d7 001c moveml %d2-%d4,%sp@
4c9a2: 142e 0013 moveb %fp@(19),%d2
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_device_major_number major = 0;
4c9a6: 42a0 clrl %a0@-
ramdisk *rd = NULL;
dev_t dev = 0;
sc = rtems_io_register_driver(0, &ramdisk_ops, &major);
4c9a8: 2f08 movel %a0,%sp@-
4c9aa: 4879 0006 1bfc pea 61bfc <ramdisk_ops>
4c9b0: 42a7 clrl %sp@-
4c9b2: 4eb9 0004 94dc jsr 494dc <rtems_io_register_driver>
if (sc != RTEMS_SUCCESSFUL) {
4c9b8: 4fef 000c lea %sp@(12),%sp
4c9bc: 4a80 tstl %d0
4c9be: 670c beqs 4c9cc <ramdisk_register+0x34> <== ALWAYS TAKEN
return RTEMS_UNSATISFIED;
4c9c0: 700d moveq #13,%d0 <== NOT EXECUTED
}
*dev_ptr = dev;
return RTEMS_SUCCESSFUL;
}
4c9c2: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4c9c8: 4e5e unlk %fp <== NOT EXECUTED
4c9ca: 4e75 rts <== NOT EXECUTED
sc = rtems_io_register_driver(0, &ramdisk_ops, &major);
if (sc != RTEMS_SUCCESSFUL) {
return RTEMS_UNSATISFIED;
}
rd = ramdisk_allocate(NULL, media_block_size, media_block_count, trace);
4c9cc: 0282 0000 00ff andil #255,%d2
4c9d2: 2f02 movel %d2,%sp@-
4c9d4: 2f2e 000c movel %fp@(12),%sp@-
4c9d8: 2f2e 0008 movel %fp@(8),%sp@-
4c9dc: 42a7 clrl %sp@-
4c9de: 4eb9 0004 c8b0 jsr 4c8b0 <ramdisk_allocate>
if (rd == NULL) {
4c9e4: 4fef 0010 lea %sp@(16),%sp
sc = rtems_io_register_driver(0, &ramdisk_ops, &major);
if (sc != RTEMS_SUCCESSFUL) {
return RTEMS_UNSATISFIED;
}
rd = ramdisk_allocate(NULL, media_block_size, media_block_count, trace);
4c9e8: 2800 movel %d0,%d4
if (rd == NULL) {
4c9ea: 6762 beqs 4ca4e <ramdisk_register+0xb6> <== NEVER TAKEN
return RTEMS_UNSATISFIED;
}
dev = rtems_filesystem_make_dev_t(major, 0);
sc = rtems_disk_create_phys(
4c9ec: 2f2e 0014 movel %fp@(20),%sp@-
{
union __rtems_dev_t temp;
temp.__overlay.major = _major;
temp.__overlay.minor = _minor;
return temp.device;
4c9f0: 4283 clrl %d3
4c9f2: 242e fffc movel %fp@(-4),%d2
4c9f6: 2f00 movel %d0,%sp@-
4c9f8: 4879 0004 c76c pea 4c76c <ramdisk_ioctl>
4c9fe: 2f2e 000c movel %fp@(12),%sp@-
4ca02: 2f2e 0008 movel %fp@(8),%sp@-
4ca06: 2f03 movel %d3,%sp@-
4ca08: 2f02 movel %d2,%sp@-
4ca0a: 4eb9 0004 371e jsr 4371e <rtems_disk_create_phys>
media_block_count,
ramdisk_ioctl,
rd,
disk
);
if (sc != RTEMS_SUCCESSFUL) {
4ca10: 4fef 001c lea %sp@(28),%sp
4ca14: 4a80 tstl %d0
4ca16: 6616 bnes 4ca2e <ramdisk_register+0x96> <== NEVER TAKEN
rtems_io_unregister_driver(major);
return RTEMS_UNSATISFIED;
}
*dev_ptr = dev;
4ca18: 206e 0018 moveal %fp@(24),%a0
return RTEMS_SUCCESSFUL;
4ca1c: 4280 clrl %d0
rtems_io_unregister_driver(major);
return RTEMS_UNSATISFIED;
}
*dev_ptr = dev;
4ca1e: 2082 movel %d2,%a0@
4ca20: 2143 0004 movel %d3,%a0@(4)
return RTEMS_SUCCESSFUL;
}
4ca24: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
4ca2a: 4e5e unlk %fp
4ca2c: 4e75 rts
ramdisk_ioctl,
rd,
disk
);
if (sc != RTEMS_SUCCESSFUL) {
ramdisk_free(rd);
4ca2e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4ca30: 4eb9 0004 c950 jsr 4c950 <ramdisk_free> <== NOT EXECUTED
rtems_io_unregister_driver(major);
4ca36: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4ca3a: 4eb9 0004 9640 jsr 49640 <rtems_io_unregister_driver> <== NOT EXECUTED
4ca40: 508f addql #8,%sp <== NOT EXECUTED
return RTEMS_UNSATISFIED;
4ca42: 700d moveq #13,%d0 <== NOT EXECUTED
}
*dev_ptr = dev;
return RTEMS_SUCCESSFUL;
}
4ca44: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4ca4a: 4e5e unlk %fp <== NOT EXECUTED
4ca4c: 4e75 rts <== NOT EXECUTED
return RTEMS_UNSATISFIED;
}
rd = ramdisk_allocate(NULL, media_block_size, media_block_count, trace);
if (rd == NULL) {
rtems_io_unregister_driver(major);
4ca4e: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4ca52: 4eb9 0004 9640 jsr 49640 <rtems_io_unregister_driver> <== NOT EXECUTED
4ca58: 588f addql #4,%sp <== NOT EXECUTED
return RTEMS_UNSATISFIED;
4ca5a: 700d moveq #13,%d0 <== NOT EXECUTED
}
*dev_ptr = dev;
return RTEMS_SUCCESSFUL;
}
4ca5c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4ca62: 4e5e unlk %fp <== NOT EXECUTED
...
0005be60 <read>:
ssize_t read(
int fd,
void *buffer,
size_t count
)
{
5be60: 4e56 0000 linkw %fp,#0
5be64: 202e 0008 movel %fp@(8),%d0
5be68: 2f0a movel %a2,%sp@-
5be6a: 222e 000c movel %fp@(12),%d1
5be6e: 206e 0010 moveal %fp@(16),%a0
5be72: 2f02 movel %d2,%sp@-
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5be74: b0b9 0005 e260 cmpl 5e260 <rtems_libio_number_iops>,%d0
5be7a: 6456 bccs 5bed2 <read+0x72>
iop = rtems_libio_iop( fd );
5be7c: 2400 movel %d0,%d2
5be7e: ed88 lsll #6,%d0
5be80: e98a lsll #4,%d2
5be82: 2279 0005 f8f4 moveal 5f8f4 <rtems_libio_iops>,%a1
5be88: 9082 subl %d2,%d0
5be8a: d3c0 addal %d0,%a1
rtems_libio_check_is_open( iop );
5be8c: 2029 000c movel %a1@(12),%d0
5be90: 0800 0008 btst #8,%d0
5be94: 673c beqs 5bed2 <read+0x72>
rtems_libio_check_buffer( buffer );
5be96: 4a81 tstl %d1
5be98: 6752 beqs 5beec <read+0x8c> <== NEVER TAKEN
rtems_libio_check_count( count );
5be9a: 4a88 tstl %a0
5be9c: 6726 beqs 5bec4 <read+0x64>
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
5be9e: 0800 0001 btst #1,%d0
5bea2: 672e beqs 5bed2 <read+0x72>
/*
* Now process the read().
*/
return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
5bea4: 2469 0020 moveal %a1@(32),%a2
5bea8: 2d48 0010 movel %a0,%fp@(16)
}
5beac: 242e fff8 movel %fp@(-8),%d2
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
/*
* Now process the read().
*/
return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
5beb0: 2d41 000c movel %d1,%fp@(12)
5beb4: 2d49 0008 movel %a1,%fp@(8)
5beb8: 226a 0008 moveal %a2@(8),%a1
}
5bebc: 246e fffc moveal %fp@(-4),%a2
5bec0: 4e5e unlk %fp
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
/*
* Now process the read().
*/
return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
5bec2: 4ed1 jmp %a1@
}
5bec4: 242e fff8 movel %fp@(-8),%d2
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
rtems_libio_check_count( count );
5bec8: 4280 clrl %d0
/*
* Now process the read().
*/
return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
}
5beca: 246e fffc moveal %fp@(-4),%a2
5bece: 4e5e unlk %fp
5bed0: 4e75 rts
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
rtems_libio_check_count( count );
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
5bed2: 4eb9 0004 e144 jsr 4e144 <__errno>
/*
* Now process the read().
*/
return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
}
5bed8: 242e fff8 movel %fp@(-8),%d2
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
rtems_libio_check_count( count );
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
5bedc: 2040 moveal %d0,%a0
5bede: 7209 moveq #9,%d1
5bee0: 70ff moveq #-1,%d0
/*
* Now process the read().
*/
return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
}
5bee2: 246e fffc moveal %fp@(-4),%a2
5bee6: 4e5e unlk %fp
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
rtems_libio_check_count( count );
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
5bee8: 2081 movel %d1,%a0@
/*
* Now process the read().
*/
return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
}
5beea: 4e75 rts
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
5beec: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
5bef2: 7416 moveq #22,%d2 <== NOT EXECUTED
5bef4: 2040 moveal %d0,%a0 <== NOT EXECUTED
5bef6: 70ff moveq #-1,%d0 <== NOT EXECUTED
5bef8: 2082 movel %d2,%a0@ <== NOT EXECUTED
/*
* Now process the read().
*/
return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
}
5befa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5befe: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5bf02: 4e5e unlk %fp <== NOT EXECUTED
00044414 <read_extended_partition>:
* RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure,
* RTEMS_INTERNAL_ERROR if other error occurs.
*/
static rtems_status_code
read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part)
{
44414: 4e56 ffd0 linkw %fp,#-48
44418: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4441c: 246e 0010 moveal %fp@(16),%a2
int i;
rtems_sector_data_t *sector = NULL;
44420: 42ae fff8 clrl %fp@(-8)
uint32_t here;
uint8_t *data;
rtems_part_desc_t *new_part_desc;
rtems_status_code rc;
if ((ext_part == NULL) || (ext_part->disk_desc == NULL))
44424: 4a8a tstl %a2
44426: 674c beqs 44474 <read_extended_partition+0x60> <== NEVER TAKEN
44428: 4aaa 0010 tstl %a2@(16)
4442c: 6746 beqs 44474 <read_extended_partition+0x60> <== NEVER TAKEN
{
return RTEMS_INTERNAL_ERROR;
}
/* get start sector of current extended partition */
here = ext_part->start;
4442e: 262a 0004 movel %a2@(4),%d3
if (sector == NULL)
{
return RTEMS_INTERNAL_ERROR;
}
off = sector_num * RTEMS_IDE_SECTOR_SIZE;
44432: 7209 moveq #9,%d1
44434: 2003 movel %d3,%d0
44436: 4284 clrl %d4
new_off = lseek(fd, off, SEEK_SET);
if (new_off != off) {
return RTEMS_IO_ERROR;
44438: 741b moveq #27,%d2
{
return RTEMS_INTERNAL_ERROR;
}
off = sector_num * RTEMS_IDE_SECTOR_SIZE;
new_off = lseek(fd, off, SEEK_SET);
4443a: 42a7 clrl %sp@-
if (sector == NULL)
{
return RTEMS_INTERNAL_ERROR;
}
off = sector_num * RTEMS_IDE_SECTOR_SIZE;
4443c: e3a8 lsll %d1,%d0
new_off = lseek(fd, off, SEEK_SET);
4443e: 2f00 movel %d0,%sp@-
if (sector == NULL)
{
return RTEMS_INTERNAL_ERROR;
}
off = sector_num * RTEMS_IDE_SECTOR_SIZE;
44440: 2a00 movel %d0,%d5
new_off = lseek(fd, off, SEEK_SET);
44442: 2f04 movel %d4,%sp@-
44444: 2f2e 0008 movel %fp@(8),%sp@-
44448: 4eb9 0004 5794 jsr 45794 <lseek>
if (new_off != off) {
4444e: 4fef 0010 lea %sp@(16),%sp
44452: 9285 subl %d5,%d1
44454: 9184 subxl %d4,%d0
44456: 672a beqs 44482 <read_extended_partition+0x6e> <== ALWAYS TAKEN
/* get first extended partition sector */
rc = get_sector(fd, here, §or);
if (rc != RTEMS_SUCCESSFUL)
{
if (sector)
44458: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
4445c: 670a beqs 44468 <read_extended_partition+0x54> <== NOT EXECUTED
free(sector);
4445e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44460: 4eb9 0004 5344 jsr 45344 <free> <== NOT EXECUTED
44466: 588f addql #4,%sp <== NOT EXECUTED
}
free(sector);
return RTEMS_SUCCESSFUL;
}
44468: 2002 movel %d2,%d0 <== NOT EXECUTED
4446a: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44470: 4e5e unlk %fp <== NOT EXECUTED
44472: 4e75 rts <== NOT EXECUTED
rtems_part_desc_t *new_part_desc;
rtems_status_code rc;
if ((ext_part == NULL) || (ext_part->disk_desc == NULL))
{
return RTEMS_INTERNAL_ERROR;
44474: 7419 moveq #25,%d2 <== NOT EXECUTED
}
free(sector);
return RTEMS_SUCCESSFUL;
}
44476: 2002 movel %d2,%d0 <== NOT EXECUTED
44478: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4447e: 4e5e unlk %fp <== NOT EXECUTED
44480: 4e75 rts <== NOT EXECUTED
44482: 486e fff8 pea %fp@(-8)
44486: 2f03 movel %d3,%sp@-
44488: 2f2e 0008 movel %fp@(8),%sp@-
4448c: 4eba fe2c jsr %pc@(442ba <get_sector.part.0>)
here = ext_part->start;
/* get first extended partition sector */
rc = get_sector(fd, here, §or);
if (rc != RTEMS_SUCCESSFUL)
44490: 4fef 000c lea %sp@(12),%sp
44494: 2400 movel %d0,%d2
44496: 66c0 bnes 44458 <read_extended_partition+0x44> <== NEVER TAKEN
if (sector)
free(sector);
return rc;
}
if (!msdos_signature_check(sector))
44498: 286e fff8 moveal %fp@(-8),%a4
static bool
msdos_signature_check (rtems_sector_data_t *sector)
{
uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&
4449c: 4280 clrl %d0
4449e: 102c 0202 moveb %a4@(514),%d0
444a2: 7255 moveq #85,%d1
444a4: b280 cmpl %d0,%d1
444a6: 6718 beqs 444c0 <read_extended_partition+0xac> <== ALWAYS TAKEN
return rc;
}
if (!msdos_signature_check(sector))
{
free(sector);
444a8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
return RTEMS_INTERNAL_ERROR;
444aa: 7419 moveq #25,%d2 <== NOT EXECUTED
return rc;
}
if (!msdos_signature_check(sector))
{
free(sector);
444ac: 4eb9 0004 5344 jsr 45344 <free> <== NOT EXECUTED
444b2: 588f addql #4,%sp <== NOT EXECUTED
}
free(sector);
return RTEMS_SUCCESSFUL;
}
444b4: 2002 movel %d2,%d0 <== NOT EXECUTED
444b6: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
444bc: 4e5e unlk %fp <== NOT EXECUTED
444be: 4e75 rts <== NOT EXECUTED
static bool
msdos_signature_check (rtems_sector_data_t *sector)
{
uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&
444c0: 4280 clrl %d0
444c2: 102c 0203 moveb %a4@(515),%d0
444c6: 0c80 0000 00aa cmpil #170,%d0
444cc: 66da bnes 444a8 <read_extended_partition+0x94> <== NEVER TAKEN
* RTEMS_SUCCESSFUL if success,
* RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure,
* RTEMS_INTERNAL_ERROR if other error occurs.
*/
static rtems_status_code
read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part)
444ce: 2a0a movel %a2,%d5
444d0: 280e movel %fp,%d4
444d2: 49ec 01d2 lea %a4@(466),%a4
444d6: 47ea 0018 lea %a2@(24),%a3
444da: 0685 0000 0028 addil #40,%d5
444e0: 5984 subql #4,%d4
444e2: 4bfa fe3e lea %pc@(44322 <data_to_part_desc.part.1>),%a5
444e6: 2f04 movel %d4,%sp@-
444e8: 486c fff0 pea %a4@(-16)
444ec: 4e95 jsr %a5@
{
/* if data_to_part_desc fails skip this partition
* and parse the next one
*/
rc = data_to_part_desc(data, &new_part_desc);
if (rc != RTEMS_SUCCESSFUL)
444ee: 508f addql #8,%sp
444f0: 2400 movel %d0,%d2
444f2: 665e bnes 44552 <read_extended_partition+0x13e> <== NEVER TAKEN
{
free(sector);
return rc;
}
if (new_part_desc == NULL)
444f4: 206e fffc moveal %fp@(-4),%a0
444f8: 4a88 tstl %a0
444fa: 674c beqs 44548 <read_extended_partition+0x134>
{
data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;
continue;
}
ext_part->sub_part[i] = new_part_desc;
444fc: 2688 movel %a0,%a3@
new_part_desc->ext_part = ext_part;
new_part_desc->disk_desc = ext_part->disk_desc;
444fe: 226a 0010 moveal %a2@(16),%a1
* true if partition type is extended, false otherwise
*/
static bool
is_extended(uint8_t type)
{
return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
44502: 4281 clrl %d1
44504: 1228 0001 moveb %a0@(1),%d1
44508: 7005 moveq #5,%d0
data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;
continue;
}
ext_part->sub_part[i] = new_part_desc;
new_part_desc->ext_part = ext_part;
4450a: 214a 0014 movel %a2,%a0@(20)
new_part_desc->disk_desc = ext_part->disk_desc;
4450e: 2149 0010 movel %a1,%a0@(16)
* true if partition type is extended, false otherwise
*/
static bool
is_extended(uint8_t type)
{
return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
44512: b081 cmpl %d1,%d0
44514: 6754 beqs 4456a <read_extended_partition+0x156>
44516: 0c81 0000 0085 cmpil #133,%d1
4451c: 674c beqs 4456a <read_extended_partition+0x156> <== NEVER TAKEN
else
{
rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;
disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
new_part_desc->log_id = ++disk_desc->last_log_id;
new_part_desc->start += here;
4451e: 2003 movel %d3,%d0
44520: d0a8 0004 addl %a0@(4),%d0
read_extended_partition(fd, start, new_part_desc);
}
else
{
rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;
disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
44524: 2c29 0024 movel %a1@(36),%d6
new_part_desc->log_id = ++disk_desc->last_log_id;
44528: 2206 movel %d6,%d1
4452a: 5281 addql #1,%d1
new_part_desc->start += here;
new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
4452c: 2e28 0008 movel %a0@(8),%d7
44530: 5387 subql #1,%d7
44532: de80 addl %d0,%d7
read_extended_partition(fd, start, new_part_desc);
}
else
{
rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;
disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
44534: 2388 6c28 movel %a0,%a1@(00000028,%d6:l:4)
new_part_desc->log_id = ++disk_desc->last_log_id;
44538: 2341 0024 movel %d1,%a1@(36)
4453c: 1141 0002 moveb %d1,%a0@(2)
new_part_desc->start += here;
new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
44540: 2147 000c movel %d7,%a0@(12)
else
{
rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;
disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
new_part_desc->log_id = ++disk_desc->last_log_id;
new_part_desc->start += here;
44544: 2140 0004 movel %d0,%a0@(4)
44548: 49ec 0010 lea %a4@(16),%a4
4454c: 588b addql #4,%a3
/* read and process up to 4 logical partition descriptors */
data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;
for (i = 0; i < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER; i++)
4454e: ba8b cmpl %a3,%d5
44550: 6694 bnes 444e6 <read_extended_partition+0xd2>
new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
}
data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;
}
free(sector);
44552: 2f2e fff8 movel %fp@(-8),%sp@-
44556: 4eb9 0004 5344 jsr 45344 <free>
4455c: 588f addql #4,%sp
return RTEMS_SUCCESSFUL;
}
4455e: 2002 movel %d2,%d0
44560: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
44566: 4e5e unlk %fp
44568: 4e75 rts
new_part_desc->disk_desc = ext_part->disk_desc;
if (is_extended(new_part_desc->sys_type))
{
new_part_desc->log_id = EMPTY_PARTITION;
new_part_desc->start += start;
4456a: 222e 000c movel %fp@(12),%d1
4456e: d3a8 0004 addl %d1,%a0@(4)
44572: 49ec 0010 lea %a4@(16),%a4
44576: 588b addql #4,%a3
new_part_desc->ext_part = ext_part;
new_part_desc->disk_desc = ext_part->disk_desc;
if (is_extended(new_part_desc->sys_type))
{
new_part_desc->log_id = EMPTY_PARTITION;
44578: 4200 clrb %d0
4457a: 1140 0002 moveb %d0,%a0@(2)
new_part_desc->start += start;
read_extended_partition(fd, start, new_part_desc);
4457e: 2f08 movel %a0,%sp@-
44580: 2f01 movel %d1,%sp@-
44582: 2f2e 0008 movel %fp@(8),%sp@-
44586: 4eba fe8c jsr %pc@(44414 <read_extended_partition>)
4458a: 4fef 000c lea %sp@(12),%sp
/* read and process up to 4 logical partition descriptors */
data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;
for (i = 0; i < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER; i++)
4458e: ba8b cmpl %a3,%d5
44590: 6600 ff54 bnew 444e6 <read_extended_partition+0xd2>
44594: 60bc bras 44552 <read_extended_partition+0x13e> <== NOT EXECUTED
00044c1c <readv>:
ssize_t readv(
int fd,
const struct iovec *iov,
int iovcnt
)
{
44c1c: 4e56 ffe8 linkw %fp,#-24
44c20: 202e 0008 movel %fp@(8),%d0
44c24: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
44c28: 266e 000c moveal %fp@(12),%a3
44c2c: 282e 0010 movel %fp@(16),%d4
int v;
int bytes;
rtems_libio_t *iop;
bool all_zeros;
rtems_libio_check_fd( fd );
44c30: b0b9 0005 ec60 cmpl 5ec60 <rtems_libio_number_iops>,%d0
44c36: 6400 00d2 bccw 44d0a <readv+0xee>
iop = rtems_libio_iop( fd );
44c3a: 2200 movel %d0,%d1
44c3c: ed88 lsll #6,%d0
44c3e: e989 lsll #4,%d1
44c40: 2879 0006 02f4 moveal 602f4 <rtems_libio_iops>,%a4
44c46: 9081 subl %d1,%d0
44c48: d9c0 addal %d0,%a4
rtems_libio_check_is_open( iop );
44c4a: 202c 000c movel %a4@(12),%d0
44c4e: 0800 0008 btst #8,%d0
44c52: 6700 00b6 beqw 44d0a <readv+0xee>
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
44c56: 0800 0001 btst #1,%d0
44c5a: 6700 00ae beqw 44d0a <readv+0xee>
/*
* Argument validation on IO vector
*/
if ( !iov )
44c5e: 4a8b tstl %a3
44c60: 6772 beqs 44cd4 <readv+0xb8>
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt <= 0 )
44c62: 4a84 tstl %d4
44c64: 6f6e bles 44cd4 <readv+0xb8>
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt > IOV_MAX )
44c66: 0c84 0000 0400 cmpil #1024,%d4
44c6c: 6e66 bgts 44cd4 <readv+0xb8> <== NEVER TAKEN
44c6e: 244b moveal %a3,%a2
*
* OpenGroup URL:
*
* http://www.opengroup.org/onlinepubs/009695399/functions/readv.html
*/
ssize_t readv(
44c70: 204b moveal %a3,%a0
44c72: 4280 clrl %d0
44c74: e78c lsll #3,%d4
44c76: 7401 moveq #1,%d2
44c78: d88b addl %a3,%d4
/*
* iov[v].iov_len cannot be less than 0 because size_t is unsigned.
* So we only check for zero.
*/
if ( iov[v].iov_base == 0 )
44c7a: 4a90 tstl %a0@
44c7c: 6756 beqs 44cd4 <readv+0xb8>
rtems_set_errno_and_return_minus_one( EINVAL );
/* check for wrap */
old = total;
total += iov[v].iov_len;
44c7e: 2268 0004 moveal %a0@(4),%a1
44c82: 2209 movel %a1,%d1
44c84: d280 addl %d0,%d1
if ( total < old )
44c86: b081 cmpl %d1,%d0
44c88: 6e4a bgts 44cd4 <readv+0xb8>
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
all_zeros = false;
44c8a: 4a89 tstl %a1
44c8c: 57c3 seq %d3
44c8e: 5088 addql #8,%a0
if ( iov[v].iov_base == 0 )
rtems_set_errno_and_return_minus_one( EINVAL );
/* check for wrap */
old = total;
total += iov[v].iov_len;
44c90: 2001 movel %d1,%d0
if ( total < old )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
all_zeros = false;
44c92: c483 andl %d3,%d2
* are obvious errors in the iovec. So this extra loop ensures
* that we do not do anything if there is an argument error.
*/
all_zeros = true;
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
44c94: b888 cmpl %a0,%d4
44c96: 66e2 bnes 44c7a <readv+0x5e>
/*
* A readv with all zeros logically has no effect. Even though
* OpenGroup didn't address this case as they did with writev(),
* we will handle it the same way for symmetry.
*/
if ( all_zeros == true ) {
44c98: 4a02 tstb %d2
44c9a: 6652 bnes 44cee <readv+0xd2>
*
* OpenGroup URL:
*
* http://www.opengroup.org/onlinepubs/009695399/functions/readv.html
*/
ssize_t readv(
44c9c: 588b addql #4,%a3
44c9e: 4282 clrl %d2
/*
* Now process the readv().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
bytes = (*iop->pathinfo.handlers->read_h)(
44ca0: 206c 0020 moveal %a4@(32),%a0
44ca4: 2f13 movel %a3@,%sp@-
44ca6: 2f12 movel %a2@,%sp@-
44ca8: 508a addql #8,%a2
44caa: 2f0c movel %a4,%sp@-
44cac: 2068 0008 moveal %a0@(8),%a0
44cb0: 4e90 jsr %a0@
iop,
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
44cb2: 4fef 000c lea %sp@(12),%sp
44cb6: 4a80 tstl %d0
44cb8: 6d42 blts 44cfc <readv+0xe0> <== NEVER TAKEN
return -1;
if ( bytes > 0 ) {
44cba: 6702 beqs 44cbe <readv+0xa2> <== NEVER TAKEN
total += bytes;
44cbc: d480 addl %d0,%d2
}
if (bytes != iov[ v ].iov_len)
44cbe: b093 cmpl %a3@,%d0
44cc0: 6606 bnes 44cc8 <readv+0xac> <== NEVER TAKEN
44cc2: 508b addql #8,%a3
}
/*
* Now process the readv().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
44cc4: b88a cmpl %a2,%d4
44cc6: 66d8 bnes 44ca0 <readv+0x84>
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44cc8: 2002 movel %d2,%d0
44cca: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
44cd0: 4e5e unlk %fp
44cd2: 4e75 rts
/* check for wrap */
old = total;
total += iov[v].iov_len;
if ( total < old )
rtems_set_errno_and_return_minus_one( EINVAL );
44cd4: 4eb9 0004 ee00 jsr 4ee00 <__errno>
44cda: 74ff moveq #-1,%d2
44cdc: 2040 moveal %d0,%a0
44cde: 7016 moveq #22,%d0
44ce0: 2080 movel %d0,%a0@
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44ce2: 2002 movel %d2,%d0
44ce4: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
44cea: 4e5e unlk %fp
44cec: 4e75 rts
* A readv with all zeros logically has no effect. Even though
* OpenGroup didn't address this case as they did with writev(),
* we will handle it the same way for symmetry.
*/
if ( all_zeros == true ) {
return 0;
44cee: 4282 clrl %d2
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44cf0: 2002 movel %d2,%d0
44cf2: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
44cf8: 4e5e unlk %fp
44cfa: 4e75 rts
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
return -1;
44cfc: 74ff moveq #-1,%d2 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44cfe: 2002 movel %d2,%d0 <== NOT EXECUTED
44d00: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
44d06: 4e5e unlk %fp <== NOT EXECUTED
44d08: 4e75 rts <== NOT EXECUTED
bool all_zeros;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
44d0a: 4eb9 0004 ee00 jsr 4ee00 <__errno>
44d10: 74ff moveq #-1,%d2
44d12: 7209 moveq #9,%d1
44d14: 2040 moveal %d0,%a0
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44d16: 2002 movel %d2,%d0
44d18: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
bool all_zeros;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
44d1e: 2081 movel %d1,%a0@
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44d20: 4e5e unlk %fp <== NOT EXECUTED
0005bf68 <realloc>:
/*
* Do not attempt to allocate memory if in a critical section or ISR.
*/
if (_System_state_Is_up(_System_state_Get())) {
5bf68: 7003 moveq #3,%d0
void *realloc(
void *ptr,
size_t size
)
{
5bf6a: 4e56 fff0 linkw %fp,#-16
uintptr_t old_size;
char *new_area;
MSBUMP(realloc_calls, 1);
5bf6e: 52b9 0005 f910 addql #1,5f910 <rtems_malloc_statistics+0x10>
void *realloc(
void *ptr,
size_t size
)
{
5bf74: 48d7 001c moveml %d2-%d4,%sp@
5bf78: 242e 0008 movel %fp@(8),%d2
5bf7c: 262e 000c movel %fp@(12),%d3
/*
* Do not attempt to allocate memory if in a critical section or ISR.
*/
if (_System_state_Is_up(_System_state_Get())) {
5bf80: b0b9 0005 fb6c cmpl 5fb6c <_System_state_Current>,%d0
5bf86: 6700 0090 beqw 5c018 <realloc+0xb0>
}
/*
* Continue with realloc().
*/
if ( !ptr )
5bf8a: 4a82 tstl %d2
5bf8c: 6700 00fa beqw 5c088 <realloc+0x120>
return malloc( size );
if ( !size ) {
5bf90: 4a83 tstl %d3
5bf92: 6700 00c2 beqw 5c056 <realloc+0xee>
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
5bf96: 486e fffc pea %fp@(-4)
5bf9a: 2f02 movel %d2,%sp@-
5bf9c: 2f39 0005 e21c movel 5e21c <RTEMS_Malloc_Heap>,%sp@-
5bfa2: 4eb9 0005 c140 jsr 5c140 <_Protected_heap_Get_block_size>
5bfa8: 4fef 000c lea %sp@(12),%sp
5bfac: 4a00 tstb %d0
5bfae: 6700 00be beqw 5c06e <realloc+0x106>
}
/*
* Now resize it.
*/
if ( _Protected_heap_Resize_block( RTEMS_Malloc_Heap, ptr, size ) ) {
5bfb2: 2f03 movel %d3,%sp@-
5bfb4: 2f02 movel %d2,%sp@-
5bfb6: 2f39 0005 e21c movel 5e21c <RTEMS_Malloc_Heap>,%sp@-
5bfbc: 4eb9 0005 c17c jsr 5c17c <_Protected_heap_Resize_block>
5bfc2: 4fef 000c lea %sp@(12),%sp
5bfc6: 4a00 tstb %d0
5bfc8: 670c beqs 5bfd6 <realloc+0x6e>
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5bfca: 2002 movel %d2,%d0
5bfcc: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
5bfd2: 4e5e unlk %fp
5bfd4: 4e75 rts
* There used to be a free on this error case but it is wrong to
* free the memory per OpenGroup Single UNIX Specification V2
* and the C Standard.
*/
new_area = malloc( size );
5bfd6: 2f03 movel %d3,%sp@-
5bfd8: 4eb9 0004 33cc jsr 433cc <malloc>
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
5bfde: 588f addql #4,%sp
* and the C Standard.
*/
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
5bfe0: 53b9 0005 f904 subql #1,5f904 <rtems_malloc_statistics+0x4>
* There used to be a free on this error case but it is wrong to
* free the memory per OpenGroup Single UNIX Specification V2
* and the C Standard.
*/
new_area = malloc( size );
5bfe6: 2800 movel %d0,%d4
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
5bfe8: 6740 beqs 5c02a <realloc+0xc2>
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
5bfea: 202e fffc movel %fp@(-4),%d0
5bfee: b083 cmpl %d3,%d0
5bff0: 6546 bcss 5c038 <realloc+0xd0> <== ALWAYS TAKEN
5bff2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5bff4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5bff6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5bff8: 4eb9 0004 e964 jsr 4e964 <memcpy> <== NOT EXECUTED
free( ptr );
5bffe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c000: 2404 movel %d4,%d2 <== NOT EXECUTED
5c002: 4eb9 0004 30cc jsr 430cc <free> <== NOT EXECUTED
5c008: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return new_area;
}
5c00c: 2002 movel %d2,%d0
5c00e: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
5c014: 4e5e unlk %fp
5c016: 4e75 rts
* This routine returns true if thread dispatch indicates
* that we are in a critical section.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Dispatch_in_critical_section(void)
{
if ( _Thread_Dispatch_disable_level == 0 )
5c018: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
5c01e: 660a bnes 5c02a <realloc+0xc2> <== NEVER TAKEN
if (_System_state_Is_up(_System_state_Get())) {
if (_Thread_Dispatch_in_critical_section())
return (void *) 0;
if (_ISR_Nest_level > 0)
5c020: 4ab9 0005 fb78 tstl 5fb78 <_Per_CPU_Information+0x8>
5c026: 6700 ff62 beqw 5bf8a <realloc+0x22>
* Do not attempt to allocate memory if in a critical section or ISR.
*/
if (_System_state_Is_up(_System_state_Get())) {
if (_Thread_Dispatch_in_critical_section())
return (void *) 0;
5c02a: 4282 clrl %d2
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c02c: 2002 movel %d2,%d0
5c02e: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
5c034: 4e5e unlk %fp
5c036: 4e75 rts
if ( !new_area ) {
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
5c038: 2600 movel %d0,%d3
5c03a: 2f03 movel %d3,%sp@-
5c03c: 2f02 movel %d2,%sp@-
5c03e: 2f04 movel %d4,%sp@-
5c040: 4eb9 0004 e964 jsr 4e964 <memcpy>
free( ptr );
5c046: 2f02 movel %d2,%sp@-
5c048: 2404 movel %d4,%d2
5c04a: 4eb9 0004 30cc jsr 430cc <free>
5c050: 4fef 0010 lea %sp@(16),%sp
5c054: 60b6 bras 5c00c <realloc+0xa4>
*/
if ( !ptr )
return malloc( size );
if ( !size ) {
free( ptr );
5c056: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (void *) 0;
5c058: 4282 clrl %d2 <== NOT EXECUTED
*/
if ( !ptr )
return malloc( size );
if ( !size ) {
free( ptr );
5c05a: 4eb9 0004 30cc jsr 430cc <free> <== NOT EXECUTED
5c060: 588f addql #4,%sp <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c062: 2002 movel %d2,%d0 <== NOT EXECUTED
5c064: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5c06a: 4e5e unlk %fp <== NOT EXECUTED
5c06c: 4e75 rts <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
errno = EINVAL;
5c06e: 4eb9 0004 e144 jsr 4e144 <__errno>
return (void *) 0;
5c074: 4282 clrl %d2
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
errno = EINVAL;
5c076: 2040 moveal %d0,%a0
5c078: 7016 moveq #22,%d0
5c07a: 2080 movel %d0,%a0@
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c07c: 2002 movel %d2,%d0
5c07e: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
5c084: 4e5e unlk %fp
5c086: 4e75 rts
/*
* Continue with realloc().
*/
if ( !ptr )
return malloc( size );
5c088: 2d43 0008 movel %d3,%fp@(8)
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c08c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
5c092: 4e5e unlk %fp
/*
* Continue with realloc().
*/
if ( !ptr )
return malloc( size );
5c094: 4ef9 0004 33cc jmp 433cc <malloc>
...
000448b2 <release_with_count>:
global_loc->location.mt_entry;
rtems_filesystem_mt_entry_declare_lock_context(lock_context);
bool do_free;
bool do_unmount;
rtems_filesystem_mt_entry_lock(lock_context);
448b2: 203c 0000 0700 movel #1792,%d0
static void release_with_count(
rtems_filesystem_global_location_t *global_loc,
int count
)
{
448b8: 4e56 fff4 linkw %fp,#-12
448bc: 206e 000c moveal %fp@(12),%a0
448c0: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
448c4: 246e 0008 moveal %fp@(8),%a2
rtems_filesystem_mount_table_entry_t *mt_entry =
448c8: 266a 0014 moveal %a2@(20),%a3
global_loc->location.mt_entry;
rtems_filesystem_mt_entry_declare_lock_context(lock_context);
bool do_free;
bool do_unmount;
rtems_filesystem_mt_entry_lock(lock_context);
448cc: 40c1 movew %sr,%d1
448ce: 8081 orl %d1,%d0
448d0: 46c0 movew %d0,%sr
global_loc->reference_count -= count;
448d2: 202a 0018 movel %a2@(24),%d0
448d6: 9088 subl %a0,%d0
448d8: 2540 0018 movel %d0,%a2@(24)
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
bool ready = !mt_entry->mounted
&& rtems_chain_has_only_one_node( &mt_entry->location_chain )
&& mt_entry->mt_fs_root->reference_count == 1;
448dc: 4a2b 0028 tstb %a3@(40)
448e0: 660a bnes 448ec <release_with_count+0x3a>
static inline bool rtems_filesystem_is_ready_for_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
bool ready = !mt_entry->mounted
&& rtems_chain_has_only_one_node( &mt_entry->location_chain )
448e2: 242b 001c movel %a3@(28),%d2
448e6: b4ab 0014 cmpl %a3@(20),%d2
448ea: 673e beqs 4492a <release_with_count+0x78>
static inline bool rtems_filesystem_is_ready_for_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
bool ready = !mt_entry->mounted
448ec: 4202 clrb %d2
do_free = global_loc->reference_count == 0;
do_unmount = rtems_filesystem_is_ready_for_unmount(mt_entry);
rtems_filesystem_mt_entry_unlock(lock_context);
448ee: 46c1 movew %d1,%sr
if (do_free) {
448f0: 4a80 tstl %d0
448f2: 670e beqs 44902 <release_with_count+0x50>
rtems_filesystem_location_free(&global_loc->location);
free(global_loc);
}
if (do_unmount) {
448f4: 4a02 tstb %d2
448f6: 6620 bnes 44918 <release_with_count+0x66>
rtems_filesystem_do_unmount(mt_entry);
}
}
448f8: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
448fe: 4e5e unlk %fp
44900: 4e75 rts
do_free = global_loc->reference_count == 0;
do_unmount = rtems_filesystem_is_ready_for_unmount(mt_entry);
rtems_filesystem_mt_entry_unlock(lock_context);
if (do_free) {
rtems_filesystem_location_free(&global_loc->location);
44902: 2f0a movel %a2,%sp@-
44904: 4eb9 0004 b898 jsr 4b898 <rtems_filesystem_location_free>
free(global_loc);
4490a: 2f0a movel %a2,%sp@-
4490c: 4eb9 0004 30cc jsr 430cc <free>
44912: 508f addql #8,%sp
}
if (do_unmount) {
44914: 4a02 tstb %d2
44916: 67e0 beqs 448f8 <release_with_count+0x46> <== ALWAYS TAKEN
rtems_filesystem_do_unmount(mt_entry);
44918: 2d4b 0008 movel %a3,%fp@(8)
}
}
4491c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
44922: 4e5e unlk %fp
rtems_filesystem_location_free(&global_loc->location);
free(global_loc);
}
if (do_unmount) {
rtems_filesystem_do_unmount(mt_entry);
44924: 4ef9 0004 4734 jmp 44734 <rtems_filesystem_do_unmount>
&& rtems_chain_has_only_one_node( &mt_entry->location_chain )
&& mt_entry->mt_fs_root->reference_count == 1;
4492a: 206b 0024 moveal %a3@(36),%a0
4492e: 7401 moveq #1,%d2
44930: b4a8 0018 cmpl %a0@(24),%d2
44934: 66b6 bnes 448ec <release_with_count+0x3a>
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
44936: 41eb 0018 lea %a3@(24),%a0
4493a: 2748 0014 movel %a0,%a3@(20)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4493e: 41eb 0014 lea %a3@(20),%a0
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
44942: 42ab 0018 clrl %a3@(24)
static inline bool rtems_filesystem_is_ready_for_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
bool ready = !mt_entry->mounted
44946: 7401 moveq #1,%d2
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
44948: 2748 001c movel %a0,%a3@(28)
rtems_filesystem_mt_entry_lock(lock_context);
global_loc->reference_count -= count;
do_free = global_loc->reference_count == 0;
do_unmount = rtems_filesystem_is_ready_for_unmount(mt_entry);
rtems_filesystem_mt_entry_unlock(lock_context);
4494c: 46c1 movew %d1,%sr
if (do_free) {
4494e: 4a80 tstl %d0
44950: 66a2 bnes 448f4 <release_with_count+0x42> <== ALWAYS TAKEN
44952: 60ae bras 44902 <release_with_count+0x50> <== NOT EXECUTED
000437e0 <rtems_assoc_local_by_name>:
uint32_t rtems_assoc_local_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
437e0: 4e56 0000 linkw %fp,#0
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_name(ap, name);
437e4: 2f2e 000c movel %fp@(12),%sp@-
437e8: 2f2e 0008 movel %fp@(8),%sp@-
437ec: 4eb9 0004 3a4c jsr 43a4c <rtems_assoc_ptr_by_name>
if (nap)
437f2: 508f addql #8,%sp
437f4: 4a80 tstl %d0
437f6: 670a beqs 43802 <rtems_assoc_local_by_name+0x22> <== NEVER TAKEN
return nap->local_value;
437f8: 2040 moveal %d0,%a0
return 0;
}
437fa: 4e5e unlk %fp
{
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_name(ap, name);
if (nap)
return nap->local_value;
437fc: 2028 0004 movel %a0@(4),%d0
return 0;
}
43800: 4e75 rts
nap = rtems_assoc_ptr_by_name(ap, name);
if (nap)
return nap->local_value;
return 0;
43802: 4280 clrl %d0
}
43804: 4e5e unlk %fp <== NOT EXECUTED
0004dbcc <rtems_assoc_local_by_remote_bitfield>:
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4dbcc: 4e56 ffe8 linkw %fp,#-24
4dbd0: 48d7 047c moveml %d2-%d6/%a2,%sp@
4dbd4: 2c2e 0008 movel %fp@(8),%d6
4dbd8: 7620 moveq #32,%d3
uint32_t b;
uint32_t local_value = 0;
4dbda: 4285 clrl %d5
for (b = 1; b; b <<= 1) {
4dbdc: 7401 moveq #1,%d2
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4dbde: 45f9 0004 b704 lea 4b704 <rtems_assoc_local_by_remote>,%a2
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4dbe4: 282e 000c movel %fp@(12),%d4
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
if (b & remote_value)
4dbe8: 2202 movel %d2,%d1
4dbea: 5383 subql #1,%d3
4dbec: c284 andl %d4,%d1
4dbee: 6612 bnes 4dc02 <rtems_assoc_local_by_remote_bitfield+0x36>
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4dbf0: d482 addl %d2,%d2
4dbf2: 4a83 tstl %d3
4dbf4: 66f2 bnes 4dbe8 <rtems_assoc_local_by_remote_bitfield+0x1c>
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
}
return local_value;
}
4dbf6: 2005 movel %d5,%d0
4dbf8: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
4dbfe: 4e5e unlk %fp
4dc00: 4e75 rts
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4dc02: 2f02 movel %d2,%sp@-
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4dc04: d482 addl %d2,%d2
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4dc06: 2f06 movel %d6,%sp@-
4dc08: 4e92 jsr %a2@
4dc0a: 508f addql #8,%sp
4dc0c: 8a80 orl %d0,%d5
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4dc0e: 4a83 tstl %d3
4dc10: 66d6 bnes 4dbe8 <rtems_assoc_local_by_remote_bitfield+0x1c><== ALWAYS TAKEN
4dc12: 60e2 bras 4dbf6 <rtems_assoc_local_by_remote_bitfield+0x2a><== NOT EXECUTED
00043878 <rtems_assoc_name_by_local_bitfield>:
char *rtems_assoc_name_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
43878: 4e56 ffe0 linkw %fp,#-32
4387c: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
43880: 246e 0010 moveal %fp@(16),%a2
uint32_t b;
*buffer = 0;
43884: 7620 moveq #32,%d3
for (b = 1; b; b <<= 1) {
43886: 7401 moveq #1,%d2
if (b & value) {
if (*buffer)
strcat(buffer, " ");
strcat(buffer, rtems_assoc_name_by_local(ap, b));
43888: 49f9 0004 38f4 lea 438f4 <rtems_assoc_name_by_local>,%a4
4388e: 47f9 0004 fa9c lea 4fa9c <strcat>,%a3
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43894: 4bf9 0005 00cc lea 500cc <strlen>,%a5
char *buffer
)
{
uint32_t b;
*buffer = 0;
4389a: 4212 clrb %a2@
char *rtems_assoc_name_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
4389c: 2a2e 0008 movel %fp@(8),%d5
438a0: 282e 000c movel %fp@(12),%d4
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
438a4: 2202 movel %d2,%d1
438a6: 5383 subql #1,%d3
438a8: c284 andl %d4,%d1
438aa: 6714 beqs 438c0 <rtems_assoc_name_by_local_bitfield+0x48>
if (*buffer)
438ac: 4a12 tstb %a2@
438ae: 6622 bnes 438d2 <rtems_assoc_name_by_local_bitfield+0x5a>
strcat(buffer, " ");
strcat(buffer, rtems_assoc_name_by_local(ap, b));
438b0: 2f02 movel %d2,%sp@-
438b2: 2f05 movel %d5,%sp@-
438b4: 4e94 jsr %a4@
438b6: 2f00 movel %d0,%sp@-
438b8: 2f0a movel %a2,%sp@-
438ba: 4e93 jsr %a3@
438bc: 4fef 0010 lea %sp@(16),%sp
{
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
438c0: d482 addl %d2,%d2
438c2: 4a83 tstl %d3
438c4: 66de bnes 438a4 <rtems_assoc_name_by_local_bitfield+0x2c>
strcat(buffer, rtems_assoc_name_by_local(ap, b));
}
}
return buffer;
}
438c6: 200a movel %a2,%d0
438c8: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
438ce: 4e5e unlk %fp
438d0: 4e75 rts
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
438d2: 2f0a movel %a2,%sp@-
438d4: 4e95 jsr %a5@
438d6: 588f addql #4,%sp
438d8: 323c 2000 movew #8192,%d1
438dc: 3581 0800 movew %d1,%a2@(00000000,%d0:l)
strcat(buffer, rtems_assoc_name_by_local(ap, b));
438e0: 2f02 movel %d2,%sp@-
438e2: 2f05 movel %d5,%sp@-
438e4: 4e94 jsr %a4@
438e6: 2f00 movel %d0,%sp@-
438e8: 2f0a movel %a2,%sp@-
438ea: 4e93 jsr %a3@
438ec: 4fef 0010 lea %sp@(16),%sp
438f0: 60ce bras 438c0 <rtems_assoc_name_by_local_bitfield+0x48>
...
0004392c <rtems_assoc_name_by_remote_bitfield>:
char *rtems_assoc_name_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
4392c: 4e56 ffe0 linkw %fp,#-32
43930: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
43934: 246e 0010 moveal %fp@(16),%a2
uint32_t b;
*buffer = 0;
43938: 7620 moveq #32,%d3
for (b = 1; b; b <<= 1) {
4393a: 7401 moveq #1,%d2
if (b & value) {
if (*buffer)
strcat(buffer, " ");
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
4393c: 49f9 0004 39a8 lea 439a8 <rtems_assoc_name_by_remote>,%a4
43942: 47f9 0004 fa9c lea 4fa9c <strcat>,%a3
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43948: 4bf9 0005 00cc lea 500cc <strlen>,%a5
char *buffer
)
{
uint32_t b;
*buffer = 0;
4394e: 4212 clrb %a2@
char *rtems_assoc_name_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
43950: 2a2e 0008 movel %fp@(8),%d5
43954: 282e 000c movel %fp@(12),%d4
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
43958: 2202 movel %d2,%d1
4395a: 5383 subql #1,%d3
4395c: c284 andl %d4,%d1
4395e: 6714 beqs 43974 <rtems_assoc_name_by_remote_bitfield+0x48>
if (*buffer)
43960: 4a12 tstb %a2@
43962: 6622 bnes 43986 <rtems_assoc_name_by_remote_bitfield+0x5a>
strcat(buffer, " ");
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
43964: 2f02 movel %d2,%sp@-
43966: 2f05 movel %d5,%sp@-
43968: 4e94 jsr %a4@
4396a: 2f00 movel %d0,%sp@-
4396c: 2f0a movel %a2,%sp@-
4396e: 4e93 jsr %a3@
43970: 4fef 0010 lea %sp@(16),%sp
{
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
43974: d482 addl %d2,%d2
43976: 4a83 tstl %d3
43978: 66de bnes 43958 <rtems_assoc_name_by_remote_bitfield+0x2c>
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
}
}
return buffer;
}
4397a: 200a movel %a2,%d0
4397c: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
43982: 4e5e unlk %fp
43984: 4e75 rts
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43986: 2f0a movel %a2,%sp@-
43988: 4e95 jsr %a5@
4398a: 588f addql #4,%sp
4398c: 323c 2000 movew #8192,%d1
43990: 3581 0800 movew %d1,%a2@(00000000,%d0:l)
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
43994: 2f02 movel %d2,%sp@-
43996: 2f05 movel %d5,%sp@-
43998: 4e94 jsr %a4@
4399a: 2f00 movel %d0,%sp@-
4399c: 2f0a movel %a2,%sp@-
4399e: 4e93 jsr %a3@
439a0: 4fef 0010 lea %sp@(16),%sp
439a4: 60ce bras 43974 <rtems_assoc_name_by_remote_bitfield+0x48>
...
0004b764 <rtems_assoc_ptr_by_local>:
const rtems_assoc_t *rtems_assoc_ptr_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4b764: 4e56 0000 linkw %fp,#0
4b768: 2f0a movel %a2,%sp@-
4b76a: 246e 0008 moveal %fp@(8),%a2
4b76e: 2f02 movel %d2,%sp@-
4b770: 242e 000c movel %fp@(12),%d2
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4b774: 2012 movel %a2@,%d0
4b776: 6748 beqs 4b7c0 <rtems_assoc_ptr_by_local+0x5c>
4b778: 4879 0005 d7a6 pea 5d7a6 <IMFS_memfile_handlers+0x2c>
4b77e: 2f00 movel %d0,%sp@-
4b780: 4eb9 0004 eef0 jsr 4eef0 <strcmp>
4b786: 508f addql #8,%sp
4b788: 4a80 tstl %d0
4b78a: 6630 bnes 4b7bc <rtems_assoc_ptr_by_local+0x58>
default_ap = ap++;
4b78c: 220a movel %a2,%d1
4b78e: 0681 0000 000c addil #12,%d1
for ( ; ap->name; ap++)
4b794: 4aaa 000c tstl %a2@(12)
4b798: 6714 beqs 4b7ae <rtems_assoc_ptr_by_local+0x4a> <== NEVER TAKEN
4b79a: 200a movel %a2,%d0
)
{
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
4b79c: 2441 moveal %d1,%a2
for ( ; ap->name; ap++)
if (ap->local_value == local_value)
4b79e: b4aa 0004 cmpl %a2@(4),%d2
4b7a2: 670a beqs 4b7ae <rtems_assoc_ptr_by_local+0x4a>
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
4b7a4: 45ea 000c lea %a2@(12),%a2
4b7a8: 4a92 tstl %a2@
4b7aa: 66f2 bnes 4b79e <rtems_assoc_ptr_by_local+0x3a>
4b7ac: 2440 moveal %d0,%a2
if (ap->local_value == local_value)
return ap;
return default_ap;
}
4b7ae: 200a movel %a2,%d0
4b7b0: 242e fff8 movel %fp@(-8),%d2
4b7b4: 246e fffc moveal %fp@(-4),%a2
4b7b8: 4e5e unlk %fp
4b7ba: 4e75 rts
const rtems_assoc_t *rtems_assoc_ptr_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
const rtems_assoc_t *default_ap = 0;
4b7bc: 4280 clrl %d0
4b7be: 60de bras 4b79e <rtems_assoc_ptr_by_local+0x3a>
4b7c0: 95ca subal %a2,%a2
for ( ; ap->name; ap++)
if (ap->local_value == local_value)
return ap;
return default_ap;
}
4b7c2: 200a movel %a2,%d0
4b7c4: 242e fff8 movel %fp@(-8),%d2
4b7c8: 246e fffc moveal %fp@(-4),%a2
4b7cc: 4e5e unlk %fp <== NOT EXECUTED
00043a4c <rtems_assoc_ptr_by_name>:
const rtems_assoc_t *rtems_assoc_ptr_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
43a4c: 4e56 ffec linkw %fp,#-20
43a50: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
43a54: 246e 0008 moveal %fp@(8),%a2
43a58: 262e 000c movel %fp@(12),%d3
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
43a5c: 2412 movel %a2@,%d2
43a5e: 674e beqs 43aae <rtems_assoc_ptr_by_name+0x62>
43a60: 4879 0005 d6f3 pea 5d6f3 <_rodata_start+0x603>
43a66: 47f9 0004 fb18 lea 4fb18 <strcmp>,%a3
43a6c: 2f02 movel %d2,%sp@-
43a6e: 4e93 jsr %a3@
43a70: 508f addql #8,%sp
43a72: 4a80 tstl %d0
43a74: 6634 bnes 43aaa <rtems_assoc_ptr_by_name+0x5e>
default_ap = ap++;
43a76: 200a movel %a2,%d0
43a78: 0680 0000 000c addil #12,%d0
for ( ; ap->name; ap++)
43a7e: 242a 000c movel %a2@(12),%d2
43a82: 671a beqs 43a9e <rtems_assoc_ptr_by_name+0x52> <== NEVER TAKEN
43a84: 280a movel %a2,%d4
)
{
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
43a86: 2440 moveal %d0,%a2
for ( ; ap->name; ap++)
if (strcmp(ap->name, name) == 0)
43a88: 2f03 movel %d3,%sp@-
43a8a: 2f02 movel %d2,%sp@-
43a8c: 4e93 jsr %a3@
43a8e: 508f addql #8,%sp
43a90: 4a80 tstl %d0
43a92: 670a beqs 43a9e <rtems_assoc_ptr_by_name+0x52>
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
43a94: 45ea 000c lea %a2@(12),%a2
43a98: 2412 movel %a2@,%d2
43a9a: 66ec bnes 43a88 <rtems_assoc_ptr_by_name+0x3c>
43a9c: 2444 moveal %d4,%a2
if (strcmp(ap->name, name) == 0)
return ap;
return default_ap;
}
43a9e: 200a movel %a2,%d0
43aa0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
43aa6: 4e5e unlk %fp
43aa8: 4e75 rts
const rtems_assoc_t *rtems_assoc_ptr_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
const rtems_assoc_t *default_ap = 0;
43aaa: 4284 clrl %d4
43aac: 60da bras 43a88 <rtems_assoc_ptr_by_name+0x3c>
43aae: 95ca subal %a2,%a2
for ( ; ap->name; ap++)
if (strcmp(ap->name, name) == 0)
return ap;
return default_ap;
}
43ab0: 200a movel %a2,%d0
43ab2: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
43ab8: 4e5e unlk %fp <== NOT EXECUTED
0004b7d0 <rtems_assoc_ptr_by_remote>:
const rtems_assoc_t *rtems_assoc_ptr_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4b7d0: 4e56 0000 linkw %fp,#0
4b7d4: 2f0a movel %a2,%sp@-
4b7d6: 246e 0008 moveal %fp@(8),%a2
4b7da: 2f02 movel %d2,%sp@-
4b7dc: 242e 000c movel %fp@(12),%d2
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4b7e0: 2012 movel %a2@,%d0
4b7e2: 6748 beqs 4b82c <rtems_assoc_ptr_by_remote+0x5c>
4b7e4: 4879 0005 d7a6 pea 5d7a6 <IMFS_memfile_handlers+0x2c>
4b7ea: 2f00 movel %d0,%sp@-
4b7ec: 4eb9 0004 eef0 jsr 4eef0 <strcmp>
4b7f2: 508f addql #8,%sp
4b7f4: 4a80 tstl %d0
4b7f6: 6630 bnes 4b828 <rtems_assoc_ptr_by_remote+0x58>
default_ap = ap++;
4b7f8: 220a movel %a2,%d1
4b7fa: 0681 0000 000c addil #12,%d1
for ( ; ap->name; ap++)
4b800: 4aaa 000c tstl %a2@(12)
4b804: 6714 beqs 4b81a <rtems_assoc_ptr_by_remote+0x4a> <== NEVER TAKEN
4b806: 200a movel %a2,%d0
)
{
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
4b808: 2441 moveal %d1,%a2
for ( ; ap->name; ap++)
if (ap->remote_value == remote_value)
4b80a: b4aa 0008 cmpl %a2@(8),%d2
4b80e: 670a beqs 4b81a <rtems_assoc_ptr_by_remote+0x4a>
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
4b810: 45ea 000c lea %a2@(12),%a2
4b814: 4a92 tstl %a2@
4b816: 66f2 bnes 4b80a <rtems_assoc_ptr_by_remote+0x3a>
4b818: 2440 moveal %d0,%a2
if (ap->remote_value == remote_value)
return ap;
return default_ap;
}
4b81a: 200a movel %a2,%d0
4b81c: 242e fff8 movel %fp@(-8),%d2
4b820: 246e fffc moveal %fp@(-4),%a2
4b824: 4e5e unlk %fp
4b826: 4e75 rts
const rtems_assoc_t *rtems_assoc_ptr_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
const rtems_assoc_t *default_ap = 0;
4b828: 4280 clrl %d0
4b82a: 60de bras 4b80a <rtems_assoc_ptr_by_remote+0x3a>
4b82c: 95ca subal %a2,%a2
for ( ; ap->name; ap++)
if (ap->remote_value == remote_value)
return ap;
return default_ap;
}
4b82e: 200a movel %a2,%d0
4b830: 242e fff8 movel %fp@(-8),%d2
4b834: 246e fffc moveal %fp@(-4),%a2
4b838: 4e5e unlk %fp <== NOT EXECUTED
00043b28 <rtems_assoc_remote_by_local_bitfield>:
uint32_t rtems_assoc_remote_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
43b28: 4e56 ffe8 linkw %fp,#-24
43b2c: 48d7 047c moveml %d2-%d6/%a2,%sp@
43b30: 2c2e 0008 movel %fp@(8),%d6
43b34: 7620 moveq #32,%d3
uint32_t b;
uint32_t remote_value = 0;
43b36: 4285 clrl %d5
for (b = 1; b; b <<= 1)
43b38: 7401 moveq #1,%d2
if (b & local_value)
remote_value |= rtems_assoc_remote_by_local(ap, b);
43b3a: 45f9 0004 3b70 lea 43b70 <rtems_assoc_remote_by_local>,%a2
uint32_t rtems_assoc_remote_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
43b40: 282e 000c movel %fp@(12),%d4
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
if (b & local_value)
43b44: 2202 movel %d2,%d1
43b46: 5383 subql #1,%d3
43b48: c284 andl %d4,%d1
43b4a: 6612 bnes 43b5e <rtems_assoc_remote_by_local_bitfield+0x36>
)
{
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
43b4c: d482 addl %d2,%d2
43b4e: 4a83 tstl %d3
43b50: 66f2 bnes 43b44 <rtems_assoc_remote_by_local_bitfield+0x1c>
if (b & local_value)
remote_value |= rtems_assoc_remote_by_local(ap, b);
return remote_value;
}
43b52: 2005 movel %d5,%d0
43b54: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
43b5a: 4e5e unlk %fp
43b5c: 4e75 rts
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
if (b & local_value)
remote_value |= rtems_assoc_remote_by_local(ap, b);
43b5e: 2f02 movel %d2,%sp@-
)
{
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
43b60: d482 addl %d2,%d2
if (b & local_value)
remote_value |= rtems_assoc_remote_by_local(ap, b);
43b62: 2f06 movel %d6,%sp@-
43b64: 4e92 jsr %a2@
43b66: 508f addql #8,%sp
43b68: 8a80 orl %d0,%d5
)
{
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
43b6a: 4a83 tstl %d3
43b6c: 66d6 bnes 43b44 <rtems_assoc_remote_by_local_bitfield+0x1c><== ALWAYS TAKEN
43b6e: 60e2 bras 43b52 <rtems_assoc_remote_by_local_bitfield+0x2a><== NOT EXECUTED
0004ce1a <rtems_bdbuf_add_to_modified_list_after_access>:
}
}
static void
rtems_bdbuf_add_to_modified_list_after_access (rtems_bdbuf_buffer *bd)
{
4ce1a: 4e56 0000 linkw %fp,#0
4ce1e: 2f0a movel %a2,%sp@-
4ce20: 246e 0008 moveal %fp@(8),%a2
if (bdbuf_cache.sync_active && bdbuf_cache.sync_device == bd->dd)
4ce24: 4a39 0006 3782 tstb 63782 <bdbuf_cache+0x2e>
4ce2a: 670e beqs 4ce3a <rtems_bdbuf_add_to_modified_list_after_access+0x20><== ALWAYS TAKEN
4ce2c: 202a 0012 movel %a2@(18),%d0 <== NOT EXECUTED
4ce30: b0b9 0006 3788 cmpl 63788 <bdbuf_cache+0x34>,%d0 <== NOT EXECUTED
4ce36: 6700 0094 beqw 4cecc <rtems_bdbuf_add_to_modified_list_after_access+0xb2><== NOT EXECUTED
* difficult question. Is a snapshot of a block that is changing better than
* nothing being written? We have tended to think we should hold changes for
* only a specific period of time even if still changing and get onto disk
* and letting the file system try and recover this position if it can.
*/
if (bd->state == RTEMS_BDBUF_STATE_ACCESS_CACHED
4ce3a: 202a 001e movel %a2@(30),%d0
4ce3e: 7203 moveq #3,%d1
4ce40: b280 cmpl %d0,%d1
4ce42: 6746 beqs 4ce8a <rtems_bdbuf_add_to_modified_list_after_access+0x70>
|| bd->state == RTEMS_BDBUF_STATE_ACCESS_EMPTY)
4ce44: 123c 0005 moveb #5,%d1
4ce48: b280 cmpl %d0,%d1
4ce4a: 673e beqs 4ce8a <rtems_bdbuf_add_to_modified_list_after_access+0x70>
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4ce4c: 2079 0006 37a4 moveal 637a4 <bdbuf_cache+0x50>,%a0
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4ce52: 7007 moveq #7,%d0
4ce54: 2540 001e movel %d0,%a2@(30)
the_node->next = tail;
4ce58: 24bc 0006 37a0 movel #407456,%a2@
tail->previous = the_node;
4ce5e: 23ca 0006 37a4 movel %a2,637a4 <bdbuf_cache+0x50>
old_last->next = the_node;
4ce64: 208a movel %a2,%a0@
the_node->previous = old_last;
4ce66: 2548 0004 movel %a0,%a2@(4)
bd->hold_timer = bdbuf_config.swap_block_hold;
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);
rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);
if (bd->waiters)
4ce6a: 4aaa 0022 tstl %a2@(34)
4ce6e: 6648 bnes 4ceb8 <rtems_bdbuf_add_to_modified_list_after_access+0x9e>
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
else if (rtems_bdbuf_has_buffer_waiters ())
4ce70: 4ab9 0006 37c4 tstl 637c4 <bdbuf_cache+0x70>
4ce76: 6608 bnes 4ce80 <rtems_bdbuf_add_to_modified_list_after_access+0x66>
rtems_bdbuf_wake_swapper ();
}
4ce78: 246e fffc moveal %fp@(-4),%a2
4ce7c: 4e5e unlk %fp
4ce7e: 4e75 rts
4ce80: 246e fffc moveal %fp@(-4),%a2
4ce84: 4e5e unlk %fp
rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
else if (rtems_bdbuf_has_buffer_waiters ())
rtems_bdbuf_wake_swapper ();
4ce86: 6000 fd8c braw 4cc14 <rtems_bdbuf_wake_swapper>
* only a specific period of time even if still changing and get onto disk
* and letting the file system try and recover this position if it can.
*/
if (bd->state == RTEMS_BDBUF_STATE_ACCESS_CACHED
|| bd->state == RTEMS_BDBUF_STATE_ACCESS_EMPTY)
bd->hold_timer = bdbuf_config.swap_block_hold;
4ce8a: 41f9 0006 0c22 lea 60c22 <rtems_bdbuf_configuration+0x10>,%a0
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4ce90: 7007 moveq #7,%d0
* only a specific period of time even if still changing and get onto disk
* and letting the file system try and recover this position if it can.
*/
if (bd->state == RTEMS_BDBUF_STATE_ACCESS_CACHED
|| bd->state == RTEMS_BDBUF_STATE_ACCESS_EMPTY)
bd->hold_timer = bdbuf_config.swap_block_hold;
4ce92: 2550 002a movel %a0@,%a2@(42)
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4ce96: 2079 0006 37a4 moveal 637a4 <bdbuf_cache+0x50>,%a0
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4ce9c: 2540 001e movel %d0,%a2@(30)
the_node->next = tail;
4cea0: 24bc 0006 37a0 movel #407456,%a2@
tail->previous = the_node;
4cea6: 23ca 0006 37a4 movel %a2,637a4 <bdbuf_cache+0x50>
old_last->next = the_node;
4ceac: 208a movel %a2,%a0@
the_node->previous = old_last;
4ceae: 2548 0004 movel %a0,%a2@(4)
bd->hold_timer = bdbuf_config.swap_block_hold;
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);
rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);
if (bd->waiters)
4ceb2: 4aaa 0022 tstl %a2@(34)
4ceb6: 67b8 beqs 4ce70 <rtems_bdbuf_add_to_modified_list_after_access+0x56>
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
else if (rtems_bdbuf_has_buffer_waiters ())
rtems_bdbuf_wake_swapper ();
}
4ceb8: 246e fffc moveal %fp@(-4),%a2
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);
rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
4cebc: 223c 0006 37b4 movel #407476,%d1
4cec2: 2d41 0008 movel %d1,%fp@(8)
else if (rtems_bdbuf_has_buffer_waiters ())
rtems_bdbuf_wake_swapper ();
}
4cec6: 4e5e unlk %fp
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);
rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
4cec8: 6000 ff28 braw 4cdf2 <rtems_bdbuf_wake>
static void
rtems_bdbuf_add_to_modified_list_after_access (rtems_bdbuf_buffer *bd)
{
if (bdbuf_cache.sync_active && bdbuf_cache.sync_device == bd->dd)
{
rtems_bdbuf_unlock_cache ();
4cecc: 4eba fd2e jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>) <== NOT EXECUTED
* Lock the cache's sync. A single task can nest calls.
*/
static void
rtems_bdbuf_lock_sync (void)
{
rtems_bdbuf_lock (bdbuf_cache.sync_lock, RTEMS_BDBUF_FATAL_SYNC_LOCK);
4ced0: 4878 0019 pea 19 <OPER2+0x5> <== NOT EXECUTED
4ced4: 2f39 0006 377e movel 6377e <bdbuf_cache+0x2a>,%sp@- <== NOT EXECUTED
4ceda: 4eba fcae jsr %pc@(4cb8a <rtems_bdbuf_lock>) <== NOT EXECUTED
* Unlock the cache's sync lock. Any blocked writers are woken.
*/
static void
rtems_bdbuf_unlock_sync (void)
{
rtems_bdbuf_unlock (bdbuf_cache.sync_lock,
4cede: 4878 001a pea 1a <OPER2+0x6> <== NOT EXECUTED
4cee2: 2f39 0006 377e movel 6377e <bdbuf_cache+0x2a>,%sp@- <== NOT EXECUTED
4cee8: 4eba fcf2 jsr %pc@(4cbdc <rtems_bdbuf_unlock>) <== NOT EXECUTED
* Wait for the sync lock.
*/
rtems_bdbuf_lock_sync ();
rtems_bdbuf_unlock_sync ();
rtems_bdbuf_lock_cache ();
4ceec: 4eba fcc2 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>) <== NOT EXECUTED
4cef0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4cef4: 6000 ff44 braw 4ce3a <rtems_bdbuf_add_to_modified_list_after_access+0x20><== NOT EXECUTED
0004cc96 <rtems_bdbuf_anonymous_wait>:
* The function assumes the cache is locked on entry and it will be locked on
* exit.
*/
static void
rtems_bdbuf_anonymous_wait (rtems_bdbuf_waiters *waiters)
{
4cc96: 4e56 0000 linkw %fp,#0
4cc9a: 2f0a movel %a2,%sp@-
4cc9c: 246e 0008 moveal %fp@(8),%a2
4cca0: 2f02 movel %d2,%sp@-
rtems_mode prev_mode;
/*
* Indicate we are waiting.
*/
++waiters->count;
4cca2: 5292 addql #1,%a2@
* blocking or just hits that window, and before this task has blocked on the
* semaphore. If the preempting task flushes the queue this task will not see
* the flush and may block for ever or until another transaction flushes this
* semaphore.
*/
prev_mode = rtems_bdbuf_disable_preemption ();
4cca4: 4eba ff94 jsr %pc@(4cc3a <rtems_bdbuf_disable_preemption>)
4cca8: 2400 movel %d0,%d2
/*
* Unlock the cache, wait, and lock the cache when we return.
*/
rtems_bdbuf_unlock_cache ();
4ccaa: 4eba ff50 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
sc = rtems_semaphore_obtain (waiters->sema, RTEMS_WAIT, RTEMS_BDBUF_WAIT_TIMEOUT);
4ccae: 42a7 clrl %sp@-
4ccb0: 42a7 clrl %sp@-
4ccb2: 2f2a 0004 movel %a2@(4),%sp@-
4ccb6: 4eb9 0004 8c48 jsr 48c48 <rtems_semaphore_obtain>
if (sc == RTEMS_TIMEOUT)
4ccbc: 4fef 000c lea %sp@(12),%sp
4ccc0: 7206 moveq #6,%d1
4ccc2: b280 cmpl %d0,%d1
4ccc4: 6720 beqs 4cce6 <rtems_bdbuf_anonymous_wait+0x50><== NEVER TAKEN
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_TO);
if (sc != RTEMS_UNSATISFIED)
4ccc6: 720d moveq #13,%d1
4ccc8: b280 cmpl %d0,%d1
4ccca: 6622 bnes 4ccee <rtems_bdbuf_anonymous_wait+0x58><== NEVER TAKEN
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_2);
rtems_bdbuf_lock_cache ();
4cccc: 4eba fee2 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
rtems_bdbuf_restore_preemption (prev_mode);
4ccd0: 2f02 movel %d2,%sp@-
4ccd2: 4eba ff96 jsr %pc@(4cc6a <rtems_bdbuf_restore_preemption>)
--waiters->count;
}
4ccd6: 242e fff8 movel %fp@(-8),%d2
rtems_bdbuf_lock_cache ();
rtems_bdbuf_restore_preemption (prev_mode);
--waiters->count;
4ccda: 5392 subql #1,%a2@
4ccdc: 588f addql #4,%sp
}
4ccde: 246e fffc moveal %fp@(-4),%a2
4cce2: 4e5e unlk %fp
4cce4: 4e75 rts
rtems_bdbuf_unlock_cache ();
sc = rtems_semaphore_obtain (waiters->sema, RTEMS_WAIT, RTEMS_BDBUF_WAIT_TIMEOUT);
if (sc == RTEMS_TIMEOUT)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_TO);
4cce6: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
4ccea: 4eba fe8c jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
if (sc != RTEMS_UNSATISFIED)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_2);
4ccee: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4ccf2: 4eba fe84 jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004cef8 <rtems_bdbuf_create_task.constprop.15>:
return NULL;
}
static rtems_status_code
rtems_bdbuf_create_task(
4cef8: 4e56 fff4 linkw %fp,#-12
4cefc: 206e 0008 moveal %fp@(8),%a0
4cf00: 48d7 040c moveml %d2-%d3/%a2,%sp@
4cf04: 202e 000c movel %fp@(12),%d0
4cf08: 242e 0010 movel %fp@(16),%d2
4cf0c: 262e 0014 movel %fp@(20),%d3
4cf10: 246e 0018 moveal %fp@(24),%a2
rtems_task_argument arg,
rtems_id *id
)
{
rtems_status_code sc;
size_t stack_size = bdbuf_config.task_stack_size ?
4cf14: 2239 0006 0c2e movel 60c2e <rtems_bdbuf_configuration+0x1c>,%d1
bdbuf_config.task_stack_size : RTEMS_BDBUF_TASK_STACK_SIZE_DEFAULT;
4cf1a: 6604 bnes 4cf20 <rtems_bdbuf_create_task.constprop.15+0x28><== ALWAYS TAKEN
4cf1c: 323c 1000 movew #4096,%d1 <== NOT EXECUTED
priority = priority != 0 ? priority : default_priority;
4cf20: 4a80 tstl %d0
4cf22: 6604 bnes 4cf28 <rtems_bdbuf_create_task.constprop.15+0x30><== ALWAYS TAKEN
4cf24: 103c 000f moveb #15,%d0 <== NOT EXECUTED
sc = rtems_task_create (name,
4cf28: 2f0a movel %a2,%sp@-
4cf2a: 42a7 clrl %sp@-
4cf2c: 4878 0400 pea 400 <D_BIAS+0x2>
4cf30: 2f01 movel %d1,%sp@-
4cf32: 2f00 movel %d0,%sp@-
4cf34: 2f08 movel %a0,%sp@-
4cf36: 4eb9 0004 8eb4 jsr 48eb4 <rtems_task_create>
stack_size,
RTEMS_PREEMPT | RTEMS_NO_TIMESLICE | RTEMS_NO_ASR,
RTEMS_LOCAL | RTEMS_NO_FLOATING_POINT,
id);
if (sc == RTEMS_SUCCESSFUL)
4cf3c: 4fef 0018 lea %sp@(24),%sp
4cf40: 4a80 tstl %d0
4cf42: 670a beqs 4cf4e <rtems_bdbuf_create_task.constprop.15+0x56><== ALWAYS TAKEN
sc = rtems_task_start (*id, entry, arg);
return sc;
}
4cf44: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4cf4a: 4e5e unlk %fp <== NOT EXECUTED
4cf4c: 4e75 rts <== NOT EXECUTED
RTEMS_PREEMPT | RTEMS_NO_TIMESLICE | RTEMS_NO_ASR,
RTEMS_LOCAL | RTEMS_NO_FLOATING_POINT,
id);
if (sc == RTEMS_SUCCESSFUL)
sc = rtems_task_start (*id, entry, arg);
4cf4e: 2d52 0008 movel %a2@,%fp@(8)
4cf52: 2d43 0010 movel %d3,%fp@(16)
4cf56: 2d42 000c movel %d2,%fp@(12)
return sc;
}
4cf5a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
4cf60: 4e5e unlk %fp
RTEMS_PREEMPT | RTEMS_NO_TIMESLICE | RTEMS_NO_ASR,
RTEMS_LOCAL | RTEMS_NO_FLOATING_POINT,
id);
if (sc == RTEMS_SUCCESSFUL)
sc = rtems_task_start (*id, entry, arg);
4cf62: 4ef9 0004 9130 jmp 49130 <rtems_task_start>
0004cc3a <rtems_bdbuf_disable_preemption>:
--bd->group->users;
}
static rtems_mode
rtems_bdbuf_disable_preemption (void)
{
4cc3a: 4e56 fffc linkw %fp,#-4
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_mode prev_mode = 0;
4cc3e: 204e moveal %fp,%a0
4cc40: 42a0 clrl %a0@-
sc = rtems_task_mode (RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &prev_mode);
4cc42: 2f08 movel %a0,%sp@-
4cc44: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
4cc48: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
4cc4c: 4eb9 0005 08f8 jsr 508f8 <rtems_task_mode>
if (sc != RTEMS_SUCCESSFUL)
4cc52: 4fef 000c lea %sp@(12),%sp
4cc56: 4a80 tstl %d0
4cc58: 6608 bnes 4cc62 <rtems_bdbuf_disable_preemption+0x28><== NEVER TAKEN
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_PREEMPT_DIS);
return prev_mode;
}
4cc5a: 202e fffc movel %fp@(-4),%d0
4cc5e: 4e5e unlk %fp
4cc60: 4e75 rts
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_mode prev_mode = 0;
sc = rtems_task_mode (RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &prev_mode);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_PREEMPT_DIS);
4cc62: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4cc66: 4eba ff10 jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004d2ac <rtems_bdbuf_discard_buffer_after_access>:
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4d2ac: 7001 moveq #1,%d0
return bdbuf_cache.max_bds_per_group / bds_per_size;
}
static void
rtems_bdbuf_discard_buffer_after_access (rtems_bdbuf_buffer *bd)
{
4d2ae: 4e56 0000 linkw %fp,#0
4d2b2: 2f0a movel %a2,%sp@-
4d2b4: 246e 0008 moveal %fp@(8),%a2
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4d2b8: 206a 0026 moveal %a2@(38),%a0
}
static void
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)
{
--bd->group->users;
4d2bc: 53a8 000c subql #1,%a0@(12)
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4d2c0: 2540 001e movel %d0,%a2@(30)
static void
rtems_bdbuf_discard_buffer (rtems_bdbuf_buffer *bd)
{
rtems_bdbuf_make_empty (bd);
if (bd->waiters == 0)
4d2c4: 4aaa 0022 tstl %a2@(34)
4d2c8: 6714 beqs 4d2de <rtems_bdbuf_discard_buffer_after_access+0x32>
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
else
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
}
4d2ca: 246e fffc moveal %fp@(-4),%a2
{
rtems_bdbuf_group_release (bd);
rtems_bdbuf_discard_buffer (bd);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
4d2ce: 203c 0006 37b4 movel #407476,%d0
4d2d4: 2d40 0008 movel %d0,%fp@(8)
else
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
}
4d2d8: 4e5e unlk %fp
{
rtems_bdbuf_group_release (bd);
rtems_bdbuf_discard_buffer (bd);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
4d2da: 6000 fb16 braw 4cdf2 <rtems_bdbuf_wake>
4d2de: 2f0a movel %a2,%sp@-
4d2e0: 4eba ff98 jsr %pc@(4d27a <rtems_bdbuf_discard_buffer.part.9>)
rtems_bdbuf_discard_buffer_after_access (rtems_bdbuf_buffer *bd)
{
rtems_bdbuf_group_release (bd);
rtems_bdbuf_discard_buffer (bd);
if (bd->waiters)
4d2e4: 588f addql #4,%sp
4d2e6: 4aaa 0022 tstl %a2@(34)
4d2ea: 66de bnes 4d2ca <rtems_bdbuf_discard_buffer_after_access+0x1e><== NEVER TAKEN
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
else
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
}
4d2ec: 246e fffc moveal %fp@(-4),%a2
rtems_bdbuf_discard_buffer (bd);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
else
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4d2f0: 203c 0006 37c4 movel #407492,%d0
4d2f6: 2d40 0008 movel %d0,%fp@(8)
}
4d2fa: 4e5e unlk %fp
rtems_bdbuf_discard_buffer (bd);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
else
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4d2fc: 6000 faf4 braw 4cdf2 <rtems_bdbuf_wake>
0004df6a <rtems_bdbuf_execute_read_request>:
/*
* TODO: This type of request structure is wrong and should be removed.
*/
#define bdbuf_alloc(size) __builtin_alloca (size)
req = bdbuf_alloc (sizeof (rtems_blkdev_request) +
4df6a: 72fe moveq #-2,%d1
sizeof (rtems_blkdev_sg_buffer) * transfer_count);
req->req = RTEMS_BLKDEV_REQ_READ;
req->done = rtems_bdbuf_transfer_done;
4df6c: 41fa 00dc lea %pc@(4e04a <rtems_bdbuf_transfer_done>),%a0
static rtems_status_code
rtems_bdbuf_execute_read_request (rtems_disk_device *dd,
rtems_bdbuf_buffer *bd,
uint32_t transfer_count)
{
4df70: 4e56 ffdc linkw %fp,#-36
4df74: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
4df78: 282e 0010 movel %fp@(16),%d4
/*
* TODO: This type of request structure is wrong and should be removed.
*/
#define bdbuf_alloc(size) __builtin_alloca (size)
req = bdbuf_alloc (sizeof (rtems_blkdev_request) +
4df7c: 2004 movel %d4,%d0
4df7e: e988 lsll #4,%d0
static rtems_status_code
rtems_bdbuf_execute_read_request (rtems_disk_device *dd,
rtems_bdbuf_buffer *bd,
uint32_t transfer_count)
{
4df80: 246e 000c moveal %fp@(12),%a2
/*
* TODO: This type of request structure is wrong and should be removed.
*/
#define bdbuf_alloc(size) __builtin_alloca (size)
req = bdbuf_alloc (sizeof (rtems_blkdev_request) +
4df84: 0680 0000 001c addil #28,%d0
4df8a: 9fc0 subal %d0,%sp
4df8c: 49ef 0001 lea %sp@(1),%a4
4df90: 200c movel %a4,%d0
static rtems_status_code
rtems_bdbuf_execute_read_request (rtems_disk_device *dd,
rtems_bdbuf_buffer *bd,
uint32_t transfer_count)
{
4df92: 266e 0008 moveal %fp@(8),%a3
/*
* TODO: This type of request structure is wrong and should be removed.
*/
#define bdbuf_alloc(size) __builtin_alloca (size)
req = bdbuf_alloc (sizeof (rtems_blkdev_request) +
4df96: c081 andl %d1,%d0
rtems_bdbuf_execute_read_request (rtems_disk_device *dd,
rtems_bdbuf_buffer *bd,
uint32_t transfer_count)
{
rtems_blkdev_request *req = NULL;
rtems_blkdev_bnum media_block = bd->block;
4df98: 242a 0016 movel %a2@(22),%d2
/*
* TODO: This type of request structure is wrong and should be removed.
*/
#define bdbuf_alloc(size) __builtin_alloca (size)
req = bdbuf_alloc (sizeof (rtems_blkdev_request) +
4df9c: 2840 moveal %d0,%a4
uint32_t transfer_count)
{
rtems_blkdev_request *req = NULL;
rtems_blkdev_bnum media_block = bd->block;
uint32_t media_blocks_per_block = dd->media_blocks_per_block;
uint32_t block_size = dd->block_size;
4df9e: 2a2b 0024 movel %a3@(36),%d5
rtems_bdbuf_buffer *bd,
uint32_t transfer_count)
{
rtems_blkdev_request *req = NULL;
rtems_blkdev_bnum media_block = bd->block;
uint32_t media_blocks_per_block = dd->media_blocks_per_block;
4dfa2: 2c2b 002c movel %a3@(44),%d6
req = bdbuf_alloc (sizeof (rtems_blkdev_request) +
sizeof (rtems_blkdev_sg_buffer) * transfer_count);
req->req = RTEMS_BLKDEV_REQ_READ;
req->done = rtems_bdbuf_transfer_done;
4dfa6: 2948 0004 movel %a0,%a4@(4)
#define bdbuf_alloc(size) __builtin_alloca (size)
req = bdbuf_alloc (sizeof (rtems_blkdev_request) +
sizeof (rtems_blkdev_sg_buffer) * transfer_count);
req->req = RTEMS_BLKDEV_REQ_READ;
4dfaa: 4294 clrl %a4@
req->done = rtems_bdbuf_transfer_done;
req->io_task = rtems_task_self ();
4dfac: 4eb9 0005 0a78 jsr 50a78 <rtems_task_self>
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);
req->bufs [0].user = bd;
req->bufs [0].block = media_block;
req->bufs [0].length = block_size;
req->bufs [0].buffer = bd->buffer;
4dfb2: 296a 001a 0020 movel %a2@(26),%a4@(32)
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_users ("read", bd);
while (transfer_index < transfer_count)
4dfb8: 7201 moveq #1,%d1
req = bdbuf_alloc (sizeof (rtems_blkdev_request) +
sizeof (rtems_blkdev_sg_buffer) * transfer_count);
req->req = RTEMS_BLKDEV_REQ_READ;
req->done = rtems_bdbuf_transfer_done;
req->io_task = rtems_task_self ();
4dfba: 2940 0014 movel %d0,%a4@(20)
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4dfbe: 7009 moveq #9,%d0
sizeof (rtems_blkdev_sg_buffer) * transfer_count);
req->req = RTEMS_BLKDEV_REQ_READ;
req->done = rtems_bdbuf_transfer_done;
req->io_task = rtems_task_self ();
req->bufnum = 0;
4dfc0: 42ac 0010 clrl %a4@(16)
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4dfc4: 2540 001e movel %d0,%a2@(30)
req->io_task = rtems_task_self ();
req->bufnum = 0;
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);
req->bufs [0].user = bd;
4dfc8: 294a 0024 movel %a2,%a4@(36)
req->bufs [0].block = media_block;
4dfcc: 2942 0018 movel %d2,%a4@(24)
req->bufs [0].length = block_size;
4dfd0: 2945 001c movel %d5,%a4@(28)
req->bufs [0].buffer = bd->buffer;
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_users ("read", bd);
while (transfer_index < transfer_count)
4dfd4: b284 cmpl %d4,%d1
4dfd6: 6456 bccs 4e02e <rtems_bdbuf_execute_read_request+0xc4>
else
return RTEMS_IO_ERROR;
}
static rtems_status_code
rtems_bdbuf_execute_read_request (rtems_disk_device *dd,
4dfd8: 45ec 0034 lea %a4@(52),%a2
{
rtems_blkdev_request *req = NULL;
rtems_blkdev_bnum media_block = bd->block;
uint32_t media_blocks_per_block = dd->media_blocks_per_block;
uint32_t block_size = dd->block_size;
uint32_t transfer_index = 1;
4dfdc: 7601 moveq #1,%d3
4dfde: 4bfa f6d0 lea %pc@(4d6b0 <rtems_bdbuf_get_buffer_for_read_ahead>),%a5
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_users ("read", bd);
while (transfer_index < transfer_count)
{
media_block += media_blocks_per_block;
4dfe2: d486 addl %d6,%d2
bd = rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);
4dfe4: 2f02 movel %d2,%sp@-
4dfe6: 2f0b movel %a3,%sp@-
4dfe8: 4e95 jsr %a5@
if (bd == NULL)
4dfea: 508f addql #8,%sp
4dfec: 4a80 tstl %d0
4dfee: 6724 beqs 4e014 <rtems_bdbuf_execute_read_request+0xaa><== NEVER TAKEN
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4dff0: 2040 moveal %d0,%a0
4dff2: 7209 moveq #9,%d1
req->bufs [transfer_index].buffer = bd->buffer;
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_users ("read", bd);
++transfer_index;
4dff4: 5283 addql #1,%d3
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4dff6: 2141 001e movel %d1,%a0@(30)
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);
req->bufs [transfer_index].user = bd;
req->bufs [transfer_index].block = media_block;
req->bufs [transfer_index].length = block_size;
req->bufs [transfer_index].buffer = bd->buffer;
4dffa: 41e8 001a lea %a0@(26),%a0
if (bd == NULL)
break;
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);
req->bufs [transfer_index].user = bd;
4dffe: 2480 movel %d0,%a2@
req->bufs [transfer_index].block = media_block;
4e000: 2542 fff4 movel %d2,%a2@(-12)
req->bufs [transfer_index].length = block_size;
4e004: 2545 fff8 movel %d5,%a2@(-8)
req->bufs [transfer_index].buffer = bd->buffer;
4e008: 2550 fffc movel %a0@,%a2@(-4)
4e00c: 45ea 0010 lea %a2@(16),%a2
req->bufs [0].buffer = bd->buffer;
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_users ("read", bd);
while (transfer_index < transfer_count)
4e010: b883 cmpl %d3,%d4
4e012: 66ce bnes 4dfe2 <rtems_bdbuf_execute_read_request+0x78>
rtems_bdbuf_show_users ("read", bd);
++transfer_index;
}
req->bufnum = transfer_index;
4e014: 2943 0010 movel %d3,%a4@(16)
return rtems_bdbuf_execute_transfer_request (dd, req, true);
4e018: 4878 0001 pea 1 <ADD>
4e01c: 2f0c movel %a4,%sp@-
4e01e: 2f0b movel %a3,%sp@-
4e020: 4eba f916 jsr %pc@(4d938 <rtems_bdbuf_execute_transfer_request>)
}
4e024: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
4e02a: 4e5e unlk %fp
4e02c: 4e75 rts
{
rtems_blkdev_request *req = NULL;
rtems_blkdev_bnum media_block = bd->block;
uint32_t media_blocks_per_block = dd->media_blocks_per_block;
uint32_t block_size = dd->block_size;
uint32_t transfer_index = 1;
4e02e: 7601 moveq #1,%d3
rtems_bdbuf_show_users ("read", bd);
++transfer_index;
}
req->bufnum = transfer_index;
4e030: 2943 0010 movel %d3,%a4@(16)
return rtems_bdbuf_execute_transfer_request (dd, req, true);
4e034: 4878 0001 pea 1 <ADD>
4e038: 2f0c movel %a4,%sp@-
4e03a: 2f0b movel %a3,%sp@-
4e03c: 4eba f8fa jsr %pc@(4d938 <rtems_bdbuf_execute_transfer_request>)
}
4e040: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
4e046: 4e5e unlk %fp <== NOT EXECUTED
0004d938 <rtems_bdbuf_execute_transfer_request>:
static rtems_status_code
rtems_bdbuf_execute_transfer_request (rtems_disk_device *dd,
rtems_blkdev_request *req,
bool cache_locked)
{
4d938: 4e56 ffe0 linkw %fp,#-32
4d93c: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
4d940: 1a2e 0013 moveb %fp@(19),%d5
4d944: 246e 0008 moveal %fp@(8),%a2
4d948: 266e 000c moveal %fp@(12),%a3
rtems_status_code sc = RTEMS_SUCCESSFUL;
uint32_t transfer_index = 0;
bool wake_transfer_waiters = false;
bool wake_buffer_waiters = false;
if (cache_locked)
4d94c: 6600 013c bnew 4da8a <rtems_bdbuf_execute_transfer_request+0x152>
rtems_bdbuf_unlock_cache ();
/* The return value will be ignored for transfer requests */
dd->ioctl (dd->phys_dev, RTEMS_BLKIO_REQUEST, req);
4d950: 2f0b movel %a3,%sp@-
4d952: 206a 0038 moveal %a2@(56),%a0
4d956: 2f3c c018 4201 movel #-1072152063,%sp@-
4d95c: 2f2a 0008 movel %a2@(8),%sp@-
4d960: 4e90 jsr %a0@
/* Wait for transfer request completion */
rtems_bdbuf_wait_for_transient_event ();
4d962: 4eba ffa8 jsr %pc@(4d90c <rtems_bdbuf_wait_for_transient_event>)
sc = req->status;
4d966: 2c2b 000c movel %a3@(12),%d6
rtems_bdbuf_lock_cache ();
4d96a: 4eba f244 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
/* Statistics */
if (req->req == RTEMS_BLKDEV_REQ_READ)
4d96e: 4fef 000c lea %sp@(12),%sp
4d972: 4a93 tstl %a3@
4d974: 6600 00ca bnew 4da40 <rtems_bdbuf_execute_transfer_request+0x108>
{
dd->stats.read_blocks += req->bufnum;
4d978: 202b 0010 movel %a3@(16),%d0
4d97c: d1aa 004e addl %d0,%a2@(78)
if (sc != RTEMS_SUCCESSFUL)
4d980: 4a86 tstl %d6
4d982: 6600 010e bnew 4da92 <rtems_bdbuf_execute_transfer_request+0x15a>
++dd->stats.write_transfers;
if (sc != RTEMS_SUCCESSFUL)
++dd->stats.write_errors;
}
for (transfer_index = 0; transfer_index < req->bufnum; ++transfer_index)
4d986: 4a80 tstl %d0
4d988: 6750 beqs 4d9da <rtems_bdbuf_execute_transfer_request+0xa2><== NEVER TAKEN
rtems_event_transient_send (req->io_task);
}
static rtems_status_code
rtems_bdbuf_execute_transfer_request (rtems_disk_device *dd,
4d98a: 45eb 0024 lea %a3@(36),%a2
4d98e: 4282 clrl %d2
4d990: 49fa f8e8 lea %pc@(4d27a <rtems_bdbuf_discard_buffer.part.9>),%a4
4d994: 4203 clrb %d3
4d996: 4204 clrb %d4
++dd->stats.write_errors;
}
for (transfer_index = 0; transfer_index < req->bufnum; ++transfer_index)
{
rtems_bdbuf_buffer *bd = req->bufs [transfer_index].user;
4d998: 2052 moveal %a2@,%a0
bool waiters = bd->waiters;
4d99a: 2228 0022 movel %a0@(34),%d1
if (waiters)
4d99e: 6700 009a beqw 4da3a <rtems_bdbuf_execute_transfer_request+0x102>
wake_transfer_waiters = true;
4d9a2: 7801 moveq #1,%d4
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4d9a4: 2268 0026 moveal %a0@(38),%a1
}
static void
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)
{
--bd->group->users;
4d9a8: 53a9 000c subql #1,%a1@(12)
else
wake_buffer_waiters = true;
rtems_bdbuf_group_release (bd);
if (sc == RTEMS_SUCCESSFUL && bd->state == RTEMS_BDBUF_STATE_TRANSFER)
4d9ac: 4a86 tstl %d6
4d9ae: 6608 bnes 4d9b8 <rtems_bdbuf_execute_transfer_request+0x80>
4d9b0: 7009 moveq #9,%d0
4d9b2: b0a8 001e cmpl %a0@(30),%d0
4d9b6: 6752 beqs 4da0a <rtems_bdbuf_execute_transfer_request+0xd2>
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4d9b8: 7001 moveq #1,%d0
4d9ba: 2140 001e movel %d0,%a0@(30)
static void
rtems_bdbuf_discard_buffer (rtems_bdbuf_buffer *bd)
{
rtems_bdbuf_make_empty (bd);
if (bd->waiters == 0)
4d9be: 4a81 tstl %d1
4d9c0: 6734 beqs 4d9f6 <rtems_bdbuf_execute_transfer_request+0xbe>
++dd->stats.write_transfers;
if (sc != RTEMS_SUCCESSFUL)
++dd->stats.write_errors;
}
for (transfer_index = 0; transfer_index < req->bufnum; ++transfer_index)
4d9c2: 5282 addql #1,%d2
4d9c4: 45ea 0010 lea %a2@(16),%a2
4d9c8: b4ab 0010 cmpl %a3@(16),%d2
4d9cc: 65ca bcss 4d998 <rtems_bdbuf_execute_transfer_request+0x60><== NEVER TAKEN
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_users ("transfer", bd);
}
if (wake_transfer_waiters)
4d9ce: 4a04 tstb %d4
4d9d0: 6600 00a4 bnew 4da76 <rtems_bdbuf_execute_transfer_request+0x13e>
rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);
if (wake_buffer_waiters)
4d9d4: 4a03 tstb %d3
4d9d6: 6600 008a bnew 4da62 <rtems_bdbuf_execute_transfer_request+0x12a>
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
if (!cache_locked)
4d9da: 4a05 tstb %d5
4d9dc: 677c beqs 4da5a <rtems_bdbuf_execute_transfer_request+0x122>
rtems_bdbuf_unlock_cache ();
if (sc == RTEMS_SUCCESSFUL || sc == RTEMS_UNSATISFIED)
4d9de: 4a86 tstl %d6
4d9e0: 6708 beqs 4d9ea <rtems_bdbuf_execute_transfer_request+0xb2>
4d9e2: 700d moveq #13,%d0
4d9e4: b086 cmpl %d6,%d0
4d9e6: 6702 beqs 4d9ea <rtems_bdbuf_execute_transfer_request+0xb2>
return sc;
else
return RTEMS_IO_ERROR;
4d9e8: 7c1b moveq #27,%d6
}
4d9ea: 2006 movel %d6,%d0
4d9ec: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4
4d9f2: 4e5e unlk %fp
4d9f4: 4e75 rts
4d9f6: 2f08 movel %a0,%sp@-
++dd->stats.write_transfers;
if (sc != RTEMS_SUCCESSFUL)
++dd->stats.write_errors;
}
for (transfer_index = 0; transfer_index < req->bufnum; ++transfer_index)
4d9f8: 5282 addql #1,%d2
4d9fa: 45ea 0010 lea %a2@(16),%a2
4d9fe: 4e94 jsr %a4@
4da00: 588f addql #4,%sp
4da02: b4ab 0010 cmpl %a3@(16),%d2
4da06: 6590 bcss 4d998 <rtems_bdbuf_execute_transfer_request+0x60><== NEVER TAKEN
4da08: 60c4 bras 4d9ce <rtems_bdbuf_execute_transfer_request+0x96>
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4da0a: 2279 0006 3798 moveal 63798 <bdbuf_cache+0x44>,%a1
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4da10: 103c 0002 moveb #2,%d0
++dd->stats.write_transfers;
if (sc != RTEMS_SUCCESSFUL)
++dd->stats.write_errors;
}
for (transfer_index = 0; transfer_index < req->bufnum; ++transfer_index)
4da14: 5282 addql #1,%d2
4da16: 45ea 0010 lea %a2@(16),%a2
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4da1a: 2140 001e movel %d0,%a0@(30)
the_node->next = tail;
4da1e: 20bc 0006 3794 movel #407444,%a0@
tail->previous = the_node;
4da24: 23c8 0006 3798 movel %a0,63798 <bdbuf_cache+0x44>
old_last->next = the_node;
4da2a: 2288 movel %a0,%a1@
the_node->previous = old_last;
4da2c: 2149 0004 movel %a1,%a0@(4)
++dd->stats.write_transfers;
if (sc != RTEMS_SUCCESSFUL)
++dd->stats.write_errors;
}
for (transfer_index = 0; transfer_index < req->bufnum; ++transfer_index)
4da30: b4ab 0010 cmpl %a3@(16),%d2
4da34: 6500 ff62 bcsw 4d998 <rtems_bdbuf_execute_transfer_request+0x60>
4da38: 6094 bras 4d9ce <rtems_bdbuf_execute_transfer_request+0x96>
bool waiters = bd->waiters;
if (waiters)
wake_transfer_waiters = true;
else
wake_buffer_waiters = true;
4da3a: 7601 moveq #1,%d3
4da3c: 6000 ff66 braw 4d9a4 <rtems_bdbuf_execute_transfer_request+0x6c>
if (sc != RTEMS_SUCCESSFUL)
++dd->stats.read_errors;
}
else
{
dd->stats.write_blocks += req->bufnum;
4da40: 202b 0010 movel %a3@(16),%d0
++dd->stats.write_transfers;
4da44: 52aa 0056 addql #1,%a2@(86)
if (sc != RTEMS_SUCCESSFUL)
++dd->stats.read_errors;
}
else
{
dd->stats.write_blocks += req->bufnum;
4da48: d1aa 005a addl %d0,%a2@(90)
++dd->stats.write_transfers;
if (sc != RTEMS_SUCCESSFUL)
4da4c: 4a86 tstl %d6
4da4e: 6700 ff36 beqw 4d986 <rtems_bdbuf_execute_transfer_request+0x4e>
++dd->stats.write_errors;
4da52: 52aa 005e addql #1,%a2@(94)
4da56: 6000 ff2e braw 4d986 <rtems_bdbuf_execute_transfer_request+0x4e>
if (wake_buffer_waiters)
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
if (!cache_locked)
rtems_bdbuf_unlock_cache ();
4da5a: 4eba f1a0 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
4da5e: 6000 ff7e braw 4d9de <rtems_bdbuf_execute_transfer_request+0xa6>
if (wake_transfer_waiters)
rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);
if (wake_buffer_waiters)
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4da62: 4879 0006 37c4 pea 637c4 <bdbuf_cache+0x70>
4da68: 4eba f388 jsr %pc@(4cdf2 <rtems_bdbuf_wake>)
4da6c: 588f addql #4,%sp
if (!cache_locked)
4da6e: 4a05 tstb %d5
4da70: 6600 ff6c bnew 4d9de <rtems_bdbuf_execute_transfer_request+0xa6>
4da74: 60e4 bras 4da5a <rtems_bdbuf_execute_transfer_request+0x122>
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_users ("transfer", bd);
}
if (wake_transfer_waiters)
rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);
4da76: 4879 0006 37bc pea 637bc <bdbuf_cache+0x68>
4da7c: 4eba f374 jsr %pc@(4cdf2 <rtems_bdbuf_wake>)
4da80: 588f addql #4,%sp
if (wake_buffer_waiters)
4da82: 4a03 tstb %d3
4da84: 6700 ff54 beqw 4d9da <rtems_bdbuf_execute_transfer_request+0xa2>
4da88: 60d8 bras 4da62 <rtems_bdbuf_execute_transfer_request+0x12a>
uint32_t transfer_index = 0;
bool wake_transfer_waiters = false;
bool wake_buffer_waiters = false;
if (cache_locked)
rtems_bdbuf_unlock_cache ();
4da8a: 4eba f170 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
4da8e: 6000 fec0 braw 4d950 <rtems_bdbuf_execute_transfer_request+0x18>
/* Statistics */
if (req->req == RTEMS_BLKDEV_REQ_READ)
{
dd->stats.read_blocks += req->bufnum;
if (sc != RTEMS_SUCCESSFUL)
++dd->stats.read_errors;
4da92: 52aa 0052 addql #1,%a2@(82)
4da96: 6000 feee braw 4d986 <rtems_bdbuf_execute_transfer_request+0x4e>
0004cb78 <rtems_bdbuf_fatal>:
#define RTEMS_BDBUF_AVL_MAX_HEIGHT (32)
#endif
static void
rtems_bdbuf_fatal (rtems_fatal_code error)
{
4cb78: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_fatal (RTEMS_FATAL_SOURCE_BDBUF, error);
4cb7c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4cb80: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
4cb84: 4eb9 0004 93d8 jsr 493d8 <rtems_fatal> <== NOT EXECUTED
0004cbc6 <rtems_bdbuf_fatal_with_state>:
}
static void
rtems_bdbuf_fatal_with_state (rtems_bdbuf_buf_state state,
rtems_bdbuf_fatal_code error)
{
4cbc6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4cbca: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
rtems_bdbuf_fatal ((((uint32_t) state) << 16) | error);
4cbce: 4840 swap %d0 <== NOT EXECUTED
4cbd0: 4240 clrw %d0 <== NOT EXECUTED
4cbd2: 80ae 000c orl %fp@(12),%d0 <== NOT EXECUTED
4cbd6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cbd8: 4eba ff9e jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004e60c <rtems_bdbuf_get>:
rtems_status_code
rtems_bdbuf_get (rtems_disk_device *dd,
rtems_blkdev_bnum block,
rtems_bdbuf_buffer **bd_ptr)
{
4e60c: 4e56 ffe8 linkw %fp,#-24
4e610: 48d7 047c moveml %d2-%d6/%a2,%sp@
4e614: 246e 0008 moveal %fp@(8),%a2
4e618: 2c2e 000c movel %fp@(12),%d6
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_bdbuf_buffer *bd = NULL;
rtems_blkdev_bnum media_block;
rtems_bdbuf_lock_cache ();
4e61c: 4eba e592 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
rtems_blkdev_bnum block,
rtems_blkdev_bnum *media_block_ptr)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (block < dd->block_count)
4e620: bcaa 0028 cmpl %a2@(40),%d6
4e624: 651a bcss 4e640 <rtems_bdbuf_get+0x34> <== ALWAYS TAKEN
rtems_bdbuf_show_users ("get", bd);
rtems_bdbuf_show_usage ();
}
}
rtems_bdbuf_unlock_cache ();
4e626: 4eba e5d4 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>) <== NOT EXECUTED
*bd_ptr = bd;
4e62a: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
*/
*media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
}
else
{
sc = RTEMS_INVALID_ID;
4e62e: 7404 moveq #4,%d2 <== NOT EXECUTED
rtems_bdbuf_get (rtems_disk_device *dd,
rtems_blkdev_bnum block,
rtems_bdbuf_buffer **bd_ptr)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_bdbuf_buffer *bd = NULL;
4e630: 95ca subal %a2,%a2 <== NOT EXECUTED
rtems_bdbuf_unlock_cache ();
*bd_ptr = bd;
return sc;
}
4e632: 2002 movel %d2,%d0 <== NOT EXECUTED
}
}
rtems_bdbuf_unlock_cache ();
*bd_ptr = bd;
4e634: 208a movel %a2,%a0@ <== NOT EXECUTED
return sc;
}
4e636: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
4e63c: 4e5e unlk %fp <== NOT EXECUTED
4e63e: 4e75 rts <== NOT EXECUTED
}
static rtems_blkdev_bnum
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{
if (dd->block_to_media_block_shift >= 0)
4e640: 202a 0030 movel %a2@(48),%d0
4e644: 6d00 0094 bltw 4e6da <rtems_bdbuf_get+0xce>
return block << dd->block_to_media_block_shift;
4e648: 2206 movel %d6,%d1
4e64a: e1a9 lsll %d0,%d1
*/
if (rtems_bdbuf_tracer)
printf ("bdbuf:get: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n",
media_block, block, (unsigned) dd->dev);
bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);
4e64c: d2aa 0018 addl %a2@(24),%d1
4e650: 2f01 movel %d1,%sp@-
4e652: 2f0a movel %a2,%sp@-
4e654: 4eba f0b2 jsr %pc@(4d708 <rtems_bdbuf_get_buffer_for_access>)
switch (bd->state)
4e658: 508f addql #8,%sp
4e65a: 7202 moveq #2,%d1
*/
if (rtems_bdbuf_tracer)
printf ("bdbuf:get: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n",
media_block, block, (unsigned) dd->dev);
bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);
4e65c: 2440 moveal %d0,%a2
switch (bd->state)
4e65e: 202a 001e movel %a2@(30),%d0
4e662: b280 cmpl %d0,%d1
4e664: 6756 beqs 4e6bc <rtems_bdbuf_get+0xb0>
4e666: 123c 0007 moveb #7,%d1
4e66a: b280 cmpl %d0,%d1
4e66c: 6712 beqs 4e680 <rtems_bdbuf_get+0x74>
4e66e: 123c 0001 moveb #1,%d1
4e672: b280 cmpl %d0,%d1
4e674: 6728 beqs 4e69e <rtems_bdbuf_get+0x92> <== ALWAYS TAKEN
* record of this so just gets the block to fill.
*/
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
break;
default:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_2);
4e676: 4878 000f pea f <FPTRAP> <== NOT EXECUTED
4e67a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4e67c: 4eba e548 jsr %pc@(4cbc6 <rtems_bdbuf_fatal_with_state>)<== NOT EXECUTED
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4e680: 7004 moveq #4,%d0
4e682: 4282 clrl %d2
4e684: 2540 001e movel %d0,%a2@(30)
rtems_bdbuf_show_users ("get", bd);
rtems_bdbuf_show_usage ();
}
}
rtems_bdbuf_unlock_cache ();
4e688: 4eba e572 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
*bd_ptr = bd;
4e68c: 206e 0010 moveal %fp@(16),%a0
return sc;
}
4e690: 2002 movel %d2,%d0
}
}
rtems_bdbuf_unlock_cache ();
*bd_ptr = bd;
4e692: 208a movel %a2,%a0@
return sc;
}
4e694: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
4e69a: 4e5e unlk %fp
4e69c: 4e75 rts
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4e69e: 7205 moveq #5,%d1
4e6a0: 4282 clrl %d2
4e6a2: 2541 001e movel %d1,%a2@(30)
rtems_bdbuf_show_users ("get", bd);
rtems_bdbuf_show_usage ();
}
}
rtems_bdbuf_unlock_cache ();
4e6a6: 4eba e554 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
*bd_ptr = bd;
4e6aa: 206e 0010 moveal %fp@(16),%a0
return sc;
}
4e6ae: 2002 movel %d2,%d0
}
}
rtems_bdbuf_unlock_cache ();
*bd_ptr = bd;
4e6b0: 208a movel %a2,%a0@
return sc;
}
4e6b2: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
4e6b8: 4e5e unlk %fp
4e6ba: 4e75 rts
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4e6bc: 7003 moveq #3,%d0
4e6be: 4282 clrl %d2
4e6c0: 2540 001e movel %d0,%a2@(30)
rtems_bdbuf_show_users ("get", bd);
rtems_bdbuf_show_usage ();
}
}
rtems_bdbuf_unlock_cache ();
4e6c4: 4eba e536 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
*bd_ptr = bd;
4e6c8: 206e 0010 moveal %fp@(16),%a0
return sc;
}
4e6cc: 2002 movel %d2,%d0
}
}
rtems_bdbuf_unlock_cache ();
*bd_ptr = bd;
4e6ce: 208a movel %a2,%a0@
return sc;
}
4e6d0: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
4e6d6: 4e5e unlk %fp
4e6d8: 4e75 rts
/*
* Change the block number for the block size to the block number for the media
* block size. We have to use 64bit maths. There is no short cut here.
*/
return (rtems_blkdev_bnum)
((((uint64_t) block) * dd->block_size) / dd->media_block_size);
4e6da: 2a2a 0024 movel %a2@(36),%d5 <== NOT EXECUTED
4e6de: 4284 clrl %d4 <== NOT EXECUTED
4e6e0: 4282 clrl %d2 <== NOT EXECUTED
4e6e2: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4e6e4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4e6e6: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4e6e8: 42a7 clrl %sp@- <== NOT EXECUTED
4e6ea: 4eb9 0005 efa4 jsr 5efa4 <__muldi3> <== NOT EXECUTED
4e6f0: 262a 0020 movel %a2@(32),%d3 <== NOT EXECUTED
4e6f4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e6f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e6fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e6fc: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4e6fe: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4e700: 4eb9 0005 f858 jsr 5f858 <__udivdi3> <== NOT EXECUTED
4e706: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e70a: 6000 ff40 braw 4e64c <rtems_bdbuf_get+0x40> <== NOT EXECUTED
0004d708 <rtems_bdbuf_get_buffer_for_access>:
static rtems_bdbuf_buffer *
rtems_bdbuf_get_buffer_for_access (rtems_disk_device *dd,
rtems_blkdev_bnum block)
{
4d708: 4e56 ffd8 linkw %fp,#-40
4d70c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4d710: 266e 0008 moveal %fp@(8),%a3
4d714: 49fa f69a lea %pc@(4cdb0 <rtems_bdbuf_avl_search.isra.1>),%a4
rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);
break;
case RTEMS_BDBUF_STATE_SYNC:
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
4d718: 4bfa f5dc lea %pc@(4ccf6 <rtems_bdbuf_wait>),%a5
rtems_bdbuf_request_sync_for_modified_buffer (rtems_bdbuf_buffer *bd)
{
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);
rtems_chain_extract_unprotected (&bd->link);
rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);
rtems_bdbuf_wake_swapper ();
4d71c: 2a3c 0004 cc14 movel #314388,%d5
{
if (bd->group->bds_per_group != dd->bds_per_group)
{
if (rtems_bdbuf_wait_for_recycle (bd))
{
rtems_bdbuf_remove_from_tree_and_lru_list (bd);
4d722: 283c 0004 d300 movel #316160,%d4
rtems_bdbuf_make_free_and_add_to_lru_list (bd);
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4d728: 263c 0004 cdf2 movel #314866,%d3
}
static rtems_bdbuf_buffer *
rtems_bdbuf_get_buffer_for_access (rtems_disk_device *dd,
rtems_blkdev_bnum block)
{
4d72e: 242e 000c movel %fp@(12),%d2
* It is essential that we wait here without a special wait count and
* without the group in use. Otherwise we could trigger a wait ping
* pong with another recycle waiter. The state of the buffer is
* arbitrary afterwards.
*/
rtems_bdbuf_anonymous_wait (&bdbuf_cache.buffer_waiters);
4d732: 2e3c 0004 cc96 movel #314518,%d7
bd = NULL;
}
}
else
{
bd = rtems_bdbuf_get_buffer_from_lru_list (dd, block);
4d738: 2c3c 0004 d33c movel #316220,%d6
{
rtems_bdbuf_buffer *bd = NULL;
do
{
bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);
4d73e: 2f02 movel %d2,%sp@-
4d740: 2f0b movel %a3,%sp@-
4d742: 2f39 0006 378c movel 6378c <bdbuf_cache+0x38>,%sp@-
4d748: 4e94 jsr %a4@
4d74a: 4fef 000c lea %sp@(12),%sp
4d74e: 2440 moveal %d0,%a2
if (bd != NULL)
4d750: 4a80 tstl %d0
4d752: 6700 0098 beqw 4d7ec <rtems_bdbuf_get_buffer_for_access+0xe4>
{
if (bd->group->bds_per_group != dd->bds_per_group)
4d756: 206a 0026 moveal %a2@(38),%a0
4d75a: 202b 0034 movel %a3@(52),%d0
4d75e: b0a8 0008 cmpl %a0@(8),%d0
4d762: 6700 009a beqw 4d7fe <rtems_bdbuf_get_buffer_for_access+0xf6>
static bool
rtems_bdbuf_wait_for_recycle (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4d766: 202a 001e movel %a2@(30),%d0
4d76a: 720a moveq #10,%d1
4d76c: b280 cmpl %d0,%d1
4d76e: 640a bccs 4d77a <rtems_bdbuf_get_buffer_for_access+0x72><== ALWAYS TAKEN
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
break;
default:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_8);
4d770: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
4d774: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d776: 4eba f44e jsr %pc@(4cbc6 <rtems_bdbuf_fatal_with_state>)<== NOT EXECUTED
static bool
rtems_bdbuf_wait_for_recycle (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4d77a: 303b 0a08 movew %pc@(4d784 <rtems_bdbuf_get_buffer_for_access+0x7c>,%d0:l:2),%d0
4d77e: 48c0 extl %d0
4d780: 4efb 0802 jmp %pc@(4d784 <rtems_bdbuf_get_buffer_for_access+0x7c>,%d0:l)
4d784: 001e .short 0x001e <== NOT EXECUTED
4d786: 0016 .short 0x0016 <== NOT EXECUTED
4d788: 0016 .short 0x0016 <== NOT EXECUTED
4d78a: 00d6 .short 0x00d6 <== NOT EXECUTED
4d78c: 00d6 .short 0x00d6 <== NOT EXECUTED
4d78e: 00d6 .short 0x00d6 <== NOT EXECUTED
4d790: 00d6 .short 0x00d6 <== NOT EXECUTED
4d792: 00a2 0092 0092 oril #9568402,%d2 <== NOT EXECUTED
4d798: 0092 4aaa 0022 oril #1252655138,%d2 <== NOT EXECUTED
case RTEMS_BDBUF_STATE_MODIFIED:
rtems_bdbuf_request_sync_for_modified_buffer (bd);
break;
case RTEMS_BDBUF_STATE_CACHED:
case RTEMS_BDBUF_STATE_EMPTY:
if (bd->waiters == 0)
4d79e: 6600 00fc bnew 4d89c <rtems_bdbuf_get_buffer_for_access+0x194>
{
if (bd->group->bds_per_group != dd->bds_per_group)
{
if (rtems_bdbuf_wait_for_recycle (bd))
{
rtems_bdbuf_remove_from_tree_and_lru_list (bd);
4d7a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d7a4: 2044 moveal %d4,%a0 <== NOT EXECUTED
4d7a6: 4e90 jsr %a0@ <== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4d7a8: 2079 0006 3790 moveal 63790 <bdbuf_cache+0x3c>,%a0 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4d7ae: 203c 0006 3790 movel #407440,%d0 <== NOT EXECUTED
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4d7b4: 42aa 001e clrl %a2@(30) <== NOT EXECUTED
4d7b8: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
before_node = after_node->next;
after_node->next = the_node;
4d7bc: 23ca 0006 3790 movel %a2,63790 <bdbuf_cache+0x3c> <== NOT EXECUTED
the_node->next = before_node;
before_node->previous = the_node;
4d7c2: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
4d7c6: 2488 movel %a0,%a2@ <== NOT EXECUTED
{
if (rtems_bdbuf_wait_for_recycle (bd))
{
rtems_bdbuf_remove_from_tree_and_lru_list (bd);
rtems_bdbuf_make_free_and_add_to_lru_list (bd);
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4d7c8: 4879 0006 37c4 pea 637c4 <bdbuf_cache+0x70> <== NOT EXECUTED
4d7ce: 2043 moveal %d3,%a0 <== NOT EXECUTED
4d7d0: 4e90 jsr %a0@ <== NOT EXECUTED
4d7d2: 508f addql #8,%sp <== NOT EXECUTED
{
rtems_bdbuf_buffer *bd = NULL;
do
{
bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);
4d7d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d7d6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d7d8: 2f39 0006 378c movel 6378c <bdbuf_cache+0x38>,%sp@- <== NOT EXECUTED
4d7de: 4e94 jsr %a4@ <== NOT EXECUTED
4d7e0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d7e4: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (bd != NULL)
4d7e6: 4a80 tstl %d0 <== NOT EXECUTED
4d7e8: 6600 ff6c bnew 4d756 <rtems_bdbuf_get_buffer_for_access+0x4e><== NOT EXECUTED
bd = NULL;
}
}
else
{
bd = rtems_bdbuf_get_buffer_from_lru_list (dd, block);
4d7ec: 2f02 movel %d2,%sp@-
4d7ee: 2046 moveal %d6,%a0
4d7f0: 2f0b movel %a3,%sp@-
4d7f2: 4e90 jsr %a0@
if (bd == NULL)
4d7f4: 508f addql #8,%sp
bd = NULL;
}
}
else
{
bd = rtems_bdbuf_get_buffer_from_lru_list (dd, block);
4d7f6: 2440 moveal %d0,%a2
if (bd == NULL)
4d7f8: 4a80 tstl %d0
4d7fa: 6700 008e beqw 4d88a <rtems_bdbuf_get_buffer_for_access+0x182>
static void
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4d7fe: 202a 001e movel %a2@(30),%d0
rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);
break;
case RTEMS_BDBUF_STATE_SYNC:
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
4d802: 47fa f4f2 lea %pc@(4ccf6 <rtems_bdbuf_wait>),%a3
static void
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4d806: 720a moveq #10,%d1
4d808: b280 cmpl %d0,%d1
4d80a: 645e bccs 4d86a <rtems_bdbuf_get_buffer_for_access+0x162><== ALWAYS TAKEN
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
break;
default:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_7);
4d80c: 4878 0013 pea 13 <INVALID_OPERATION+0x3> <== NOT EXECUTED
4d810: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d812: 4eba f3b2 jsr %pc@(4cbc6 <rtems_bdbuf_fatal_with_state>)<== NOT EXECUTED
rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);
break;
case RTEMS_BDBUF_STATE_SYNC:
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
4d816: 4879 0006 37bc pea 637bc <bdbuf_cache+0x68> <== NOT EXECUTED
4d81c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d81e: 4e95 jsr %a5@ <== NOT EXECUTED
4d820: 508f addql #8,%sp <== NOT EXECUTED
4d822: 6000 ff42 braw 4d766 <rtems_bdbuf_get_buffer_for_access+0x5e><== NOT EXECUTED
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4d826: 7008 moveq #8,%d0 <== NOT EXECUTED
4d828: 2540 001e movel %d0,%a2@(30) <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4d82c: 2012 movel %a2@,%d0 <== NOT EXECUTED
previous = the_node->previous;
next->previous = previous;
4d82e: 2040 moveal %d0,%a0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
4d830: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED
next->previous = previous;
4d834: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4d838: 2079 0006 37b0 moveal 637b0 <bdbuf_cache+0x5c>,%a0 <== NOT EXECUTED
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
previous->next = next;
4d83e: 2280 movel %d0,%a1@ <== NOT EXECUTED
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
4d840: 23ca 0006 37b0 movel %a2,637b0 <bdbuf_cache+0x5c> <== NOT EXECUTED
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
4d846: 24bc 0006 37ac movel #407468,%a2@ <== NOT EXECUTED
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
4d84c: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
4d850: 208a movel %a2,%a0@ <== NOT EXECUTED
rtems_bdbuf_request_sync_for_modified_buffer (rtems_bdbuf_buffer *bd)
{
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);
rtems_chain_extract_unprotected (&bd->link);
rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);
rtems_bdbuf_wake_swapper ();
4d852: 2045 moveal %d5,%a0 <== NOT EXECUTED
4d854: 4e90 jsr %a0@ <== NOT EXECUTED
4d856: 6000 ff0e braw 4d766 <rtems_bdbuf_get_buffer_for_access+0x5e><== NOT EXECUTED
}
case RTEMS_BDBUF_STATE_ACCESS_CACHED:
case RTEMS_BDBUF_STATE_ACCESS_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);
4d85a: 4879 0006 37b4 pea 637b4 <bdbuf_cache+0x60>
4d860: 2f0a movel %a2,%sp@-
4d862: 4e95 jsr %a5@
4d864: 508f addql #8,%sp
4d866: 6000 fefe braw 4d766 <rtems_bdbuf_get_buffer_for_access+0x5e>
static void
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4d86a: 323b 0a08 movew %pc@(4d874 <rtems_bdbuf_get_buffer_for_access+0x16c>,%d0:l:2),%d1
4d86e: 48c1 extl %d1
4d870: 4efb 1802 jmp %pc@(4d874 <rtems_bdbuf_get_buffer_for_access+0x16c>,%d1:l)
4d874: ff98 004c cp1stl %d0,%a0@+,#1,#76 <== NOT EXECUTED
4d878: 0040 .short 0x0040 <== NOT EXECUTED
4d87a: 007c .short 0x007c <== NOT EXECUTED
4d87c: 007c .short 0x007c <== NOT EXECUTED
4d87e: 007c .short 0x007c <== NOT EXECUTED
4d880: 007c .short 0x007c <== NOT EXECUTED
4d882: 0038 .short 0x0038 <== NOT EXECUTED
4d884: 0060 .short 0x0060 <== NOT EXECUTED
4d886: 0060 .short 0x0060 <== NOT EXECUTED
4d888: 0060 .short 0x0060 <== NOT EXECUTED
}
static void
rtems_bdbuf_wait_for_buffer (void)
{
if (!rtems_chain_is_empty (&bdbuf_cache.modified))
4d88a: 203c 0006 37a0 movel #407456,%d0
4d890: b0b9 0006 379c cmpl 6379c <bdbuf_cache+0x48>,%d0
4d896: 6704 beqs 4d89c <rtems_bdbuf_get_buffer_for_access+0x194>
rtems_bdbuf_wake_swapper ();
4d898: 2045 moveal %d5,%a0
4d89a: 4e90 jsr %a0@
* It is essential that we wait here without a special wait count and
* without the group in use. Otherwise we could trigger a wait ping
* pong with another recycle waiter. The state of the buffer is
* arbitrary afterwards.
*/
rtems_bdbuf_anonymous_wait (&bdbuf_cache.buffer_waiters);
4d89c: 4879 0006 37c4 pea 637c4 <bdbuf_cache+0x70>
4d8a2: 2047 moveal %d7,%a0
4d8a4: 4e90 jsr %a0@
4d8a6: 588f addql #4,%sp
4d8a8: 6000 fe94 braw 4d73e <rtems_bdbuf_get_buffer_for_access+0x36>
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4d8ac: 206a 0026 moveal %a2@(38),%a0
}
static void
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)
{
--bd->group->users;
4d8b0: 53a8 000c subql #1,%a0@(12)
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4d8b4: 2252 moveal %a2@,%a1
previous = the_node->previous;
4d8b6: 206a 0004 moveal %a2@(4),%a0
next->previous = previous;
4d8ba: 2348 0004 movel %a0,%a1@(4)
previous->next = next;
4d8be: 2089 movel %a1,%a0@
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4d8c0: 206a 0026 moveal %a2@(38),%a0
rtems_bdbuf_wait_for_access (bd);
rtems_bdbuf_group_obtain (bd);
return bd;
}
4d8c4: 200a movel %a2,%d0
}
static void
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)
{
++bd->group->users;
4d8c6: 52a8 000c addql #1,%a0@(12)
rtems_bdbuf_wait_for_access (bd);
rtems_bdbuf_group_obtain (bd);
return bd;
}
4d8ca: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5
4d8d0: 4e5e unlk %fp
4d8d2: 4e75 rts
rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);
break;
case RTEMS_BDBUF_STATE_SYNC:
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
4d8d4: 4879 0006 37bc pea 637bc <bdbuf_cache+0x68>
4d8da: 2f0a movel %a2,%sp@-
4d8dc: 4e93 jsr %a3@
static void
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4d8de: 202a 001e movel %a2@(30),%d0
rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);
break;
case RTEMS_BDBUF_STATE_SYNC:
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
4d8e2: 508f addql #8,%sp
static void
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4d8e4: 720a moveq #10,%d1
4d8e6: b280 cmpl %d0,%d1
4d8e8: 6500 ff22 bcsw 4d80c <rtems_bdbuf_get_buffer_for_access+0x104>
4d8ec: 6000 ff7c braw 4d86a <rtems_bdbuf_get_buffer_for_access+0x162>
return;
case RTEMS_BDBUF_STATE_ACCESS_CACHED:
case RTEMS_BDBUF_STATE_ACCESS_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);
4d8f0: 4879 0006 37b4 pea 637b4 <bdbuf_cache+0x60>
4d8f6: 2f0a movel %a2,%sp@-
4d8f8: 4e93 jsr %a3@
static void
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4d8fa: 202a 001e movel %a2@(30),%d0
return;
case RTEMS_BDBUF_STATE_ACCESS_CACHED:
case RTEMS_BDBUF_STATE_ACCESS_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);
4d8fe: 508f addql #8,%sp
static void
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4d900: 720a moveq #10,%d1
4d902: b280 cmpl %d0,%d1
4d904: 6500 ff06 bcsw 4d80c <rtems_bdbuf_get_buffer_for_access+0x104>
4d908: 6000 ff60 braw 4d86a <rtems_bdbuf_get_buffer_for_access+0x162>
0004d6b0 <rtems_bdbuf_get_buffer_for_read_ahead>:
}
static rtems_bdbuf_buffer *
rtems_bdbuf_get_buffer_for_read_ahead (rtems_disk_device *dd,
rtems_blkdev_bnum block)
{
4d6b0: 4e56 0000 linkw %fp,#0
4d6b4: 2f03 movel %d3,%sp@-
4d6b6: 262e 000c movel %fp@(12),%d3
4d6ba: 2f02 movel %d2,%sp@-
4d6bc: 242e 0008 movel %fp@(8),%d2
rtems_bdbuf_buffer *bd = NULL;
bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);
4d6c0: 2f03 movel %d3,%sp@-
4d6c2: 2f02 movel %d2,%sp@-
4d6c4: 2f39 0006 378c movel 6378c <bdbuf_cache+0x38>,%sp@-
4d6ca: 4eba f6e4 jsr %pc@(4cdb0 <rtems_bdbuf_avl_search.isra.1>)
4d6ce: 4fef 000c lea %sp@(12),%sp
if (bd == NULL)
4d6d2: 4a80 tstl %d0
4d6d4: 670e beqs 4d6e4 <rtems_bdbuf_get_buffer_for_read_ahead+0x34><== ALWAYS TAKEN
else
/*
* The buffer is in the cache. So it is already available or in use, and
* thus no need for a read ahead.
*/
bd = NULL;
4d6d6: 4280 clrl %d0 <== NOT EXECUTED
return bd;
}
4d6d8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4d6dc: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4d6e0: 4e5e unlk %fp <== NOT EXECUTED
4d6e2: 4e75 rts <== NOT EXECUTED
bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);
if (bd == NULL)
{
bd = rtems_bdbuf_get_buffer_from_lru_list (dd, block);
4d6e4: 2f03 movel %d3,%sp@-
4d6e6: 2f02 movel %d2,%sp@-
4d6e8: 4eba fc52 jsr %pc@(4d33c <rtems_bdbuf_get_buffer_from_lru_list>)
if (bd != NULL)
4d6ec: 508f addql #8,%sp
4d6ee: 4a80 tstl %d0
4d6f0: 67e6 beqs 4d6d8 <rtems_bdbuf_get_buffer_for_read_ahead+0x28><== NEVER TAKEN
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4d6f2: 2240 moveal %d0,%a1
* thus no need for a read ahead.
*/
bd = NULL;
return bd;
}
4d6f4: 242e fff8 movel %fp@(-8),%d2
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4d6f8: 2069 0026 moveal %a1@(38),%a0
}
static void
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)
{
++bd->group->users;
4d6fc: 52a8 000c addql #1,%a0@(12)
* thus no need for a read ahead.
*/
bd = NULL;
return bd;
}
4d700: 262e fffc movel %fp@(-4),%d3
4d704: 4e5e unlk %fp <== NOT EXECUTED
0004d33c <rtems_bdbuf_get_buffer_from_lru_list>:
}
static rtems_bdbuf_buffer *
rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd,
rtems_blkdev_bnum block)
{
4d33c: 4e56 ff58 linkw %fp,#-168
4d340: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4d344: 286e 0008 moveal %fp@(8),%a4
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
4d348: 2479 0006 3790 moveal 63790 <bdbuf_cache+0x3c>,%a2
rtems_chain_node *node = rtems_chain_first (&bdbuf_cache.lru);
while (!rtems_chain_is_tail (&bdbuf_cache.lru, node))
4d34e: b5fc 0006 3794 cmpal #407444,%a2
4d354: 6732 beqs 4d388 <rtems_bdbuf_get_buffer_from_lru_list+0x4c>
4d356: 4bfa ffa8 lea %pc@(4d300 <rtems_bdbuf_remove_from_tree_and_lru_list>),%a5
b < group->bds_per_group;
b++, bd += bufs_per_bd)
rtems_bdbuf_make_free_and_add_to_lru_list (bd);
if (b > 1)
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4d35a: 2a3c 0004 cdf2 movel #314866,%d5
bd->group->bds_per_group, dd->bds_per_group);
/*
* If nobody waits for this BD, we may recycle it.
*/
if (bd->waiters == 0)
4d360: 4aaa 0022 tstl %a2@(34)
4d364: 6618 bnes 4d37e <rtems_bdbuf_get_buffer_from_lru_list+0x42>
{
if (bd->group->bds_per_group == dd->bds_per_group)
4d366: 266a 0026 moveal %a2@(38),%a3
4d36a: 262c 0034 movel %a4@(52),%d3
4d36e: 202b 0008 movel %a3@(8),%d0
4d372: b680 cmpl %d0,%d3
4d374: 6700 010e beqw 4d484 <rtems_bdbuf_get_buffer_from_lru_list+0x148>
{
rtems_bdbuf_remove_from_tree_and_lru_list (bd);
empty_bd = bd;
}
else if (bd->group->users == 0)
4d378: 4aab 000c tstl %a3@(12)
4d37c: 6718 beqs 4d396 <rtems_bdbuf_get_buffer_from_lru_list+0x5a>
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4d37e: 2452 moveal %a2@,%a2
rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd,
rtems_blkdev_bnum block)
{
rtems_chain_node *node = rtems_chain_first (&bdbuf_cache.lru);
while (!rtems_chain_is_tail (&bdbuf_cache.lru, node))
4d380: b5fc 0006 3794 cmpal #407444,%a2
4d386: 66d8 bnes 4d360 <rtems_bdbuf_get_buffer_from_lru_list+0x24>
}
node = rtems_chain_next (node);
}
return NULL;
4d388: 95ca subal %a2,%a2
}
4d38a: 200a movel %a2,%d0
4d38c: 4cee 3cfc ff58 moveml %fp@(-168),%d2-%d7/%a2-%a5
4d392: 4e5e unlk %fp
4d394: 4e75 rts
if (rtems_bdbuf_tracer)
printf ("bdbuf:realloc: %tu: %zd -> %zd\n",
group - bdbuf_cache.groups, group->bds_per_group,
new_bds_per_group);
bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group;
4d396: 2e39 0006 3772 movel 63772 <bdbuf_cache+0x1e>,%d7
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4d39c: 2c0b movel %a3,%d6
4d39e: 5086 addql #8,%d6
group - bdbuf_cache.groups, group->bds_per_group,
new_bds_per_group);
bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group;
for (b = 0, bd = group->bdbuf;
4d3a0: 242b 0010 movel %a3@(16),%d2
if (rtems_bdbuf_tracer)
printf ("bdbuf:realloc: %tu: %zd -> %zd\n",
group - bdbuf_cache.groups, group->bds_per_group,
new_bds_per_group);
bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group;
4d3a4: 4c40 7007 remul %d0,%d7,%d7
for (b = 0, bd = group->bdbuf;
4d3a8: 4a80 tstl %d0
4d3aa: 671c beqs 4d3c8 <rtems_bdbuf_get_buffer_from_lru_list+0x8c><== NEVER TAKEN
4d3ac: 7036 moveq #54,%d0
4d3ae: 4c00 7800 mulsl %d0,%d7
4d3b2: 4284 clrl %d4
b < group->bds_per_group;
b++, bd += bufs_per_bd)
rtems_bdbuf_remove_from_tree_and_lru_list (bd);
4d3b4: 2f02 movel %d2,%sp@-
bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group;
for (b = 0, bd = group->bdbuf;
b < group->bds_per_group;
b++, bd += bufs_per_bd)
4d3b6: 5284 addql #1,%d4
4d3b8: d487 addl %d7,%d2
rtems_bdbuf_remove_from_tree_and_lru_list (bd);
4d3ba: 4e95 jsr %a5@
group - bdbuf_cache.groups, group->bds_per_group,
new_bds_per_group);
bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group;
for (b = 0, bd = group->bdbuf;
4d3bc: 588f addql #4,%sp
4d3be: 2046 moveal %d6,%a0
4d3c0: b890 cmpl %a0@,%d4
4d3c2: 65f0 bcss 4d3b4 <rtems_bdbuf_get_buffer_from_lru_list+0x78>
4d3c4: 242b 0010 movel %a3@(16),%d2
b < group->bds_per_group;
b++, bd += bufs_per_bd)
rtems_bdbuf_remove_from_tree_and_lru_list (bd);
group->bds_per_group = new_bds_per_group;
4d3c8: 2743 0008 movel %d3,%a3@(8)
bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;
4d3cc: 2239 0006 3772 movel 63772 <bdbuf_cache+0x1e>,%d1
for (b = 1, bd = group->bdbuf + bufs_per_bd;
4d3d2: 2042 moveal %d2,%a0
b < group->bds_per_group;
b++, bd += bufs_per_bd)
rtems_bdbuf_remove_from_tree_and_lru_list (bd);
group->bds_per_group = new_bds_per_group;
bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;
4d3d4: 4c43 1001 remul %d3,%d1,%d1
for (b = 1, bd = group->bdbuf + bufs_per_bd;
4d3d8: 7036 moveq #54,%d0
4d3da: 4c00 1800 mulsl %d0,%d1
4d3de: 103c 0001 moveb #1,%d0
4d3e2: d1c1 addal %d1,%a0
4d3e4: b083 cmpl %d3,%d0
4d3e6: 6438 bccs 4d420 <rtems_bdbuf_get_buffer_from_lru_list+0xe4>
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4d3e8: 43f9 0006 3790 lea 63790 <bdbuf_cache+0x3c>,%a1
b < group->bds_per_group;
b++, bd += bufs_per_bd)
4d3ee: 5280 addql #1,%d0
4d3f0: 2149 0004 movel %a1,%a0@(4)
before_node = after_node->next;
4d3f4: 2279 0006 3790 moveal 63790 <bdbuf_cache+0x3c>,%a1
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4d3fa: 42a8 001e clrl %a0@(30)
after_node->next = the_node;
4d3fe: 23c8 0006 3790 movel %a0,63790 <bdbuf_cache+0x3c>
the_node->next = before_node;
4d404: 2089 movel %a1,%a0@
before_node->previous = the_node;
4d406: 2348 0004 movel %a0,%a1@(4)
group->bds_per_group = new_bds_per_group;
bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;
for (b = 1, bd = group->bdbuf + bufs_per_bd;
b < group->bds_per_group;
b++, bd += bufs_per_bd)
4d40a: d1c1 addal %d1,%a0
rtems_bdbuf_remove_from_tree_and_lru_list (bd);
group->bds_per_group = new_bds_per_group;
bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;
for (b = 1, bd = group->bdbuf + bufs_per_bd;
4d40c: b680 cmpl %d0,%d3
4d40e: 66d8 bnes 4d3e8 <rtems_bdbuf_get_buffer_from_lru_list+0xac>
b < group->bds_per_group;
b++, bd += bufs_per_bd)
rtems_bdbuf_make_free_and_add_to_lru_list (bd);
if (b > 1)
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4d410: 4879 0006 37c4 pea 637c4 <bdbuf_cache+0x70>
4d416: 2045 moveal %d5,%a0
4d418: 4e90 jsr %a0@
4d41a: 242b 0010 movel %a3@(16),%d2
4d41e: 588f addql #4,%sp
}
else if (bd->group->users == 0)
empty_bd = rtems_bdbuf_group_realloc (bd->group, dd->bds_per_group);
}
if (empty_bd != NULL)
4d420: 4a82 tstl %d2
4d422: 6700 ff5a beqw 4d37e <rtems_bdbuf_get_buffer_from_lru_list+0x42>
rtems_bdbuf_make_free_and_add_to_lru_list (bd);
if (b > 1)
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
return group->bdbuf;
4d426: 2442 moveal %d2,%a2
static void
rtems_bdbuf_setup_empty_buffer (rtems_bdbuf_buffer *bd,
rtems_disk_device *dd,
rtems_blkdev_bnum block)
{
bd->dd = dd ;
4d428: 254c 0012 movel %a4,%a2@(18)
bd->block = block;
4d42c: 226e 000c moveal %fp@(12),%a1
bd->avl.left = NULL;
4d430: 42aa 0008 clrl %a2@(8)
bd->avl.right = NULL;
4d434: 42aa 000c clrl %a2@(12)
rtems_bdbuf_buffer* node)
{
const rtems_disk_device *dd = node->dd;
rtems_blkdev_bnum block = node->block;
rtems_bdbuf_buffer* p = *root;
4d438: 2079 0006 378c moveal 6378c <bdbuf_cache+0x38>,%a0
rtems_bdbuf_setup_empty_buffer (rtems_bdbuf_buffer *bd,
rtems_disk_device *dd,
rtems_blkdev_bnum block)
{
bd->dd = dd ;
bd->block = block;
4d43e: 2549 0016 movel %a1,%a2@(22)
bd->avl.left = NULL;
bd->avl.right = NULL;
bd->waiters = 0;
4d442: 42aa 0022 clrl %a2@(34)
rtems_bdbuf_buffer* buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];
rtems_bdbuf_buffer** buf_prev = buf_stack;
bool modified = false;
if (p == NULL)
4d446: 4a88 tstl %a0
4d448: 6700 0248 beqw 4d692 <rtems_bdbuf_get_buffer_from_lru_list+0x356>
rtems_bdbuf_buffer* p = *root;
rtems_bdbuf_buffer* q;
rtems_bdbuf_buffer* p1;
rtems_bdbuf_buffer* p2;
rtems_bdbuf_buffer* buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];
rtems_bdbuf_buffer** buf_prev = buf_stack;
4d44c: 240e movel %fp,%d2
4d44e: 0682 ffff ff80 addil #-128,%d2
4d454: 2202 movel %d2,%d1
return 0;
}
while (p != NULL)
{
*buf_prev++ = p;
4d456: 2241 moveal %d1,%a1
if (((uintptr_t) p->dd < (uintptr_t) dd)
4d458: 2028 0012 movel %a0@(18),%d0
return 0;
}
while (p != NULL)
{
*buf_prev++ = p;
4d45c: 22c8 movel %a0,%a1@+
if (((uintptr_t) p->dd < (uintptr_t) dd)
4d45e: b9c0 cmpal %d0,%a4
4d460: 632c blss 4d48e <rtems_bdbuf_get_buffer_from_lru_list+0x152><== ALWAYS TAKEN
|| ((p->dd == dd) && (p->block < block)))
{
p->avl.cache = 1;
q = p->avl.right;
4d462: 2028 000c movel %a0@(12),%d0
*buf_prev++ = p;
if (((uintptr_t) p->dd < (uintptr_t) dd)
|| ((p->dd == dd) && (p->block < block)))
{
p->avl.cache = 1;
4d466: 7601 moveq #1,%d3
4d468: 1143 0010 moveb %d3,%a0@(16)
q = p->avl.right;
if (q == NULL)
4d46c: 4a80 tstl %d0
4d46e: 6700 00a6 beqw 4d516 <rtems_bdbuf_get_buffer_from_lru_list+0x1da>
rtems_bdbuf_buffer* buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];
rtems_bdbuf_buffer** buf_prev = buf_stack;
bool modified = false;
if (p == NULL)
4d472: 2040 moveal %d0,%a0
4d474: 2209 movel %a1,%d1
return 0;
}
while (p != NULL)
{
*buf_prev++ = p;
4d476: 2241 moveal %d1,%a1
if (((uintptr_t) p->dd < (uintptr_t) dd)
4d478: 2028 0012 movel %a0@(18),%d0
return 0;
}
while (p != NULL)
{
*buf_prev++ = p;
4d47c: 22c8 movel %a0,%a1@+
if (((uintptr_t) p->dd < (uintptr_t) dd)
4d47e: b9c0 cmpal %d0,%a4
4d480: 62e0 bhis 4d462 <rtems_bdbuf_get_buffer_from_lru_list+0x126><== NEVER TAKEN
4d482: 600a bras 4d48e <rtems_bdbuf_get_buffer_from_lru_list+0x152>
*/
if (bd->waiters == 0)
{
if (bd->group->bds_per_group == dd->bds_per_group)
{
rtems_bdbuf_remove_from_tree_and_lru_list (bd);
4d484: 2f0a movel %a2,%sp@-
4d486: 4eba fe78 jsr %pc@(4d300 <rtems_bdbuf_remove_from_tree_and_lru_list>)
4d48a: 588f addql #4,%sp
4d48c: 609a bras 4d428 <rtems_bdbuf_get_buffer_from_lru_list+0xec>
while (p != NULL)
{
*buf_prev++ = p;
if (((uintptr_t) p->dd < (uintptr_t) dd)
|| ((p->dd == dd) && (p->block < block)))
4d48e: b08c cmpl %a4,%d0
4d490: 676e beqs 4d500 <rtems_bdbuf_get_buffer_from_lru_list+0x1c4><== ALWAYS TAKEN
}
}
else if ((p->dd != dd) || (p->block != block))
{
p->avl.cache = -1;
q = p->avl.left;
4d492: 2028 0008 movel %a0@(8),%d0
break;
}
}
else if ((p->dd != dd) || (p->block != block))
{
p->avl.cache = -1;
4d496: 50c3 st %d3
4d498: 1143 0010 moveb %d3,%a0@(16)
q = p->avl.left;
if (q == NULL)
4d49c: 4a80 tstl %d0
4d49e: 66d2 bnes 4d472 <rtems_bdbuf_get_buffer_from_lru_list+0x136>
4d4a0: 2241 moveal %d1,%a1
p = q;
}
q->avl.left = q->avl.right = NULL;
q->avl.bal = 0;
4d4a2: 4201 clrb %d1
p->avl.cache = -1;
q = p->avl.left;
if (q == NULL)
{
q = node;
p->avl.left = q;
4d4a4: 214a 0008 movel %a2,%a0@(8)
4d4a8: 50c0 st %d0
p = q;
}
q->avl.left = q->avl.right = NULL;
q->avl.bal = 0;
4d4aa: 1541 0011 moveb %d1,%a2@(17)
}
p = q;
}
q->avl.left = q->avl.right = NULL;
4d4ae: 42aa 000c clrl %a2@(12)
4d4b2: 49c0 extbl %d0
4d4b4: 42aa 0008 clrl %a2@(8)
modified = true;
buf_prev--;
while (modified)
{
if (p->avl.cache == -1)
4d4b8: 76ff moveq #-1,%d3
4d4ba: b680 cmpl %d0,%d3
4d4bc: 6700 0096 beqw 4d554 <rtems_bdbuf_get_buffer_from_lru_list+0x218>
break;
}
}
else
{
switch (p->avl.bal)
4d4c0: 1028 0011 moveb %a0@(17),%d0
4d4c4: 666a bnes 4d530 <rtems_bdbuf_get_buffer_from_lru_list+0x1f4>
p->avl.bal = 0;
modified = false;
break;
case 0:
p->avl.bal = 1;
4d4c6: 2648 moveal %a0,%a3
4d4c8: 7201 moveq #1,%d1
4d4ca: 1141 0011 moveb %d1,%a0@(17)
default:
break;
}
}
q = p;
if (buf_prev > buf_stack)
4d4ce: b489 cmpl %a1,%d2
4d4d0: 6474 bccs 4d546 <rtems_bdbuf_get_buffer_from_lru_list+0x20a>
{
p = *--buf_prev;
4d4d2: 2069 fffc moveal %a1@(-4),%a0
if (p->avl.cache == -1)
4d4d6: 76ff moveq #-1,%d3
4d4d8: 1028 0010 moveb %a0@(16),%d0
4d4dc: 49c0 extbl %d0
4d4de: b680 cmpl %d0,%d3
4d4e0: 6700 0088 beqw 4d56a <rtems_bdbuf_get_buffer_from_lru_list+0x22e>
{
p->avl.left = q;
}
else
{
p->avl.right = q;
4d4e4: 214b 000c movel %a3,%a0@(12)
4d4e8: 5989 subql #4,%a1
q->avl.left = q->avl.right = NULL;
q->avl.bal = 0;
modified = true;
buf_prev--;
while (modified)
4d4ea: 4a01 tstb %d1
4d4ec: 66ca bnes 4d4b8 <rtems_bdbuf_get_buffer_from_lru_list+0x17c>
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4d4ee: 7001 moveq #1,%d0
4d4f0: 2540 001e movel %d0,%a2@(30)
node = rtems_chain_next (node);
}
return NULL;
}
4d4f4: 200a movel %a2,%d0
4d4f6: 4cee 3cfc ff58 moveml %fp@(-168),%d2-%d7/%a2-%a5
4d4fc: 4e5e unlk %fp
4d4fe: 4e75 rts
while (p != NULL)
{
*buf_prev++ = p;
if (((uintptr_t) p->dd < (uintptr_t) dd)
|| ((p->dd == dd) && (p->block < block)))
4d500: 2028 0016 movel %a0@(22),%d0
4d504: b0ae 000c cmpl %fp@(12),%d0
4d508: 6500 ff58 bcsw 4d462 <rtems_bdbuf_get_buffer_from_lru_list+0x126>
q = node;
p->avl.right = q = node;
break;
}
}
else if ((p->dd != dd) || (p->block != block))
4d50c: 6684 bnes 4d492 <rtems_bdbuf_get_buffer_from_lru_list+0x156><== ALWAYS TAKEN
bd->avl.left = NULL;
bd->avl.right = NULL;
bd->waiters = 0;
if (rtems_bdbuf_avl_insert (&bdbuf_cache.tree, bd) != 0)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_RECYCLE);
4d50e: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
4d512: 4eba f664 jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
p->avl.cache = 1;
q = p->avl.right;
if (q == NULL)
{
q = node;
p->avl.right = q = node;
4d516: 214a 000c movel %a2,%a0@(12)
4d51a: 2241 moveal %d1,%a1
4d51c: 7001 moveq #1,%d0
}
p = q;
}
q->avl.left = q->avl.right = NULL;
4d51e: 42aa 000c clrl %a2@(12)
4d522: 49c0 extbl %d0
q->avl.bal = 0;
4d524: 4201 clrb %d1
}
p = q;
}
q->avl.left = q->avl.right = NULL;
4d526: 42aa 0008 clrl %a2@(8)
q->avl.bal = 0;
4d52a: 1541 0011 moveb %d1,%a2@(17)
4d52e: 6088 bras 4d4b8 <rtems_bdbuf_get_buffer_from_lru_list+0x17c>
break;
}
}
else
{
switch (p->avl.bal)
4d530: 49c0 extbl %d0
4d532: 7201 moveq #1,%d1
4d534: b280 cmpl %d0,%d1
4d536: 674e beqs 4d586 <rtems_bdbuf_get_buffer_from_lru_list+0x24a>
4d538: 76ff moveq #-1,%d3
{
case -1:
p->avl.bal = 0;
4d53a: 2648 moveal %a0,%a3
break;
}
}
else
{
switch (p->avl.bal)
4d53c: b680 cmpl %d0,%d3
4d53e: 673a beqs 4d57a <rtems_bdbuf_get_buffer_from_lru_list+0x23e><== ALWAYS TAKEN
4d540: 7201 moveq #1,%d1 <== NOT EXECUTED
default:
break;
}
}
q = p;
if (buf_prev > buf_stack)
4d542: b489 cmpl %a1,%d2 <== NOT EXECUTED
4d544: 658c bcss 4d4d2 <rtems_bdbuf_get_buffer_from_lru_list+0x196><== NOT EXECUTED
p->avl.right = q;
}
}
else
{
*root = p;
4d546: 23cb 0006 378c movel %a3,6378c <bdbuf_cache+0x38>
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4d54c: 7001 moveq #1,%d0
4d54e: 2540 001e movel %d0,%a2@(30)
4d552: 60a0 bras 4d4f4 <rtems_bdbuf_get_buffer_from_lru_list+0x1b8>
while (modified)
{
if (p->avl.cache == -1)
{
switch (p->avl.bal)
4d554: 1028 0011 moveb %a0@(17),%d0
4d558: 6600 0084 bnew 4d5de <rtems_bdbuf_get_buffer_from_lru_list+0x2a2>
p->avl.bal = 0;
modified = false;
break;
case 0:
p->avl.bal = -1;
4d55c: 2648 moveal %a0,%a3
4d55e: 50c0 st %d0
4d560: 7201 moveq #1,%d1
4d562: 1140 0011 moveb %d0,%a0@(17)
4d566: 6000 ff66 braw 4d4ce <rtems_bdbuf_get_buffer_from_lru_list+0x192>
{
p = *--buf_prev;
if (p->avl.cache == -1)
{
p->avl.left = q;
4d56a: 214b 0008 movel %a3,%a0@(8)
4d56e: 5989 subql #4,%a1
q->avl.left = q->avl.right = NULL;
q->avl.bal = 0;
modified = true;
buf_prev--;
while (modified)
4d570: 4a01 tstb %d1
4d572: 6600 ff44 bnew 4d4b8 <rtems_bdbuf_get_buffer_from_lru_list+0x17c>
4d576: 6000 ff76 braw 4d4ee <rtems_bdbuf_get_buffer_from_lru_list+0x1b2>
else
{
switch (p->avl.bal)
{
case -1:
p->avl.bal = 0;
4d57a: 4200 clrb %d0
modified = false;
4d57c: 4201 clrb %d1
else
{
switch (p->avl.bal)
{
case -1:
p->avl.bal = 0;
4d57e: 1140 0011 moveb %d0,%a0@(17)
4d582: 6000 ff4a braw 4d4ce <rtems_bdbuf_get_buffer_from_lru_list+0x192>
case 0:
p->avl.bal = 1;
break;
case 1:
p1 = p->avl.right;
4d586: 2868 000c moveal %a0@(12),%a4
if (p1->avl.bal == 1) /* simple RR-turn */
4d58a: 7601 moveq #1,%d3
4d58c: 102c 0011 moveb %a4@(17),%d0
4d590: 49c0 extbl %d0
4d592: b680 cmpl %d0,%d3
4d594: 6700 00c0 beqw 4d656 <rtems_bdbuf_get_buffer_from_lru_list+0x31a>
p->avl.bal = 0;
p = p1;
}
else /* double RL-turn */
{
p2 = p1->avl.left;
4d598: 266c 0008 moveal %a4@(8),%a3 <== NOT EXECUTED
p1->avl.left = p2->avl.right;
p2->avl.right = p1;
p->avl.right = p2->avl.left;
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
4d59c: 7201 moveq #1,%d1 <== NOT EXECUTED
if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
4d59e: 76ff moveq #-1,%d3 <== NOT EXECUTED
p2 = p1->avl.left;
p1->avl.left = p2->avl.right;
p2->avl.right = p1;
p->avl.right = p2->avl.left;
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
4d5a0: 102b 0011 moveb %a3@(17),%d0 <== NOT EXECUTED
p = p1;
}
else /* double RL-turn */
{
p2 = p1->avl.left;
p1->avl.left = p2->avl.right;
4d5a4: 296b 000c 0008 movel %a3@(12),%a4@(8) <== NOT EXECUTED
p2->avl.right = p1;
p->avl.right = p2->avl.left;
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
4d5aa: 49c0 extbl %d0 <== NOT EXECUTED
4d5ac: b280 cmpl %d0,%d1 <== NOT EXECUTED
4d5ae: 57c0 seq %d0 <== NOT EXECUTED
}
else /* double RL-turn */
{
p2 = p1->avl.left;
p1->avl.left = p2->avl.right;
p2->avl.right = p1;
4d5b0: 274c 000c movel %a4,%a3@(12) <== NOT EXECUTED
p->avl.right = p2->avl.left;
4d5b4: 216b 0008 000c movel %a3@(8),%a0@(12) <== NOT EXECUTED
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
4d5ba: 1140 0011 moveb %d0,%a0@(17) <== NOT EXECUTED
{
p2 = p1->avl.left;
p1->avl.left = p2->avl.right;
p2->avl.right = p1;
p->avl.right = p2->avl.left;
p2->avl.left = p;
4d5be: 2748 0008 movel %a0,%a3@(8) <== NOT EXECUTED
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
4d5c2: 102b 0011 moveb %a3@(17),%d0 <== NOT EXECUTED
p = p2;
}
p->avl.bal = 0;
modified = false;
4d5c6: 4201 clrb %d1 <== NOT EXECUTED
p1->avl.left = p2->avl.right;
p2->avl.right = p1;
p->avl.right = p2->avl.left;
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
4d5c8: 49c0 extbl %d0 <== NOT EXECUTED
4d5ca: b680 cmpl %d0,%d3 <== NOT EXECUTED
4d5cc: 56c0 sne %d0 <== NOT EXECUTED
4d5ce: 5280 addql #1,%d0 <== NOT EXECUTED
4d5d0: 1940 0011 moveb %d0,%a4@(17) <== NOT EXECUTED
p = p2;
}
p->avl.bal = 0;
4d5d4: 4200 clrb %d0 <== NOT EXECUTED
4d5d6: 1740 0011 moveb %d0,%a3@(17) <== NOT EXECUTED
4d5da: 6000 fef2 braw 4d4ce <rtems_bdbuf_get_buffer_from_lru_list+0x192><== NOT EXECUTED
while (modified)
{
if (p->avl.cache == -1)
{
switch (p->avl.bal)
4d5de: 49c0 extbl %d0
4d5e0: 7201 moveq #1,%d1
4d5e2: b280 cmpl %d0,%d1
4d5e4: 670c beqs 4d5f2 <rtems_bdbuf_get_buffer_from_lru_list+0x2b6>
4d5e6: b680 cmpl %d0,%d3
4d5e8: 6716 beqs 4d600 <rtems_bdbuf_get_buffer_from_lru_list+0x2c4><== ALWAYS TAKEN
4d5ea: 2648 moveal %a0,%a3 <== NOT EXECUTED
4d5ec: 7201 moveq #1,%d1 <== NOT EXECUTED
4d5ee: 6000 fede braw 4d4ce <rtems_bdbuf_get_buffer_from_lru_list+0x192><== NOT EXECUTED
{
case 1:
p->avl.bal = 0;
4d5f2: 2648 moveal %a0,%a3
4d5f4: 4203 clrb %d3
modified = false;
4d5f6: 4201 clrb %d1
if (p->avl.cache == -1)
{
switch (p->avl.bal)
{
case 1:
p->avl.bal = 0;
4d5f8: 1143 0011 moveb %d3,%a0@(17)
4d5fc: 6000 fed0 braw 4d4ce <rtems_bdbuf_get_buffer_from_lru_list+0x192>
case 0:
p->avl.bal = -1;
break;
case -1:
p1 = p->avl.left;
4d600: 2868 0008 moveal %a0@(8),%a4
if (p1->avl.bal == -1) /* simple LL-turn */
4d604: 72ff moveq #-1,%d1
4d606: 102c 0011 moveb %a4@(17),%d0
4d60a: 49c0 extbl %d0
4d60c: b280 cmpl %d0,%d1
4d60e: 6764 beqs 4d674 <rtems_bdbuf_get_buffer_from_lru_list+0x338>
p->avl.bal = 0;
p = p1;
}
else /* double LR-turn */
{
p2 = p1->avl.right;
4d610: 266c 000c moveal %a4@(12),%a3
p1->avl.right = p2->avl.left;
p2->avl.left = p1;
p->avl.left = p2->avl.right;
p2->avl.right = p;
if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
4d614: 72ff moveq #-1,%d1
if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
4d616: 7601 moveq #1,%d3
p2 = p1->avl.right;
p1->avl.right = p2->avl.left;
p2->avl.left = p1;
p->avl.left = p2->avl.right;
p2->avl.right = p;
if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
4d618: 102b 0011 moveb %a3@(17),%d0
p = p1;
}
else /* double LR-turn */
{
p2 = p1->avl.right;
p1->avl.right = p2->avl.left;
4d61c: 296b 0008 000c movel %a3@(8),%a4@(12)
p2->avl.left = p1;
p->avl.left = p2->avl.right;
p2->avl.right = p;
if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
4d622: 49c0 extbl %d0
4d624: b280 cmpl %d0,%d1
4d626: 56c0 sne %d0
}
else /* double LR-turn */
{
p2 = p1->avl.right;
p1->avl.right = p2->avl.left;
p2->avl.left = p1;
4d628: 274c 0008 movel %a4,%a3@(8)
p->avl.left = p2->avl.right;
4d62c: 216b 000c 0008 movel %a3@(12),%a0@(8)
p2->avl.right = p;
if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
4d632: 5280 addql #1,%d0
4d634: 1140 0011 moveb %d0,%a0@(17)
{
p2 = p1->avl.right;
p1->avl.right = p2->avl.left;
p2->avl.left = p1;
p->avl.left = p2->avl.right;
p2->avl.right = p;
4d638: 2748 000c movel %a0,%a3@(12)
if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
4d63c: 102b 0011 moveb %a3@(17),%d0
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
p = p2;
}
p->avl.bal = 0;
modified = false;
4d640: 4201 clrb %d1
p1->avl.right = p2->avl.left;
p2->avl.left = p1;
p->avl.left = p2->avl.right;
p2->avl.right = p;
if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
4d642: 49c0 extbl %d0
4d644: b680 cmpl %d0,%d3
4d646: 57c0 seq %d0
4d648: 1940 0011 moveb %d0,%a4@(17)
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
p = p2;
}
p->avl.bal = 0;
4d64c: 4200 clrb %d0
4d64e: 1740 0011 moveb %d0,%a3@(17)
4d652: 6000 fe7a braw 4d4ce <rtems_bdbuf_get_buffer_from_lru_list+0x192>
p1 = p->avl.right;
if (p1->avl.bal == 1) /* simple RR-turn */
{
p->avl.right = p1->avl.left;
p1->avl.left = p;
p->avl.bal = 0;
4d656: 264c moveal %a4,%a3
case 1:
p1 = p->avl.right;
if (p1->avl.bal == 1) /* simple RR-turn */
{
p->avl.right = p1->avl.left;
4d658: 216c 0008 000c movel %a4@(8),%a0@(12)
p1->avl.left = p;
p->avl.bal = 0;
4d65e: 4200 clrb %d0
case 1:
p1 = p->avl.right;
if (p1->avl.bal == 1) /* simple RR-turn */
{
p->avl.right = p1->avl.left;
p1->avl.left = p;
4d660: 2948 0008 movel %a0,%a4@(8)
p->avl.bal = 0;
4d664: 1140 0011 moveb %d0,%a0@(17)
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
p = p2;
}
p->avl.bal = 0;
4d668: 4200 clrb %d0
modified = false;
4d66a: 4201 clrb %d1
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
p = p2;
}
p->avl.bal = 0;
4d66c: 1740 0011 moveb %d0,%a3@(17)
4d670: 6000 fe5c braw 4d4ce <rtems_bdbuf_get_buffer_from_lru_list+0x192>
p1 = p->avl.left;
if (p1->avl.bal == -1) /* simple LL-turn */
{
p->avl.left = p1->avl.right;
p1->avl.right = p;
p->avl.bal = 0;
4d674: 264c moveal %a4,%a3
case -1:
p1 = p->avl.left;
if (p1->avl.bal == -1) /* simple LL-turn */
{
p->avl.left = p1->avl.right;
4d676: 216c 000c 0008 movel %a4@(12),%a0@(8)
p1->avl.right = p;
p->avl.bal = 0;
4d67c: 4203 clrb %d3
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
p = p2;
}
p->avl.bal = 0;
4d67e: 4200 clrb %d0
case -1:
p1 = p->avl.left;
if (p1->avl.bal == -1) /* simple LL-turn */
{
p->avl.left = p1->avl.right;
p1->avl.right = p;
4d680: 2948 000c movel %a0,%a4@(12)
p->avl.bal = 0;
4d684: 1143 0011 moveb %d3,%a0@(17)
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
p = p2;
}
p->avl.bal = 0;
4d688: 1740 0011 moveb %d0,%a3@(17)
modified = false;
4d68c: 4201 clrb %d1
4d68e: 6000 fe3e braw 4d4ce <rtems_bdbuf_get_buffer_from_lru_list+0x192>
bool modified = false;
if (p == NULL)
{
*root = node;
4d692: 23ca 0006 378c movel %a2,6378c <bdbuf_cache+0x38>
node->avl.left = NULL;
node->avl.right = NULL;
node->avl.bal = 0;
4d698: 4200 clrb %d0
bool modified = false;
if (p == NULL)
{
*root = node;
node->avl.left = NULL;
4d69a: 42aa 0008 clrl %a2@(8)
node->avl.right = NULL;
node->avl.bal = 0;
4d69e: 1540 0011 moveb %d0,%a2@(17)
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4d6a2: 7001 moveq #1,%d0
if (p == NULL)
{
*root = node;
node->avl.left = NULL;
node->avl.right = NULL;
4d6a4: 42aa 000c clrl %a2@(12)
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4d6a8: 2540 001e movel %d0,%a2@(30)
4d6ac: 6000 fe46 braw 4d4f4 <rtems_bdbuf_get_buffer_from_lru_list+0x1b8>
0004e1b6 <rtems_bdbuf_init>:
*
* @return rtems_status_code The initialisation status.
*/
rtems_status_code
rtems_bdbuf_init (void)
{
4e1b6: 4e56 ffe0 linkw %fp,#-32
4e1ba: 48d7 0cfc moveml %d2-%d7/%a2-%a3,%sp@
rtems_mode prev_mode;
if (rtems_bdbuf_tracer)
printf ("bdbuf:init\n");
if (rtems_interrupt_is_in_progress())
4e1be: 4ab9 0006 415c tstl 6415c <_Per_CPU_Information+0x8>
4e1c4: 670c beqs 4e1d2 <rtems_bdbuf_init+0x1c> <== ALWAYS TAKEN
return RTEMS_CALLED_FROM_ISR;
4e1c6: 7012 moveq #18,%d0 <== NOT EXECUTED
}
bdbuf_cache.initialised = false;
return RTEMS_UNSATISFIED;
}
4e1c8: 4cee 0cfc ffe0 moveml %fp@(-32),%d2-%d7/%a2-%a3 <== NOT EXECUTED
4e1ce: 4e5e unlk %fp <== NOT EXECUTED
4e1d0: 4e75 rts <== NOT EXECUTED
return RTEMS_CALLED_FROM_ISR;
/*
* Check the configuration table values.
*/
if ((bdbuf_config.buffer_max % bdbuf_config.buffer_min) != 0)
4e1d2: 2439 0006 0c3a movel 60c3a <rtems_bdbuf_configuration+0x28>,%d2
4e1d8: 2239 0006 0c36 movel 60c36 <rtems_bdbuf_configuration+0x24>,%d1
4e1de: 4c41 2000 remul %d1,%d0,%d2
4e1e2: 4c41 2002 remul %d1,%d2,%d2
4e1e6: 4a80 tstl %d0
4e1e8: 670c beqs 4e1f6 <rtems_bdbuf_init+0x40> <== ALWAYS TAKEN
return RTEMS_INVALID_NUMBER;
4e1ea: 700a moveq #10,%d0 <== NOT EXECUTED
}
bdbuf_cache.initialised = false;
return RTEMS_UNSATISFIED;
}
4e1ec: 4cee 0cfc ffe0 moveml %fp@(-32),%d2-%d7/%a2-%a3 <== NOT EXECUTED
4e1f2: 4e5e unlk %fp <== NOT EXECUTED
4e1f4: 4e75 rts <== NOT EXECUTED
/*
* We use a special variable to manage the initialisation incase we have
* completing threads doing this. You may get errors if the another thread
* makes a call and we have not finished initialisation.
*/
prev_mode = rtems_bdbuf_disable_preemption ();
4e1f6: 4eba ea42 jsr %pc@(4cc3a <rtems_bdbuf_disable_preemption>)
4e1fa: 2600 movel %d0,%d3
if (bdbuf_cache.initialised)
4e1fc: 4a39 0006 37e5 tstb 637e5 <bdbuf_cache+0x91>
4e202: 6714 beqs 4e218 <rtems_bdbuf_init+0x62> <== ALWAYS TAKEN
{
rtems_bdbuf_restore_preemption (prev_mode);
4e204: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4e206: 4eba ea62 jsr %pc@(4cc6a <rtems_bdbuf_restore_preemption>)<== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
4e20a: 588f addql #4,%sp <== NOT EXECUTED
4e20c: 700c moveq #12,%d0 <== NOT EXECUTED
}
bdbuf_cache.initialised = false;
return RTEMS_UNSATISFIED;
}
4e20e: 4cee 0cfc ffe0 moveml %fp@(-32),%d2-%d7/%a2-%a3 <== NOT EXECUTED
4e214: 4e5e unlk %fp <== NOT EXECUTED
4e216: 4e75 rts <== NOT EXECUTED
{
rtems_bdbuf_restore_preemption (prev_mode);
return RTEMS_RESOURCE_IN_USE;
}
memset(&bdbuf_cache, 0, sizeof(bdbuf_cache));
4e218: 4878 0092 pea 92 <DBL_MANT_DIG+0x5d>
rtems_chain_initialize_empty (&bdbuf_cache.read_ahead_chain);
/*
* Create the locks for the cache.
*/
sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'l'),
4e21c: 45f9 0004 8984 lea 48984 <rtems_semaphore_create>,%a2
{
rtems_bdbuf_restore_preemption (prev_mode);
return RTEMS_RESOURCE_IN_USE;
}
memset(&bdbuf_cache, 0, sizeof(bdbuf_cache));
4e222: 42a7 clrl %sp@-
4e224: 4879 0006 3754 pea 63754 <bdbuf_cache>
4e22a: 4eb9 0005 3244 jsr 53244 <memset>
bdbuf_cache.initialised = true;
4e230: 7001 moveq #1,%d0
rtems_bdbuf_restore_preemption (prev_mode);
4e232: 2f03 movel %d3,%sp@-
rtems_bdbuf_restore_preemption (prev_mode);
return RTEMS_RESOURCE_IN_USE;
}
memset(&bdbuf_cache, 0, sizeof(bdbuf_cache));
bdbuf_cache.initialised = true;
4e234: 13c0 0006 37e5 moveb %d0,637e5 <bdbuf_cache+0x91>
rtems_bdbuf_restore_preemption (prev_mode);
4e23a: 4eba ea2e jsr %pc@(4cc6a <rtems_bdbuf_restore_preemption>)
rtems_chain_initialize_empty (&bdbuf_cache.read_ahead_chain);
/*
* Create the locks for the cache.
*/
sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'l'),
4e23e: 4879 0006 377a pea 6377a <bdbuf_cache+0x26>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4e244: 223c 0006 375e movel #407390,%d1
head->previous = NULL;
tail->previous = head;
4e24a: 203c 0006 375a movel #407386,%d0
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4e250: 23c1 0006 375a movel %d1,6375a <bdbuf_cache+0x6>
4e256: 223c 0006 3794 movel #407444,%d1
head->previous = NULL;
tail->previous = head;
4e25c: 23c0 0006 3762 movel %d0,63762 <bdbuf_cache+0xe>
4e262: 203c 0006 3790 movel #407440,%d0
4e268: 42a7 clrl %sp@-
4e26a: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
4e26e: 4878 0001 pea 1 <ADD>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4e272: 23c1 0006 3790 movel %d1,63790 <bdbuf_cache+0x3c>
4e278: 223c 0006 37a0 movel #407456,%d1
head->previous = NULL;
tail->previous = head;
4e27e: 23c0 0006 3798 movel %d0,63798 <bdbuf_cache+0x44>
4e284: 203c 0006 379c movel #407452,%d0
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4e28a: 23c1 0006 379c movel %d1,6379c <bdbuf_cache+0x48>
4e290: 223c 0006 37ac movel #407468,%d1
head->previous = NULL;
tail->previous = head;
4e296: 23c0 0006 37a4 movel %d0,637a4 <bdbuf_cache+0x50>
4e29c: 203c 0006 37a8 movel #407464,%d0
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4e2a2: 23c1 0006 37a8 movel %d1,637a8 <bdbuf_cache+0x54>
head->previous = NULL;
tail->previous = head;
4e2a8: 23c0 0006 37b0 movel %d0,637b0 <bdbuf_cache+0x5c>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4e2ae: 223c 0006 37dc movel #407516,%d1
head->previous = NULL;
tail->previous = head;
4e2b4: 203c 0006 37d8 movel #407512,%d0
4e2ba: 2f3c 4244 436c movel #1111769964,%sp@-
*/
cache_aligment = 32; /* FIXME rtems_cache_get_data_line_size() */
if (cache_aligment <= 0)
cache_aligment = CPU_ALIGNMENT;
bdbuf_cache.sync_device = BDBUF_INVALID_DEV;
4e2c0: 42b9 0006 3788 clrl 63788 <bdbuf_cache+0x34>
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4e2c6: 42b9 0006 375e clrl 6375e <bdbuf_cache+0xa>
4e2cc: 42b9 0006 3794 clrl 63794 <bdbuf_cache+0x40>
4e2d2: 42b9 0006 37a0 clrl 637a0 <bdbuf_cache+0x4c>
4e2d8: 42b9 0006 37ac clrl 637ac <bdbuf_cache+0x58>
4e2de: 42b9 0006 37dc clrl 637dc <bdbuf_cache+0x88>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4e2e4: 23c1 0006 37d8 movel %d1,637d8 <bdbuf_cache+0x84>
head->previous = NULL;
tail->previous = head;
4e2ea: 23c0 0006 37e0 movel %d0,637e0 <bdbuf_cache+0x8c>
rtems_chain_initialize_empty (&bdbuf_cache.read_ahead_chain);
/*
* Create the locks for the cache.
*/
sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'l'),
4e2f0: 4e92 jsr %a2@
1, RTEMS_BDBUF_CACHE_LOCK_ATTRIBS, 0,
&bdbuf_cache.lock);
if (sc != RTEMS_SUCCESSFUL)
4e2f2: 4fef 0024 lea %sp@(36),%sp
4e2f6: 4a80 tstl %d0
4e2f8: 6700 0106 beqw 4e400 <rtems_bdbuf_init+0x24a>
return RTEMS_SUCCESSFUL;
error:
if (bdbuf_cache.read_ahead_task != 0)
4e2fc: 2039 0006 37d4 movel 637d4 <bdbuf_cache+0x80>,%d0 <== NOT EXECUTED
4e302: 6600 00e6 bnew 4e3ea <rtems_bdbuf_init+0x234> <== NOT EXECUTED
rtems_task_delete (bdbuf_cache.read_ahead_task);
if (bdbuf_cache.swapout != 0)
4e306: 2039 0006 3754 movel 63754 <bdbuf_cache>,%d0 <== NOT EXECUTED
4e30c: 667e bnes 4e38c <rtems_bdbuf_init+0x1d6> <== NOT EXECUTED
rtems_task_delete (bdbuf_cache.swapout);
free (bdbuf_cache.buffers);
4e30e: 2f39 0006 376a movel 6376a <bdbuf_cache+0x16>,%sp@- <== NOT EXECUTED
4e314: 47f9 0004 4528 lea 44528 <free>,%a3 <== NOT EXECUTED
free (bdbuf_cache.groups);
free (bdbuf_cache.bds);
rtems_semaphore_delete (bdbuf_cache.buffer_waiters.sema);
4e31a: 45f9 0004 8b70 lea 48b70 <rtems_semaphore_delete>,%a2 <== NOT EXECUTED
rtems_task_delete (bdbuf_cache.read_ahead_task);
if (bdbuf_cache.swapout != 0)
rtems_task_delete (bdbuf_cache.swapout);
free (bdbuf_cache.buffers);
4e320: 4e93 jsr %a3@ <== NOT EXECUTED
free (bdbuf_cache.groups);
4e322: 2f39 0006 37d0 movel 637d0 <bdbuf_cache+0x7c>,%sp@- <== NOT EXECUTED
4e328: 4e93 jsr %a3@ <== NOT EXECUTED
free (bdbuf_cache.bds);
4e32a: 2f39 0006 3766 movel 63766 <bdbuf_cache+0x12>,%sp@- <== NOT EXECUTED
4e330: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.buffer_waiters.sema);
4e332: 2f39 0006 37c8 movel 637c8 <bdbuf_cache+0x74>,%sp@- <== NOT EXECUTED
4e338: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.access_waiters.sema);
4e33a: 2f39 0006 37b8 movel 637b8 <bdbuf_cache+0x64>,%sp@- <== NOT EXECUTED
4e340: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.transfer_waiters.sema);
4e342: 2f39 0006 37c0 movel 637c0 <bdbuf_cache+0x6c>,%sp@- <== NOT EXECUTED
4e348: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.sync_lock);
4e34a: 2f39 0006 377e movel 6377e <bdbuf_cache+0x2a>,%sp@- <== NOT EXECUTED
4e350: 4e92 jsr %a2@ <== NOT EXECUTED
if (bdbuf_cache.lock != 0)
4e352: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4e356: 4ab9 0006 377a tstl 6377a <bdbuf_cache+0x26> <== NOT EXECUTED
4e35c: 6614 bnes 4e372 <rtems_bdbuf_init+0x1bc> <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.lock);
}
bdbuf_cache.initialised = false;
return RTEMS_UNSATISFIED;
4e35e: 700d moveq #13,%d0 <== NOT EXECUTED
{
rtems_bdbuf_unlock_cache ();
rtems_semaphore_delete (bdbuf_cache.lock);
}
bdbuf_cache.initialised = false;
4e360: 4201 clrb %d1 <== NOT EXECUTED
4e362: 13c1 0006 37e5 moveb %d1,637e5 <bdbuf_cache+0x91> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
}
4e368: 4cee 0cfc ffe0 moveml %fp@(-32),%d2-%d7/%a2-%a3 <== NOT EXECUTED
4e36e: 4e5e unlk %fp <== NOT EXECUTED
4e370: 4e75 rts <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.transfer_waiters.sema);
rtems_semaphore_delete (bdbuf_cache.sync_lock);
if (bdbuf_cache.lock != 0)
{
rtems_bdbuf_unlock_cache ();
4e372: 4eba e888 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>) <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.lock);
4e376: 2f39 0006 377a movel 6377a <bdbuf_cache+0x26>,%sp@- <== NOT EXECUTED
4e37c: 4e92 jsr %a2@ <== NOT EXECUTED
4e37e: 588f addql #4,%sp <== NOT EXECUTED
}
bdbuf_cache.initialised = false;
return RTEMS_UNSATISFIED;
4e380: 700d moveq #13,%d0 <== NOT EXECUTED
{
rtems_bdbuf_unlock_cache ();
rtems_semaphore_delete (bdbuf_cache.lock);
}
bdbuf_cache.initialised = false;
4e382: 4201 clrb %d1 <== NOT EXECUTED
4e384: 13c1 0006 37e5 moveb %d1,637e5 <bdbuf_cache+0x91> <== NOT EXECUTED
4e38a: 60dc bras 4e368 <rtems_bdbuf_init+0x1b2> <== NOT EXECUTED
if (bdbuf_cache.read_ahead_task != 0)
rtems_task_delete (bdbuf_cache.read_ahead_task);
if (bdbuf_cache.swapout != 0)
rtems_task_delete (bdbuf_cache.swapout);
4e38c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
free (bdbuf_cache.buffers);
4e38e: 47f9 0004 4528 lea 44528 <free>,%a3 <== NOT EXECUTED
if (bdbuf_cache.read_ahead_task != 0)
rtems_task_delete (bdbuf_cache.read_ahead_task);
if (bdbuf_cache.swapout != 0)
rtems_task_delete (bdbuf_cache.swapout);
4e394: 4eb9 0004 9014 jsr 49014 <rtems_task_delete> <== NOT EXECUTED
4e39a: 588f addql #4,%sp <== NOT EXECUTED
free (bdbuf_cache.buffers);
free (bdbuf_cache.groups);
free (bdbuf_cache.bds);
rtems_semaphore_delete (bdbuf_cache.buffer_waiters.sema);
4e39c: 45f9 0004 8b70 lea 48b70 <rtems_semaphore_delete>,%a2 <== NOT EXECUTED
rtems_task_delete (bdbuf_cache.read_ahead_task);
if (bdbuf_cache.swapout != 0)
rtems_task_delete (bdbuf_cache.swapout);
free (bdbuf_cache.buffers);
4e3a2: 2f39 0006 376a movel 6376a <bdbuf_cache+0x16>,%sp@- <== NOT EXECUTED
4e3a8: 4e93 jsr %a3@ <== NOT EXECUTED
free (bdbuf_cache.groups);
4e3aa: 2f39 0006 37d0 movel 637d0 <bdbuf_cache+0x7c>,%sp@- <== NOT EXECUTED
4e3b0: 4e93 jsr %a3@ <== NOT EXECUTED
free (bdbuf_cache.bds);
4e3b2: 2f39 0006 3766 movel 63766 <bdbuf_cache+0x12>,%sp@- <== NOT EXECUTED
4e3b8: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.buffer_waiters.sema);
4e3ba: 2f39 0006 37c8 movel 637c8 <bdbuf_cache+0x74>,%sp@- <== NOT EXECUTED
4e3c0: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.access_waiters.sema);
4e3c2: 2f39 0006 37b8 movel 637b8 <bdbuf_cache+0x64>,%sp@- <== NOT EXECUTED
4e3c8: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.transfer_waiters.sema);
4e3ca: 2f39 0006 37c0 movel 637c0 <bdbuf_cache+0x6c>,%sp@- <== NOT EXECUTED
4e3d0: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_delete (bdbuf_cache.sync_lock);
4e3d2: 2f39 0006 377e movel 6377e <bdbuf_cache+0x2a>,%sp@- <== NOT EXECUTED
4e3d8: 4e92 jsr %a2@ <== NOT EXECUTED
if (bdbuf_cache.lock != 0)
4e3da: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4e3de: 4ab9 0006 377a tstl 6377a <bdbuf_cache+0x26> <== NOT EXECUTED
4e3e4: 6700 ff78 beqw 4e35e <rtems_bdbuf_init+0x1a8> <== NOT EXECUTED
4e3e8: 6088 bras 4e372 <rtems_bdbuf_init+0x1bc> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
error:
if (bdbuf_cache.read_ahead_task != 0)
rtems_task_delete (bdbuf_cache.read_ahead_task);
4e3ea: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4e3ec: 4eb9 0004 9014 jsr 49014 <rtems_task_delete> <== NOT EXECUTED
if (bdbuf_cache.swapout != 0)
4e3f2: 2039 0006 3754 movel 63754 <bdbuf_cache>,%d0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
error:
if (bdbuf_cache.read_ahead_task != 0)
rtems_task_delete (bdbuf_cache.read_ahead_task);
4e3f8: 588f addql #4,%sp <== NOT EXECUTED
if (bdbuf_cache.swapout != 0)
4e3fa: 6700 ff12 beqw 4e30e <rtems_bdbuf_init+0x158> <== NOT EXECUTED
4e3fe: 608c bras 4e38c <rtems_bdbuf_init+0x1d6> <== NOT EXECUTED
1, RTEMS_BDBUF_CACHE_LOCK_ATTRIBS, 0,
&bdbuf_cache.lock);
if (sc != RTEMS_SUCCESSFUL)
goto error;
rtems_bdbuf_lock_cache ();
4e400: 4eba e7ae jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 's'),
4e404: 4879 0006 377e pea 6377e <bdbuf_cache+0x2a>
4e40a: 42a7 clrl %sp@-
4e40c: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
4e410: 4878 0001 pea 1 <ADD>
4e414: 2f3c 4244 4373 movel #1111769971,%sp@-
4e41a: 4e92 jsr %a2@
1, RTEMS_BDBUF_CACHE_LOCK_ATTRIBS, 0,
&bdbuf_cache.sync_lock);
if (sc != RTEMS_SUCCESSFUL)
4e41c: 4fef 0014 lea %sp@(20),%sp
4e420: 4a80 tstl %d0
4e422: 6600 fed8 bnew 4e2fc <rtems_bdbuf_init+0x146>
goto error;
sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'a'),
4e426: 4879 0006 37b8 pea 637b8 <bdbuf_cache+0x64>
4e42c: 42a7 clrl %sp@-
4e42e: 4878 0024 pea 24 <OPER2+0x10>
4e432: 42a7 clrl %sp@-
4e434: 2f3c 4244 4361 movel #1111769953,%sp@-
4e43a: 4e92 jsr %a2@
0, RTEMS_BDBUF_CACHE_WAITER_ATTRIBS, 0,
&bdbuf_cache.access_waiters.sema);
if (sc != RTEMS_SUCCESSFUL)
4e43c: 4fef 0014 lea %sp@(20),%sp
4e440: 4a80 tstl %d0
4e442: 6600 feb8 bnew 4e2fc <rtems_bdbuf_init+0x146>
goto error;
sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 't'),
4e446: 4879 0006 37c0 pea 637c0 <bdbuf_cache+0x6c>
4e44c: 42a7 clrl %sp@-
4e44e: 4878 0024 pea 24 <OPER2+0x10>
4e452: 42a7 clrl %sp@-
4e454: 2f3c 4244 4374 movel #1111769972,%sp@-
4e45a: 4e92 jsr %a2@
0, RTEMS_BDBUF_CACHE_WAITER_ATTRIBS, 0,
&bdbuf_cache.transfer_waiters.sema);
if (sc != RTEMS_SUCCESSFUL)
4e45c: 4fef 0014 lea %sp@(20),%sp
4e460: 4a80 tstl %d0
4e462: 6600 fe98 bnew 4e2fc <rtems_bdbuf_init+0x146>
goto error;
sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'b'),
4e466: 4879 0006 37c8 pea 637c8 <bdbuf_cache+0x74>
4e46c: 42a7 clrl %sp@-
4e46e: 4878 0024 pea 24 <OPER2+0x10>
4e472: 42a7 clrl %sp@-
4e474: 2f3c 4244 4362 movel #1111769954,%sp@-
4e47a: 4e92 jsr %a2@
0, RTEMS_BDBUF_CACHE_WAITER_ATTRIBS, 0,
&bdbuf_cache.buffer_waiters.sema);
if (sc != RTEMS_SUCCESSFUL)
4e47c: 4fef 0014 lea %sp@(20),%sp
4e480: 4a80 tstl %d0
4e482: 6600 fe78 bnew 4e2fc <rtems_bdbuf_init+0x146>
/*
* Compute the various number of elements in the cache.
*/
bdbuf_cache.buffer_min_count =
bdbuf_config.size / bdbuf_config.buffer_min;
4e486: 2239 0006 0c36 movel 60c36 <rtems_bdbuf_configuration+0x24>,%d1
bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;
/*
* Allocate the memory for the buffer descriptors.
*/
bdbuf_cache.bds = calloc (sizeof (rtems_bdbuf_buffer),
4e48c: 45f9 0004 4208 lea 44208 <calloc>,%a2
/*
* Compute the various number of elements in the cache.
*/
bdbuf_cache.buffer_min_count =
bdbuf_config.size / bdbuf_config.buffer_min;
4e492: 2639 0006 0c32 movel 60c32 <rtems_bdbuf_configuration+0x20>,%d3
4e498: 4c41 3003 remul %d1,%d3,%d3
bdbuf_cache.max_bds_per_group =
4e49c: 23c2 0006 3772 movel %d2,63772 <bdbuf_cache+0x1e>
bdbuf_config.buffer_max / bdbuf_config.buffer_min;
bdbuf_cache.group_count =
bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;
4e4a2: 2203 movel %d3,%d1
/*
* Allocate the memory for the buffer descriptors.
*/
bdbuf_cache.bds = calloc (sizeof (rtems_bdbuf_buffer),
4e4a4: 2f03 movel %d3,%sp@-
4e4a6: 4878 0036 pea 36 <DBL_MANT_DIG+0x1>
bdbuf_cache.buffer_min_count =
bdbuf_config.size / bdbuf_config.buffer_min;
bdbuf_cache.max_bds_per_group =
bdbuf_config.buffer_max / bdbuf_config.buffer_min;
bdbuf_cache.group_count =
bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;
4e4aa: 4c42 1001 remul %d2,%d1,%d1
goto error;
/*
* Compute the various number of elements in the cache.
*/
bdbuf_cache.buffer_min_count =
4e4ae: 23c3 0006 376e movel %d3,6376e <bdbuf_cache+0x1a>
bdbuf_config.size / bdbuf_config.buffer_min;
bdbuf_cache.max_bds_per_group =
bdbuf_config.buffer_max / bdbuf_config.buffer_min;
bdbuf_cache.group_count =
bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;
4e4b4: 2401 movel %d1,%d2
*/
bdbuf_cache.buffer_min_count =
bdbuf_config.size / bdbuf_config.buffer_min;
bdbuf_cache.max_bds_per_group =
bdbuf_config.buffer_max / bdbuf_config.buffer_min;
bdbuf_cache.group_count =
4e4b6: 23c1 0006 37cc movel %d1,637cc <bdbuf_cache+0x78>
bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;
/*
* Allocate the memory for the buffer descriptors.
*/
bdbuf_cache.bds = calloc (sizeof (rtems_bdbuf_buffer),
4e4bc: 4e92 jsr %a2@
bdbuf_cache.buffer_min_count);
if (!bdbuf_cache.bds)
4e4be: 508f addql #8,%sp
bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;
/*
* Allocate the memory for the buffer descriptors.
*/
bdbuf_cache.bds = calloc (sizeof (rtems_bdbuf_buffer),
4e4c0: 23c0 0006 3766 movel %d0,63766 <bdbuf_cache+0x12>
bdbuf_cache.buffer_min_count);
if (!bdbuf_cache.bds)
4e4c6: 6700 fe34 beqw 4e2fc <rtems_bdbuf_init+0x146>
goto error;
/*
* Allocate the memory for the buffer descriptors.
*/
bdbuf_cache.groups = calloc (sizeof (rtems_bdbuf_group),
4e4ca: 2f02 movel %d2,%sp@-
4e4cc: 4878 0014 pea 14 <OPER2>
4e4d0: 4e92 jsr %a2@
bdbuf_cache.group_count);
if (!bdbuf_cache.groups)
4e4d2: 508f addql #8,%sp
goto error;
/*
* Allocate the memory for the buffer descriptors.
*/
bdbuf_cache.groups = calloc (sizeof (rtems_bdbuf_group),
4e4d4: 23c0 0006 37d0 movel %d0,637d0 <bdbuf_cache+0x7c>
bdbuf_cache.group_count);
if (!bdbuf_cache.groups)
4e4da: 6700 fe20 beqw 4e2fc <rtems_bdbuf_init+0x146>
* aligned. It is possible to free the memory allocated by rtems_memalign()
* with free(). Return 0 if allocated.
*
* The memory allocate allows a
*/
if (rtems_memalign ((void **) &bdbuf_cache.buffers,
4e4de: 2039 0006 0c36 movel 60c36 <rtems_bdbuf_configuration+0x24>,%d0
4e4e4: 4c03 0800 mulsl %d3,%d0
4e4e8: 2f00 movel %d0,%sp@-
4e4ea: 4878 0020 pea 20 <OPER2+0xc>
4e4ee: 4879 0006 376a pea 6376a <bdbuf_cache+0x16>
4e4f4: 4eb9 0005 01c4 jsr 501c4 <rtems_memalign>
4e4fa: 4fef 000c lea %sp@(12),%sp
4e4fe: 4a80 tstl %d0
4e500: 6600 fdfa bnew 4e2fc <rtems_bdbuf_init+0x146>
bd->group = group;
bd->buffer = buffer;
rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);
if ((b % bdbuf_cache.max_bds_per_group) ==
4e504: 2639 0006 3772 movel 63772 <bdbuf_cache+0x1e>,%d3
(bdbuf_cache.max_bds_per_group - 1))
4e50a: 2c03 movel %d3,%d6
4e50c: 5386 subql #1,%d6
/*
* The cache is empty after opening so we need to add all the buffers to it
* and initialise the groups.
*/
for (b = 0, group = bdbuf_cache.groups,
4e50e: 2279 0006 37d0 moveal 637d0 <bdbuf_cache+0x7c>,%a1
4e514: 2449 moveal %a1,%a2
bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;
4e516: 2239 0006 3766 movel 63766 <bdbuf_cache+0x12>,%d1
4e51c: 2041 moveal %d1,%a0
4e51e: 2439 0006 376a movel 6376a <bdbuf_cache+0x16>,%d2
b < bdbuf_cache.buffer_min_count;
4e524: 2a39 0006 376e movel 6376e <bdbuf_cache+0x1a>,%d5
/*
* The cache is empty after opening so we need to add all the buffers to it
* and initialise the groups.
*/
for (b = 0, group = bdbuf_cache.groups,
4e52a: ba80 cmpl %d0,%d5
4e52c: 6740 beqs 4e56e <rtems_bdbuf_init+0x3b8>
b < bdbuf_cache.buffer_min_count;
b++, bd++, buffer += bdbuf_config.buffer_min)
{
bd->dd = BDBUF_INVALID_DEV;
bd->group = group;
bd->buffer = buffer;
4e52e: 2142 001a movel %d2,%a0@(26)
rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);
if ((b % bdbuf_cache.max_bds_per_group) ==
4e532: 2e00 movel %d0,%d7
* and initialise the groups.
*/
for (b = 0, group = bdbuf_cache.groups,
bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;
b < bdbuf_cache.buffer_min_count;
b++, bd++, buffer += bdbuf_config.buffer_min)
4e534: 5280 addql #1,%d0
4e536: d4b9 0006 0c36 addl 60c36 <rtems_bdbuf_configuration+0x24>,%d2
{
bd->dd = BDBUF_INVALID_DEV;
bd->group = group;
4e53c: 214a 0026 movel %a2,%a0@(38)
bd->buffer = buffer;
rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);
if ((b % bdbuf_cache.max_bds_per_group) ==
4e540: 4c43 7004 remul %d3,%d4,%d7
for (b = 0, group = bdbuf_cache.groups,
bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;
b < bdbuf_cache.buffer_min_count;
b++, bd++, buffer += bdbuf_config.buffer_min)
{
bd->dd = BDBUF_INVALID_DEV;
4e544: 42a8 0012 clrl %a0@(18)
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4e548: 2679 0006 3798 moveal 63798 <bdbuf_cache+0x44>,%a3
the_node->next = tail;
4e54e: 20bc 0006 3794 movel #407444,%a0@
tail->previous = the_node;
4e554: 23c8 0006 3798 movel %a0,63798 <bdbuf_cache+0x44>
old_last->next = the_node;
4e55a: 2688 movel %a0,%a3@
the_node->previous = old_last;
4e55c: 214b 0004 movel %a3,%a0@(4)
bd->group = group;
bd->buffer = buffer;
rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);
if ((b % bdbuf_cache.max_bds_per_group) ==
4e560: bc84 cmpl %d4,%d6
4e562: 6604 bnes 4e568 <rtems_bdbuf_init+0x3b2>
(bdbuf_cache.max_bds_per_group - 1))
group++;
4e564: 45ea 0014 lea %a2@(20),%a2
* and initialise the groups.
*/
for (b = 0, group = bdbuf_cache.groups,
bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;
b < bdbuf_cache.buffer_min_count;
b++, bd++, buffer += bdbuf_config.buffer_min)
4e568: 41e8 0036 lea %a0@(54),%a0
4e56c: 60bc bras 4e52a <rtems_bdbuf_init+0x374>
b < bdbuf_cache.group_count;
b++,
group++,
bd += bdbuf_cache.max_bds_per_group)
{
group->bds_per_group = bdbuf_cache.max_bds_per_group;
4e56e: 2439 0006 3772 movel 63772 <bdbuf_cache+0x1e>,%d2
group = bdbuf_cache.groups,
bd = bdbuf_cache.bds;
b < bdbuf_cache.group_count;
b++,
group++,
bd += bdbuf_cache.max_bds_per_group)
4e574: 7636 moveq #54,%d3
4e576: 4c02 3800 mulsl %d2,%d3
4e57a: 4280 clrl %d0
}
for (b = 0,
group = bdbuf_cache.groups,
bd = bdbuf_cache.bds;
b < bdbuf_cache.group_count;
4e57c: 2079 0006 37cc moveal 637cc <bdbuf_cache+0x78>,%a0
if ((b % bdbuf_cache.max_bds_per_group) ==
(bdbuf_cache.max_bds_per_group - 1))
group++;
}
for (b = 0,
4e582: b1c0 cmpal %d0,%a0
4e584: 6712 beqs 4e598 <rtems_bdbuf_init+0x3e2>
b++,
group++,
bd += bdbuf_cache.max_bds_per_group)
{
group->bds_per_group = bdbuf_cache.max_bds_per_group;
group->bdbuf = bd;
4e586: 2341 0010 movel %d1,%a1@(16)
for (b = 0,
group = bdbuf_cache.groups,
bd = bdbuf_cache.bds;
b < bdbuf_cache.group_count;
b++,
4e58a: 5280 addql #1,%d0
group++,
bd += bdbuf_cache.max_bds_per_group)
4e58c: d283 addl %d3,%d1
{
group->bds_per_group = bdbuf_cache.max_bds_per_group;
4e58e: 2342 0008 movel %d2,%a1@(8)
for (b = 0,
group = bdbuf_cache.groups,
bd = bdbuf_cache.bds;
b < bdbuf_cache.group_count;
b++,
group++,
4e592: 43e9 0014 lea %a1@(20),%a1
4e596: 60ea bras 4e582 <rtems_bdbuf_init+0x3cc>
* Create and start swapout task. This task will create and manage the worker
* threads.
*/
bdbuf_cache.swapout_enabled = true;
sc = rtems_bdbuf_create_task (rtems_build_name('B', 'S', 'W', 'P'),
4e598: 4879 0006 3754 pea 63754 <bdbuf_cache>
4e59e: 45fa e958 lea %pc@(4cef8 <rtems_bdbuf_create_task.constprop.15>),%a2
/*
* Create and start swapout task. This task will create and manage the worker
* threads.
*/
bdbuf_cache.swapout_enabled = true;
4e5a2: 7201 moveq #1,%d1
sc = rtems_bdbuf_create_task (rtems_build_name('B', 'S', 'W', 'P'),
4e5a4: 42a7 clrl %sp@-
4e5a6: 487a f60e pea %pc@(4dbb6 <rtems_bdbuf_swapout_task>)
4e5aa: 2f39 0006 0c1a movel 60c1a <rtems_bdbuf_configuration+0x8>,%sp@-
/*
* Create and start swapout task. This task will create and manage the worker
* threads.
*/
bdbuf_cache.swapout_enabled = true;
4e5b0: 13c1 0006 3758 moveb %d1,63758 <bdbuf_cache+0x4>
sc = rtems_bdbuf_create_task (rtems_build_name('B', 'S', 'W', 'P'),
4e5b6: 2f3c 4253 5750 movel #1112758096,%sp@-
4e5bc: 4e92 jsr %a2@
bdbuf_config.swapout_priority,
RTEMS_BDBUF_SWAPOUT_TASK_PRIORITY_DEFAULT,
rtems_bdbuf_swapout_task,
0,
&bdbuf_cache.swapout);
if (sc != RTEMS_SUCCESSFUL)
4e5be: 4fef 0014 lea %sp@(20),%sp
4e5c2: 4a80 tstl %d0
4e5c4: 6600 fd36 bnew 4e2fc <rtems_bdbuf_init+0x146>
goto error;
if (bdbuf_config.max_read_ahead_blocks > 0)
4e5c8: 4ab9 0006 0c12 tstl 60c12 <rtems_bdbuf_configuration>
4e5ce: 672c beqs 4e5fc <rtems_bdbuf_init+0x446>
{
bdbuf_cache.read_ahead_enabled = true;
sc = rtems_bdbuf_create_task (rtems_build_name('B', 'R', 'D', 'A'),
4e5d0: 4879 0006 37d4 pea 637d4 <bdbuf_cache+0x80>
if (sc != RTEMS_SUCCESSFUL)
goto error;
if (bdbuf_config.max_read_ahead_blocks > 0)
{
bdbuf_cache.read_ahead_enabled = true;
4e5d6: 7001 moveq #1,%d0
sc = rtems_bdbuf_create_task (rtems_build_name('B', 'R', 'D', 'A'),
4e5d8: 42a7 clrl %sp@-
4e5da: 487a fa94 pea %pc@(4e070 <rtems_bdbuf_read_ahead_task>)
4e5de: 2f39 0006 0c3e movel 60c3e <rtems_bdbuf_configuration+0x2c>,%sp@-
if (sc != RTEMS_SUCCESSFUL)
goto error;
if (bdbuf_config.max_read_ahead_blocks > 0)
{
bdbuf_cache.read_ahead_enabled = true;
4e5e4: 13c0 0006 37e4 moveb %d0,637e4 <bdbuf_cache+0x90>
sc = rtems_bdbuf_create_task (rtems_build_name('B', 'R', 'D', 'A'),
4e5ea: 2f3c 4252 4441 movel #1112687681,%sp@-
4e5f0: 4e92 jsr %a2@
bdbuf_config.read_ahead_priority,
RTEMS_BDBUF_READ_AHEAD_TASK_PRIORITY_DEFAULT,
rtems_bdbuf_read_ahead_task,
0,
&bdbuf_cache.read_ahead_task);
if (sc != RTEMS_SUCCESSFUL)
4e5f2: 4fef 0014 lea %sp@(20),%sp
4e5f6: 4a80 tstl %d0
4e5f8: 6600 fd02 bnew 4e2fc <rtems_bdbuf_init+0x146>
goto error;
}
rtems_bdbuf_unlock_cache ();
4e5fc: 4eba e5fe jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
return RTEMS_SUCCESSFUL;
4e600: 4280 clrl %d0
}
bdbuf_cache.initialised = false;
return RTEMS_UNSATISFIED;
}
4e602: 4cee 0cfc ffe0 moveml %fp@(-32),%d2-%d7/%a2-%a3
4e608: 4e5e unlk %fp <== NOT EXECUTED
0004cb8a <rtems_bdbuf_lock>:
* @param lock The mutex to lock.
* @param fatal_error_code The error code if the call fails.
*/
static void
rtems_bdbuf_lock (rtems_id lock, uint32_t fatal_error_code)
{
4cb8a: 4e56 0000 linkw %fp,#0
rtems_status_code sc = rtems_semaphore_obtain (lock,
4cb8e: 42a7 clrl %sp@-
4cb90: 42a7 clrl %sp@-
4cb92: 2f2e 0008 movel %fp@(8),%sp@-
4cb96: 4eb9 0004 8c48 jsr 48c48 <rtems_semaphore_obtain>
RTEMS_WAIT,
RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
4cb9c: 4fef 000c lea %sp@(12),%sp
4cba0: 4a80 tstl %d0
4cba2: 6604 bnes 4cba8 <rtems_bdbuf_lock+0x1e> <== NEVER TAKEN
rtems_bdbuf_fatal (fatal_error_code);
}
4cba4: 4e5e unlk %fp
4cba6: 4e75 rts
{
rtems_status_code sc = rtems_semaphore_obtain (lock,
RTEMS_WAIT,
RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (fatal_error_code);
4cba8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4cbac: 4eba ffca jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004eb94 <rtems_bdbuf_purge_dev>:
}
}
void
rtems_bdbuf_purge_dev (rtems_disk_device *dd)
{
4eb94: 4e56 ff60 linkw %fp,#-160
4eb98: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4eb9c: 240e movel %fp,%d2
4eb9e: 0682 ffff ff74 addil #-140,%d2
4eba4: 2002 movel %d2,%d0
4eba6: 5880 addql #4,%d0
4eba8: 286e 0008 moveal %fp@(8),%a4
4ebac: 2d40 ff74 movel %d0,%fp@(-140)
head->previous = NULL;
4ebb0: 42ae ff78 clrl %fp@(-136)
tail->previous = head;
4ebb4: 2d42 ff7c movel %d2,%fp@(-132)
rtems_chain_control purge_list;
rtems_chain_initialize_empty (&purge_list);
rtems_bdbuf_lock_cache ();
4ebb8: 4eba dff6 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(
const Chain_Node *node
)
{
return (node->next == NULL) && (node->previous == NULL);
4ebbc: 206c 0062 moveal %a4@(98),%a0
4ebc0: 226c 0066 moveal %a4@(102),%a1
4ebc4: 4a88 tstl %a0
4ebc6: 6700 0180 beqw 4ed48 <rtems_bdbuf_purge_dev+0x1b4>
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
4ebca: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED
previous->next = next;
4ebce: 2288 movel %a0,%a1@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(
Chain_Node *node
)
{
node->next = node->previous = NULL;
4ebd0: 42ac 0066 clrl %a4@(102) <== NOT EXECUTED
4ebd4: 42ac 0062 clrl %a4@(98) <== NOT EXECUTED
static void
rtems_bdbuf_read_ahead_reset (rtems_disk_device *dd)
{
rtems_bdbuf_read_ahead_cancel (dd);
dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
4ebd8: 72ff moveq #-1,%d1
static void
rtems_bdbuf_gather_for_purge (rtems_chain_control *purge_list,
const rtems_disk_device *dd)
{
rtems_bdbuf_buffer *stack [RTEMS_BDBUF_AVL_MAX_HEIGHT];
rtems_bdbuf_buffer **prev = stack;
4ebda: 47ee ff80 lea %fp@(-128),%a3
case RTEMS_BDBUF_STATE_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
break;
case RTEMS_BDBUF_STATE_SYNC:
rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);
4ebde: 4bfa e212 lea %pc@(4cdf2 <rtems_bdbuf_wake>),%a5
rtems_bdbuf_gather_for_purge (rtems_chain_control *purge_list,
const rtems_disk_device *dd)
{
rtems_bdbuf_buffer *stack [RTEMS_BDBUF_AVL_MAX_HEIGHT];
rtems_bdbuf_buffer **prev = stack;
rtems_bdbuf_buffer *cur = bdbuf_cache.tree;
4ebe2: 2479 0006 378c moveal 6378c <bdbuf_cache+0x38>,%a2
static void
rtems_bdbuf_read_ahead_reset (rtems_disk_device *dd)
{
rtems_bdbuf_read_ahead_cancel (dd);
dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
4ebe8: 2941 006a movel %d1,%a4@(106)
{
rtems_bdbuf_buffer *stack [RTEMS_BDBUF_AVL_MAX_HEIGHT];
rtems_bdbuf_buffer **prev = stack;
rtems_bdbuf_buffer *cur = bdbuf_cache.tree;
*prev = NULL;
4ebec: 42ae ff80 clrl %fp@(-128)
while (cur != NULL)
4ebf0: 4a8a tstl %a2
4ebf2: 6700 00e6 beqw 4ecda <rtems_bdbuf_purge_dev+0x146>
{
if (cur->dd == dd)
4ebf6: b9ea 0012 cmpal %a2@(18),%a4
4ebfa: 6714 beqs 4ec10 <rtems_bdbuf_purge_dev+0x7c>
default:
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);
}
}
if (cur->avl.left != NULL)
4ebfc: 202a 0008 movel %a2@(8),%d0
4ec00: 671e beqs 4ec20 <rtems_bdbuf_purge_dev+0x8c>
}
else if (cur->avl.right != NULL)
{
/* Right */
++prev;
*prev = cur;
4ec02: 274a 0004 movel %a2,%a3@(4)
4ec06: 2440 moveal %d0,%a2
cur = cur->avl.left;
}
else if (cur->avl.right != NULL)
{
/* Right */
++prev;
4ec08: 588b addql #4,%a3
*prev = NULL;
while (cur != NULL)
{
if (cur->dd == dd)
4ec0a: b9ea 0012 cmpal %a2@(18),%a4
4ec0e: 66ec bnes 4ebfc <rtems_bdbuf_purge_dev+0x68>
{
switch (cur->state)
4ec10: 700a moveq #10,%d0
4ec12: b0aa 001e cmpl %a2@(30),%d0
4ec16: 6434 bccs 4ec4c <rtems_bdbuf_purge_dev+0xb8> <== ALWAYS TAKEN
case RTEMS_BDBUF_STATE_ACCESS_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:
rtems_bdbuf_set_state (cur, RTEMS_BDBUF_STATE_ACCESS_PURGED);
break;
default:
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);
4ec18: 4878 0017 pea 17 <OPER2+0x3> <== NOT EXECUTED
4ec1c: 4eba df5a jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
/* Left */
++prev;
*prev = cur;
cur = cur->avl.left;
}
else if (cur->avl.right != NULL)
4ec20: 202a 000c movel %a2@(12),%d0
4ec24: 66dc bnes 4ec02 <rtems_bdbuf_purge_dev+0x6e>
*prev = cur;
cur = cur->avl.right;
}
else
{
while (*prev != NULL
4ec26: 2053 moveal %a3@,%a0
4ec28: 4a88 tstl %a0
4ec2a: 6700 00ae beqw 4ecda <rtems_bdbuf_purge_dev+0x146>
4ec2e: 224b moveal %a3,%a1
&& (cur == (*prev)->avl.right || (*prev)->avl.right == NULL))
4ec30: 2028 000c movel %a0@(12),%d0
4ec34: 2649 moveal %a1,%a3
4ec36: b5c0 cmpal %d0,%a2
4ec38: 6706 beqs 4ec40 <rtems_bdbuf_purge_dev+0xac>
4ec3a: 4a80 tstl %d0
4ec3c: 6600 0122 bnew 4ed60 <rtems_bdbuf_purge_dev+0x1cc>
*prev = cur;
cur = cur->avl.right;
}
else
{
while (*prev != NULL
4ec40: 2021 movel %a1@-,%d0
4ec42: 2448 moveal %a0,%a2
4ec44: 6700 0094 beqw 4ecda <rtems_bdbuf_purge_dev+0x146>
4ec48: 2040 moveal %d0,%a0
4ec4a: 60e4 bras 4ec30 <rtems_bdbuf_purge_dev+0x9c>
while (cur != NULL)
{
if (cur->dd == dd)
{
switch (cur->state)
4ec4c: 202a 001e movel %a2@(30),%d0
4ec50: d080 addl %d0,%d0
4ec52: 303b 0808 movew %pc@(4ec5c <rtems_bdbuf_purge_dev+0xc8>,%d0:l),%d0
4ec56: 48c0 extl %d0
4ec58: 4efb 0802 jmp %pc@(4ec5c <rtems_bdbuf_purge_dev+0xc8>,%d0:l)
4ec5c: ffa0 ffa0 cp1stl %sp,%a0@-,#8,#416 <== NOT EXECUTED
4ec60: 0028 .short 0x0028 <== NOT EXECUTED
4ec62: 0058 .short 0x0058 <== NOT EXECUTED
4ec64: 0058 .short 0x0058 <== NOT EXECUTED
4ec66: 0058 .short 0x0058 <== NOT EXECUTED
4ec68: ffa0 0020 cp1stl %d0,%a0@-,#1,#32 <== NOT EXECUTED
4ec6c: 0016 .short 0x0016 <== NOT EXECUTED
4ec6e: 006a .short 0x006a <== NOT EXECUTED
4ec70: ffa0 4879 cp1stl %d4,%a0@-,#5,#121 <== NOT EXECUTED
case RTEMS_BDBUF_STATE_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
break;
case RTEMS_BDBUF_STATE_SYNC:
rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);
4ec74: 0006 .short 0x0006
4ec76: 37bc .short 0x37bc
4ec78: 4e95 jsr %a5@
4ec7a: 588f addql #4,%sp
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4ec7c: 206a 0026 moveal %a2@(38),%a0
}
static void
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)
{
--bd->group->users;
4ec80: 53a8 000c subql #1,%a0@(12)
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4ec84: 2012 movel %a2@,%d0
previous = the_node->previous;
next->previous = previous;
4ec86: 2040 moveal %d0,%a0
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
4ec88: 226a 0004 moveal %a2@(4),%a1
next->previous = previous;
4ec8c: 2149 0004 movel %a1,%a0@(4)
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4ec90: 206e ff7c moveal %fp@(-132),%a0
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
previous->next = next;
4ec94: 2280 movel %d0,%a1@
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
4ec96: 2002 movel %d2,%d0
4ec98: 5880 addql #4,%d0
tail->previous = the_node;
4ec9a: 2d4a ff7c movel %a2,%fp@(-132)
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
4ec9e: 2480 movel %d0,%a2@
default:
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);
}
}
if (cur->avl.left != NULL)
4eca0: 202a 0008 movel %a2@(8),%d0
tail->previous = the_node;
old_last->next = the_node;
4eca4: 208a movel %a2,%a0@
the_node->previous = old_last;
4eca6: 2548 0004 movel %a0,%a2@(4)
4ecaa: 4a80 tstl %d0
4ecac: 6600 ff54 bnew 4ec02 <rtems_bdbuf_purge_dev+0x6e>
4ecb0: 6000 ff6e braw 4ec20 <rtems_bdbuf_purge_dev+0x8c>
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4ecb4: 7006 moveq #6,%d0
4ecb6: 2540 001e movel %d0,%a2@(30)
default:
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);
}
}
if (cur->avl.left != NULL)
4ecba: 202a 0008 movel %a2@(8),%d0
4ecbe: 6600 ff42 bnew 4ec02 <rtems_bdbuf_purge_dev+0x6e>
4ecc2: 6000 ff5c braw 4ec20 <rtems_bdbuf_purge_dev+0x8c>
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4ecc6: 720a moveq #10,%d1
default:
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);
}
}
if (cur->avl.left != NULL)
4ecc8: 202a 0008 movel %a2@(8),%d0
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4eccc: 2541 001e movel %d1,%a2@(30)
default:
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);
}
}
if (cur->avl.left != NULL)
4ecd0: 4a80 tstl %d0
4ecd2: 6600 ff2e bnew 4ec02 <rtems_bdbuf_purge_dev+0x6e>
4ecd6: 6000 ff48 braw 4ec20 <rtems_bdbuf_purge_dev+0x8c>
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4ecda: 2442 moveal %d2,%a2
4ecdc: 588a addql #4,%a2
4ecde: 47fa e59a lea %pc@(4d27a <rtems_bdbuf_discard_buffer.part.9>),%a3
}
static void
rtems_bdbuf_purge_list (rtems_chain_control *purge_list)
{
bool wake_buffer_waiters = false;
4ece2: 4200 clrb %d0
4ece4: 206e ff74 moveal %fp@(-140),%a0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
4ece8: b5c8 cmpal %a0,%a2
4ecea: 6726 beqs 4ed12 <rtems_bdbuf_purge_dev+0x17e>
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
4ecec: 2250 moveal %a0@,%a1
head->next = new_first;
4ecee: 2d49 ff74 movel %a1,%fp@(-140)
new_first->previous = head;
4ecf2: 2342 0004 movel %d2,%a1@(4)
while ((node = rtems_chain_get_unprotected (purge_list)) != NULL)
{
rtems_bdbuf_buffer *bd = (rtems_bdbuf_buffer *) node;
if (bd->waiters == 0)
4ecf6: 4aa8 0022 tstl %a0@(34)
4ecfa: 6628 bnes 4ed24 <rtems_bdbuf_purge_dev+0x190>
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4ecfc: 7001 moveq #1,%d0
4ecfe: 2140 001e movel %d0,%a0@(30)
4ed02: 2f08 movel %a0,%sp@-
4ed04: 4e93 jsr %a3@
4ed06: 206e ff74 moveal %fp@(-140),%a0
4ed0a: 588f addql #4,%sp
while ((node = rtems_chain_get_unprotected (purge_list)) != NULL)
{
rtems_bdbuf_buffer *bd = (rtems_bdbuf_buffer *) node;
if (bd->waiters == 0)
wake_buffer_waiters = true;
4ed0c: 7001 moveq #1,%d0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
4ed0e: b5c8 cmpal %a0,%a2
4ed10: 66da bnes 4ecec <rtems_bdbuf_purge_dev+0x158>
rtems_bdbuf_discard_buffer (bd);
}
if (wake_buffer_waiters)
4ed12: 4a00 tstb %d0
4ed14: 6618 bnes 4ed2e <rtems_bdbuf_purge_dev+0x19a>
rtems_chain_initialize_empty (&purge_list);
rtems_bdbuf_lock_cache ();
rtems_bdbuf_read_ahead_reset (dd);
rtems_bdbuf_gather_for_purge (&purge_list, dd);
rtems_bdbuf_purge_list (&purge_list);
rtems_bdbuf_unlock_cache ();
4ed16: 4eba dee4 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
}
4ed1a: 4cee 3c04 ff60 moveml %fp@(-160),%d2/%a2-%a5
4ed20: 4e5e unlk %fp
4ed22: 4e75 rts
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4ed24: 7201 moveq #1,%d1
4ed26: 2141 001e movel %d1,%a0@(30)
4ed2a: 2049 moveal %a1,%a0
4ed2c: 60ba bras 4ece8 <rtems_bdbuf_purge_dev+0x154>
rtems_bdbuf_discard_buffer (bd);
}
if (wake_buffer_waiters)
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4ed2e: 4879 0006 37c4 pea 637c4 <bdbuf_cache+0x70>
4ed34: 4eba e0bc jsr %pc@(4cdf2 <rtems_bdbuf_wake>)
4ed38: 588f addql #4,%sp
rtems_chain_initialize_empty (&purge_list);
rtems_bdbuf_lock_cache ();
rtems_bdbuf_read_ahead_reset (dd);
rtems_bdbuf_gather_for_purge (&purge_list, dd);
rtems_bdbuf_purge_list (&purge_list);
rtems_bdbuf_unlock_cache ();
4ed3a: 4eba dec0 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
}
4ed3e: 4cee 3c04 ff60 moveml %fp@(-160),%d2/%a2-%a5
4ed44: 4e5e unlk %fp
4ed46: 4e75 rts
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(
const Chain_Node *node
)
{
return (node->next == NULL) && (node->previous == NULL);
4ed48: 4a89 tstl %a1
4ed4a: 6700 fe8c beqw 4ebd8 <rtems_bdbuf_purge_dev+0x44>
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
4ed4e: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED
previous->next = next;
4ed52: 2288 movel %a0,%a1@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(
Chain_Node *node
)
{
node->next = node->previous = NULL;
4ed54: 42ac 0066 clrl %a4@(102) <== NOT EXECUTED
4ed58: 42ac 0062 clrl %a4@(98) <== NOT EXECUTED
4ed5c: 6000 fe7a braw 4ebd8 <rtems_bdbuf_purge_dev+0x44> <== NOT EXECUTED
cur = cur->avl.right;
}
else
{
while (*prev != NULL
&& (cur == (*prev)->avl.right || (*prev)->avl.right == NULL))
4ed60: 2440 moveal %d0,%a2
*prev = NULL;
while (cur != NULL)
{
if (cur->dd == dd)
4ed62: b9ea 0012 cmpal %a2@(18),%a4
4ed66: 6600 fe94 bnew 4ebfc <rtems_bdbuf_purge_dev+0x68>
4ed6a: 6000 fea4 braw 4ec10 <rtems_bdbuf_purge_dev+0x7c>
0004e70e <rtems_bdbuf_read>:
rtems_status_code
rtems_bdbuf_read (rtems_disk_device *dd,
rtems_blkdev_bnum block,
rtems_bdbuf_buffer **bd_ptr)
{
4e70e: 4e56 ffe4 linkw %fp,#-28
4e712: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@
4e716: 246e 0008 moveal %fp@(8),%a2
4e71a: 2c2e 000c movel %fp@(12),%d6
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_bdbuf_buffer *bd = NULL;
rtems_blkdev_bnum media_block;
rtems_bdbuf_lock_cache ();
4e71e: 4eba e490 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
rtems_blkdev_bnum block,
rtems_blkdev_bnum *media_block_ptr)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (block < dd->block_count)
4e722: bcaa 0028 cmpl %a2@(40),%d6
4e726: 651a bcss 4e742 <rtems_bdbuf_read+0x34> <== ALWAYS TAKEN
rtems_bdbuf_read (rtems_disk_device *dd,
rtems_blkdev_bnum block,
rtems_bdbuf_buffer **bd_ptr)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_bdbuf_buffer *bd = NULL;
4e728: 97cb subal %a3,%a3 <== NOT EXECUTED
*/
*media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
}
else
{
sc = RTEMS_INVALID_ID;
4e72a: 7404 moveq #4,%d2 <== NOT EXECUTED
}
rtems_bdbuf_check_read_ahead_trigger (dd, block);
}
rtems_bdbuf_unlock_cache ();
4e72c: 4eba e4ce jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
*bd_ptr = bd;
4e730: 206e 0010 moveal %fp@(16),%a0
return sc;
}
4e734: 2002 movel %d2,%d0
rtems_bdbuf_check_read_ahead_trigger (dd, block);
}
rtems_bdbuf_unlock_cache ();
*bd_ptr = bd;
4e736: 208b movel %a3,%a0@
return sc;
}
4e738: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3
4e73e: 4e5e unlk %fp
4e740: 4e75 rts
}
static rtems_blkdev_bnum
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{
if (dd->block_to_media_block_shift >= 0)
4e742: 202a 0030 movel %a2@(48),%d0
4e746: 6d00 0124 bltw 4e86c <rtems_bdbuf_read+0x15e>
return block << dd->block_to_media_block_shift;
4e74a: 2206 movel %d6,%d1
4e74c: e1a9 lsll %d0,%d1
{
if (rtems_bdbuf_tracer)
printf ("bdbuf:read: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n",
media_block + dd->start, block, (unsigned) dd->dev);
bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);
4e74e: d2aa 0018 addl %a2@(24),%d1
4e752: 2f01 movel %d1,%sp@-
4e754: 2f0a movel %a2,%sp@-
4e756: 4eba efb0 jsr %pc@(4d708 <rtems_bdbuf_get_buffer_for_access>)
switch (bd->state)
4e75a: 508f addql #8,%sp
4e75c: 7202 moveq #2,%d1
{
if (rtems_bdbuf_tracer)
printf ("bdbuf:read: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n",
media_block + dd->start, block, (unsigned) dd->dev);
bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);
4e75e: 2640 moveal %d0,%a3
switch (bd->state)
4e760: 202b 001e movel %a3@(30),%d0
4e764: b280 cmpl %d0,%d1
4e766: 6700 00f4 beqw 4e85c <rtems_bdbuf_read+0x14e>
4e76a: 123c 0007 moveb #7,%d1
4e76e: b280 cmpl %d0,%d1
4e770: 6712 beqs 4e784 <rtems_bdbuf_read+0x76>
4e772: 123c 0001 moveb #1,%d1
4e776: b280 cmpl %d0,%d1
4e778: 677a beqs 4e7f4 <rtems_bdbuf_read+0xe6> <== ALWAYS TAKEN
{
bd = NULL;
}
break;
default:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_4);
4e77a: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
4e77e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4e780: 4eba e444 jsr %pc@(4cbc6 <rtems_bdbuf_fatal_with_state>)<== NOT EXECUTED
case RTEMS_BDBUF_STATE_CACHED:
++dd->stats.read_hits;
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_CACHED);
break;
case RTEMS_BDBUF_STATE_MODIFIED:
++dd->stats.read_hits;
4e784: 52aa 0042 addql #1,%a2@(66)
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4e788: 7204 moveq #4,%d1
4e78a: 4282 clrl %d2
4e78c: 2741 001e movel %d1,%a3@(30)
static void
rtems_bdbuf_check_read_ahead_trigger (rtems_disk_device *dd,
rtems_blkdev_bnum block)
{
if (bdbuf_cache.read_ahead_task != 0
4e790: 2039 0006 37d4 movel 637d4 <bdbuf_cache+0x80>,%d0
4e796: 6794 beqs 4e72c <rtems_bdbuf_read+0x1e>
&& dd->read_ahead.trigger == block
4e798: bcaa 006a cmpl %a2@(106),%d6
4e79c: 668e bnes 4e72c <rtems_bdbuf_read+0x1e>
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(
const Chain_Node *node
)
{
return (node->next == NULL) && (node->previous == NULL);
4e79e: 4aaa 0062 tstl %a2@(98)
4e7a2: 6688 bnes 4e72c <rtems_bdbuf_read+0x1e> <== NEVER TAKEN
4e7a4: 4aaa 0066 tstl %a2@(102)
4e7a8: 6682 bnes 4e72c <rtems_bdbuf_read+0x1e> <== NEVER TAKEN
&& !rtems_bdbuf_is_read_ahead_active (dd))
{
rtems_status_code sc;
rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;
if (rtems_chain_is_empty (chain))
4e7aa: 223c 0006 37dc movel #407516,%d1
4e7b0: b2b9 0006 37d8 cmpl 637d8 <bdbuf_cache+0x84>,%d1
4e7b6: 6700 010c beqw 4e8c4 <rtems_bdbuf_read+0x1b6>
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4e7ba: 2079 0006 37e0 moveal 637e0 <bdbuf_cache+0x8c>,%a0
RTEMS_BDBUF_READ_AHEAD_WAKE_UP);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_RA_WAKE_UP);
}
rtems_chain_append_unprotected (chain, &dd->read_ahead.node);
4e7c0: 200a movel %a2,%d0
4e7c2: 0680 0000 0062 addil #98,%d0
the_node->next = tail;
4e7c8: 223c 0006 37dc movel #407516,%d1
tail->previous = the_node;
4e7ce: 23c0 0006 37e0 movel %d0,637e0 <bdbuf_cache+0x8c>
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
4e7d4: 2541 0062 movel %d1,%a2@(98)
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
4e7d8: 2548 0066 movel %a0,%a2@(102)
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
4e7dc: 2080 movel %d0,%a0@
}
rtems_bdbuf_check_read_ahead_trigger (dd, block);
}
rtems_bdbuf_unlock_cache ();
4e7de: 4eba e41c jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
*bd_ptr = bd;
4e7e2: 206e 0010 moveal %fp@(16),%a0
return sc;
}
4e7e6: 2002 movel %d2,%d0
rtems_bdbuf_check_read_ahead_trigger (dd, block);
}
rtems_bdbuf_unlock_cache ();
*bd_ptr = bd;
4e7e8: 208b movel %a3,%a0@
return sc;
}
4e7ea: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3
4e7f0: 4e5e unlk %fp
4e7f2: 4e75 rts
case RTEMS_BDBUF_STATE_MODIFIED:
++dd->stats.read_hits;
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
break;
case RTEMS_BDBUF_STATE_EMPTY:
++dd->stats.read_misses;
4e7f4: 52aa 0046 addql #1,%a2@(70)
static void
rtems_bdbuf_set_read_ahead_trigger (rtems_disk_device *dd,
rtems_blkdev_bnum block)
{
if (dd->read_ahead.trigger != block)
4e7f8: bcaa 006a cmpl %a2@(106),%d6
4e7fc: 672c beqs 4e82a <rtems_bdbuf_read+0x11c>
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(
const Chain_Node *node
)
{
return (node->next == NULL) && (node->previous == NULL);
4e7fe: 206a 0062 moveal %a2@(98),%a0
4e802: 4a88 tstl %a0
4e804: 6700 00a0 beqw 4e8a6 <rtems_bdbuf_read+0x198>
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
4e808: 226a 0066 moveal %a2@(102),%a1 <== NOT EXECUTED
next->previous = previous;
4e80c: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED
previous->next = next;
4e810: 2288 movel %a0,%a1@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(
Chain_Node *node
)
{
node->next = node->previous = NULL;
4e812: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED
4e816: 42aa 0062 clrl %a2@(98) <== NOT EXECUTED
{
rtems_bdbuf_read_ahead_cancel (dd);
dd->read_ahead.trigger = block + 1;
4e81a: 2006 movel %d6,%d0
dd->read_ahead.next = block + 2;
4e81c: 2206 movel %d6,%d1
rtems_blkdev_bnum block)
{
if (dd->read_ahead.trigger != block)
{
rtems_bdbuf_read_ahead_cancel (dd);
dd->read_ahead.trigger = block + 1;
4e81e: 5280 addql #1,%d0
dd->read_ahead.next = block + 2;
4e820: 5481 addql #2,%d1
rtems_blkdev_bnum block)
{
if (dd->read_ahead.trigger != block)
{
rtems_bdbuf_read_ahead_cancel (dd);
dd->read_ahead.trigger = block + 1;
4e822: 2540 006a movel %d0,%a2@(106)
dd->read_ahead.next = block + 2;
4e826: 2541 006e movel %d1,%a2@(110)
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
break;
case RTEMS_BDBUF_STATE_EMPTY:
++dd->stats.read_misses;
rtems_bdbuf_set_read_ahead_trigger (dd, block);
sc = rtems_bdbuf_execute_read_request (dd, bd, 1);
4e82a: 4878 0001 pea 1 <ADD>
4e82e: 2f0b movel %a3,%sp@-
4e830: 2f0a movel %a2,%sp@-
4e832: 4eba f736 jsr %pc@(4df6a <rtems_bdbuf_execute_read_request>)
if (sc == RTEMS_SUCCESSFUL)
4e836: 4fef 000c lea %sp@(12),%sp
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
break;
case RTEMS_BDBUF_STATE_EMPTY:
++dd->stats.read_misses;
rtems_bdbuf_set_read_ahead_trigger (dd, block);
sc = rtems_bdbuf_execute_read_request (dd, bd, 1);
4e83a: 2400 movel %d0,%d2
if (sc == RTEMS_SUCCESSFUL)
4e83c: 6662 bnes 4e8a0 <rtems_bdbuf_read+0x192>
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4e83e: 7003 moveq #3,%d0
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
4e840: 206b 0004 moveal %a3@(4),%a0
4e844: 2740 001e movel %d0,%a3@(30)
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4e848: 2253 moveal %a3@,%a1
previous = the_node->previous;
next->previous = previous;
4e84a: 2348 0004 movel %a0,%a1@(4)
previous->next = next;
4e84e: 2089 movel %a1,%a0@
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4e850: 206b 0026 moveal %a3@(38),%a0
}
static void
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)
{
++bd->group->users;
4e854: 52a8 000c addql #1,%a0@(12)
4e858: 6000 ff36 braw 4e790 <rtems_bdbuf_read+0x82>
bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);
switch (bd->state)
{
case RTEMS_BDBUF_STATE_CACHED:
++dd->stats.read_hits;
4e85c: 52aa 0042 addql #1,%a2@(66)
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4e860: 7003 moveq #3,%d0
4e862: 4282 clrl %d2
4e864: 2740 001e movel %d0,%a3@(30)
4e868: 6000 ff26 braw 4e790 <rtems_bdbuf_read+0x82>
/*
* Change the block number for the block size to the block number for the media
* block size. We have to use 64bit maths. There is no short cut here.
*/
return (rtems_blkdev_bnum)
((((uint64_t) block) * dd->block_size) / dd->media_block_size);
4e86c: 2a2a 0024 movel %a2@(36),%d5 <== NOT EXECUTED
4e870: 4284 clrl %d4 <== NOT EXECUTED
4e872: 4282 clrl %d2 <== NOT EXECUTED
4e874: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4e876: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4e878: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4e87a: 42a7 clrl %sp@- <== NOT EXECUTED
4e87c: 4eb9 0005 efa4 jsr 5efa4 <__muldi3> <== NOT EXECUTED
4e882: 262a 0020 movel %a2@(32),%d3 <== NOT EXECUTED
4e886: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e88a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e88c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e88e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4e890: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4e892: 4eb9 0005 f858 jsr 5f858 <__udivdi3> <== NOT EXECUTED
4e898: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e89c: 6000 feb0 braw 4e74e <rtems_bdbuf_read+0x40> <== NOT EXECUTED
rtems_chain_extract_unprotected (&bd->link);
rtems_bdbuf_group_obtain (bd);
}
else
{
bd = NULL;
4e8a0: 97cb subal %a3,%a3
4e8a2: 6000 feec braw 4e790 <rtems_bdbuf_read+0x82>
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(
const Chain_Node *node
)
{
return (node->next == NULL) && (node->previous == NULL);
4e8a6: 4aaa 0066 tstl %a2@(102)
4e8aa: 6700 ff6e beqw 4e81a <rtems_bdbuf_read+0x10c>
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
4e8ae: 226a 0066 moveal %a2@(102),%a1 <== NOT EXECUTED
next->previous = previous;
4e8b2: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED
previous->next = next;
4e8b6: 2288 movel %a0,%a1@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(
Chain_Node *node
)
{
node->next = node->previous = NULL;
4e8b8: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED
4e8bc: 42aa 0062 clrl %a2@(98) <== NOT EXECUTED
4e8c0: 6000 ff58 braw 4e81a <rtems_bdbuf_read+0x10c> <== NOT EXECUTED
rtems_status_code sc;
rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;
if (rtems_chain_is_empty (chain))
{
sc = rtems_event_send (bdbuf_cache.read_ahead_task,
4e8c4: 4878 0002 pea 2 <DOUBLE_FLOAT>
4e8c8: 2f00 movel %d0,%sp@-
4e8ca: 4eb9 0004 874c jsr 4874c <rtems_event_send>
RTEMS_BDBUF_READ_AHEAD_WAKE_UP);
if (sc != RTEMS_SUCCESSFUL)
4e8d0: 508f addql #8,%sp
4e8d2: 4a80 tstl %d0
4e8d4: 6700 fee4 beqw 4e7ba <rtems_bdbuf_read+0xac>
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_RA_WAKE_UP);
4e8d8: 4878 0007 pea 7 <TRUNCDFSF> <== NOT EXECUTED
4e8dc: 4eba e29a jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004e070 <rtems_bdbuf_read_ahead_task>:
return sc;
}
static rtems_task
rtems_bdbuf_read_ahead_task (rtems_task_argument arg)
{
4e070: 4e56 ffd0 linkw %fp,#-48
4e074: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;
while (bdbuf_cache.read_ahead_enabled)
4e078: 4a39 0006 37e4 tstb 637e4 <bdbuf_cache+0x90>
4e07e: 6772 beqs 4e0f2 <rtems_bdbuf_read_ahead_task+0x82><== NEVER TAKEN
rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);
if (bd != NULL)
{
uint32_t transfer_count = dd->block_count - block;
uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
4e080: 2439 0006 0c12 movel 60c12 <rtems_bdbuf_configuration>,%d2
if (transfer_count >= max_transfer_count)
{
transfer_count = max_transfer_count;
dd->read_ahead.trigger = block + transfer_count / 2;
4e086: 2a02 movel %d2,%d5
4e088: 4bfa eb72 lea %pc@(4cbfc <rtems_bdbuf_unlock_cache>),%a5
rtems_chain_set_off_chain (&dd->read_ahead.node);
if (sc == RTEMS_SUCCESSFUL)
{
rtems_bdbuf_buffer *bd =
4e08c: 47fa f622 lea %pc@(4d6b0 <rtems_bdbuf_get_buffer_for_read_ahead>),%a3
{
dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
}
++dd->stats.read_ahead_transfers;
rtems_bdbuf_execute_read_request (dd, bd, transfer_count);
4e090: 49fa fed8 lea %pc@(4df6a <rtems_bdbuf_execute_read_request>),%a4
uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
if (transfer_count >= max_transfer_count)
{
transfer_count = max_transfer_count;
dd->read_ahead.trigger = block + transfer_count / 2;
4e094: e28d lsrl #1,%d5
while (bdbuf_cache.read_ahead_enabled)
{
rtems_chain_node *node;
rtems_bdbuf_wait_for_event (RTEMS_BDBUF_READ_AHEAD_WAKE_UP);
4e096: 4878 0002 pea 2 <DOUBLE_FLOAT>
4e09a: 4eba ec8e jsr %pc@(4cd2a <rtems_bdbuf_wait_for_event>)
rtems_bdbuf_lock_cache ();
4e09e: 4eba eb10 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
while ((node = rtems_chain_get_unprotected (chain)) != NULL)
4e0a2: 588f addql #4,%sp
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4e0a4: 2479 0006 37d8 moveal 637d8 <bdbuf_cache+0x84>,%a2
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
4e0aa: b5fc 0006 37dc cmpal #407516,%a2
4e0b0: 6736 beqs 4e0e8 <rtems_bdbuf_read_ahead_task+0x78>
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
4e0b2: 2052 moveal %a2@,%a0
head->next = new_first;
new_first->previous = head;
4e0b4: 203c 0006 37d8 movel #407512,%d0
{
rtems_disk_device *dd = (rtems_disk_device *)
((char *) node - offsetof (rtems_disk_device, read_ahead.node));
rtems_blkdev_bnum block = dd->read_ahead.next;
4e0ba: 262a 000c movel %a2@(12),%d3
4e0be: 2140 0004 movel %d0,%a0@(4)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
4e0c2: 23c8 0006 37d8 movel %a0,637d8 <bdbuf_cache+0x84>
rtems_blkdev_bnum block,
rtems_blkdev_bnum *media_block_ptr)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (block < dd->block_count)
4e0c8: b6aa ffc6 cmpl %a2@(-58),%d3
4e0cc: 6536 bcss 4e104 <rtems_bdbuf_read_ahead_task+0x94>
rtems_bdbuf_execute_read_request (dd, bd, transfer_count);
}
}
else
{
dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
4e0ce: 72ff moveq #-1,%d1
*/
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(
Chain_Node *node
)
{
node->next = node->previous = NULL;
4e0d0: 42aa 0004 clrl %a2@(4)
4e0d4: 4292 clrl %a2@
4e0d6: 2541 0008 movel %d1,%a2@(8)
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4e0da: 2479 0006 37d8 moveal 637d8 <bdbuf_cache+0x84>,%a2
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
4e0e0: b5fc 0006 37dc cmpal #407516,%a2
4e0e6: 66ca bnes 4e0b2 <rtems_bdbuf_read_ahead_task+0x42><== NEVER TAKEN
}
}
rtems_bdbuf_unlock_cache ();
4e0e8: 4e95 jsr %a5@
static rtems_task
rtems_bdbuf_read_ahead_task (rtems_task_argument arg)
{
rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;
while (bdbuf_cache.read_ahead_enabled)
4e0ea: 4a39 0006 37e4 tstb 637e4 <bdbuf_cache+0x90>
4e0f0: 66a4 bnes 4e096 <rtems_bdbuf_read_ahead_task+0x26><== ALWAYS TAKEN
}
rtems_bdbuf_unlock_cache ();
}
rtems_task_delete (RTEMS_SELF);
4e0f2: 42ae 0008 clrl %fp@(8) <== NOT EXECUTED
}
4e0f6: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4e0fc: 4e5e unlk %fp <== NOT EXECUTED
}
rtems_bdbuf_unlock_cache ();
}
rtems_task_delete (RTEMS_SELF);
4e0fe: 4ef9 0004 9014 jmp 49014 <rtems_task_delete> <== NOT EXECUTED
}
static rtems_blkdev_bnum
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{
if (dd->block_to_media_block_shift >= 0)
4e104: 202a ffce movel %a2@(-50),%d0
4e108: 6d6c blts 4e176 <rtems_bdbuf_read_ahead_task+0x106><== NEVER TAKEN
return block << dd->block_to_media_block_shift;
4e10a: 2203 movel %d3,%d1
4e10c: e1a9 lsll %d0,%d1
/*
* Compute the media block number. Drivers work with media block number not
* the block number a BD may have as this depends on the block size set by
* the user.
*/
*media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
4e10e: d2aa ffb6 addl %a2@(-74),%d1
rtems_bdbuf_wait_for_event (RTEMS_BDBUF_READ_AHEAD_WAKE_UP);
rtems_bdbuf_lock_cache ();
while ((node = rtems_chain_get_unprotected (chain)) != NULL)
{
rtems_disk_device *dd = (rtems_disk_device *)
4e112: 280a movel %a2,%d4
4e114: 0684 ffff ff9e addil #-98,%d4
*/
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(
Chain_Node *node
)
{
node->next = node->previous = NULL;
4e11a: 42aa 0004 clrl %a2@(4)
4e11e: 4292 clrl %a2@
rtems_chain_set_off_chain (&dd->read_ahead.node);
if (sc == RTEMS_SUCCESSFUL)
{
rtems_bdbuf_buffer *bd =
4e120: 2f01 movel %d1,%sp@-
4e122: 2f04 movel %d4,%sp@-
4e124: 4e93 jsr %a3@
rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);
if (bd != NULL)
4e126: 508f addql #8,%sp
4e128: 4a80 tstl %d0
4e12a: 6700 ff78 beqw 4e0a4 <rtems_bdbuf_read_ahead_task+0x34>
{
uint32_t transfer_count = dd->block_count - block;
4e12e: 222a ffc6 movel %a2@(-58),%d1
4e132: 9283 subl %d3,%d1
uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
if (transfer_count >= max_transfer_count)
4e134: b481 cmpl %d1,%d2
4e136: 6224 bhis 4e15c <rtems_bdbuf_read_ahead_task+0xec>
{
transfer_count = max_transfer_count;
dd->read_ahead.trigger = block + transfer_count / 2;
4e138: 2205 movel %d5,%d1
4e13a: d283 addl %d3,%d1
dd->read_ahead.next = block + transfer_count;
4e13c: d682 addl %d2,%d3
else
{
dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
}
++dd->stats.read_ahead_transfers;
4e13e: 52aa ffe8 addql #1,%a2@(-24)
uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
if (transfer_count >= max_transfer_count)
{
transfer_count = max_transfer_count;
dd->read_ahead.trigger = block + transfer_count / 2;
4e142: 2541 0008 movel %d1,%a2@(8)
dd->read_ahead.next = block + transfer_count;
4e146: 2202 movel %d2,%d1
4e148: 2543 000c movel %d3,%a2@(12)
{
dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
}
++dd->stats.read_ahead_transfers;
rtems_bdbuf_execute_read_request (dd, bd, transfer_count);
4e14c: 2f01 movel %d1,%sp@-
4e14e: 2f00 movel %d0,%sp@-
4e150: 2f04 movel %d4,%sp@-
4e152: 4e94 jsr %a4@
4e154: 4fef 000c lea %sp@(12),%sp
4e158: 6000 ff4a braw 4e0a4 <rtems_bdbuf_read_ahead_task+0x34>
dd->read_ahead.trigger = block + transfer_count / 2;
dd->read_ahead.next = block + transfer_count;
}
else
{
dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
4e15c: 76ff moveq #-1,%d3
}
++dd->stats.read_ahead_transfers;
4e15e: 52aa ffe8 addql #1,%a2@(-24)
dd->read_ahead.trigger = block + transfer_count / 2;
dd->read_ahead.next = block + transfer_count;
}
else
{
dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
4e162: 2543 0008 movel %d3,%a2@(8)
}
++dd->stats.read_ahead_transfers;
rtems_bdbuf_execute_read_request (dd, bd, transfer_count);
4e166: 2f01 movel %d1,%sp@-
4e168: 2f00 movel %d0,%sp@-
4e16a: 2f04 movel %d4,%sp@-
4e16c: 4e94 jsr %a4@
4e16e: 4fef 000c lea %sp@(12),%sp
4e172: 6000 ff30 braw 4e0a4 <rtems_bdbuf_read_ahead_task+0x34>
/*
* Change the block number for the block size to the block number for the media
* block size. We have to use 64bit maths. There is no short cut here.
*/
return (rtems_blkdev_bnum)
((((uint64_t) block) * dd->block_size) / dd->media_block_size);
4e176: 2e2a ffc2 movel %a2@(-62),%d7 <== NOT EXECUTED
4e17a: 4286 clrl %d6 <== NOT EXECUTED
4e17c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e17e: 42a7 clrl %sp@- <== NOT EXECUTED
4e180: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4e182: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4e184: 4eb9 0005 efa4 jsr 5efa4 <__muldi3> <== NOT EXECUTED
4e18a: 206a ffbe moveal %a2@(-66),%a0 <== NOT EXECUTED
4e18e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e192: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED
4e196: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4e19a: 91c8 subal %a0,%a0 <== NOT EXECUTED
4e19c: 2d48 fff8 movel %a0,%fp@(-8) <== NOT EXECUTED
4e1a0: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
4e1a4: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4e1a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4e1a8: 4eb9 0005 f858 jsr 5f858 <__udivdi3> <== NOT EXECUTED
4e1ae: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e1b2: 6000 ff5a braw 4e10e <rtems_bdbuf_read_ahead_task+0x9e><== NOT EXECUTED
0004e8e0 <rtems_bdbuf_release>:
return RTEMS_SUCCESSFUL;
}
rtems_status_code
rtems_bdbuf_release (rtems_bdbuf_buffer *bd)
{
4e8e0: 4e56 0000 linkw %fp,#0
4e8e4: 2f0a movel %a2,%sp@-
4e8e6: 246e 0008 moveal %fp@(8),%a2
}
static rtems_status_code
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{
if (bd == NULL)
4e8ea: 4a8a tstl %a2
4e8ec: 6722 beqs 4e910 <rtems_bdbuf_release+0x30> <== NEVER TAKEN
if (rtems_bdbuf_tracer)
{
printf ("bdbuf:%s: %" PRIu32 "\n", kind, bd->block);
rtems_bdbuf_show_users (kind, bd);
}
rtems_bdbuf_lock_cache();
4e8ee: 4eba e2c0 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release");
if (sc != RTEMS_SUCCESSFUL)
return sc;
switch (bd->state)
4e8f2: 202a 001e movel %a2@(30),%d0
4e8f6: 7204 moveq #4,%d1
4e8f8: b280 cmpl %d0,%d1
4e8fa: 673a beqs 4e936 <rtems_bdbuf_release+0x56>
4e8fc: 651c bcss 4e91a <rtems_bdbuf_release+0x3a>
4e8fe: 123c 0003 moveb #3,%d1
4e902: b280 cmpl %d0,%d1
4e904: 6740 beqs 4e946 <rtems_bdbuf_release+0x66> <== ALWAYS TAKEN
break;
case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:
rtems_bdbuf_add_to_modified_list_after_access (bd);
break;
default:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_0);
4e906: 4878 000e pea e <OPER1+0x2> <== NOT EXECUTED
4e90a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4e90c: 4eba e2b8 jsr %pc@(4cbc6 <rtems_bdbuf_fatal_with_state>)<== NOT EXECUTED
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
return RTEMS_SUCCESSFUL;
}
4e910: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
static rtems_status_code
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{
if (bd == NULL)
return RTEMS_INVALID_ADDRESS;
4e914: 7009 moveq #9,%d0 <== NOT EXECUTED
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
return RTEMS_SUCCESSFUL;
}
4e916: 4e5e unlk %fp <== NOT EXECUTED
4e918: 4e75 rts <== NOT EXECUTED
sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release");
if (sc != RTEMS_SUCCESSFUL)
return sc;
switch (bd->state)
4e91a: 7206 moveq #6,%d1
4e91c: b280 cmpl %d0,%d1
4e91e: 65e6 bcss 4e906 <rtems_bdbuf_release+0x26> <== NEVER TAKEN
case RTEMS_BDBUF_STATE_ACCESS_CACHED:
rtems_bdbuf_add_to_lru_list_after_access (bd);
break;
case RTEMS_BDBUF_STATE_ACCESS_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
rtems_bdbuf_discard_buffer_after_access (bd);
4e920: 2f0a movel %a2,%sp@-
4e922: 4eba e988 jsr %pc@(4d2ac <rtems_bdbuf_discard_buffer_after_access>)
break;
4e926: 588f addql #4,%sp
}
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
4e928: 4eba e2d2 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
return RTEMS_SUCCESSFUL;
4e92c: 4280 clrl %d0
}
4e92e: 246e fffc moveal %fp@(-4),%a2
4e932: 4e5e unlk %fp
4e934: 4e75 rts
case RTEMS_BDBUF_STATE_ACCESS_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
rtems_bdbuf_discard_buffer_after_access (bd);
break;
case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:
rtems_bdbuf_add_to_modified_list_after_access (bd);
4e936: 2f0a movel %a2,%sp@-
4e938: 4eba e4e0 jsr %pc@(4ce1a <rtems_bdbuf_add_to_modified_list_after_access>)
break;
4e93c: 588f addql #4,%sp
}
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
4e93e: 4eba e2bc jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
return RTEMS_SUCCESSFUL;
4e942: 4280 clrl %d0
4e944: 60e8 bras 4e92e <rtems_bdbuf_release+0x4e>
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4e946: 206a 0026 moveal %a2@(38),%a0
}
static void
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)
{
--bd->group->users;
4e94a: 53a8 000c subql #1,%a0@(12)
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4e94e: 7002 moveq #2,%d0
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4e950: 2079 0006 3798 moveal 63798 <bdbuf_cache+0x44>,%a0
4e956: 2540 001e movel %d0,%a2@(30)
the_node->next = tail;
4e95a: 24bc 0006 3794 movel #407444,%a2@
tail->previous = the_node;
4e960: 23ca 0006 3798 movel %a2,63798 <bdbuf_cache+0x44>
old_last->next = the_node;
4e966: 208a movel %a2,%a0@
the_node->previous = old_last;
4e968: 2548 0004 movel %a0,%a2@(4)
rtems_bdbuf_add_to_lru_list_after_access (rtems_bdbuf_buffer *bd)
{
rtems_bdbuf_group_release (bd);
rtems_bdbuf_make_cached_and_add_to_lru_list (bd);
if (bd->waiters)
4e96c: 4aaa 0022 tstl %a2@(34)
4e970: 6614 bnes 4e986 <rtems_bdbuf_release+0xa6>
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
else
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4e972: 4879 0006 37c4 pea 637c4 <bdbuf_cache+0x70>
4e978: 4eba e478 jsr %pc@(4cdf2 <rtems_bdbuf_wake>)
4e97c: 588f addql #4,%sp
}
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
4e97e: 4eba e27c jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
return RTEMS_SUCCESSFUL;
4e982: 4280 clrl %d0
4e984: 60a8 bras 4e92e <rtems_bdbuf_release+0x4e>
{
rtems_bdbuf_group_release (bd);
rtems_bdbuf_make_cached_and_add_to_lru_list (bd);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
4e986: 4879 0006 37b4 pea 637b4 <bdbuf_cache+0x60>
4e98c: 4eba e464 jsr %pc@(4cdf2 <rtems_bdbuf_wake>)
4e990: 588f addql #4,%sp
}
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
4e992: 4eba e268 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
return RTEMS_SUCCESSFUL;
4e996: 4280 clrl %d0
4e998: 6094 bras 4e92e <rtems_bdbuf_release+0x4e>
0004e99a <rtems_bdbuf_release_modified>:
}
rtems_status_code
rtems_bdbuf_release_modified (rtems_bdbuf_buffer *bd)
{
4e99a: 4e56 0000 linkw %fp,#0
4e99e: 2f0a movel %a2,%sp@-
4e9a0: 246e 0008 moveal %fp@(8),%a2
}
static rtems_status_code
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{
if (bd == NULL)
4e9a4: 4a8a tstl %a2
4e9a6: 674e beqs 4e9f6 <rtems_bdbuf_release_modified+0x5c><== NEVER TAKEN
if (rtems_bdbuf_tracer)
{
printf ("bdbuf:%s: %" PRIu32 "\n", kind, bd->block);
rtems_bdbuf_show_users (kind, bd);
}
rtems_bdbuf_lock_cache();
4e9a8: 4eba e206 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release modified");
if (sc != RTEMS_SUCCESSFUL)
return sc;
switch (bd->state)
4e9ac: 202a 001e movel %a2@(30),%d0
4e9b0: 7203 moveq #3,%d1
4e9b2: b280 cmpl %d0,%d1
4e9b4: 630a blss 4e9c0 <rtems_bdbuf_release_modified+0x26><== ALWAYS TAKEN
break;
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
rtems_bdbuf_discard_buffer_after_access (bd);
break;
default:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_6);
4e9b6: 4878 0012 pea 12 <INVALID_OPERATION+0x2> <== NOT EXECUTED
4e9ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4e9bc: 4eba e208 jsr %pc@(4cbc6 <rtems_bdbuf_fatal_with_state>)<== NOT EXECUTED
sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release modified");
if (sc != RTEMS_SUCCESSFUL)
return sc;
switch (bd->state)
4e9c0: 123c 0005 moveb #5,%d1
4e9c4: b280 cmpl %d0,%d1
4e9c6: 641e bccs 4e9e6 <rtems_bdbuf_release_modified+0x4c>
4e9c8: 123c 0006 moveb #6,%d1
4e9cc: b280 cmpl %d0,%d1
4e9ce: 66e6 bnes 4e9b6 <rtems_bdbuf_release_modified+0x1c><== NEVER TAKEN
case RTEMS_BDBUF_STATE_ACCESS_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:
rtems_bdbuf_add_to_modified_list_after_access (bd);
break;
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
rtems_bdbuf_discard_buffer_after_access (bd);
4e9d0: 2f0a movel %a2,%sp@-
4e9d2: 4eba e8d8 jsr %pc@(4d2ac <rtems_bdbuf_discard_buffer_after_access>)
break;
4e9d6: 588f addql #4,%sp
}
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
4e9d8: 4eba e222 jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
return RTEMS_SUCCESSFUL;
4e9dc: 4280 clrl %d0
}
4e9de: 246e fffc moveal %fp@(-4),%a2
4e9e2: 4e5e unlk %fp
4e9e4: 4e75 rts
switch (bd->state)
{
case RTEMS_BDBUF_STATE_ACCESS_CACHED:
case RTEMS_BDBUF_STATE_ACCESS_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:
rtems_bdbuf_add_to_modified_list_after_access (bd);
4e9e6: 2f0a movel %a2,%sp@-
4e9e8: 4eba e430 jsr %pc@(4ce1a <rtems_bdbuf_add_to_modified_list_after_access>)
break;
4e9ec: 588f addql #4,%sp
}
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
4e9ee: 4eba e20c jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
return RTEMS_SUCCESSFUL;
4e9f2: 4280 clrl %d0
4e9f4: 60e8 bras 4e9de <rtems_bdbuf_release_modified+0x44>
}
4e9f6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
static rtems_status_code
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{
if (bd == NULL)
return RTEMS_INVALID_ADDRESS;
4e9fa: 7009 moveq #9,%d0 <== NOT EXECUTED
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
return RTEMS_SUCCESSFUL;
}
4e9fc: 4e5e unlk %fp <== NOT EXECUTED
0004cf68 <rtems_bdbuf_remove_from_tree>:
return bdbuf_cache.buffer_waiters.count;
}
static void
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)
{
4cf68: 4e56 ff68 linkw %fp,#-152
4cf6c: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
rtems_bdbuf_buffer* buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];
rtems_bdbuf_buffer** buf_prev = buf_stack;
bool modified = false;
memset (buf_stack, 0, sizeof(buf_stack));
4cf70: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b>
4cf74: 260e movel %fp,%d3
4cf76: 0683 ffff ff80 addil #-128,%d3
return bdbuf_cache.buffer_waiters.count;
}
static void
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)
{
4cf7c: 266e 0008 moveal %fp@(8),%a3
rtems_bdbuf_buffer* buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];
rtems_bdbuf_buffer** buf_prev = buf_stack;
bool modified = false;
memset (buf_stack, 0, sizeof(buf_stack));
4cf80: 42a7 clrl %sp@-
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4cf82: 242b 0012 movel %a3@(18),%d2
4cf86: 286b 0016 moveal %a3@(22),%a4
const rtems_bdbuf_buffer* node)
{
const rtems_disk_device *dd = node->dd;
rtems_blkdev_bnum block = node->block;
rtems_bdbuf_buffer* p = *root;
4cf8a: 2479 0006 378c moveal 6378c <bdbuf_cache+0x38>,%a2
rtems_bdbuf_buffer* buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];
rtems_bdbuf_buffer** buf_prev = buf_stack;
bool modified = false;
memset (buf_stack, 0, sizeof(buf_stack));
4cf90: 2f03 movel %d3,%sp@-
4cf92: 4eb9 0005 3244 jsr 53244 <memset>
while (p != NULL)
4cf98: 4fef 000c lea %sp@(12),%sp
4cf9c: 4a8a tstl %a2
4cf9e: 6722 beqs 4cfc2 <rtems_bdbuf_remove_from_tree+0x5a><== NEVER TAKEN
4cfa0: 2043 moveal %d3,%a0
4cfa2: 2248 moveal %a0,%a1
{
*buf_prev++ = p;
if (((uintptr_t) p->dd < (uintptr_t) dd)
4cfa4: 202a 0012 movel %a2@(18),%d0
memset (buf_stack, 0, sizeof(buf_stack));
while (p != NULL)
{
*buf_prev++ = p;
4cfa8: 20ca movel %a2,%a0@+
if (((uintptr_t) p->dd < (uintptr_t) dd)
4cfaa: b480 cmpl %d0,%d2
4cfac: 6200 0108 bhiw 4d0b6 <rtems_bdbuf_remove_from_tree+0x14e>
|| ((p->dd == dd) && (p->block < block)))
4cfb0: b082 cmpl %d2,%d0
4cfb2: 671a beqs 4cfce <rtems_bdbuf_remove_from_tree+0x66><== ALWAYS TAKEN
p->avl.cache = 1;
p = p->avl.right;
}
else if ((p->dd != dd) || (p->block != block))
{
p->avl.cache = -1;
4cfb4: 50c1 st %d1
4cfb6: 1541 0010 moveb %d1,%a2@(16)
p = p->avl.left;
4cfba: 246a 0008 moveal %a2@(8),%a2
bool modified = false;
memset (buf_stack, 0, sizeof(buf_stack));
while (p != NULL)
4cfbe: 4a8a tstl %a2
4cfc0: 66e0 bnes 4cfa2 <rtems_bdbuf_remove_from_tree+0x3a><== ALWAYS TAKEN
static void
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)
{
if (rtems_bdbuf_avl_remove (&bdbuf_cache.tree, bd) != 0)
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_TREE_RM);
4cfc2: 4878 001b pea 1b <OPER2+0x7> <== NOT EXECUTED
4cfc6: 2f2b 001e movel %a3@(30),%sp@- <== NOT EXECUTED
4cfca: 4eba fbfa jsr %pc@(4cbc6 <rtems_bdbuf_fatal_with_state>)<== NOT EXECUTED
while (p != NULL)
{
*buf_prev++ = p;
if (((uintptr_t) p->dd < (uintptr_t) dd)
|| ((p->dd == dd) && (p->block < block)))
4cfce: 202a 0016 movel %a2@(22),%d0
4cfd2: b08c cmpl %a4,%d0
4cfd4: 6500 00e0 bcsw 4d0b6 <rtems_bdbuf_remove_from_tree+0x14e>
{
p->avl.cache = 1;
p = p->avl.right;
}
else if ((p->dd != dd) || (p->block != block))
4cfd8: 66da bnes 4cfb4 <rtems_bdbuf_remove_from_tree+0x4c>
}
q = p;
buf_prev--;
if (buf_prev > buf_stack)
4cfda: b689 cmpl %a1,%d3
4cfdc: 6400 0296 bccw 4d274 <rtems_bdbuf_remove_from_tree+0x30c>
{
p = *(buf_prev - 1);
4cfe0: 2428 fff8 movel %a0@(-8),%d2
{
p = NULL;
}
/* at this moment q - is a node to delete, p is q's parent */
if (q->avl.right == NULL)
4cfe4: 2a6a 000c moveal %a2@(12),%a5
4cfe8: 4a8d tstl %a5
4cfea: 6700 0256 beqw 4d242 <rtems_bdbuf_remove_from_tree+0x2da>
{
rtems_bdbuf_buffer **t;
r = q->avl.right;
if (r->avl.left == NULL)
4cfee: 266d 0008 moveal %a5@(8),%a3
4cff2: 4a8b tstl %a3
4cff4: 6700 0260 beqw 4d256 <rtems_bdbuf_remove_from_tree+0x2ee>
4cff8: 2208 movel %a0,%d1
4cffa: 284d moveal %a5,%a4
t = buf_prev++;
s = r;
while (s->avl.left != NULL)
{
*buf_prev++ = r = s;
4cffc: 2241 moveal %d1,%a1
s = r->avl.left;
r->avl.cache = -1;
4cffe: 50c0 st %d0
t = buf_prev++;
s = r;
while (s->avl.left != NULL)
{
*buf_prev++ = r = s;
4d000: 22cc movel %a4,%a1@+
4d002: 2209 movel %a1,%d1
s = r->avl.left;
r->avl.cache = -1;
4d004: 1940 0010 moveb %d0,%a4@(16)
else
{
t = buf_prev++;
s = r;
while (s->avl.left != NULL)
4d008: 202b 0008 movel %a3@(8),%d0
4d00c: 6716 beqs 4d024 <rtems_bdbuf_remove_from_tree+0xbc>
4d00e: 284b moveal %a3,%a4
4d010: 2640 moveal %d0,%a3
{
*buf_prev++ = r = s;
4d012: 2241 moveal %d1,%a1
s = r->avl.left;
r->avl.cache = -1;
4d014: 50c0 st %d0
t = buf_prev++;
s = r;
while (s->avl.left != NULL)
{
*buf_prev++ = r = s;
4d016: 22cc movel %a4,%a1@+
4d018: 2209 movel %a1,%d1
s = r->avl.left;
r->avl.cache = -1;
4d01a: 1940 0010 moveb %d0,%a4@(16)
else
{
t = buf_prev++;
s = r;
while (s->avl.left != NULL)
4d01e: 202b 0008 movel %a3@(8),%d0
4d022: 66ea bnes 4d00e <rtems_bdbuf_remove_from_tree+0xa6>
r->avl.left = s->avl.right;
s->avl.right = q->avl.right;
s->avl.bal = q->avl.bal;
s->avl.cache = 1;
*t = q = s;
4d024: 214b fffc movel %a3,%a0@(-4)
*buf_prev++ = r = s;
s = r->avl.left;
r->avl.cache = -1;
}
s->avl.left = q->avl.left;
4d028: 276a 0008 0008 movel %a2@(8),%a3@(8)
r->avl.left = s->avl.right;
4d02e: 296b 000c 0008 movel %a3@(12),%a4@(8)
s->avl.right = q->avl.right;
s->avl.bal = q->avl.bal;
s->avl.cache = 1;
4d034: 7201 moveq #1,%d1
}
s->avl.left = q->avl.left;
r->avl.left = s->avl.right;
s->avl.right = q->avl.right;
s->avl.bal = q->avl.bal;
4d036: 176a 0011 0011 moveb %a2@(17),%a3@(17)
r->avl.cache = -1;
}
s->avl.left = q->avl.left;
r->avl.left = s->avl.right;
s->avl.right = q->avl.right;
4d03c: 274d 000c movel %a5,%a3@(12)
s->avl.bal = q->avl.bal;
s->avl.cache = 1;
4d040: 1741 0010 moveb %d1,%a3@(16)
*t = q = s;
}
}
if (p != NULL)
4d044: 4a82 tstl %d2
4d046: 6700 01f0 beqw 4d238 <rtems_bdbuf_remove_from_tree+0x2d0>
{
if (p->avl.cache == -1)
4d04a: 2042 moveal %d2,%a0
4d04c: 72ff moveq #-1,%d1
4d04e: 1028 0010 moveb %a0@(16),%d0
4d052: 49c0 extbl %d0
4d054: b280 cmpl %d0,%d1
4d056: 6700 0192 beqw 4d1ea <rtems_bdbuf_remove_from_tree+0x282>
{
p->avl.left = q;
}
else
{
p->avl.right = q;
4d05a: 2042 moveal %d2,%a0
4d05c: 214b 000c movel %a3,%a0@(12)
modified = true;
while (modified)
{
if (buf_prev > buf_stack)
4d060: b689 cmpl %a1,%d3
4d062: 6448 bccs 4d0ac <rtems_bdbuf_remove_from_tree+0x144>
{
return bdbuf_cache.buffer_waiters.count;
}
static void
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)
4d064: 7003 moveq #3,%d0
4d066: 9083 subl %d3,%d0
4d068: 2600 movel %d0,%d3
4d06a: 72fc moveq #-4,%d1
4d06c: 2061 moveal %a1@-,%a0
4d06e: d689 addl %a1,%d3
4d070: 2409 movel %a1,%d2
4d072: 1028 0010 moveb %a0@(16),%d0
4d076: c681 andl %d1,%d3
4d078: 49c0 extbl %d0
4d07a: 9483 subl %d3,%d2
else
{
break;
}
if (p->avl.cache == -1)
4d07c: 76ff moveq #-1,%d3
4d07e: b680 cmpl %d0,%d3
4d080: 6770 beqs 4d0f2 <rtems_bdbuf_remove_from_tree+0x18a>
}
}
else
{
/* rebalance right branch */
switch (p->avl.bal)
4d082: 1028 0011 moveb %a0@(17),%d0
4d086: 6642 bnes 4d0ca <rtems_bdbuf_remove_from_tree+0x162>
case +1:
p->avl.bal = 0;
break;
case 0:
p->avl.bal = -1;
4d088: 2448 moveal %a0,%a2
4d08a: 50c1 st %d1
4d08c: 1141 0011 moveb %d1,%a0@(17)
modified = false;
4d090: 4201 clrb %d1
default:
break;
}
}
if (buf_prev > buf_stack)
4d092: b489 cmpl %a1,%d2
4d094: 674c beqs 4d0e2 <rtems_bdbuf_remove_from_tree+0x17a>
{
q = *(buf_prev - 1);
4d096: 2061 moveal %a1@-,%a0
if (q->avl.cache == -1)
4d098: 76ff moveq #-1,%d3
4d09a: 1028 0010 moveb %a0@(16),%d0
4d09e: 49c0 extbl %d0
4d0a0: b680 cmpl %d0,%d3
4d0a2: 6760 beqs 4d104 <rtems_bdbuf_remove_from_tree+0x19c>
{
q->avl.left = p;
}
else
{
q->avl.right = p;
4d0a4: 214a 000c movel %a2,%a0@(12)
*root = q;
}
modified = true;
while (modified)
4d0a8: 4a01 tstb %d1
4d0aa: 66d0 bnes 4d07c <rtems_bdbuf_remove_from_tree+0x114>
static void
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)
{
if (rtems_bdbuf_avl_remove (&bdbuf_cache.tree, bd) != 0)
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_TREE_RM);
}
4d0ac: 4cee 3c0c ff68 moveml %fp@(-152),%d2-%d3/%a2-%a5
4d0b2: 4e5e unlk %fp
4d0b4: 4e75 rts
*buf_prev++ = p;
if (((uintptr_t) p->dd < (uintptr_t) dd)
|| ((p->dd == dd) && (p->block < block)))
{
p->avl.cache = 1;
4d0b6: 7001 moveq #1,%d0
4d0b8: 1540 0010 moveb %d0,%a2@(16)
p = p->avl.right;
4d0bc: 246a 000c moveal %a2@(12),%a2
bool modified = false;
memset (buf_stack, 0, sizeof(buf_stack));
while (p != NULL)
4d0c0: 4a8a tstl %a2
4d0c2: 6600 fede bnew 4cfa2 <rtems_bdbuf_remove_from_tree+0x3a>
4d0c6: 6000 fefa braw 4cfc2 <rtems_bdbuf_remove_from_tree+0x5a><== NOT EXECUTED
}
}
else
{
/* rebalance right branch */
switch (p->avl.bal)
4d0ca: 49c0 extbl %d0
4d0cc: 7201 moveq #1,%d1
4d0ce: b280 cmpl %d0,%d1
4d0d0: 6700 0090 beqw 4d162 <rtems_bdbuf_remove_from_tree+0x1fa>
4d0d4: 76ff moveq #-1,%d3
4d0d6: b680 cmpl %d0,%d3
4d0d8: 6736 beqs 4d110 <rtems_bdbuf_remove_from_tree+0x1a8><== ALWAYS TAKEN
4d0da: 2448 moveal %a0,%a2 <== NOT EXECUTED
4d0dc: 7201 moveq #1,%d1 <== NOT EXECUTED
default:
break;
}
}
if (buf_prev > buf_stack)
4d0de: b489 cmpl %a1,%d2 <== NOT EXECUTED
4d0e0: 66b4 bnes 4d096 <rtems_bdbuf_remove_from_tree+0x12e><== NOT EXECUTED
q->avl.right = p;
}
}
else
{
*root = p;
4d0e2: 23ca 0006 378c movel %a2,6378c <bdbuf_cache+0x38>
static void
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)
{
if (rtems_bdbuf_avl_remove (&bdbuf_cache.tree, bd) != 0)
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_TREE_RM);
}
4d0e8: 4cee 3c0c ff68 moveml %fp@(-152),%d2-%d3/%a2-%a5
4d0ee: 4e5e unlk %fp
4d0f0: 4e75 rts
}
if (p->avl.cache == -1)
{
/* rebalance left branch */
switch (p->avl.bal)
4d0f2: 1028 0011 moveb %a0@(17),%d0
4d0f6: 6678 bnes 4d170 <rtems_bdbuf_remove_from_tree+0x208>
{
case -1:
p->avl.bal = 0;
break;
case 0:
p->avl.bal = 1;
4d0f8: 2448 moveal %a0,%a2
4d0fa: 7001 moveq #1,%d0
modified = false;
4d0fc: 4201 clrb %d1
{
case -1:
p->avl.bal = 0;
break;
case 0:
p->avl.bal = 1;
4d0fe: 1140 0011 moveb %d0,%a0@(17)
4d102: 608e bras 4d092 <rtems_bdbuf_remove_from_tree+0x12a>
{
q = *(buf_prev - 1);
if (q->avl.cache == -1)
{
q->avl.left = p;
4d104: 214a 0008 movel %a2,%a0@(8)
*root = q;
}
modified = true;
while (modified)
4d108: 4a01 tstb %d1
4d10a: 6600 ff70 bnew 4d07c <rtems_bdbuf_remove_from_tree+0x114>
4d10e: 609c bras 4d0ac <rtems_bdbuf_remove_from_tree+0x144>
p->avl.bal = -1;
modified = false;
break;
case -1:
p1 = p->avl.left;
4d110: 2668 0008 moveal %a0@(8),%a3
if (p1->avl.bal <= 0) /* simple LL-turn */
4d114: 102b 0011 moveb %a3@(17),%d0
4d118: 6f00 0094 blew 4d1ae <rtems_bdbuf_remove_from_tree+0x246>
}
p = p1;
}
else /* double LR-turn */
{
p2 = p1->avl.right;
4d11c: 246b 000c moveal %a3@(12),%a2
p1->avl.right = p2->avl.left;
p2->avl.left = p1;
p->avl.left = p2->avl.right;
p2->avl.right = p;
if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
4d120: 72ff moveq #-1,%d1
if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
4d122: 7601 moveq #1,%d3
p1->avl.right = p2->avl.left;
p2->avl.left = p1;
p->avl.left = p2->avl.right;
p2->avl.right = p;
if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
4d124: 102a 0011 moveb %a2@(17),%d0
}
else /* double LR-turn */
{
p2 = p1->avl.right;
p1->avl.right = p2->avl.left;
4d128: 276a 0008 000c movel %a2@(8),%a3@(12)
p2->avl.left = p1;
p->avl.left = p2->avl.right;
p2->avl.right = p;
if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
4d12e: 49c0 extbl %d0
4d130: b280 cmpl %d0,%d1
4d132: 56c0 sne %d0
else /* double LR-turn */
{
p2 = p1->avl.right;
p1->avl.right = p2->avl.left;
p2->avl.left = p1;
4d134: 254b 0008 movel %a3,%a2@(8)
p->avl.left = p2->avl.right;
4d138: 216a 000c 0008 movel %a2@(12),%a0@(8)
p2->avl.right = p;
if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
4d13e: 5280 addql #1,%d0
4d140: 1140 0011 moveb %d0,%a0@(17)
p2 = p1->avl.right;
p1->avl.right = p2->avl.left;
p2->avl.left = p1;
p->avl.left = p2->avl.right;
p2->avl.right = p;
4d144: 2548 000c movel %a0,%a2@(12)
if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
4d148: 102a 0011 moveb %a2@(17),%d0
p = p2;
p2->avl.bal = 0;
4d14c: 7201 moveq #1,%d1
p2->avl.left = p1;
p->avl.left = p2->avl.right;
p2->avl.right = p;
if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
4d14e: 49c0 extbl %d0
4d150: b680 cmpl %d0,%d3
4d152: 57c0 seq %d0
4d154: 1740 0011 moveb %d0,%a3@(17)
p = p2;
p2->avl.bal = 0;
4d158: 4200 clrb %d0
4d15a: 1540 0011 moveb %d0,%a2@(17)
4d15e: 6000 ff32 braw 4d092 <rtems_bdbuf_remove_from_tree+0x12a>
{
/* rebalance right branch */
switch (p->avl.bal)
{
case +1:
p->avl.bal = 0;
4d162: 2448 moveal %a0,%a2
4d164: 4200 clrb %d0
4d166: 7201 moveq #1,%d1
4d168: 1140 0011 moveb %d0,%a0@(17)
4d16c: 6000 ff24 braw 4d092 <rtems_bdbuf_remove_from_tree+0x12a>
}
if (p->avl.cache == -1)
{
/* rebalance left branch */
switch (p->avl.bal)
4d170: 49c0 extbl %d0
4d172: 7201 moveq #1,%d1
4d174: b280 cmpl %d0,%d1
4d176: 6712 beqs 4d18a <rtems_bdbuf_remove_from_tree+0x222>
{
case -1:
p->avl.bal = 0;
4d178: 2448 moveal %a0,%a2
}
if (p->avl.cache == -1)
{
/* rebalance left branch */
switch (p->avl.bal)
4d17a: b680 cmpl %d0,%d3
4d17c: 6600 ff5e bnew 4d0dc <rtems_bdbuf_remove_from_tree+0x174>
{
case -1:
p->avl.bal = 0;
4d180: 4203 clrb %d3
4d182: 1143 0011 moveb %d3,%a0@(17)
4d186: 6000 ff0a braw 4d092 <rtems_bdbuf_remove_from_tree+0x12a>
p->avl.bal = 1;
modified = false;
break;
case +1:
p1 = p->avl.right;
4d18a: 2468 000c moveal %a0@(12),%a2
if (p1->avl.bal >= 0) /* simple RR-turn */
4d18e: 102a 0011 moveb %a2@(17),%d0
4d192: 6d5e blts 4d1f2 <rtems_bdbuf_remove_from_tree+0x28a>
{
p->avl.right = p1->avl.left;
4d194: 216a 0008 000c movel %a2@(8),%a0@(12)
p1->avl.left = p;
4d19a: 2548 0008 movel %a0,%a2@(8)
if (p1->avl.bal == 0)
4d19e: 4a00 tstb %d0
4d1a0: 6628 bnes 4d1ca <rtems_bdbuf_remove_from_tree+0x262>
{
p1->avl.bal = -1;
4d1a2: 50c1 st %d1
4d1a4: 1541 0011 moveb %d1,%a2@(17)
modified = false;
4d1a8: 4201 clrb %d1
4d1aa: 6000 fee6 braw 4d092 <rtems_bdbuf_remove_from_tree+0x12a>
{
p->avl.left = p1->avl.right;
p1->avl.right = p;
if (p1->avl.bal == 0)
{
p1->avl.bal = 1;
4d1ae: 244b moveal %a3,%a2
case -1:
p1 = p->avl.left;
if (p1->avl.bal <= 0) /* simple LL-turn */
{
p->avl.left = p1->avl.right;
4d1b0: 216b 000c 0008 movel %a3@(12),%a0@(8)
p1->avl.right = p;
4d1b6: 2748 000c movel %a0,%a3@(12)
if (p1->avl.bal == 0)
4d1ba: 4a00 tstb %d0
4d1bc: 661c bnes 4d1da <rtems_bdbuf_remove_from_tree+0x272><== NEVER TAKEN
{
p1->avl.bal = 1;
4d1be: 7601 moveq #1,%d3
modified = false;
4d1c0: 4201 clrb %d1
{
p->avl.left = p1->avl.right;
p1->avl.right = p;
if (p1->avl.bal == 0)
{
p1->avl.bal = 1;
4d1c2: 1743 0011 moveb %d3,%a3@(17)
4d1c6: 6000 feca braw 4d092 <rtems_bdbuf_remove_from_tree+0x12a>
p1->avl.bal = -1;
modified = false;
}
else
{
p->avl.bal = 0;
4d1ca: 4203 clrb %d3
p1->avl.bal = 0;
4d1cc: 7201 moveq #1,%d1
p1->avl.bal = -1;
modified = false;
}
else
{
p->avl.bal = 0;
4d1ce: 1143 0011 moveb %d3,%a0@(17)
p1->avl.bal = 0;
4d1d2: 1543 0011 moveb %d3,%a2@(17)
4d1d6: 6000 feba braw 4d092 <rtems_bdbuf_remove_from_tree+0x12a>
p1->avl.bal = 1;
modified = false;
}
else
{
p->avl.bal = 0;
4d1da: 4200 clrb %d0 <== NOT EXECUTED
p1->avl.bal = 0;
4d1dc: 7201 moveq #1,%d1 <== NOT EXECUTED
p1->avl.bal = 1;
modified = false;
}
else
{
p->avl.bal = 0;
4d1de: 1140 0011 moveb %d0,%a0@(17) <== NOT EXECUTED
p1->avl.bal = 0;
4d1e2: 1740 0011 moveb %d0,%a3@(17) <== NOT EXECUTED
4d1e6: 6000 feaa braw 4d092 <rtems_bdbuf_remove_from_tree+0x12a><== NOT EXECUTED
if (p != NULL)
{
if (p->avl.cache == -1)
{
p->avl.left = q;
4d1ea: 214b 0008 movel %a3,%a0@(8)
4d1ee: 6000 fe70 braw 4d060 <rtems_bdbuf_remove_from_tree+0xf8>
}
p = p1;
}
else /* double RL-turn */
{
p2 = p1->avl.left;
4d1f2: 266a 0008 moveal %a2@(8),%a3
p1->avl.left = p2->avl.right;
p2->avl.right = p1;
p->avl.right = p2->avl.left;
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
4d1f6: 7201 moveq #1,%d1
if (p2->avl.bal == -1) p1->avl.bal = 1; else p1->avl.bal = 0;
4d1f8: 76ff moveq #-1,%d3
p1->avl.left = p2->avl.right;
p2->avl.right = p1;
p->avl.right = p2->avl.left;
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
4d1fa: 102b 0011 moveb %a3@(17),%d0
}
else /* double RL-turn */
{
p2 = p1->avl.left;
p1->avl.left = p2->avl.right;
4d1fe: 256b 000c 0008 movel %a3@(12),%a2@(8)
p2->avl.right = p1;
p->avl.right = p2->avl.left;
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
4d204: 49c0 extbl %d0
4d206: b280 cmpl %d0,%d1
4d208: 57c0 seq %d0
else /* double RL-turn */
{
p2 = p1->avl.left;
p1->avl.left = p2->avl.right;
p2->avl.right = p1;
4d20a: 274a 000c movel %a2,%a3@(12)
p->avl.right = p2->avl.left;
4d20e: 216b 0008 000c movel %a3@(8),%a0@(12)
p2->avl.left = p;
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
4d214: 1140 0011 moveb %d0,%a0@(17)
p2 = p1->avl.left;
p1->avl.left = p2->avl.right;
p2->avl.right = p1;
p->avl.right = p2->avl.left;
p2->avl.left = p;
4d218: 2748 0008 movel %a0,%a3@(8)
if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
if (p2->avl.bal == -1) p1->avl.bal = 1; else p1->avl.bal = 0;
4d21c: 102b 0011 moveb %a3@(17),%d0
4d220: 49c0 extbl %d0
4d222: b680 cmpl %d0,%d3
4d224: 56c0 sne %d0
4d226: 5280 addql #1,%d0
4d228: 1540 0011 moveb %d0,%a2@(17)
p = p2;
p2->avl.bal = 0;
4d22c: 4200 clrb %d0
4d22e: 244b moveal %a3,%a2
4d230: 1740 0011 moveb %d0,%a3@(17)
4d234: 6000 fe5c braw 4d092 <rtems_bdbuf_remove_from_tree+0x12a>
p->avl.right = q;
}
}
else
{
*root = q;
4d238: 23cb 0006 378c movel %a3,6378c <bdbuf_cache+0x38>
4d23e: 6000 fe20 braw 4d060 <rtems_bdbuf_remove_from_tree+0xf8>
}
/* at this moment q - is a node to delete, p is q's parent */
if (q->avl.right == NULL)
{
r = q->avl.left;
4d242: 266a 0008 moveal %a2@(8),%a3
if (r != NULL)
4d246: 4a8b tstl %a3
4d248: 6700 fdfa beqw 4d044 <rtems_bdbuf_remove_from_tree+0xdc>
{
r->avl.bal = 0;
4d24c: 4200 clrb %d0
4d24e: 1740 0011 moveb %d0,%a3@(17)
4d252: 6000 fdf0 braw 4d044 <rtems_bdbuf_remove_from_tree+0xdc>
if (r->avl.left == NULL)
{
r->avl.left = q->avl.left;
r->avl.bal = q->avl.bal;
r->avl.cache = 1;
*buf_prev++ = q = r;
4d256: 214d fffc movel %a5,%a0@(-4)
4d25a: 2248 moveal %a0,%a1
4d25c: 264d moveal %a5,%a3
r = q->avl.right;
if (r->avl.left == NULL)
{
r->avl.left = q->avl.left;
4d25e: 2b6a 0008 0008 movel %a2@(8),%a5@(8)
r->avl.bal = q->avl.bal;
r->avl.cache = 1;
4d264: 7201 moveq #1,%d1
r = q->avl.right;
if (r->avl.left == NULL)
{
r->avl.left = q->avl.left;
r->avl.bal = q->avl.bal;
4d266: 1b6a 0011 0011 moveb %a2@(17),%a5@(17)
r->avl.cache = 1;
4d26c: 1b41 0010 moveb %d1,%a5@(16)
4d270: 6000 fdd2 braw 4d044 <rtems_bdbuf_remove_from_tree+0xdc>
{
p = *(buf_prev - 1);
}
else
{
p = NULL;
4d274: 4282 clrl %d2
4d276: 6000 fd6c braw 4cfe4 <rtems_bdbuf_remove_from_tree+0x7c>
0004d300 <rtems_bdbuf_remove_from_tree_and_lru_list>:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_TREE_RM);
}
static void
rtems_bdbuf_remove_from_tree_and_lru_list (rtems_bdbuf_buffer *bd)
{
4d300: 4e56 0000 linkw %fp,#0
4d304: 2f0a movel %a2,%sp@-
4d306: 246e 0008 moveal %fp@(8),%a2
switch (bd->state)
4d30a: 202a 001e movel %a2@(30),%d0
4d30e: 6718 beqs 4d328 <rtems_bdbuf_remove_from_tree_and_lru_list+0x28>
4d310: 7202 moveq #2,%d1
4d312: b280 cmpl %d0,%d1
4d314: 670a beqs 4d320 <rtems_bdbuf_remove_from_tree_and_lru_list+0x20><== ALWAYS TAKEN
break;
case RTEMS_BDBUF_STATE_CACHED:
rtems_bdbuf_remove_from_tree (bd);
break;
default:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_10);
4d316: 4878 0016 pea 16 <OPER2+0x2> <== NOT EXECUTED
4d31a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d31c: 4eba f8a8 jsr %pc@(4cbc6 <rtems_bdbuf_fatal_with_state>)<== NOT EXECUTED
switch (bd->state)
{
case RTEMS_BDBUF_STATE_FREE:
break;
case RTEMS_BDBUF_STATE_CACHED:
rtems_bdbuf_remove_from_tree (bd);
4d320: 2f0a movel %a2,%sp@-
4d322: 4eba fc44 jsr %pc@(4cf68 <rtems_bdbuf_remove_from_tree>)
break;
4d326: 588f addql #4,%sp
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4d328: 2252 moveal %a2@,%a1
previous = the_node->previous;
4d32a: 206a 0004 moveal %a2@(4),%a0
default:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_10);
}
rtems_chain_extract_unprotected (&bd->link);
}
4d32e: 246e fffc moveal %fp@(-4),%a2
4d332: 4e5e unlk %fp
next->previous = previous;
4d334: 2348 0004 movel %a0,%a1@(4)
previous->next = next;
4d338: 2089 movel %a1,%a0@ <== NOT EXECUTED
0004ee92 <rtems_bdbuf_reset_device_stats>:
}
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
4ee92: 4e56 0000 linkw %fp,#0
4ee96: 2f0a movel %a2,%sp@-
4ee98: 246e 0008 moveal %fp@(8),%a2
rtems_bdbuf_lock_cache ();
4ee9c: 4eba dd12 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
memset (&dd->stats, 0, sizeof(dd->stats));
4eea0: 42aa 0042 clrl %a2@(66)
4eea4: 42aa 0046 clrl %a2@(70)
4eea8: 42aa 004a clrl %a2@(74)
4eeac: 42aa 004e clrl %a2@(78)
4eeb0: 42aa 0052 clrl %a2@(82)
4eeb4: 42aa 0056 clrl %a2@(86)
4eeb8: 42aa 005a clrl %a2@(90)
4eebc: 42aa 005e clrl %a2@(94)
rtems_bdbuf_unlock_cache ();
}
4eec0: 246e fffc moveal %fp@(-4),%a2
4eec4: 4e5e unlk %fp
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
4eec6: 6000 dd34 braw 4cbfc <rtems_bdbuf_unlock_cache>
...
0004cc6a <rtems_bdbuf_restore_preemption>:
return prev_mode;
}
static void
rtems_bdbuf_restore_preemption (rtems_mode prev_mode)
{
4cc6a: 4e56 0000 linkw %fp,#0
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_task_mode (prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode);
4cc6e: 486e 0008 pea %fp@(8)
4cc72: 2f3c 0000 ffff movel #65535,%sp@-
4cc78: 2f2e 0008 movel %fp@(8),%sp@-
4cc7c: 4eb9 0005 08f8 jsr 508f8 <rtems_task_mode>
if (sc != RTEMS_SUCCESSFUL)
4cc82: 4fef 000c lea %sp@(12),%sp
4cc86: 4a80 tstl %d0
4cc88: 6604 bnes 4cc8e <rtems_bdbuf_restore_preemption+0x24><== NEVER TAKEN
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_PREEMPT_RST);
}
4cc8a: 4e5e unlk %fp
4cc8c: 4e75 rts
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_task_mode (prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_PREEMPT_RST);
4cc8e: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
4cc92: 4eba fee4 jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004ed6e <rtems_bdbuf_set_block_size>:
rtems_status_code
rtems_bdbuf_set_block_size (rtems_disk_device *dd,
uint32_t block_size,
bool sync)
{
4ed6e: 4e56 ffe8 linkw %fp,#-24
4ed72: 48d7 047c moveml %d2-%d6/%a2,%sp@
4ed76: 246e 0008 moveal %fp@(8),%a2
4ed7a: 242e 000c movel %fp@(12),%d2
/*
* We do not care about the synchronization status since we will purge the
* device later.
*/
if (sync)
4ed7e: 4a2e 0013 tstb %fp@(19)
4ed82: 6600 00ac bnew 4ee30 <rtems_bdbuf_set_block_size+0xc2>
rtems_bdbuf_syncdev (dd);
rtems_bdbuf_lock_cache ();
4ed86: 4eba de28 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
if (block_size > 0)
4ed8a: 4a82 tstl %d2
4ed8c: 6612 bnes 4eda0 <rtems_bdbuf_set_block_size+0x32>
else
{
sc = RTEMS_INVALID_NUMBER;
}
rtems_bdbuf_unlock_cache ();
4ed8e: 4eba de6c jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
sc = RTEMS_INVALID_NUMBER;
}
}
else
{
sc = RTEMS_INVALID_NUMBER;
4ed92: 740a moveq #10,%d2
}
rtems_bdbuf_unlock_cache ();
return sc;
}
4ed94: 2002 movel %d2,%d0
4ed96: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
4ed9c: 4e5e unlk %fp
4ed9e: 4e75 rts
rtems_bdbuf_bds_per_group (size_t size)
{
size_t bufs_per_size;
size_t bds_per_size;
if (size > bdbuf_config.buffer_max)
4eda0: b4b9 0006 0c3a cmpl 60c3a <rtems_bdbuf_configuration+0x28>,%d2
4eda6: 62e6 bhis 4ed8e <rtems_bdbuf_set_block_size+0x20><== NEVER TAKEN
return 0;
bufs_per_size = ((size - 1) / bdbuf_config.buffer_min) + 1;
4eda8: 2202 movel %d2,%d1
4edaa: 5381 subql #1,%d1
4edac: 41f9 0006 0c36 lea 60c36 <rtems_bdbuf_configuration+0x24>,%a0
4edb2: 4c50 1001 remul %a0@,%d1,%d1
for (bds_per_size = 1;
4edb6: 7001 moveq #1,%d0
size_t bds_per_size;
if (size > bdbuf_config.buffer_max)
return 0;
bufs_per_size = ((size - 1) / bdbuf_config.buffer_min) + 1;
4edb8: 5281 addql #1,%d1
for (bds_per_size = 1;
4edba: b081 cmpl %d1,%d0
4edbc: 6400 008a bccw 4ee48 <rtems_bdbuf_set_block_size+0xda>
bds_per_size < bufs_per_size;
bds_per_size <<= 1)
4edc0: d080 addl %d0,%d0
if (size > bdbuf_config.buffer_max)
return 0;
bufs_per_size = ((size - 1) / bdbuf_config.buffer_min) + 1;
for (bds_per_size = 1;
4edc2: b081 cmpl %d1,%d0
4edc4: 65fa bcss 4edc0 <rtems_bdbuf_set_block_size+0x52>
bds_per_size < bufs_per_size;
bds_per_size <<= 1)
;
return bdbuf_cache.max_bds_per_group / bds_per_size;
4edc6: 2639 0006 3772 movel 63772 <bdbuf_cache+0x1e>,%d3
4edcc: 4c40 3003 remul %d0,%d3,%d3
4edd0: 2003 movel %d3,%d0
if (block_size > 0)
{
size_t bds_per_group = rtems_bdbuf_bds_per_group (block_size);
if (bds_per_group != 0)
4edd2: 67ba beqs 4ed8e <rtems_bdbuf_set_block_size+0x20><== NEVER TAKEN
{
int block_to_media_block_shift = 0;
uint32_t media_blocks_per_block = block_size / dd->media_block_size;
4edd4: 2c2a 0020 movel %a2@(32),%d6
4edd8: 2802 movel %d2,%d4
uint32_t one = 1;
while ((one << block_to_media_block_shift) < media_blocks_per_block)
4edda: 7a01 moveq #1,%d5
size_t bds_per_group = rtems_bdbuf_bds_per_group (block_size);
if (bds_per_group != 0)
{
int block_to_media_block_shift = 0;
uint32_t media_blocks_per_block = block_size / dd->media_block_size;
4eddc: 4c46 4004 remul %d6,%d4,%d4
uint32_t one = 1;
while ((one << block_to_media_block_shift) < media_blocks_per_block)
4ede0: 4281 clrl %d1
4ede2: ba84 cmpl %d4,%d5
4ede4: 640a bccs 4edf0 <rtems_bdbuf_set_block_size+0x82>
{
++block_to_media_block_shift;
4ede6: 5281 addql #1,%d1
{
int block_to_media_block_shift = 0;
uint32_t media_blocks_per_block = block_size / dd->media_block_size;
uint32_t one = 1;
while ((one << block_to_media_block_shift) < media_blocks_per_block)
4ede8: 2605 movel %d5,%d3
4edea: e3ab lsll %d1,%d3
4edec: b684 cmpl %d4,%d3
4edee: 65f6 bcss 4ede6 <rtems_bdbuf_set_block_size+0x78>
{
++block_to_media_block_shift;
}
if ((dd->media_block_size << block_to_media_block_shift) != block_size)
4edf0: e3ae lsll %d1,%d6
4edf2: b486 cmpl %d6,%d2
4edf4: 6702 beqs 4edf8 <rtems_bdbuf_set_block_size+0x8a><== ALWAYS TAKEN
block_to_media_block_shift = -1;
4edf6: 72ff moveq #-1,%d1 <== NOT EXECUTED
dd->block_size = block_size;
dd->block_count = dd->size / media_blocks_per_block;
4edf8: 2a2a 001c movel %a2@(28),%d5
4edfc: 4c44 5005 remul %d4,%d5,%d5
}
if ((dd->media_block_size << block_to_media_block_shift) != block_size)
block_to_media_block_shift = -1;
dd->block_size = block_size;
4ee00: 2542 0024 movel %d2,%a2@(36)
rtems_status_code
rtems_bdbuf_set_block_size (rtems_disk_device *dd,
uint32_t block_size,
bool sync)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
4ee04: 4282 clrl %d2
if ((dd->media_block_size << block_to_media_block_shift) != block_size)
block_to_media_block_shift = -1;
dd->block_size = block_size;
dd->block_count = dd->size / media_blocks_per_block;
4ee06: 2545 0028 movel %d5,%a2@(40)
dd->media_blocks_per_block = media_blocks_per_block;
dd->block_to_media_block_shift = block_to_media_block_shift;
dd->bds_per_group = bds_per_group;
rtems_bdbuf_purge_dev (dd);
4ee0a: 2f0a movel %a2,%sp@-
dd->block_size = block_size;
dd->block_count = dd->size / media_blocks_per_block;
dd->media_blocks_per_block = media_blocks_per_block;
dd->block_to_media_block_shift = block_to_media_block_shift;
dd->bds_per_group = bds_per_group;
4ee0c: 2540 0034 movel %d0,%a2@(52)
block_to_media_block_shift = -1;
dd->block_size = block_size;
dd->block_count = dd->size / media_blocks_per_block;
dd->media_blocks_per_block = media_blocks_per_block;
dd->block_to_media_block_shift = block_to_media_block_shift;
4ee10: 2541 0030 movel %d1,%a2@(48)
if ((dd->media_block_size << block_to_media_block_shift) != block_size)
block_to_media_block_shift = -1;
dd->block_size = block_size;
dd->block_count = dd->size / media_blocks_per_block;
dd->media_blocks_per_block = media_blocks_per_block;
4ee14: 2544 002c movel %d4,%a2@(44)
dd->block_to_media_block_shift = block_to_media_block_shift;
dd->bds_per_group = bds_per_group;
rtems_bdbuf_purge_dev (dd);
4ee18: 4eb9 0004 eb94 jsr 4eb94 <rtems_bdbuf_purge_dev>
4ee1e: 588f addql #4,%sp
else
{
sc = RTEMS_INVALID_NUMBER;
}
rtems_bdbuf_unlock_cache ();
4ee20: 4eba ddda jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
return sc;
}
4ee24: 2002 movel %d2,%d0
4ee26: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
4ee2c: 4e5e unlk %fp
4ee2e: 4e75 rts
/*
* We do not care about the synchronization status since we will purge the
* device later.
*/
if (sync)
rtems_bdbuf_syncdev (dd);
4ee30: 2f0a movel %a2,%sp@-
4ee32: 4eb9 0004 eb3c jsr 4eb3c <rtems_bdbuf_syncdev>
4ee38: 588f addql #4,%sp
rtems_bdbuf_lock_cache ();
4ee3a: 4eba dd74 jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
if (block_size > 0)
4ee3e: 4a82 tstl %d2
4ee40: 6700 ff4c beqw 4ed8e <rtems_bdbuf_set_block_size+0x20>
4ee44: 6000 ff5a braw 4eda0 <rtems_bdbuf_set_block_size+0x32>
if (size > bdbuf_config.buffer_max)
return 0;
bufs_per_size = ((size - 1) / bdbuf_config.buffer_min) + 1;
for (bds_per_size = 1;
4ee48: 7001 moveq #1,%d0
4ee4a: 6000 ff7a braw 4edc6 <rtems_bdbuf_set_block_size+0x58>
0004ca68 <rtems_bdbuf_swapout_modified_processing>:
rtems_chain_control* chain,
rtems_chain_control* transfer,
bool sync_active,
bool update_timers,
uint32_t timer_delta)
{
4ca68: 4e56 ffdc linkw %fp,#-36
4ca6c: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4ca70: 2a6e 000c moveal %fp@(12),%a5
4ca74: 286e 0008 moveal %fp@(8),%a4
4ca78: 266e 0010 moveal %fp@(16),%a3
4ca7c: 2a2e 001c movel %fp@(28),%d5
4ca80: 205d moveal %a5@+,%a0
4ca82: 142e 0017 moveb %fp@(23),%d2
4ca86: 162e 001b moveb %fp@(27),%d3
if (!rtems_chain_is_empty (chain))
4ca8a: bbc8 cmpal %a0,%a5
4ca8c: 6754 beqs 4cae2 <rtems_bdbuf_swapout_modified_processing+0x7a>
node = node->next;
/*
* A sync active with no valid dev means sync all.
*/
if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))
4ca8e: 4a02 tstb %d2
4ca90: 6758 beqs 4caea <rtems_bdbuf_swapout_modified_processing+0x82>
4ca92: 4a94 tstl %a4@
4ca94: 57c1 seq %d1
}
static bool
rtems_bdbuf_has_buffer_waiters (void)
{
return bdbuf_cache.buffer_waiters.count;
4ca96: 2839 0006 37c4 movel 637c4 <bdbuf_cache+0x70>,%d4
node = node->next;
/*
* A sync active with no valid dev means sync all.
*/
if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))
4ca9c: 4481 negl %d1
* or someone waits for a buffer written force all the timers to 0.
*
* @note Lots of sync requests will skew this timer. It should be based
* on TOD to be accurate. Does it matter ?
*/
if (sync_all || (sync_active && (*dd_ptr == bd->dd))
4ca9e: 4a01 tstb %d1
4caa0: 6600 009e bnew 4cb40 <rtems_bdbuf_swapout_modified_processing+0xd8>
4caa4: 4a02 tstb %d2
4caa6: 670a beqs 4cab2 <rtems_bdbuf_swapout_modified_processing+0x4a>
4caa8: 2014 movel %a4@,%d0
4caaa: b0a8 0012 cmpl %a0@(18),%d0
4caae: 6700 0092 beqw 4cb42 <rtems_bdbuf_swapout_modified_processing+0xda>
|| rtems_bdbuf_has_buffer_waiters ())
4cab2: 4a84 tstl %d4
4cab4: 6600 008a bnew 4cb40 <rtems_bdbuf_swapout_modified_processing+0xd8>
bd->hold_timer = 0;
if (bd->hold_timer)
4cab8: 2028 002a movel %a0@(42),%d0
4cabc: 6712 beqs 4cad0 <rtems_bdbuf_swapout_modified_processing+0x68><== NEVER TAKEN
{
if (update_timers)
4cabe: 4a03 tstb %d3
4cac0: 671a beqs 4cadc <rtems_bdbuf_swapout_modified_processing+0x74>
{
if (bd->hold_timer > timer_delta)
4cac2: ba80 cmpl %d0,%d5
4cac4: 6400 00a8 bccw 4cb6e <rtems_bdbuf_swapout_modified_processing+0x106>
bd->hold_timer -= timer_delta;
4cac8: 9085 subl %d5,%d0
4caca: 2140 002a movel %d0,%a0@(42)
else
bd->hold_timer = 0;
}
if (bd->hold_timer)
4cace: 660c bnes 4cadc <rtems_bdbuf_swapout_modified_processing+0x74><== ALWAYS TAKEN
4cad0: 2014 movel %a4@,%d0 <== NOT EXECUTED
/*
* This assumes we can set it to BDBUF_INVALID_DEV which is just an
* assumption. Cannot use the transfer list being empty the sync dev
* calls sets the dev to use.
*/
if (*dd_ptr == BDBUF_INVALID_DEV)
4cad2: 4a80 tstl %d0
4cad4: 675c beqs 4cb32 <rtems_bdbuf_swapout_modified_processing+0xca>
*dd_ptr = bd->dd;
if (bd->dd == *dd_ptr)
4cad6: b0a8 0012 cmpl %a0@(18),%d0
4cada: 6718 beqs 4caf4 <rtems_bdbuf_swapout_modified_processing+0x8c><== ALWAYS TAKEN
node = next_node;
}
else
{
node = node->next;
4cadc: 2050 moveal %a0@,%a0
if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))
sync_all = true;
else
sync_all = false;
while (!rtems_chain_is_tail (chain, node))
4cade: bbc8 cmpal %a0,%a5
4cae0: 66bc bnes 4ca9e <rtems_bdbuf_swapout_modified_processing+0x36>
{
node = node->next;
}
}
}
}
4cae2: 4cd7 3c7c moveml %sp@,%d2-%d6/%a2-%a5
4cae6: 4e5e unlk %fp
4cae8: 4e75 rts
}
static bool
rtems_bdbuf_has_buffer_waiters (void)
{
return bdbuf_cache.buffer_waiters.count;
4caea: 2839 0006 37c4 movel 637c4 <bdbuf_cache+0x70>,%d4
* A sync active with no valid dev means sync all.
*/
if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))
sync_all = true;
else
sync_all = false;
4caf0: 4201 clrb %d1
4caf2: 60aa bras 4ca9e <rtems_bdbuf_swapout_modified_processing+0x36>
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4caf4: 7c09 moveq #9,%d6
if (*dd_ptr == BDBUF_INVALID_DEV)
*dd_ptr = bd->dd;
if (bd->dd == *dd_ptr)
{
rtems_chain_node* next_node = node->next;
4caf6: 2010 movel %a0@,%d0
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
4caf8: 2240 moveal %d0,%a1
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4cafa: 2146 001e movel %d6,%a0@(30)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
4cafe: 2468 0004 moveal %a0@(4),%a2
next->previous = previous;
4cb02: 234a 0004 movel %a2,%a1@(4)
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);
rtems_chain_extract_unprotected (node);
tnode = tnode->previous;
4cb06: 226b 0008 moveal %a3@(8),%a1
previous->next = next;
4cb0a: 2480 movel %d0,%a2@
while (node && !rtems_chain_is_head (transfer, tnode))
4cb0c: b7c9 cmpal %a1,%a3
4cb0e: 6744 beqs 4cb54 <rtems_bdbuf_swapout_modified_processing+0xec>
{
rtems_bdbuf_buffer* tbd = (rtems_bdbuf_buffer*) tnode;
if (bd->block > tbd->block)
4cb10: 2c29 0016 movel %a1@(22),%d6
4cb14: bca8 0016 cmpl %a0@(22),%d6
4cb18: 6432 bccs 4cb4c <rtems_bdbuf_swapout_modified_processing+0xe4>
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4cb1a: 2451 moveal %a1@,%a2
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4cb1c: 2149 0004 movel %a1,%a0@(4)
before_node = after_node->next;
after_node->next = the_node;
4cb20: 2288 movel %a0,%a1@
the_node->next = before_node;
before_node->previous = the_node;
4cb22: 2548 0004 movel %a0,%a2@(4)
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
4cb26: 208a movel %a2,%a0@
before_node->previous = the_node;
4cb28: 2040 moveal %d0,%a0
if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))
sync_all = true;
else
sync_all = false;
while (!rtems_chain_is_tail (chain, node))
4cb2a: bbc8 cmpal %a0,%a5
4cb2c: 6600 ff70 bnew 4ca9e <rtems_bdbuf_swapout_modified_processing+0x36>
4cb30: 60b0 bras 4cae2 <rtems_bdbuf_swapout_modified_processing+0x7a>
* This assumes we can set it to BDBUF_INVALID_DEV which is just an
* assumption. Cannot use the transfer list being empty the sync dev
* calls sets the dev to use.
*/
if (*dd_ptr == BDBUF_INVALID_DEV)
*dd_ptr = bd->dd;
4cb32: 2028 0012 movel %a0@(18),%d0
4cb36: 2880 movel %d0,%a4@
if (bd->dd == *dd_ptr)
4cb38: b0a8 0012 cmpl %a0@(18),%d0
4cb3c: 669e bnes 4cadc <rtems_bdbuf_swapout_modified_processing+0x74><== NEVER TAKEN
4cb3e: 60b4 bras 4caf4 <rtems_bdbuf_swapout_modified_processing+0x8c>
4cb40: 2014 movel %a4@,%d0
* @note Lots of sync requests will skew this timer. It should be based
* on TOD to be accurate. Does it matter ?
*/
if (sync_all || (sync_active && (*dd_ptr == bd->dd))
|| rtems_bdbuf_has_buffer_waiters ())
bd->hold_timer = 0;
4cb42: 42a8 002a clrl %a0@(42)
/*
* This assumes we can set it to BDBUF_INVALID_DEV which is just an
* assumption. Cannot use the transfer list being empty the sync dev
* calls sets the dev to use.
*/
if (*dd_ptr == BDBUF_INVALID_DEV)
4cb46: 4a80 tstl %d0
4cb48: 668c bnes 4cad6 <rtems_bdbuf_swapout_modified_processing+0x6e>
4cb4a: 60e6 bras 4cb32 <rtems_bdbuf_swapout_modified_processing+0xca>
{
rtems_chain_insert_unprotected (tnode, node);
node = NULL;
}
else
tnode = tnode->previous;
4cb4c: 2269 0004 moveal %a1@(4),%a1
rtems_chain_extract_unprotected (node);
tnode = tnode->previous;
while (node && !rtems_chain_is_head (transfer, tnode))
4cb50: b7c9 cmpal %a1,%a3
4cb52: 66bc bnes 4cb10 <rtems_bdbuf_swapout_modified_processing+0xa8>
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4cb54: 2253 moveal %a3@,%a1
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4cb56: 214b 0004 movel %a3,%a0@(4)
before_node = after_node->next;
after_node->next = the_node;
4cb5a: 2688 movel %a0,%a3@
the_node->next = before_node;
before_node->previous = the_node;
4cb5c: 2348 0004 movel %a0,%a1@(4)
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
4cb60: 2089 movel %a1,%a0@
before_node->previous = the_node;
4cb62: 2040 moveal %d0,%a0
if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))
sync_all = true;
else
sync_all = false;
while (!rtems_chain_is_tail (chain, node))
4cb64: bbc8 cmpal %a0,%a5
4cb66: 6600 ff36 bnew 4ca9e <rtems_bdbuf_swapout_modified_processing+0x36>
4cb6a: 6000 ff76 braw 4cae2 <rtems_bdbuf_swapout_modified_processing+0x7a>
if (update_timers)
{
if (bd->hold_timer > timer_delta)
bd->hold_timer -= timer_delta;
else
bd->hold_timer = 0;
4cb6e: 42a8 002a clrl %a0@(42)
4cb72: 2014 movel %a4@,%d0
4cb74: 6000 ff5c braw 4cad2 <rtems_bdbuf_swapout_modified_processing+0x6a>
0004dbb6 <rtems_bdbuf_swapout_task>:
* not this.
* @return rtems_task Not used.
*/
static rtems_task
rtems_bdbuf_swapout_task (rtems_task_argument arg)
{
4dbb6: 4e56 ffb4 linkw %fp,#-76
4dbba: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
rtems_bdbuf_swapout_transfer transfer;
uint32_t period_in_ticks;
const uint32_t period_in_msecs = bdbuf_config.swapout_period;
4dbbe: 2439 0006 0c1e movel 60c1e <rtems_bdbuf_configuration+0xc>,%d2
uint32_t timer_delta;
transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
4dbc4: 49fa f19e lea %pc@(4cd64 <rtems_bdbuf_swapout_writereq_alloc>),%a4
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4dbc8: 260e movel %fp,%d3
4dbca: 0683 ffff ffea addil #-22,%d3
rtems_bdbuf_swapout_workers_open (void)
{
rtems_status_code sc;
size_t w;
rtems_bdbuf_lock_cache ();
4dbd0: 47fa efde lea %pc@(4cbb0 <rtems_bdbuf_lock_cache>),%a3
rtems_bdbuf_swapout_transfer transfer;
uint32_t period_in_ticks;
const uint32_t period_in_msecs = bdbuf_config.swapout_period;
uint32_t timer_delta;
transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
4dbd4: 4e94 jsr %a4@
4dbd6: 41ee ffee lea %fp@(-18),%a0
transfer.syncing = false;
/*
* Localise the period.
*/
period_in_ticks = RTEMS_MICROSECONDS_TO_TICKS (period_in_msecs * 1000);
4dbda: 223c 0000 03e8 movel #1000,%d1
4dbe0: 4c02 1800 mulsl %d2,%d1
rtems_bdbuf_swapout_transfer transfer;
uint32_t period_in_ticks;
const uint32_t period_in_msecs = bdbuf_config.swapout_period;
uint32_t timer_delta;
transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
4dbe4: 2d40 fffc movel %d0,%fp@(-4)
rtems_chain_initialize_empty (&transfer.bds);
transfer.dd = BDBUF_INVALID_DEV;
transfer.syncing = false;
4dbe8: 4200 clrb %d0
4dbea: 2d48 ffea movel %a0,%fp@(-22)
/*
* Localise the period.
*/
period_in_ticks = RTEMS_MICROSECONDS_TO_TICKS (period_in_msecs * 1000);
4dbee: 41f9 0006 0bd6 lea 60bd6 <Configuration+0xc>,%a0
uint32_t timer_delta;
transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
rtems_chain_initialize_empty (&transfer.bds);
transfer.dd = BDBUF_INVALID_DEV;
transfer.syncing = false;
4dbf4: 1d40 fffa moveb %d0,%fp@(-6)
/*
* Localise the period.
*/
period_in_ticks = RTEMS_MICROSECONDS_TO_TICKS (period_in_msecs * 1000);
4dbf8: 4c50 1001 remul %a0@,%d1,%d1
head->previous = NULL;
4dbfc: 42ae ffee clrl %fp@(-18)
4dc00: 2d41 ffe0 movel %d1,%fp@(-32)
tail->previous = head;
4dc04: 2d43 fff2 movel %d3,%fp@(-14)
const uint32_t period_in_msecs = bdbuf_config.swapout_period;
uint32_t timer_delta;
transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
rtems_chain_initialize_empty (&transfer.bds);
transfer.dd = BDBUF_INVALID_DEV;
4dc08: 42ae fff6 clrl %fp@(-10)
rtems_bdbuf_swapout_workers_open (void)
{
rtems_status_code sc;
size_t w;
rtems_bdbuf_lock_cache ();
4dc0c: 4e93 jsr %a3@
for (w = 0; w < bdbuf_config.swapout_workers; w++)
4dc0e: 2c39 0006 0c26 movel 60c26 <rtems_bdbuf_configuration+0x14>,%d6
4dc14: 6700 008e beqw 4dca4 <rtems_bdbuf_swapout_task+0xee>
* @param arg A pointer to the global cache data. Use the global variable and
* not this.
* @return rtems_task Not used.
*/
static rtems_task
rtems_bdbuf_swapout_task (rtems_task_argument arg)
4dc18: 0686 0000 0061 addil #97,%d6 <== NOT EXECUTED
4dc1e: 7861 moveq #97,%d4 <== NOT EXECUTED
4dc20: 2a3c 0004 49d4 movel #281044,%d5 <== NOT EXECUTED
worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
rtems_chain_initialize_empty (&worker->transfer.bds);
worker->transfer.dd = BDBUF_INVALID_DEV;
sc = rtems_bdbuf_create_task (rtems_build_name('B', 'D', 'o', 'a' + w),
4dc26: 4bfa f2d0 lea %pc@(4cef8 <rtems_bdbuf_create_task.constprop.15>),%a5<== NOT EXECUTED
for (w = 0; w < bdbuf_config.swapout_workers; w++)
{
rtems_bdbuf_swapout_worker* worker;
worker = malloc (sizeof (rtems_bdbuf_swapout_worker));
4dc2a: 4878 0024 pea 24 <OPER2+0x10> <== NOT EXECUTED
4dc2e: 2245 moveal %d5,%a1 <== NOT EXECUTED
4dc30: 4e91 jsr %a1@ <== NOT EXECUTED
if (!worker)
4dc32: 588f addql #4,%sp <== NOT EXECUTED
for (w = 0; w < bdbuf_config.swapout_workers; w++)
{
rtems_bdbuf_swapout_worker* worker;
worker = malloc (sizeof (rtems_bdbuf_swapout_worker));
4dc34: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (!worker)
4dc36: 4a80 tstl %d0 <== NOT EXECUTED
4dc38: 6700 0284 beqw 4debe <rtems_bdbuf_swapout_task+0x308> <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4dc3c: 2079 0006 3762 moveal 63762 <bdbuf_cache+0xe>,%a0 <== NOT EXECUTED
the_node->next = tail;
4dc42: 24bc 0006 375e movel #407390,%a2@ <== NOT EXECUTED
tail->previous = the_node;
4dc48: 23c0 0006 3762 movel %d0,63762 <bdbuf_cache+0xe> <== NOT EXECUTED
old_last->next = the_node;
4dc4e: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_NOMEM);
rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
worker->enabled = true;
4dc50: 7001 moveq #1,%d0 <== NOT EXECUTED
the_node->previous = old_last;
4dc52: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
4dc56: 1540 000c moveb %d0,%a2@(12) <== NOT EXECUTED
worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
4dc5a: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_chain_initialize_empty (&worker->transfer.bds);
worker->transfer.dd = BDBUF_INVALID_DEV;
sc = rtems_bdbuf_create_task (rtems_build_name('B', 'D', 'o', 'a' + w),
4dc5c: 486a 0008 pea %a2@(8) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4dc60: 41ea 0012 lea %a2@(18),%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4dc64: 43ea 000e lea %a2@(14),%a1 <== NOT EXECUTED
4dc68: 2204 movel %d4,%d1 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
4dc6a: 2548 000e movel %a0,%a2@(14) <== NOT EXECUTED
4dc6e: 0081 4244 6f00 oril #1111781120,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4dc74: 2549 0016 movel %a1,%a2@(22) <== NOT EXECUTED
4dc78: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4dc7a: 487a 025a pea %pc@(4ded6 <rtems_bdbuf_swapout_worker_task>)<== NOT EXECUTED
4dc7e: 2f39 0006 0c2a movel 60c2a <rtems_bdbuf_configuration+0x18>,%sp@-<== NOT EXECUTED
4dc84: 2f01 movel %d1,%sp@- <== NOT EXECUTED
if (!worker)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_NOMEM);
rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
worker->enabled = true;
worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
4dc86: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4dc8a: 42aa 0012 clrl %a2@(18) <== NOT EXECUTED
rtems_chain_initialize_empty (&worker->transfer.bds);
worker->transfer.dd = BDBUF_INVALID_DEV;
4dc8e: 42aa 001a clrl %a2@(26) <== NOT EXECUTED
sc = rtems_bdbuf_create_task (rtems_build_name('B', 'D', 'o', 'a' + w),
4dc92: 4e95 jsr %a5@ <== NOT EXECUTED
bdbuf_config.swapout_worker_priority,
RTEMS_BDBUF_SWAPOUT_WORKER_TASK_PRIORITY_DEFAULT,
rtems_bdbuf_swapout_worker_task,
(rtems_task_argument) worker,
&worker->id);
if (sc != RTEMS_SUCCESSFUL)
4dc94: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4dc98: 4a80 tstl %d0 <== NOT EXECUTED
4dc9a: 6600 022a bnew 4dec6 <rtems_bdbuf_swapout_task+0x310> <== NOT EXECUTED
4dc9e: 5284 addql #1,%d4 <== NOT EXECUTED
rtems_status_code sc;
size_t w;
rtems_bdbuf_lock_cache ();
for (w = 0; w < bdbuf_config.swapout_workers; w++)
4dca0: bc84 cmpl %d4,%d6 <== NOT EXECUTED
4dca2: 6686 bnes 4dc2a <rtems_bdbuf_swapout_task+0x74> <== NOT EXECUTED
&worker->id);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_CREATE);
}
rtems_bdbuf_unlock_cache ();
4dca4: 49fa ef56 lea %pc@(4cbfc <rtems_bdbuf_unlock_cache>),%a4
4dca8: 45fa edbe lea %pc@(4ca68 <rtems_bdbuf_swapout_modified_processing>),%a2
4dcac: 4e94 jsr %a4@
/*
* Create the worker threads.
*/
rtems_bdbuf_swapout_workers_open ();
while (bdbuf_cache.swapout_enabled)
4dcae: 4a39 0006 3758 tstb 63758 <bdbuf_cache+0x4>
4dcb4: 6700 0194 beqw 4de4a <rtems_bdbuf_swapout_task+0x294>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4dcb8: 2c0e movel %fp,%d6
4dcba: 0686 ffff ffee addil #-18,%d6
* @param arg A pointer to the global cache data. Use the global variable and
* not this.
* @return rtems_task Not used.
*/
static rtems_task
rtems_bdbuf_swapout_task (rtems_task_argument arg)
4dcc0: 7801 moveq #1,%d4
rtems_bdbuf_swapout_transfer* transfer)
{
rtems_bdbuf_swapout_worker* worker;
bool transfered_buffers = false;
rtems_bdbuf_lock_cache ();
4dcc2: 4e93 jsr %a3@
* here. We do not know the worker is the last in a sequence of sync writes
* until after we have it running so we do not know to tell it to release the
* lock. The simplest solution is to get the main swap out task perform all
* sync operations.
*/
if (bdbuf_cache.sync_active)
4dcc4: 4a39 0006 3782 tstb 63782 <bdbuf_cache+0x2e>
4dcca: 6600 00c2 bnew 4dd8e <rtems_bdbuf_swapout_task+0x1d8>
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4dcce: 2e39 0006 375a movel 6375a <bdbuf_cache+0x6>,%d7
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
4dcd4: 0c87 0006 375e cmpil #407390,%d7
4dcda: 6700 01d2 beqw 4deae <rtems_bdbuf_swapout_task+0x2f8>
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
4dcde: 2247 moveal %d7,%a1 <== NOT EXECUTED
head->next = new_first;
new_first->previous = head;
4dce0: 203c 0006 375a movel #407386,%d0 <== NOT EXECUTED
else
{
worker = (rtems_bdbuf_swapout_worker*)
rtems_chain_get_unprotected (&bdbuf_cache.swapout_workers);
if (worker)
transfer = &worker->transfer;
4dce6: 2a47 moveal %d7,%a5 <== NOT EXECUTED
4dce8: 4bed 000e lea %a5@(14),%a5 <== NOT EXECUTED
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
4dcec: 2051 moveal %a1@,%a0 <== NOT EXECUTED
head->next = new_first;
new_first->previous = head;
4dcee: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
4dcf2: 23c8 0006 375a movel %a0,6375a <bdbuf_cache+0x6> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4dcf8: 2a0d movel %a5,%d5
4dcfa: 5885 addql #4,%d5
/*
* If we have any buffers in the sync queue move them to the modified
* list. The first sync buffer will select the device we use.
*/
rtems_bdbuf_swapout_modified_processing (&transfer->dd,
4dcfc: 200d movel %a5,%d0
4dcfe: 0680 0000 000c addil #12,%d0
transfer = &worker->transfer;
}
rtems_chain_initialize_empty (&transfer->bds);
transfer->dd = BDBUF_INVALID_DEV;
transfer->syncing = bdbuf_cache.sync_active;
4dd04: 4201 clrb %d1
4dd06: 2a85 movel %d5,%a5@
timer_delta);
/*
* Process the cache's modified list.
*/
rtems_bdbuf_swapout_modified_processing (&transfer->dd,
4dd08: 7a01 moveq #1,%d5
head->next = tail;
head->previous = NULL;
4dd0a: 42ad 0004 clrl %a5@(4)
transfer = &worker->transfer;
}
rtems_chain_initialize_empty (&transfer->bds);
transfer->dd = BDBUF_INVALID_DEV;
transfer->syncing = bdbuf_cache.sync_active;
4dd0e: 1b41 0010 moveb %d1,%a5@(16)
tail->previous = head;
4dd12: 2b4d 0008 movel %a5,%a5@(8)
timer_delta);
/*
* Process the cache's modified list.
*/
rtems_bdbuf_swapout_modified_processing (&transfer->dd,
4dd16: ca84 andl %d4,%d5
if (worker)
transfer = &worker->transfer;
}
rtems_chain_initialize_empty (&transfer->bds);
transfer->dd = BDBUF_INVALID_DEV;
4dd18: 42ad 000c clrl %a5@(12)
/*
* If we have any buffers in the sync queue move them to the modified
* list. The first sync buffer will select the device we use.
*/
rtems_bdbuf_swapout_modified_processing (&transfer->dd,
4dd1c: 2f02 movel %d2,%sp@-
4dd1e: 42a7 clrl %sp@-
4dd20: 4878 0001 pea 1 <ADD>
4dd24: 2f0d movel %a5,%sp@-
4dd26: 4879 0006 37a8 pea 637a8 <bdbuf_cache+0x54>
4dd2c: 2d40 ffdc movel %d0,%fp@(-36)
4dd30: 2f00 movel %d0,%sp@-
4dd32: 4e92 jsr %a2@
timer_delta);
/*
* Process the cache's modified list.
*/
rtems_bdbuf_swapout_modified_processing (&transfer->dd,
4dd34: 202e ffdc movel %fp@(-36),%d0
4dd38: 4281 clrl %d1
4dd3a: 1239 0006 3782 moveb 63782 <bdbuf_cache+0x2e>,%d1
4dd40: 2f02 movel %d2,%sp@-
4dd42: 2f05 movel %d5,%sp@-
4dd44: 2f01 movel %d1,%sp@-
4dd46: 2f0d movel %a5,%sp@-
4dd48: 4879 0006 379c pea 6379c <bdbuf_cache+0x48>
4dd4e: 2f00 movel %d0,%sp@-
4dd50: 4e92 jsr %a2@
/*
* We have all the buffers that have been modified for this device so the
* cache can be unlocked because the state of each buffer has been set to
* TRANSFER.
*/
rtems_bdbuf_unlock_cache ();
4dd52: 4fef 0030 lea %sp@(48),%sp
4dd56: 4e94 jsr %a4@
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4dd58: 200d movel %a5,%d0
4dd5a: 5880 addql #4,%d0
/*
* If there are buffers to transfer to the media transfer them.
*/
if (!rtems_chain_is_empty (&transfer->bds))
4dd5c: b095 cmpl %a5@,%d0
4dd5e: 6700 0098 beqw 4ddf8 <rtems_bdbuf_swapout_task+0x242>
{
if (worker)
4dd62: 4a87 tstl %d7
4dd64: 6700 0088 beqw 4ddee <rtems_bdbuf_swapout_task+0x238>
{
rtems_status_code sc = rtems_event_send (worker->id,
4dd68: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
4dd6c: 2047 moveal %d7,%a0 <== NOT EXECUTED
4dd6e: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4dd72: 4eb9 0004 874c jsr 4874c <rtems_event_send> <== NOT EXECUTED
RTEMS_BDBUF_SWAPOUT_SYNC);
if (sc != RTEMS_SUCCESSFUL)
4dd78: 508f addql #8,%sp <== NOT EXECUTED
4dd7a: 4a80 tstl %d0 <== NOT EXECUTED
4dd7c: 6600 0138 bnew 4deb6 <rtems_bdbuf_swapout_task+0x300> <== NOT EXECUTED
}
/*
* Only update the timers once.
*/
update_timers = false;
4dd80: 4204 clrb %d4
rtems_bdbuf_swapout_transfer* transfer)
{
rtems_bdbuf_swapout_worker* worker;
bool transfered_buffers = false;
rtems_bdbuf_lock_cache ();
4dd82: 4e93 jsr %a3@
* here. We do not know the worker is the last in a sequence of sync writes
* until after we have it running so we do not know to tell it to release the
* lock. The simplest solution is to get the main swap out task perform all
* sync operations.
*/
if (bdbuf_cache.sync_active)
4dd84: 4a39 0006 3782 tstb 63782 <bdbuf_cache+0x2e>
4dd8a: 6700 ff42 beqw 4dcce <rtems_bdbuf_swapout_task+0x118>
* When the sync is for a device limit the sync to that device. If the sync
* is for a buffer handle process the devices in the order on the sync
* list. This means the dev is BDBUF_INVALID_DEV.
*/
if (bdbuf_cache.sync_active)
transfer->dd = bdbuf_cache.sync_device;
4dd8e: 41f9 0006 3788 lea 63788 <bdbuf_cache+0x34>,%a0
/*
* If we have any buffers in the sync queue move them to the modified
* list. The first sync buffer will select the device we use.
*/
rtems_bdbuf_swapout_modified_processing (&transfer->dd,
4dd94: 2f02 movel %d2,%sp@-
* When the sync is for a device limit the sync to that device. If the sync
* is for a buffer handle process the devices in the order on the sync
* list. This means the dev is BDBUF_INVALID_DEV.
*/
if (bdbuf_cache.sync_active)
transfer->dd = bdbuf_cache.sync_device;
4dd96: 2d50 fff6 movel %a0@,%fp@(-10)
transfer = &worker->transfer;
}
rtems_chain_initialize_empty (&transfer->bds);
transfer->dd = BDBUF_INVALID_DEV;
transfer->syncing = bdbuf_cache.sync_active;
4dd9a: 7001 moveq #1,%d0
/*
* If we have any buffers in the sync queue move them to the modified
* list. The first sync buffer will select the device we use.
*/
rtems_bdbuf_swapout_modified_processing (&transfer->dd,
4dd9c: 42a7 clrl %sp@-
4dd9e: 4878 0001 pea 1 <ADD>
transfer = &worker->transfer;
}
rtems_chain_initialize_empty (&transfer->bds);
transfer->dd = BDBUF_INVALID_DEV;
transfer->syncing = bdbuf_cache.sync_active;
4dda2: 1d40 fffa moveb %d0,%fp@(-6)
/*
* If we have any buffers in the sync queue move them to the modified
* list. The first sync buffer will select the device we use.
*/
rtems_bdbuf_swapout_modified_processing (&transfer->dd,
4dda6: 2f03 movel %d3,%sp@-
4dda8: 4879 0006 37a8 pea 637a8 <bdbuf_cache+0x54>
4ddae: 486e fff6 pea %fp@(-10)
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4ddb2: 2d46 ffea movel %d6,%fp@(-22)
head->previous = NULL;
4ddb6: 42ae ffee clrl %fp@(-18)
tail->previous = head;
4ddba: 2d43 fff2 movel %d3,%fp@(-14)
4ddbe: 4e92 jsr %a2@
timer_delta);
/*
* Process the cache's modified list.
*/
rtems_bdbuf_swapout_modified_processing (&transfer->dd,
4ddc0: 7201 moveq #1,%d1
4ddc2: 4280 clrl %d0
4ddc4: 1039 0006 3782 moveb 63782 <bdbuf_cache+0x2e>,%d0
4ddca: 2f02 movel %d2,%sp@-
4ddcc: c284 andl %d4,%d1
4ddce: 2f01 movel %d1,%sp@-
4ddd0: 2f00 movel %d0,%sp@-
4ddd2: 2f03 movel %d3,%sp@-
4ddd4: 4879 0006 379c pea 6379c <bdbuf_cache+0x48>
4ddda: 486e fff6 pea %fp@(-10)
4ddde: 4e92 jsr %a2@
/*
* We have all the buffers that have been modified for this device so the
* cache can be unlocked because the state of each buffer has been set to
* TRANSFER.
*/
rtems_bdbuf_unlock_cache ();
4dde0: 4fef 0030 lea %sp@(48),%sp
4dde4: 4e94 jsr %a4@
/*
* If there are buffers to transfer to the media transfer them.
*/
if (!rtems_chain_is_empty (&transfer->bds))
4dde6: bcae ffea cmpl %fp@(-22),%d6
4ddea: 670c beqs 4ddf8 <rtems_bdbuf_swapout_task+0x242>
/*
* Extact all the buffers we find for a specific device. The device is
* the first one we find on a modified list. Process the sync queue of
* buffers first.
*/
if (rtems_bdbuf_swapout_processing (timer_delta,
4ddec: 2a43 moveal %d3,%a5
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WAKE_2);
}
else
{
rtems_bdbuf_swapout_write (transfer);
4ddee: 2f0d movel %a5,%sp@-
4ddf0: 4eba fca8 jsr %pc@(4da9a <rtems_bdbuf_swapout_write>)
4ddf4: 588f addql #4,%sp
4ddf6: 6088 bras 4dd80 <rtems_bdbuf_swapout_task+0x1ca>
}
transfered_buffers = true;
}
if (bdbuf_cache.sync_active && !transfered_buffers)
4ddf8: 4a39 0006 3782 tstb 63782 <bdbuf_cache+0x2e>
4ddfe: 671c beqs 4de1c <rtems_bdbuf_swapout_task+0x266>
{
rtems_id sync_requester;
rtems_bdbuf_lock_cache ();
4de00: 4e93 jsr %a3@
sync_requester = bdbuf_cache.sync_requester;
4de02: 2839 0006 3784 movel 63784 <bdbuf_cache+0x30>,%d4
bdbuf_cache.sync_active = false;
4de08: 4200 clrb %d0
bdbuf_cache.sync_requester = 0;
4de0a: 42b9 0006 3784 clrl 63784 <bdbuf_cache+0x30>
if (bdbuf_cache.sync_active && !transfered_buffers)
{
rtems_id sync_requester;
rtems_bdbuf_lock_cache ();
sync_requester = bdbuf_cache.sync_requester;
bdbuf_cache.sync_active = false;
4de10: 13c0 0006 3782 moveb %d0,63782 <bdbuf_cache+0x2e>
bdbuf_cache.sync_requester = 0;
rtems_bdbuf_unlock_cache ();
4de16: 4e94 jsr %a4@
if (sync_requester)
4de18: 4a84 tstl %d4
4de1a: 667e bnes 4de9a <rtems_bdbuf_swapout_task+0x2e4> <== ALWAYS TAKEN
*/
update_timers = false;
}
while (transfered_buffers);
sc = rtems_event_receive (RTEMS_BDBUF_SWAPOUT_SYNC,
4de1c: 486e ffe6 pea %fp@(-26)
4de20: 2f2e ffe0 movel %fp@(-32),%sp@-
4de24: 42a7 clrl %sp@-
4de26: 4878 0004 pea 4 <CONTEXT_ARG>
4de2a: 4eb9 0004 85a0 jsr 485a0 <rtems_event_receive>
RTEMS_EVENT_ALL | RTEMS_WAIT,
period_in_ticks,
&out);
if ((sc != RTEMS_SUCCESSFUL) && (sc != RTEMS_TIMEOUT))
4de30: 4fef 0010 lea %sp@(16),%sp
4de34: 4a80 tstl %d0
4de36: 6708 beqs 4de40 <rtems_bdbuf_swapout_task+0x28a>
4de38: 7206 moveq #6,%d1
4de3a: b280 cmpl %d0,%d1
4de3c: 6600 0090 bnew 4dece <rtems_bdbuf_swapout_task+0x318>
/*
* Create the worker threads.
*/
rtems_bdbuf_swapout_workers_open ();
while (bdbuf_cache.swapout_enabled)
4de40: 4a39 0006 3758 tstb 63758 <bdbuf_cache+0x4>
4de46: 6600 fe78 bnew 4dcc0 <rtems_bdbuf_swapout_task+0x10a>
static void
rtems_bdbuf_swapout_workers_close (void)
{
rtems_chain_node* node;
rtems_bdbuf_lock_cache ();
4de4a: 4e93 jsr %a3@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
4de4c: 2479 0006 375a moveal 6375a <bdbuf_cache+0x6>,%a2 <== NOT EXECUTED
4de52: 47f9 0004 874c lea 4874c <rtems_event_send>,%a3 <== NOT EXECUTED
node = rtems_chain_first (&bdbuf_cache.swapout_workers);
while (!rtems_chain_is_tail (&bdbuf_cache.swapout_workers, node))
4de58: b5fc 0006 375e cmpal #407390,%a2 <== NOT EXECUTED
4de5e: 671c beqs 4de7c <rtems_bdbuf_swapout_task+0x2c6> <== NOT EXECUTED
{
rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) node;
worker->enabled = false;
4de60: 4205 clrb %d5 <== NOT EXECUTED
4de62: 1545 000c moveb %d5,%a2@(12) <== NOT EXECUTED
rtems_event_send (worker->id, RTEMS_BDBUF_SWAPOUT_SYNC);
4de66: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
4de6a: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
4de6e: 4e93 jsr %a3@ <== NOT EXECUTED
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)
{
rtems_bdbuf_lock_cache ();
memset (&dd->stats, 0, sizeof(dd->stats));
rtems_bdbuf_unlock_cache ();
}
4de70: 2452 moveal %a2@,%a2 <== NOT EXECUTED
rtems_chain_node* node;
rtems_bdbuf_lock_cache ();
node = rtems_chain_first (&bdbuf_cache.swapout_workers);
while (!rtems_chain_is_tail (&bdbuf_cache.swapout_workers, node))
4de72: 508f addql #8,%sp <== NOT EXECUTED
4de74: b5fc 0006 375e cmpal #407390,%a2 <== NOT EXECUTED
4de7a: 66e4 bnes 4de60 <rtems_bdbuf_swapout_task+0x2aa> <== NOT EXECUTED
worker->enabled = false;
rtems_event_send (worker->id, RTEMS_BDBUF_SWAPOUT_SYNC);
node = rtems_chain_next (node);
}
rtems_bdbuf_unlock_cache ();
4de7c: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SWAPOUT_RE);
}
rtems_bdbuf_swapout_workers_close ();
free (transfer.write_req);
4de7e: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4de82: 4eb9 0004 4528 jsr 44528 <free> <== NOT EXECUTED
rtems_task_delete (RTEMS_SELF);
4de88: 42a7 clrl %sp@- <== NOT EXECUTED
4de8a: 4eb9 0004 9014 jsr 49014 <rtems_task_delete> <== NOT EXECUTED
}
4de90: 4cee 3cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4de96: 4e5e unlk %fp <== NOT EXECUTED
4de98: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE rtems_status_code rtems_event_transient_send(
rtems_id id
)
{
return rtems_event_system_send( id, RTEMS_EVENT_SYSTEM_TRANSIENT );
4de9a: 2f3c 8000 0000 movel #-2147483648,%sp@-
4dea0: 2f04 movel %d4,%sp@-
4dea2: 4eb9 0004 8e60 jsr 48e60 <rtems_event_system_send>
4dea8: 508f addql #8,%sp
4deaa: 6000 ff70 braw 4de1c <rtems_bdbuf_swapout_task+0x266>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
4deae: 4287 clrl %d7
/*
* Extact all the buffers we find for a specific device. The device is
* the first one we find on a modified list. Process the sync queue of
* buffers first.
*/
if (rtems_bdbuf_swapout_processing (timer_delta,
4deb0: 2a43 moveal %d3,%a5
4deb2: 6000 fe44 braw 4dcf8 <rtems_bdbuf_swapout_task+0x142>
if (worker)
{
rtems_status_code sc = rtems_event_send (worker->id,
RTEMS_BDBUF_SWAPOUT_SYNC);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WAKE_2);
4deb6: 4878 000c pea c <OPER1> <== NOT EXECUTED
4deba: 4eba ecbc jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
{
rtems_bdbuf_swapout_worker* worker;
worker = malloc (sizeof (rtems_bdbuf_swapout_worker));
if (!worker)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_NOMEM);
4debe: 4878 000a pea a <LASTO> <== NOT EXECUTED
4dec2: 4eba ecb4 jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
RTEMS_BDBUF_SWAPOUT_WORKER_TASK_PRIORITY_DEFAULT,
rtems_bdbuf_swapout_worker_task,
(rtems_task_argument) worker,
&worker->id);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_CREATE);
4dec6: 4878 000d pea d <OPER1+0x1> <== NOT EXECUTED
4deca: 4eba ecac jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
RTEMS_EVENT_ALL | RTEMS_WAIT,
period_in_ticks,
&out);
if ((sc != RTEMS_SUCCESSFUL) && (sc != RTEMS_TIMEOUT))
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SWAPOUT_RE);
4dece: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED
4ded2: 4eba eca4 jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004ded6 <rtems_bdbuf_swapout_worker_task>:
* @param arg A pointer to the worker thread's private data.
* @return rtems_task Not used.
*/
static rtems_task
rtems_bdbuf_swapout_worker_task (rtems_task_argument arg)
{
4ded6: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4deda: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
4dede: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) arg;
while (worker->enabled)
4dee2: 4a2a 000c tstb %a2@(12) <== NOT EXECUTED
4dee6: 675e beqs 4df46 <rtems_bdbuf_swapout_worker_task+0x70><== NOT EXECUTED
4dee8: 240a movel %a2,%d2 <== NOT EXECUTED
4deea: 263c 0004 cd2a movel #314666,%d3 <== NOT EXECUTED
4def0: 0682 0000 000e addil #14,%d2 <== NOT EXECUTED
4def6: 4bfa fba2 lea %pc@(4da9a <rtems_bdbuf_swapout_write>),%a5<== NOT EXECUTED
4defa: 49fa ecb4 lea %pc@(4cbb0 <rtems_bdbuf_lock_cache>),%a4<== NOT EXECUTED
4defe: 47fa ecfc lea %pc@(4cbfc <rtems_bdbuf_unlock_cache>),%a3<== NOT EXECUTED
{
rtems_bdbuf_wait_for_event (RTEMS_BDBUF_SWAPOUT_SYNC);
4df02: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
4df06: 2043 moveal %d3,%a0 <== NOT EXECUTED
4df08: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_bdbuf_swapout_write (&worker->transfer);
4df0a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4df0c: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_bdbuf_lock_cache ();
4df0e: 4e94 jsr %a4@ <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4df10: 2079 0006 3762 moveal 63762 <bdbuf_cache+0xe>,%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4df16: 43ea 0012 lea %a2@(18),%a1 <== NOT EXECUTED
rtems_chain_initialize_empty (&worker->transfer.bds);
worker->transfer.dd = BDBUF_INVALID_DEV;
4df1a: 42aa 001a clrl %a2@(26) <== NOT EXECUTED
4df1e: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
4df22: 24bc 0006 375e movel #407390,%a2@ <== NOT EXECUTED
tail->previous = the_node;
4df28: 23ca 0006 3762 movel %a2,63762 <bdbuf_cache+0xe> <== NOT EXECUTED
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4df2e: 42aa 0012 clrl %a2@(18) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4df32: 2542 0016 movel %d2,%a2@(22) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
4df36: 208a movel %a2,%a0@ <== NOT EXECUTED
the_node->previous = old_last;
4df38: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
rtems_bdbuf_unlock_cache ();
4df3c: 4e93 jsr %a3@ <== NOT EXECUTED
static rtems_task
rtems_bdbuf_swapout_worker_task (rtems_task_argument arg)
{
rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) arg;
while (worker->enabled)
4df3e: 508f addql #8,%sp <== NOT EXECUTED
4df40: 4a2a 000c tstb %a2@(12) <== NOT EXECUTED
4df44: 66bc bnes 4df02 <rtems_bdbuf_swapout_worker_task+0x2c><== NOT EXECUTED
rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
rtems_bdbuf_unlock_cache ();
}
free (worker->transfer.write_req);
4df46: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED
4df4a: 47f9 0004 4528 lea 44528 <free>,%a3 <== NOT EXECUTED
4df50: 4e93 jsr %a3@ <== NOT EXECUTED
free (worker);
4df52: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4df54: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_task_delete (RTEMS_SELF);
4df56: 508f addql #8,%sp <== NOT EXECUTED
4df58: 42ae 0008 clrl %fp@(8) <== NOT EXECUTED
}
4df5c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4df62: 4e5e unlk %fp <== NOT EXECUTED
}
free (worker->transfer.write_req);
free (worker);
rtems_task_delete (RTEMS_SELF);
4df64: 4ef9 0004 9014 jmp 49014 <rtems_task_delete> <== NOT EXECUTED
0004da9a <rtems_bdbuf_swapout_write>:
*
* @param transfer The transfer transaction.
*/
static void
rtems_bdbuf_swapout_write (rtems_bdbuf_swapout_transfer* transfer)
{
4da9a: 4e56 ffd8 linkw %fp,#-40
4da9e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4daa2: 286e 0008 moveal %fp@(8),%a4
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_head( the_chain )->next;
4daa6: 224c moveal %a4,%a1
4daa8: 2e0c movel %a4,%d7
4daaa: 5887 addql #4,%d7
4daac: 2059 moveal %a1@+,%a0
printf ("bdbuf:swapout transfer: %08x\n", (unsigned) transfer->dd->dev);
/*
* If there are buffers to transfer to the media transfer them.
*/
if (!rtems_chain_is_empty (&transfer->bds))
4daae: be88 cmpl %a0,%d7
4dab0: 6700 009e beqw 4db50 <rtems_bdbuf_swapout_write+0xb6>
* The last block number used when the driver only supports
* continuous blocks in a single request.
*/
uint32_t last_block = 0;
rtems_disk_device *dd = transfer->dd;
4dab4: 2a2c 000c movel %a4@(12),%d5
uint32_t media_blocks_per_block = dd->media_blocks_per_block;
bool need_continuous_blocks =
(dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_MULTISECTOR_CONT) != 0;
4dab8: 2a45 moveal %d5,%a5
4daba: 7c01 moveq #1,%d6
* should be possible to make this change with little effect in this
* code. The array that is passed is broken in design and should be
* removed. Merging members of a struct into the first member is
* trouble waiting to happen.
*/
transfer->write_req->status = RTEMS_RESOURCE_IN_USE;
4dabc: 700c moveq #12,%d0
{
/*
* The last block number used when the driver only supports
* continuous blocks in a single request.
*/
uint32_t last_block = 0;
4dabe: 4284 clrl %d4
(transfer->write_req->bufnum >= bdbuf_config.max_write_blocks))
write = true;
if (write)
{
rtems_bdbuf_execute_transfer_request (dd, transfer->write_req, false);
4dac0: 243c 0004 d938 movel #317752,%d2
uint32_t last_block = 0;
rtems_disk_device *dd = transfer->dd;
uint32_t media_blocks_per_block = dd->media_blocks_per_block;
bool need_continuous_blocks =
(dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_MULTISECTOR_CONT) != 0;
4dac6: 246d 0008 moveal %a5@(8),%a2
* continuous blocks in a single request.
*/
uint32_t last_block = 0;
rtems_disk_device *dd = transfer->dd;
uint32_t media_blocks_per_block = dd->media_blocks_per_block;
4daca: 262d 002c movel %a5@(44),%d3
* should be possible to make this change with little effect in this
* code. The array that is passed is broken in design and should be
* removed. Merging members of a struct into the first member is
* trouble waiting to happen.
*/
transfer->write_req->status = RTEMS_RESOURCE_IN_USE;
4dace: 226c 0012 moveal %a4@(18),%a1
uint32_t last_block = 0;
rtems_disk_device *dd = transfer->dd;
uint32_t media_blocks_per_block = dd->media_blocks_per_block;
bool need_continuous_blocks =
(dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_MULTISECTOR_CONT) != 0;
4dad2: ccaa 000c andl %a2@(12),%d6
* should be possible to make this change with little effect in this
* code. The array that is passed is broken in design and should be
* removed. Merging members of a struct into the first member is
* trouble waiting to happen.
*/
transfer->write_req->status = RTEMS_RESOURCE_IN_USE;
4dad6: 2340 000c movel %d0,%a1@(12)
transfer->write_req->bufnum = 0;
4dada: 42a9 0010 clrl %a1@(16)
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
4dade: 2650 moveal %a0@,%a3
head->next = new_first;
4dae0: 288b movel %a3,%a4@
new_first->previous = head;
4dae2: 274c 0004 movel %a4,%a3@(4)
if (rtems_bdbuf_tracer)
printf ("bdbuf:swapout write: bd:%" PRIu32 ", bufnum:%" PRIu32 " mode:%s\n",
bd->block, transfer->write_req->bufnum,
need_continuous_blocks ? "MULTI" : "SCAT");
if (need_continuous_blocks && transfer->write_req->bufnum &&
4dae6: 4a86 tstl %d6
4dae8: 677c beqs 4db66 <rtems_bdbuf_swapout_write+0xcc>
4daea: 4aa9 0010 tstl %a1@(16)
4daee: 6776 beqs 4db66 <rtems_bdbuf_swapout_write+0xcc>
bd->block != last_block + media_blocks_per_block)
4daf0: 2004 movel %d4,%d0
4daf2: d083 addl %d3,%d0
if (rtems_bdbuf_tracer)
printf ("bdbuf:swapout write: bd:%" PRIu32 ", bufnum:%" PRIu32 " mode:%s\n",
bd->block, transfer->write_req->bufnum,
need_continuous_blocks ? "MULTI" : "SCAT");
if (need_continuous_blocks && transfer->write_req->bufnum &&
4daf4: b0a8 0016 cmpl %a0@(22),%d0
4daf8: 676c beqs 4db66 <rtems_bdbuf_swapout_write+0xcc>
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4dafa: 214c 0004 movel %a4,%a0@(4)
before_node = after_node->next;
after_node->next = the_node;
4dafe: 2888 movel %a0,%a4@
bd->block != last_block + media_blocks_per_block)
{
rtems_chain_prepend_unprotected (&transfer->bds, &bd->link);
write = true;
4db00: 7201 moveq #1,%d1
the_node->next = before_node;
4db02: 208b movel %a3,%a0@
before_node->previous = the_node;
4db04: 2748 0004 movel %a0,%a3@(4)
4db08: 2054 moveal %a4@,%a0
/*
* Perform the transfer if there are no more buffers, or the transfer
* size has reached the configured max. value.
*/
if (rtems_chain_is_empty (&transfer->bds) ||
4db0a: b1c7 cmpal %d7,%a0
4db0c: 670c beqs 4db1a <rtems_bdbuf_swapout_write+0x80>
4db0e: 2039 0006 0c16 movel 60c16 <rtems_bdbuf_configuration+0x4>,%d0
4db14: b0a9 0010 cmpl %a1@(16),%d0
4db18: 6240 bhis 4db5a <rtems_bdbuf_swapout_write+0xc0>
(transfer->write_req->bufnum >= bdbuf_config.max_write_blocks))
write = true;
if (write)
{
rtems_bdbuf_execute_transfer_request (dd, transfer->write_req, false);
4db1a: 42a7 clrl %sp@-
4db1c: 2042 moveal %d2,%a0
4db1e: 2f09 movel %a1,%sp@-
4db20: 2f05 movel %d5,%sp@-
4db22: 4e90 jsr %a0@
transfer->write_req->status = RTEMS_RESOURCE_IN_USE;
4db24: 226c 0012 moveal %a4@(18),%a1
4db28: 700c moveq #12,%d0
4db2a: 4fef 000c lea %sp@(12),%sp
4db2e: 2054 moveal %a4@,%a0
4db30: 2340 000c movel %d0,%a1@(12)
transfer->write_req->bufnum = 0;
4db34: 42a9 0010 clrl %a1@(16)
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
4db38: b1c7 cmpal %d7,%a0
4db3a: 66a2 bnes 4dade <rtems_bdbuf_swapout_write+0x44>
/*
* If sync'ing and the deivce is capability of handling a sync IO control
* call perform the call.
*/
if (transfer->syncing &&
4db3c: 4a2c 0010 tstb %a4@(16)
4db40: 670e beqs 4db50 <rtems_bdbuf_swapout_write+0xb6>
(dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_SYNC))
4db42: 2245 moveal %d5,%a1
4db44: 7002 moveq #2,%d0
4db46: 2069 0008 moveal %a1@(8),%a0
4db4a: c0a8 000c andl %a0@(12),%d0
/*
* If sync'ing and the deivce is capability of handling a sync IO control
* call perform the call.
*/
if (transfer->syncing &&
4db4e: 664a bnes 4db9a <rtems_bdbuf_swapout_write+0x100><== NEVER TAKEN
{
/* int result = */ dd->ioctl (dd->phys_dev, RTEMS_BLKDEV_REQ_SYNC, NULL);
/* How should the error be handled ? */
}
}
}
4db50: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5
4db56: 4e5e unlk %fp
4db58: 4e75 rts
if (rtems_chain_is_empty (&transfer->bds) ||
(transfer->write_req->bufnum >= bdbuf_config.max_write_blocks))
write = true;
if (write)
4db5a: 4a01 tstb %d1
4db5c: 66bc bnes 4db1a <rtems_bdbuf_swapout_write+0x80>
4db5e: b1c7 cmpal %d7,%a0
4db60: 6600 ff7c bnew 4dade <rtems_bdbuf_swapout_write+0x44>
4db64: 60d6 bras 4db3c <rtems_bdbuf_swapout_write+0xa2> <== NOT EXECUTED
write = true;
}
else
{
rtems_blkdev_sg_buffer* buf;
buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
4db66: 2029 0010 movel %a1@(16),%d0
transfer->write_req->bufnum++;
4db6a: 2200 movel %d0,%d1
4db6c: 5281 addql #1,%d1
buf->user = bd;
buf->block = bd->block;
buf->length = dd->block_size;
4db6e: 2a45 moveal %d5,%a5
4db70: 4bed 0024 lea %a5@(36),%a5
write = true;
}
else
{
rtems_blkdev_sg_buffer* buf;
buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
4db74: e988 lsll #4,%d0
transfer->write_req->bufnum++;
buf->user = bd;
buf->block = bd->block;
4db76: 2828 0016 movel %a0@(22),%d4
write = true;
}
else
{
rtems_blkdev_sg_buffer* buf;
buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
4db7a: 45f1 0818 lea %a1@(00000018,%d0:l),%a2
transfer->write_req->bufnum++;
4db7e: 2341 0010 movel %d1,%a1@(16)
buf->user = bd;
buf->block = bd->block;
buf->length = dd->block_size;
4db82: 2555 0004 movel %a5@,%a2@(4)
buf->buffer = bd->buffer;
4db86: 2568 001a 0008 movel %a0@(26),%a2@(8)
transfer->write_req->bufnum = 0;
while ((node = rtems_chain_get_unprotected(&transfer->bds)) != NULL)
{
rtems_bdbuf_buffer* bd = (rtems_bdbuf_buffer*) node;
bool write = false;
4db8c: 4201 clrb %d1
else
{
rtems_blkdev_sg_buffer* buf;
buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
transfer->write_req->bufnum++;
buf->user = bd;
4db8e: 2548 000c movel %a0,%a2@(12)
buf->block = bd->block;
buf->length = dd->block_size;
buf->buffer = bd->buffer;
4db92: 204b moveal %a3,%a0
{
rtems_blkdev_sg_buffer* buf;
buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
transfer->write_req->bufnum++;
buf->user = bd;
buf->block = bd->block;
4db94: 2484 movel %d4,%a2@
4db96: 6000 ff72 braw 4db0a <rtems_bdbuf_swapout_write+0x70>
* call perform the call.
*/
if (transfer->syncing &&
(dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_SYNC))
{
/* int result = */ dd->ioctl (dd->phys_dev, RTEMS_BLKDEV_REQ_SYNC, NULL);
4db9a: 42a7 clrl %sp@- <== NOT EXECUTED
4db9c: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4dba0: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4dba2: 2069 0038 moveal %a1@(56),%a0 <== NOT EXECUTED
4dba6: 4e90 jsr %a0@ <== NOT EXECUTED
4dba8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/* How should the error be handled ? */
}
}
}
4dbac: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4dbb2: 4e5e unlk %fp <== NOT EXECUTED
0004cd64 <rtems_bdbuf_swapout_writereq_alloc>:
*
* @return rtems_blkdev_request* The write reference memory.
*/
static rtems_blkdev_request*
rtems_bdbuf_swapout_writereq_alloc (void)
{
4cd64: 4e56 0000 linkw %fp,#0
* have been a rtems_chain_control. Simple, fast and less storage as the node
* is already part of the buffer structure.
*/
rtems_blkdev_request* write_req =
malloc (sizeof (rtems_blkdev_request) +
(bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
4cd68: 2039 0006 0c16 movel 60c16 <rtems_bdbuf_configuration+0x4>,%d0
4cd6e: e988 lsll #4,%d0
*
* @return rtems_blkdev_request* The write reference memory.
*/
static rtems_blkdev_request*
rtems_bdbuf_swapout_writereq_alloc (void)
{
4cd70: 2f0a movel %a2,%sp@-
* @note chrisj The rtems_blkdev_request and the array at the end is a hack.
* I am disappointment at finding code like this in RTEMS. The request should
* have been a rtems_chain_control. Simple, fast and less storage as the node
* is already part of the buffer structure.
*/
rtems_blkdev_request* write_req =
4cd72: 2040 moveal %d0,%a0
4cd74: 4868 0018 pea %a0@(24)
4cd78: 4eb9 0004 49d4 jsr 449d4 <malloc>
malloc (sizeof (rtems_blkdev_request) +
(bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
if (!write_req)
4cd7e: 588f addql #4,%sp
* @note chrisj The rtems_blkdev_request and the array at the end is a hack.
* I am disappointment at finding code like this in RTEMS. The request should
* have been a rtems_chain_control. Simple, fast and less storage as the node
* is already part of the buffer structure.
*/
rtems_blkdev_request* write_req =
4cd80: 2440 moveal %d0,%a2
malloc (sizeof (rtems_blkdev_request) +
(bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
if (!write_req)
4cd82: 4a80 tstl %d0
4cd84: 6722 beqs 4cda8 <rtems_bdbuf_swapout_writereq_alloc+0x44><== NEVER TAKEN
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_REQ_NOMEM);
write_req->req = RTEMS_BLKDEV_REQ_WRITE;
4cd86: 7001 moveq #1,%d0
4cd88: 2480 movel %d0,%a2@
write_req->done = rtems_bdbuf_transfer_done;
4cd8a: 203c 0004 e04a movel #319562,%d0
4cd90: 2540 0004 movel %d0,%a2@(4)
write_req->io_task = rtems_task_self ();
4cd94: 4eb9 0005 0a78 jsr 50a78 <rtems_task_self>
4cd9a: 2540 0014 movel %d0,%a2@(20)
return write_req;
}
4cd9e: 200a movel %a2,%d0
4cda0: 246e fffc moveal %fp@(-4),%a2
4cda4: 4e5e unlk %fp
4cda6: 4e75 rts
rtems_blkdev_request* write_req =
malloc (sizeof (rtems_blkdev_request) +
(bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
if (!write_req)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_REQ_NOMEM);
4cda8: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED
4cdac: 4eba fdca jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004ea00 <rtems_bdbuf_sync>:
rtems_status_code
rtems_bdbuf_sync (rtems_bdbuf_buffer *bd)
{
4ea00: 4e56 fff4 linkw %fp,#-12
4ea04: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4ea08: 246e 0008 moveal %fp@(8),%a2
}
static rtems_status_code
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{
if (bd == NULL)
4ea0c: 4a8a tstl %a2
4ea0e: 6700 008e beqw 4ea9e <rtems_bdbuf_sync+0x9e>
if (rtems_bdbuf_tracer)
{
printf ("bdbuf:%s: %" PRIu32 "\n", kind, bd->block);
rtems_bdbuf_show_users (kind, bd);
}
rtems_bdbuf_lock_cache();
4ea12: 4eba e19c jsr %pc@(4cbb0 <rtems_bdbuf_lock_cache>)
sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "sync");
if (sc != RTEMS_SUCCESSFUL)
return sc;
switch (bd->state)
4ea16: 202a 001e movel %a2@(30),%d0
4ea1a: 7203 moveq #3,%d1
4ea1c: b280 cmpl %d0,%d1
4ea1e: 630a blss 4ea2a <rtems_bdbuf_sync+0x2a> <== ALWAYS TAKEN
break;
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
rtems_bdbuf_discard_buffer_after_access (bd);
break;
default:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_5);
4ea20: 4878 0011 pea 11 <INVALID_OPERATION+0x1> <== NOT EXECUTED
4ea24: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4ea26: 4eba e19e jsr %pc@(4cbc6 <rtems_bdbuf_fatal_with_state>)<== NOT EXECUTED
sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "sync");
if (sc != RTEMS_SUCCESSFUL)
return sc;
switch (bd->state)
4ea2a: 7405 moveq #5,%d2
4ea2c: b480 cmpl %d0,%d2
4ea2e: 6420 bccs 4ea50 <rtems_bdbuf_sync+0x50>
4ea30: 123c 0006 moveb #6,%d1
4ea34: b280 cmpl %d0,%d1
4ea36: 66e8 bnes 4ea20 <rtems_bdbuf_sync+0x20> <== NEVER TAKEN
case RTEMS_BDBUF_STATE_ACCESS_EMPTY:
case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:
rtems_bdbuf_sync_after_access (bd);
break;
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
rtems_bdbuf_discard_buffer_after_access (bd);
4ea38: 2f0a movel %a2,%sp@-
4ea3a: 4eba e870 jsr %pc@(4d2ac <rtems_bdbuf_discard_buffer_after_access>)
break;
4ea3e: 588f addql #4,%sp
}
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
4ea40: 4eba e1ba jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
return RTEMS_SUCCESSFUL;
4ea44: 4280 clrl %d0
}
4ea46: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4ea4c: 4e5e unlk %fp
4ea4e: 4e75 rts
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4ea50: 2079 0006 37b0 moveal 637b0 <bdbuf_cache+0x5c>,%a0
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4ea56: 7408 moveq #8,%d2
4ea58: 2542 001e movel %d2,%a2@(30)
the_node->next = tail;
4ea5c: 24bc 0006 37ac movel #407468,%a2@
tail->previous = the_node;
4ea62: 23ca 0006 37b0 movel %a2,637b0 <bdbuf_cache+0x5c>
old_last->next = the_node;
4ea68: 208a movel %a2,%a0@
the_node->previous = old_last;
4ea6a: 2548 0004 movel %a0,%a2@(4)
{
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);
rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);
if (bd->waiters)
4ea6e: 4aaa 0022 tstl %a2@(34)
4ea72: 6636 bnes 4eaaa <rtems_bdbuf_sync+0xaa>
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
rtems_bdbuf_wake_swapper ();
4ea74: 4eba e19e jsr %pc@(4cc14 <rtems_bdbuf_wake_swapper>)
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
return;
case RTEMS_BDBUF_STATE_SYNC:
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
4ea78: 47fa e27c lea %pc@(4ccf6 <rtems_bdbuf_wait>),%a3
static void
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4ea7c: 202a 001e movel %a2@(30),%d0
4ea80: 7201 moveq #1,%d1
4ea82: b280 cmpl %d0,%d1
4ea84: 620e bhis 4ea94 <rtems_bdbuf_sync+0x94> <== NEVER TAKEN
4ea86: 7407 moveq #7,%d2
4ea88: b480 cmpl %d0,%d2
4ea8a: 644c bccs 4ead8 <rtems_bdbuf_sync+0xd8>
4ea8c: 123c 000a moveb #10,%d1
4ea90: b280 cmpl %d0,%d1
4ea92: 642c bccs 4eac0 <rtems_bdbuf_sync+0xc0> <== ALWAYS TAKEN
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
break;
default:
rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_9);
4ea94: 4878 0015 pea 15 <OPER2+0x1> <== NOT EXECUTED
4ea98: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4ea9a: 4eba e12a jsr %pc@(4cbc6 <rtems_bdbuf_fatal_with_state>)<== NOT EXECUTED
static rtems_status_code
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{
if (bd == NULL)
return RTEMS_INVALID_ADDRESS;
4ea9e: 7009 moveq #9,%d0 <== NOT EXECUTED
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
return RTEMS_SUCCESSFUL;
}
4eaa0: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4eaa6: 4e5e unlk %fp <== NOT EXECUTED
4eaa8: 4e75 rts <== NOT EXECUTED
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);
rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
4eaaa: 4879 0006 37b4 pea 637b4 <bdbuf_cache+0x60>
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
return;
case RTEMS_BDBUF_STATE_SYNC:
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
4eab0: 47fa e244 lea %pc@(4ccf6 <rtems_bdbuf_wait>),%a3
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);
rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
4eab4: 4eba e33c jsr %pc@(4cdf2 <rtems_bdbuf_wake>)
4eab8: 588f addql #4,%sp
rtems_bdbuf_wake_swapper ();
4eaba: 4eba e158 jsr %pc@(4cc14 <rtems_bdbuf_wake_swapper>)
4eabe: 60bc bras 4ea7c <rtems_bdbuf_sync+0x7c>
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
return;
case RTEMS_BDBUF_STATE_SYNC:
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
4eac0: 4879 0006 37bc pea 637bc <bdbuf_cache+0x68>
4eac6: 2f0a movel %a2,%sp@-
4eac8: 4e93 jsr %a3@
static void
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4eaca: 202a 001e movel %a2@(30),%d0
case RTEMS_BDBUF_STATE_ACCESS_PURGED:
return;
case RTEMS_BDBUF_STATE_SYNC:
case RTEMS_BDBUF_STATE_TRANSFER:
case RTEMS_BDBUF_STATE_TRANSFER_PURGED:
rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);
4eace: 508f addql #8,%sp
static void
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)
{
while (true)
{
switch (bd->state)
4ead0: 7201 moveq #1,%d1
4ead2: b280 cmpl %d0,%d1
4ead4: 62be bhis 4ea94 <rtems_bdbuf_sync+0x94> <== NEVER TAKEN
4ead6: 60ae bras 4ea86 <rtems_bdbuf_sync+0x86>
rtems_bdbuf_wait_for_sync_done (bd);
/*
* We may have created a cached or empty buffer which may be recycled.
*/
if (bd->waiters == 0
4ead8: 4aaa 0022 tstl %a2@(34)
4eadc: 6600 ff62 bnew 4ea40 <rtems_bdbuf_sync+0x40>
&& (bd->state == RTEMS_BDBUF_STATE_CACHED
|| bd->state == RTEMS_BDBUF_STATE_EMPTY))
4eae0: 2200 movel %d0,%d1
4eae2: 5381 subql #1,%d1
/*
* We may have created a cached or empty buffer which may be recycled.
*/
if (bd->waiters == 0
&& (bd->state == RTEMS_BDBUF_STATE_CACHED
4eae4: 7401 moveq #1,%d2
4eae6: b481 cmpl %d1,%d2
4eae8: 6500 ff56 bcsw 4ea40 <rtems_bdbuf_sync+0x40>
|| bd->state == RTEMS_BDBUF_STATE_EMPTY))
{
if (bd->state == RTEMS_BDBUF_STATE_EMPTY)
4eaec: b480 cmpl %d0,%d2
4eaee: 6716 beqs 4eb06 <rtems_bdbuf_sync+0x106>
{
rtems_bdbuf_remove_from_tree (bd);
rtems_bdbuf_make_free_and_add_to_lru_list (bd);
}
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4eaf0: 4879 0006 37c4 pea 637c4 <bdbuf_cache+0x70>
4eaf6: 4eba e2fa jsr %pc@(4cdf2 <rtems_bdbuf_wake>)
4eafa: 588f addql #4,%sp
}
if (rtems_bdbuf_tracer)
rtems_bdbuf_show_usage ();
rtems_bdbuf_unlock_cache ();
4eafc: 4eba e0fe jsr %pc@(4cbfc <rtems_bdbuf_unlock_cache>)
return RTEMS_SUCCESSFUL;
4eb00: 4280 clrl %d0
4eb02: 6000 ff42 braw 4ea46 <rtems_bdbuf_sync+0x46>
&& (bd->state == RTEMS_BDBUF_STATE_CACHED
|| bd->state == RTEMS_BDBUF_STATE_EMPTY))
{
if (bd->state == RTEMS_BDBUF_STATE_EMPTY)
{
rtems_bdbuf_remove_from_tree (bd);
4eb06: 2f0a movel %a2,%sp@-
4eb08: 4eba e45e jsr %pc@(4cf68 <rtems_bdbuf_remove_from_tree>)
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4eb0c: 2079 0006 3790 moveal 63790 <bdbuf_cache+0x3c>,%a0
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4eb12: 203c 0006 3790 movel #407440,%d0
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
before_node->previous = the_node;
4eb18: 588f addql #4,%sp
}
static void
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{
bd->state = state;
4eb1a: 42aa 001e clrl %a2@(30)
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4eb1e: 2540 0004 movel %d0,%a2@(4)
before_node = after_node->next;
after_node->next = the_node;
4eb22: 23ca 0006 3790 movel %a2,63790 <bdbuf_cache+0x3c>
the_node->next = before_node;
before_node->previous = the_node;
4eb28: 214a 0004 movel %a2,%a0@(4)
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
4eb2c: 2488 movel %a0,%a2@
if (bd->state == RTEMS_BDBUF_STATE_EMPTY)
{
rtems_bdbuf_remove_from_tree (bd);
rtems_bdbuf_make_free_and_add_to_lru_list (bd);
}
rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);
4eb2e: 4879 0006 37c4 pea 637c4 <bdbuf_cache+0x70>
4eb34: 4eba e2bc jsr %pc@(4cdf2 <rtems_bdbuf_wake>)
4eb38: 588f addql #4,%sp
4eb3a: 60c0 bras 4eafc <rtems_bdbuf_sync+0xfc>
0004cbdc <rtems_bdbuf_unlock>:
* @param lock The mutex to unlock.
* @param fatal_error_code The error code if the call fails.
*/
static void
rtems_bdbuf_unlock (rtems_id lock, uint32_t fatal_error_code)
{
4cbdc: 4e56 0000 linkw %fp,#0
rtems_status_code sc = rtems_semaphore_release (lock);
4cbe0: 2f2e 0008 movel %fp@(8),%sp@-
4cbe4: 4eb9 0004 8da0 jsr 48da0 <rtems_semaphore_release>
if (sc != RTEMS_SUCCESSFUL)
4cbea: 588f addql #4,%sp
4cbec: 4a80 tstl %d0
4cbee: 6604 bnes 4cbf4 <rtems_bdbuf_unlock+0x18> <== NEVER TAKEN
rtems_bdbuf_fatal (fatal_error_code);
}
4cbf0: 4e5e unlk %fp
4cbf2: 4e75 rts
static void
rtems_bdbuf_unlock (rtems_id lock, uint32_t fatal_error_code)
{
rtems_status_code sc = rtems_semaphore_release (lock);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (fatal_error_code);
4cbf4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4cbf8: 4eba ff7e jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004cd2a <rtems_bdbuf_wait_for_event>:
return RTEMS_UNSATISFIED;
}
static void
rtems_bdbuf_wait_for_event (rtems_event_set event)
{
4cd2a: 4e56 fffc linkw %fp,#-4
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_event_set out = 0;
4cd2e: 204e moveal %fp,%a0
return RTEMS_UNSATISFIED;
}
static void
rtems_bdbuf_wait_for_event (rtems_event_set event)
{
4cd30: 2f02 movel %d2,%sp@-
4cd32: 242e 0008 movel %fp@(8),%d2
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_event_set out = 0;
4cd36: 42a0 clrl %a0@-
sc = rtems_event_receive (event,
4cd38: 2f08 movel %a0,%sp@-
4cd3a: 42a7 clrl %sp@-
4cd3c: 42a7 clrl %sp@-
4cd3e: 2f02 movel %d2,%sp@-
4cd40: 4eb9 0004 85a0 jsr 485a0 <rtems_event_receive>
RTEMS_EVENT_ALL | RTEMS_WAIT,
RTEMS_NO_TIMEOUT,
&out);
if (sc != RTEMS_SUCCESSFUL || out != event)
4cd46: 4fef 0010 lea %sp@(16),%sp
4cd4a: 4a80 tstl %d0
4cd4c: 660e bnes 4cd5c <rtems_bdbuf_wait_for_event+0x32><== NEVER TAKEN
4cd4e: b4ae fffc cmpl %fp@(-4),%d2
4cd52: 6608 bnes 4cd5c <rtems_bdbuf_wait_for_event+0x32><== NEVER TAKEN
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_EVNT);
}
4cd54: 242e fff8 movel %fp@(-8),%d2
4cd58: 4e5e unlk %fp
4cd5a: 4e75 rts
RTEMS_EVENT_ALL | RTEMS_WAIT,
RTEMS_NO_TIMEOUT,
&out);
if (sc != RTEMS_SUCCESSFUL || out != event)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_EVNT);
4cd5c: 4878 001c pea 1c <OPER2+0x8> <== NOT EXECUTED
4cd60: 4eba fe16 jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004d90c <rtems_bdbuf_wait_for_transient_event>:
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_EVNT);
}
static void
rtems_bdbuf_wait_for_transient_event (void)
{
4d90c: 4e56 fffc linkw %fp,#-4
rtems_interval ticks
)
{
rtems_event_set event_out;
return rtems_event_system_receive(
4d910: 486e fffc pea %fp@(-4)
4d914: 42a7 clrl %sp@-
4d916: 42a7 clrl %sp@-
4d918: 2f3c 8000 0000 movel #-2147483648,%sp@-
4d91e: 4eb9 0005 0878 jsr 50878 <rtems_event_system_receive>
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_event_transient_receive (RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
4d924: 4fef 0010 lea %sp@(16),%sp
4d928: 4a80 tstl %d0
4d92a: 6604 bnes 4d930 <rtems_bdbuf_wait_for_transient_event+0x24><== NEVER TAKEN
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_TRANS_EVNT);
}
4d92c: 4e5e unlk %fp
4d92e: 4e75 rts
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_event_transient_receive (RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_TRANS_EVNT);
4d930: 4878 001d pea 1d <OPER2+0x9> <== NOT EXECUTED
4d934: 4eba f242 jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004cdf2 <rtems_bdbuf_wake>:
* Wake a blocked resource. The resource has a counter that lets us know if
* there are any waiters.
*/
static void
rtems_bdbuf_wake (const rtems_bdbuf_waiters *waiters)
{
4cdf2: 4e56 0000 linkw %fp,#0
4cdf6: 206e 0008 moveal %fp@(8),%a0
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (waiters->count > 0)
4cdfa: 4a90 tstl %a0@
4cdfc: 6604 bnes 4ce02 <rtems_bdbuf_wake+0x10>
{
sc = rtems_semaphore_flush (waiters->sema);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAKE);
}
}
4cdfe: 4e5e unlk %fp
4ce00: 4e75 rts
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (waiters->count > 0)
{
sc = rtems_semaphore_flush (waiters->sema);
4ce02: 2f28 0004 movel %a0@(4),%sp@-
4ce06: 4eb9 0005 07cc jsr 507cc <rtems_semaphore_flush>
if (sc != RTEMS_SUCCESSFUL)
4ce0c: 588f addql #4,%sp
4ce0e: 4a80 tstl %d0
4ce10: 67ec beqs 4cdfe <rtems_bdbuf_wake+0xc> <== ALWAYS TAKEN
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAKE);
4ce12: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
4ce16: 4eba fd60 jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
0004cc14 <rtems_bdbuf_wake_swapper>:
}
}
static void
rtems_bdbuf_wake_swapper (void)
{
4cc14: 4e56 0000 linkw %fp,#0
rtems_status_code sc = rtems_event_send (bdbuf_cache.swapout,
4cc18: 4878 0004 pea 4 <CONTEXT_ARG>
4cc1c: 2f39 0006 3754 movel 63754 <bdbuf_cache>,%sp@-
4cc22: 4eb9 0004 874c jsr 4874c <rtems_event_send>
RTEMS_BDBUF_SWAPOUT_SYNC);
if (sc != RTEMS_SUCCESSFUL)
4cc28: 508f addql #8,%sp
4cc2a: 4a80 tstl %d0
4cc2c: 6604 bnes 4cc32 <rtems_bdbuf_wake_swapper+0x1e> <== NEVER TAKEN
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WAKE_1);
}
4cc2e: 4e5e unlk %fp
4cc30: 4e75 rts
rtems_bdbuf_wake_swapper (void)
{
rtems_status_code sc = rtems_event_send (bdbuf_cache.swapout,
RTEMS_BDBUF_SWAPOUT_SYNC);
if (sc != RTEMS_SUCCESSFUL)
rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WAKE_1);
4cc32: 4878 000b pea b <LASTO+0x1> <== NOT EXECUTED
4cc36: 4eba ff40 jsr %pc@(4cb78 <rtems_bdbuf_fatal>) <== NOT EXECUTED
000427ec <rtems_bdpart_create>:
const rtems_bdpart_format *format,
rtems_bdpart_partition *pt,
const unsigned *dist,
size_t count
)
{
427ec: 4e56 ffd0 linkw %fp,#-48
427f0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
427f4: 246e 000c moveal %fp@(12),%a2
427f8: 262e 0018 movel %fp@(24),%d3
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
&& format->type == RTEMS_BDPART_FORMAT_MBR
&& format->mbr.dos_compatibility;
427fc: 4a8a tstl %a2
427fe: 6700 0190 beqw 42990 <rtems_bdpart_create+0x1a4>
size_t count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
&& format->type == RTEMS_BDPART_FORMAT_MBR
42802: 4a92 tstl %a2@
42804: 6606 bnes 4280c <rtems_bdpart_create+0x20> <== NEVER TAKEN
&& format->mbr.dos_compatibility;
42806: 4a2a 0008 tstb %a2@(8)
4280a: 6664 bnes 42870 <rtems_bdpart_create+0x84> <== ALWAYS TAKEN
rtems_blkdev_bnum disk_end = 0;
4280c: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
rtems_blkdev_bnum overhead = 0;
rtems_blkdev_bnum free_space = 0;
size_t i = 0;
/* Check if we have something to do */
if (count == 0) {
42810: 4a83 tstl %d3 <== NOT EXECUTED
42812: 6764 beqs 42878 <rtems_bdpart_create+0x8c> <== NOT EXECUTED
&& format->type == RTEMS_BDPART_FORMAT_MBR
&& format->mbr.dos_compatibility;
rtems_blkdev_bnum disk_end = 0;
rtems_blkdev_bnum pos = 0;
rtems_blkdev_bnum dist_sum = 0;
rtems_blkdev_bnum record_space =
42814: 7801 moveq #1,%d4 <== NOT EXECUTED
const unsigned *dist,
size_t count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
42816: 4205 clrb %d5 <== NOT EXECUTED
/* Nothing to do */
return RTEMS_SUCCESSFUL;
}
/* Check parameter */
if (format == NULL || pt == NULL || dist == NULL) {
42818: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
4281c: 6770 beqs 4288e <rtems_bdpart_create+0xa2> <== NOT EXECUTED
4281e: 4aae 0014 tstl %fp@(20)
42822: 676a beqs 4288e <rtems_bdpart_create+0xa2> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
}
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, NULL, NULL, &disk_end);
42824: 486e fffc pea %fp@(-4)
42828: 42a7 clrl %sp@-
4282a: 42a7 clrl %sp@-
4282c: 2f2e 0008 movel %fp@(8),%sp@-
42830: 4eb9 0004 2d98 jsr 42d98 <rtems_bdpart_get_disk_data>
if (sc != RTEMS_SUCCESSFUL) {
42836: 4fef 0010 lea %sp@(16),%sp
4283a: 4a80 tstl %d0
4283c: 663c bnes 4287a <rtems_bdpart_create+0x8e> <== NEVER TAKEN
/* Get distribution sum and check for overflow */
for (i = 0; i < count; ++i) {
unsigned prev_sum = dist_sum;
dist_sum += dist [i];
4283e: 206e 0014 moveal %fp@(20),%a0
42842: 2c10 movel %a0@,%d6
if (dist_sum < prev_sum) {
return RTEMS_INVALID_NUMBER;
}
if (dist [i] == 0) {
42844: 6700 00c8 beqw 4290e <rtems_bdpart_create+0x122>
#endif
#include <rtems.h>
#include <rtems/bdpart.h>
rtems_status_code rtems_bdpart_create(
42848: 2848 moveal %a0,%a4
4284a: 588c addql #4,%a4
4284c: 264c moveal %a4,%a3
4284e: 2406 movel %d6,%d2
42850: 4281 clrl %d1
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
/* Get distribution sum and check for overflow */
for (i = 0; i < count; ++i) {
42852: 5281 addql #1,%d1
42854: b283 cmpl %d3,%d1
42856: 6400 00c2 bccw 4291a <rtems_bdpart_create+0x12e>
unsigned prev_sum = dist_sum;
dist_sum += dist [i];
4285a: 205b moveal %a3@+,%a0
4285c: 43f0 2800 lea %a0@(00000000,%d2:l),%a1
if (dist_sum < prev_sum) {
42860: b489 cmpl %a1,%d2
42862: 6200 00aa bhiw 4290e <rtems_bdpart_create+0x122>
return RTEMS_INVALID_NUMBER;
}
if (dist [i] == 0) {
42866: 4a88 tstl %a0
42868: 6700 00a4 beqw 4290e <rtems_bdpart_create+0x122>
/* Get distribution sum and check for overflow */
for (i = 0; i < count; ++i) {
unsigned prev_sum = dist_sum;
dist_sum += dist [i];
4286c: 2409 movel %a1,%d2
4286e: 60e2 bras 42852 <rtems_bdpart_create+0x66>
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
&& format->type == RTEMS_BDPART_FORMAT_MBR
&& format->mbr.dos_compatibility;
rtems_blkdev_bnum disk_end = 0;
42870: 42ae fffc clrl %fp@(-4)
rtems_blkdev_bnum overhead = 0;
rtems_blkdev_bnum free_space = 0;
size_t i = 0;
/* Check if we have something to do */
if (count == 0) {
42874: 4a83 tstl %d3
42876: 660c bnes 42884 <rtems_bdpart_create+0x98> <== ALWAYS TAKEN
/* Nothing to do */
return RTEMS_SUCCESSFUL;
42878: 4280 clrl %d0 <== NOT EXECUTED
/* Expand the last partition to the disk end */
pt [count - 1].end = disk_end;
return RTEMS_SUCCESSFUL;
}
4287a: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
42880: 4e5e unlk %fp <== NOT EXECUTED
42882: 4e75 rts <== NOT EXECUTED
&& format->type == RTEMS_BDPART_FORMAT_MBR
&& format->mbr.dos_compatibility;
rtems_blkdev_bnum disk_end = 0;
rtems_blkdev_bnum pos = 0;
rtems_blkdev_bnum dist_sum = 0;
rtems_blkdev_bnum record_space =
42884: 783f moveq #63,%d4
const unsigned *dist,
size_t count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
42886: 7a01 moveq #1,%d5
/* Nothing to do */
return RTEMS_SUCCESSFUL;
}
/* Check parameter */
if (format == NULL || pt == NULL || dist == NULL) {
42888: 4aae 0010 tstl %fp@(16)
4288c: 6690 bnes 4281e <rtems_bdpart_create+0x32> <== ALWAYS TAKEN
return RTEMS_INVALID_ADDRESS;
4288e: 7009 moveq #9,%d0 <== NOT EXECUTED
/* Expand the last partition to the disk end */
pt [count - 1].end = disk_end;
return RTEMS_SUCCESSFUL;
}
42890: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
42896: 4e5e unlk %fp <== NOT EXECUTED
42898: 4e75 rts <== NOT EXECUTED
/* Begin of first primary partition */
pos = record_space;
/* Space for partitions */
free_space = disk_end - overhead;
4289a: 2a0b movel %a3,%d5
4289c: 9a81 subl %d1,%d5
for (i = 0; i < count; ++i) {
rtems_bdpart_partition *p = pt + i;
/* Partition size */
rtems_blkdev_bnum s = free_space * dist [i];
4289e: 2205 movel %d5,%d1
428a0: 4c06 1800 mulsl %d6,%d1
/* Begin of first primary partition */
pos = record_space;
/* Space for partitions */
free_space = disk_end - overhead;
428a4: 2d45 fff8 movel %d5,%fp@(-8)
for (i = 0; i < count; ++i) {
rtems_bdpart_partition *p = pt + i;
/* Partition size */
rtems_blkdev_bnum s = free_space * dist [i];
if (s < free_space || s < dist [i]) {
428a8: b285 cmpl %d5,%d1
428aa: 6562 bcss 4290e <rtems_bdpart_create+0x122> <== NEVER TAKEN
428ac: bc81 cmpl %d1,%d6
428ae: 625e bhis 4290e <rtems_bdpart_create+0x122> <== NEVER TAKEN
#endif
#include <rtems.h>
#include <rtems/bdpart.h>
rtems_status_code rtems_bdpart_create(
428b0: 2c2e 0010 movel %fp@(16),%d6
428b4: 2044 moveal %d4,%a0
428b6: 0686 0000 0030 addil #48,%d6
pos = record_space;
/* Space for partitions */
free_space = disk_end - overhead;
for (i = 0; i < count; ++i) {
428bc: 4285 clrl %d5
#endif
#include <rtems.h>
#include <rtems/bdpart.h>
rtems_status_code rtems_bdpart_create(
428be: 246e 0010 moveal %fp@(16),%a2
rtems_blkdev_bnum s = free_space * dist [i];
if (s < free_space || s < dist [i]) {
/* TODO: Calculate without overflow */
return RTEMS_INVALID_NUMBER;
}
s /= dist_sum;
428c2: 4c42 1001 remul %d2,%d1,%d1
/* Ensure that the partition is not empty */
if (s == 0) {
428c6: 6604 bnes 428cc <rtems_bdpart_create+0xe0> <== ALWAYS TAKEN
s = 1;
428c8: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
}
/* Align partition upwards */
s += record_space - (s % record_space);
428cc: 2241 moveal %d1,%a1
428ce: d3c4 addal %d4,%a1
428d0: 4c44 1007 remul %d4,%d7,%d1
/* Reserve space for the EBR if necessary */
if (count > 4 && i > 2) {
428d4: 7204 moveq #4,%d1
if (s == 0) {
s = 1;
}
/* Align partition upwards */
s += record_space - (s % record_space);
428d6: 93c7 subal %d7,%a1
/* Reserve space for the EBR if necessary */
if (count > 4 && i > 2) {
428d8: b283 cmpl %d3,%d1
428da: 6408 bccs 428e4 <rtems_bdpart_create+0xf8> <== NEVER TAKEN
428dc: 7e02 moveq #2,%d7
428de: be85 cmpl %d5,%d7
428e0: 6402 bccs 428e4 <rtems_bdpart_create+0xf8>
pos += record_space;
428e2: d1c4 addal %d4,%a0
}
/* Partition begin and end */
p->begin = pos;
428e4: 2488 movel %a0,%a2@
pos += s;
428e6: d1c9 addal %a1,%a0
pos = record_space;
/* Space for partitions */
free_space = disk_end - overhead;
for (i = 0; i < count; ++i) {
428e8: 5285 addql #1,%d5
}
/* Partition begin and end */
p->begin = pos;
pos += s;
p->end = pos;
428ea: 2548 0004 movel %a0,%a2@(4)
/* Space for partitions */
free_space = disk_end - overhead;
for (i = 0; i < count; ++i) {
rtems_bdpart_partition *p = pt + i;
428ee: 2446 moveal %d6,%a2
428f0: 0686 0000 0030 addil #48,%d6
pos = record_space;
/* Space for partitions */
free_space = disk_end - overhead;
for (i = 0; i < count; ++i) {
428f6: ba83 cmpl %d3,%d5
428f8: 6478 bccs 42972 <rtems_bdpart_create+0x186>
rtems_bdpart_partition *p = pt + i;
/* Partition size */
rtems_blkdev_bnum s = free_space * dist [i];
428fa: 225c moveal %a4@+,%a1
428fc: 2209 movel %a1,%d1
428fe: 2e2e fff8 movel %fp@(-8),%d7
42902: 4c07 1800 mulsl %d7,%d1
if (s < free_space || s < dist [i]) {
42906: b287 cmpl %d7,%d1
42908: 6504 bcss 4290e <rtems_bdpart_create+0x122> <== NEVER TAKEN
4290a: b289 cmpl %a1,%d1
4290c: 64b4 bccs 428c2 <rtems_bdpart_create+0xd6> <== ALWAYS TAKEN
if (dist_sum < prev_sum) {
return RTEMS_INVALID_NUMBER;
}
if (dist [i] == 0) {
return RTEMS_INVALID_NUMBER;
4290e: 700a moveq #10,%d0 <== NOT EXECUTED
/* Expand the last partition to the disk end */
pt [count - 1].end = disk_end;
return RTEMS_SUCCESSFUL;
}
42910: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
42916: 4e5e unlk %fp <== NOT EXECUTED
42918: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
}
}
/* Check format */
if (format->type != RTEMS_BDPART_FORMAT_MBR) {
4291a: 4a92 tstl %a2@
4291c: 670c beqs 4292a <rtems_bdpart_create+0x13e> <== ALWAYS TAKEN
return RTEMS_NOT_IMPLEMENTED;
4291e: 7018 moveq #24,%d0 <== NOT EXECUTED
/* Expand the last partition to the disk end */
pt [count - 1].end = disk_end;
return RTEMS_SUCCESSFUL;
}
42920: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
42926: 4e5e unlk %fp <== NOT EXECUTED
42928: 4e75 rts <== NOT EXECUTED
return RTEMS_NOT_IMPLEMENTED;
}
/* Align end of disk on cylinder boundary if necessary */
if (dos_compatibility) {
disk_end -= (disk_end % record_space);
4292a: 266e fffc moveal %fp@(-4),%a3
if (format->type != RTEMS_BDPART_FORMAT_MBR) {
return RTEMS_NOT_IMPLEMENTED;
}
/* Align end of disk on cylinder boundary if necessary */
if (dos_compatibility) {
4292e: 4a05 tstb %d5
42930: 6708 beqs 4293a <rtems_bdpart_create+0x14e> <== NEVER TAKEN
disk_end -= (disk_end % record_space);
42932: 220b movel %a3,%d1
42934: 4c44 1007 remul %d4,%d7,%d1
42938: 97c7 subal %d7,%a3
/*
* In case we need an extended partition and logical partitions we have to
* account for the space of each EBR.
*/
if (count > 4) {
4293a: 7e04 moveq #4,%d7
4293c: be83 cmpl %d3,%d7
4293e: 642e bccs 4296e <rtems_bdpart_create+0x182> <== NEVER TAKEN
overhead += (count - 3) * record_space;
42940: 2203 movel %d3,%d1
42942: 5781 subql #3,%d1
42944: 4c04 1800 mulsl %d4,%d1
42948: d284 addl %d4,%d1
/*
* Account space to align every partition on cylinder boundaries if
* necessary.
*/
if (dos_compatibility) {
4294a: 4a05 tstb %d5
4294c: 670a beqs 42958 <rtems_bdpart_create+0x16c> <== NEVER TAKEN
overhead += (count - 1) * record_space;
4294e: 2a03 movel %d3,%d5
42950: 5385 subql #1,%d5
42952: 4c04 5800 mulsl %d4,%d5
42956: d285 addl %d5,%d1
}
/* Check disk space */
if ((overhead + count) > disk_end) {
42958: 2041 moveal %d1,%a0
4295a: d1c3 addal %d3,%a0
4295c: b7c8 cmpal %a0,%a3
4295e: 6400 ff3a bccw 4289a <rtems_bdpart_create+0xae>
return RTEMS_IO_ERROR;
42962: 701b moveq #27,%d0 <== NOT EXECUTED
/* Expand the last partition to the disk end */
pt [count - 1].end = disk_end;
return RTEMS_SUCCESSFUL;
}
42964: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4296a: 4e5e unlk %fp <== NOT EXECUTED
4296c: 4e75 rts <== NOT EXECUTED
/*
* In case we need an extended partition and logical partitions we have to
* account for the space of each EBR.
*/
if (count > 4) {
4296e: 2204 movel %d4,%d1 <== NOT EXECUTED
42970: 60d8 bras 4294a <rtems_bdpart_create+0x15e> <== NOT EXECUTED
pos += s;
p->end = pos;
}
/* Expand the last partition to the disk end */
pt [count - 1].end = disk_end;
42972: 2203 movel %d3,%d1
42974: 5381 subql #1,%d1
42976: 2401 movel %d1,%d2
42978: ed89 lsll #6,%d1
4297a: e98a lsll #4,%d2
4297c: 206e 0010 moveal %fp@(16),%a0
42980: 9282 subl %d2,%d1
42982: 218b 1804 movel %a3,%a0@(00000004,%d1:l)
return RTEMS_SUCCESSFUL;
}
42986: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5
4298c: 4e5e unlk %fp
4298e: 4e75 rts
rtems_blkdev_bnum overhead = 0;
rtems_blkdev_bnum free_space = 0;
size_t i = 0;
/* Check if we have something to do */
if (count == 0) {
42990: 4a83 tstl %d3 <== NOT EXECUTED
42992: 6700 fee4 beqw 42878 <rtems_bdpart_create+0x8c> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
/* Check parameter */
if (format == NULL || pt == NULL || dist == NULL) {
return RTEMS_INVALID_ADDRESS;
42996: 7009 moveq #9,%d0 <== NOT EXECUTED
42998: 6000 fef6 braw 42890 <rtems_bdpart_create+0xa4> <== NOT EXECUTED
0004299c <rtems_bdpart_dump>:
{
uuid_unparse_lower( type, str);
}
void rtems_bdpart_dump( const rtems_bdpart_partition *pt, size_t count)
{
4299c: 4e56 ffa0 linkw %fp,#-96
429a0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
size_t i = 0;
printf(
429a4: 4879 0006 2107 pea 62107 <map.6766+0x41>
{
uuid_unparse_lower( type, str);
}
void rtems_bdpart_dump( const rtems_bdpart_partition *pt, size_t count)
{
429aa: 282e 000c movel %fp@(12),%d4
size_t i = 0;
printf(
429ae: 4eb9 0005 4318 jsr 54318 <puts>
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
429b4: 588f addql #4,%sp
429b6: 4a84 tstl %d4
429b8: 6700 00a2 beqw 42a5c <rtems_bdpart_dump+0xc0>
429bc: 2a0e movel %fp,%d5
snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
type = type_buffer;
break;
}
} else {
rtems_bdpart_type_to_string( p->type, type_buffer);
429be: 2c0e movel %fp,%d6
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
429c0: 4282 clrl %d2
429c2: 0685 ffff ffcb addil #-53,%d5
429c8: 47f9 0004 2d6a lea 42d6a <rtems_bdpart_to_mbr_partition_type>,%a3
429ce: 45f9 0005 4254 lea 54254 <printf>,%a2
snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
type = type_buffer;
break;
}
} else {
rtems_bdpart_type_to_string( p->type, type_buffer);
429d4: 0686 ffff ffcc addil #-52,%d6
static void rtems_bdpart_type_to_string(
const uuid_t type,
char str [37]
)
{
uuid_unparse_lower( type, str);
429da: 49f9 0004 d9c0 lea 4d9c0 <uuid_unparse_lower>,%a4
break;
case RTEMS_BDPART_MBR_DATA:
type = "DATA";
break;
default:
snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
429e0: 2e3c 0005 45a8 movel #345512,%d7
429e6: 2a6e 0008 moveal %fp@(8),%a5
const rtems_bdpart_partition *p = pt + i;
const char *type = NULL;
char type_buffer [52];
uint8_t type_mbr = 0;
if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {
429ea: 2f05 movel %d5,%sp@-
429ec: 260d movel %a5,%d3
429ee: 5083 addql #8,%d3
for (i = 0; i < count; ++i) {
const rtems_bdpart_partition *p = pt + i;
const char *type = NULL;
char type_buffer [52];
uint8_t type_mbr = 0;
429f0: 4200 clrb %d0
if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {
429f2: 2f03 movel %d3,%sp@-
for (i = 0; i < count; ++i) {
const rtems_bdpart_partition *p = pt + i;
const char *type = NULL;
char type_buffer [52];
uint8_t type_mbr = 0;
429f4: 1d40 ffcb moveb %d0,%fp@(-53)
if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {
429f8: 4e93 jsr %a3@
429fa: 508f addql #8,%sp
429fc: 4a00 tstb %d0
429fe: 6700 009a beqw 42a9a <rtems_bdpart_dump+0xfe>
switch (type_mbr) {
42a02: 4280 clrl %d0
42a04: 102e ffcb moveb %fp@(-53),%d0
42a08: 720b moveq #11,%d1
42a0a: b280 cmpl %d0,%d1
42a0c: 6700 0178 beqw 42b86 <rtems_bdpart_dump+0x1ea>
42a10: 6500 00b4 bcsw 42ac6 <rtems_bdpart_dump+0x12a> <== NOT EXECUTED
42a14: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
42a18: b280 cmpl %d0,%d1 <== NOT EXECUTED
42a1a: 6700 0140 beqw 42b5c <rtems_bdpart_dump+0x1c0> <== NOT EXECUTED
42a1e: 123c 0004 moveb #4,%d1 <== NOT EXECUTED
42a22: b280 cmpl %d0,%d1 <== NOT EXECUTED
42a24: 674c beqs 42a72 <rtems_bdpart_dump+0xd6> <== NOT EXECUTED
break;
case RTEMS_BDPART_MBR_DATA:
type = "DATA";
break;
default:
snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
42a26: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42a28: 4879 0006 2247 pea 62247 <map.6766+0x181> <== NOT EXECUTED
42a2e: 2047 moveal %d7,%a0 <== NOT EXECUTED
42a30: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42a34: 5282 addql #1,%d2 <== NOT EXECUTED
break;
case RTEMS_BDPART_MBR_DATA:
type = "DATA";
break;
default:
snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
42a36: 2f06 movel %d6,%sp@- <== NOT EXECUTED
42a38: 4e90 jsr %a0@ <== NOT EXECUTED
type = type_buffer;
break;
42a3a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
case RTEMS_BDPART_MBR_DATA:
type = "DATA";
break;
default:
snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
type = type_buffer;
42a3e: 2006 movel %d6,%d0 <== NOT EXECUTED
} else {
rtems_bdpart_type_to_string( p->type, type_buffer);
type = type_buffer;
}
printf(
42a40: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42a42: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED
42a46: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
42a48: 4bed 0030 lea %a5@(48),%a5 <== NOT EXECUTED
42a4c: 4879 0006 224e pea 6224e <map.6766+0x188> <== NOT EXECUTED
42a52: 4e92 jsr %a2@ <== NOT EXECUTED
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42a54: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
42a58: b882 cmpl %d2,%d4 <== NOT EXECUTED
42a5a: 668e bnes 429ea <rtems_bdpart_dump+0x4e> <== NOT EXECUTED
p->end,
type
);
}
puts( "------------+------------+-----------------------------------------------------");
42a5c: 4879 0006 21f7 pea 621f7 <map.6766+0x131>
42a62: 4eb9 0005 4318 jsr 54318 <puts>
}
42a68: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5
42a6e: 4e5e unlk %fp
42a70: 4e75 rts
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42a72: 5282 addql #1,%d2 <== NOT EXECUTED
switch (type_mbr) {
case RTEMS_BDPART_MBR_FAT_12:
type = "FAT 12";
break;
case RTEMS_BDPART_MBR_FAT_16:
type = "FAT 16";
42a74: 203c 0006 20d7 movel #401623,%d0 <== NOT EXECUTED
} else {
rtems_bdpart_type_to_string( p->type, type_buffer);
type = type_buffer;
}
printf(
42a7a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42a7c: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED
42a80: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
42a82: 4bed 0030 lea %a5@(48),%a5 <== NOT EXECUTED
42a86: 4879 0006 224e pea 6224e <map.6766+0x188> <== NOT EXECUTED
42a8c: 4e92 jsr %a2@ <== NOT EXECUTED
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42a8e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
42a92: b882 cmpl %d2,%d4 <== NOT EXECUTED
42a94: 6600 ff54 bnew 429ea <rtems_bdpart_dump+0x4e> <== NOT EXECUTED
42a98: 60c2 bras 42a5c <rtems_bdpart_dump+0xc0> <== NOT EXECUTED
static void rtems_bdpart_type_to_string(
const uuid_t type,
char str [37]
)
{
uuid_unparse_lower( type, str);
42a9a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42a9c: 5282 addql #1,%d2 <== NOT EXECUTED
static void rtems_bdpart_type_to_string(
const uuid_t type,
char str [37]
)
{
uuid_unparse_lower( type, str);
42a9e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42aa0: 4e94 jsr %a4@ <== NOT EXECUTED
42aa2: 508f addql #8,%sp <== NOT EXECUTED
type = type_buffer;
break;
}
} else {
rtems_bdpart_type_to_string( p->type, type_buffer);
type = type_buffer;
42aa4: 2006 movel %d6,%d0 <== NOT EXECUTED
}
printf(
42aa6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42aa8: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED
42aac: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
42aae: 4bed 0030 lea %a5@(48),%a5 <== NOT EXECUTED
42ab2: 4879 0006 224e pea 6224e <map.6766+0x188> <== NOT EXECUTED
42ab8: 4e92 jsr %a2@ <== NOT EXECUTED
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42aba: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
42abe: b882 cmpl %d2,%d4 <== NOT EXECUTED
42ac0: 6600 ff28 bnew 429ea <rtems_bdpart_dump+0x4e> <== NOT EXECUTED
42ac4: 6096 bras 42a5c <rtems_bdpart_dump+0xc0> <== NOT EXECUTED
const char *type = NULL;
char type_buffer [52];
uint8_t type_mbr = 0;
if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {
switch (type_mbr) {
42ac6: 720e moveq #14,%d1 <== NOT EXECUTED
42ac8: b280 cmpl %d0,%d1 <== NOT EXECUTED
42aca: 6766 beqs 42b32 <rtems_bdpart_dump+0x196> <== NOT EXECUTED
42acc: 0c80 0000 00da cmpil #218,%d0 <== NOT EXECUTED
42ad2: 6734 beqs 42b08 <rtems_bdpart_dump+0x16c> <== NOT EXECUTED
42ad4: 123c 000c moveb #12,%d1 <== NOT EXECUTED
42ad8: b280 cmpl %d0,%d1 <== NOT EXECUTED
42ada: 6600 ff4a bnew 42a26 <rtems_bdpart_dump+0x8a> <== NOT EXECUTED
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42ade: 5282 addql #1,%d2 <== NOT EXECUTED
break;
case RTEMS_BDPART_MBR_FAT_32:
type = "FAT 32";
break;
case RTEMS_BDPART_MBR_FAT_32_LBA:
type = "FAT 32 LBA";
42ae0: 203c 0006 20ea movel #401642,%d0 <== NOT EXECUTED
} else {
rtems_bdpart_type_to_string( p->type, type_buffer);
type = type_buffer;
}
printf(
42ae6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42ae8: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED
42aec: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
42aee: 4bed 0030 lea %a5@(48),%a5 <== NOT EXECUTED
42af2: 4879 0006 224e pea 6224e <map.6766+0x188> <== NOT EXECUTED
42af8: 4e92 jsr %a2@ <== NOT EXECUTED
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42afa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
42afe: b882 cmpl %d2,%d4 <== NOT EXECUTED
42b00: 6600 fee8 bnew 429ea <rtems_bdpart_dump+0x4e> <== NOT EXECUTED
42b04: 6000 ff56 braw 42a5c <rtems_bdpart_dump+0xc0> <== NOT EXECUTED
42b08: 5282 addql #1,%d2 <== NOT EXECUTED
break;
case RTEMS_BDPART_MBR_FAT_32_LBA:
type = "FAT 32 LBA";
break;
case RTEMS_BDPART_MBR_DATA:
type = "DATA";
42b0a: 203c 0006 20e5 movel #401637,%d0 <== NOT EXECUTED
} else {
rtems_bdpart_type_to_string( p->type, type_buffer);
type = type_buffer;
}
printf(
42b10: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42b12: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED
42b16: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
42b18: 4bed 0030 lea %a5@(48),%a5 <== NOT EXECUTED
42b1c: 4879 0006 224e pea 6224e <map.6766+0x188> <== NOT EXECUTED
42b22: 4e92 jsr %a2@ <== NOT EXECUTED
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42b24: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
42b28: b882 cmpl %d2,%d4 <== NOT EXECUTED
42b2a: 6600 febe bnew 429ea <rtems_bdpart_dump+0x4e> <== NOT EXECUTED
42b2e: 6000 ff2c braw 42a5c <rtems_bdpart_dump+0xc0> <== NOT EXECUTED
42b32: 5282 addql #1,%d2 <== NOT EXECUTED
break;
case RTEMS_BDPART_MBR_FAT_16:
type = "FAT 16";
break;
case RTEMS_BDPART_MBR_FAT_16_LBA:
type = "FAT 16 LBA";
42b34: 203c 0006 20fc movel #401660,%d0 <== NOT EXECUTED
} else {
rtems_bdpart_type_to_string( p->type, type_buffer);
type = type_buffer;
}
printf(
42b3a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42b3c: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED
42b40: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
42b42: 4bed 0030 lea %a5@(48),%a5 <== NOT EXECUTED
42b46: 4879 0006 224e pea 6224e <map.6766+0x188> <== NOT EXECUTED
42b4c: 4e92 jsr %a2@ <== NOT EXECUTED
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42b4e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
42b52: b882 cmpl %d2,%d4 <== NOT EXECUTED
42b54: 6600 fe94 bnew 429ea <rtems_bdpart_dump+0x4e> <== NOT EXECUTED
42b58: 6000 ff02 braw 42a5c <rtems_bdpart_dump+0xc0> <== NOT EXECUTED
42b5c: 5282 addql #1,%d2 <== NOT EXECUTED
uint8_t type_mbr = 0;
if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {
switch (type_mbr) {
case RTEMS_BDPART_MBR_FAT_12:
type = "FAT 12";
42b5e: 203c 0006 20de movel #401630,%d0 <== NOT EXECUTED
} else {
rtems_bdpart_type_to_string( p->type, type_buffer);
type = type_buffer;
}
printf(
42b64: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42b66: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED
42b6a: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
42b6c: 4bed 0030 lea %a5@(48),%a5 <== NOT EXECUTED
42b70: 4879 0006 224e pea 6224e <map.6766+0x188> <== NOT EXECUTED
42b76: 4e92 jsr %a2@ <== NOT EXECUTED
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42b78: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
42b7c: b882 cmpl %d2,%d4 <== NOT EXECUTED
42b7e: 6600 fe6a bnew 429ea <rtems_bdpart_dump+0x4e> <== NOT EXECUTED
42b82: 6000 fed8 braw 42a5c <rtems_bdpart_dump+0xc0> <== NOT EXECUTED
42b86: 5282 addql #1,%d2
break;
case RTEMS_BDPART_MBR_FAT_16_LBA:
type = "FAT 16 LBA";
break;
case RTEMS_BDPART_MBR_FAT_32:
type = "FAT 32";
42b88: 203c 0006 20f5 movel #401653,%d0
} else {
rtems_bdpart_type_to_string( p->type, type_buffer);
type = type_buffer;
}
printf(
42b8e: 2f00 movel %d0,%sp@-
42b90: 2f2d 0004 movel %a5@(4),%sp@-
42b94: 2f15 movel %a5@,%sp@-
42b96: 4bed 0030 lea %a5@(48),%a5
42b9a: 4879 0006 224e pea 6224e <map.6766+0x188>
42ba0: 4e92 jsr %a2@
"------------+------------+-----------------------------------------------------\n"
" BEGIN | END | TYPE\n"
"------------+------------+-----------------------------------------------------\n"
);
for (i = 0; i < count; ++i) {
42ba2: 4fef 0010 lea %sp@(16),%sp
42ba6: b882 cmpl %d2,%d4
42ba8: 6600 fe40 bnew 429ea <rtems_bdpart_dump+0x4e>
42bac: 6000 feae braw 42a5c <rtems_bdpart_dump+0xc0>
00042d98 <rtems_bdpart_get_disk_data>:
const char *disk_name,
int *fd_ptr,
rtems_disk_device **dd_ptr,
rtems_blkdev_bnum *disk_end
)
{
42d98: 4e56 fffc linkw %fp,#-4
42d9c: 2f03 movel %d3,%sp@-
42d9e: 2f02 movel %d2,%sp@-
rtems_disk_device *dd = NULL;
rtems_blkdev_bnum disk_begin = 0;
rtems_blkdev_bnum block_size = 0;
/* Open device file */
fd = open( disk_name, O_RDWR);
42da0: 4878 0002 pea 2 <DOUBLE_FLOAT>
42da4: 2f2e 0008 movel %fp@(8),%sp@-
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
int rv = 0;
int fd = -1;
rtems_disk_device *dd = NULL;
42da8: 42ae fffc clrl %fp@(-4)
rtems_blkdev_bnum disk_begin = 0;
rtems_blkdev_bnum block_size = 0;
/* Open device file */
fd = open( disk_name, O_RDWR);
42dac: 4eb9 0004 6280 jsr 46280 <open>
if (fd < 0) {
42db2: 508f addql #8,%sp
rtems_disk_device *dd = NULL;
rtems_blkdev_bnum disk_begin = 0;
rtems_blkdev_bnum block_size = 0;
/* Open device file */
fd = open( disk_name, O_RDWR);
42db4: 2600 movel %d0,%d3
if (fd < 0) {
42db6: 6c1a bges 42dd2 <rtems_bdpart_get_disk_data+0x3a><== ALWAYS TAKEN
if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {
*fd_ptr = fd;
*dd_ptr = dd;
} else {
close( fd);
42db8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
rtems_blkdev_bnum block_size = 0;
/* Open device file */
fd = open( disk_name, O_RDWR);
if (fd < 0) {
sc = RTEMS_INVALID_NAME;
42dba: 7403 moveq #3,%d2 <== NOT EXECUTED
if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {
*fd_ptr = fd;
*dd_ptr = dd;
} else {
close( fd);
42dbc: 4eb9 0004 5070 jsr 45070 <close> <== NOT EXECUTED
42dc2: 588f addql #4,%sp <== NOT EXECUTED
}
return sc;
}
42dc4: 2002 movel %d2,%d0
42dc6: 242e fff4 movel %fp@(-12),%d2
42dca: 262e fff8 movel %fp@(-8),%d3
42dce: 4e5e unlk %fp
42dd0: 4e75 rts
static inline int rtems_disk_fd_get_disk_device(
int fd,
rtems_disk_device **dd_ptr
)
{
return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);
42dd2: 486e fffc pea %fp@(-4)
42dd6: 2f3c 4004 4209 movel #1074020873,%sp@-
42ddc: 2f00 movel %d0,%sp@-
42dde: 4eb9 0004 5544 jsr 45544 <ioctl>
goto error;
}
/* Get disk handle */
rv = rtems_disk_fd_get_disk_device( fd, &dd);
if (rv != 0) {
42de4: 4fef 000c lea %sp@(12),%sp
42de8: 4a80 tstl %d0
42dea: 66cc bnes 42db8 <rtems_bdpart_get_disk_data+0x20><== NEVER TAKEN
sc = RTEMS_INVALID_NAME;
goto error;
}
/* Get disk begin, end and block size */
disk_begin = dd->start;
42dec: 206e fffc moveal %fp@(-4),%a0
*disk_end = dd->size;
block_size = dd->block_size;
/* Check block size */
if (block_size < RTEMS_BDPART_BLOCK_SIZE) {
42df0: 223c 0000 01ff movel #511,%d1
sc = RTEMS_INVALID_NAME;
goto error;
}
/* Get disk begin, end and block size */
disk_begin = dd->start;
42df6: 2028 0018 movel %a0@(24),%d0
*disk_end = dd->size;
42dfa: 226e 0014 moveal %fp@(20),%a1
42dfe: 22a8 001c movel %a0@(28),%a1@
block_size = dd->block_size;
/* Check block size */
if (block_size < RTEMS_BDPART_BLOCK_SIZE) {
42e02: b2a8 0024 cmpl %a0@(36),%d1
42e06: 650e bcss 42e16 <rtems_bdpart_get_disk_data+0x7e><== ALWAYS TAKEN
if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {
*fd_ptr = fd;
*dd_ptr = dd;
} else {
close( fd);
42e08: 2f03 movel %d3,%sp@- <== NOT EXECUTED
*disk_end = dd->size;
block_size = dd->block_size;
/* Check block size */
if (block_size < RTEMS_BDPART_BLOCK_SIZE) {
sc = RTEMS_IO_ERROR;
42e0a: 741b moveq #27,%d2 <== NOT EXECUTED
if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {
*fd_ptr = fd;
*dd_ptr = dd;
} else {
close( fd);
42e0c: 4eb9 0004 5070 jsr 45070 <close> <== NOT EXECUTED
42e12: 588f addql #4,%sp <== NOT EXECUTED
42e14: 60ae bras 42dc4 <rtems_bdpart_get_disk_data+0x2c><== NOT EXECUTED
sc = RTEMS_IO_ERROR;
goto error;
}
/* Check that we have do not have a logical disk */
if (disk_begin != 0) {
42e16: 4a80 tstl %d0
42e18: 66ee bnes 42e08 <rtems_bdpart_get_disk_data+0x70><== NEVER TAKEN
goto error;
}
error:
if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {
42e1a: 4aae 000c tstl %fp@(12)
42e1e: 6722 beqs 42e42 <rtems_bdpart_get_disk_data+0xaa>
42e20: 4aae 0010 tstl %fp@(16)
42e24: 671c beqs 42e42 <rtems_bdpart_get_disk_data+0xaa><== NEVER TAKEN
*fd_ptr = fd;
42e26: 226e 000c moveal %fp@(12),%a1
int *fd_ptr,
rtems_disk_device **dd_ptr,
rtems_blkdev_bnum *disk_end
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
42e2a: 4282 clrl %d2
} else {
close( fd);
}
return sc;
}
42e2c: 2002 movel %d2,%d0
}
error:
if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {
*fd_ptr = fd;
42e2e: 2283 movel %d3,%a1@
*dd_ptr = dd;
42e30: 226e 0010 moveal %fp@(16),%a1
} else {
close( fd);
}
return sc;
}
42e34: 242e fff4 movel %fp@(-12),%d2
42e38: 262e fff8 movel %fp@(-8),%d3
42e3c: 4e5e unlk %fp
error:
if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {
*fd_ptr = fd;
*dd_ptr = dd;
42e3e: 2288 movel %a0,%a1@
} else {
close( fd);
}
return sc;
}
42e40: 4e75 rts
if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {
*fd_ptr = fd;
*dd_ptr = dd;
} else {
close( fd);
42e42: 2f03 movel %d3,%sp@-
int *fd_ptr,
rtems_disk_device **dd_ptr,
rtems_blkdev_bnum *disk_end
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
42e44: 4282 clrl %d2
if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {
*fd_ptr = fd;
*dd_ptr = dd;
} else {
close( fd);
42e46: 4eb9 0004 5070 jsr 45070 <close>
42e4c: 588f addql #4,%sp
42e4e: 6000 ff74 braw 42dc4 <rtems_bdpart_get_disk_data+0x2c>
00061ae8 <rtems_bdpart_mount>:
const char *disk_name,
const rtems_bdpart_partition *pt __attribute__((unused)),
size_t count,
const char *mount_base
)
{
61ae8: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
61aec: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_status_code esc = RTEMS_SUCCESSFUL;
const char *disk_file_name = strrchr( disk_name, '/');
61af0: 4878 002f pea 2f <OPER2+0x1b> <== NOT EXECUTED
char *logical_disk_name = NULL;
char *logical_disk_marker = NULL;
char *mount_point = NULL;
char *mount_marker = NULL;
size_t disk_file_name_size = 0;
size_t disk_name_size = strlen( disk_name);
61af4: 49f9 0007 d8a0 lea 7d8a0 <strlen>,%a4 <== NOT EXECUTED
size_t mount_base_size = strlen( mount_base);
size_t i = 0;
/* Create logical disk name base */
logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
61afa: 45f9 0004 3140 lea 43140 <malloc>,%a2 <== NOT EXECUTED
const char *disk_name,
const rtems_bdpart_partition *pt __attribute__((unused)),
size_t count,
const char *mount_base
)
{
61b00: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_status_code esc = RTEMS_SUCCESSFUL;
const char *disk_file_name = strrchr( disk_name, '/');
61b04: 2f02 movel %d2,%sp@- <== NOT EXECUTED
61b06: 4eb9 0007 e73c jsr 7e73c <strrchr> <== NOT EXECUTED
61b0c: 508f addql #8,%sp <== NOT EXECUTED
61b0e: 2600 movel %d0,%d3 <== NOT EXECUTED
char *logical_disk_name = NULL;
char *logical_disk_marker = NULL;
char *mount_point = NULL;
char *mount_marker = NULL;
size_t disk_file_name_size = 0;
size_t disk_name_size = strlen( disk_name);
61b10: 2f02 movel %d2,%sp@- <== NOT EXECUTED
const char *disk_name,
const rtems_bdpart_partition *pt __attribute__((unused)),
size_t count,
const char *mount_base
)
{
61b12: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
char *logical_disk_name = NULL;
char *logical_disk_marker = NULL;
char *mount_point = NULL;
char *mount_marker = NULL;
size_t disk_file_name_size = 0;
size_t disk_name_size = strlen( disk_name);
61b16: 4e94 jsr %a4@ <== NOT EXECUTED
size_t mount_base_size = strlen( mount_base);
61b18: 2eae 0014 movel %fp@(20),%sp@ <== NOT EXECUTED
char *logical_disk_name = NULL;
char *logical_disk_marker = NULL;
char *mount_point = NULL;
char *mount_marker = NULL;
size_t disk_file_name_size = 0;
size_t disk_name_size = strlen( disk_name);
61b1c: 2a40 moveal %d0,%a5 <== NOT EXECUTED
size_t mount_base_size = strlen( mount_base);
61b1e: 4e94 jsr %a4@ <== NOT EXECUTED
61b20: 588f addql #4,%sp <== NOT EXECUTED
61b22: 2c00 movel %d0,%d6 <== NOT EXECUTED
size_t i = 0;
/* Create logical disk name base */
logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
61b24: 486d 0004 pea %a5@(4) <== NOT EXECUTED
61b28: 4e92 jsr %a2@ <== NOT EXECUTED
if (logical_disk_name == NULL) {
61b2a: 588f addql #4,%sp <== NOT EXECUTED
size_t disk_name_size = strlen( disk_name);
size_t mount_base_size = strlen( mount_base);
size_t i = 0;
/* Create logical disk name base */
logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
61b2c: 2800 movel %d0,%d4 <== NOT EXECUTED
if (logical_disk_name == NULL) {
61b2e: 6700 0104 beqw 61c34 <rtems_bdpart_mount+0x14c> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
}
strncpy( logical_disk_name, disk_name, disk_name_size);
61b32: 2f0d movel %a5,%sp@- <== NOT EXECUTED
61b34: 47f9 0007 da4c lea 7da4c <strncpy>,%a3 <== NOT EXECUTED
61b3a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
61b3c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
61b3e: 4e93 jsr %a3@ <== NOT EXECUTED
/* Get disk file name */
if (disk_file_name != NULL) {
61b40: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
61b44: 4a83 tstl %d3 <== NOT EXECUTED
61b46: 6700 00fa beqw 61c42 <rtems_bdpart_mount+0x15a> <== NOT EXECUTED
disk_file_name += 1;
61b4a: 2403 movel %d3,%d2 <== NOT EXECUTED
61b4c: 5282 addql #1,%d2 <== NOT EXECUTED
disk_file_name_size = strlen( disk_file_name);
61b4e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
61b50: 4e94 jsr %a4@ <== NOT EXECUTED
61b52: 588f addql #4,%sp <== NOT EXECUTED
61b54: 2840 moveal %d0,%a4 <== NOT EXECUTED
disk_file_name = disk_name;
disk_file_name_size = disk_name_size;
}
/* Create mount point base */
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
61b56: 2e0c movel %a4,%d7 <== NOT EXECUTED
61b58: de86 addl %d6,%d7 <== NOT EXECUTED
61b5a: 2047 moveal %d7,%a0 <== NOT EXECUTED
61b5c: 4868 0005 pea %a0@(5) <== NOT EXECUTED
61b60: 4e92 jsr %a2@ <== NOT EXECUTED
if (mount_point == NULL) {
61b62: 588f addql #4,%sp <== NOT EXECUTED
disk_file_name = disk_name;
disk_file_name_size = disk_name_size;
}
/* Create mount point base */
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
61b64: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (mount_point == NULL) {
61b66: 4a80 tstl %d0 <== NOT EXECUTED
61b68: 6700 00f0 beqw 61c5a <rtems_bdpart_mount+0x172> <== NOT EXECUTED
esc = RTEMS_NO_MEMORY;
goto cleanup;
}
strncpy( mount_point, mount_base, mount_base_size);
61b6c: 2f06 movel %d6,%sp@- <== NOT EXECUTED
61b6e: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
mount_point [mount_base_size] = '/';
strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
/* Markers */
logical_disk_marker = logical_disk_name + disk_name_size;
61b72: 2604 movel %d4,%d3 <== NOT EXECUTED
61b74: d68d addl %a5,%d3 <== NOT EXECUTED
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
if (mount_point == NULL) {
esc = RTEMS_NO_MEMORY;
goto cleanup;
}
strncpy( mount_point, mount_base, mount_base_size);
61b76: 2f00 movel %d0,%sp@- <== NOT EXECUTED
mount_point [mount_base_size] = '/';
strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
/* Markers */
logical_disk_marker = logical_disk_name + disk_name_size;
mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
61b78: 4bf2 7801 lea %a2@(00000001,%d7:l),%a5 <== NOT EXECUTED
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
if (mount_point == NULL) {
esc = RTEMS_NO_MEMORY;
goto cleanup;
}
strncpy( mount_point, mount_base, mount_base_size);
61b7c: 4e93 jsr %a3@ <== NOT EXECUTED
mount_point [mount_base_size] = '/';
61b7e: 702f moveq #47,%d0 <== NOT EXECUTED
61b80: 1580 6800 moveb %d0,%a2@(00000000,%d6:l) <== NOT EXECUTED
strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
61b84: 2f0c movel %a4,%sp@- <== NOT EXECUTED
61b86: 2f02 movel %d2,%sp@- <== NOT EXECUTED
61b88: 4872 6801 pea %a2@(00000001,%d6:l) <== NOT EXECUTED
61b8c: 4e93 jsr %a3@ <== NOT EXECUTED
/* Markers */
logical_disk_marker = logical_disk_name + disk_name_size;
mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
/* Mount supported file systems for each partition */
for (i = 0; i < count; ++i) {
61b8e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
61b92: 4a85 tstl %d5 <== NOT EXECUTED
61b94: 676e beqs 61c04 <rtems_bdpart_mount+0x11c> <== NOT EXECUTED
61b96: 4282 clrl %d2 <== NOT EXECUTED
61b98: 49f9 0007 cce0 lea 7cce0 <snprintf>,%a4 <== NOT EXECUTED
goto cleanup;
}
/* Create mount point */
strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
rv = rtems_mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO);
61b9e: 2c3c 0006 56ec movel #415468,%d6 <== NOT EXECUTED
esc = RTEMS_IO_ERROR;
goto cleanup;
}
/* Mount */
rv = mount(
61ba4: 2e3c 0004 3388 movel #275336,%d7 <== NOT EXECUTED
mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
/* Mount supported file systems for each partition */
for (i = 0; i < count; ++i) {
/* Create logical disk name */
int rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
61baa: 5282 addql #1,%d2 <== NOT EXECUTED
61bac: 2f02 movel %d2,%sp@- <== NOT EXECUTED
61bae: 4879 0009 7fb8 pea 97fb8 <e2a_32V+0x2a3> <== NOT EXECUTED
61bb4: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
61bb8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
61bba: 4e94 jsr %a4@ <== NOT EXECUTED
if (rv >= RTEMS_BDPART_NUMBER_SIZE) {
61bbc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
61bc0: 7203 moveq #3,%d1 <== NOT EXECUTED
61bc2: b280 cmpl %d0,%d1 <== NOT EXECUTED
61bc4: 6d00 00a8 bltw 61c6e <rtems_bdpart_mount+0x186> <== NOT EXECUTED
esc = RTEMS_INVALID_NAME;
goto cleanup;
}
/* Create mount point */
strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
61bc8: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
61bcc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
61bce: 2f0d movel %a5,%sp@- <== NOT EXECUTED
61bd0: 4e93 jsr %a3@ <== NOT EXECUTED
rv = rtems_mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO);
61bd2: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED
61bd6: 2046 moveal %d6,%a0 <== NOT EXECUTED
61bd8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
61bda: 4e90 jsr %a0@ <== NOT EXECUTED
if (rv != 0) {
61bdc: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
61be0: 4a80 tstl %d0 <== NOT EXECUTED
61be2: 6600 009e bnew 61c82 <rtems_bdpart_mount+0x19a> <== NOT EXECUTED
esc = RTEMS_IO_ERROR;
goto cleanup;
}
/* Mount */
rv = mount(
61be6: 42a7 clrl %sp@- <== NOT EXECUTED
61be8: 2047 moveal %d7,%a0 <== NOT EXECUTED
61bea: 42a7 clrl %sp@- <== NOT EXECUTED
61bec: 4879 0009 6795 pea 96795 <rtems_rtc_shell_usage+0x1995> <== NOT EXECUTED
61bf2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
61bf4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
61bf6: 4e90 jsr %a0@ <== NOT EXECUTED
mount_point,
"msdos",
0,
NULL
);
if (rv != 0) {
61bf8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
61bfc: 4a80 tstl %d0 <== NOT EXECUTED
61bfe: 6622 bnes 61c22 <rtems_bdpart_mount+0x13a> <== NOT EXECUTED
/* Markers */
logical_disk_marker = logical_disk_name + disk_name_size;
mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
/* Mount supported file systems for each partition */
for (i = 0; i < count; ++i) {
61c00: ba82 cmpl %d2,%d5 <== NOT EXECUTED
61c02: 66a6 bnes 61baa <rtems_bdpart_mount+0xc2> <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
61c04: 2f04 movel %d4,%sp@- <== NOT EXECUTED
61c06: 47f9 0004 2e40 lea 42e40 <free>,%a3 <== NOT EXECUTED
const rtems_bdpart_partition *pt __attribute__((unused)),
size_t count,
const char *mount_base
)
{
rtems_status_code esc = RTEMS_SUCCESSFUL;
61c0c: 4282 clrl %d2 <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
61c0e: 4e93 jsr %a3@ <== NOT EXECUTED
free( mount_point);
61c10: 2f0a movel %a2,%sp@- <== NOT EXECUTED
61c12: 4e93 jsr %a3@ <== NOT EXECUTED
return esc;
61c14: 508f addql #8,%sp <== NOT EXECUTED
}
61c16: 2002 movel %d2,%d0 <== NOT EXECUTED
61c18: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
61c1e: 4e5e unlk %fp <== NOT EXECUTED
61c20: 4e75 rts <== NOT EXECUTED
"msdos",
0,
NULL
);
if (rv != 0) {
rmdir( mount_point);
61c22: 2f0a movel %a2,%sp@- <== NOT EXECUTED
61c24: 4eb9 0006 5614 jsr 65614 <rmdir> <== NOT EXECUTED
61c2a: 588f addql #4,%sp <== NOT EXECUTED
/* Markers */
logical_disk_marker = logical_disk_name + disk_name_size;
mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
/* Mount supported file systems for each partition */
for (i = 0; i < count; ++i) {
61c2c: ba82 cmpl %d2,%d5 <== NOT EXECUTED
61c2e: 6600 ff7a bnew 61baa <rtems_bdpart_mount+0xc2> <== NOT EXECUTED
61c32: 60d0 bras 61c04 <rtems_bdpart_mount+0x11c> <== NOT EXECUTED
size_t i = 0;
/* Create logical disk name base */
logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
if (logical_disk_name == NULL) {
return RTEMS_NO_MEMORY;
61c34: 741a moveq #26,%d2 <== NOT EXECUTED
free( logical_disk_name);
free( mount_point);
return esc;
}
61c36: 2002 movel %d2,%d0 <== NOT EXECUTED
61c38: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
61c3e: 4e5e unlk %fp <== NOT EXECUTED
61c40: 4e75 rts <== NOT EXECUTED
if (disk_file_name != NULL) {
disk_file_name += 1;
disk_file_name_size = strlen( disk_file_name);
} else {
disk_file_name = disk_name;
disk_file_name_size = disk_name_size;
61c42: 284d moveal %a5,%a4 <== NOT EXECUTED
}
/* Create mount point base */
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
61c44: 2e0c movel %a4,%d7 <== NOT EXECUTED
61c46: de86 addl %d6,%d7 <== NOT EXECUTED
61c48: 2047 moveal %d7,%a0 <== NOT EXECUTED
61c4a: 4868 0005 pea %a0@(5) <== NOT EXECUTED
61c4e: 4e92 jsr %a2@ <== NOT EXECUTED
if (mount_point == NULL) {
61c50: 588f addql #4,%sp <== NOT EXECUTED
disk_file_name = disk_name;
disk_file_name_size = disk_name_size;
}
/* Create mount point base */
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
61c52: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (mount_point == NULL) {
61c54: 4a80 tstl %d0 <== NOT EXECUTED
61c56: 6600 ff14 bnew 61b6c <rtems_bdpart_mount+0x84> <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
61c5a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
61c5c: 47f9 0004 2e40 lea 42e40 <free>,%a3 <== NOT EXECUTED
}
/* Create mount point base */
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
if (mount_point == NULL) {
esc = RTEMS_NO_MEMORY;
61c62: 741a moveq #26,%d2 <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
61c64: 4e93 jsr %a3@ <== NOT EXECUTED
free( mount_point);
61c66: 2f0a movel %a2,%sp@- <== NOT EXECUTED
61c68: 4e93 jsr %a3@ <== NOT EXECUTED
return esc;
61c6a: 508f addql #8,%sp <== NOT EXECUTED
61c6c: 60a8 bras 61c16 <rtems_bdpart_mount+0x12e> <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
61c6e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
61c70: 47f9 0004 2e40 lea 42e40 <free>,%a3 <== NOT EXECUTED
/* Mount supported file systems for each partition */
for (i = 0; i < count; ++i) {
/* Create logical disk name */
int rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
if (rv >= RTEMS_BDPART_NUMBER_SIZE) {
esc = RTEMS_INVALID_NAME;
61c76: 7403 moveq #3,%d2 <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
61c78: 4e93 jsr %a3@ <== NOT EXECUTED
free( mount_point);
61c7a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
61c7c: 4e93 jsr %a3@ <== NOT EXECUTED
return esc;
61c7e: 508f addql #8,%sp <== NOT EXECUTED
61c80: 6094 bras 61c16 <rtems_bdpart_mount+0x12e> <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
61c82: 2f04 movel %d4,%sp@- <== NOT EXECUTED
61c84: 47f9 0004 2e40 lea 42e40 <free>,%a3 <== NOT EXECUTED
/* Create mount point */
strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
rv = rtems_mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO);
if (rv != 0) {
esc = RTEMS_IO_ERROR;
61c8a: 741b moveq #27,%d2 <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
61c8c: 4e93 jsr %a3@ <== NOT EXECUTED
free( mount_point);
61c8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
61c90: 4e93 jsr %a3@ <== NOT EXECUTED
return esc;
61c92: 508f addql #8,%sp <== NOT EXECUTED
61c94: 6080 bras 61c16 <rtems_bdpart_mount+0x12e> <== NOT EXECUTED
000432ec <rtems_bdpart_new_record>:
static rtems_status_code rtems_bdpart_new_record(
rtems_disk_device *dd,
rtems_blkdev_bnum index,
rtems_bdbuf_buffer **block
)
{
432ec: 4e56 0000 linkw %fp,#0
432f0: 2f0a movel %a2,%sp@-
432f2: 246e 0010 moveal %fp@(16),%a2
rtems_status_code sc = RTEMS_SUCCESSFUL;
/* Synchronize previous block if necessary */
if (*block != NULL) {
432f6: 2012 movel %a2@,%d0
static rtems_status_code rtems_bdpart_new_record(
rtems_disk_device *dd,
rtems_blkdev_bnum index,
rtems_bdbuf_buffer **block
)
{
432f8: 2f02 movel %d2,%sp@-
rtems_status_code sc = RTEMS_SUCCESSFUL;
/* Synchronize previous block if necessary */
if (*block != NULL) {
432fa: 4a80 tstl %d0
432fc: 670e beqs 4330c <rtems_bdpart_new_record+0x20>
sc = rtems_bdbuf_sync( *block);
432fe: 2f00 movel %d0,%sp@-
43300: 4eb9 0004 f9b4 jsr 4f9b4 <rtems_bdbuf_sync>
if (sc != RTEMS_SUCCESSFUL) {
43306: 588f addql #4,%sp
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
/* Synchronize previous block if necessary */
if (*block != NULL) {
sc = rtems_bdbuf_sync( *block);
43308: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL) {
4330a: 664a bnes 43356 <rtems_bdpart_new_record+0x6a> <== NEVER TAKEN
return sc;
}
}
/* Read the new record block (this accounts for disk block sizes > 512) */
sc = rtems_bdbuf_read( dd, index, block);
4330c: 2f0a movel %a2,%sp@-
4330e: 2f2e 000c movel %fp@(12),%sp@-
43312: 2f2e 0008 movel %fp@(8),%sp@-
43316: 4eb9 0004 f6c2 jsr 4f6c2 <rtems_bdbuf_read>
if (sc != RTEMS_SUCCESSFUL) {
4331c: 4fef 000c lea %sp@(12),%sp
return sc;
}
}
/* Read the new record block (this accounts for disk block sizes > 512) */
sc = rtems_bdbuf_read( dd, index, block);
43320: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL) {
43322: 6632 bnes 43356 <rtems_bdpart_new_record+0x6a> <== NEVER TAKEN
return sc;
}
/* just in case block did not get filled in */
if ( *block == NULL ) {
43324: 2052 moveal %a2@,%a0
43326: 4a88 tstl %a0
43328: 673a beqs 43364 <rtems_bdpart_new_record+0x78> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
}
/* Clear record */
memset( (*block)->buffer, 0, RTEMS_BDPART_BLOCK_SIZE);
4332a: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb>
4332e: 42a7 clrl %sp@-
43330: 2f28 001a movel %a0@(26),%sp@-
43334: 4eb9 0005 41c8 jsr 541c8 <memset>
/* Write signature */
(*block)->buffer [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_0] =
4333a: 2052 moveal %a2@,%a0
RTEMS_BDPART_MBR_SIGNATURE_0;
(*block)->buffer [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_1] =
4333c: 4fef 000c lea %sp@(12),%sp
/* Clear record */
memset( (*block)->buffer, 0, RTEMS_BDPART_BLOCK_SIZE);
/* Write signature */
(*block)->buffer [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_0] =
43340: 2068 001a moveal %a0@(26),%a0
43344: 7055 moveq #85,%d0
43346: 1140 01fe moveb %d0,%a0@(510)
RTEMS_BDPART_MBR_SIGNATURE_0;
(*block)->buffer [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_1] =
4334a: 70aa moveq #-86,%d0
4334c: 2052 moveal %a2@,%a0
4334e: 2068 001a moveal %a0@(26),%a0
43352: 1140 01ff moveb %d0,%a0@(511)
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
43356: 2002 movel %d2,%d0
43358: 242e fff8 movel %fp@(-8),%d2
4335c: 246e fffc moveal %fp@(-4),%a2
43360: 4e5e unlk %fp
43362: 4e75 rts
return sc;
}
/* just in case block did not get filled in */
if ( *block == NULL ) {
return RTEMS_INVALID_ADDRESS;
43364: 7409 moveq #9,%d2 <== NOT EXECUTED
RTEMS_BDPART_MBR_SIGNATURE_0;
(*block)->buffer [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_1] =
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
43366: 2002 movel %d2,%d0 <== NOT EXECUTED
43368: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4336c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
43370: 4e5e unlk %fp <== NOT EXECUTED
00042e52 <rtems_bdpart_read>:
const char *disk_name,
rtems_bdpart_format *format,
rtems_bdpart_partition *pt,
size_t *count
)
{
42e52: 4e56 ffbc linkw %fp,#-68
42e56: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
42e5a: 242e 0010 movel %fp@(16),%d2
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
rtems_bdbuf_buffer *block = NULL;
rtems_bdpart_partition *p = pt - 1;
42e5e: 2042 moveal %d2,%a0
42e60: 41e8 ffd0 lea %a0@(-48),%a0
const char *disk_name,
rtems_bdpart_format *format,
rtems_bdpart_partition *pt,
size_t *count
)
{
42e64: 246e 0014 moveal %fp@(20),%a2
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
rtems_bdbuf_buffer *block = NULL;
rtems_bdpart_partition *p = pt - 1;
42e68: 2d48 ffec movel %a0,%fp@(-20)
size_t *count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
rtems_bdbuf_buffer *block = NULL;
42e6c: 42ae ffe8 clrl %fp@(-24)
rtems_bdpart_partition *p = pt - 1;
const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
42e70: 4a8a tstl %a2
42e72: 6700 00b0 beqw 42f24 <rtems_bdpart_read+0xd2>
42e76: 2612 movel %a2@,%d3
42e78: 2003 movel %d3,%d0
42e7a: ed8b lsll #6,%d3
42e7c: e988 lsll #4,%d0
42e7e: 9680 subl %d0,%d3
rtems_blkdev_bnum ep_begin = 0; /* Extended partition begin */
rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */
rtems_blkdev_bnum disk_end = 0;
size_t i = 0;
const uint8_t *data = NULL;
int fd = -1;
42e80: 70ff moveq #-1,%d0
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
rtems_bdbuf_buffer *block = NULL;
rtems_bdpart_partition *p = pt - 1;
const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
rtems_blkdev_bnum ep_begin = 0; /* Extended partition begin */
42e82: 42ae fff0 clrl %fp@(-16)
rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */
rtems_blkdev_bnum disk_end = 0;
42e86: 42ae fff4 clrl %fp@(-12)
size_t i = 0;
const uint8_t *data = NULL;
int fd = -1;
42e8a: 2d40 fff8 movel %d0,%fp@(-8)
rtems_disk_device *dd = NULL;
42e8e: 42ae fffc clrl %fp@(-4)
/* Check parameter */
if (format == NULL || pt == NULL || count == NULL) {
42e92: 4aae 000c tstl %fp@(12)
42e96: 6732 beqs 42eca <rtems_bdpart_read+0x78> <== NEVER TAKEN
42e98: 4a82 tstl %d2
42e9a: 672e beqs 42eca <rtems_bdpart_read+0x78> <== NEVER TAKEN
42e9c: 4a8a tstl %a2
42e9e: 672a beqs 42eca <rtems_bdpart_read+0x78> <== NEVER TAKEN
/* Set count to a save value */
*count = 0;
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
42ea0: 486e fff4 pea %fp@(-12)
42ea4: 486e fffc pea %fp@(-4)
42ea8: 486e fff8 pea %fp@(-8)
if (format == NULL || pt == NULL || count == NULL) {
return RTEMS_INVALID_ADDRESS;
}
/* Set count to a save value */
*count = 0;
42eac: 4292 clrl %a2@
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
42eae: 2f2e 0008 movel %fp@(8),%sp@-
42eb2: 4eb9 0004 2d98 jsr 42d98 <rtems_bdpart_get_disk_data>
if (sc != RTEMS_SUCCESSFUL) {
42eb8: 4fef 0010 lea %sp@(16),%sp
42ebc: 4a80 tstl %d0
42ebe: 6716 beqs 42ed6 <rtems_bdpart_read+0x84> <== ALWAYS TAKEN
if (block != NULL) {
rtems_bdbuf_release( block);
}
return esc;
}
42ec0: 4cee 3cfc ffbc moveml %fp@(-68),%d2-%d7/%a2-%a5 <== NOT EXECUTED
42ec6: 4e5e unlk %fp <== NOT EXECUTED
42ec8: 4e75 rts <== NOT EXECUTED
int fd = -1;
rtems_disk_device *dd = NULL;
/* Check parameter */
if (format == NULL || pt == NULL || count == NULL) {
return RTEMS_INVALID_ADDRESS;
42eca: 7009 moveq #9,%d0 <== NOT EXECUTED
if (block != NULL) {
rtems_bdbuf_release( block);
}
return esc;
}
42ecc: 4cee 3cfc ffbc moveml %fp@(-68),%d2-%d7/%a2-%a5 <== NOT EXECUTED
42ed2: 4e5e unlk %fp <== NOT EXECUTED
42ed4: 4e75 rts <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
/* Read MBR */
sc = rtems_bdpart_read_record( dd, 0, &block);
42ed6: 280e movel %fp,%d4
42ed8: 0684 ffff ffe8 addil #-24,%d4
42ede: 47fa fcd0 lea %pc@(42bb0 <rtems_bdpart_read_record>),%a3
42ee2: 2f04 movel %d4,%sp@-
42ee4: 42a7 clrl %sp@-
42ee6: 2f2e fffc movel %fp@(-4),%sp@-
42eea: 4e93 jsr %a3@
if (sc != RTEMS_SUCCESSFUL) {
42eec: 4fef 000c lea %sp@(12),%sp
42ef0: 4a80 tstl %d0
42ef2: 6736 beqs 42f2a <rtems_bdpart_read+0xd8> <== ALWAYS TAKEN
esc = sc;
goto cleanup;
}
/* Read first partition entry */
sc = rtems_bdpart_read_mbr_partition(
42ef4: 2400 movel %d0,%d2 <== NOT EXECUTED
/* Return partition count */
*count = (size_t) (p - pt + 1);
cleanup:
if (fd >= 0) {
42ef6: 222e fff8 movel %fp@(-8),%d1
42efa: 6d0a blts 42f06 <rtems_bdpart_read+0xb4> <== NEVER TAKEN
close( fd);
42efc: 2f01 movel %d1,%sp@-
42efe: 4eb9 0004 5070 jsr 45070 <close>
42f04: 588f addql #4,%sp
}
if (block != NULL) {
42f06: 222e ffe8 movel %fp@(-24),%d1
42f0a: 6700 019c beqw 430a8 <rtems_bdpart_read+0x256>
rtems_bdbuf_release( block);
42f0e: 2f01 movel %d1,%sp@-
42f10: 4eb9 0004 f894 jsr 4f894 <rtems_bdbuf_release>
42f16: 588f addql #4,%sp
}
return esc;
42f18: 2002 movel %d2,%d0
}
42f1a: 4cee 3cfc ffbc moveml %fp@(-68),%d2-%d7/%a2-%a5
42f20: 4e5e unlk %fp
42f22: 4e75 rts
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
rtems_bdbuf_buffer *block = NULL;
rtems_bdpart_partition *p = pt - 1;
const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
42f24: 4283 clrl %d3 <== NOT EXECUTED
42f26: 6000 ff58 braw 42e80 <rtems_bdpart_read+0x2e> <== NOT EXECUTED
esc = sc;
goto cleanup;
}
/* Read the first partition entry */
data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;
42f2a: 206e ffe8 moveal %fp@(-24),%a0
sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);
42f2e: 2c0e movel %fp,%d6
42f30: 0686 ffff fff0 addil #-16,%d6
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
rtems_bdbuf_buffer *block = NULL;
rtems_bdpart_partition *p = pt - 1;
const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
42f36: d682 addl %d2,%d3
goto cleanup;
}
/* Read the first partition entry */
data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;
sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);
42f38: 2a0e movel %fp,%d5
42f3a: 0685 ffff ffec addil #-20,%d5
42f40: 49fa fd2a lea %pc@(42c6c <rtems_bdpart_read_mbr_partition>),%a4
esc = sc;
goto cleanup;
}
/* Read the first partition entry */
data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;
42f44: 2e28 001a movel %a0@(26),%d7
42f48: 2a47 moveal %d7,%a5
42f4a: 4bed 01be lea %a5@(446),%a5
sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);
42f4e: 2f06 movel %d6,%sp@-
42f50: 2f03 movel %d3,%sp@-
42f52: 2f05 movel %d5,%sp@-
42f54: 2f0d movel %a5,%sp@-
42f56: 4e94 jsr %a4@
if (sc != RTEMS_SUCCESSFUL) {
42f58: 4fef 0010 lea %sp@(16),%sp
42f5c: 4a80 tstl %d0
42f5e: 6694 bnes 42ef4 <rtems_bdpart_read+0xa2> <== NEVER TAKEN
if (block != NULL) {
rtems_bdbuf_release( block);
}
return esc;
}
42f60: 206e ffec moveal %fp@(-20),%a0
esc = sc;
goto cleanup;
}
/* Determine if we have a MBR or GPT format */
if (rtems_bdpart_mbr_partition_type( p->type) == RTEMS_BDPART_MBR_GPT) {
42f64: 4280 clrl %d0
42f66: 1028 0008 moveb %a0@(8),%d0
42f6a: 0c80 0000 00ee cmpil #238,%d0
42f70: 6700 0142 beqw 430b4 <rtems_bdpart_read+0x262>
esc = RTEMS_NOT_IMPLEMENTED;
goto cleanup;
}
/* Set format */
format->type = RTEMS_BDPART_FORMAT_MBR;
42f74: 206e 000c moveal %fp@(12),%a0
return value;
}
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{
uint32_t value = 0;
42f78: 4280 clrl %d0
42f7a: 4290 clrl %a0@
format->mbr.disk_id = rtems_uint32_from_little_endian(
block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID
42f7c: 206e ffe8 moveal %fp@(-24),%a0
42f80: 2228 001a movel %a0@(26),%d1
}
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_read(
42f84: 2041 moveal %d1,%a0
42f86: 0681 0000 01b8 addil #440,%d1
42f8c: 41e8 01bc lea %a0@(444),%a0
42f90: 2d41 ffe4 movel %d1,%fp@(-28)
ssize_t i = 0;
for (i = 3; i >= 0; --i) {
value = (value << 8) + data [i];
42f94: 4281 clrl %d1
42f96: 1220 moveb %a0@-,%d1
42f98: 2241 moveal %d1,%a1
42f9a: e188 lsll #8,%d0
42f9c: d089 addl %a1,%d0
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{
uint32_t value = 0;
ssize_t i = 0;
for (i = 3; i >= 0; --i) {
42f9e: b1ee ffe4 cmpal %fp@(-28),%a0
42fa2: 66f0 bnes 42f94 <rtems_bdpart_read+0x142>
goto cleanup;
}
/* Set format */
format->type = RTEMS_BDPART_FORMAT_MBR;
format->mbr.disk_id = rtems_uint32_from_little_endian(
42fa4: 206e 000c moveal %fp@(12),%a0
}
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_read(
42fa8: 0687 0000 01ee addil #494,%d7
goto cleanup;
}
/* Set format */
format->type = RTEMS_BDPART_FORMAT_MBR;
format->mbr.disk_id = rtems_uint32_from_little_endian(
42fae: 2140 0004 movel %d0,%a0@(4)
block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID
);
format->mbr.dos_compatibility = true;
42fb2: 7001 moveq #1,%d0
42fb4: 1140 0008 moveb %d0,%a0@(8)
/* Iterate through the rest of the primary partition table */
for (i = 1; i < 4; ++i) {
data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;
sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);
42fb8: 2f06 movel %d6,%sp@-
);
format->mbr.dos_compatibility = true;
/* Iterate through the rest of the primary partition table */
for (i = 1; i < 4; ++i) {
data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;
42fba: 4bed 0010 lea %a5@(16),%a5
sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);
42fbe: 2f03 movel %d3,%sp@-
42fc0: 2f05 movel %d5,%sp@-
42fc2: 2f0d movel %a5,%sp@-
42fc4: 4e94 jsr %a4@
if (sc != RTEMS_SUCCESSFUL) {
42fc6: 4fef 0010 lea %sp@(16),%sp
42fca: 4a80 tstl %d0
42fcc: 6600 ff26 bnew 42ef4 <rtems_bdpart_read+0xa2>
block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID
);
format->mbr.dos_compatibility = true;
/* Iterate through the rest of the primary partition table */
for (i = 1; i < 4; ++i) {
42fd0: be8d cmpl %a5,%d7
42fd2: 66e4 bnes 42fb8 <rtems_bdpart_read+0x166>
goto cleanup;
}
}
/* Iterate through the logical partitions within the extended partition */
ebr = ep_begin;
42fd4: 2c2e fff0 movel %fp@(-16),%d6
while (ebr != 0) {
42fd8: 6700 00b0 beqw 4308a <rtems_bdpart_read+0x238>
rtems_blkdev_bnum tmp = 0;
/* Read EBR */
sc = rtems_bdpart_read_record( dd, ebr, &block);
42fdc: 2f04 movel %d4,%sp@-
42fde: 2f06 movel %d6,%sp@-
42fe0: 2f2e fffc movel %fp@(-4),%sp@-
42fe4: 4e93 jsr %a3@
if (sc != RTEMS_SUCCESSFUL) {
42fe6: 4fef 000c lea %sp@(12),%sp
42fea: 4a80 tstl %d0
42fec: 6600 ff06 bnew 42ef4 <rtems_bdpart_read+0xa2>
esc = sc;
goto cleanup;
}
/* Read first partition entry */
sc = rtems_bdpart_read_mbr_partition(
42ff0: 42a7 clrl %sp@-
42ff2: 206e ffe8 moveal %fp@(-24),%a0
42ff6: 2f03 movel %d3,%sp@-
42ff8: 2f05 movel %d5,%sp@-
42ffa: 2068 001a moveal %a0@(26),%a0
42ffe: 41e8 01be lea %a0@(446),%a0
43002: 2f08 movel %a0,%sp@-
43004: 4e94 jsr %a4@
block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0,
&p,
p_end,
NULL
);
if (sc != RTEMS_SUCCESSFUL) {
43006: 4fef 0010 lea %sp@(16),%sp
4300a: 4a80 tstl %d0
4300c: 6600 fee6 bnew 42ef4 <rtems_bdpart_read+0xa2>
esc = sc;
goto cleanup;
}
/* Adjust partition begin */
tmp = p->begin + ebr;
43010: 226e ffec moveal %fp@(-20),%a1
43014: 2206 movel %d6,%d1
43016: 2011 movel %a1@,%d0
43018: d280 addl %d0,%d1
if (tmp > p->begin) {
4301a: b280 cmpl %d0,%d1
4301c: 6366 blss 43084 <rtems_bdpart_read+0x232> <== NEVER TAKEN
esc = RTEMS_IO_ERROR;
goto cleanup;
}
/* Adjust partition end */
tmp = p->end + ebr;
4301e: 2029 0004 movel %a1@(4),%d0
43022: dc80 addl %d0,%d6
}
/* Adjust partition begin */
tmp = p->begin + ebr;
if (tmp > p->begin) {
p->begin = tmp;
43024: 2281 movel %d1,%a1@
goto cleanup;
}
/* Adjust partition end */
tmp = p->end + ebr;
if (tmp > p->end) {
43026: bc80 cmpl %d0,%d6
43028: 635a blss 43084 <rtems_bdpart_read+0x232> <== NEVER TAKEN
goto cleanup;
}
/* Read second partition entry for next EBR block */
ebr = rtems_bdpart_next_ebr(
block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1
4302a: 206e ffe8 moveal %fp@(-24),%a0
4302e: 7003 moveq #3,%d0
return value;
}
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{
uint32_t value = 0;
43030: 4281 clrl %d1
43032: 2a68 001a moveal %a0@(26),%a5
}
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_read(
43036: 41ed 01da lea %a5@(474),%a0
}
/* Adjust partition end */
tmp = p->end + ebr;
if (tmp > p->end) {
p->end = tmp;
4303a: 2346 0004 movel %d6,%a1@(4)
ssize_t i = 0;
for (i = 3; i >= 0; --i) {
value = (value << 8) + data [i];
4303e: 4286 clrl %d6
43040: 1c20 moveb %a0@-,%d6
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{
uint32_t value = 0;
ssize_t i = 0;
for (i = 3; i >= 0; --i) {
43042: 5380 subql #1,%d0
value = (value << 8) + data [i];
43044: e189 lsll #8,%d1
43046: d286 addl %d6,%d1
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{
uint32_t value = 0;
ssize_t i = 0;
for (i = 3; i >= 0; --i) {
43048: 7cff moveq #-1,%d6
4304a: bc80 cmpl %d0,%d6
4304c: 66f0 bnes 4303e <rtems_bdpart_read+0x1ec>
{
rtems_blkdev_bnum begin =
rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];
if (type == RTEMS_BDPART_MBR_EXTENDED) {
4304e: 4280 clrl %d0
43050: 102d 01d2 moveb %a5@(466),%d0
43054: 7c05 moveq #5,%d6
43056: bc80 cmpl %d0,%d6
43058: 671a beqs 43074 <rtems_bdpart_read+0x222>
}
}
}
/* Return partition count */
*count = (size_t) (p - pt + 1);
4305a: 2009 movel %a1,%d0
4305c: 9082 subl %d2,%d0
4305e: e880 asrl #4,%d0
43060: 223c aaaa aaab movel #-1431655765,%d1
43066: 4c01 0800 mulsl %d1,%d0
rtems_bdpart_partition *pt,
size_t *count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
4306a: 4282 clrl %d2
}
}
}
/* Return partition count */
*count = (size_t) (p - pt + 1);
4306c: 5280 addql #1,%d0
4306e: 2480 movel %d0,%a2@
43070: 6000 fe84 braw 42ef6 <rtems_bdpart_read+0xa4>
/* Read second partition entry for next EBR block */
ebr = rtems_bdpart_next_ebr(
block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1
);
if (ebr != 0) {
43074: 4a81 tstl %d1
43076: 67e2 beqs 4305a <rtems_bdpart_read+0x208> <== NEVER TAKEN
/* Adjust partition EBR block index */
tmp = ebr + ep_begin;
43078: 2c01 movel %d1,%d6
4307a: dcae fff0 addl %fp@(-16),%d6
if (tmp > ebr) {
4307e: b286 cmpl %d6,%d1
43080: 6500 ff5a bcsw 42fdc <rtems_bdpart_read+0x18a>
/* Adjust partition begin */
tmp = p->begin + ebr;
if (tmp > p->begin) {
p->begin = tmp;
} else {
esc = RTEMS_IO_ERROR;
43084: 741b moveq #27,%d2 <== NOT EXECUTED
43086: 6000 fe6e braw 42ef6 <rtems_bdpart_read+0xa4> <== NOT EXECUTED
4308a: 226e ffec moveal %fp@(-20),%a1 <== NOT EXECUTED
}
}
}
/* Return partition count */
*count = (size_t) (p - pt + 1);
4308e: 2009 movel %a1,%d0 <== NOT EXECUTED
43090: 9082 subl %d2,%d0 <== NOT EXECUTED
43092: e880 asrl #4,%d0 <== NOT EXECUTED
43094: 223c aaaa aaab movel #-1431655765,%d1 <== NOT EXECUTED
4309a: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
rtems_bdpart_partition *pt,
size_t *count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
4309e: 4282 clrl %d2 <== NOT EXECUTED
}
}
}
/* Return partition count */
*count = (size_t) (p - pt + 1);
430a0: 5280 addql #1,%d0 <== NOT EXECUTED
430a2: 2480 movel %d0,%a2@ <== NOT EXECUTED
430a4: 6000 fe50 braw 42ef6 <rtems_bdpart_read+0xa4> <== NOT EXECUTED
if (block != NULL) {
rtems_bdbuf_release( block);
}
return esc;
430a8: 2002 movel %d2,%d0 <== NOT EXECUTED
}
430aa: 4cee 3cfc ffbc moveml %fp@(-68),%d2-%d7/%a2-%a5 <== NOT EXECUTED
430b0: 4e5e unlk %fp <== NOT EXECUTED
430b2: 4e75 rts <== NOT EXECUTED
goto cleanup;
}
/* Determine if we have a MBR or GPT format */
if (rtems_bdpart_mbr_partition_type( p->type) == RTEMS_BDPART_MBR_GPT) {
esc = RTEMS_NOT_IMPLEMENTED;
430b4: 7418 moveq #24,%d2 <== NOT EXECUTED
430b6: 6000 fe3e braw 42ef6 <rtems_bdpart_read+0xa4> <== NOT EXECUTED
...
00042c6c <rtems_bdpart_read_mbr_partition>:
return value;
}
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{
uint32_t value = 0;
42c6c: 4280 clrl %d0
const uint8_t *data,
rtems_bdpart_partition **p,
const rtems_bdpart_partition *p_end,
rtems_blkdev_bnum *ep_begin
)
{
42c6e: 4e56 fff0 linkw %fp,#-16
42c72: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
42c76: 246e 0008 moveal %fp@(8),%a2
} else {
return 0;
}
}
static rtems_status_code rtems_bdpart_read_mbr_partition(
42c7a: 43ea 000c lea %a2@(12),%a1
42c7e: 240a movel %a2,%d2
42c80: 2049 moveal %a1,%a0
42c82: 5082 addql #8,%d2
ssize_t i = 0;
for (i = 3; i >= 0; --i) {
value = (value << 8) + data [i];
42c84: 4281 clrl %d1
42c86: 1220 moveb %a0@-,%d1
42c88: e188 lsll #8,%d0
42c8a: d081 addl %d1,%d0
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{
uint32_t value = 0;
ssize_t i = 0;
for (i = 3; i >= 0; --i) {
42c8c: b488 cmpl %a0,%d2
42c8e: 66f4 bnes 42c84 <rtems_bdpart_read_mbr_partition+0x18>
42c90: 41ea 0010 lea %a2@(16),%a0
return value;
}
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{
uint32_t value = 0;
42c94: 4281 clrl %d1
ssize_t i = 0;
for (i = 3; i >= 0; --i) {
value = (value << 8) + data [i];
42c96: 4282 clrl %d2
42c98: 1420 moveb %a0@-,%d2
42c9a: e189 lsll #8,%d1
42c9c: d282 addl %d2,%d1
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{
uint32_t value = 0;
ssize_t i = 0;
for (i = 3; i >= 0; --i) {
42c9e: b3c8 cmpal %a0,%a1
42ca0: 66f4 bnes 42c96 <rtems_bdpart_read_mbr_partition+0x2a>
rtems_blkdev_bnum begin =
rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
rtems_blkdev_bnum size =
rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_SIZE);
rtems_blkdev_bnum end = begin + size;
uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];
42ca2: 142a 0004 moveb %a2@(4),%d2
if (type == RTEMS_BDPART_MBR_EMPTY) {
42ca6: 671e beqs 42cc6 <rtems_bdpart_read_mbr_partition+0x5a><== NEVER TAKEN
return RTEMS_SUCCESSFUL;
} else if (*p == p_end) {
42ca8: 226e 000c moveal %fp@(12),%a1
42cac: 2051 moveal %a1@,%a0
42cae: b1ee 0010 cmpal %fp@(16),%a0
42cb2: 671e beqs 42cd2 <rtems_bdpart_read_mbr_partition+0x66><== NEVER TAKEN
{
rtems_blkdev_bnum begin =
rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
rtems_blkdev_bnum size =
rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_SIZE);
rtems_blkdev_bnum end = begin + size;
42cb4: d280 addl %d0,%d1
if (type == RTEMS_BDPART_MBR_EMPTY) {
return RTEMS_SUCCESSFUL;
} else if (*p == p_end) {
return RTEMS_TOO_MANY;
} else if (begin >= end) {
42cb6: b081 cmpl %d1,%d0
42cb8: 6524 bcss 42cde <rtems_bdpart_read_mbr_partition+0x72><== ALWAYS TAKEN
return RTEMS_IO_ERROR;
42cba: 701b moveq #27,%d0 <== NOT EXECUTED
rtems_bdpart_to_partition_type( type, (*p)->type);
(*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];
}
return RTEMS_SUCCESSFUL;
}
42cbc: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
42cc2: 4e5e unlk %fp <== NOT EXECUTED
42cc4: 4e75 rts <== NOT EXECUTED
rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_SIZE);
rtems_blkdev_bnum end = begin + size;
uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];
if (type == RTEMS_BDPART_MBR_EMPTY) {
return RTEMS_SUCCESSFUL;
42cc6: 4280 clrl %d0 <== NOT EXECUTED
rtems_bdpart_to_partition_type( type, (*p)->type);
(*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];
}
return RTEMS_SUCCESSFUL;
}
42cc8: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
42cce: 4e5e unlk %fp <== NOT EXECUTED
42cd0: 4e75 rts <== NOT EXECUTED
uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];
if (type == RTEMS_BDPART_MBR_EMPTY) {
return RTEMS_SUCCESSFUL;
} else if (*p == p_end) {
return RTEMS_TOO_MANY;
42cd2: 7005 moveq #5,%d0 <== NOT EXECUTED
rtems_bdpart_to_partition_type( type, (*p)->type);
(*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];
}
return RTEMS_SUCCESSFUL;
}
42cd4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
42cda: 4e5e unlk %fp <== NOT EXECUTED
42cdc: 4e75 rts <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
} else if (*p == p_end) {
return RTEMS_TOO_MANY;
} else if (begin >= end) {
return RTEMS_IO_ERROR;
} else if (type == RTEMS_BDPART_MBR_EXTENDED) {
42cde: 7605 moveq #5,%d3
42ce0: 0282 0000 00ff andil #255,%d2
42ce6: b682 cmpl %d2,%d3
42ce8: 6618 bnes 42d02 <rtems_bdpart_read_mbr_partition+0x96>
if (ep_begin != NULL) {
42cea: 4aae 0014 tstl %fp@(20)
42cee: 67d6 beqs 42cc6 <rtems_bdpart_read_mbr_partition+0x5a><== NEVER TAKEN
*ep_begin = begin;
42cf0: 206e 0014 moveal %fp@(20),%a0
rtems_bdpart_to_partition_type( type, (*p)->type);
(*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];
}
return RTEMS_SUCCESSFUL;
}
42cf4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
return RTEMS_TOO_MANY;
} else if (begin >= end) {
return RTEMS_IO_ERROR;
} else if (type == RTEMS_BDPART_MBR_EXTENDED) {
if (ep_begin != NULL) {
*ep_begin = begin;
42cfa: 2080 movel %d0,%a0@
(*p)->end = end;
rtems_bdpart_to_partition_type( type, (*p)->type);
(*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];
}
return RTEMS_SUCCESSFUL;
42cfc: 4280 clrl %d0
}
42cfe: 4e5e unlk %fp
42d00: 4e75 rts
if (ep_begin != NULL) {
*ep_begin = begin;
}
} else {
/* Increment partition index */
++(*p);
42d02: 266e 000c moveal %fp@(12),%a3
42d06: 43e8 0030 lea %a0@(48),%a1
42d0a: 2689 movel %a1,%a3@
/* Clear partition */
memset( *p, 0, sizeof( rtems_bdpart_partition));
42d0c: 4291 clrl %a1@
42d0e: 42a8 0034 clrl %a0@(52)
42d12: 42a8 0038 clrl %a0@(56)
42d16: 42a8 003c clrl %a0@(60)
42d1a: 42a8 0040 clrl %a0@(64)
42d1e: 42a8 0044 clrl %a0@(68)
42d22: 42a8 0048 clrl %a0@(72)
42d26: 42a8 004c clrl %a0@(76)
42d2a: 42a8 0050 clrl %a0@(80)
42d2e: 42a8 0054 clrl %a0@(84)
42d32: 42a8 0058 clrl %a0@(88)
42d36: 42a8 005c clrl %a0@(92)
/* Set values */
(*p)->begin = begin;
42d3a: 2053 moveal %a3@,%a0
42d3c: 2080 movel %d0,%a0@
(*p)->end = end;
42d3e: 2141 0004 movel %d1,%a0@(4)
rtems_bdpart_to_partition_type( type, (*p)->type);
42d42: 4868 0008 pea %a0@(8)
42d46: 2f02 movel %d2,%sp@-
42d48: 4eb9 0004 2c2c jsr 42c2c <rtems_bdpart_to_partition_type>
(*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];
42d4e: 2053 moveal %a3@,%a0
42d50: 4281 clrl %d1
42d52: 1212 moveb %a2@,%d1
42d54: 508f addql #8,%sp
}
return RTEMS_SUCCESSFUL;
42d56: 4280 clrl %d0
}
42d58: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
/* Set values */
(*p)->begin = begin;
(*p)->end = end;
rtems_bdpart_to_partition_type( type, (*p)->type);
(*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];
42d5e: 42a8 0028 clrl %a0@(40)
}
return RTEMS_SUCCESSFUL;
}
42d62: 4e5e unlk %fp
/* Set values */
(*p)->begin = begin;
(*p)->end = end;
rtems_bdpart_to_partition_type( type, (*p)->type);
(*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];
42d64: 2141 002c movel %d1,%a0@(44)
}
return RTEMS_SUCCESSFUL;
}
00042bb0 <rtems_bdpart_read_record>:
static rtems_status_code rtems_bdpart_read_record(
rtems_disk_device *dd,
rtems_blkdev_bnum index,
rtems_bdbuf_buffer **block
)
{
42bb0: 4e56 0000 linkw %fp,#0
42bb4: 2f0a movel %a2,%sp@-
42bb6: 246e 0010 moveal %fp@(16),%a2
rtems_status_code sc = RTEMS_SUCCESSFUL;
/* Release previous block if necessary */
if (*block != NULL) {
42bba: 2012 movel %a2@,%d0
static rtems_status_code rtems_bdpart_read_record(
rtems_disk_device *dd,
rtems_blkdev_bnum index,
rtems_bdbuf_buffer **block
)
{
42bbc: 2f02 movel %d2,%sp@-
rtems_status_code sc = RTEMS_SUCCESSFUL;
/* Release previous block if necessary */
if (*block != NULL) {
42bbe: 4a80 tstl %d0
42bc0: 670e beqs 42bd0 <rtems_bdpart_read_record+0x20>
sc = rtems_bdbuf_release( *block);
42bc2: 2f00 movel %d0,%sp@-
42bc4: 4eb9 0004 f894 jsr 4f894 <rtems_bdbuf_release>
if (sc != RTEMS_SUCCESSFUL) {
42bca: 588f addql #4,%sp
42bcc: 4a80 tstl %d0
42bce: 6630 bnes 42c00 <rtems_bdpart_read_record+0x50> <== NEVER TAKEN
return sc;
}
}
/* Read the record block */
sc = rtems_bdbuf_read( dd, index, block);
42bd0: 2f0a movel %a2,%sp@-
42bd2: 2f2e 000c movel %fp@(12),%sp@-
42bd6: 2f2e 0008 movel %fp@(8),%sp@-
42bda: 4eb9 0004 f6c2 jsr 4f6c2 <rtems_bdbuf_read>
if (sc != RTEMS_SUCCESSFUL) {
42be0: 4fef 000c lea %sp@(12),%sp
42be4: 4a80 tstl %d0
42be6: 6618 bnes 42c00 <rtems_bdpart_read_record+0x50> <== NEVER TAKEN
return sc;
}
/* just in case block did not get filled in */
if ( *block == NULL ) {
42be8: 2052 moveal %a2@,%a0
42bea: 4a88 tstl %a0
42bec: 6730 beqs 42c1e <rtems_bdpart_read_record+0x6e> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
}
/* Check MBR signature */
if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {
42bee: 2068 001a moveal %a0@(26),%a0
static bool rtems_bdpart_is_valid_record( const uint8_t *data)
{
return data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_0]
== RTEMS_BDPART_MBR_SIGNATURE_0
&& data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_1]
42bf2: 4281 clrl %d1
42bf4: 1228 01fe moveb %a0@(510),%d1
42bf8: 7455 moveq #85,%d2
42bfa: b481 cmpl %d1,%d2
42bfc: 670e beqs 42c0c <rtems_bdpart_read_record+0x5c>
return RTEMS_INVALID_ADDRESS;
}
/* Check MBR signature */
if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {
return RTEMS_IO_ERROR;
42bfe: 701b moveq #27,%d0 <== NOT EXECUTED
}
return RTEMS_SUCCESSFUL;
}
42c00: 242e fff8 movel %fp@(-8),%d2
42c04: 246e fffc moveal %fp@(-4),%a2
42c08: 4e5e unlk %fp
42c0a: 4e75 rts
static bool rtems_bdpart_is_valid_record( const uint8_t *data)
{
return data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_0]
== RTEMS_BDPART_MBR_SIGNATURE_0
&& data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_1]
42c0c: 4281 clrl %d1
42c0e: 1228 01ff moveb %a0@(511),%d1
42c12: 0c81 0000 00aa cmpil #170,%d1
42c18: 67e6 beqs 42c00 <rtems_bdpart_read_record+0x50> <== ALWAYS TAKEN
return RTEMS_INVALID_ADDRESS;
}
/* Check MBR signature */
if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {
return RTEMS_IO_ERROR;
42c1a: 701b moveq #27,%d0 <== NOT EXECUTED
42c1c: 60e2 bras 42c00 <rtems_bdpart_read_record+0x50> <== NOT EXECUTED
}
return RTEMS_SUCCESSFUL;
}
42c1e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return sc;
}
/* just in case block did not get filled in */
if ( *block == NULL ) {
return RTEMS_INVALID_ADDRESS;
42c22: 7009 moveq #9,%d0 <== NOT EXECUTED
if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {
return RTEMS_IO_ERROR;
}
return RTEMS_SUCCESSFUL;
}
42c24: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
42c28: 4e5e unlk %fp <== NOT EXECUTED
000430bc <rtems_bdpart_register>:
rtems_status_code rtems_bdpart_register(
const char *disk_name,
const rtems_bdpart_partition *pt,
size_t count
)
{
430bc: 4e56 ffc4 linkw %fp,#-60
430c0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
430c4: 242e 0008 movel %fp@(8),%d2
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
rtems_blkdev_bnum disk_end = 0;
430c8: 42ae fff4 clrl %fp@(-12)
dev_t disk = 0;
dev_t logical_disk = 0;
char *logical_disk_name = NULL;
char *logical_disk_marker = NULL;
size_t disk_name_size = strlen( disk_name);
430cc: 2f02 movel %d2,%sp@-
430ce: 4eb9 0005 4e14 jsr 54e14 <strlen>
430d4: 588f addql #4,%sp
430d6: 2840 moveal %d0,%a4
size_t i = 0;
int fd = -1;
rtems_disk_device *dd = NULL;
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
430d8: 486e fff4 pea %fp@(-12)
dev_t logical_disk = 0;
char *logical_disk_name = NULL;
char *logical_disk_marker = NULL;
size_t disk_name_size = strlen( disk_name);
size_t i = 0;
int fd = -1;
430dc: 70ff moveq #-1,%d0
rtems_disk_device *dd = NULL;
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
430de: 486e fffc pea %fp@(-4)
430e2: 486e fff8 pea %fp@(-8)
dev_t logical_disk = 0;
char *logical_disk_name = NULL;
char *logical_disk_marker = NULL;
size_t disk_name_size = strlen( disk_name);
size_t i = 0;
int fd = -1;
430e6: 2d40 fff8 movel %d0,%fp@(-8)
rtems_disk_device *dd = NULL;
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
430ea: 2f02 movel %d2,%sp@-
char *logical_disk_name = NULL;
char *logical_disk_marker = NULL;
size_t disk_name_size = strlen( disk_name);
size_t i = 0;
int fd = -1;
rtems_disk_device *dd = NULL;
430ec: 42ae fffc clrl %fp@(-4)
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
430f0: 4eb9 0004 2d98 jsr 42d98 <rtems_bdpart_get_disk_data>
if (sc != RTEMS_SUCCESSFUL) {
430f6: 4fef 0010 lea %sp@(16),%sp
430fa: 4a80 tstl %d0
430fc: 670a beqs 43108 <rtems_bdpart_register+0x4c> <== ALWAYS TAKEN
cleanup:
free( logical_disk_name);
return esc;
}
430fe: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
43104: 4e5e unlk %fp <== NOT EXECUTED
43106: 4e75 rts <== NOT EXECUTED
return sc;
}
}
return RTEMS_SUCCESSFUL;
}
43108: 206e fffc moveal %fp@(-4),%a0
4310c: 2810 movel %a0@,%d4
4310e: 2a28 0004 movel %a0@(4),%d5
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
disk = rtems_disk_get_device_identifier( dd);
close( fd);
43112: 2f2e fff8 movel %fp@(-8),%sp@-
)
{
union __rtems_dev_t temp;
temp.device = device;
return temp.__overlay.minor;
43116: 2e05 movel %d5,%d7
)
{
union __rtems_dev_t temp;
temp.device = device;
return temp.__overlay.major;
43118: 2d44 fff0 movel %d4,%fp@(-16)
4311c: 4eb9 0004 5070 jsr 45070 <close>
/* Get the disk device identifier */
rtems_filesystem_split_dev_t( disk, major, minor);
/* Create logical disk name */
logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
43122: 486c 0004 pea %a4@(4)
43126: 4eb9 0004 594c jsr 4594c <malloc>
if (logical_disk_name == NULL) {
4312c: 508f addql #8,%sp
/* Get the disk device identifier */
rtems_filesystem_split_dev_t( disk, major, minor);
/* Create logical disk name */
logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
4312e: 2440 moveal %d0,%a2
if (logical_disk_name == NULL) {
43130: 4a80 tstl %d0
43132: 6700 0096 beqw 431ca <rtems_bdpart_register+0x10e>
return RTEMS_NO_MEMORY;
}
strncpy( logical_disk_name, disk_name, disk_name_size);
43136: 2f0c movel %a4,%sp@-
logical_disk_marker = logical_disk_name + disk_name_size;
43138: d9c0 addal %d0,%a4
/* Create logical disk name */
logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
if (logical_disk_name == NULL) {
return RTEMS_NO_MEMORY;
}
strncpy( logical_disk_name, disk_name, disk_name_size);
4313a: 2f02 movel %d2,%sp@-
logical_disk_marker = logical_disk_name + disk_name_size;
4313c: 2d4c ffec movel %a4,%fp@(-20)
/* Create logical disk name */
logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
if (logical_disk_name == NULL) {
return RTEMS_NO_MEMORY;
}
strncpy( logical_disk_name, disk_name, disk_name_size);
43140: 2f00 movel %d0,%sp@-
43142: 4eb9 0005 4f2c jsr 54f2c <strncpy>
logical_disk_marker = logical_disk_name + disk_name_size;
/* Create a logical disk for each partition */
for (i = 0; i < count; ++i) {
43148: 4fef 000c lea %sp@(12),%sp
4314c: 4aae 0010 tstl %fp@(16)
43150: 6760 beqs 431b2 <rtems_bdpart_register+0xf6> <== NEVER TAKEN
43152: 266e 000c moveal %fp@(12),%a3
43156: 4286 clrl %d6
43158: 49f9 0005 45a8 lea 545a8 <snprintf>,%a4
esc = RTEMS_INVALID_NAME;
goto cleanup;
}
/* Create logical disk */
sc = rtems_disk_create_log(
4315e: 4bf9 0004 3da6 lea 43da6 <rtems_disk_create_log>,%a5
/* Create a new device identifier */
logical_disk = rtems_filesystem_make_dev_t( major, minor);
/* Set partition number for logical disk name */
rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
43164: 5286 addql #1,%d6
for (i = 0; i < count; ++i) {
const rtems_bdpart_partition *p = pt + i;
int rv = 0;
/* New minor number */
++minor;
43166: 5287 addql #1,%d7
/* Create a new device identifier */
logical_disk = rtems_filesystem_make_dev_t( major, minor);
/* Set partition number for logical disk name */
rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
43168: 2f06 movel %d6,%sp@-
4316a: 4879 0006 2274 pea 62274 <RTEMS_BDPART_MBR_MASTER_TYPE+0x10>
43170: 4878 0004 pea 4 <CONTEXT_ARG>
43174: 2f2e ffec movel %fp@(-20),%sp@-
{
union __rtems_dev_t temp;
temp.__overlay.major = _major;
temp.__overlay.minor = _minor;
return temp.device;
43178: 242e fff0 movel %fp@(-16),%d2
4317c: 4e94 jsr %a4@
if (rv >= RTEMS_BDPART_NUMBER_SIZE) {
4317e: 4fef 0010 lea %sp@(16),%sp
43182: 7203 moveq #3,%d1
43184: b280 cmpl %d0,%d1
43186: 6d5e blts 431e6 <rtems_bdpart_register+0x12a> <== NEVER TAKEN
/* Create logical disk */
sc = rtems_disk_create_log(
logical_disk,
disk,
p->begin,
p->end - p->begin,
43188: 2013 movel %a3@,%d0
esc = RTEMS_INVALID_NAME;
goto cleanup;
}
/* Create logical disk */
sc = rtems_disk_create_log(
4318a: 2f0a movel %a2,%sp@-
4318c: 222b 0004 movel %a3@(4),%d1
43190: 9280 subl %d0,%d1
43192: 47eb 0030 lea %a3@(48),%a3
43196: 2f01 movel %d1,%sp@-
43198: 2f00 movel %d0,%sp@-
4319a: 2f05 movel %d5,%sp@-
4319c: 2f04 movel %d4,%sp@-
4319e: 2f07 movel %d7,%sp@-
431a0: 2f02 movel %d2,%sp@-
431a2: 4e95 jsr %a5@
disk,
p->begin,
p->end - p->begin,
logical_disk_name
);
if (sc != RTEMS_SUCCESSFUL) {
431a4: 4fef 001c lea %sp@(28),%sp
431a8: 4a80 tstl %d0
431aa: 662a bnes 431d6 <rtems_bdpart_register+0x11a> <== NEVER TAKEN
}
strncpy( logical_disk_name, disk_name, disk_name_size);
logical_disk_marker = logical_disk_name + disk_name_size;
/* Create a logical disk for each partition */
for (i = 0; i < count; ++i) {
431ac: bcae 0010 cmpl %fp@(16),%d6
431b0: 66b2 bnes 43164 <rtems_bdpart_register+0xa8>
}
}
cleanup:
free( logical_disk_name);
431b2: 2f0a movel %a2,%sp@-
const rtems_bdpart_partition *pt,
size_t count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
431b4: 4282 clrl %d2
}
}
cleanup:
free( logical_disk_name);
431b6: 4eb9 0004 5344 jsr 45344 <free>
431bc: 588f addql #4,%sp
return esc;
431be: 2002 movel %d2,%d0
}
431c0: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5
431c6: 4e5e unlk %fp
431c8: 4e75 rts
rtems_filesystem_split_dev_t( disk, major, minor);
/* Create logical disk name */
logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
if (logical_disk_name == NULL) {
return RTEMS_NO_MEMORY;
431ca: 701a moveq #26,%d0 <== NOT EXECUTED
cleanup:
free( logical_disk_name);
return esc;
}
431cc: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
431d2: 4e5e unlk %fp <== NOT EXECUTED
431d4: 4e75 rts <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
431d6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
esc = RTEMS_INVALID_NAME;
goto cleanup;
}
/* Create logical disk */
sc = rtems_disk_create_log(
431d8: 2400 movel %d0,%d2 <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
431da: 4eb9 0004 5344 jsr 45344 <free> <== NOT EXECUTED
431e0: 588f addql #4,%sp <== NOT EXECUTED
return esc;
431e2: 2002 movel %d2,%d0 <== NOT EXECUTED
431e4: 60da bras 431c0 <rtems_bdpart_register+0x104> <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
431e6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
logical_disk = rtems_filesystem_make_dev_t( major, minor);
/* Set partition number for logical disk name */
rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
if (rv >= RTEMS_BDPART_NUMBER_SIZE) {
esc = RTEMS_INVALID_NAME;
431e8: 7403 moveq #3,%d2 <== NOT EXECUTED
}
}
cleanup:
free( logical_disk_name);
431ea: 4eb9 0004 5344 jsr 45344 <free> <== NOT EXECUTED
431f0: 588f addql #4,%sp <== NOT EXECUTED
return esc;
431f2: 2002 movel %d2,%d0 <== NOT EXECUTED
431f4: 60ca bras 431c0 <rtems_bdpart_register+0x104> <== NOT EXECUTED
000431f6 <rtems_bdpart_register_from_disk>:
rtems_status_code rtems_bdpart_register_from_disk( const char *disk_name)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_bdpart_format format;
rtems_bdpart_partition pt [RTEMS_BDPART_PARTITION_NUMBER_HINT];
size_t count = RTEMS_BDPART_PARTITION_NUMBER_HINT;
431f6: 7010 moveq #16,%d0
return esc;
}
rtems_status_code rtems_bdpart_register_from_disk( const char *disk_name)
{
431f8: 4e56 fce8 linkw %fp,#-792
431fc: 2f03 movel %d3,%sp@-
rtems_bdpart_format format;
rtems_bdpart_partition pt [RTEMS_BDPART_PARTITION_NUMBER_HINT];
size_t count = RTEMS_BDPART_PARTITION_NUMBER_HINT;
/* Read partitions */
sc = rtems_bdpart_read( disk_name, &format, pt, &count);
431fe: 260e movel %fp,%d3
43200: 0683 ffff fd00 addil #-768,%d3
return esc;
}
rtems_status_code rtems_bdpart_register_from_disk( const char *disk_name)
{
43206: 2f02 movel %d2,%sp@-
rtems_bdpart_format format;
rtems_bdpart_partition pt [RTEMS_BDPART_PARTITION_NUMBER_HINT];
size_t count = RTEMS_BDPART_PARTITION_NUMBER_HINT;
/* Read partitions */
sc = rtems_bdpart_read( disk_name, &format, pt, &count);
43208: 486e fce8 pea %fp@(-792)
return esc;
}
rtems_status_code rtems_bdpart_register_from_disk( const char *disk_name)
{
4320c: 242e 0008 movel %fp@(8),%d2
rtems_bdpart_format format;
rtems_bdpart_partition pt [RTEMS_BDPART_PARTITION_NUMBER_HINT];
size_t count = RTEMS_BDPART_PARTITION_NUMBER_HINT;
/* Read partitions */
sc = rtems_bdpart_read( disk_name, &format, pt, &count);
43210: 2f03 movel %d3,%sp@-
43212: 486e fcec pea %fp@(-788)
rtems_status_code rtems_bdpart_register_from_disk( const char *disk_name)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_bdpart_format format;
rtems_bdpart_partition pt [RTEMS_BDPART_PARTITION_NUMBER_HINT];
size_t count = RTEMS_BDPART_PARTITION_NUMBER_HINT;
43216: 2d40 fce8 movel %d0,%fp@(-792)
/* Read partitions */
sc = rtems_bdpart_read( disk_name, &format, pt, &count);
4321a: 2f02 movel %d2,%sp@-
4321c: 4eb9 0004 2e52 jsr 42e52 <rtems_bdpart_read>
if (sc != RTEMS_SUCCESSFUL) {
43222: 4fef 0010 lea %sp@(16),%sp
43226: 4a80 tstl %d0
43228: 670c beqs 43236 <rtems_bdpart_register_from_disk+0x40><== ALWAYS TAKEN
return sc;
}
/* Register partitions */
return rtems_bdpart_register( disk_name, pt, count);
}
4322a: 242e fce0 movel %fp@(-800),%d2 <== NOT EXECUTED
4322e: 262e fce4 movel %fp@(-796),%d3 <== NOT EXECUTED
43232: 4e5e unlk %fp <== NOT EXECUTED
43234: 4e75 rts <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
/* Register partitions */
return rtems_bdpart_register( disk_name, pt, count);
43236: 2f2e fce8 movel %fp@(-792),%sp@-
4323a: 2f03 movel %d3,%sp@-
4323c: 2f02 movel %d2,%sp@-
4323e: 4eb9 0004 30bc jsr 430bc <rtems_bdpart_register>
}
43244: 242e fce0 movel %fp@(-800),%d2
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
/* Register partitions */
return rtems_bdpart_register( disk_name, pt, count);
43248: 4fef 000c lea %sp@(12),%sp
}
4324c: 262e fce4 movel %fp@(-796),%d3
43250: 4e5e unlk %fp <== NOT EXECUTED
00061c96 <rtems_bdpart_unmount>:
const char *disk_name,
const rtems_bdpart_partition *pt __attribute__((unused)),
size_t count,
const char *mount_base
)
{
61c96: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
61c9a: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_status_code esc = RTEMS_SUCCESSFUL;
const char *disk_file_name = strrchr( disk_name, '/');
61c9e: 4878 002f pea 2f <OPER2+0x1b> <== NOT EXECUTED
char *mount_point = NULL;
char *mount_marker = NULL;
size_t disk_file_name_size = 0;
size_t disk_name_size = strlen( disk_name);
61ca2: 45f9 0007 d8a0 lea 7d8a0 <strlen>,%a2 <== NOT EXECUTED
const char *disk_name,
const rtems_bdpart_partition *pt __attribute__((unused)),
size_t count,
const char *mount_base
)
{
61ca8: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_status_code esc = RTEMS_SUCCESSFUL;
const char *disk_file_name = strrchr( disk_name, '/');
61cac: 2f0b movel %a3,%sp@- <== NOT EXECUTED
const char *disk_name,
const rtems_bdpart_partition *pt __attribute__((unused)),
size_t count,
const char *mount_base
)
{
61cae: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED
rtems_status_code esc = RTEMS_SUCCESSFUL;
const char *disk_file_name = strrchr( disk_name, '/');
61cb2: 4eb9 0007 e73c jsr 7e73c <strrchr> <== NOT EXECUTED
61cb8: 508f addql #8,%sp <== NOT EXECUTED
61cba: 2840 moveal %d0,%a4 <== NOT EXECUTED
char *mount_point = NULL;
char *mount_marker = NULL;
size_t disk_file_name_size = 0;
size_t disk_name_size = strlen( disk_name);
61cbc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
const char *disk_name,
const rtems_bdpart_partition *pt __attribute__((unused)),
size_t count,
const char *mount_base
)
{
61cbe: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
rtems_status_code esc = RTEMS_SUCCESSFUL;
const char *disk_file_name = strrchr( disk_name, '/');
char *mount_point = NULL;
char *mount_marker = NULL;
size_t disk_file_name_size = 0;
size_t disk_name_size = strlen( disk_name);
61cc2: 4e92 jsr %a2@ <== NOT EXECUTED
61cc4: 2a00 movel %d0,%d5 <== NOT EXECUTED
size_t mount_base_size = strlen( mount_base);
61cc6: 2e84 movel %d4,%sp@ <== NOT EXECUTED
61cc8: 4e92 jsr %a2@ <== NOT EXECUTED
61cca: 588f addql #4,%sp <== NOT EXECUTED
61ccc: 2400 movel %d0,%d2 <== NOT EXECUTED
size_t i = 0;
/* Get disk file name */
if (disk_file_name != NULL) {
61cce: 4a8c tstl %a4 <== NOT EXECUTED
61cd0: 6700 00f4 beqw 61dc6 <rtems_bdpart_unmount+0x130> <== NOT EXECUTED
disk_file_name += 1;
61cd4: 528c addql #1,%a4 <== NOT EXECUTED
disk_file_name_size = strlen( disk_file_name);
61cd6: 2f0c movel %a4,%sp@- <== NOT EXECUTED
61cd8: 4e92 jsr %a2@ <== NOT EXECUTED
61cda: 588f addql #4,%sp <== NOT EXECUTED
61cdc: 2a00 movel %d0,%d5 <== NOT EXECUTED
disk_file_name = disk_name;
disk_file_name_size = disk_name_size;
}
/* Create mount point base */
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
61cde: 2a45 moveal %d5,%a5 <== NOT EXECUTED
61ce0: dbc2 addal %d2,%a5 <== NOT EXECUTED
61ce2: 486d 0005 pea %a5@(5) <== NOT EXECUTED
61ce6: 4eb9 0004 3140 jsr 43140 <malloc> <== NOT EXECUTED
if (mount_point == NULL) {
61cec: 588f addql #4,%sp <== NOT EXECUTED
disk_file_name = disk_name;
disk_file_name_size = disk_name_size;
}
/* Create mount point base */
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
61cee: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (mount_point == NULL) {
61cf0: 4a80 tstl %d0 <== NOT EXECUTED
61cf2: 6700 00a6 beqw 61d9a <rtems_bdpart_unmount+0x104> <== NOT EXECUTED
esc = RTEMS_NO_MEMORY;
goto cleanup;
}
strncpy( mount_point, mount_base, mount_base_size);
61cf6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
61cf8: 2c3c 0007 da4c movel #514636,%d6 <== NOT EXECUTED
61cfe: 2f04 movel %d4,%sp@- <== NOT EXECUTED
61d00: 2046 moveal %d6,%a0 <== NOT EXECUTED
61d02: 2f00 movel %d0,%sp@- <== NOT EXECUTED
mount_point [mount_base_size] = '/';
strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
/* Marker */
mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
61d04: 47f2 d801 lea %a2@(00000001,%a5:l),%a3 <== NOT EXECUTED
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
if (mount_point == NULL) {
esc = RTEMS_NO_MEMORY;
goto cleanup;
}
strncpy( mount_point, mount_base, mount_base_size);
61d08: 4e90 jsr %a0@ <== NOT EXECUTED
mount_point [mount_base_size] = '/';
61d0a: 702f moveq #47,%d0 <== NOT EXECUTED
strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
61d0c: 2046 moveal %d6,%a0 <== NOT EXECUTED
if (mount_point == NULL) {
esc = RTEMS_NO_MEMORY;
goto cleanup;
}
strncpy( mount_point, mount_base, mount_base_size);
mount_point [mount_base_size] = '/';
61d0e: 1580 2800 moveb %d0,%a2@(00000000,%d2:l) <== NOT EXECUTED
strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
61d12: 2f05 movel %d5,%sp@- <== NOT EXECUTED
61d14: 2f0c movel %a4,%sp@- <== NOT EXECUTED
61d16: 4872 2801 pea %a2@(00000001,%d2:l) <== NOT EXECUTED
61d1a: 4e90 jsr %a0@ <== NOT EXECUTED
/* Marker */
mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
/* Mount supported file systems for each partition */
for (i = 0; i < count; ++i) {
61d1c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
61d20: 4a83 tstl %d3 <== NOT EXECUTED
61d22: 673e beqs 61d62 <rtems_bdpart_unmount+0xcc> <== NOT EXECUTED
61d24: 4282 clrl %d2 <== NOT EXECUTED
61d26: 49f9 0007 cce0 lea 7cce0 <snprintf>,%a4 <== NOT EXECUTED
esc = RTEMS_INVALID_NAME;
goto cleanup;
}
/* Unmount */
rv = unmount( mount_point);
61d2c: 4bf9 0006 5d6c lea 65d6c <unmount>,%a5 <== NOT EXECUTED
if (rv == 0) {
/* Remove mount point */
rv = rmdir( mount_point);
61d32: 283c 0006 5614 movel #415252,%d4 <== NOT EXECUTED
mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
/* Mount supported file systems for each partition */
for (i = 0; i < count; ++i) {
/* Create mount point */
int rv = snprintf( mount_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
61d38: 5282 addql #1,%d2 <== NOT EXECUTED
61d3a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
61d3c: 4879 0009 7fb8 pea 97fb8 <e2a_32V+0x2a3> <== NOT EXECUTED
61d42: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
61d46: 2f0b movel %a3,%sp@- <== NOT EXECUTED
61d48: 4e94 jsr %a4@ <== NOT EXECUTED
if (rv >= RTEMS_BDPART_NUMBER_SIZE) {
61d4a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
61d4e: 7203 moveq #3,%d1 <== NOT EXECUTED
61d50: b280 cmpl %d0,%d1 <== NOT EXECUTED
61d52: 6d5c blts 61db0 <rtems_bdpart_unmount+0x11a> <== NOT EXECUTED
esc = RTEMS_INVALID_NAME;
goto cleanup;
}
/* Unmount */
rv = unmount( mount_point);
61d54: 2f0a movel %a2,%sp@- <== NOT EXECUTED
61d56: 4e95 jsr %a5@ <== NOT EXECUTED
if (rv == 0) {
61d58: 588f addql #4,%sp <== NOT EXECUTED
61d5a: 4a80 tstl %d0 <== NOT EXECUTED
61d5c: 671a beqs 61d78 <rtems_bdpart_unmount+0xe2> <== NOT EXECUTED
/* Marker */
mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
/* Mount supported file systems for each partition */
for (i = 0; i < count; ++i) {
61d5e: b682 cmpl %d2,%d3 <== NOT EXECUTED
61d60: 66d6 bnes 61d38 <rtems_bdpart_unmount+0xa2> <== NOT EXECUTED
}
}
cleanup:
free( mount_point);
61d62: 2f0a movel %a2,%sp@- <== NOT EXECUTED
const rtems_bdpart_partition *pt __attribute__((unused)),
size_t count,
const char *mount_base
)
{
rtems_status_code esc = RTEMS_SUCCESSFUL;
61d64: 4282 clrl %d2 <== NOT EXECUTED
}
}
cleanup:
free( mount_point);
61d66: 4eb9 0004 2e40 jsr 42e40 <free> <== NOT EXECUTED
return esc;
}
61d6c: 2002 movel %d2,%d0 <== NOT EXECUTED
61d6e: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
61d74: 4e5e unlk %fp <== NOT EXECUTED
61d76: 4e75 rts <== NOT EXECUTED
/* Unmount */
rv = unmount( mount_point);
if (rv == 0) {
/* Remove mount point */
rv = rmdir( mount_point);
61d78: 2f0a movel %a2,%sp@- <== NOT EXECUTED
61d7a: 2044 moveal %d4,%a0 <== NOT EXECUTED
61d7c: 4e90 jsr %a0@ <== NOT EXECUTED
if (rv != 0) {
61d7e: 588f addql #4,%sp <== NOT EXECUTED
61d80: 4a80 tstl %d0 <== NOT EXECUTED
61d82: 67da beqs 61d5e <rtems_bdpart_unmount+0xc8> <== NOT EXECUTED
}
}
cleanup:
free( mount_point);
61d84: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rv = unmount( mount_point);
if (rv == 0) {
/* Remove mount point */
rv = rmdir( mount_point);
if (rv != 0) {
esc = RTEMS_IO_ERROR;
61d86: 741b moveq #27,%d2 <== NOT EXECUTED
}
}
cleanup:
free( mount_point);
61d88: 4eb9 0004 2e40 jsr 42e40 <free> <== NOT EXECUTED
return esc;
}
61d8e: 2002 movel %d2,%d0 <== NOT EXECUTED
61d90: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
61d96: 4e5e unlk %fp <== NOT EXECUTED
61d98: 4e75 rts <== NOT EXECUTED
}
}
cleanup:
free( mount_point);
61d9a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
}
/* Create mount point base */
mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
if (mount_point == NULL) {
esc = RTEMS_NO_MEMORY;
61d9c: 741a moveq #26,%d2 <== NOT EXECUTED
}
}
cleanup:
free( mount_point);
61d9e: 4eb9 0004 2e40 jsr 42e40 <free> <== NOT EXECUTED
return esc;
}
61da4: 2002 movel %d2,%d0 <== NOT EXECUTED
61da6: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
61dac: 4e5e unlk %fp <== NOT EXECUTED
61dae: 4e75 rts <== NOT EXECUTED
}
}
cleanup:
free( mount_point);
61db0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
/* Mount supported file systems for each partition */
for (i = 0; i < count; ++i) {
/* Create mount point */
int rv = snprintf( mount_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
if (rv >= RTEMS_BDPART_NUMBER_SIZE) {
esc = RTEMS_INVALID_NAME;
61db2: 7403 moveq #3,%d2 <== NOT EXECUTED
}
}
cleanup:
free( mount_point);
61db4: 4eb9 0004 2e40 jsr 42e40 <free> <== NOT EXECUTED
return esc;
}
61dba: 2002 movel %d2,%d0 <== NOT EXECUTED
61dbc: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
61dc2: 4e5e unlk %fp <== NOT EXECUTED
61dc4: 4e75 rts <== NOT EXECUTED
/* Get disk file name */
if (disk_file_name != NULL) {
disk_file_name += 1;
disk_file_name_size = strlen( disk_file_name);
} else {
disk_file_name = disk_name;
61dc6: 284b moveal %a3,%a4 <== NOT EXECUTED
61dc8: 6000 ff14 braw 61cde <rtems_bdpart_unmount+0x48> <== NOT EXECUTED
00043254 <rtems_bdpart_unregister>:
rtems_device_minor_number minor = 0;
rtems_blkdev_bnum disk_end = 0;
dev_t disk = 0;
dev_t logical_disk = 0;
size_t i = 0;
int fd = -1;
43254: 70ff moveq #-1,%d0
rtems_status_code rtems_bdpart_unregister(
const char *disk_name,
const rtems_bdpart_partition *pt __attribute__((unused)),
size_t count
)
{
43256: 4e56 ffe0 linkw %fp,#-32
4325a: 48d7 043c moveml %d2-%d5/%a2,%sp@
size_t i = 0;
int fd = -1;
rtems_disk_device *dd = NULL;
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
4325e: 486e fff4 pea %fp@(-12)
43262: 486e fffc pea %fp@(-4)
43266: 486e fff8 pea %fp@(-8)
4326a: 2f2e 0008 movel %fp@(8),%sp@-
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
rtems_blkdev_bnum disk_end = 0;
4326e: 42ae fff4 clrl %fp@(-12)
dev_t disk = 0;
dev_t logical_disk = 0;
size_t i = 0;
int fd = -1;
43272: 2d40 fff8 movel %d0,%fp@(-8)
rtems_disk_device *dd = NULL;
43276: 42ae fffc clrl %fp@(-4)
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
4327a: 4eb9 0004 2d98 jsr 42d98 <rtems_bdpart_get_disk_data>
if (sc != RTEMS_SUCCESSFUL) {
43280: 4fef 0010 lea %sp@(16),%sp
size_t i = 0;
int fd = -1;
rtems_disk_device *dd = NULL;
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
43284: 2a00 movel %d0,%d5
if (sc != RTEMS_SUCCESSFUL) {
43286: 670c beqs 43294 <rtems_bdpart_unregister+0x40> <== ALWAYS TAKEN
return sc;
}
}
return RTEMS_SUCCESSFUL;
}
43288: 2005 movel %d5,%d0
4328a: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2
43290: 4e5e unlk %fp
43292: 4e75 rts
43294: 206e fffc moveal %fp@(-4),%a0
)
{
union __rtems_dev_t temp;
temp.device = device;
return temp.__overlay.minor;
43298: 2428 0004 movel %a0@(4),%d2
4329c: 2610 movel %a0@,%d3
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
disk = rtems_disk_get_device_identifier( dd);
close( fd);
4329e: 2f2e fff8 movel %fp@(-8),%sp@-
432a2: 4eb9 0004 5070 jsr 45070 <close>
/* Get the disk device identifier */
rtems_filesystem_split_dev_t( disk, major, minor);
/* Create a logical disk for each partition */
for (i = 0; i < count; ++i) {
432a8: 588f addql #4,%sp
432aa: 4aae 0010 tstl %fp@(16)
432ae: 67d8 beqs 43288 <rtems_bdpart_unregister+0x34> <== NEVER TAKEN
/* Register partitions */
return rtems_bdpart_register( disk_name, pt, count);
}
rtems_status_code rtems_bdpart_unregister(
432b0: 282e 0010 movel %fp@(16),%d4
432b4: d882 addl %d2,%d4
rtems_filesystem_split_dev_t( disk, major, minor);
/* Create a logical disk for each partition */
for (i = 0; i < count; ++i) {
/* New minor number */
++minor;
432b6: 5282 addql #1,%d2
432b8: 45f9 0004 3c4a lea 43c4a <rtems_disk_delete>,%a2
/* Get the device identifier */
logical_disk = rtems_filesystem_make_dev_t( major, minor);
/* Delete logical disk */
sc = rtems_disk_delete( logical_disk);
432be: 2f02 movel %d2,%sp@-
432c0: 2f03 movel %d3,%sp@-
432c2: 4e92 jsr %a2@
if (sc != RTEMS_SUCCESSFUL) {
432c4: 508f addql #8,%sp
432c6: 4a80 tstl %d0
432c8: 6612 bnes 432dc <rtems_bdpart_unregister+0x88> <== NEVER TAKEN
/* Get the disk device identifier */
rtems_filesystem_split_dev_t( disk, major, minor);
/* Create a logical disk for each partition */
for (i = 0; i < count; ++i) {
432ca: b882 cmpl %d2,%d4
432cc: 67ba beqs 43288 <rtems_bdpart_unregister+0x34>
/* New minor number */
++minor;
432ce: 5282 addql #1,%d2
/* Get the device identifier */
logical_disk = rtems_filesystem_make_dev_t( major, minor);
/* Delete logical disk */
sc = rtems_disk_delete( logical_disk);
432d0: 2f02 movel %d2,%sp@-
432d2: 2f03 movel %d3,%sp@-
432d4: 4e92 jsr %a2@
if (sc != RTEMS_SUCCESSFUL) {
432d6: 508f addql #8,%sp
432d8: 4a80 tstl %d0
432da: 67ee beqs 432ca <rtems_bdpart_unregister+0x76> <== ALWAYS TAKEN
/* Get the device identifier */
logical_disk = rtems_filesystem_make_dev_t( major, minor);
/* Delete logical disk */
sc = rtems_disk_delete( logical_disk);
432dc: 2a00 movel %d0,%d5 <== NOT EXECUTED
return sc;
}
}
return RTEMS_SUCCESSFUL;
}
432de: 2005 movel %d5,%d0 <== NOT EXECUTED
432e0: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED
432e6: 4e5e unlk %fp <== NOT EXECUTED
...
00043374 <rtems_bdpart_write>:
const char *disk_name,
const rtems_bdpart_format *format,
const rtems_bdpart_partition *pt,
size_t count
)
{
43374: 4e56 ffc0 linkw %fp,#-64
43378: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4337c: 266e 000c moveal %fp@(12),%a3
43380: 242e 0014 movel %fp@(20),%d2
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
&& format->type == RTEMS_BDPART_FORMAT_MBR
&& format->mbr.dos_compatibility;
43384: 4a8b tstl %a3
43386: 6700 00b0 beqw 43438 <rtems_bdpart_write+0xc4>
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
&& format->type == RTEMS_BDPART_FORMAT_MBR
4338a: 4a93 tstl %a3@
4338c: 6608 bnes 43396 <rtems_bdpart_write+0x22> <== NEVER TAKEN
&& format->mbr.dos_compatibility;
4338e: 4a2b 0008 tstb %a3@(8)
43392: 6600 00b4 bnew 43448 <rtems_bdpart_write+0xd4>
rtems_blkdev_bnum record_space =
dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;
size_t ppc = 0; /* Primary partition count */
size_t i = 0;
uint8_t *data = NULL;
int fd = -1;
43396: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
&& format->type == RTEMS_BDPART_FORMAT_MBR
&& format->mbr.dos_compatibility;
rtems_bdbuf_buffer *block = NULL;
43398: 42ae fff0 clrl %fp@(-16) <== NOT EXECUTED
rtems_blkdev_bnum disk_end = 0;
4339c: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED
rtems_blkdev_bnum record_space =
dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;
size_t ppc = 0; /* Primary partition count */
size_t i = 0;
uint8_t *data = NULL;
int fd = -1;
433a0: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
rtems_disk_device *dd = NULL;
433a4: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
/* Check if we have something to do */
if (count == 0) {
433a8: 4a82 tstl %d2 <== NOT EXECUTED
433aa: 6700 00b2 beqw 4345e <rtems_bdpart_write+0xea> <== NOT EXECUTED
bool dos_compatibility = format != NULL
&& format->type == RTEMS_BDPART_FORMAT_MBR
&& format->mbr.dos_compatibility;
rtems_bdbuf_buffer *block = NULL;
rtems_blkdev_bnum disk_end = 0;
rtems_blkdev_bnum record_space =
433ae: 7601 moveq #1,%d3 <== NOT EXECUTED
size_t count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
433b0: 4205 clrb %d5 <== NOT EXECUTED
/* Nothing to do */
return RTEMS_SUCCESSFUL;
}
/* Check parameter */
if (format == NULL || pt == NULL) {
433b2: 4aae 0010 tstl %fp@(16)
433b6: 6700 0084 beqw 4343c <rtems_bdpart_write+0xc8>
return RTEMS_INVALID_ADDRESS;
}
/* Get disk data */
sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);
433ba: 486e fff4 pea %fp@(-12)
433be: 486e fffc pea %fp@(-4)
433c2: 486e fff8 pea %fp@(-8)
433c6: 2f2e 0008 movel %fp@(8),%sp@-
433ca: 4eb9 0004 2d98 jsr 42d98 <rtems_bdpart_get_disk_data>
if (sc != RTEMS_SUCCESSFUL) {
433d0: 4fef 0010 lea %sp@(16),%sp
433d4: 4a80 tstl %d0
433d6: 6666 bnes 4343e <rtems_bdpart_write+0xca> <== NEVER TAKEN
return sc;
}
/* Align end of disk on cylinder boundary if necessary */
if (dos_compatibility) {
disk_end -= (disk_end % record_space);
433d8: 282e fff4 movel %fp@(-12),%d4
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
/* Align end of disk on cylinder boundary if necessary */
if (dos_compatibility) {
433dc: 4a05 tstb %d5
433de: 670c beqs 433ec <rtems_bdpart_write+0x78> <== NEVER TAKEN
disk_end -= (disk_end % record_space);
433e0: 2204 movel %d4,%d1
433e2: 4c43 1000 remul %d3,%d0,%d1
433e6: 9880 subl %d0,%d4
433e8: 2d44 fff4 movel %d4,%fp@(-12)
/* Check that we have a consistent partition table */
for (i = 0; i < count; ++i) {
const rtems_bdpart_partition *p = pt + i;
/* Check that begin and end are proper within the disk */
if (p->begin >= disk_end || p->end > disk_end) {
433ec: 206e 0010 moveal %fp@(16),%a0
433f0: 2c10 movel %a0@,%d6
433f2: b886 cmpl %d6,%d4
433f4: 6300 0096 blsw 4348c <rtems_bdpart_write+0x118>
433f8: 206e 0010 moveal %fp@(16),%a0
433fc: 2028 0004 movel %a0@(4),%d0
43400: b880 cmpl %d0,%d4
43402: 6500 0088 bcsw 4348c <rtems_bdpart_write+0x118>
esc = RTEMS_INVALID_NUMBER;
goto cleanup;
}
/* Check that begin and end are valid */
if (p->begin >= p->end) {
43406: b086 cmpl %d6,%d0
43408: 6300 0082 blsw 4348c <rtems_bdpart_write+0x118>
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
4340c: 5888 addql #4,%a0
if (dos_compatibility) {
disk_end -= (disk_end % record_space);
}
/* Check that we have a consistent partition table */
for (i = 0; i < count; ++i) {
4340e: 4280 clrl %d0
43410: 5280 addql #1,%d0
43412: b082 cmpl %d2,%d0
43414: 645c bccs 43472 <rtems_bdpart_write+0xfe>
const rtems_bdpart_partition *p = pt + i;
/* Check that begin and end are proper within the disk */
if (p->begin >= disk_end || p->end > disk_end) {
43416: 2228 002c movel %a0@(44),%d1
4341a: b881 cmpl %d1,%d4
4341c: 636e blss 4348c <rtems_bdpart_write+0x118> <== NEVER TAKEN
4341e: 2268 0030 moveal %a0@(48),%a1
43422: b889 cmpl %a1,%d4
43424: 6566 bcss 4348c <rtems_bdpart_write+0x118> <== NEVER TAKEN
esc = RTEMS_INVALID_NUMBER;
goto cleanup;
}
/* Check that begin and end are valid */
if (p->begin >= p->end) {
43426: b3c1 cmpal %d1,%a1
43428: 6362 blss 4348c <rtems_bdpart_write+0x118> <== NEVER TAKEN
esc = RTEMS_INVALID_NUMBER;
goto cleanup;
}
/* Check that partitions do not overlap */
if (i > 0 && pt [i - 1].end > p->begin) {
4342a: 4a80 tstl %d0
4342c: 6704 beqs 43432 <rtems_bdpart_write+0xbe> <== NEVER TAKEN
4342e: b290 cmpl %a0@,%d1
43430: 655a bcss 4348c <rtems_bdpart_write+0x118> <== NEVER TAKEN
43432: 41e8 0030 lea %a0@(48),%a0
43436: 60d8 bras 43410 <rtems_bdpart_write+0x9c>
uint8_t *data = NULL;
int fd = -1;
rtems_disk_device *dd = NULL;
/* Check if we have something to do */
if (count == 0) {
43438: 4a82 tstl %d2 <== NOT EXECUTED
4343a: 6722 beqs 4345e <rtems_bdpart_write+0xea> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
/* Check parameter */
if (format == NULL || pt == NULL) {
return RTEMS_INVALID_ADDRESS;
4343c: 7009 moveq #9,%d0 <== NOT EXECUTED
if (block != NULL) {
rtems_bdbuf_sync( block);
}
return esc;
}
4343e: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 <== NOT EXECUTED
43444: 4e5e unlk %fp <== NOT EXECUTED
43446: 4e75 rts <== NOT EXECUTED
rtems_blkdev_bnum record_space =
dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;
size_t ppc = 0; /* Primary partition count */
size_t i = 0;
uint8_t *data = NULL;
int fd = -1;
43448: 76ff moveq #-1,%d3
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
&& format->type == RTEMS_BDPART_FORMAT_MBR
&& format->mbr.dos_compatibility;
rtems_bdbuf_buffer *block = NULL;
4344a: 42ae fff0 clrl %fp@(-16)
rtems_blkdev_bnum disk_end = 0;
4344e: 42ae fff4 clrl %fp@(-12)
rtems_blkdev_bnum record_space =
dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;
size_t ppc = 0; /* Primary partition count */
size_t i = 0;
uint8_t *data = NULL;
int fd = -1;
43452: 2d43 fff8 movel %d3,%fp@(-8)
rtems_disk_device *dd = NULL;
43456: 42ae fffc clrl %fp@(-4)
/* Check if we have something to do */
if (count == 0) {
4345a: 4a82 tstl %d2
4345c: 660c bnes 4346a <rtems_bdpart_write+0xf6> <== ALWAYS TAKEN
/* Nothing to do */
return RTEMS_SUCCESSFUL;
4345e: 4280 clrl %d0 <== NOT EXECUTED
if (block != NULL) {
rtems_bdbuf_sync( block);
}
return esc;
}
43460: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 <== NOT EXECUTED
43466: 4e5e unlk %fp <== NOT EXECUTED
43468: 4e75 rts <== NOT EXECUTED
bool dos_compatibility = format != NULL
&& format->type == RTEMS_BDPART_FORMAT_MBR
&& format->mbr.dos_compatibility;
rtems_bdbuf_buffer *block = NULL;
rtems_blkdev_bnum disk_end = 0;
rtems_blkdev_bnum record_space =
4346a: 763f moveq #63,%d3
size_t count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
bool dos_compatibility = format != NULL
4346c: 7a01 moveq #1,%d5
4346e: 6000 ff42 braw 433b2 <rtems_bdpart_write+0x3e>
goto cleanup;
}
}
/* Check format */
if (format->type != RTEMS_BDPART_FORMAT_MBR) {
43472: 4a93 tstl %a3@
43474: 6600 00a8 bnew 4351e <rtems_bdpart_write+0x1aa>
* Set primary partition count. If we have more than four partitions we need
* an extended partition which will contain the partitions of number four and
* above as logical partitions. If we have four or less partitions we can
* use the primary partition table.
*/
ppc = count <= 4 ? count : 3;
43478: 7004 moveq #4,%d0
4347a: b082 cmpl %d2,%d0
4347c: 6400 00a6 bccw 43524 <rtems_bdpart_write+0x1b0>
43480: 7803 moveq #3,%d4
/*
* Check that the first primary partition starts at head one and sector one
* under the virtual one head and 63 sectors geometry if necessary.
*/
if (dos_compatibility && pt [0].begin != RTEMS_BDPART_MBR_CYLINDER_SIZE) {
43482: 4a05 tstb %d5
43484: 6740 beqs 434c6 <rtems_bdpart_write+0x152> <== NEVER TAKEN
43486: 703f moveq #63,%d0
43488: b086 cmpl %d6,%d0
4348a: 673a beqs 434c6 <rtems_bdpart_write+0x152> <== ALWAYS TAKEN
for (i = 0; i < count; ++i) {
const rtems_bdpart_partition *p = pt + i;
/* Check that begin and end are proper within the disk */
if (p->begin >= disk_end || p->end > disk_end) {
esc = RTEMS_INVALID_NUMBER;
4348c: 740a moveq #10,%d2 <== NOT EXECUTED
}
}
cleanup:
if (fd >= 0) {
4348e: 222e fff8 movel %fp@(-8),%d1
43492: 6d0a blts 4349e <rtems_bdpart_write+0x12a> <== NEVER TAKEN
close( fd);
43494: 2f01 movel %d1,%sp@-
43496: 4eb9 0004 5070 jsr 45070 <close>
4349c: 588f addql #4,%sp
}
if (block != NULL) {
4349e: 222e fff0 movel %fp@(-16),%d1
434a2: 6716 beqs 434ba <rtems_bdpart_write+0x146> <== NEVER TAKEN
rtems_bdbuf_sync( block);
434a4: 2f01 movel %d1,%sp@-
434a6: 4eb9 0004 f9b4 jsr 4f9b4 <rtems_bdbuf_sync>
434ac: 588f addql #4,%sp
}
return esc;
434ae: 2002 movel %d2,%d0
}
434b0: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5
434b6: 4e5e unlk %fp
434b8: 4e75 rts
if (block != NULL) {
rtems_bdbuf_sync( block);
}
return esc;
434ba: 2002 movel %d2,%d0 <== NOT EXECUTED
}
434bc: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 <== NOT EXECUTED
434c2: 4e5e unlk %fp <== NOT EXECUTED
434c4: 4e75 rts <== NOT EXECUTED
* Each logical partition is described via one EBR preceding the partition.
* The space for the EBR and maybe some space which is needed for DOS
* compatibility resides between the partitions. So there have to be gaps of
* the appropriate size between the partitions.
*/
for (i = ppc; i < count; ++i) {
434c6: b484 cmpl %d4,%d2
434c8: 6360 blss 4352a <rtems_bdpart_write+0x1b6> <== NEVER TAKEN
if ((pt [i].begin - pt [i - 1].end) < record_space) {
434ca: 2a04 movel %d4,%d5
434cc: 2204 movel %d4,%d1
434ce: 2004 movel %d4,%d0
434d0: 5380 subql #1,%d0
434d2: 2c00 movel %d0,%d6
434d4: e98d lsll #4,%d5
434d6: ed89 lsll #6,%d1
434d8: 206e 0010 moveal %fp@(16),%a0
434dc: 9285 subl %d5,%d1
434de: e98e lsll #4,%d6
434e0: ed88 lsll #6,%d0
434e2: 2230 1800 movel %a0@(00000000,%d1:l),%d1
434e6: 9086 subl %d6,%d0
434e8: 92b0 0804 subl %a0@(00000004,%d0:l),%d1
434ec: b283 cmpl %d3,%d1
434ee: 659c bcss 4348c <rtems_bdpart_write+0x118> <== NEVER TAKEN
434f0: 2004 movel %d4,%d0
434f2: 5280 addql #1,%d0
434f4: 2a00 movel %d0,%d5
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
434f6: 2204 movel %d4,%d1
* The space for the EBR and maybe some space which is needed for DOS
* compatibility resides between the partitions. So there have to be gaps of
* the appropriate size between the partitions.
*/
for (i = ppc; i < count; ++i) {
if ((pt [i].begin - pt [i - 1].end) < record_space) {
434f8: e98d lsll #4,%d5
434fa: ed88 lsll #6,%d0
434fc: 9085 subl %d5,%d0
434fe: d088 addl %a0,%d0
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
43500: 2040 moveal %d0,%a0
* Each logical partition is described via one EBR preceding the partition.
* The space for the EBR and maybe some space which is needed for DOS
* compatibility resides between the partitions. So there have to be gaps of
* the appropriate size between the partitions.
*/
for (i = ppc; i < count; ++i) {
43502: 5281 addql #1,%d1
43504: 0680 0000 0030 addil #48,%d0
4350a: b282 cmpl %d2,%d1
4350c: 641c bccs 4352a <rtems_bdpart_write+0x1b6>
if ((pt [i].begin - pt [i - 1].end) < record_space) {
4350e: 2250 moveal %a0@,%a1
43510: 93e8 ffd4 subal %a0@(-44),%a1
43514: b689 cmpl %a1,%d3
43516: 63e8 blss 43500 <rtems_bdpart_write+0x18c> <== ALWAYS TAKEN
for (i = 0; i < count; ++i) {
const rtems_bdpart_partition *p = pt + i;
/* Check that begin and end are proper within the disk */
if (p->begin >= disk_end || p->end > disk_end) {
esc = RTEMS_INVALID_NUMBER;
43518: 740a moveq #10,%d2 <== NOT EXECUTED
4351a: 6000 ff72 braw 4348e <rtems_bdpart_write+0x11a> <== NOT EXECUTED
}
}
/* Check format */
if (format->type != RTEMS_BDPART_FORMAT_MBR) {
esc = RTEMS_NOT_IMPLEMENTED;
4351e: 7418 moveq #24,%d2 <== NOT EXECUTED
43520: 6000 ff6c braw 4348e <rtems_bdpart_write+0x11a> <== NOT EXECUTED
* Set primary partition count. If we have more than four partitions we need
* an extended partition which will contain the partitions of number four and
* above as logical partitions. If we have four or less partitions we can
* use the primary partition table.
*/
ppc = count <= 4 ? count : 3;
43524: 2802 movel %d2,%d4 <== NOT EXECUTED
43526: 6000 ff5a braw 43482 <rtems_bdpart_write+0x10e> <== NOT EXECUTED
4352a: 246e 0010 moveal %fp@(16),%a2
4352e: 2c0e movel %fp,%d6
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
43530: 284a moveal %a2,%a4
43532: 4285 clrl %d5
43534: 0686 ffff ffef addil #-17,%d6
4353a: 4bf9 0004 2d6a lea 42d6a <rtems_bdpart_to_mbr_partition_type>,%a5
43540: 2e04 movel %d4,%d7
43542: 2d43 ffe8 movel %d3,%fp@(-24)
uint8_t type = 0;
const rtems_bdpart_partition *p = pt + i;
/* Check type */
if (!rtems_bdpart_to_mbr_partition_type( p->type, &type)) {
43546: 2f06 movel %d6,%sp@-
43548: 486c 0008 pea %a4@(8)
goto cleanup;
}
}
/* Check that we can convert the parition descriptions to the MBR format */
for (i = 0; i < count; ++i) {
4354c: 5285 addql #1,%d5
uint8_t type = 0;
4354e: 4200 clrb %d0
43550: 1d40 ffef moveb %d0,%fp@(-17)
const rtems_bdpart_partition *p = pt + i;
/* Check type */
if (!rtems_bdpart_to_mbr_partition_type( p->type, &type)) {
43554: 4e95 jsr %a5@
43556: 508f addql #8,%sp
43558: 4a00 tstb %d0
4355a: 6700 01f4 beqw 43750 <rtems_bdpart_write+0x3dc>
esc = RTEMS_INVALID_ID;
goto cleanup;
}
/* Check flags */
if (p->flags > 0xffU) {
4355e: 262c 0028 movel %a4@(40),%d3
43562: 282c 002c movel %a4@(44),%d4
43566: 4280 clrl %d0
43568: 223c 0000 00ff movel #255,%d1
4356e: 9881 subl %d1,%d4
43570: 9780 subxl %d0,%d3
43572: 6200 01dc bhiw 43750 <rtems_bdpart_write+0x3dc>
43576: 49ec 0030 lea %a4@(48),%a4
goto cleanup;
}
}
/* Check that we can convert the parition descriptions to the MBR format */
for (i = 0; i < count; ++i) {
4357a: ba82 cmpl %d2,%d5
4357c: 65c8 bcss 43546 <rtems_bdpart_write+0x1d2>
/* Check ID */
/* TODO */
}
/* New MBR */
sc = rtems_bdpart_new_record( dd, 0, &block);
4357e: 486e fff0 pea %fp@(-16)
43582: 49fa fd68 lea %pc@(432ec <rtems_bdpart_new_record>),%a4
43586: 2807 movel %d7,%d4
43588: 42a7 clrl %sp@-
4358a: 2f2e fffc movel %fp@(-4),%sp@-
4358e: 262e ffe8 movel %fp@(-24),%d3
43592: 4e94 jsr %a4@
if (sc != RTEMS_SUCCESSFUL) {
43594: 4fef 000c lea %sp@(12),%sp
43598: 4a80 tstl %d0
4359a: 6600 01ba bnew 43756 <rtems_bdpart_write+0x3e2>
}
/* Write disk ID */
rtems_uint32_to_little_endian(
format->mbr.disk_id,
block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID
4359e: 206e fff0 moveal %fp@(-16),%a0
435a2: 2228 001a movel %a0@(26),%d1
esc = sc;
goto cleanup;
}
/* Write disk ID */
rtems_uint32_to_little_endian(
435a6: 2041 moveal %d1,%a0
435a8: 41e8 01b8 lea %a0@(440),%a0
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
435ac: 0681 0000 01bc addil #444,%d1
esc = sc;
goto cleanup;
}
/* Write disk ID */
rtems_uint32_to_little_endian(
435b2: 202b 0004 movel %a3@(4),%d0
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{
size_t i = 0;
for (i = 0; i < 4; ++i) {
data [i] = (uint8_t) value;
435b6: 10c0 moveb %d0,%a0@+
value >>= 8;
435b8: e088 lsrl #8,%d0
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{
size_t i = 0;
for (i = 0; i < 4; ++i) {
435ba: b288 cmpl %a0,%d1
435bc: 66f8 bnes 435b6 <rtems_bdpart_write+0x242>
format->mbr.disk_id,
block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID
);
/* Write primary partition table */
data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;
435be: 206e fff0 moveal %fp@(-16),%a0
435c2: 4285 clrl %d5
435c4: 2028 001a movel %a0@(26),%d0
435c8: 2a40 moveal %d0,%a5
435ca: 4bed 01be lea %a5@(446),%a5
for (i = 0; i < ppc; ++i) {
435ce: 4a84 tstl %d4
435d0: 6766 beqs 43638 <rtems_bdpart_write+0x2c4> <== NEVER TAKEN
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
435d2: 2a04 movel %d4,%d5
435d4: 2240 moveal %d0,%a1
435d6: 43e9 01ca lea %a1@(458),%a1
format->mbr.disk_id,
block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID
);
/* Write primary partition table */
data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;
435da: 264d moveal %a5,%a3
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
435dc: e98d lsll #4,%d5
435de: 2205 movel %d5,%d1
435e0: 0681 0000 01be addil #446,%d1
435e6: d081 addl %d1,%d0
435e8: 2d40 ffe8 movel %d0,%fp@(-24)
/* Write partition entry */
rtems_bdpart_write_mbr_partition(
data,
p->begin,
p->end - p->begin,
435ec: 2012 movel %a2@,%d0
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
435ee: 41eb 0008 lea %a3@(8),%a0
data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;
for (i = 0; i < ppc; ++i) {
const rtems_bdpart_partition *p = pt + i;
/* Write partition entry */
rtems_bdpart_write_mbr_partition(
435f2: 222a 0004 movel %a2@(4),%d1
435f6: 9280 subl %d0,%d1
data,
p->begin,
p->end - p->begin,
rtems_bdpart_mbr_partition_type( p->type),
(uint8_t) p->flags
435f8: 1c2a 002f moveb %a2@(47),%d6
if (block != NULL) {
rtems_bdbuf_sync( block);
}
return esc;
}
435fc: 1e2a 0008 moveb %a2@(8),%d7
data [i] = (uint8_t) value;
43600: 10c0 moveb %d0,%a0@+
value >>= 8;
43602: e088 lsrl #8,%d0
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{
size_t i = 0;
for (i = 0; i < 4; ++i) {
43604: b1c9 cmpal %a1,%a0
43606: 66f8 bnes 43600 <rtems_bdpart_write+0x28c>
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
43608: 200b movel %a3,%d0
4360a: 0680 0000 0010 addil #16,%d0
43610: 2049 moveal %a1,%a0
data [i] = (uint8_t) value;
43612: 10c1 moveb %d1,%a0@+
value >>= 8;
43614: e089 lsrl #8,%d1
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{
size_t i = 0;
for (i = 0; i < 4; ++i) {
43616: b088 cmpl %a0,%d0
43618: 66f8 bnes 43612 <rtems_bdpart_write+0x29e>
4361a: 45ea 0030 lea %a2@(48),%a2
4361e: 43e9 0010 lea %a1@(16),%a1
uint8_t flags
)
{
rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;
43622: 1747 0004 moveb %d7,%a3@(4)
data [RTEMS_BDPART_MBR_OFFSET_FLAGS] = flags;
43626: 1686 moveb %d6,%a3@
p->end - p->begin,
rtems_bdpart_mbr_partition_type( p->type),
(uint8_t) p->flags
);
data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;
43628: 2648 moveal %a0,%a3
block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID
);
/* Write primary partition table */
data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;
for (i = 0; i < ppc; ++i) {
4362a: b1ee ffe8 cmpal %fp@(-24),%a0
4362e: 66bc bnes 435ec <rtems_bdpart_write+0x278>
43630: dbc5 addal %d5,%a5
data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;
}
/* Write extended partition with logical partitions if necessary */
if (ppc != count) {
43632: b484 cmpl %d4,%d2
43634: 6700 0114 beqw 4374a <rtems_bdpart_write+0x3d6>
rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */
/* Begin of extended partition */
rtems_blkdev_bnum ep_begin = pt [ppc].begin - record_space;
43638: 2004 movel %d4,%d0
uint32_t size,
uint8_t type,
uint8_t flags
)
{
rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
4363a: 41ed 0008 lea %a5@(8),%a0
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
4363e: 43ed 000c lea %a5@(12),%a1
/* Write extended partition with logical partitions if necessary */
if (ppc != count) {
rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */
/* Begin of extended partition */
rtems_blkdev_bnum ep_begin = pt [ppc].begin - record_space;
43642: ed88 lsll #6,%d0
43644: 246e 0010 moveal %fp@(16),%a2
43648: 9085 subl %d5,%d0
4364a: d5c0 addal %d0,%a2
4364c: 2212 movel %a2@,%d1
4364e: 9283 subl %d3,%d1
/* Write extended partition */
rtems_bdpart_write_mbr_partition(
43650: 202e fff4 movel %fp@(-12),%d0
43654: 9081 subl %d1,%d0
/* Write extended partition with logical partitions if necessary */
if (ppc != count) {
rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */
/* Begin of extended partition */
rtems_blkdev_bnum ep_begin = pt [ppc].begin - record_space;
43656: 2d41 ffe8 movel %d1,%fp@(-24)
data [i] = (uint8_t) value;
4365a: 10c1 moveb %d1,%a0@+
value >>= 8;
4365c: e089 lsrl #8,%d1
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{
size_t i = 0;
for (i = 0; i < 4; ++i) {
4365e: b3c8 cmpal %a0,%a1
43660: 66f8 bnes 4365a <rtems_bdpart_write+0x2e6>
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
43662: 220d movel %a5,%d1
43664: 0681 0000 0010 addil #16,%d1
data [i] = (uint8_t) value;
4366a: 10c0 moveb %d0,%a0@+
value >>= 8;
4366c: e088 lsrl #8,%d0
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{
size_t i = 0;
for (i = 0; i < 4; ++i) {
4366e: b288 cmpl %a0,%d1
43670: 66f8 bnes 4366a <rtems_bdpart_write+0x2f6>
uint8_t flags
)
{
rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;
43672: 7a05 moveq #5,%d5
data [RTEMS_BDPART_MBR_OFFSET_FLAGS] = flags;
43674: 4215 clrb %a5@
uint8_t flags
)
{
rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;
43676: 1b45 0004 moveb %d5,%a5@(4)
RTEMS_BDPART_MBR_EXTENDED,
0
);
/* Write logical partitions */
for (i = ppc; i < count; ++i) {
4367a: b484 cmpl %d4,%d2
4367c: 6300 00cc blsw 4374a <rtems_bdpart_write+0x3d6>
43680: 2c04 movel %d4,%d6
43682: 5286 addql #1,%d6
RTEMS_BDPART_MBR_SIGNATURE_1;
return RTEMS_SUCCESSFUL;
}
rtems_status_code rtems_bdpart_write(
43684: 2206 movel %d6,%d1
43686: 2006 movel %d6,%d0
43688: 2a42 moveal %d2,%a5
4368a: e989 lsll #4,%d1
4368c: ed88 lsll #6,%d0
4368e: 266e 0010 moveal %fp@(16),%a3
43692: 9081 subl %d1,%d0
43694: d7c0 addal %d0,%a3
);
}
/* New EBR */
ebr = p->begin - record_space;
sc = rtems_bdpart_new_record( dd, ebr, &block);
43696: 486e fff0 pea %fp@(-16)
4369a: 2012 movel %a2@,%d0
4369c: 9083 subl %d3,%d0
4369e: 2f00 movel %d0,%sp@-
436a0: 2f2e fffc movel %fp@(-4),%sp@-
436a4: 4e94 jsr %a4@
if (sc != RTEMS_SUCCESSFUL) {
436a6: 4fef 000c lea %sp@(12),%sp
436aa: 4a80 tstl %d0
436ac: 6600 00a8 bnew 43756 <rtems_bdpart_write+0x3e2>
esc = sc;
goto cleanup;
}
/* Write first partition entry */
rtems_bdpart_write_mbr_partition(
436b0: 222a 0004 movel %a2@(4),%d1
436b4: 9292 subl %a2@,%d1
block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0,
436b6: 206e fff0 moveal %fp@(-16),%a0
data [i] = (uint8_t) value;
436ba: 4202 clrb %d2
436bc: 2268 001a moveal %a0@(26),%a1
uint8_t type,
uint8_t flags
)
{
rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
436c0: 41e9 01ca lea %a1@(458),%a0
rtems_bdpart_write_mbr_partition(
block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0,
record_space,
p->end - p->begin,
rtems_bdpart_mbr_partition_type( p->type),
(uint8_t) p->flags
436c4: 1a2a 002f moveb %a2@(47),%d5
if (block != NULL) {
rtems_bdbuf_sync( block);
}
return esc;
}
436c8: 1e2a 0008 moveb %a2@(8),%d7
436cc: 1343 01c6 moveb %d3,%a1@(454)
436d0: 1342 01c7 moveb %d2,%a1@(455)
436d4: 1342 01c8 moveb %d2,%a1@(456)
436d8: 1342 01c9 moveb %d2,%a1@(457)
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{
size_t i = 0;
for (i = 0; i < 4; ++i) {
436dc: 5280 addql #1,%d0
436de: 7404 moveq #4,%d2
data [i] = (uint8_t) value;
436e0: 10c1 moveb %d1,%a0@+
value >>= 8;
436e2: e089 lsrl #8,%d1
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{
size_t i = 0;
for (i = 0; i < 4; ++i) {
436e4: b480 cmpl %d0,%d2
436e6: 66f4 bnes 436dc <rtems_bdpart_write+0x368>
uint8_t flags
)
{
rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;
436e8: 1347 01c2 moveb %d7,%a1@(450)
data [RTEMS_BDPART_MBR_OFFSET_FLAGS] = flags;
436ec: 1345 01be moveb %d5,%a1@(446)
RTEMS_BDPART_MBR_EXTENDED,
0
);
/* Write logical partitions */
for (i = ppc; i < count; ++i) {
436f0: bbc6 cmpal %d6,%a5
436f2: 6768 beqs 4375c <rtems_bdpart_write+0x3e8>
const rtems_bdpart_partition *p = pt + i;
436f4: 244b moveal %a3,%a2
/* Write second partition entry */
if (i > ppc) {
436f6: b886 cmpl %d6,%d4
436f8: 6446 bccs 43740 <rtems_bdpart_write+0x3cc> <== NEVER TAKEN
rtems_blkdev_bnum begin = p->begin - record_space;
436fa: 2a13 movel %a3@,%d5
436fc: 9a83 subl %d3,%d5
436fe: 4280 clrl %d0
rtems_bdpart_write_mbr_partition(
block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1,
43700: 206e fff0 moveal %fp@(-16),%a0
/* Write second partition entry */
if (i > ppc) {
rtems_blkdev_bnum begin = p->begin - record_space;
rtems_bdpart_write_mbr_partition(
43704: 222e fff4 movel %fp@(-12),%d1
43708: 9285 subl %d5,%d1
4370a: 9aae ffe8 subl %fp@(-24),%d5
block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1,
4370e: 2268 001a moveal %a0@(26),%a1
uint32_t size,
uint8_t type,
uint8_t flags
)
{
rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
43712: 41e9 01d6 lea %a1@(470),%a0
43716: 5280 addql #1,%d0
43718: 7e04 moveq #4,%d7
data [i] = (uint8_t) value;
4371a: 10c5 moveb %d5,%a0@+
value >>= 8;
4371c: e08d lsrl #8,%d5
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{
size_t i = 0;
for (i = 0; i < 4; ++i) {
4371e: be80 cmpl %d0,%d7
43720: 66f4 bnes 43716 <rtems_bdpart_write+0x3a2>
rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
43722: 41e9 01da lea %a1@(474),%a0
43726: 4280 clrl %d0
43728: 5280 addql #1,%d0
4372a: 7404 moveq #4,%d2
data [i] = (uint8_t) value;
4372c: 10c1 moveb %d1,%a0@+
value >>= 8;
4372e: e089 lsrl #8,%d1
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{
size_t i = 0;
for (i = 0; i < 4; ++i) {
43730: b480 cmpl %d0,%d2
43732: 66f4 bnes 43728 <rtems_bdpart_write+0x3b4>
data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;
43734: 7a05 moveq #5,%d5
data [RTEMS_BDPART_MBR_OFFSET_FLAGS] = flags;
43736: 4207 clrb %d7
uint8_t flags
)
{
rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;
43738: 1345 01d2 moveb %d5,%a1@(466)
data [RTEMS_BDPART_MBR_OFFSET_FLAGS] = flags;
4373c: 1347 01ce moveb %d7,%a1@(462)
43740: 5286 addql #1,%d6
43742: 47eb 0030 lea %a3@(48),%a3
43746: 6000 ff4e braw 43696 <rtems_bdpart_write+0x322>
const rtems_bdpart_partition *pt,
size_t count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
4374a: 4282 clrl %d2 <== NOT EXECUTED
4374c: 6000 fd40 braw 4348e <rtems_bdpart_write+0x11a> <== NOT EXECUTED
43750: 7404 moveq #4,%d2 <== NOT EXECUTED
43752: 6000 fd3a braw 4348e <rtems_bdpart_write+0x11a> <== NOT EXECUTED
}
/* New EBR */
ebr = p->begin - record_space;
sc = rtems_bdpart_new_record( dd, ebr, &block);
if (sc != RTEMS_SUCCESSFUL) {
43756: 2400 movel %d0,%d2 <== NOT EXECUTED
43758: 6000 fd34 braw 4348e <rtems_bdpart_write+0x11a> <== NOT EXECUTED
const rtems_bdpart_partition *pt,
size_t count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_status_code esc = RTEMS_SUCCESSFUL;
4375c: 4202 clrb %d2
4375e: 6000 fd2e braw 4348e <rtems_bdpart_write+0x11a>
...
000436ca <rtems_blkdev_create_partition>:
const char *partition,
const char *parent_block_device,
rtems_blkdev_bnum media_block_begin,
rtems_blkdev_bnum media_block_count
)
{
436ca: 4e56 ffa8 linkw %fp,#-88
436ce: 48d7 040c moveml %d2-%d3/%a2,%sp@
rtems_status_code sc = RTEMS_SUCCESSFUL;
int fd = open(parent_block_device, O_RDWR);
436d2: 4878 0002 pea 2 <DOUBLE_FLOAT>
436d6: 2f2e 000c movel %fp@(12),%sp@-
436da: 4eb9 0004 5e78 jsr 45e78 <open>
if (fd >= 0) {
436e0: 508f addql #8,%sp
rtems_blkdev_bnum media_block_begin,
rtems_blkdev_bnum media_block_count
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
int fd = open(parent_block_device, O_RDWR);
436e2: 2600 movel %d0,%d3
if (fd >= 0) {
436e4: 6c0e bges 436f4 <rtems_blkdev_create_partition+0x2a>
if (sc != RTEMS_SUCCESSFUL) {
close(fd);
}
} else {
sc = RTEMS_INVALID_ID;
436e6: 7404 moveq #4,%d2
}
return sc;
}
436e8: 2002 movel %d2,%d0
436ea: 4cee 040c ffa8 moveml %fp@(-88),%d2-%d3/%a2
436f0: 4e5e unlk %fp
436f2: 4e75 rts
if (fd >= 0) {
int rv;
struct stat st;
rv = fstat(fd, &st);
436f4: 486e ffba pea %fp@(-70)
436f8: 2f00 movel %d0,%sp@-
436fa: 4eb9 0004 4fcc jsr 44fcc <fstat>
if (rv == 0 && S_ISBLK(st.st_mode)) {
43700: 508f addql #8,%sp
43702: 4a80 tstl %d0
43704: 6612 bnes 43718 <rtems_blkdev_create_partition+0x4e><== NEVER TAKEN
43706: 202e ffc6 movel %fp@(-58),%d0
4370a: 0280 0000 f000 andil #61440,%d0
43710: 0c80 0000 6000 cmpil #24576,%d0
43716: 6718 beqs 43730 <rtems_blkdev_create_partition+0x66>
} else {
sc = RTEMS_INVALID_NODE;
}
if (sc != RTEMS_SUCCESSFUL) {
close(fd);
43718: 2f03 movel %d3,%sp@-
if (fd >= 0) {
int rv;
struct stat st;
rv = fstat(fd, &st);
if (rv == 0 && S_ISBLK(st.st_mode)) {
4371a: 7415 moveq #21,%d2
} else {
sc = RTEMS_INVALID_NODE;
}
if (sc != RTEMS_SUCCESSFUL) {
close(fd);
4371c: 4eb9 0004 4c68 jsr 44c68 <close>
43722: 588f addql #4,%sp
} else {
sc = RTEMS_INVALID_ID;
}
return sc;
}
43724: 2002 movel %d2,%d0
43726: 4cee 040c ffa8 moveml %fp@(-88),%d2-%d3/%a2
4372c: 4e5e unlk %fp
4372e: 4e75 rts
static inline int rtems_disk_fd_get_disk_device(
int fd,
rtems_disk_device **dd_ptr
)
{
return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);
43730: 486e ffb6 pea %fp@(-74)
43734: 2f3c 4004 4209 movel #1074020873,%sp@-
4373a: 2f03 movel %d3,%sp@-
4373c: 4eb9 0004 513c jsr 4513c <ioctl>
rv = fstat(fd, &st);
if (rv == 0 && S_ISBLK(st.st_mode)) {
rtems_disk_device *phys_dd;
rv = rtems_disk_fd_get_disk_device(fd, &phys_dd);
if (rv == 0) {
43742: 4fef 000c lea %sp@(12),%sp
43746: 4a80 tstl %d0
43748: 670e beqs 43758 <rtems_blkdev_create_partition+0x8e>
} else {
sc = RTEMS_INVALID_NODE;
}
if (sc != RTEMS_SUCCESSFUL) {
close(fd);
4374a: 2f03 movel %d3,%sp@-
}
} else {
sc = RTEMS_NO_MEMORY;
}
} else {
sc = RTEMS_NOT_IMPLEMENTED;
4374c: 7418 moveq #24,%d2
} else {
sc = RTEMS_INVALID_NODE;
}
if (sc != RTEMS_SUCCESSFUL) {
close(fd);
4374e: 4eb9 0004 4c68 jsr 44c68 <close>
43754: 588f addql #4,%sp
43756: 60cc bras 43724 <rtems_blkdev_create_partition+0x5a>
if (rv == 0 && S_ISBLK(st.st_mode)) {
rtems_disk_device *phys_dd;
rv = rtems_disk_fd_get_disk_device(fd, &phys_dd);
if (rv == 0) {
rtems_blkdev_imfs_context *ctx = malloc(sizeof(*ctx));
43758: 4878 0076 pea 76 <DBL_MANT_DIG+0x41>
4375c: 4eb9 0004 5544 jsr 45544 <malloc>
if (ctx != NULL) {
43762: 588f addql #4,%sp
if (rv == 0 && S_ISBLK(st.st_mode)) {
rtems_disk_device *phys_dd;
rv = rtems_disk_fd_get_disk_device(fd, &phys_dd);
if (rv == 0) {
rtems_blkdev_imfs_context *ctx = malloc(sizeof(*ctx));
43764: 2440 moveal %d0,%a2
if (ctx != NULL) {
43766: 4a80 tstl %d0
43768: 6774 beqs 437de <rtems_blkdev_create_partition+0x114>
sc = rtems_disk_init_log(
4376a: 2f2e 0014 movel %fp@(20),%sp@-
4376e: 2f2e 0010 movel %fp@(16),%sp@-
43772: 2f2e ffb6 movel %fp@(-74),%sp@-
43776: 2f00 movel %d0,%sp@-
43778: 4eb9 0004 39ac jsr 439ac <rtems_disk_init_log>
phys_dd,
media_block_begin,
media_block_count
);
if (sc == RTEMS_SUCCESSFUL) {
4377e: 4fef 0010 lea %sp@(16),%sp
rv = rtems_disk_fd_get_disk_device(fd, &phys_dd);
if (rv == 0) {
rtems_blkdev_imfs_context *ctx = malloc(sizeof(*ctx));
if (ctx != NULL) {
sc = rtems_disk_init_log(
43782: 2400 movel %d0,%d2
phys_dd,
media_block_begin,
media_block_count
);
if (sc == RTEMS_SUCCESSFUL) {
43784: 6640 bnes 437c6 <rtems_blkdev_create_partition+0xfc>
ctx->fd = fd;
rv = IMFS_make_generic_node(
43786: 2f0a movel %a2,%sp@-
43788: 4879 0006 18de pea 618de <rtems_blkdev_imfs_control>
4378e: 4878 61ff pea 61ff <D_MAX_EXP+0x5a00>
43792: 2f2e 0008 movel %fp@(8),%sp@-
media_block_begin,
media_block_count
);
if (sc == RTEMS_SUCCESSFUL) {
ctx->fd = fd;
43796: 2543 0072 movel %d3,%a2@(114)
rv = IMFS_make_generic_node(
4379a: 4eb9 0004 45ac jsr 445ac <IMFS_make_generic_node>
S_IFBLK | S_IRWXU | S_IRWXG | S_IRWXO,
&rtems_blkdev_imfs_control,
ctx
);
if (rv != 0) {
437a0: 4fef 0010 lea %sp@(16),%sp
437a4: 4a80 tstl %d0
437a6: 6700 ff40 beqw 436e8 <rtems_blkdev_create_partition+0x1e>
free(ctx);
437aa: 2f0a movel %a2,%sp@-
sc = RTEMS_UNSATISFIED;
437ac: 143c 000d moveb #13,%d2
&rtems_blkdev_imfs_control,
ctx
);
if (rv != 0) {
free(ctx);
437b0: 4eb9 0004 4f3c jsr 44f3c <free>
437b6: 588f addql #4,%sp
} else {
sc = RTEMS_INVALID_NODE;
}
if (sc != RTEMS_SUCCESSFUL) {
close(fd);
437b8: 2f03 movel %d3,%sp@-
437ba: 4eb9 0004 4c68 jsr 44c68 <close>
437c0: 588f addql #4,%sp
437c2: 6000 ff60 braw 43724 <rtems_blkdev_create_partition+0x5a>
if (rv != 0) {
free(ctx);
sc = RTEMS_UNSATISFIED;
}
} else {
free(ctx);
437c6: 2f0a movel %a2,%sp@-
437c8: 4eb9 0004 4f3c jsr 44f3c <free>
437ce: 588f addql #4,%sp
} else {
sc = RTEMS_INVALID_NODE;
}
if (sc != RTEMS_SUCCESSFUL) {
close(fd);
437d0: 2f03 movel %d3,%sp@-
437d2: 4eb9 0004 4c68 jsr 44c68 <close>
437d8: 588f addql #4,%sp
437da: 6000 ff48 braw 43724 <rtems_blkdev_create_partition+0x5a>
437de: 2f03 movel %d3,%sp@-
}
} else {
free(ctx);
}
} else {
sc = RTEMS_NO_MEMORY;
437e0: 741a moveq #26,%d2
} else {
sc = RTEMS_INVALID_NODE;
}
if (sc != RTEMS_SUCCESSFUL) {
close(fd);
437e2: 4eb9 0004 4c68 jsr 44c68 <close>
437e8: 588f addql #4,%sp
437ea: 6000 ff38 braw 43724 <rtems_blkdev_create_partition+0x5a>
...
0004f1ea <rtems_blkdev_generic_ioctl>:
rtems_device_driver
rtems_blkdev_generic_ioctl(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void * arg)
{
4f1ea: 4e56 0000 linkw %fp,#0
4f1ee: 2f0a movel %a2,%sp@-
4f1f0: 246e 0010 moveal %fp@(16),%a2
rtems_libio_ioctl_args_t *args = arg;
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
4f1f4: 2052 moveal %a2@,%a0
if (args->command != RTEMS_BLKIO_REQUEST)
4f1f6: 202a 0004 movel %a2@(4),%d0
rtems_device_minor_number minor __attribute__((unused)),
void * arg)
{
rtems_libio_ioctl_args_t *args = arg;
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
4f1fa: 2068 002c moveal %a0@(44),%a0
if (args->command != RTEMS_BLKIO_REQUEST)
4f1fe: 0c80 c018 4201 cmpil #-1072152063,%d0
4f204: 6610 bnes 4f216 <rtems_blkdev_generic_ioctl+0x2c><== ALWAYS TAKEN
{
/*
* It is not allowed to directly access the driver circumventing the
* cache.
*/
args->ioctl_return = -1;
4f206: 70ff moveq #-1,%d0 <== NOT EXECUTED
4f208: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
}
return RTEMS_SUCCESSFUL;
}
4f20c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4f210: 4280 clrl %d0 <== NOT EXECUTED
4f212: 4e5e unlk %fp <== NOT EXECUTED
4f214: 4e75 rts <== NOT EXECUTED
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
if (args->command != RTEMS_BLKIO_REQUEST)
{
args->ioctl_return = dd->ioctl(dd,
4f216: 2f2a 0008 movel %a2@(8),%sp@-
4f21a: 2f00 movel %d0,%sp@-
4f21c: 2f08 movel %a0,%sp@-
4f21e: 2068 0038 moveal %a0@(56),%a0
4f222: 4e90 jsr %a0@
4f224: 4fef 000c lea %sp@(12),%sp
4f228: 2540 000c movel %d0,%a2@(12)
*/
args->ioctl_return = -1;
}
return RTEMS_SUCCESSFUL;
}
4f22c: 246e fffc moveal %fp@(-4),%a2
4f230: 4280 clrl %d0
4f232: 4e5e unlk %fp
...
0004f196 <rtems_blkdev_generic_open>:
rtems_device_driver
rtems_blkdev_generic_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg)
{
4f196: 4e56 0000 linkw %fp,#0
rtems_libio_open_close_args_t *oc = arg;
rtems_libio_t *iop = oc->iop;
4f19a: 206e 0010 moveal %fp@(16),%a0
rtems_device_driver
rtems_blkdev_generic_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg)
{
4f19e: 2f0a movel %a2,%sp@-
rtems_libio_open_close_args_t *oc = arg;
rtems_libio_t *iop = oc->iop;
4f1a0: 2450 moveal %a0@,%a2
4f1a2: 222e 000c movel %fp@(12),%d1
4f1a6: 202e 0008 movel %fp@(8),%d0
dev_t dev = rtems_filesystem_make_dev_t(major, minor);
rtems_disk_device *dd = rtems_disk_obtain(dev);
4f1aa: 2f01 movel %d1,%sp@-
4f1ac: 2f00 movel %d0,%sp@-
4f1ae: 4eb9 0004 37e2 jsr 437e2 <rtems_disk_obtain>
iop->data1 = dd;
if (dd != NULL)
4f1b4: 508f addql #8,%sp
rtems_libio_open_close_args_t *oc = arg;
rtems_libio_t *iop = oc->iop;
dev_t dev = rtems_filesystem_make_dev_t(major, minor);
rtems_disk_device *dd = rtems_disk_obtain(dev);
iop->data1 = dd;
4f1b6: 2540 002c movel %d0,%a2@(44)
if (dd != NULL)
4f1ba: 670a beqs 4f1c6 <rtems_blkdev_generic_open+0x30> <== NEVER TAKEN
return RTEMS_SUCCESSFUL;
else
return RTEMS_UNSATISFIED;
}
4f1bc: 246e fffc moveal %fp@(-4),%a2
rtems_disk_device *dd = rtems_disk_obtain(dev);
iop->data1 = dd;
if (dd != NULL)
return RTEMS_SUCCESSFUL;
4f1c0: 4280 clrl %d0
else
return RTEMS_UNSATISFIED;
}
4f1c2: 4e5e unlk %fp
4f1c4: 4e75 rts
4f1c6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
iop->data1 = dd;
if (dd != NULL)
return RTEMS_SUCCESSFUL;
else
return RTEMS_UNSATISFIED;
4f1ca: 700d moveq #13,%d0 <== NOT EXECUTED
}
4f1cc: 4e5e unlk %fp <== NOT EXECUTED
0004f000 <rtems_blkdev_generic_read>:
rtems_device_driver
rtems_blkdev_generic_read(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void * arg)
{
4f000: 4e56 ffd4 linkw %fp,#-44
4f004: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4f008: 266e 0010 moveal %fp@(16),%a3
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
uint32_t block_size = dd->block_size;
char *buf = args->buffer;
uint32_t count = args->count;
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
4f00c: 4282 clrl %d2
void * arg)
{
rtems_status_code rc = RTEMS_SUCCESSFUL;
rtems_libio_rw_args_t *args = arg;
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
4f00e: 2053 moveal %a3@,%a0
4f010: 2868 002c moveal %a0@(44),%a4
uint32_t block_size = dd->block_size;
4f014: 2a6c 0024 moveal %a4@(36),%a5
char *buf = args->buffer;
uint32_t count = args->count;
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
4f018: 282b 0004 movel %a3@(4),%d4
4f01c: 2a2b 0008 movel %a3@(8),%d5
4f020: 2f0d movel %a5,%sp@-
4f022: 2f02 movel %d2,%sp@-
rtems_status_code rc = RTEMS_SUCCESSFUL;
rtems_libio_rw_args_t *args = arg;
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
uint32_t block_size = dd->block_size;
char *buf = args->buffer;
4f024: 246b 000c moveal %a3@(12),%a2
uint32_t count = args->count;
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
4f028: 2f05 movel %d5,%sp@-
4f02a: 2f04 movel %d4,%sp@-
rtems_libio_rw_args_t *args = arg;
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
uint32_t block_size = dd->block_size;
char *buf = args->buffer;
uint32_t count = args->count;
4f02c: 2c2b 0010 movel %a3@(16),%d6
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
4f030: 4eb9 0005 f00c jsr 5f00c <__divdi3>
4f036: 4fef 0010 lea %sp@(16),%sp
4f03a: 2e01 movel %d1,%d7
uint32_t blkofs = (uint32_t) (args->offset % block_size);
4f03c: 2f0d movel %a5,%sp@-
4f03e: 2f02 movel %d2,%sp@-
4f040: 2f05 movel %d5,%sp@-
4f042: 2f04 movel %d4,%sp@-
4f044: 4eb9 0005 f46c jsr 5f46c <__moddi3>
4f04a: 4fef 0010 lea %sp@(16),%sp
4f04e: 2801 movel %d1,%d4
args->bytes_moved = 0;
4f050: 42ab 0018 clrl %a3@(24)
while (count > 0)
4f054: 4a86 tstl %d6
4f056: 675c beqs 4f0b4 <rtems_blkdev_generic_read+0xb4> <== NEVER TAKEN
4f058: 260e movel %fp,%d3
4f05a: 5983 subql #4,%d3
4f05c: 243c 0004 e70e movel #321294,%d2
{
rtems_bdbuf_buffer *diskbuf;
uint32_t copy;
rc = rtems_bdbuf_read(dd, block, &diskbuf);
4f062: 2f03 movel %d3,%sp@-
4f064: 2042 moveal %d2,%a0
if (rc != RTEMS_SUCCESSFUL)
break;
copy = block_size - blkofs;
4f066: 2a0d movel %a5,%d5
4f068: 9a84 subl %d4,%d5
while (count > 0)
{
rtems_bdbuf_buffer *diskbuf;
uint32_t copy;
rc = rtems_bdbuf_read(dd, block, &diskbuf);
4f06a: 2f07 movel %d7,%sp@-
if (rc != RTEMS_SUCCESSFUL)
break;
count -= copy;
buf += copy;
blkofs = 0;
block++;
4f06c: 5287 addql #1,%d7
while (count > 0)
{
rtems_bdbuf_buffer *diskbuf;
uint32_t copy;
rc = rtems_bdbuf_read(dd, block, &diskbuf);
4f06e: 2f0c movel %a4,%sp@-
4f070: 4e90 jsr %a0@
if (rc != RTEMS_SUCCESSFUL)
4f072: 4fef 000c lea %sp@(12),%sp
4f076: 4a80 tstl %d0
4f078: 663c bnes 4f0b6 <rtems_blkdev_generic_read+0xb6> <== NEVER TAKEN
break;
copy = block_size - blkofs;
if (copy > count)
copy = count;
memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);
4f07a: 226e fffc moveal %fp@(-4),%a1
4f07e: bc85 cmpl %d5,%d6
4f080: 6402 bccs 4f084 <rtems_blkdev_generic_read+0x84> <== ALWAYS TAKEN
4f082: 2a06 movel %d6,%d5 <== NOT EXECUTED
4f084: 2f05 movel %d5,%sp@-
4f086: d8a9 001a addl %a1@(26),%d4
rc = rtems_bdbuf_release(diskbuf);
args->bytes_moved += copy;
if (rc != RTEMS_SUCCESSFUL)
break;
count -= copy;
4f08a: 9c85 subl %d5,%d6
if (rc != RTEMS_SUCCESSFUL)
break;
copy = block_size - blkofs;
if (copy > count)
copy = count;
memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);
4f08c: 2f04 movel %d4,%sp@-
args->bytes_moved += copy;
if (rc != RTEMS_SUCCESSFUL)
break;
count -= copy;
buf += copy;
blkofs = 0;
4f08e: 4284 clrl %d4
if (rc != RTEMS_SUCCESSFUL)
break;
copy = block_size - blkofs;
if (copy > count)
copy = count;
memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);
4f090: 2f0a movel %a2,%sp@-
rc = rtems_bdbuf_release(diskbuf);
args->bytes_moved += copy;
if (rc != RTEMS_SUCCESSFUL)
break;
count -= copy;
buf += copy;
4f092: d5c5 addal %d5,%a2
if (rc != RTEMS_SUCCESSFUL)
break;
copy = block_size - blkofs;
if (copy > count)
copy = count;
memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);
4f094: 4eb9 0005 31d4 jsr 531d4 <memcpy>
rc = rtems_bdbuf_release(diskbuf);
4f09a: 2f2e fffc movel %fp@(-4),%sp@-
4f09e: 4eb9 0004 e8e0 jsr 4e8e0 <rtems_bdbuf_release>
args->bytes_moved += copy;
if (rc != RTEMS_SUCCESSFUL)
4f0a4: 4fef 0010 lea %sp@(16),%sp
copy = block_size - blkofs;
if (copy > count)
copy = count;
memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);
rc = rtems_bdbuf_release(diskbuf);
args->bytes_moved += copy;
4f0a8: dbab 0018 addl %d5,%a3@(24)
if (rc != RTEMS_SUCCESSFUL)
4f0ac: 4a80 tstl %d0
4f0ae: 6606 bnes 4f0b6 <rtems_blkdev_generic_read+0xb6> <== NEVER TAKEN
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
uint32_t blkofs = (uint32_t) (args->offset % block_size);
args->bytes_moved = 0;
while (count > 0)
4f0b0: 4a86 tstl %d6
4f0b2: 66ae bnes 4f062 <rtems_blkdev_generic_read+0x62> <== NEVER TAKEN
rtems_blkdev_generic_read(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void * arg)
{
rtems_status_code rc = RTEMS_SUCCESSFUL;
4f0b4: 4280 clrl %d0
blkofs = 0;
block++;
}
return rc;
}
4f0b6: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
4f0bc: 4e5e unlk %fp <== NOT EXECUTED
0004f0c0 <rtems_blkdev_generic_write>:
rtems_device_driver
rtems_blkdev_generic_write(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void * arg)
{
4f0c0: 4e56 ffd4 linkw %fp,#-44
4f0c4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4f0c8: 266e 0010 moveal %fp@(16),%a3
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
uint32_t block_size = dd->block_size;
char *buf = args->buffer;
uint32_t count = args->count;
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
4f0cc: 4282 clrl %d2
void * arg)
{
rtems_status_code rc = RTEMS_SUCCESSFUL;
rtems_libio_rw_args_t *args = arg;
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
4f0ce: 2053 moveal %a3@,%a0
4f0d0: 2a68 002c moveal %a0@(44),%a5
uint32_t block_size = dd->block_size;
4f0d4: 286d 0024 moveal %a5@(36),%a4
char *buf = args->buffer;
uint32_t count = args->count;
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
4f0d8: 282b 0004 movel %a3@(4),%d4
4f0dc: 2a2b 0008 movel %a3@(8),%d5
4f0e0: 2f0c movel %a4,%sp@-
4f0e2: 2f02 movel %d2,%sp@-
rtems_status_code rc = RTEMS_SUCCESSFUL;
rtems_libio_rw_args_t *args = arg;
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
uint32_t block_size = dd->block_size;
char *buf = args->buffer;
4f0e4: 246b 000c moveal %a3@(12),%a2
uint32_t count = args->count;
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
4f0e8: 2f05 movel %d5,%sp@-
4f0ea: 2f04 movel %d4,%sp@-
rtems_libio_rw_args_t *args = arg;
rtems_libio_t *iop = args->iop;
rtems_disk_device *dd = iop->data1;
uint32_t block_size = dd->block_size;
char *buf = args->buffer;
uint32_t count = args->count;
4f0ec: 2c2b 0010 movel %a3@(16),%d6
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
4f0f0: 4eb9 0005 f00c jsr 5f00c <__divdi3>
4f0f6: 4fef 0010 lea %sp@(16),%sp
4f0fa: 2e01 movel %d1,%d7
uint32_t blkofs = (uint32_t) (args->offset % block_size);
4f0fc: 2f0c movel %a4,%sp@-
4f0fe: 2f02 movel %d2,%sp@-
4f100: 2f05 movel %d5,%sp@-
4f102: 2f04 movel %d4,%sp@-
4f104: 4eb9 0005 f46c jsr 5f46c <__moddi3>
4f10a: 4fef 0010 lea %sp@(16),%sp
4f10e: 2801 movel %d1,%d4
args->bytes_moved = 0;
4f110: 42ab 0018 clrl %a3@(24)
while (count > 0)
4f114: 4a86 tstl %d6
4f116: 6760 beqs 4f178 <rtems_blkdev_generic_write+0xb8><== NEVER TAKEN
4f118: 260e movel %fp,%d3
4f11a: 5983 subql #4,%d3
{
rtems_bdbuf_buffer *diskbuf;
uint32_t copy;
if ((blkofs == 0) && (count >= block_size))
4f11c: 4a81 tstl %d1
4f11e: 6604 bnes 4f124 <rtems_blkdev_generic_write+0x64><== NEVER TAKEN
4f120: bc8c cmpl %a4,%d6
4f122: 6460 bccs 4f184 <rtems_blkdev_generic_write+0xc4><== ALWAYS TAKEN
rc = rtems_bdbuf_get(dd, block, &diskbuf);
else
rc = rtems_bdbuf_read(dd, block, &diskbuf);
4f124: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4f126: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4f128: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4f12a: 4eb9 0004 e70e jsr 4e70e <rtems_bdbuf_read> <== NOT EXECUTED
4f130: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (rc != RTEMS_SUCCESSFUL)
4f134: 4a80 tstl %d0
4f136: 6642 bnes 4f17a <rtems_blkdev_generic_write+0xba><== NEVER TAKEN
break;
copy = block_size - blkofs;
4f138: 240c movel %a4,%d2
4f13a: 9484 subl %d4,%d2
4f13c: bc82 cmpl %d2,%d6
4f13e: 6402 bccs 4f142 <rtems_blkdev_generic_write+0x82><== ALWAYS TAKEN
4f140: 2406 movel %d6,%d2 <== NOT EXECUTED
if (copy > count)
copy = count;
memcpy((char *)diskbuf->buffer + blkofs, buf, copy);
4f142: 2f02 movel %d2,%sp@-
4f144: 206e fffc moveal %fp@(-4),%a0
4f148: 2f0a movel %a2,%sp@-
4f14a: d8a8 001a addl %a0@(26),%d4
4f14e: 2f04 movel %d4,%sp@-
4f150: 4eb9 0005 31d4 jsr 531d4 <memcpy>
args->bytes_moved += copy;
rc = rtems_bdbuf_release_modified(diskbuf);
4f156: 2f2e fffc movel %fp@(-4),%sp@-
copy = block_size - blkofs;
if (copy > count)
copy = count;
memcpy((char *)diskbuf->buffer + blkofs, buf, copy);
args->bytes_moved += copy;
4f15a: d5ab 0018 addl %d2,%a3@(24)
rc = rtems_bdbuf_release_modified(diskbuf);
4f15e: 4eb9 0004 e99a jsr 4e99a <rtems_bdbuf_release_modified>
if (rc != RTEMS_SUCCESSFUL)
4f164: 4fef 0010 lea %sp@(16),%sp
4f168: 4a80 tstl %d0
4f16a: 660e bnes 4f17a <rtems_blkdev_generic_write+0xba><== NEVER TAKEN
break;
count -= copy;
4f16c: 9c82 subl %d2,%d6
buf += copy;
4f16e: d5c2 addal %d2,%a2
blkofs = 0;
block++;
4f170: 5287 addql #1,%d7
if (rc != RTEMS_SUCCESSFUL)
break;
count -= copy;
buf += copy;
blkofs = 0;
4f172: 4284 clrl %d4
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
uint32_t blkofs = (uint32_t) (args->offset % block_size);
args->bytes_moved = 0;
while (count > 0)
4f174: 4a86 tstl %d6
4f176: 66a8 bnes 4f120 <rtems_blkdev_generic_write+0x60><== NEVER TAKEN
rtems_blkdev_generic_write(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void * arg)
{
rtems_status_code rc = RTEMS_SUCCESSFUL;
4f178: 4280 clrl %d0
blkofs = 0;
block++;
}
return rc;
}
4f17a: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
4f180: 4e5e unlk %fp
4f182: 4e75 rts
{
rtems_bdbuf_buffer *diskbuf;
uint32_t copy;
if ((blkofs == 0) && (count >= block_size))
rc = rtems_bdbuf_get(dd, block, &diskbuf);
4f184: 2f03 movel %d3,%sp@-
4f186: 2f07 movel %d7,%sp@-
4f188: 2f0d movel %a5,%sp@-
4f18a: 4eb9 0004 e60c jsr 4e60c <rtems_bdbuf_get>
4f190: 4fef 000c lea %sp@(12),%sp
4f194: 609e bras 4f134 <rtems_blkdev_generic_write+0x74>
000435a6 <rtems_blkdev_imfs_fsync_or_fdatasync>:
}
static int rtems_blkdev_imfs_fsync_or_fdatasync(
rtems_libio_t *iop
)
{
435a6: 4e56 0000 linkw %fp,#0
435aa: 206e 0008 moveal %fp@(8),%a0
} else {
sc = RTEMS_INVALID_ID;
}
return sc;
}
435ae: 2068 0018 moveal %a0@(24),%a0
)
{
int rv = 0;
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
rtems_status_code sc = rtems_bdbuf_syncdev(dd);
435b2: 2f28 004e movel %a0@(78),%sp@-
435b6: 4eb9 0004 f728 jsr 4f728 <rtems_bdbuf_syncdev>
if (sc != RTEMS_SUCCESSFUL) {
435bc: 588f addql #4,%sp
static int rtems_blkdev_imfs_fsync_or_fdatasync(
rtems_libio_t *iop
)
{
int rv = 0;
435be: 4281 clrl %d1
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
rtems_status_code sc = rtems_bdbuf_syncdev(dd);
if (sc != RTEMS_SUCCESSFUL) {
435c0: 4a80 tstl %d0
435c2: 6606 bnes 435ca <rtems_blkdev_imfs_fsync_or_fdatasync+0x24><== NEVER TAKEN
errno = EIO;
rv = -1;
}
return rv;
}
435c4: 2001 movel %d1,%d0
435c6: 4e5e unlk %fp
435c8: 4e75 rts
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
rtems_status_code sc = rtems_bdbuf_syncdev(dd);
if (sc != RTEMS_SUCCESSFUL) {
errno = EIO;
435ca: 4eb9 0005 30b4 jsr 530b4 <__errno> <== NOT EXECUTED
435d0: 72ff moveq #-1,%d1 <== NOT EXECUTED
435d2: 2040 moveal %d0,%a0 <== NOT EXECUTED
435d4: 7005 moveq #5,%d0 <== NOT EXECUTED
rv = -1;
}
return rv;
}
435d6: 4e5e unlk %fp <== NOT EXECUTED
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
rtems_status_code sc = rtems_bdbuf_syncdev(dd);
if (sc != RTEMS_SUCCESSFUL) {
errno = EIO;
435d8: 2080 movel %d0,%a0@ <== NOT EXECUTED
rv = -1;
}
return rv;
}
435da: 2001 movel %d1,%d0 <== NOT EXECUTED
000435de <rtems_blkdev_imfs_ioctl>:
static int rtems_blkdev_imfs_ioctl(
rtems_libio_t *iop,
uint32_t request,
void *buffer
)
{
435de: 4e56 0000 linkw %fp,#0
435e2: 206e 0008 moveal %fp@(8),%a0
435e6: 202e 000c movel %fp@(12),%d0
int rv = 0;
if (request != RTEMS_BLKIO_REQUEST) {
435ea: 0c80 c018 4201 cmpil #-1072152063,%d0
435f0: 6714 beqs 43606 <rtems_blkdev_imfs_ioctl+0x28> <== NEVER TAKEN
} else {
sc = RTEMS_INVALID_ID;
}
return sc;
}
435f2: 2068 0018 moveal %a0@(24),%a0
435f6: 2068 004e moveal %a0@(78),%a0
if (request != RTEMS_BLKIO_REQUEST) {
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
rv = (*dd->ioctl)(dd, request, buffer);
435fa: 2d48 0008 movel %a0,%fp@(8)
errno = EINVAL;
rv = -1;
}
return rv;
}
435fe: 4e5e unlk %fp
if (request != RTEMS_BLKIO_REQUEST) {
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
rv = (*dd->ioctl)(dd, request, buffer);
43600: 2268 0038 moveal %a0@(56),%a1
43604: 4ed1 jmp %a1@
} else {
/*
* It is not allowed to directly access the driver circumventing the cache.
*/
errno = EINVAL;
43606: 4eb9 0005 30b4 jsr 530b4 <__errno> <== NOT EXECUTED
4360c: 7216 moveq #22,%d1 <== NOT EXECUTED
4360e: 2040 moveal %d0,%a0 <== NOT EXECUTED
rv = -1;
}
return rv;
}
43610: 70ff moveq #-1,%d0 <== NOT EXECUTED
43612: 4e5e unlk %fp <== NOT EXECUTED
rv = (*dd->ioctl)(dd, request, buffer);
} else {
/*
* It is not allowed to directly access the driver circumventing the cache.
*/
errno = EINVAL;
43614: 2081 movel %d1,%a0@ <== NOT EXECUTED
rv = -1;
}
return rv;
}
000433dc <rtems_blkdev_imfs_read>:
static ssize_t rtems_blkdev_imfs_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
433dc: 4e56 ffc8 linkw %fp,#-56
} else {
sc = RTEMS_INVALID_ID;
}
return sc;
}
433e0: 226e 0008 moveal %fp@(8),%a1
static ssize_t rtems_blkdev_imfs_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
433e4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
} else {
sc = RTEMS_INVALID_ID;
}
return sc;
}
433e8: 2069 0018 moveal %a1@(24),%a0
433ec: 2468 004e moveal %a0@(78),%a2
int rv;
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
ssize_t remaining = (ssize_t) count;
off_t offset = iop->offset;
ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);
433f0: 242a 0024 movel %a2@(36),%d2
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
433f4: 2a02 movel %d2,%d5
433f6: 5bc4 smi %d4
433f8: 49c4 extbl %d4
int rv;
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
ssize_t remaining = (ssize_t) count;
off_t offset = iop->offset;
ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);
433fa: 2d42 fff8 movel %d2,%fp@(-8)
{
int rv;
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
ssize_t remaining = (ssize_t) count;
off_t offset = iop->offset;
433fe: 2429 0004 movel %a1@(4),%d2
43402: 2629 0008 movel %a1@(8),%d3
ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
43406: 2f05 movel %d5,%sp@-
43408: 2f04 movel %d4,%sp@-
4340a: 2f03 movel %d3,%sp@-
4340c: 2f02 movel %d2,%sp@-
4340e: 4eb9 0005 f848 jsr 5f848 <__divdi3>
43414: 4fef 0010 lea %sp@(16),%sp
43418: 2c01 movel %d1,%d6
ssize_t block_offset = (ssize_t) (offset % block_size);
4341a: 2f05 movel %d5,%sp@-
4341c: 2f04 movel %d4,%sp@-
4341e: 2f03 movel %d3,%sp@-
43420: 2f02 movel %d2,%sp@-
43422: 4eb9 0005 fca8 jsr 5fca8 <__moddi3>
43428: 4fef 0010 lea %sp@(16),%sp
4342c: 2841 moveal %d1,%a4
char *dst = buffer;
while (remaining > 0) {
4342e: 4aae 0010 tstl %fp@(16)
43432: 6f00 0082 blew 434b6 <rtems_blkdev_imfs_read+0xda>
rtems_bdbuf_buffer *bd;
rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);
43436: 486e fffc pea %fp@(-4)
4343a: 4bf9 0004 f2fa lea 4f2fa <rtems_bdbuf_read>,%a5
if (copy > remaining) {
copy = remaining;
}
memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy);
43440: 2a3c 0005 3964 movel #342372,%d5
ssize_t block_offset = (ssize_t) (offset % block_size);
char *dst = buffer;
while (remaining > 0) {
rtems_bdbuf_buffer *bd;
rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);
43446: 2f06 movel %d6,%sp@-
if (sc == RTEMS_SUCCESSFUL) {
ssize_t copy = block_size - block_offset;
43448: 2e2e fff8 movel %fp@(-8),%d7
4344c: 9e8c subl %a4,%d7
copy = remaining;
}
memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy);
sc = rtems_bdbuf_release(bd);
4344e: 283c 0004 f4cc movel #324812,%d4
ssize_t block_offset = (ssize_t) (offset % block_size);
char *dst = buffer;
while (remaining > 0) {
rtems_bdbuf_buffer *bd;
rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);
43454: 2f0a movel %a2,%sp@-
ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
ssize_t block_offset = (ssize_t) (offset % block_size);
char *dst = buffer;
while (remaining > 0) {
43456: 262e 000c movel %fp@(12),%d3
4345a: 242e 0010 movel %fp@(16),%d2
rtems_bdbuf_buffer *bd;
rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);
4345e: 4e95 jsr %a5@
if (sc == RTEMS_SUCCESSFUL) {
43460: 4fef 000c lea %sp@(12),%sp
43464: 4a80 tstl %d0
43466: 6600 008a bnew 434f2 <rtems_blkdev_imfs_read+0x116>
if (copy > remaining) {
copy = remaining;
}
memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy);
4346a: 266e fffc moveal %fp@(-4),%a3
sc = rtems_bdbuf_release(bd);
if (sc == RTEMS_SUCCESSFUL) {
block_offset = 0;
remaining -= copy;
dst += copy;
++block;
4346e: 5286 addql #1,%d6
43470: b487 cmpl %d7,%d2
43472: 6c02 bges 43476 <rtems_blkdev_imfs_read+0x9a>
43474: 2e02 movel %d2,%d7
if (copy > remaining) {
copy = remaining;
}
memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy);
43476: 2f07 movel %d7,%sp@-
43478: d9eb 001a addal %a3@(26),%a4
4347c: 2245 moveal %d5,%a1
sc = rtems_bdbuf_release(bd);
if (sc == RTEMS_SUCCESSFUL) {
block_offset = 0;
remaining -= copy;
4347e: 9487 subl %d7,%d2
if (copy > remaining) {
copy = remaining;
}
memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy);
43480: 2f0c movel %a4,%sp@-
sc = rtems_bdbuf_release(bd);
if (sc == RTEMS_SUCCESSFUL) {
block_offset = 0;
43482: 99cc subal %a4,%a4
if (copy > remaining) {
copy = remaining;
}
memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy);
43484: 2f03 movel %d3,%sp@-
sc = rtems_bdbuf_release(bd);
if (sc == RTEMS_SUCCESSFUL) {
block_offset = 0;
remaining -= copy;
dst += copy;
43486: d687 addl %d7,%d3
if (copy > remaining) {
copy = remaining;
}
memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy);
43488: 4e91 jsr %a1@
sc = rtems_bdbuf_release(bd);
4348a: 2044 moveal %d4,%a0
4348c: 2f0b movel %a3,%sp@-
4348e: 4e90 jsr %a0@
if (sc == RTEMS_SUCCESSFUL) {
43490: 4fef 0010 lea %sp@(16),%sp
43494: 4a80 tstl %d0
43496: 665a bnes 434f2 <rtems_blkdev_imfs_read+0x116> <== NEVER TAKEN
ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
ssize_t block_offset = (ssize_t) (offset % block_size);
char *dst = buffer;
while (remaining > 0) {
43498: 4a82 tstl %d2
4349a: 6f1e bles 434ba <rtems_blkdev_imfs_read+0xde>
rtems_bdbuf_buffer *bd;
rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);
4349c: 486e fffc pea %fp@(-4)
if (sc == RTEMS_SUCCESSFUL) {
ssize_t copy = block_size - block_offset;
434a0: 2e2e fff8 movel %fp@(-8),%d7
434a4: 9e8c subl %a4,%d7
ssize_t block_offset = (ssize_t) (offset % block_size);
char *dst = buffer;
while (remaining > 0) {
rtems_bdbuf_buffer *bd;
rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);
434a6: 2f06 movel %d6,%sp@-
434a8: 2f0a movel %a2,%sp@-
434aa: 4e95 jsr %a5@
if (sc == RTEMS_SUCCESSFUL) {
434ac: 4fef 000c lea %sp@(12),%sp
434b0: 4a80 tstl %d0
434b2: 663e bnes 434f2 <rtems_blkdev_imfs_read+0x116> <== NEVER TAKEN
434b4: 60b4 bras 4346a <rtems_blkdev_imfs_read+0x8e>
ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
ssize_t block_offset = (ssize_t) (offset % block_size);
char *dst = buffer;
while (remaining > 0) {
434b6: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
} else {
remaining = -1;
}
}
if (remaining >= 0) {
434ba: 4a82 tstl %d2
434bc: 6634 bnes 434f2 <rtems_blkdev_imfs_read+0x116> <== NEVER TAKEN
iop->offset += count;
434be: 226e 0010 moveal %fp@(16),%a1
434c2: 91c8 subal %a0,%a0
)
{
int rv;
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
ssize_t remaining = (ssize_t) count;
434c4: 2009 movel %a1,%d0
remaining = -1;
}
}
if (remaining >= 0) {
iop->offset += count;
434c6: 2d48 fff0 movel %a0,%fp@(-16)
434ca: 206e 0008 moveal %fp@(8),%a0
434ce: 2d49 fff4 movel %a1,%fp@(-12)
434d2: 242e fff0 movel %fp@(-16),%d2
434d6: 262e fff4 movel %fp@(-12),%d3
434da: d7a8 0008 addl %d3,%a0@(8)
434de: 2228 0004 movel %a0@(4),%d1
434e2: d382 addxl %d2,%d1
434e4: 2141 0004 movel %d1,%a0@(4)
errno = EIO;
rv = -1;
}
return rv;
}
434e8: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
434ee: 4e5e unlk %fp
434f0: 4e75 rts
if (remaining >= 0) {
iop->offset += count;
rv = (ssize_t) count;
} else {
errno = EIO;
434f2: 4eb9 0005 30b4 jsr 530b4 <__errno> <== NOT EXECUTED
434f8: 7405 moveq #5,%d2 <== NOT EXECUTED
434fa: 2040 moveal %d0,%a0 <== NOT EXECUTED
rv = -1;
434fc: 70ff moveq #-1,%d0 <== NOT EXECUTED
if (remaining >= 0) {
iop->offset += count;
rv = (ssize_t) count;
} else {
errno = EIO;
434fe: 2082 movel %d2,%a0@ <== NOT EXECUTED
rv = -1;
}
return rv;
}
43500: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
43506: 4e5e unlk %fp <== NOT EXECUTED
000432be <rtems_blkdev_imfs_write>:
static ssize_t rtems_blkdev_imfs_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
432be: 4e56 ffcc linkw %fp,#-52
432c2: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
432c6: 286e 0008 moveal %fp@(8),%a4
} else {
sc = RTEMS_INVALID_ID;
}
return sc;
}
432ca: 206c 0018 moveal %a4@(24),%a0
432ce: 2468 004e moveal %a0@(78),%a2
int rv;
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
ssize_t remaining = (ssize_t) count;
off_t offset = iop->offset;
ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);
432d2: 2e2a 0024 movel %a2@(36),%d7
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
432d6: 2a07 movel %d7,%d5
432d8: 5bc4 smi %d4
432da: 49c4 extbl %d4
{
int rv;
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
ssize_t remaining = (ssize_t) count;
off_t offset = iop->offset;
432dc: 242c 0004 movel %a4@(4),%d2
432e0: 262c 0008 movel %a4@(8),%d3
static ssize_t rtems_blkdev_imfs_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
432e4: 266e 0010 moveal %fp@(16),%a3
rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
rtems_disk_device *dd = &ctx->dd;
ssize_t remaining = (ssize_t) count;
off_t offset = iop->offset;
ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
432e8: 2f05 movel %d5,%sp@-
432ea: 2f04 movel %d4,%sp@-
432ec: 2f03 movel %d3,%sp@-
432ee: 2f02 movel %d2,%sp@-
432f0: 4eb9 0005 f848 jsr 5f848 <__divdi3>
432f6: 4fef 0010 lea %sp@(16),%sp
432fa: 2c01 movel %d1,%d6
ssize_t block_offset = (ssize_t) (offset % block_size);
432fc: 2f05 movel %d5,%sp@-
432fe: 2f04 movel %d4,%sp@-
43300: 2f03 movel %d3,%sp@-
43302: 2f02 movel %d2,%sp@-
43304: 4eb9 0005 fca8 jsr 5fca8 <__moddi3>
4330a: 4fef 0010 lea %sp@(16),%sp
4330e: 2601 movel %d1,%d3
const char *src = buffer;
while (remaining > 0) {
43310: 4a8b tstl %a3
43312: 6f7e bles 43392 <rtems_blkdev_imfs_write+0xd4> <== NEVER TAKEN
43314: 2a0e movel %fp,%d5
43316: 240b movel %a3,%d2
43318: 5985 subql #4,%d5
4331a: 282e 000c movel %fp@(12),%d4
rtems_status_code sc;
rtems_bdbuf_buffer *bd;
if (block_offset == 0 && remaining >= block_size) {
4331e: 4a81 tstl %d1
43320: 6604 bnes 43326 <rtems_blkdev_imfs_write+0x68>
43322: b487 cmpl %d7,%d2
43324: 6c56 bges 4337c <rtems_blkdev_imfs_write+0xbe>
sc = rtems_bdbuf_get(dd, block, &bd);
} else {
sc = rtems_bdbuf_read(dd, block, &bd);
43326: 2f05 movel %d5,%sp@-
43328: 2f06 movel %d6,%sp@-
4332a: 2f0a movel %a2,%sp@-
4332c: 4eb9 0004 f2fa jsr 4f2fa <rtems_bdbuf_read>
43332: 4fef 000c lea %sp@(12),%sp
}
if (sc == RTEMS_SUCCESSFUL) {
43336: 4a80 tstl %d0
43338: 6600 008a bnew 433c4 <rtems_blkdev_imfs_write+0x106>
ssize_t copy = block_size - block_offset;
4333c: 2a47 moveal %d7,%a5
4333e: 9bc3 subal %d3,%a5
43340: b48d cmpl %a5,%d2
43342: 6c02 bges 43346 <rtems_blkdev_imfs_write+0x88>
43344: 2a42 moveal %d2,%a5
if (copy > remaining) {
copy = remaining;
}
memcpy((char *) bd->buffer + block_offset, src, (size_t) copy);
43346: 2f0d movel %a5,%sp@-
43348: 206e fffc moveal %fp@(-4),%a0
4334c: 2f04 movel %d4,%sp@-
4334e: d6a8 001a addl %a0@(26),%d3
43352: 2f03 movel %d3,%sp@-
43354: 4eb9 0005 3964 jsr 53964 <memcpy>
sc = rtems_bdbuf_release_modified(bd);
4335a: 2f2e fffc movel %fp@(-4),%sp@-
4335e: 4eb9 0004 f586 jsr 4f586 <rtems_bdbuf_release_modified>
if (sc == RTEMS_SUCCESSFUL) {
43364: 4fef 0010 lea %sp@(16),%sp
43368: 4a80 tstl %d0
4336a: 6658 bnes 433c4 <rtems_blkdev_imfs_write+0x106> <== NEVER TAKEN
block_offset = 0;
remaining -= copy;
4336c: 948d subl %a5,%d2
src += copy;
4336e: d88d addl %a5,%d4
++block;
43370: 5286 addql #1,%d6
memcpy((char *) bd->buffer + block_offset, src, (size_t) copy);
sc = rtems_bdbuf_release_modified(bd);
if (sc == RTEMS_SUCCESSFUL) {
block_offset = 0;
43372: 4283 clrl %d3
ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
ssize_t block_offset = (ssize_t) (offset % block_size);
const char *src = buffer;
while (remaining > 0) {
43374: 4a82 tstl %d2
43376: 6f1c bles 43394 <rtems_blkdev_imfs_write+0xd6>
rtems_status_code sc;
rtems_bdbuf_buffer *bd;
if (block_offset == 0 && remaining >= block_size) {
43378: b487 cmpl %d7,%d2
4337a: 6daa blts 43326 <rtems_blkdev_imfs_write+0x68>
sc = rtems_bdbuf_get(dd, block, &bd);
4337c: 2f05 movel %d5,%sp@-
4337e: 2f06 movel %d6,%sp@-
43380: 2f0a movel %a2,%sp@-
43382: 4eb9 0004 f1f8 jsr 4f1f8 <rtems_bdbuf_get>
43388: 4fef 000c lea %sp@(12),%sp
} else {
sc = rtems_bdbuf_read(dd, block, &bd);
}
if (sc == RTEMS_SUCCESSFUL) {
4338c: 4a80 tstl %d0
4338e: 6634 bnes 433c4 <rtems_blkdev_imfs_write+0x106> <== NEVER TAKEN
43390: 60aa bras 4333c <rtems_blkdev_imfs_write+0x7e>
ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);
rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
ssize_t block_offset = (ssize_t) (offset % block_size);
const char *src = buffer;
while (remaining > 0) {
43392: 240b movel %a3,%d2 <== NOT EXECUTED
} else {
remaining = -1;
}
}
if (remaining >= 0) {
43394: 4a82 tstl %d2
43396: 662c bnes 433c4 <rtems_blkdev_imfs_write+0x106> <== NEVER TAKEN
iop->offset += count;
43398: 91c8 subal %a0,%a0
4339a: 200b movel %a3,%d0
4339c: 2d4b fff8 movel %a3,%fp@(-8)
433a0: 2d48 fff4 movel %a0,%fp@(-12)
433a4: 242e fff4 movel %fp@(-12),%d2
433a8: 262e fff8 movel %fp@(-8),%d3
433ac: d7ac 0008 addl %d3,%a4@(8)
433b0: 222c 0004 movel %a4@(4),%d1
433b4: d382 addxl %d2,%d1
433b6: 2941 0004 movel %d1,%a4@(4)
errno = EIO;
rv = -1;
}
return rv;
}
433ba: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
433c0: 4e5e unlk %fp
433c2: 4e75 rts
if (remaining >= 0) {
iop->offset += count;
rv = (ssize_t) count;
} else {
errno = EIO;
433c4: 4eb9 0005 30b4 jsr 530b4 <__errno> <== NOT EXECUTED
433ca: 7205 moveq #5,%d1 <== NOT EXECUTED
433cc: 2040 moveal %d0,%a0 <== NOT EXECUTED
rv = -1;
433ce: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return rv;
}
433d0: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
if (remaining >= 0) {
iop->offset += count;
rv = (ssize_t) count;
} else {
errno = EIO;
433d6: 2081 movel %d1,%a0@ <== NOT EXECUTED
rv = -1;
}
return rv;
}
433d8: 4e5e unlk %fp <== NOT EXECUTED
0004eecc <rtems_blkdev_ioctl>:
#include <rtems/blkdev.h>
#include <rtems/bdbuf.h>
int
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
4eecc: 4e56 0000 linkw %fp,#0
4eed0: 202e 000c movel %fp@(12),%d0
rtems_status_code sc;
int rc = 0;
switch (req)
4eed4: 0c80 4004 4203 cmpil #1074020867,%d0
4eeda: 6700 0112 beqw 4efee <rtems_blkdev_ioctl+0x122>
4eede: 6332 blss 4ef12 <rtems_blkdev_ioctl+0x46>
4eee0: 0c80 4004 4209 cmpil #1074020873,%d0
4eee6: 6700 00d4 beqw 4efbc <rtems_blkdev_ioctl+0xf0>
4eeea: 6356 blss 4ef42 <rtems_blkdev_ioctl+0x76>
4eeec: 0c80 4004 420b cmpil #1074020875,%d0
4eef2: 6700 00b2 beqw 4efa6 <rtems_blkdev_ioctl+0xda>
4eef6: 0c80 8004 4204 cmpil #-2147204604,%d0
4eefc: 6700 0088 beqw 4ef86 <rtems_blkdev_ioctl+0xba>
case RTEMS_BLKIO_RESETDEVSTATS:
rtems_bdbuf_reset_device_stats(dd);
break;
default:
errno = EINVAL;
4ef00: 4eb9 0005 29b4 jsr 529b4 <__errno>
4ef06: 7216 moveq #22,%d1
4ef08: 2040 moveal %d0,%a0
rc = -1;
4ef0a: 70ff moveq #-1,%d0
break;
}
return rc;
}
4ef0c: 4e5e unlk %fp
case RTEMS_BLKIO_RESETDEVSTATS:
rtems_bdbuf_reset_device_stats(dd);
break;
default:
errno = EINVAL;
4ef0e: 2081 movel %d1,%a0@
rc = -1;
break;
}
return rc;
}
4ef10: 4e75 rts
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
switch (req)
4ef12: 0c80 2000 420a cmpil #536887818,%d0
4ef18: 6700 00c2 beqw 4efdc <rtems_blkdev_ioctl+0x110>
4ef1c: 633e blss 4ef5c <rtems_blkdev_ioctl+0x90>
4ef1e: 0c80 2000 420c cmpil #536887820,%d0
4ef24: 6700 00a4 beqw 4efca <rtems_blkdev_ioctl+0xfe>
4ef28: 0c80 4004 4202 cmpil #1074020866,%d0
4ef2e: 66d0 bnes 4ef00 <rtems_blkdev_ioctl+0x34> <== NEVER TAKEN
{
case RTEMS_BLKIO_GETMEDIABLKSIZE:
*(uint32_t *) argp = dd->media_block_size;
4ef30: 206e 0010 moveal %fp@(16),%a0
int
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
4ef34: 4280 clrl %d0
switch (req)
{
case RTEMS_BLKIO_GETMEDIABLKSIZE:
*(uint32_t *) argp = dd->media_block_size;
4ef36: 226e 0008 moveal %fp@(8),%a1
rc = -1;
break;
}
return rc;
}
4ef3a: 4e5e unlk %fp
int rc = 0;
switch (req)
{
case RTEMS_BLKIO_GETMEDIABLKSIZE:
*(uint32_t *) argp = dd->media_block_size;
4ef3c: 20a9 0020 movel %a1@(32),%a0@
rc = -1;
break;
}
return rc;
}
4ef40: 4e75 rts
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
switch (req)
4ef42: 0c80 4004 4205 cmpil #1074020869,%d0
4ef48: 66b6 bnes 4ef00 <rtems_blkdev_ioctl+0x34> <== NEVER TAKEN
rc = -1;
}
break;
case RTEMS_BLKIO_GETSIZE:
*(rtems_blkdev_bnum *) argp = dd->size;
4ef4a: 226e 0010 moveal %fp@(16),%a1
4ef4e: 206e 0008 moveal %fp@(8),%a0
4ef52: 22a8 001c movel %a0@(28),%a1@
int
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
4ef56: 4280 clrl %d0
rc = -1;
break;
}
return rc;
}
4ef58: 4e5e unlk %fp
4ef5a: 4e75 rts
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
switch (req)
4ef5c: 0c80 2000 4206 cmpil #536887814,%d0
4ef62: 669c bnes 4ef00 <rtems_blkdev_ioctl+0x34>
case RTEMS_BLKIO_GETSIZE:
*(rtems_blkdev_bnum *) argp = dd->size;
break;
case RTEMS_BLKIO_SYNCDEV:
sc = rtems_bdbuf_syncdev(dd);
4ef64: 2f2e 0008 movel %fp@(8),%sp@-
4ef68: 4eb9 0004 eb3c jsr 4eb3c <rtems_bdbuf_syncdev>
if (sc != RTEMS_SUCCESSFUL) {
4ef6e: 588f addql #4,%sp
4ef70: 4a80 tstl %d0
4ef72: 67e2 beqs 4ef56 <rtems_blkdev_ioctl+0x8a> <== ALWAYS TAKEN
errno = EIO;
4ef74: 4eb9 0005 29b4 jsr 529b4 <__errno> <== NOT EXECUTED
4ef7a: 7205 moveq #5,%d1 <== NOT EXECUTED
4ef7c: 2040 moveal %d0,%a0 <== NOT EXECUTED
rc = -1;
4ef7e: 70ff moveq #-1,%d0 <== NOT EXECUTED
rc = -1;
break;
}
return rc;
}
4ef80: 4e5e unlk %fp <== NOT EXECUTED
break;
case RTEMS_BLKIO_SYNCDEV:
sc = rtems_bdbuf_syncdev(dd);
if (sc != RTEMS_SUCCESSFUL) {
errno = EIO;
4ef82: 2081 movel %d1,%a0@ <== NOT EXECUTED
rc = -1;
break;
}
return rc;
}
4ef84: 4e75 rts <== NOT EXECUTED
case RTEMS_BLKIO_GETBLKSIZE:
*(uint32_t *) argp = dd->block_size;
break;
case RTEMS_BLKIO_SETBLKSIZE:
sc = rtems_bdbuf_set_block_size(dd, *(uint32_t *) argp, true);
4ef86: 4878 0001 pea 1 <ADD>
4ef8a: 206e 0010 moveal %fp@(16),%a0
4ef8e: 2f10 movel %a0@,%sp@-
4ef90: 2f2e 0008 movel %fp@(8),%sp@-
4ef94: 4eb9 0004 ed6e jsr 4ed6e <rtems_bdbuf_set_block_size>
if (sc != RTEMS_SUCCESSFUL) {
4ef9a: 4fef 000c lea %sp@(12),%sp
4ef9e: 4a80 tstl %d0
4efa0: 66d2 bnes 4ef74 <rtems_blkdev_ioctl+0xa8> <== NEVER TAKEN
int
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
4efa2: 4280 clrl %d0
4efa4: 60b2 bras 4ef58 <rtems_blkdev_ioctl+0x8c>
case RTEMS_BLKIO_PURGEDEV:
rtems_bdbuf_purge_dev(dd);
break;
case RTEMS_BLKIO_GETDEVSTATS:
rtems_bdbuf_get_device_stats(dd, (rtems_blkdev_stats *) argp);
4efa6: 2f2e 0010 movel %fp@(16),%sp@-
4efaa: 2f2e 0008 movel %fp@(8),%sp@-
4efae: 4eb9 0004 ee4e jsr 4ee4e <rtems_bdbuf_get_device_stats>
break;
4efb4: 508f addql #8,%sp
int
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
4efb6: 4280 clrl %d0
rc = -1;
break;
}
return rc;
}
4efb8: 4e5e unlk %fp
4efba: 4e75 rts
rc = -1;
}
break;
case RTEMS_BLKIO_GETDISKDEV:
*(rtems_disk_device **) argp = dd;
4efbc: 226e 0010 moveal %fp@(16),%a1
int
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
4efc0: 4280 clrl %d0
rc = -1;
}
break;
case RTEMS_BLKIO_GETDISKDEV:
*(rtems_disk_device **) argp = dd;
4efc2: 22ae 0008 movel %fp@(8),%a1@
rc = -1;
break;
}
return rc;
}
4efc6: 4e5e unlk %fp
4efc8: 4e75 rts
case RTEMS_BLKIO_GETDEVSTATS:
rtems_bdbuf_get_device_stats(dd, (rtems_blkdev_stats *) argp);
break;
case RTEMS_BLKIO_RESETDEVSTATS:
rtems_bdbuf_reset_device_stats(dd);
4efca: 2f2e 0008 movel %fp@(8),%sp@-
4efce: 4eb9 0004 ee92 jsr 4ee92 <rtems_bdbuf_reset_device_stats>
break;
4efd4: 588f addql #4,%sp
int
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
4efd6: 4280 clrl %d0
rc = -1;
break;
}
return rc;
}
4efd8: 4e5e unlk %fp
4efda: 4e75 rts
case RTEMS_BLKIO_GETDISKDEV:
*(rtems_disk_device **) argp = dd;
break;
case RTEMS_BLKIO_PURGEDEV:
rtems_bdbuf_purge_dev(dd);
4efdc: 2f2e 0008 movel %fp@(8),%sp@-
4efe0: 4eb9 0004 eb94 jsr 4eb94 <rtems_bdbuf_purge_dev>
break;
4efe6: 588f addql #4,%sp
int
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
4efe8: 4280 clrl %d0
rc = -1;
break;
}
return rc;
}
4efea: 4e5e unlk %fp
4efec: 4e75 rts
case RTEMS_BLKIO_GETMEDIABLKSIZE:
*(uint32_t *) argp = dd->media_block_size;
break;
case RTEMS_BLKIO_GETBLKSIZE:
*(uint32_t *) argp = dd->block_size;
4efee: 206e 0010 moveal %fp@(16),%a0
int
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
{
rtems_status_code sc;
int rc = 0;
4eff2: 4280 clrl %d0
case RTEMS_BLKIO_GETMEDIABLKSIZE:
*(uint32_t *) argp = dd->media_block_size;
break;
case RTEMS_BLKIO_GETBLKSIZE:
*(uint32_t *) argp = dd->block_size;
4eff4: 226e 0008 moveal %fp@(8),%a1
rc = -1;
break;
}
return rc;
}
4eff8: 4e5e unlk %fp
case RTEMS_BLKIO_GETMEDIABLKSIZE:
*(uint32_t *) argp = dd->media_block_size;
break;
case RTEMS_BLKIO_GETBLKSIZE:
*(uint32_t *) argp = dd->block_size;
4effa: 20a9 0024 movel %a1@(36),%a0@
rc = -1;
break;
}
return rc;
}
00062980 <rtems_blkstats>:
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
void rtems_blkstats(FILE *output, const char *device, bool reset)
{
62980: 4e56 ff98 linkw %fp,#-104 <== NOT EXECUTED
62984: 2f03 movel %d3,%sp@- <== NOT EXECUTED
62986: 162e 0013 moveb %fp@(19),%d3 <== NOT EXECUTED
6298a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int fd = open(device, O_RDONLY);
6298c: 42a7 clrl %sp@- <== NOT EXECUTED
6298e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
62992: 4eb9 0004 3a74 jsr 43a74 <open> <== NOT EXECUTED
if (fd >= 0) {
62998: 508f addql #8,%sp <== NOT EXECUTED
#include <unistd.h>
#include <errno.h>
void rtems_blkstats(FILE *output, const char *device, bool reset)
{
int fd = open(device, O_RDONLY);
6299a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (fd >= 0) {
6299c: 6d00 00e2 bltw 62a80 <rtems_blkstats+0x100> <== NOT EXECUTED
struct stat st;
int rv;
rv = fstat(fd, &st);
629a0: 486e ffba pea %fp@(-70) <== NOT EXECUTED
629a4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
629a6: 4eb9 0006 4484 jsr 64484 <fstat> <== NOT EXECUTED
if (rv == 0) {
629ac: 508f addql #8,%sp <== NOT EXECUTED
629ae: 4a80 tstl %d0 <== NOT EXECUTED
629b0: 6600 0100 bnew 62ab2 <rtems_blkstats+0x132> <== NOT EXECUTED
if (S_ISBLK(st.st_mode)) {
629b4: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED
629b8: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
629be: 0c80 0000 6000 cmpil #24576,%d0 <== NOT EXECUTED
629c4: 6768 beqs 62a2e <rtems_blkstats+0xae> <== NOT EXECUTED
} else {
fprintf(output, "error: get stats: %s\n", strerror(errno));
}
}
} else {
fprintf(output, "error: not a block device\n");
629c6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
629ca: 4878 001a pea 1a <OPER2+0x6> <== NOT EXECUTED
629ce: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
629d2: 4879 0009 67d9 pea 967d9 <RTEMS_BDPART_MBR_MASTER_TYPE+0x3e><== NOT EXECUTED
629d8: 4eb9 0007 936a jsr 7936a <fwrite> <== NOT EXECUTED
629de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
} else {
fprintf(output, "error: get file stats: %s\n", strerror(errno));
}
rv = close(fd);
629e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
629e4: 4eb9 0006 429c jsr 6429c <close> <== NOT EXECUTED
if (rv != 0) {
629ea: 588f addql #4,%sp <== NOT EXECUTED
629ec: 4a80 tstl %d0 <== NOT EXECUTED
629ee: 660c bnes 629fc <rtems_blkstats+0x7c> <== NOT EXECUTED
fprintf(output, "error: close device: %s\n", strerror(errno));
}
} else {
fprintf(output, "error: open device: %s\n", strerror(errno));
}
}
629f0: 242e ff90 movel %fp@(-112),%d2 <== NOT EXECUTED
629f4: 262e ff94 movel %fp@(-108),%d3 <== NOT EXECUTED
629f8: 4e5e unlk %fp <== NOT EXECUTED
629fa: 4e75 rts <== NOT EXECUTED
fprintf(output, "error: get file stats: %s\n", strerror(errno));
}
rv = close(fd);
if (rv != 0) {
fprintf(output, "error: close device: %s\n", strerror(errno));
629fc: 4eb9 0007 7798 jsr 77798 <__errno> <== NOT EXECUTED
62a02: 2040 moveal %d0,%a0 <== NOT EXECUTED
62a04: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
62a06: 4eb9 0007 d81c jsr 7d81c <strerror> <== NOT EXECUTED
62a0c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62a0e: 4879 0009 680f pea 9680f <RTEMS_BDPART_MBR_MASTER_TYPE+0x74><== NOT EXECUTED
62a14: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
62a18: 4eb9 0007 81ae jsr 781ae <fprintf> <== NOT EXECUTED
}
} else {
fprintf(output, "error: open device: %s\n", strerror(errno));
}
}
62a1e: 242e ff90 movel %fp@(-112),%d2 <== NOT EXECUTED
fprintf(output, "error: get file stats: %s\n", strerror(errno));
}
rv = close(fd);
if (rv != 0) {
fprintf(output, "error: close device: %s\n", strerror(errno));
62a22: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
} else {
fprintf(output, "error: open device: %s\n", strerror(errno));
}
}
62a26: 262e ff94 movel %fp@(-108),%d3 <== NOT EXECUTED
62a2a: 4e5e unlk %fp <== NOT EXECUTED
62a2c: 4e75 rts <== NOT EXECUTED
int rv;
rv = fstat(fd, &st);
if (rv == 0) {
if (S_ISBLK(st.st_mode)) {
if (reset) {
62a2e: 4a03 tstb %d3 <== NOT EXECUTED
62a30: 6600 00ba bnew 62aec <rtems_blkstats+0x16c> <== NOT EXECUTED
fprintf(output, "error: reset stats: %s\n", strerror(errno));
}
} else {
rtems_blkdev_stats stats;
rv = rtems_disk_fd_get_device_stats(fd, &stats);
62a34: 260e movel %fp,%d3 <== NOT EXECUTED
62a36: 0683 ffff ff9a addil #-102,%d3 <== NOT EXECUTED
static inline int rtems_disk_fd_get_device_stats(
int fd,
rtems_blkdev_stats *stats
)
{
return ioctl(fd, RTEMS_BLKIO_GETDEVSTATS, stats);
62a3c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
62a3e: 2f3c 4004 420b movel #1074020875,%sp@- <== NOT EXECUTED
62a44: 2f02 movel %d2,%sp@- <== NOT EXECUTED
62a46: 4eb9 0006 4ea0 jsr 64ea0 <ioctl> <== NOT EXECUTED
if (rv == 0) {
62a4c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
62a50: 4a80 tstl %d0 <== NOT EXECUTED
62a52: 6600 00e8 bnew 62b3c <rtems_blkstats+0x1bc> <== NOT EXECUTED
rtems_blkdev_print_stats(
62a56: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
62a5a: 4879 0007 81ae pea 781ae <fprintf> <== NOT EXECUTED
62a60: 2f03 movel %d3,%sp@- <== NOT EXECUTED
62a62: 4eb9 0006 2b78 jsr 62b78 <rtems_blkdev_print_stats> <== NOT EXECUTED
62a68: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
} else {
fprintf(output, "error: get file stats: %s\n", strerror(errno));
}
rv = close(fd);
62a6c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
62a6e: 4eb9 0006 429c jsr 6429c <close> <== NOT EXECUTED
if (rv != 0) {
62a74: 588f addql #4,%sp <== NOT EXECUTED
62a76: 4a80 tstl %d0 <== NOT EXECUTED
62a78: 6700 ff76 beqw 629f0 <rtems_blkstats+0x70> <== NOT EXECUTED
62a7c: 6000 ff7e braw 629fc <rtems_blkstats+0x7c> <== NOT EXECUTED
fprintf(output, "error: close device: %s\n", strerror(errno));
}
} else {
fprintf(output, "error: open device: %s\n", strerror(errno));
62a80: 4eb9 0007 7798 jsr 77798 <__errno> <== NOT EXECUTED
62a86: 2040 moveal %d0,%a0 <== NOT EXECUTED
62a88: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
62a8a: 4eb9 0007 d81c jsr 7d81c <strerror> <== NOT EXECUTED
62a90: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62a92: 4879 0009 6828 pea 96828 <RTEMS_BDPART_MBR_MASTER_TYPE+0x8d><== NOT EXECUTED
62a98: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
62a9c: 4eb9 0007 81ae jsr 781ae <fprintf> <== NOT EXECUTED
}
}
62aa2: 242e ff90 movel %fp@(-112),%d2 <== NOT EXECUTED
rv = close(fd);
if (rv != 0) {
fprintf(output, "error: close device: %s\n", strerror(errno));
}
} else {
fprintf(output, "error: open device: %s\n", strerror(errno));
62aa6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
}
62aaa: 262e ff94 movel %fp@(-108),%d3 <== NOT EXECUTED
62aae: 4e5e unlk %fp <== NOT EXECUTED
62ab0: 4e75 rts <== NOT EXECUTED
}
} else {
fprintf(output, "error: not a block device\n");
}
} else {
fprintf(output, "error: get file stats: %s\n", strerror(errno));
62ab2: 4eb9 0007 7798 jsr 77798 <__errno> <== NOT EXECUTED
62ab8: 2040 moveal %d0,%a0 <== NOT EXECUTED
62aba: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
62abc: 4eb9 0007 d81c jsr 7d81c <strerror> <== NOT EXECUTED
62ac2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62ac4: 4879 0009 67f4 pea 967f4 <RTEMS_BDPART_MBR_MASTER_TYPE+0x59><== NOT EXECUTED
62aca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
62ace: 4eb9 0007 81ae jsr 781ae <fprintf> <== NOT EXECUTED
62ad4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
rv = close(fd);
62ad8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
62ada: 4eb9 0006 429c jsr 6429c <close> <== NOT EXECUTED
if (rv != 0) {
62ae0: 588f addql #4,%sp <== NOT EXECUTED
62ae2: 4a80 tstl %d0 <== NOT EXECUTED
62ae4: 6700 ff0a beqw 629f0 <rtems_blkstats+0x70> <== NOT EXECUTED
62ae8: 6000 ff12 braw 629fc <rtems_blkstats+0x7c> <== NOT EXECUTED
}
static inline int rtems_disk_fd_reset_device_stats(int fd)
{
return ioctl(fd, RTEMS_BLKIO_RESETDEVSTATS);
62aec: 2f3c 2000 420c movel #536887820,%sp@- <== NOT EXECUTED
62af2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
62af4: 4eb9 0006 4ea0 jsr 64ea0 <ioctl> <== NOT EXECUTED
rv = fstat(fd, &st);
if (rv == 0) {
if (S_ISBLK(st.st_mode)) {
if (reset) {
rv = rtems_disk_fd_reset_device_stats(fd);
if (rv != 0) {
62afa: 508f addql #8,%sp <== NOT EXECUTED
62afc: 4a80 tstl %d0 <== NOT EXECUTED
62afe: 6700 fee2 beqw 629e2 <rtems_blkstats+0x62> <== NOT EXECUTED
fprintf(output, "error: reset stats: %s\n", strerror(errno));
62b02: 4eb9 0007 7798 jsr 77798 <__errno> <== NOT EXECUTED
62b08: 2040 moveal %d0,%a0 <== NOT EXECUTED
62b0a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
62b0c: 4eb9 0007 d81c jsr 7d81c <strerror> <== NOT EXECUTED
62b12: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62b14: 4879 0009 67ab pea 967ab <RTEMS_BDPART_MBR_MASTER_TYPE+0x10><== NOT EXECUTED
62b1a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
62b1e: 4eb9 0007 81ae jsr 781ae <fprintf> <== NOT EXECUTED
62b24: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
} else {
fprintf(output, "error: get file stats: %s\n", strerror(errno));
}
rv = close(fd);
62b28: 2f02 movel %d2,%sp@- <== NOT EXECUTED
62b2a: 4eb9 0006 429c jsr 6429c <close> <== NOT EXECUTED
if (rv != 0) {
62b30: 588f addql #4,%sp <== NOT EXECUTED
62b32: 4a80 tstl %d0 <== NOT EXECUTED
62b34: 6700 feba beqw 629f0 <rtems_blkstats+0x70> <== NOT EXECUTED
62b38: 6000 fec2 braw 629fc <rtems_blkstats+0x7c> <== NOT EXECUTED
&stats,
(rtems_printk_plugin_t) fprintf,
output
);
} else {
fprintf(output, "error: get stats: %s\n", strerror(errno));
62b3c: 4eb9 0007 7798 jsr 77798 <__errno> <== NOT EXECUTED
62b42: 2040 moveal %d0,%a0 <== NOT EXECUTED
62b44: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
62b46: 4eb9 0007 d81c jsr 7d81c <strerror> <== NOT EXECUTED
62b4c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62b4e: 4879 0009 67c3 pea 967c3 <RTEMS_BDPART_MBR_MASTER_TYPE+0x28><== NOT EXECUTED
62b54: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
62b58: 4eb9 0007 81ae jsr 781ae <fprintf> <== NOT EXECUTED
62b5e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
} else {
fprintf(output, "error: get file stats: %s\n", strerror(errno));
}
rv = close(fd);
62b62: 2f02 movel %d2,%sp@- <== NOT EXECUTED
62b64: 4eb9 0006 429c jsr 6429c <close> <== NOT EXECUTED
if (rv != 0) {
62b6a: 588f addql #4,%sp <== NOT EXECUTED
62b6c: 4a80 tstl %d0 <== NOT EXECUTED
62b6e: 6700 fe80 beqw 629f0 <rtems_blkstats+0x70> <== NOT EXECUTED
62b72: 6000 fe88 braw 629fc <rtems_blkstats+0x7c> <== NOT EXECUTED
...
00042b48 <rtems_bsp_cmdline_get_param>:
const char *rtems_bsp_cmdline_get_param(
const char *name,
char *value,
size_t length
)
{
42b48: 4e56 ffe8 linkw %fp,#-24
42b4c: 202e 0008 movel %fp@(8),%d0
42b50: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
42b54: 286e 000c moveal %fp@(12),%a4
42b58: 262e 0010 movel %fp@(16),%d3
const char *p;
if ( !name )
42b5c: 4a80 tstl %d0
42b5e: 676c beqs 42bcc <rtems_bsp_cmdline_get_param+0x84>
return NULL;
if ( !value )
42b60: 4a8c tstl %a4
42b62: 6768 beqs 42bcc <rtems_bsp_cmdline_get_param+0x84>
return NULL;
if ( !length )
42b64: 4a83 tstl %d3
42b66: 6764 beqs 42bcc <rtems_bsp_cmdline_get_param+0x84>
return NULL;
value[0] = '\0';
42b68: 4214 clrb %a4@
p = rtems_bsp_cmdline_get_param_raw( name );
42b6a: 2f00 movel %d0,%sp@-
42b6c: 4eb9 0004 2bdc jsr 42bdc <rtems_bsp_cmdline_get_param_raw>
if ( !p )
42b72: 588f addql #4,%sp
42b74: 4a80 tstl %d0
42b76: 6754 beqs 42bcc <rtems_bsp_cmdline_get_param+0x84>
int i;
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
42b78: 2040 moveal %d0,%a0
42b7a: 1210 moveb %a0@,%d1
42b7c: 673e beqs 42bbc <rtems_bsp_cmdline_get_param+0x74><== NEVER TAKEN
42b7e: 7401 moveq #1,%d2
42b80: b483 cmpl %d3,%d2
42b82: 6738 beqs 42bbc <rtems_bsp_cmdline_get_param+0x74><== NEVER TAKEN
value[i] = '\0';
}
}
const char *rtems_bsp_cmdline_get_param(
42b84: 2440 moveal %d0,%a2
42b86: 47ec 0001 lea %a4@(1),%a3
42b8a: 528a addql #1,%a2
42b8c: 5383 subql #1,%d3
42b8e: 91c8 subal %a0,%a0
int i;
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
42b90: 93c9 subal %a1,%a1
value[i] = '\0';
}
}
const char *rtems_bsp_cmdline_get_param(
42b92: 4280 clrl %d0
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
if ( *p == '\"' ) {
42b94: 7822 moveq #34,%d4
42b96: 1401 moveb %d1,%d2
42b98: 49c2 extbl %d2
42b9a: b882 cmpl %d2,%d4
42b9c: 672a beqs 42bc8 <rtems_bsp_cmdline_get_param+0x80>
quotes++;
} else if ( ((quotes % 2) == 0) && *p == ' ' )
42b9e: 0800 0000 btst #0,%d0
42ba2: 6606 bnes 42baa <rtems_bsp_cmdline_get_param+0x62>
42ba4: 7820 moveq #32,%d4
42ba6: b882 cmpl %d2,%d4
42ba8: 6712 beqs 42bbc <rtems_bsp_cmdline_get_param+0x74>
break;
value[i++] = *p++;
42baa: 5288 addql #1,%a0
42bac: 1981 9800 moveb %d1,%a4@(00000000,%a1:l)
value[i] = '\0';
42bb0: 421b clrb %a3@+
42bb2: 2248 moveal %a0,%a1
int i;
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
42bb4: 121a moveb %a2@+,%d1
42bb6: 6704 beqs 42bbc <rtems_bsp_cmdline_get_param+0x74>
42bb8: b688 cmpl %a0,%d3
42bba: 66d8 bnes 42b94 <rtems_bsp_cmdline_get_param+0x4c>
return NULL;
copy_string( p, value, length );
return value;
}
42bbc: 200c movel %a4,%d0
42bbe: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
42bc4: 4e5e unlk %fp
42bc6: 4e75 rts
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
if ( *p == '\"' ) {
quotes++;
42bc8: 5280 addql #1,%d0
42bca: 60de bras 42baa <rtems_bsp_cmdline_get_param+0x62>
)
{
const char *p;
if ( !name )
return NULL;
42bcc: 99cc subal %a4,%a4
return NULL;
copy_string( p, value, length );
return value;
}
42bce: 200c movel %a4,%d0
42bd0: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
42bd6: 4e5e unlk %fp
...
00042c04 <rtems_bsp_cmdline_get_param_rhs>:
const char *rtems_bsp_cmdline_get_param_rhs(
const char *name,
char *value,
size_t length
)
{
42c04: 4e56 fff4 linkw %fp,#-12
42c08: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
const char *p;
const char *rhs;
char *d;
p = rtems_bsp_cmdline_get_param( name, value, length );
42c0c: 2f2e 0010 movel %fp@(16),%sp@-
const char *rtems_bsp_cmdline_get_param_rhs(
const char *name,
char *value,
size_t length
)
{
42c10: 266e 000c moveal %fp@(12),%a3
42c14: 242e 0008 movel %fp@(8),%d2
const char *p;
const char *rhs;
char *d;
p = rtems_bsp_cmdline_get_param( name, value, length );
42c18: 2f0b movel %a3,%sp@-
42c1a: 2f02 movel %d2,%sp@-
42c1c: 4eb9 0004 2b48 jsr 42b48 <rtems_bsp_cmdline_get_param>
if ( !p )
42c22: 4fef 000c lea %sp@(12),%sp
{
const char *p;
const char *rhs;
char *d;
p = rtems_bsp_cmdline_get_param( name, value, length );
42c26: 2440 moveal %d0,%a2
if ( !p )
42c28: 4a80 tstl %d0
42c2a: 6762 beqs 42c8e <rtems_bsp_cmdline_get_param_rhs+0x8a>
return NULL;
rhs = &p[strlen(name)];
42c2c: 2f02 movel %d2,%sp@-
42c2e: 4eb9 0004 f9a8 jsr 4f9a8 <strlen>
42c34: 588f addql #4,%sp
if ( *rhs != '=' )
42c36: 723d moveq #61,%d1
p = rtems_bsp_cmdline_get_param( name, value, length );
if ( !p )
return NULL;
rhs = &p[strlen(name)];
42c38: 41f2 0800 lea %a2@(00000000,%d0:l),%a0
if ( *rhs != '=' )
42c3c: 1010 moveb %a0@,%d0
42c3e: 49c0 extbl %d0
42c40: b280 cmpl %d0,%d1
42c42: 664a bnes 42c8e <rtems_bsp_cmdline_get_param_rhs+0x8a>
return NULL;
rhs++;
if ( *rhs == '\"' )
42c44: 123c 0022 moveb #34,%d1
42c48: 1428 0001 moveb %a0@(1),%d2
42c4c: 1002 moveb %d2,%d0
42c4e: 49c0 extbl %d0
42c50: b280 cmpl %d0,%d1
42c52: 6748 beqs 42c9c <rtems_bsp_cmdline_get_param_rhs+0x98>
rhs = &p[strlen(name)];
if ( *rhs != '=' )
return NULL;
rhs++;
42c54: 43e8 0001 lea %a0@(1),%a1
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
42c58: 4a02 tstb %d2
42c5a: 674a beqs 42ca6 <rtems_bsp_cmdline_get_param_rhs+0xa2>
42c5c: 204b moveal %a3,%a0
#include <string.h>
#include <rtems/bspcmdline.h>
const char *rtems_bsp_cmdline_get_param_rhs(
42c5e: 5289 addql #1,%a1
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
*d++ = *rhs++;
42c60: 10c2 moveb %d2,%a0@+
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
42c62: 1219 moveb %a1@+,%d1
*d++ = *rhs++;
42c64: 2448 moveal %a0,%a2
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
42c66: 670a beqs 42c72 <rtems_bsp_cmdline_get_param_rhs+0x6e><== NEVER TAKEN
42c68: 1401 moveb %d1,%d2
*d++ = *rhs++;
42c6a: 10c2 moveb %d2,%a0@+
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
42c6c: 1219 moveb %a1@+,%d1
*d++ = *rhs++;
42c6e: 2448 moveal %a0,%a2
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
42c70: 66f6 bnes 42c68 <rtems_bsp_cmdline_get_param_rhs+0x64>
*d++ = *rhs++;
if ( *(d-1) == '\"' )
42c72: 49c2 extbl %d2
42c74: 7022 moveq #34,%d0
42c76: b082 cmpl %d2,%d0
42c78: 670e beqs 42c88 <rtems_bsp_cmdline_get_param_rhs+0x84>
d--;
*d = '\0';
42c7a: 4212 clrb %a2@
return value;
}
42c7c: 200b movel %a3,%d0
42c7e: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
42c84: 4e5e unlk %fp
42c86: 4e75 rts
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
*d++ = *rhs++;
if ( *(d-1) == '\"' )
d--;
42c88: 538a subql #1,%a2
*d = '\0';
42c8a: 4212 clrb %a2@
42c8c: 60ee bras 42c7c <rtems_bsp_cmdline_get_param_rhs+0x78>
const char *rhs;
char *d;
p = rtems_bsp_cmdline_get_param( name, value, length );
if ( !p )
return NULL;
42c8e: 97cb subal %a3,%a3
if ( *(d-1) == '\"' )
d--;
*d = '\0';
return value;
}
42c90: 200b movel %a3,%d0
42c92: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
42c98: 4e5e unlk %fp
42c9a: 4e75 rts
if ( *rhs != '=' )
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
42c9c: 43e8 0002 lea %a0@(2),%a1
42ca0: 1428 0002 moveb %a0@(2),%d2
42ca4: 60b2 bras 42c58 <rtems_bsp_cmdline_get_param_rhs+0x54>
for ( d=value ; *rhs ; )
42ca6: 244b moveal %a3,%a2
*d++ = *rhs++;
if ( *(d-1) == '\"' )
42ca8: 7022 moveq #34,%d0
42caa: 142b ffff moveb %a3@(-1),%d2
42cae: 49c2 extbl %d2
42cb0: b082 cmpl %d2,%d0
42cb2: 66c6 bnes 42c7a <rtems_bsp_cmdline_get_param_rhs+0x76><== ALWAYS TAKEN
42cb4: 60d2 bras 42c88 <rtems_bsp_cmdline_get_param_rhs+0x84><== NOT EXECUTED
...
00047ee0 <rtems_chain_append_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
47ee0: 4e56 0000 linkw %fp,#0
47ee4: 2f03 movel %d3,%sp@-
47ee6: 262e 0014 movel %fp@(20),%d3
47eea: 2f02 movel %d2,%sp@-
RTEMS_INLINE_ROUTINE bool rtems_chain_append_with_empty_check(
rtems_chain_control *chain,
rtems_chain_node *node
)
{
return _Chain_Append_with_empty_check( chain, node );
47eec: 2f2e 000c movel %fp@(12),%sp@-
47ef0: 2f2e 0008 movel %fp@(8),%sp@-
47ef4: 242e 0010 movel %fp@(16),%d2
47ef8: 4eb9 0004 8498 jsr 48498 <_Chain_Append_with_empty_check>
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_append_with_empty_check( chain, node );
if ( was_empty ) {
47efe: 508f addql #8,%sp
47f00: 4a00 tstb %d0
47f02: 660e bnes 47f12 <rtems_chain_append_with_notification+0x32>
sc = rtems_event_send( task, events );
}
return sc;
}
47f04: 242e fff8 movel %fp@(-8),%d2
47f08: 4280 clrl %d0
47f0a: 262e fffc movel %fp@(-4),%d3
47f0e: 4e5e unlk %fp
47f10: 4e75 rts
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_append_with_empty_check( chain, node );
if ( was_empty ) {
sc = rtems_event_send( task, events );
47f12: 2d43 000c movel %d3,%fp@(12)
}
return sc;
}
47f16: 262e fffc movel %fp@(-4),%d3
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_append_with_empty_check( chain, node );
if ( was_empty ) {
sc = rtems_event_send( task, events );
47f1a: 2d42 0008 movel %d2,%fp@(8)
}
return sc;
}
47f1e: 242e fff8 movel %fp@(-8),%d2
47f22: 4e5e unlk %fp
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_append_with_empty_check( chain, node );
if ( was_empty ) {
sc = rtems_event_send( task, events );
47f24: 4ef9 0004 73ac jmp 473ac <rtems_event_send>
...
00047f2c <rtems_chain_get_with_notification>:
rtems_chain_control *chain,
rtems_id task,
rtems_event_set events,
rtems_chain_node **node
)
{
47f2c: 4e56 0000 linkw %fp,#0
47f30: 2f03 movel %d3,%sp@-
47f32: 262e 0010 movel %fp@(16),%d3
47f36: 2f02 movel %d2,%sp@-
RTEMS_INLINE_ROUTINE bool rtems_chain_get_with_empty_check(
rtems_chain_control *chain,
rtems_chain_node **node
)
{
return _Chain_Get_with_empty_check( chain, node );
47f38: 2f2e 0014 movel %fp@(20),%sp@-
47f3c: 2f2e 0008 movel %fp@(8),%sp@-
47f40: 242e 000c movel %fp@(12),%d2
47f44: 4eb9 0004 8510 jsr 48510 <_Chain_Get_with_empty_check>
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool is_empty = rtems_chain_get_with_empty_check( chain, node );
if ( is_empty ) {
47f4a: 508f addql #8,%sp
47f4c: 4a00 tstb %d0
47f4e: 660e bnes 47f5e <rtems_chain_get_with_notification+0x32>
sc = rtems_event_send( task, events );
}
return sc;
}
47f50: 242e fff8 movel %fp@(-8),%d2
47f54: 4280 clrl %d0
47f56: 262e fffc movel %fp@(-4),%d3
47f5a: 4e5e unlk %fp
47f5c: 4e75 rts
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool is_empty = rtems_chain_get_with_empty_check( chain, node );
if ( is_empty ) {
sc = rtems_event_send( task, events );
47f5e: 2d43 000c movel %d3,%fp@(12)
}
return sc;
}
47f62: 262e fffc movel %fp@(-4),%d3
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool is_empty = rtems_chain_get_with_empty_check( chain, node );
if ( is_empty ) {
sc = rtems_event_send( task, events );
47f66: 2d42 0008 movel %d2,%fp@(8)
}
return sc;
}
47f6a: 242e fff8 movel %fp@(-8),%d2
47f6e: 4e5e unlk %fp
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool is_empty = rtems_chain_get_with_empty_check( chain, node );
if ( is_empty ) {
sc = rtems_event_send( task, events );
47f70: 4ef9 0004 73ac jmp 473ac <rtems_event_send>
...
00047f78 <rtems_chain_get_with_wait>:
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
47f78: 4e56 ffe0 linkw %fp,#-32
47f7c: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@
while (
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
) {
rtems_event_set out;
sc = rtems_event_receive(
47f80: 2c0e movel %fp,%d6
47f82: 45f9 0004 855c lea 4855c <_Chain_Get>,%a2
47f88: 5986 subql #4,%d6
47f8a: 47f9 0004 7200 lea 47200 <rtems_event_receive>,%a3
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
47f90: 262e 0008 movel %fp@(8),%d3
47f94: 2a2e 000c movel %fp@(12),%d5
47f98: 282e 0010 movel %fp@(16),%d4
*/
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(
rtems_chain_control *the_chain
)
{
return _Chain_Get( the_chain );
47f9c: 2f03 movel %d3,%sp@-
47f9e: 4e92 jsr %a2@
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
47fa0: 588f addql #4,%sp
47fa2: 2400 movel %d0,%d2
47fa4: 6622 bnes 47fc8 <rtems_chain_get_with_wait+0x50>
) {
rtems_event_set out;
sc = rtems_event_receive(
47fa6: 2f06 movel %d6,%sp@-
47fa8: 2f04 movel %d4,%sp@-
47faa: 42a7 clrl %sp@-
47fac: 2f05 movel %d5,%sp@-
47fae: 4e93 jsr %a3@
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
47fb0: 4fef 0010 lea %sp@(16),%sp
47fb4: 4a80 tstl %d0
47fb6: 67e4 beqs 47f9c <rtems_chain_get_with_wait+0x24> <== NEVER TAKEN
timeout,
&out
);
}
*node_ptr = node;
47fb8: 206e 0014 moveal %fp@(20),%a0
47fbc: 2082 movel %d2,%a0@
return sc;
}
47fbe: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3
47fc4: 4e5e unlk %fp
47fc6: 4e75 rts
timeout,
&out
);
}
*node_ptr = node;
47fc8: 206e 0014 moveal %fp@(20),%a0
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
47fcc: 4280 clrl %d0
timeout,
&out
);
}
*node_ptr = node;
47fce: 2082 movel %d2,%a0@
return sc;
}
47fd0: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3
47fd6: 4e5e unlk %fp
...
00047fdc <rtems_chain_prepend_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
47fdc: 4e56 0000 linkw %fp,#0
47fe0: 2f03 movel %d3,%sp@-
47fe2: 262e 0014 movel %fp@(20),%d3
47fe6: 2f02 movel %d2,%sp@-
RTEMS_INLINE_ROUTINE bool rtems_chain_prepend_with_empty_check(
rtems_chain_control *chain,
rtems_chain_node *node
)
{
return _Chain_Prepend_with_empty_check( chain, node );
47fe8: 2f2e 000c movel %fp@(12),%sp@-
47fec: 2f2e 0008 movel %fp@(8),%sp@-
47ff0: 242e 0010 movel %fp@(16),%d2
47ff4: 4eb9 0004 8630 jsr 48630 <_Chain_Prepend_with_empty_check>
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_prepend_with_empty_check( chain, node );
if (was_empty) {
47ffa: 508f addql #8,%sp
47ffc: 4a00 tstb %d0
47ffe: 660e bnes 4800e <rtems_chain_prepend_with_notification+0x32>
sc = rtems_event_send( task, events );
}
return sc;
}
48000: 242e fff8 movel %fp@(-8),%d2
48004: 4280 clrl %d0
48006: 262e fffc movel %fp@(-4),%d3
4800a: 4e5e unlk %fp
4800c: 4e75 rts
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_prepend_with_empty_check( chain, node );
if (was_empty) {
sc = rtems_event_send( task, events );
4800e: 2d43 000c movel %d3,%fp@(12)
}
return sc;
}
48012: 262e fffc movel %fp@(-4),%d3
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_prepend_with_empty_check( chain, node );
if (was_empty) {
sc = rtems_event_send( task, events );
48016: 2d42 0008 movel %d2,%fp@(8)
}
return sc;
}
4801a: 242e fff8 movel %fp@(-8),%d2
4801e: 4e5e unlk %fp
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_prepend_with_empty_check( chain, node );
if (was_empty) {
sc = rtems_event_send( task, events );
48020: 4ef9 0004 73ac jmp 473ac <rtems_event_send>
...
0004e0c0 <rtems_deviceio_errno>:
};
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
4e0c0: 4280 clrl %d0
[RTEMS_IO_ERROR] = EIO,
[RTEMS_PROXY_BLOCKING] = EIO
};
int rtems_deviceio_errno(rtems_status_code sc)
{
4e0c2: 4e56 0000 linkw %fp,#0
4e0c6: 2f02 movel %d2,%sp@-
if (sc == RTEMS_SUCCESSFUL) {
4e0c8: 4aae 0008 tstl %fp@(8)
4e0cc: 6608 bnes 4e0d6 <rtems_deviceio_errno+0x16>
errno = eno;
return -1;
}
}
4e0ce: 242e fffc movel %fp@(-4),%d2
4e0d2: 4e5e unlk %fp
4e0d4: 4e75 rts
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
4e0d6: 103c 001c moveb #28,%d0
4e0da: b0ae 0008 cmpl %fp@(8),%d0
4e0de: 6522 bcss 4e102 <rtems_deviceio_errno+0x42> <== NEVER TAKEN
eno = status_code_to_errno [sc];
4e0e0: 202e 0008 movel %fp@(8),%d0
4e0e4: 41f9 0005 d85c lea 5d85c <status_code_to_errno>,%a0
4e0ea: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2
}
errno = eno;
4e0ee: 4eb9 0004 e144 jsr 4e144 <__errno>
4e0f4: 2040 moveal %d0,%a0
return -1;
4e0f6: 70ff moveq #-1,%d0
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e0f8: 2082 movel %d2,%a0@
return -1;
}
}
4e0fa: 242e fffc movel %fp@(-4),%d2
4e0fe: 4e5e unlk %fp
4e100: 4e75 rts
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e102: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
4e108: 7416 moveq #22,%d2 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e10a: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4e10c: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e10e: 2082 movel %d2,%a0@ <== NOT EXECUTED
4e110: 60e8 bras 4e0fa <rtems_deviceio_errno+0x3a> <== NOT EXECUTED
...
0004362e <rtems_disk_create_log>:
dev_t phys,
rtems_blkdev_bnum block_begin,
rtems_blkdev_bnum block_count,
const char *name
)
{
4362e: 4e56 fff8 linkw %fp,#-8
43632: 2f0a movel %a2,%sp@-
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_disk_device *phys_dd = NULL;
rtems_disk_device *dd = NULL;
43634: 42ae fff8 clrl %fp@(-8)
dev_t phys,
rtems_blkdev_bnum block_begin,
rtems_blkdev_bnum block_count,
const char *name
)
{
43638: 2f02 movel %d2,%sp@-
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_disk_device *phys_dd = NULL;
rtems_disk_device *dd = NULL;
char *alloc_name = NULL;
4363a: 42ae fffc clrl %fp@(-4)
sc = disk_lock();
4363e: 4eba fc96 jsr %pc@(432d6 <disk_lock>)
43642: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL) {
43644: 670e beqs 43654 <rtems_disk_create_log+0x26> <== ALWAYS TAKEN
}
disk_unlock();
return RTEMS_SUCCESSFUL;
}
43646: 2002 movel %d2,%d0 <== NOT EXECUTED
43648: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
4364c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
43650: 4e5e unlk %fp <== NOT EXECUTED
43652: 4e75 rts <== NOT EXECUTED
sc = disk_lock();
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
phys_dd = get_disk_entry(phys, true);
43654: 4878 0001 pea 1 <ADD>
43658: 2f2e 0014 movel %fp@(20),%sp@-
4365c: 2f2e 0010 movel %fp@(16),%sp@-
43660: 4eba fbc2 jsr %pc@(43224 <get_disk_entry>)
if (phys_dd == NULL) {
43664: 4fef 000c lea %sp@(12),%sp
sc = disk_lock();
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
phys_dd = get_disk_entry(phys, true);
43668: 2440 moveal %d0,%a2
if (phys_dd == NULL) {
4366a: 4a80 tstl %d0
4366c: 6700 009a beqw 43708 <rtems_disk_create_log+0xda>
disk_unlock();
return RTEMS_INVALID_ID;
}
sc = create_disk(dev, name, &dd, &alloc_name);
43670: 486e fffc pea %fp@(-4)
43674: 486e fff8 pea %fp@(-8)
43678: 2f2e 0020 movel %fp@(32),%sp@-
4367c: 2f2e 000c movel %fp@(12),%sp@-
43680: 2f2e 0008 movel %fp@(8),%sp@-
43684: 4eba fcac jsr %pc@(43332 <create_disk>)
if (sc != RTEMS_SUCCESSFUL) {
43688: 4fef 0014 lea %sp@(20),%sp
disk_unlock();
return RTEMS_INVALID_ID;
}
sc = create_disk(dev, name, &dd, &alloc_name);
4368c: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL) {
4368e: 6666 bnes 436f6 <rtems_disk_create_log+0xc8>
disk_unlock();
return sc;
}
sc = rtems_disk_init_log(
43690: 2f2e 001c movel %fp@(28),%sp@-
43694: 2f2e 0018 movel %fp@(24),%sp@-
43698: 2f0a movel %a2,%sp@-
4369a: 2f2e fff8 movel %fp@(-8),%sp@-
4369e: 4eb9 0004 f418 jsr 4f418 <rtems_disk_init_log>
phys_dd,
block_begin,
block_count
);
dd->dev = dev;
436a4: 206e fff8 moveal %fp@(-8),%a0
disk_unlock();
return sc;
}
sc = rtems_disk_init_log(
436a8: 2400 movel %d0,%d2
);
dd->dev = dev;
dd->name = alloc_name;
++phys_dd->uses;
436aa: 52aa 0014 addql #1,%a2@(20)
if (sc != RTEMS_SUCCESSFUL) {
436ae: 4fef 0010 lea %sp@(16),%sp
block_begin,
block_count
);
dd->dev = dev;
dd->name = alloc_name;
436b2: 216e fffc 0010 movel %fp@(-4),%a0@(16)
phys_dd,
block_begin,
block_count
);
dd->dev = dev;
436b8: 202e 0008 movel %fp@(8),%d0
436bc: 222e 000c movel %fp@(12),%d1
436c0: 2080 movel %d0,%a0@
436c2: 2141 0004 movel %d1,%a0@(4)
dd->name = alloc_name;
++phys_dd->uses;
if (sc != RTEMS_SUCCESSFUL) {
436c6: 4a82 tstl %d2
436c8: 672c beqs 436f6 <rtems_disk_create_log+0xc8>
dd->ioctl = null_handler;
436ca: 223c 0004 327c movel #275068,%d1
436d0: 2141 0038 movel %d1,%a0@(56)
rtems_disk_delete(dev);
436d4: 2f2e 000c movel %fp@(12),%sp@-
436d8: 2f2e 0008 movel %fp@(8),%sp@-
436dc: 4eb9 0004 34d2 jsr 434d2 <rtems_disk_delete>
disk_unlock();
436e2: 4eba fc20 jsr %pc@(43304 <disk_unlock>)
}
disk_unlock();
return RTEMS_SUCCESSFUL;
}
436e6: 246e fff4 moveal %fp@(-12),%a2
436ea: 2002 movel %d2,%d0
++phys_dd->uses;
if (sc != RTEMS_SUCCESSFUL) {
dd->ioctl = null_handler;
rtems_disk_delete(dev);
disk_unlock();
436ec: 508f addql #8,%sp
}
disk_unlock();
return RTEMS_SUCCESSFUL;
}
436ee: 242e fff0 movel %fp@(-16),%d2
436f2: 4e5e unlk %fp
436f4: 4e75 rts
disk_unlock();
return sc;
}
disk_unlock();
436f6: 4eba fc0c jsr %pc@(43304 <disk_unlock>)
return RTEMS_SUCCESSFUL;
}
436fa: 246e fff4 moveal %fp@(-12),%a2
436fe: 2002 movel %d2,%d0
43700: 242e fff0 movel %fp@(-16),%d2
43704: 4e5e unlk %fp
43706: 4e75 rts
return sc;
}
phys_dd = get_disk_entry(phys, true);
if (phys_dd == NULL) {
disk_unlock();
43708: 4eba fbfa jsr %pc@(43304 <disk_unlock>)
return RTEMS_INVALID_ID;
4370c: 143c 0004 moveb #4,%d2
}
disk_unlock();
return RTEMS_SUCCESSFUL;
}
43710: 2002 movel %d2,%d0
43712: 242e fff0 movel %fp@(-16),%d2
43716: 246e fff4 moveal %fp@(-12),%a2
4371a: 4e5e unlk %fp <== NOT EXECUTED
0004371e <rtems_disk_create_phys>:
rtems_blkdev_bnum block_count,
rtems_block_device_ioctl handler,
void *driver_data,
const char *name
)
{
4371e: 4e56 fff8 linkw %fp,#-8
43722: 2f02 movel %d2,%sp@-
rtems_disk_device *dd = NULL;
43724: 42ae fff8 clrl %fp@(-8)
rtems_status_code sc = RTEMS_SUCCESSFUL;
char *alloc_name = NULL;
43728: 42ae fffc clrl %fp@(-4)
if (handler == NULL) {
4372c: 4aae 0018 tstl %fp@(24)
43730: 677c beqs 437ae <rtems_disk_create_phys+0x90>
return RTEMS_INVALID_ADDRESS;
}
sc = disk_lock();
43732: 4eba fba2 jsr %pc@(432d6 <disk_lock>)
43736: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL) {
43738: 670a beqs 43744 <rtems_disk_create_phys+0x26> <== ALWAYS TAKEN
}
disk_unlock();
return RTEMS_SUCCESSFUL;
}
4373a: 2002 movel %d2,%d0 <== NOT EXECUTED
4373c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
43740: 4e5e unlk %fp <== NOT EXECUTED
43742: 4e75 rts <== NOT EXECUTED
sc = disk_lock();
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
sc = create_disk(dev, name, &dd, &alloc_name);
43744: 486e fffc pea %fp@(-4)
43748: 486e fff8 pea %fp@(-8)
4374c: 2f2e 0020 movel %fp@(32),%sp@-
43750: 2f2e 000c movel %fp@(12),%sp@-
43754: 2f2e 0008 movel %fp@(8),%sp@-
43758: 4eba fbd8 jsr %pc@(43332 <create_disk>)
if (sc != RTEMS_SUCCESSFUL) {
4375c: 4fef 0014 lea %sp@(20),%sp
sc = disk_lock();
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
sc = create_disk(dev, name, &dd, &alloc_name);
43760: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL) {
43762: 663c bnes 437a0 <rtems_disk_create_phys+0x82>
disk_unlock();
return sc;
}
sc = rtems_disk_init_phys(
43764: 2f2e 001c movel %fp@(28),%sp@-
43768: 2f2e 0018 movel %fp@(24),%sp@-
4376c: 2f2e 0014 movel %fp@(20),%sp@-
43770: 2f2e 0010 movel %fp@(16),%sp@-
43774: 2f2e fff8 movel %fp@(-8),%sp@-
43778: 4eb9 0004 f38c jsr 4f38c <rtems_disk_init_phys>
block_count,
handler,
driver_data
);
dd->dev = dev;
4377e: 206e fff8 moveal %fp@(-8),%a0
disk_unlock();
return sc;
}
sc = rtems_disk_init_phys(
43782: 2400 movel %d0,%d2
);
dd->dev = dev;
dd->name = alloc_name;
if (sc != RTEMS_SUCCESSFUL) {
43784: 4fef 0014 lea %sp@(20),%sp
block_count,
handler,
driver_data
);
dd->dev = dev;
43788: 202e 0008 movel %fp@(8),%d0
4378c: 222e 000c movel %fp@(12),%d1
dd->name = alloc_name;
43790: 216e fffc 0010 movel %fp@(-4),%a0@(16)
block_count,
handler,
driver_data
);
dd->dev = dev;
43796: 2080 movel %d0,%a0@
43798: 2141 0004 movel %d1,%a0@(4)
dd->name = alloc_name;
if (sc != RTEMS_SUCCESSFUL) {
4379c: 4a82 tstl %d2
4379e: 661a bnes 437ba <rtems_disk_create_phys+0x9c>
disk_unlock();
return sc;
}
disk_unlock();
437a0: 4eba fb62 jsr %pc@(43304 <disk_unlock>)
return RTEMS_SUCCESSFUL;
}
437a4: 2002 movel %d2,%d0
437a6: 242e fff4 movel %fp@(-12),%d2
437aa: 4e5e unlk %fp
437ac: 4e75 rts
rtems_disk_device *dd = NULL;
rtems_status_code sc = RTEMS_SUCCESSFUL;
char *alloc_name = NULL;
if (handler == NULL) {
return RTEMS_INVALID_ADDRESS;
437ae: 7409 moveq #9,%d2
}
disk_unlock();
return RTEMS_SUCCESSFUL;
}
437b0: 2002 movel %d2,%d0
437b2: 242e fff4 movel %fp@(-12),%d2
437b6: 4e5e unlk %fp
437b8: 4e75 rts
dd->dev = dev;
dd->name = alloc_name;
if (sc != RTEMS_SUCCESSFUL) {
dd->ioctl = null_handler;
437ba: 223c 0004 327c movel #275068,%d1
437c0: 2141 0038 movel %d1,%a0@(56)
rtems_disk_delete(dev);
437c4: 2f2e 000c movel %fp@(12),%sp@-
437c8: 2f2e 0008 movel %fp@(8),%sp@-
437cc: 4eb9 0004 34d2 jsr 434d2 <rtems_disk_delete>
disk_unlock();
437d2: 4eba fb30 jsr %pc@(43304 <disk_unlock>)
437d6: 508f addql #8,%sp
}
disk_unlock();
return RTEMS_SUCCESSFUL;
}
437d8: 2002 movel %d2,%d0
437da: 242e fff4 movel %fp@(-12),%d2
437de: 4e5e unlk %fp <== NOT EXECUTED
000434d2 <rtems_disk_delete>:
}
}
rtems_status_code
rtems_disk_delete(dev_t dev)
{
434d2: 4e56 ffd8 linkw %fp,#-40
434d6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_disk_device *dd = NULL;
sc = disk_lock();
434da: 4eba fdfa jsr %pc@(432d6 <disk_lock>)
434de: 2a00 movel %d0,%d5
if (sc != RTEMS_SUCCESSFUL) {
434e0: 670c beqs 434ee <rtems_disk_delete+0x1c> <== ALWAYS TAKEN
rtems_disk_cleanup(dd);
disk_unlock();
return RTEMS_SUCCESSFUL;
}
434e2: 2005 movel %d5,%d0 <== NOT EXECUTED
434e4: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
434ea: 4e5e unlk %fp <== NOT EXECUTED
434ec: 4e75 rts <== NOT EXECUTED
sc = disk_lock();
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
dd = get_disk_entry(dev, true);
434ee: 4878 0001 pea 1 <ADD>
434f2: 2f2e 000c movel %fp@(12),%sp@-
434f6: 2f2e 0008 movel %fp@(8),%sp@-
434fa: 4eba fd28 jsr %pc@(43224 <get_disk_entry>)
if (dd == NULL) {
434fe: 4fef 000c lea %sp@(12),%sp
sc = disk_lock();
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
dd = get_disk_entry(dev, true);
43502: 2040 moveal %d0,%a0
if (dd == NULL) {
43504: 4a80 tstl %d0
43506: 6700 00ec beqw 435f4 <rtems_disk_delete+0x122>
}
static void
rtems_disk_cleanup(rtems_disk_device *disk_to_remove)
{
rtems_disk_device *const physical_disk = disk_to_remove->phys_dev;
4350a: 2a68 0008 moveal %a0@(8),%a5
disk_unlock();
return RTEMS_INVALID_ID;
}
dd->deleted = true;
4350e: 7001 moveq #1,%d0
43510: 1140 0040 moveb %d0,%a0@(64)
{
rtems_disk_device *const physical_disk = disk_to_remove->phys_dev;
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
if (physical_disk->deleted) {
43514: 4a2d 0040 tstb %a5@(64)
43518: 6778 beqs 43592 <rtems_disk_delete+0xc0>
dev_t dev = physical_disk->dev;
unsigned deleted_count = 0;
for (major = 0; major < disktab_size; ++major) {
4351a: 4286 clrl %d6
rtems_disk_device *const physical_disk = disk_to_remove->phys_dev;
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
if (physical_disk->deleted) {
dev_t dev = physical_disk->dev;
4351c: 2415 movel %a5@,%d2
4351e: 262d 0004 movel %a5@(4),%d3
unsigned deleted_count = 0;
for (major = 0; major < disktab_size; ++major) {
43522: 4ab9 0006 3636 tstl 63636 <disktab_size>
43528: 674a beqs 43574 <rtems_disk_delete+0xa2> <== NEVER TAKEN
4352a: 4287 clrl %d7
if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
if (dd->uses == 0) {
++deleted_count;
dtab->minor [minor] = NULL;
free_disk_device(dd);
4352c: 49fa fd58 lea %pc@(43286 <free_disk_device>),%a4
}
}
}
rtems_status_code
rtems_disk_delete(dev_t dev)
43530: 2007 movel %d7,%d0
43532: e788 lsll #3,%d0
if (physical_disk->deleted) {
dev_t dev = physical_disk->dev;
unsigned deleted_count = 0;
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
43534: 2479 0006 363a moveal 6363a <disktab>,%a2
4353a: d5c0 addal %d0,%a2
for (minor = 0; minor < dtab->size; ++minor) {
4353c: 4aaa 0004 tstl %a2@(4)
43540: 6728 beqs 4356a <rtems_disk_delete+0x98>
43542: 4284 clrl %d4
}
}
}
rtems_status_code
rtems_disk_delete(dev_t dev)
43544: 2004 movel %d4,%d0
43546: e588 lsll #2,%d0
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
for (minor = 0; minor < dtab->size; ++minor) {
rtems_disk_device *dd = dtab->minor [minor];
43548: 2652 moveal %a2@,%a3
4354a: d7c0 addal %d0,%a3
4354c: 2053 moveal %a3@,%a0
if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
4354e: 4a88 tstl %a0
43550: 6710 beqs 43562 <rtems_disk_delete+0x90>
43552: 2268 0008 moveal %a0@(8),%a1
43556: 2011 movel %a1@,%d0
43558: 2229 0004 movel %a1@(4),%d1
4355c: 9283 subl %d3,%d1
4355e: 9182 subxl %d2,%d0
43560: 675e beqs 435c0 <rtems_disk_delete+0xee> <== ALWAYS TAKEN
unsigned deleted_count = 0;
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
for (minor = 0; minor < dtab->size; ++minor) {
43562: 5284 addql #1,%d4
43564: b8aa 0004 cmpl %a2@(4),%d4
43568: 65da bcss 43544 <rtems_disk_delete+0x72>
if (physical_disk->deleted) {
dev_t dev = physical_disk->dev;
unsigned deleted_count = 0;
for (major = 0; major < disktab_size; ++major) {
4356a: 5287 addql #1,%d7
4356c: beb9 0006 3636 cmpl 63636 <disktab_size>,%d7
43572: 65bc bcss 43530 <rtems_disk_delete+0x5e>
}
}
}
}
physical_disk->uses -= deleted_count;
43574: 202d 0014 movel %a5@(20),%d0
43578: 9086 subl %d6,%d0
4357a: 2b40 0014 movel %d0,%a5@(20)
if (physical_disk->uses == 0) {
4357e: 6700 0088 beqw 43608 <rtems_disk_delete+0x136>
}
dd->deleted = true;
rtems_disk_cleanup(dd);
disk_unlock();
43582: 4eba fd80 jsr %pc@(43304 <disk_unlock>)
return RTEMS_SUCCESSFUL;
}
43586: 2005 movel %d5,%d0
43588: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5
4358e: 4e5e unlk %fp
43590: 4e75 rts
rtems_filesystem_split_dev_t(physical_disk->dev, major, minor);
disktab [major].minor [minor] = NULL;
free_disk_device(physical_disk);
}
} else {
if (disk_to_remove->uses == 0) {
43592: 4aa8 0014 tstl %a0@(20)
43596: 66ea bnes 43582 <rtems_disk_delete+0xb0> <== NEVER TAKEN
--physical_disk->uses;
rtems_filesystem_split_dev_t(disk_to_remove->dev, major, minor);
43598: 2010 movel %a0@,%d0
disktab [major].minor [minor] = NULL;
free_disk_device(physical_disk);
}
} else {
if (disk_to_remove->uses == 0) {
--physical_disk->uses;
4359a: 53ad 0014 subql #1,%a5@(20)
rtems_filesystem_split_dev_t(disk_to_remove->dev, major, minor);
disktab [major].minor [minor] = NULL;
4359e: 2279 0006 363a moveal 6363a <disktab>,%a1
435a4: e788 lsll #3,%d0
free_disk_device(physical_disk);
}
} else {
if (disk_to_remove->uses == 0) {
--physical_disk->uses;
rtems_filesystem_split_dev_t(disk_to_remove->dev, major, minor);
435a6: 2228 0004 movel %a0@(4),%d1
disktab [major].minor [minor] = NULL;
435aa: 2271 0800 moveal %a1@(00000000,%d0:l),%a1
435ae: 42b1 1c00 clrl %a1@(00000000,%d1:l:4)
free_disk_device(disk_to_remove);
435b2: 2f08 movel %a0,%sp@-
435b4: 4eba fcd0 jsr %pc@(43286 <free_disk_device>)
435b8: 588f addql #4,%sp
}
dd->deleted = true;
rtems_disk_cleanup(dd);
disk_unlock();
435ba: 4eba fd48 jsr %pc@(43304 <disk_unlock>)
435be: 60c6 bras 43586 <rtems_disk_delete+0xb4>
rtems_disk_device_table *dtab = disktab + major;
for (minor = 0; minor < dtab->size; ++minor) {
rtems_disk_device *dd = dtab->minor [minor];
if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
435c0: b1cd cmpal %a5,%a0
435c2: 679e beqs 43562 <rtems_disk_delete+0x90>
if (dd->uses == 0) {
435c4: 4aa8 0014 tstl %a0@(20)
435c8: 6712 beqs 435dc <rtems_disk_delete+0x10a>
unsigned deleted_count = 0;
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
for (minor = 0; minor < dtab->size; ++minor) {
435ca: 5284 addql #1,%d4
if (dd->uses == 0) {
++deleted_count;
dtab->minor [minor] = NULL;
free_disk_device(dd);
} else {
dd->deleted = true;
435cc: 7201 moveq #1,%d1
435ce: 1141 0040 moveb %d1,%a0@(64)
unsigned deleted_count = 0;
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
for (minor = 0; minor < dtab->size; ++minor) {
435d2: b8aa 0004 cmpl %a2@(4),%d4
435d6: 6500 ff6c bcsw 43544 <rtems_disk_delete+0x72>
435da: 608e bras 4356a <rtems_disk_delete+0x98> <== NOT EXECUTED
rtems_disk_device *dd = dtab->minor [minor];
if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
if (dd->uses == 0) {
++deleted_count;
dtab->minor [minor] = NULL;
435dc: 4293 clrl %a3@
for (minor = 0; minor < dtab->size; ++minor) {
rtems_disk_device *dd = dtab->minor [minor];
if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
if (dd->uses == 0) {
++deleted_count;
435de: 5286 addql #1,%d6
unsigned deleted_count = 0;
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
for (minor = 0; minor < dtab->size; ++minor) {
435e0: 5284 addql #1,%d4
if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
if (dd->uses == 0) {
++deleted_count;
dtab->minor [minor] = NULL;
free_disk_device(dd);
435e2: 2f08 movel %a0,%sp@-
435e4: 4e94 jsr %a4@
435e6: 588f addql #4,%sp
unsigned deleted_count = 0;
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
for (minor = 0; minor < dtab->size; ++minor) {
435e8: b8aa 0004 cmpl %a2@(4),%d4
435ec: 6500 ff56 bcsw 43544 <rtems_disk_delete+0x72>
435f0: 6000 ff78 braw 4356a <rtems_disk_delete+0x98> <== NOT EXECUTED
return sc;
}
dd = get_disk_entry(dev, true);
if (dd == NULL) {
disk_unlock();
435f4: 4eba fd0e jsr %pc@(43304 <disk_unlock>) <== NOT EXECUTED
return RTEMS_INVALID_ID;
435f8: 1a3c 0004 moveb #4,%d5 <== NOT EXECUTED
rtems_disk_cleanup(dd);
disk_unlock();
return RTEMS_SUCCESSFUL;
}
435fc: 2005 movel %d5,%d0 <== NOT EXECUTED
435fe: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
43604: 4e5e unlk %fp <== NOT EXECUTED
43606: 4e75 rts <== NOT EXECUTED
}
}
physical_disk->uses -= deleted_count;
if (physical_disk->uses == 0) {
rtems_filesystem_split_dev_t(physical_disk->dev, major, minor);
43608: 2015 movel %a5@,%d0
disktab [major].minor [minor] = NULL;
4360a: 2079 0006 363a moveal 6363a <disktab>,%a0
43610: e788 lsll #3,%d0
}
}
physical_disk->uses -= deleted_count;
if (physical_disk->uses == 0) {
rtems_filesystem_split_dev_t(physical_disk->dev, major, minor);
43612: 222d 0004 movel %a5@(4),%d1
disktab [major].minor [minor] = NULL;
43616: 2070 0800 moveal %a0@(00000000,%d0:l),%a0
4361a: 42b0 1c00 clrl %a0@(00000000,%d1:l:4)
free_disk_device(physical_disk);
4361e: 2f0d movel %a5,%sp@-
43620: 4eba fc64 jsr %pc@(43286 <free_disk_device>)
43624: 588f addql #4,%sp
}
dd->deleted = true;
rtems_disk_cleanup(dd);
disk_unlock();
43626: 4eba fcdc jsr %pc@(43304 <disk_unlock>)
4362a: 6000 ff5a braw 43586 <rtems_disk_delete+0xb4>
000439fc <rtems_disk_io_done>:
rtems_status_code
rtems_disk_io_done(void)
{
439fc: 4e56 ffec linkw %fp,#-20
43a00: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
43a04: 2439 0006 363a movel 6363a <disktab>,%d2
43a0a: 49f9 0004 4528 lea 44528 <free>,%a4
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
for (major = 0; major < disktab_size; ++major) {
43a10: 4ab9 0006 3636 tstl 63636 <disktab_size>
43a16: 674c beqs 43a64 <rtems_disk_io_done+0x68> <== NEVER TAKEN
43a18: 4283 clrl %d3
43a1a: 49f9 0004 4528 lea 44528 <free>,%a4
for (minor = 0; minor < dtab->size; ++minor) {
rtems_disk_device *dd = dtab->minor [minor];
if (dd != NULL) {
free_disk_device(dd);
43a20: 47fa f864 lea %pc@(43286 <free_disk_device>),%a3
return RTEMS_SUCCESSFUL;
}
rtems_status_code
rtems_disk_io_done(void)
43a24: 2003 movel %d3,%d0
{
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
43a26: 2442 moveal %d2,%a2
return RTEMS_SUCCESSFUL;
}
rtems_status_code
rtems_disk_io_done(void)
43a28: e788 lsll #3,%d0
{
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
43a2a: d5c0 addal %d0,%a2
for (minor = 0; minor < dtab->size; ++minor) {
43a2c: 4aaa 0004 tstl %a2@(4)
43a30: 6760 beqs 43a92 <rtems_disk_io_done+0x96>
43a32: 2052 moveal %a2@,%a0
43a34: 4282 clrl %d2
rtems_disk_device *dd = dtab->minor [minor];
43a36: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0
rtems_device_minor_number minor = 0;
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
for (minor = 0; minor < dtab->size; ++minor) {
43a3a: 5282 addql #1,%d2
rtems_disk_device *dd = dtab->minor [minor];
if (dd != NULL) {
43a3c: 4a80 tstl %d0
43a3e: 6708 beqs 43a48 <rtems_disk_io_done+0x4c> <== ALWAYS TAKEN
free_disk_device(dd);
43a40: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43a42: 4e93 jsr %a3@ <== NOT EXECUTED
43a44: 2052 moveal %a2@,%a0 <== NOT EXECUTED
43a46: 588f addql #4,%sp <== NOT EXECUTED
rtems_device_minor_number minor = 0;
for (major = 0; major < disktab_size; ++major) {
rtems_disk_device_table *dtab = disktab + major;
for (minor = 0; minor < dtab->size; ++minor) {
43a48: b4aa 0004 cmpl %a2@(4),%d2
43a4c: 65e8 bcss 43a36 <rtems_disk_io_done+0x3a>
if (dd != NULL) {
free_disk_device(dd);
}
}
free(dtab->minor);
43a4e: 2f08 movel %a0,%sp@-
43a50: 2439 0006 363a movel 6363a <disktab>,%d2
rtems_disk_io_done(void)
{
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
for (major = 0; major < disktab_size; ++major) {
43a56: 5283 addql #1,%d3
if (dd != NULL) {
free_disk_device(dd);
}
}
free(dtab->minor);
43a58: 4e94 jsr %a4@
rtems_disk_io_done(void)
{
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
for (major = 0; major < disktab_size; ++major) {
43a5a: 588f addql #4,%sp
43a5c: b6b9 0006 3636 cmpl 63636 <disktab_size>,%d3
43a62: 65c0 bcss 43a24 <rtems_disk_io_done+0x28> <== ALWAYS TAKEN
free_disk_device(dd);
}
}
free(dtab->minor);
}
free(disktab);
43a64: 2f02 movel %d2,%sp@-
43a66: 4e94 jsr %a4@
rtems_semaphore_delete(diskdevs_mutex);
43a68: 2f39 0006 3632 movel 63632 <diskdevs_mutex>,%sp@-
43a6e: 4eb9 0004 8b70 jsr 48b70 <rtems_semaphore_delete>
diskdevs_mutex = RTEMS_ID_NONE;
disktab = NULL;
disktab_size = 0;
return RTEMS_SUCCESSFUL;
}
43a74: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
43a7a: 4280 clrl %d0
43a7c: 4e5e unlk %fp
}
free(disktab);
rtems_semaphore_delete(diskdevs_mutex);
diskdevs_mutex = RTEMS_ID_NONE;
43a7e: 42b9 0006 3632 clrl 63632 <diskdevs_mutex>
disktab = NULL;
43a84: 42b9 0006 363a clrl 6363a <disktab>
disktab_size = 0;
43a8a: 42b9 0006 3636 clrl 63636 <disktab_size>
return RTEMS_SUCCESSFUL;
}
43a90: 4e75 rts
43a92: 2052 moveal %a2@,%a0
rtems_disk_io_done(void)
{
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
for (major = 0; major < disktab_size; ++major) {
43a94: 5283 addql #1,%d3
if (dd != NULL) {
free_disk_device(dd);
}
}
free(dtab->minor);
43a96: 2f08 movel %a0,%sp@-
43a98: 4e94 jsr %a4@
rtems_disk_io_done(void)
{
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
for (major = 0; major < disktab_size; ++major) {
43a9a: 588f addql #4,%sp
43a9c: b6b9 0006 3636 cmpl 63636 <disktab_size>,%d3
43aa2: 6580 bcss 43a24 <rtems_disk_io_done+0x28>
43aa4: 60be bras 43a64 <rtems_disk_io_done+0x68>
...
00043954 <rtems_disk_io_initialize>:
}
}
rtems_status_code
rtems_disk_io_initialize(void)
{
43954: 4e56 0000 linkw %fp,#0
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_device_major_number size = DISKTAB_INITIAL_SIZE;
if (disktab_size > 0) {
43958: 4ab9 0006 3636 tstl 63636 <disktab_size>
4395e: 6706 beqs 43966 <rtems_disk_io_initialize+0x12>
return RTEMS_SUCCESSFUL;
43960: 4280 clrl %d0
}
disktab_size = size;
return RTEMS_SUCCESSFUL;
}
43962: 4e5e unlk %fp
43964: 4e75 rts
if (disktab_size > 0) {
return RTEMS_SUCCESSFUL;
}
disktab = calloc(size, sizeof(rtems_disk_device_table));
43966: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
4396a: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
4396e: 4eb9 0004 4208 jsr 44208 <calloc>
if (disktab == NULL) {
43974: 508f addql #8,%sp
if (disktab_size > 0) {
return RTEMS_SUCCESSFUL;
}
disktab = calloc(size, sizeof(rtems_disk_device_table));
43976: 23c0 0006 363a movel %d0,6363a <disktab>
if (disktab == NULL) {
4397c: 6758 beqs 439d6 <rtems_disk_io_initialize+0x82> <== NEVER TAKEN
return RTEMS_NO_MEMORY;
}
diskdevs_protected = false;
sc = rtems_semaphore_create(
4397e: 4879 0006 3632 pea 63632 <diskdevs_mutex>
disktab = calloc(size, sizeof(rtems_disk_device_table));
if (disktab == NULL) {
return RTEMS_NO_MEMORY;
}
diskdevs_protected = false;
43984: 4200 clrb %d0
sc = rtems_semaphore_create(
43986: 42a7 clrl %sp@-
43988: 4878 0010 pea 10 <INVALID_OPERATION>
4398c: 4878 0001 pea 1 <ADD>
disktab = calloc(size, sizeof(rtems_disk_device_table));
if (disktab == NULL) {
return RTEMS_NO_MEMORY;
}
diskdevs_protected = false;
43990: 13c0 0006 3630 moveb %d0,63630 <diskdevs_protected>
sc = rtems_semaphore_create(
43996: 2f3c 4444 4556 movel #1145324886,%sp@-
4399c: 4eb9 0004 8984 jsr 48984 <rtems_semaphore_create>
RTEMS_FIFO | RTEMS_BINARY_SEMAPHORE | RTEMS_NO_INHERIT_PRIORITY
| RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL,
0,
&diskdevs_mutex
);
if (sc != RTEMS_SUCCESSFUL) {
439a2: 4fef 0014 lea %sp@(20),%sp
439a6: 4a80 tstl %d0
439a8: 6714 beqs 439be <rtems_disk_io_initialize+0x6a> <== ALWAYS TAKEN
free(disktab);
439aa: 2f39 0006 363a movel 6363a <disktab>,%sp@- <== NOT EXECUTED
439b0: 4eb9 0004 4528 jsr 44528 <free> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
439b6: 588f addql #4,%sp <== NOT EXECUTED
439b8: 701a moveq #26,%d0 <== NOT EXECUTED
}
disktab_size = size;
return RTEMS_SUCCESSFUL;
}
439ba: 4e5e unlk %fp <== NOT EXECUTED
439bc: 4e75 rts <== NOT EXECUTED
free(disktab);
return RTEMS_NO_MEMORY;
}
sc = rtems_bdbuf_init();
439be: 4eb9 0004 e1b6 jsr 4e1b6 <rtems_bdbuf_init>
if (sc != RTEMS_SUCCESSFUL) {
439c4: 4a80 tstl %d0
439c6: 6614 bnes 439dc <rtems_disk_io_initialize+0x88> <== NEVER TAKEN
free(disktab);
return RTEMS_UNSATISFIED;
}
disktab_size = size;
439c8: 7008 moveq #8,%d0
return RTEMS_SUCCESSFUL;
}
439ca: 4e5e unlk %fp
free(disktab);
return RTEMS_UNSATISFIED;
}
disktab_size = size;
439cc: 23c0 0006 3636 movel %d0,63636 <disktab_size>
return RTEMS_SUCCESSFUL;
439d2: 4200 clrb %d0
}
439d4: 4e75 rts
return RTEMS_SUCCESSFUL;
}
disktab = calloc(size, sizeof(rtems_disk_device_table));
if (disktab == NULL) {
return RTEMS_NO_MEMORY;
439d6: 701a moveq #26,%d0 <== NOT EXECUTED
}
disktab_size = size;
return RTEMS_SUCCESSFUL;
}
439d8: 4e5e unlk %fp <== NOT EXECUTED
439da: 4e75 rts <== NOT EXECUTED
return RTEMS_NO_MEMORY;
}
sc = rtems_bdbuf_init();
if (sc != RTEMS_SUCCESSFUL) {
rtems_semaphore_delete(diskdevs_mutex);
439dc: 2f39 0006 3632 movel 63632 <diskdevs_mutex>,%sp@- <== NOT EXECUTED
439e2: 4eb9 0004 8b70 jsr 48b70 <rtems_semaphore_delete> <== NOT EXECUTED
free(disktab);
439e8: 2f39 0006 363a movel 6363a <disktab>,%sp@- <== NOT EXECUTED
439ee: 4eb9 0004 4528 jsr 44528 <free> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
439f4: 508f addql #8,%sp <== NOT EXECUTED
439f6: 700d moveq #13,%d0 <== NOT EXECUTED
}
disktab_size = size;
return RTEMS_SUCCESSFUL;
}
439f8: 4e5e unlk %fp <== NOT EXECUTED
000438b0 <rtems_disk_next>:
rtems_disk_device *
rtems_disk_next(dev_t dev)
{
438b0: 4e56 ffec linkw %fp,#-20
438b4: 202e 0008 movel %fp@(8),%d0
438b8: 222e 000c movel %fp@(12),%d1
438bc: 48d7 043c moveml %d2-%d5/%a2,%sp@
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_disk_device_table *dtab = NULL;
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
if (dev != (dev_t) -1) {
438c0: 74ff moveq #-1,%d2
438c2: 76ff moveq #-1,%d3
438c4: 9681 subl %d1,%d3
438c6: 9580 subxl %d0,%d2
438c8: 6700 0084 beqw 4394e <rtems_disk_next+0x9e>
rtems_filesystem_split_dev_t(dev, major, minor);
/* If minor wraps around */
if ((minor + 1) < minor) {
438cc: 2401 movel %d1,%d2
)
{
union __rtems_dev_t temp;
temp.device = device;
return temp.__overlay.major;
438ce: 2600 movel %d0,%d3
438d0: 5282 addql #1,%d2
438d2: 78ff moveq #-1,%d4
438d4: b881 cmpl %d1,%d4
438d6: 636a blss 43942 <rtems_disk_next+0x92> <== NEVER TAKEN
} else {
++minor;
}
}
sc = disk_lock();
438d8: 4eba f9fc jsr %pc@(432d6 <disk_lock>)
if (sc != RTEMS_SUCCESSFUL) {
438dc: 4a80 tstl %d0
438de: 6656 bnes 43936 <rtems_disk_next+0x86> <== NEVER TAKEN
return NULL;
}
if (major >= disktab_size) {
438e0: 2239 0006 3636 movel 63636 <disktab_size>,%d1
438e6: b283 cmpl %d3,%d1
438e8: 6348 blss 43932 <rtems_disk_next+0x82> <== NEVER TAKEN
disk_unlock();
return NULL;
}
dtab = disktab + major;
438ea: 2a39 0006 363a movel 6363a <disktab>,%d5
438f0: 2003 movel %d3,%d0
438f2: 2445 moveal %d5,%a2
438f4: e788 lsll #3,%d0
438f6: d5c0 addal %d0,%a2
438f8: 2052 moveal %a2@,%a0
while (true) {
if (dtab->minor == NULL || minor >= dtab->size) {
438fa: 4a88 tstl %a0
438fc: 672c beqs 4392a <rtems_disk_next+0x7a> <== NEVER TAKEN
438fe: b4aa 0004 cmpl %a2@(4),%d2
43902: 6426 bccs 4392a <rtems_disk_next+0x7a> <== NEVER TAKEN
disk_unlock();
return NULL;
}
dtab = disktab + major;
} else if (dtab->minor [minor] == NULL) {
43904: 2802 movel %d2,%d4
++minor;
43906: 5282 addql #1,%d2
disk_unlock();
return NULL;
}
dtab = disktab + major;
} else if (dtab->minor [minor] == NULL) {
43908: e58c lsll #2,%d4
4390a: 2270 4800 moveal %a0@(00000000,%d4:l),%a1
4390e: 4a89 tstl %a1
43910: 67e8 beqs 438fa <rtems_disk_next+0x4a>
++minor;
} else {
++dtab->minor [minor]->uses;
43912: 52a9 0014 addql #1,%a1@(20)
disk_unlock();
43916: 4eba f9ec jsr %pc@(43304 <disk_unlock>)
return dtab->minor [minor];
4391a: 2052 moveal %a2@,%a0
4391c: 2030 4800 movel %a0@(00000000,%d4:l),%d0
}
}
}
43920: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
43926: 4e5e unlk %fp
43928: 4e75 rts
dtab = disktab + major;
while (true) {
if (dtab->minor == NULL || minor >= dtab->size) {
minor = 0;
++major;
4392a: 5283 addql #1,%d3
}
dtab = disktab + major;
while (true) {
if (dtab->minor == NULL || minor >= dtab->size) {
minor = 0;
4392c: 4282 clrl %d2
++major;
if (major >= disktab_size) {
4392e: b681 cmpl %d1,%d3
43930: 65be bcss 438f0 <rtems_disk_next+0x40> <== NEVER TAKEN
if (sc != RTEMS_SUCCESSFUL) {
return NULL;
}
if (major >= disktab_size) {
disk_unlock();
43932: 4eba f9d0 jsr %pc@(43304 <disk_unlock>)
return NULL;
43936: 4280 clrl %d0
disk_unlock();
return dtab->minor [minor];
}
}
}
43938: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
4393e: 4e5e unlk %fp
43940: 4e75 rts
rtems_filesystem_split_dev_t(dev, major, minor);
/* If minor wraps around */
if ((minor + 1) < minor) {
/* If major wraps around */
if ((major + 1) < major) {
43942: 5280 addql #1,%d0 <== NOT EXECUTED
43944: b680 cmpl %d0,%d3 <== NOT EXECUTED
43946: 62ee bhis 43936 <rtems_disk_next+0x86> <== NOT EXECUTED
43948: 2600 movel %d0,%d3 <== NOT EXECUTED
return NULL;
}
++major;
minor = 0;
4394a: 4282 clrl %d2 <== NOT EXECUTED
4394c: 608a bras 438d8 <rtems_disk_next+0x28> <== NOT EXECUTED
rtems_disk_next(dev_t dev)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_disk_device_table *dtab = NULL;
rtems_device_major_number major = 0;
rtems_device_minor_number minor = 0;
4394e: 4282 clrl %d2
rtems_disk_device *
rtems_disk_next(dev_t dev)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_disk_device_table *dtab = NULL;
rtems_device_major_number major = 0;
43950: 4283 clrl %d3
43952: 6084 bras 438d8 <rtems_disk_next+0x28>
000437e2 <rtems_disk_obtain>:
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_disk_device *dd = NULL;
rtems_interrupt_level level;
rtems_interrupt_disable(level);
437e2: 203c 0000 0700 movel #1792,%d0
return RTEMS_SUCCESSFUL;
}
rtems_disk_device *
rtems_disk_obtain(dev_t dev)
{
437e8: 4e56 fffc linkw %fp,#-4
437ec: 2f02 movel %d2,%sp@-
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_disk_device *dd = NULL;
rtems_interrupt_level level;
rtems_interrupt_disable(level);
437ee: 40c2 movew %sr,%d2
437f0: 8082 orl %d2,%d0
437f2: 46c0 movew %d0,%sr
if (!diskdevs_protected) {
437f4: 1039 0006 3630 moveb 63630 <diskdevs_protected>,%d0
437fa: 6730 beqs 4382c <rtems_disk_obtain+0x4a> <== ALWAYS TAKEN
/* Frequent and quickest case */
dd = get_disk_entry(dev, false);
rtems_interrupt_enable(level);
} else {
rtems_interrupt_enable(level);
437fc: 46c2 movew %d2,%sr <== NOT EXECUTED
sc = disk_lock();
437fe: 4eba fad6 jsr %pc@(432d6 <disk_lock>) <== NOT EXECUTED
if (sc == RTEMS_SUCCESSFUL) {
43802: 4a80 tstl %d0 <== NOT EXECUTED
43804: 6642 bnes 43848 <rtems_disk_obtain+0x66> <== NOT EXECUTED
dd = get_disk_entry(dev, false);
43806: 42a7 clrl %sp@- <== NOT EXECUTED
43808: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4380c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
43810: 4eba fa12 jsr %pc@(43224 <get_disk_entry>) <== NOT EXECUTED
disk_unlock();
43814: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
43818: 4eba faea jsr %pc@(43304 <disk_unlock>) <== NOT EXECUTED
4381c: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
43820: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
return dd;
}
43824: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
43828: 4e5e unlk %fp <== NOT EXECUTED
4382a: 4e75 rts <== NOT EXECUTED
rtems_interrupt_level level;
rtems_interrupt_disable(level);
if (!diskdevs_protected) {
/* Frequent and quickest case */
dd = get_disk_entry(dev, false);
4382c: 42a7 clrl %sp@-
4382e: 2f2e 000c movel %fp@(12),%sp@-
43832: 2f2e 0008 movel %fp@(8),%sp@-
43836: 4eba f9ec jsr %pc@(43224 <get_disk_entry>)
rtems_interrupt_enable(level);
4383a: 46c2 movew %d2,%sr
4383c: 4fef 000c lea %sp@(12),%sp
disk_unlock();
}
}
return dd;
}
43840: 242e fff8 movel %fp@(-8),%d2
43844: 4e5e unlk %fp
43846: 4e75 rts
43848: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
rtems_disk_device *
rtems_disk_obtain(dev_t dev)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_disk_device *dd = NULL;
4384c: 4280 clrl %d0 <== NOT EXECUTED
disk_unlock();
}
}
return dd;
}
4384e: 4e5e unlk %fp <== NOT EXECUTED
00050878 <rtems_event_system_receive>:
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
50878: 4e56 0000 linkw %fp,#0
5087c: 206e 0014 moveal %fp@(20),%a0
50880: 2f0a movel %a2,%sp@-
rtems_status_code sc;
if ( event_out != NULL ) {
50882: 4a88 tstl %a0
50884: 671e beqs 508a4 <rtems_event_system_receive+0x2c><== NEVER TAKEN
Thread_Control *executing = _Thread_Executing;
50886: 2479 0006 4162 moveal 64162 <_Per_CPU_Information+0xe>,%a2
RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
5088c: 226a 00f8 moveal %a2@(248),%a1
Event_Control *event = &api->System_event;
if ( !_Event_sets_Is_empty( event_in ) ) {
50890: 4aae 0008 tstl %fp@(8)
50894: 6618 bnes 508ae <rtems_event_system_receive+0x36><== ALWAYS TAKEN
} else {
sc = RTEMS_INVALID_ADDRESS;
}
return sc;
}
50896: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
_Thread_Enable_dispatch();
sc = executing->Wait.return_code;
} else {
*event_out = event->pending_events;
sc = RTEMS_SUCCESSFUL;
5089a: 4280 clrl %d0 <== NOT EXECUTED
} else {
sc = RTEMS_INVALID_ADDRESS;
}
return sc;
}
5089c: 4e5e unlk %fp <== NOT EXECUTED
);
_Thread_Enable_dispatch();
sc = executing->Wait.return_code;
} else {
*event_out = event->pending_events;
5089e: 20a9 0004 movel %a1@(4),%a0@ <== NOT EXECUTED
} else {
sc = RTEMS_INVALID_ADDRESS;
}
return sc;
}
508a2: 4e75 rts <== NOT EXECUTED
508a4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
} else {
*event_out = event->pending_events;
sc = RTEMS_SUCCESSFUL;
}
} else {
sc = RTEMS_INVALID_ADDRESS;
508a8: 7009 moveq #9,%d0 <== NOT EXECUTED
}
return sc;
}
508aa: 4e5e unlk %fp <== NOT EXECUTED
508ac: 4e75 rts <== NOT EXECUTED
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
508ae: 2039 0006 3fea movel 63fea <_Thread_Dispatch_disable_level>,%d0
++level;
508b4: 5280 addql #1,%d0
_Thread_Dispatch_disable_level = level;
508b6: 23c0 0006 3fea movel %d0,63fea <_Thread_Dispatch_disable_level>
RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
Event_Control *event = &api->System_event;
if ( !_Event_sets_Is_empty( event_in ) ) {
_Thread_Disable_dispatch();
_Event_Seize(
508bc: 2f3c 0004 0000 movel #262144,%sp@-
508c2: 4879 0006 419c pea 6419c <_System_event_Sync_state>
508c8: 4869 0004 pea %a1@(4)
508cc: 2f0a movel %a2,%sp@-
508ce: 2f08 movel %a0,%sp@-
508d0: 2f2e 0010 movel %fp@(16),%sp@-
508d4: 2f2e 000c movel %fp@(12),%sp@-
508d8: 2f2e 0008 movel %fp@(8),%sp@-
508dc: 4eb9 0004 861c jsr 4861c <_Event_Seize>
executing,
event,
&_System_event_Sync_state,
STATES_WAITING_FOR_SYSTEM_EVENT
);
_Thread_Enable_dispatch();
508e2: 4fef 0020 lea %sp@(32),%sp
508e6: 4eb9 0004 b5b0 jsr 4b5b0 <_Thread_Enable_dispatch>
sc = executing->Wait.return_code;
508ec: 202a 0034 movel %a2@(52),%d0
} else {
sc = RTEMS_INVALID_ADDRESS;
}
return sc;
}
508f0: 246e fffc moveal %fp@(-4),%a2
508f4: 4e5e unlk %fp <== NOT EXECUTED
00047670 <rtems_event_system_send>:
rtems_status_code rtems_event_system_send(
rtems_id id,
rtems_event_set event_in
)
{
47670: 4e56 fffc linkw %fp,#-4
rtems_status_code sc;
Thread_Control *thread;
Objects_Locations location;
RTEMS_API_Control *api;
thread = _Thread_Get( id, &location );
47674: 486e fffc pea %fp@(-4)
47678: 2f2e 0008 movel %fp@(8),%sp@-
4767c: 4eb9 0004 9c64 jsr 49c64 <_Thread_Get>
switch ( location ) {
47682: 508f addql #8,%sp
47684: 4aae fffc tstl %fp@(-4)
47688: 6632 bnes 476bc <rtems_event_system_send+0x4c> <== NEVER TAKEN
case OBJECTS_LOCAL:
api = thread->API_Extensions[ THREAD_API_RTEMS ];
_Event_Surrender(
4768a: 2040 moveal %d0,%a0
4768c: 2f3c 0004 0000 movel #262144,%sp@-
47692: 4879 0005 fbb8 pea 5fbb8 <_System_event_Sync_state>
47698: 2228 00f8 movel %a0@(248),%d1
4769c: 5881 addql #4,%d1
4769e: 2f01 movel %d1,%sp@-
476a0: 2f2e 000c movel %fp@(12),%sp@-
476a4: 2f00 movel %d0,%sp@-
476a6: 4eb9 0004 6fa8 jsr 46fa8 <_Event_Surrender>
event_in,
&api->System_event,
&_System_event_Sync_state,
STATES_WAITING_FOR_SYSTEM_EVENT
);
_Thread_Enable_dispatch();
476ac: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
sc = RTEMS_SUCCESSFUL;
break;
476b2: 4fef 0014 lea %sp@(20),%sp
&api->System_event,
&_System_event_Sync_state,
STATES_WAITING_FOR_SYSTEM_EVENT
);
_Thread_Enable_dispatch();
sc = RTEMS_SUCCESSFUL;
476b6: 4280 clrl %d0
sc = RTEMS_INVALID_ID;
break;
}
return sc;
}
476b8: 4e5e unlk %fp
476ba: 4e75 rts
case OBJECTS_REMOTE:
sc = RTEMS_ILLEGAL_ON_REMOTE_OBJECT;
break;
#endif
default:
sc = RTEMS_INVALID_ID;
476bc: 7004 moveq #4,%d0 <== NOT EXECUTED
break;
}
return sc;
}
476be: 4e5e unlk %fp <== NOT EXECUTED
...
0004672e <rtems_fdisk_abort.constprop.16>:
*
* @param format The format string. See printf for details.
* @param ... The arguments for the format text.
*/
static void
rtems_fdisk_abort (const char *format, ...)
4672e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
{
va_list args;
va_start (args, format);
fprintf (stderr, "fdisk:abort:");
46732: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
46738: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
4673c: 4878 000c pea c <OPER1> <== NOT EXECUTED
46740: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
46744: 4879 0006 ff19 pea 6ff19 <map.6766+0x363> <== NOT EXECUTED
4674a: 4eb9 0006 123e jsr 6123e <fwrite> <== NOT EXECUTED
vfprintf (stderr, format, args);
46750: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
46756: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
4675a: 4879 0006 ff26 pea 6ff26 <map.6766+0x370> <== NOT EXECUTED
46760: 4eb9 0006 0c96 jsr 60c96 <fputs> <== NOT EXECUTED
fprintf (stderr, "\n");
46766: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
4676c: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
46770: 4878 000a pea a <LASTO> <== NOT EXECUTED
46774: 4eb9 0006 0bc0 jsr 60bc0 <fputc> <== NOT EXECUTED
fflush (stderr);
4677a: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
46780: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
46784: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
46788: 4eb9 0006 0792 jsr 60792 <fflush> <== NOT EXECUTED
va_end (args);
exit (1);
4678e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
46792: 4eb9 0006 0424 jsr 60424 <exit> <== NOT EXECUTED
00044cfa <rtems_fdisk_compact>:
* used segments that will fit. The used queue is sorted on the least
* number of active pages.
*/
static int
rtems_fdisk_compact (rtems_flashdisk* fd)
{
44cfa: 4e56 ffd4 linkw %fp,#-44
44cfe: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
44d02: 266e 0008 moveal %fp@(8),%a3
static bool
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)
{
bool starvation = fd->erased_blocks < fd->starvation_threshold;
if (starvation)
44d06: 202b 0024 movel %a3@(36),%d0
44d0a: b0ab 0028 cmpl %a3@(40),%d0
44d0e: 6356 blss 44d66 <rtems_fdisk_compact+0x6c> <== ALWAYS TAKEN
uint32_t pages;
if (rtems_fdisk_is_erased_blocks_starvation (fd))
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " resolve starvation");
44d10: 4879 0006 fe3e pea 6fe3e <map.6766+0x288> <== NOT EXECUTED
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)
{
bool starvation = fd->erased_blocks < fd->starvation_threshold;
if (starvation)
fd->starvations++;
44d16: 52ab 0070 addql #1,%a3@(112) <== NOT EXECUTED
uint32_t pages;
if (rtems_fdisk_is_erased_blocks_starvation (fd))
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " resolve starvation");
44d1a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44d1c: 4eba f42e jsr %pc@(4414c <rtems_fdisk_printf>) <== NOT EXECUTED
* Pop the head of the segment control queue.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{
if (queue->head)
44d20: 246b 0040 moveal %a3@(64),%a2 <== NOT EXECUTED
44d24: 508f addql #8,%sp <== NOT EXECUTED
44d26: 4a8a tstl %a2 <== NOT EXECUTED
44d28: 6700 01b4 beqw 44ede <rtems_fdisk_compact+0x1e4> <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
44d2c: 2012 movel %a2@,%d0 <== NOT EXECUTED
44d2e: 2740 0040 movel %d0,%a3@(64) <== NOT EXECUTED
if (!queue->head)
44d32: 6700 0200 beqw 44f34 <rtems_fdisk_compact+0x23a> <== NOT EXECUTED
queue->tail = 0;
queue->count--;
44d36: 53ab 0048 subql #1,%a3@(72) <== NOT EXECUTED
44d3a: 202b 0034 movel %a3@(52),%d0 <== NOT EXECUTED
sc->next = 0;
44d3e: 4292 clrl %a2@ <== NOT EXECUTED
if (!ssc)
ssc = rtems_fdisk_segment_queue_pop_head (&fd->available);
if (ssc)
{
dsc = rtems_fdisk_seg_most_available (&fd->available);
44d40: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44d42: 4eba f9ec jsr %pc@(44730 <rtems_fdisk_seg_most_available.isra.12>)<== NOT EXECUTED
44d46: 588f addql #4,%sp <== NOT EXECUTED
if (dsc)
44d48: 4a80 tstl %d0 <== NOT EXECUTED
44d4a: 6700 01d0 beqw 44f1c <rtems_fdisk_compact+0x222> <== NOT EXECUTED
{
ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);
44d4e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
44d52: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44d54: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44d56: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44d58: 4eba fbf8 jsr %pc@(44952 <rtems_fdisk_recycle_segment>)<== NOT EXECUTED
if (ret)
44d5c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
44d60: 4a80 tstl %d0 <== NOT EXECUTED
44d62: 6600 00d4 bnew 44e38 <rtems_fdisk_compact+0x13e> <== NOT EXECUTED
rtems_fdisk_printf (fd, " ssc scan: %d-%d: p=%ld, seg=%ld",
ssc->device, ssc->segment,
pages, segments);
#endif
rtems_fdisk_segment_queue_remove (&fd->available, dsc);
44d66: 280b movel %a3,%d4
while (ssc &&
((pages + ssc->pages_active) < dst_pages) &&
((compacted_segs + segments) < fd->compact_segs))
{
pages += ssc->pages_active;
44d68: 4285 clrl %d5
{
uint32_t dst_pages;
uint32_t segments;
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " compacting");
44d6a: 4bfa f3e0 lea %pc@(4414c <rtems_fdisk_printf>),%a5
#endif
dsc = rtems_fdisk_seg_most_available (&fd->available);
44d6e: 263c 0004 4730 movel #280368,%d3
rtems_fdisk_printf (fd, " ssc scan: %d-%d: p=%ld, seg=%ld",
ssc->device, ssc->segment,
pages, segments);
#endif
rtems_fdisk_segment_queue_remove (&fd->available, dsc);
44d74: 0684 0000 0034 addil #52,%d4
44d7a: 2c3c 0004 3fa4 movel #278436,%d6
44d80: 206b 0040 moveal %a3@(64),%a0
rtems_fdisk_error ("compacting: nothing to recycle");
return EIO;
}
}
while (fd->used.head)
44d84: 4a88 tstl %a0
44d86: 6700 0170 beqw 44ef8 <rtems_fdisk_compact+0x1fe>
{
uint32_t dst_pages;
uint32_t segments;
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " compacting");
44d8a: 4879 0006 fe69 pea 6fe69 <map.6766+0x2b3> <== NOT EXECUTED
44d90: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44d92: 4e95 jsr %a5@ <== NOT EXECUTED
#endif
dsc = rtems_fdisk_seg_most_available (&fd->available);
44d94: 2f2b 0034 movel %a3@(52),%sp@- <== NOT EXECUTED
44d98: 2043 moveal %d3,%a0 <== NOT EXECUTED
44d9a: 4e90 jsr %a0@ <== NOT EXECUTED
if (dsc == 0)
44d9c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " compacting");
#endif
dsc = rtems_fdisk_seg_most_available (&fd->available);
44da0: 2840 moveal %d0,%a4 <== NOT EXECUTED
if (dsc == 0)
44da2: 4a80 tstl %d0 <== NOT EXECUTED
44da4: 6700 015e beqw 44f04 <rtems_fdisk_compact+0x20a> <== NOT EXECUTED
* with the most available number of pages and see if we have
* used segments that will fit. The used queue is sorted on the least
* number of active pages.
*/
static int
rtems_fdisk_compact (rtems_flashdisk* fd)
44da8: 2e2c 0020 movel %a4@(32),%d7 <== NOT EXECUTED
44dac: deac 0024 addl %a4@(36),%d7 <== NOT EXECUTED
* active, used and bad pages.
*/
static uint32_t
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)
{
return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
44db0: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED
44db4: 9087 subl %d7,%d0 <== NOT EXECUTED
44db6: 2e00 movel %d0,%d7 <== NOT EXECUTED
44db8: 9eac 001c subl %a4@(28),%d7 <== NOT EXECUTED
dst_pages = rtems_fdisk_seg_pages_available (dsc);
segments = 0;
pages = 0;
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " dsc:%02d-%03d: most available",
44dbc: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED
44dc0: 2f2c 0008 movel %a4@(8),%sp@- <== NOT EXECUTED
44dc4: 4879 0006 fea6 pea 6fea6 <map.6766+0x2f0> <== NOT EXECUTED
{
rtems_fdisk_error ("compacting: no available segments to compact too");
return EIO;
}
ssc = fd->used.head;
44dca: 246b 0040 moveal %a3@(64),%a2 <== NOT EXECUTED
dst_pages = rtems_fdisk_seg_pages_available (dsc);
segments = 0;
pages = 0;
44dce: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " dsc:%02d-%03d: most available",
44dd2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44dd4: 4eba f376 jsr %pc@(4414c <rtems_fdisk_printf>) <== NOT EXECUTED
* we handle during one compaction. A lower number means less aggressive
* compaction or less delay when compacting but it may mean the disk
* will fill.
*/
while (ssc &&
44dd8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
44ddc: 4a8a tstl %a2 <== NOT EXECUTED
44dde: 6748 beqs 44e28 <rtems_fdisk_compact+0x12e> <== NOT EXECUTED
((pages + ssc->pages_active) < dst_pages) &&
44de0: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
44de4: 2241 moveal %d1,%a1 <== NOT EXECUTED
44de6: d3ea 001c addal %a2@(28),%a1 <== NOT EXECUTED
* we handle during one compaction. A lower number means less aggressive
* compaction or less delay when compacting but it may mean the disk
* will fill.
*/
while (ssc &&
44dea: b3c7 cmpal %d7,%a1 <== NOT EXECUTED
44dec: 6400 00c6 bccw 44eb4 <rtems_fdisk_compact+0x1ba> <== NOT EXECUTED
((pages + ssc->pages_active) < dst_pages) &&
((compacted_segs + segments) < fd->compact_segs))
44df0: 202b 000c movel %a3@(12),%d0 <== NOT EXECUTED
* compaction or less delay when compacting but it may mean the disk
* will fill.
*/
while (ssc &&
((pages + ssc->pages_active) < dst_pages) &&
44df4: b085 cmpl %d5,%d0 <== NOT EXECUTED
44df6: 6300 00bc blsw 44eb4 <rtems_fdisk_compact+0x1ba> <== NOT EXECUTED
44dfa: 4281 clrl %d1 <== NOT EXECUTED
((compacted_segs + segments) < fd->compact_segs))
{
pages += ssc->pages_active;
segments++;
44dfc: 5281 addql #1,%d1 <== NOT EXECUTED
* compaction or less delay when compacting but it may mean the disk
* will fill.
*/
while (ssc &&
((pages + ssc->pages_active) < dst_pages) &&
44dfe: 2405 movel %d5,%d2 <== NOT EXECUTED
44e00: d481 addl %d1,%d2 <== NOT EXECUTED
((compacted_segs + segments) < fd->compact_segs))
{
pages += ssc->pages_active;
segments++;
ssc = ssc->next;
44e02: 2452 moveal %a2@,%a2 <== NOT EXECUTED
* we handle during one compaction. A lower number means less aggressive
* compaction or less delay when compacting but it may mean the disk
* will fill.
*/
while (ssc &&
44e04: 4a8a tstl %a2 <== NOT EXECUTED
44e06: 671c beqs 44e24 <rtems_fdisk_compact+0x12a> <== NOT EXECUTED
((pages + ssc->pages_active) < dst_pages) &&
44e08: 2049 moveal %a1,%a0 <== NOT EXECUTED
44e0a: d1ea 001c addal %a2@(28),%a0 <== NOT EXECUTED
* we handle during one compaction. A lower number means less aggressive
* compaction or less delay when compacting but it may mean the disk
* will fill.
*/
while (ssc &&
44e0e: be88 cmpl %a0,%d7 <== NOT EXECUTED
44e10: 6330 blss 44e42 <rtems_fdisk_compact+0x148> <== NOT EXECUTED
((pages + ssc->pages_active) < dst_pages) &&
44e12: b082 cmpl %d2,%d0 <== NOT EXECUTED
44e14: 632c blss 44e42 <rtems_fdisk_compact+0x148> <== NOT EXECUTED
((compacted_segs + segments) < fd->compact_segs))
{
pages += ssc->pages_active;
segments++;
44e16: 5281 addql #1,%d1 <== NOT EXECUTED
* compaction or less delay when compacting but it may mean the disk
* will fill.
*/
while (ssc &&
((pages + ssc->pages_active) < dst_pages) &&
44e18: 2405 movel %d5,%d2 <== NOT EXECUTED
44e1a: 2248 moveal %a0,%a1 <== NOT EXECUTED
44e1c: d481 addl %d1,%d2 <== NOT EXECUTED
((compacted_segs + segments) < fd->compact_segs))
{
pages += ssc->pages_active;
segments++;
ssc = ssc->next;
44e1e: 2452 moveal %a2@,%a2 <== NOT EXECUTED
* we handle during one compaction. A lower number means less aggressive
* compaction or less delay when compacting but it may mean the disk
* will fill.
*/
while (ssc &&
44e20: 4a8a tstl %a2 <== NOT EXECUTED
44e22: 66e4 bnes 44e08 <rtems_fdisk_compact+0x10e> <== NOT EXECUTED
44e24: 2d49 fffc movel %a1,%fp@(-4) <== NOT EXECUTED
*/
if (!ssc || (pages == 0) || ((compacted_segs + segments) == 1))
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " nothing to compact");
44e28: 4879 0006 fec5 pea 6fec5 <map.6766+0x30f> <== NOT EXECUTED
44e2e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44e30: 4eba f31a jsr %pc@(4414c <rtems_fdisk_printf>) <== NOT EXECUTED
#endif
break;
44e34: 508f addql #8,%sp <== NOT EXECUTED
}
compacted_segs += segments;
}
return 0;
44e36: 4280 clrl %d0 <== NOT EXECUTED
}
44e38: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44e3e: 4e5e unlk %fp <== NOT EXECUTED
44e40: 4e75 rts <== NOT EXECUTED
44e42: 2d49 fffc movel %a1,%fp@(-4) <== NOT EXECUTED
* We need a source segment and have pages to copy and
* compacting one segment to another is silly. Compaction needs
* to free at least one more segment.
*/
if (!ssc || (pages == 0) || ((compacted_segs + segments) == 1))
44e46: 4a89 tstl %a1 <== NOT EXECUTED
44e48: 67de beqs 44e28 <rtems_fdisk_compact+0x12e> <== NOT EXECUTED
44e4a: da81 addl %d1,%d5 <== NOT EXECUTED
44e4c: 7001 moveq #1,%d0 <== NOT EXECUTED
44e4e: b085 cmpl %d5,%d0 <== NOT EXECUTED
44e50: 67d6 beqs 44e28 <rtems_fdisk_compact+0x12e> <== NOT EXECUTED
#endif
break;
}
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " ssc scan: %d-%d: p=%ld, seg=%ld",
44e52: 2f01 movel %d1,%sp@- <== NOT EXECUTED
44e54: 2f09 movel %a1,%sp@- <== NOT EXECUTED
44e56: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
44e5a: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
44e5e: 4879 0006 fed9 pea 6fed9 <map.6766+0x323> <== NOT EXECUTED
44e64: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44e66: 4e95 jsr %a5@ <== NOT EXECUTED
ssc->device, ssc->segment,
pages, segments);
#endif
rtems_fdisk_segment_queue_remove (&fd->available, dsc);
44e68: 2046 moveal %d6,%a0 <== NOT EXECUTED
44e6a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44e6c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
44e6e: 4e90 jsr %a0@ <== NOT EXECUTED
44e70: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
/*
* We now copy the pages to the new segment.
*/
while (pages)
44e74: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
44e78: 206b 0040 moveal %a3@(64),%a0 <== NOT EXECUTED
44e7c: 4a80 tstl %d0 <== NOT EXECUTED
44e7e: 6700 ff04 beqw 44d84 <rtems_fdisk_compact+0x8a> <== NOT EXECUTED
* Pop the head of the segment control queue.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{
if (queue->head)
44e82: 4a88 tstl %a0 <== NOT EXECUTED
44e84: 67f6 beqs 44e7c <rtems_fdisk_compact+0x182> <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
44e86: 2010 movel %a0@,%d0 <== NOT EXECUTED
44e88: 2740 0040 movel %d0,%a3@(64) <== NOT EXECUTED
if (!queue->head)
44e8c: 672c beqs 44eba <rtems_fdisk_compact+0x1c0> <== NOT EXECUTED
queue->tail = 0;
queue->count--;
44e8e: 53ab 0048 subql #1,%a3@(72) <== NOT EXECUTED
sc->next = 0;
44e92: 4290 clrl %a0@ <== NOT EXECUTED
{
ssc = rtems_fdisk_segment_queue_pop_head (&fd->used);
if (ssc)
{
ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);
44e94: 486e fffc pea %fp@(-4) <== NOT EXECUTED
44e98: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44e9a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
44e9c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44e9e: 4eba fab2 jsr %pc@(44952 <rtems_fdisk_recycle_segment>)<== NOT EXECUTED
if (ret)
44ea2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
44ea6: 4a80 tstl %d0 <== NOT EXECUTED
44ea8: 668e bnes 44e38 <rtems_fdisk_compact+0x13e> <== NOT EXECUTED
44eaa: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
44eae: 206b 0040 moveal %a3@(64),%a0 <== NOT EXECUTED
44eb2: 60c8 bras 44e7c <rtems_fdisk_compact+0x182> <== NOT EXECUTED
* compaction or less delay when compacting but it may mean the disk
* will fill.
*/
while (ssc &&
((pages + ssc->pages_active) < dst_pages) &&
44eb4: 2241 moveal %d1,%a1 <== NOT EXECUTED
return EIO;
}
ssc = fd->used.head;
dst_pages = rtems_fdisk_seg_pages_available (dsc);
segments = 0;
44eb6: 4281 clrl %d1 <== NOT EXECUTED
44eb8: 608c bras 44e46 <rtems_fdisk_compact+0x14c> <== NOT EXECUTED
queue->head = sc->next;
if (!queue->head)
queue->tail = 0;
queue->count--;
44eba: 53ab 0048 subql #1,%a3@(72) <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
if (!queue->head)
queue->tail = 0;
44ebe: 42ab 0044 clrl %a3@(68) <== NOT EXECUTED
queue->count--;
sc->next = 0;
44ec2: 4290 clrl %a0@ <== NOT EXECUTED
{
ssc = rtems_fdisk_segment_queue_pop_head (&fd->used);
if (ssc)
{
ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);
44ec4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
44ec8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44eca: 2f08 movel %a0,%sp@- <== NOT EXECUTED
44ecc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44ece: 4eba fa82 jsr %pc@(44952 <rtems_fdisk_recycle_segment>)<== NOT EXECUTED
if (ret)
44ed2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
44ed6: 4a80 tstl %d0 <== NOT EXECUTED
44ed8: 67d0 beqs 44eaa <rtems_fdisk_compact+0x1b0> <== NOT EXECUTED
44eda: 6000 ff5c braw 44e38 <rtems_fdisk_compact+0x13e> <== NOT EXECUTED
* Pop the head of the segment control queue.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{
if (queue->head)
44ede: 246b 0034 moveal %a3@(52),%a2 <== NOT EXECUTED
44ee2: 4a8a tstl %a2 <== NOT EXECUTED
44ee4: 6760 beqs 44f46 <rtems_fdisk_compact+0x24c> <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
44ee6: 2012 movel %a2@,%d0 <== NOT EXECUTED
44ee8: 2740 0034 movel %d0,%a3@(52) <== NOT EXECUTED
if (!queue->head)
44eec: 6770 beqs 44f5e <rtems_fdisk_compact+0x264> <== NOT EXECUTED
queue->tail = 0;
queue->count--;
44eee: 53ab 003c subql #1,%a3@(60) <== NOT EXECUTED
sc->next = 0;
44ef2: 4292 clrl %a2@ <== NOT EXECUTED
44ef4: 6000 fe4a braw 44d40 <rtems_fdisk_compact+0x46> <== NOT EXECUTED
}
compacted_segs += segments;
}
return 0;
44ef8: 4280 clrl %d0
}
44efa: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
44f00: 4e5e unlk %fp
44f02: 4e75 rts
dsc = rtems_fdisk_seg_most_available (&fd->available);
if (dsc == 0)
{
rtems_fdisk_error ("compacting: no available segments to compact too");
44f04: 4879 0006 fe75 pea 6fe75 <map.6766+0x2bf> <== NOT EXECUTED
44f0a: 4eba f3da jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
44f0e: 588f addql #4,%sp <== NOT EXECUTED
return EIO;
44f10: 7005 moveq #5,%d0 <== NOT EXECUTED
compacted_segs += segments;
}
return 0;
}
44f12: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44f18: 4e5e unlk %fp <== NOT EXECUTED
44f1a: 4e75 rts <== NOT EXECUTED
if (ret)
return ret;
}
else
{
rtems_fdisk_error ("compacting: starvation");
44f1c: 4879 0006 fe52 pea 6fe52 <map.6766+0x29c> <== NOT EXECUTED
44f22: 4eba f3c2 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
44f26: 588f addql #4,%sp <== NOT EXECUTED
return EIO;
44f28: 7005 moveq #5,%d0 <== NOT EXECUTED
compacted_segs += segments;
}
return 0;
}
44f2a: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44f30: 4e5e unlk %fp <== NOT EXECUTED
44f32: 4e75 rts <== NOT EXECUTED
queue->head = sc->next;
if (!queue->head)
queue->tail = 0;
queue->count--;
44f34: 53ab 0048 subql #1,%a3@(72) <== NOT EXECUTED
44f38: 202b 0034 movel %a3@(52),%d0 <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
if (!queue->head)
queue->tail = 0;
44f3c: 42ab 0044 clrl %a3@(68) <== NOT EXECUTED
queue->count--;
sc->next = 0;
44f40: 4292 clrl %a2@ <== NOT EXECUTED
44f42: 6000 fdfc braw 44d40 <rtems_fdisk_compact+0x46> <== NOT EXECUTED
return EIO;
}
}
else
{
rtems_fdisk_error ("compacting: nothing to recycle");
44f46: 4879 0006 fefa pea 6fefa <map.6766+0x344> <== NOT EXECUTED
44f4c: 4eba f398 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
44f50: 588f addql #4,%sp <== NOT EXECUTED
return EIO;
44f52: 7005 moveq #5,%d0 <== NOT EXECUTED
compacted_segs += segments;
}
return 0;
}
44f54: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44f5a: 4e5e unlk %fp <== NOT EXECUTED
44f5c: 4e75 rts <== NOT EXECUTED
queue->head = sc->next;
if (!queue->head)
queue->tail = 0;
queue->count--;
44f5e: 53ab 003c subql #1,%a3@(60) <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
if (!queue->head)
queue->tail = 0;
44f62: 42ab 0038 clrl %a3@(56) <== NOT EXECUTED
queue->count--;
sc->next = 0;
44f66: 4292 clrl %a2@ <== NOT EXECUTED
44f68: 6000 fdd6 braw 44d40 <rtems_fdisk_compact+0x46> <== NOT EXECUTED
00044356 <rtems_fdisk_erase_segment>:
/**
* Erase the segment.
*/
static int
rtems_fdisk_erase_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{
44356: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4435a: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4435e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int ret;
uint32_t device;
uint32_t segment;
const rtems_fdisk_segment_desc* sd;
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
44362: 222a 0008 movel %a2@(8),%d1 <== NOT EXECUTED
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
44366: 2401 movel %d1,%d2 <== NOT EXECUTED
44368: 2001 movel %d1,%d0 <== NOT EXECUTED
/**
* Erase the segment.
*/
static int
rtems_fdisk_erase_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{
4436a: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
4436e: e58a lsll #2,%d2 <== NOT EXECUTED
44370: e988 lsll #4,%d0 <== NOT EXECUTED
44372: 206b 002c moveal %a3@(44),%a0 <== NOT EXECUTED
44376: 9082 subl %d2,%d0 <== NOT EXECUTED
44378: d1c0 addal %d0,%a0 <== NOT EXECUTED
const rtems_fdisk_segment_desc* sd;
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
segment = sc->segment;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
4437a: 2268 0008 moveal %a0@(8),%a1 <== NOT EXECUTED
uint32_t device;
uint32_t segment;
const rtems_fdisk_segment_desc* sd;
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
segment = sc->segment;
4437e: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
44382: 2400 movel %d0,%d2 <== NOT EXECUTED
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
segment = sc->segment;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
ret = ops->erase (sd, device, segment);
44384: 2269 0008 moveal %a1@(8),%a1 <== NOT EXECUTED
44388: 2f00 movel %d0,%sp@- <== NOT EXECUTED
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
4438a: e98a lsll #4,%d2 <== NOT EXECUTED
4438c: ed88 lsll #6,%d0 <== NOT EXECUTED
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
segment = sc->segment;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
ret = ops->erase (sd, device, segment);
4438e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
44390: 2050 moveal %a0@,%a0 <== NOT EXECUTED
44392: 9082 subl %d2,%d0 <== NOT EXECUTED
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
segment = sc->segment;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
ret = ops->erase (sd, device, segment);
44394: 2f30 0804 movel %a0@(00000004,%d0:l),%sp@- <== NOT EXECUTED
44398: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED
4439c: 4e90 jsr %a0@ <== NOT EXECUTED
if (ret)
4439e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
segment = sc->segment;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
ret = ops->erase (sd, device, segment);
443a2: 2400 movel %d0,%d2 <== NOT EXECUTED
if (ret)
443a4: 6758 beqs 443fe <rtems_fdisk_erase_segment+0xa8> <== NOT EXECUTED
{
rtems_fdisk_error (" erase-segment:%02d-%03d: " \
443a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
443a8: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
443ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED
443b0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
443b2: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
443b6: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
443ba: 4879 0006 fc0e pea 6fc0e <map.6766+0x58> <== NOT EXECUTED
443c0: 4eba ff24 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
443c4: 206b 0058 moveal %a3@(88),%a0 <== NOT EXECUTED
if (ret)
{
rtems_fdisk_error (" erase-segment:%02d-%03d: " \
"segment erase failed: %s (%d)",
sc->device, sc->segment, strerror (ret), ret);
sc->failed = true;
443c8: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
443ca: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
if (ret)
{
rtems_fdisk_error (" erase-segment:%02d-%03d: " \
"segment erase failed: %s (%d)",
sc->device, sc->segment, strerror (ret), ret);
sc->failed = true;
443ce: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
443d2: 4a88 tstl %a0 <== NOT EXECUTED
443d4: 6700 0094 beqw 4446a <rtems_fdisk_erase_segment+0x114><== NOT EXECUTED
{
if (it == sc)
443d8: b1ca cmpal %a2,%a0 <== NOT EXECUTED
443da: 6716 beqs 443f2 <rtems_fdisk_erase_segment+0x9c> <== NOT EXECUTED
return true;
it = it->next;
443dc: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
443de: 4a88 tstl %a0 <== NOT EXECUTED
443e0: 66f6 bnes 443d8 <rtems_fdisk_erase_segment+0x82> <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = 0;
443e2: 4292 clrl %a2@ <== NOT EXECUTED
if (queue->head)
{
queue->tail->next = sc;
443e4: 206b 005c moveal %a3@(92),%a0 <== NOT EXECUTED
443e8: 208a movel %a2,%a0@ <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
443ea: 52ab 0060 addql #1,%a3@(96) <== NOT EXECUTED
sc->next = 0;
if (queue->head)
{
queue->tail->next = sc;
queue->tail = sc;
443ee: 274a 005c movel %a2,%a3@(92) <== NOT EXECUTED
* segment will now get a go.
*/
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
return 0;
}
443f2: 2002 movel %d2,%d0 <== NOT EXECUTED
443f4: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
443fa: 4e5e unlk %fp <== NOT EXECUTED
443fc: 4e75 rts <== NOT EXECUTED
}
fd->erased_blocks += sc->pages;
sc->erased++;
memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
443fe: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED
44402: 41ea 0018 lea %a2@(24),%a0 <== NOT EXECUTED
44406: 4c10 0800 mulsl %a0@,%d0 <== NOT EXECUTED
4440a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
if (!rtems_fdisk_segment_queue_present (&fd->failed, sc))
rtems_fdisk_segment_queue_push_tail (&fd->failed, sc);
return ret;
}
fd->erased_blocks += sc->pages;
4440c: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
44410: d1ab 0028 addl %d0,%a3@(40) <== NOT EXECUTED
sc->erased++;
44414: 52aa 002c addql #1,%a2@(44) <== NOT EXECUTED
memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
44418: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
4441c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44420: 4eb9 0006 159c jsr 6159c <memset> <== NOT EXECUTED
{
if (sc)
{
sc->next = 0;
if (queue->head)
44426: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
fd->erased_blocks += sc->pages;
sc->erased++;
memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
sc->pages_active = 0;
4442a: 42aa 001c clrl %a2@(28) <== NOT EXECUTED
sc->pages_used = 0;
4442e: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
sc->pages_bad = 0;
44432: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED
sc->failed = false;
44436: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = 0;
4443a: 4292 clrl %a2@ <== NOT EXECUTED
if (queue->head)
4443c: 4aab 0034 tstl %a3@(52) <== NOT EXECUTED
44440: 671a beqs 4445c <rtems_fdisk_erase_segment+0x106><== NOT EXECUTED
{
queue->tail->next = sc;
44442: 206b 0038 moveal %a3@(56),%a0 <== NOT EXECUTED
44446: 208a movel %a2,%a0@ <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
44448: 52ab 003c addql #1,%a3@(60) <== NOT EXECUTED
sc->next = 0;
if (queue->head)
{
queue->tail->next = sc;
queue->tail = sc;
4444c: 274a 0038 movel %a2,%a3@(56) <== NOT EXECUTED
* segment will now get a go.
*/
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
return 0;
}
44450: 2002 movel %d2,%d0 <== NOT EXECUTED
44452: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
44458: 4e5e unlk %fp <== NOT EXECUTED
4445a: 4e75 rts <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
4445c: 52ab 003c addql #1,%a3@(60) <== NOT EXECUTED
queue->tail->next = sc;
queue->tail = sc;
}
else
{
queue->head = queue->tail = sc;
44460: 274a 0038 movel %a2,%a3@(56) <== NOT EXECUTED
44464: 274a 0034 movel %a2,%a3@(52) <== NOT EXECUTED
44468: 60e6 bras 44450 <rtems_fdisk_erase_segment+0xfa> <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = 0;
4446a: 4292 clrl %a2@ <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
4446c: 52ab 0060 addql #1,%a3@(96) <== NOT EXECUTED
queue->tail->next = sc;
queue->tail = sc;
}
else
{
queue->head = queue->tail = sc;
44470: 274a 005c movel %a2,%a3@(92) <== NOT EXECUTED
44474: 274a 0058 movel %a2,%a3@(88) <== NOT EXECUTED
44478: 6000 ff78 braw 443f2 <rtems_fdisk_erase_segment+0x9c> <== NOT EXECUTED
000442e6 <rtems_fdisk_error>:
* @param ... The arguments for the format text.
* @return int The number of bytes written to the output.
*/
static int
rtems_fdisk_error (const char *format, ...)
{
442e6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
int ret;
va_list args;
va_start (args, format);
fprintf (stderr, "fdisk:error:");
442ea: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
* @param ... The arguments for the format text.
* @return int The number of bytes written to the output.
*/
static int
rtems_fdisk_error (const char *format, ...)
{
442f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int ret;
va_list args;
va_start (args, format);
fprintf (stderr, "fdisk:error:");
442f2: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
442f6: 4878 000c pea c <OPER1> <== NOT EXECUTED
442fa: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
442fe: 4879 0006 fc01 pea 6fc01 <map.6766+0x4b> <== NOT EXECUTED
44304: 4eb9 0006 123e jsr 6123e <fwrite> <== NOT EXECUTED
ret = vfprintf (stderr, format, args);
4430a: 486e 000c pea %fp@(12) <== NOT EXECUTED
4430e: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
44314: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
44318: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
4431c: 4eb9 0006 86e0 jsr 686e0 <vfprintf> <== NOT EXECUTED
fprintf (stderr, "\n");
44322: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
{
int ret;
va_list args;
va_start (args, format);
fprintf (stderr, "fdisk:error:");
ret = vfprintf (stderr, format, args);
44328: 2400 movel %d0,%d2 <== NOT EXECUTED
fprintf (stderr, "\n");
4432a: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
4432e: 4878 000a pea a <LASTO> <== NOT EXECUTED
44332: 4eb9 0006 0bc0 jsr 60bc0 <fputc> <== NOT EXECUTED
fflush (stderr);
44338: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
4433e: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
44342: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
44346: 4eb9 0006 0792 jsr 60792 <fflush> <== NOT EXECUTED
va_end (args);
return ret;
}
4434c: 2002 movel %d2,%d0 <== NOT EXECUTED
4434e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
44352: 4e5e unlk %fp <== NOT EXECUTED
000440c2 <rtems_fdisk_info>:
*/
static int
rtems_fdisk_info (const rtems_flashdisk* fd, const char *format, ...)
{
int ret = 0;
if (fd->info_level >= 2)
440c2: 7001 moveq #1,%d0
* @param ... The arguments for the format text.
* @return int The number of bytes written to the output.
*/
static int
rtems_fdisk_info (const rtems_flashdisk* fd, const char *format, ...)
{
440c4: 4e56 0000 linkw %fp,#0
440c8: 206e 0008 moveal %fp@(8),%a0
440cc: 2f02 movel %d2,%sp@-
int ret = 0;
if (fd->info_level >= 2)
440ce: b0a8 006c cmpl %a0@(108),%d0
440d2: 646c bccs 44140 <rtems_fdisk_info+0x7e> <== ALWAYS TAKEN
{
va_list args;
va_start (args, format);
fprintf (stdout, "fdisk:");
440d4: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
440da: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
440de: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
440e2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
440e6: 4879 0006 fbc7 pea 6fbc7 <map.6766+0x11> <== NOT EXECUTED
440ec: 4eb9 0006 123e jsr 6123e <fwrite> <== NOT EXECUTED
ret = vfprintf (stdout, format, args);
440f2: 486e 0010 pea %fp@(16) <== NOT EXECUTED
440f6: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
440fc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
44100: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44104: 4eb9 0006 86e0 jsr 686e0 <vfprintf> <== NOT EXECUTED
fprintf (stdout, "\n");
4410a: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
if (fd->info_level >= 2)
{
va_list args;
va_start (args, format);
fprintf (stdout, "fdisk:");
ret = vfprintf (stdout, format, args);
44110: 2400 movel %d0,%d2 <== NOT EXECUTED
fprintf (stdout, "\n");
44112: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44116: 4878 000a pea a <LASTO> <== NOT EXECUTED
4411a: 4eb9 0006 0bc0 jsr 60bc0 <fputc> <== NOT EXECUTED
fflush (stdout);
44120: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
44126: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
4412a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4412e: 4eb9 0006 0792 jsr 60792 <fflush> <== NOT EXECUTED
va_end (args);
44134: 588f addql #4,%sp <== NOT EXECUTED
}
return ret;
}
44136: 2002 movel %d2,%d0 <== NOT EXECUTED
44138: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4413c: 4e5e unlk %fp <== NOT EXECUTED
4413e: 4e75 rts <== NOT EXECUTED
* @return int The number of bytes written to the output.
*/
static int
rtems_fdisk_info (const rtems_flashdisk* fd, const char *format, ...)
{
int ret = 0;
44140: 4282 clrl %d2
fprintf (stdout, "\n");
fflush (stdout);
va_end (args);
}
return ret;
}
44142: 2002 movel %d2,%d0
44144: 242e fffc movel %fp@(-4),%d2
44148: 4e5e unlk %fp <== NOT EXECUTED
0004623c <rtems_fdisk_initialize>:
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
rtems_device_minor_number minor,
void* arg __attribute__((unused)))
{
4623c: 4e56 ffb4 linkw %fp,#-76
46240: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
const rtems_flashdisk_config* c = rtems_flashdisk_configuration;
rtems_flashdisk* fd;
rtems_status_code sc;
sc = rtems_disk_io_initialize ();
46244: 4eb9 0004 3e50 jsr 43e50 <rtems_disk_io_initialize>
if (sc != RTEMS_SUCCESSFUL)
4624a: 4a80 tstl %d0
4624c: 670a beqs 46258 <rtems_fdisk_initialize+0x1c> <== ALWAYS TAKEN
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
4624e: 4cee 3cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a5 <== NOT EXECUTED
46254: 4e5e unlk %fp <== NOT EXECUTED
46256: 4e75 rts <== NOT EXECUTED
static rtems_status_code
rtems_fdisk_crc16_gen_factors (uint16_t pattern)
{
uint32_t b;
rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);
46258: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb>
4625c: 4eb9 0004 794c jsr 4794c <malloc>
if (!rtems_fdisk_crc16_factor)
46262: 588f addql #4,%sp
static rtems_status_code
rtems_fdisk_crc16_gen_factors (uint16_t pattern)
{
uint32_t b;
rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);
46264: 23c0 0008 4fa0 movel %d0,84fa0 <rtems_fdisk_crc16_factor>
if (!rtems_fdisk_crc16_factor)
4626a: 6700 02ec beqw 46558 <rtems_fdisk_initialize+0x31c>
4626e: 2440 moveal %d0,%a2
46270: 93c9 subal %a1,%a1
return RTEMS_NO_MEMORY;
for (b = 0; b < 256; b++)
{
uint32_t i;
uint16_t v = b;
46272: 307c 0008 moveaw #8,%a0
46276: 3009 movew %a1,%d0
for (i = 8; i--;)
v = v & 1 ? (v >> 1) ^ pattern : v >> 1;
46278: 4281 clrl %d1
4627a: 3200 movew %d0,%d1
4627c: 2401 movel %d1,%d2
4627e: e289 lsrl #1,%d1
46280: 0800 0000 btst #0,%d0
46284: 6700 02c2 beqw 46548 <rtems_fdisk_initialize+0x30c>
46288: 2001 movel %d1,%d0
4628a: 5388 subql #1,%a0
4628c: 0a80 ffff 8408 eoril #-31736,%d0
for (b = 0; b < 256; b++)
{
uint32_t i;
uint16_t v = b;
for (i = 8; i--;)
46292: 4a88 tstl %a0
46294: 66e2 bnes 46278 <rtems_fdisk_initialize+0x3c>
rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);
if (!rtems_fdisk_crc16_factor)
return RTEMS_NO_MEMORY;
for (b = 0; b < 256; b++)
46296: 5289 addql #1,%a1
{
uint32_t i;
uint16_t v = b;
for (i = 8; i--;)
v = v & 1 ? (v >> 1) ^ pattern : v >> 1;
rtems_fdisk_crc16_factor[b] = v & 0xffff;
46298: 34c0 movew %d0,%a2@+
rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);
if (!rtems_fdisk_crc16_factor)
return RTEMS_NO_MEMORY;
for (b = 0; b < 256; b++)
4629a: b3fc 0000 0100 cmpal #256,%a1
462a0: 66d0 bnes 46272 <rtems_fdisk_initialize+0x36>
sc = rtems_fdisk_crc16_gen_factors (0x8408);
if (sc != RTEMS_SUCCESSFUL)
return sc;
rtems_flashdisks = calloc (rtems_flashdisk_configuration_size,
462a2: 4878 0074 pea 74 <DBL_MANT_DIG+0x3f>
462a6: 2439 0007 40e8 movel 740e8 <rtems_flashdisk_configuration_size>,%d2
462ac: 2f02 movel %d2,%sp@-
462ae: 4eb9 0004 6f64 jsr 46f64 <calloc>
sizeof (rtems_flashdisk));
if (!rtems_flashdisks)
462b4: 508f addql #8,%sp
sc = rtems_fdisk_crc16_gen_factors (0x8408);
if (sc != RTEMS_SUCCESSFUL)
return sc;
rtems_flashdisks = calloc (rtems_flashdisk_configuration_size,
462b6: 23c0 0008 4f98 movel %d0,84f98 <rtems_flashdisks>
sizeof (rtems_flashdisk));
if (!rtems_flashdisks)
462bc: 6700 029a beqw 46558 <rtems_fdisk_initialize+0x31c>
return RTEMS_NO_MEMORY;
for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
462c0: 4a82 tstl %d2
462c2: 6700 03a8 beqw 4666c <rtems_fdisk_initialize+0x430>
462c6: 41f9 0006 f218 lea 6f218 <rtems_flashdisk_configuration+0x4>,%a0
462cc: 47f9 0006 f214 lea 6f214 <rtems_flashdisk_configuration>,%a3
462d2: 2d48 ffe4 movel %a0,%fp@(-28)
462d6: 41f9 0006 f21c lea 6f21c <rtems_flashdisk_configuration+0x8>,%a0
462dc: 42ae ffdc clrl %fp@(-36)
462e0: 2d48 ffe0 movel %a0,%fp@(-32)
462e4: 42ae ffe8 clrl %fp@(-24)
dev_t dev = rtems_filesystem_make_dev_t (major, minor);
uint32_t device;
uint32_t blocks = 0;
int ret;
fd = &rtems_flashdisks[minor];
462e8: 246e ffdc moveal %fp@(-36),%a2
462ec: d5c0 addal %d0,%a2
{
union __rtems_dev_t temp;
temp.__overlay.major = _major;
temp.__overlay.minor = _minor;
return temp.device;
462ee: 202e 0008 movel %fp@(8),%d0
462f2: 2d40 ffec movel %d0,%fp@(-20)
462f6: 202e ffe8 movel %fp@(-24),%d0
if (!rtems_flashdisks)
return RTEMS_NO_MEMORY;
for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
{
char name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";
462fa: 307c 6100 moveaw #24832,%a0
462fe: 2d40 fff0 movel %d0,%fp@(-16)
uint32_t blocks = 0;
int ret;
fd = &rtems_flashdisks[minor];
name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;
46302: 102e ffeb moveb %fp@(-21),%d0
if (!rtems_flashdisks)
return RTEMS_NO_MEMORY;
for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
{
char name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";
46306: 3d48 fffe movew %a0,%fp@(-2)
4630a: 207c 2f64 6576 moveal #795108726,%a0
uint32_t blocks = 0;
int ret;
fd = &rtems_flashdisks[minor];
name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;
46310: 1d40 ffff moveb %d0,%fp@(-1)
if (!rtems_flashdisks)
return RTEMS_NO_MEMORY;
for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
{
char name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";
46314: 203c 2f66 6464 movel #795239524,%d0
4631a: 2d48 fff6 movel %a0,%fp@(-10)
fd->avail_compact_segs = c->avail_compact_segs;
fd->block_size = c->block_size;
fd->unavail_blocks = c->unavail_blocks;
fd->info_level = c->info_level;
for (device = 0; device < c->device_count; device++)
4631e: 206e ffe4 moveal %fp@(-28),%a0
if (!rtems_flashdisks)
return RTEMS_NO_MEMORY;
for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
{
char name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";
46322: 2d40 fffa movel %d0,%fp@(-6)
name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;
fd->major = major;
fd->minor = minor;
fd->flags = c->flags;
46326: 256b 000c 0008 movel %a3@(12),%a2@(8)
fd->compact_segs = c->compact_segs;
fd->avail_compact_segs = c->avail_compact_segs;
fd->block_size = c->block_size;
4632c: 2413 movel %a3@,%d2
name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;
fd->major = major;
fd->minor = minor;
fd->flags = c->flags;
fd->compact_segs = c->compact_segs;
4632e: 256b 0014 000c movel %a3@(20),%a2@(12)
fd->avail_compact_segs = c->avail_compact_segs;
46334: 256b 0018 0010 movel %a3@(24),%a2@(16)
fd->block_size = c->block_size;
fd->unavail_blocks = c->unavail_blocks;
fd->info_level = c->info_level;
for (device = 0; device < c->device_count; device++)
4633a: 2c10 movel %a0@,%d6
fd->minor = minor;
fd->flags = c->flags;
fd->compact_segs = c->compact_segs;
fd->avail_compact_segs = c->avail_compact_segs;
fd->block_size = c->block_size;
fd->unavail_blocks = c->unavail_blocks;
4633c: 256b 0010 0020 movel %a3@(16),%a2@(32)
fd->info_level = c->info_level;
46342: 256b 001c 006c movel %a3@(28),%a2@(108)
fd = &rtems_flashdisks[minor];
name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;
fd->major = major;
fd->minor = minor;
46348: 202e ffe8 movel %fp@(-24),%d0
fd = &rtems_flashdisks[minor];
name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;
fd->major = major;
4634c: 24ae 0008 movel %fp@(8),%a2@
fd->minor = minor;
46350: 2540 0004 movel %d0,%a2@(4)
fd->flags = c->flags;
fd->compact_segs = c->compact_segs;
fd->avail_compact_segs = c->avail_compact_segs;
fd->block_size = c->block_size;
46354: 2542 0014 movel %d2,%a2@(20)
fd->unavail_blocks = c->unavail_blocks;
fd->info_level = c->info_level;
for (device = 0; device < c->device_count; device++)
46358: 4a86 tstl %d6
4635a: 6700 021a beqw 46576 <rtems_fdisk_initialize+0x33a>
* @param major Flash disk major device number.
* @param minor Minor device number, not applicable.
* @param arg Initialization argument, not applicable.
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
4635e: 2206 movel %d6,%d1
46360: 2006 movel %d6,%d0
for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
{
char name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";
dev_t dev = rtems_filesystem_make_dev_t (major, minor);
uint32_t device;
uint32_t blocks = 0;
46362: 4287 clrl %d7
46364: 206e ffe0 moveal %fp@(-32),%a0
* @param major Flash disk major device number.
* @param minor Minor device number, not applicable.
* @param arg Initialization argument, not applicable.
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
46368: e589 lsll #2,%d1
4636a: e988 lsll #4,%d0
4636c: 2850 moveal %a0@,%a4
4636e: 9081 subl %d1,%d0
46370: 4bf4 0800 lea %a4@(00000000,%d0:l),%a5
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
46374: 2814 movel %a4@,%d4
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,
uint32_t page_size)
{
uint32_t count = 0;
uint32_t s;
for (s = 0; s < dd->segment_count; s++)
46376: 6700 01ec beqw 46564 <rtems_fdisk_initialize+0x328>
* @param major Flash disk major device number.
* @param minor Minor device number, not applicable.
* @param arg Initialization argument, not applicable.
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
4637a: 2004 movel %d4,%d0
*/
static uint32_t
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,
uint32_t page_size)
{
uint32_t count = 0;
4637c: 93c9 subal %a1,%a1
* @param major Flash disk major device number.
* @param minor Minor device number, not applicable.
* @param arg Initialization argument, not applicable.
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
4637e: e588 lsll #2,%d0
46380: e98c lsll #4,%d4
46382: 206c 0004 moveal %a4@(4),%a0
46386: 9880 subl %d0,%d4
46388: d888 addl %a0,%d4
*/
static uint32_t
rtems_fdisk_pages_in_segment (const rtems_fdisk_segment_desc* sd,
uint32_t page_size)
{
return sd->size / page_size;
4638a: 2228 0008 movel %a0@(8),%d1
for (s = 0; s < dd->segment_count; s++)
{
const rtems_fdisk_segment_desc* sd = &dd->segments[s];
count +=
(rtems_fdisk_pages_in_segment (sd, page_size) -
rtems_fdisk_page_desc_pages (sd, page_size)) * sd->count;
4638e: 4283 clrl %d3
*/
static uint32_t
rtems_fdisk_pages_in_segment (const rtems_fdisk_segment_desc* sd,
uint32_t page_size)
{
return sd->size / page_size;
46390: 4c42 1001 remul %d2,%d1,%d1
for (s = 0; s < dd->segment_count; s++)
{
const rtems_fdisk_segment_desc* sd = &dd->segments[s];
count +=
(rtems_fdisk_pages_in_segment (sd, page_size) -
rtems_fdisk_page_desc_pages (sd, page_size)) * sd->count;
46394: 3610 movew %a0@,%d3
46396: 41e8 000c lea %a0@(12),%a0
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,
uint32_t page_size)
{
uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);
uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);
return ((bytes - 1) / page_size) + 1;
4639a: 2001 movel %d1,%d0
4639c: 5380 subql #1,%d0
static uint32_t
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,
uint32_t page_size)
{
uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);
uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);
4639e: e789 lsll #3,%d1
return ((bytes - 1) / page_size) + 1;
463a0: 5381 subql #1,%d1
463a2: 4c42 1001 remul %d2,%d1,%d1
uint32_t s;
for (s = 0; s < dd->segment_count; s++)
{
const rtems_fdisk_segment_desc* sd = &dd->segments[s];
count +=
(rtems_fdisk_pages_in_segment (sd, page_size) -
463a6: 9081 subl %d1,%d0
rtems_fdisk_page_desc_pages (sd, page_size)) * sd->count;
463a8: 4c03 0800 mulsl %d3,%d0
uint32_t count = 0;
uint32_t s;
for (s = 0; s < dd->segment_count; s++)
{
const rtems_fdisk_segment_desc* sd = &dd->segments[s];
count +=
463ac: d3c0 addal %d0,%a1
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,
uint32_t page_size)
{
uint32_t count = 0;
uint32_t s;
for (s = 0; s < dd->segment_count; s++)
463ae: b888 cmpl %a0,%d4
463b0: 66d8 bnes 4638a <rtems_fdisk_initialize+0x14e> <== NEVER TAKEN
fd->block_size = c->block_size;
fd->unavail_blocks = c->unavail_blocks;
fd->info_level = c->info_level;
for (device = 0; device < c->device_count; device++)
blocks += rtems_fdisk_blocks_in_device (&c->devices[device],
463b2: de89 addl %a1,%d7
463b4: 49ec 000c lea %a4@(12),%a4
fd->avail_compact_segs = c->avail_compact_segs;
fd->block_size = c->block_size;
fd->unavail_blocks = c->unavail_blocks;
fd->info_level = c->info_level;
for (device = 0; device < c->device_count; device++)
463b8: bbcc cmpal %a4,%a5
463ba: 66b8 bnes 46374 <rtems_fdisk_initialize+0x138> <== NEVER TAKEN
c->block_size);
/*
* One copy buffer of a page size.
*/
fd->copy_buffer = malloc (c->block_size);
463bc: 2f02 movel %d2,%sp@-
463be: 4eb9 0004 794c jsr 4794c <malloc>
if (!fd->copy_buffer)
463c4: 588f addql #4,%sp
c->block_size);
/*
* One copy buffer of a page size.
*/
fd->copy_buffer = malloc (c->block_size);
463c6: 2540 0068 movel %d0,%a2@(104)
if (!fd->copy_buffer)
463ca: 6700 018c beqw 46558 <rtems_fdisk_initialize+0x31c>
return RTEMS_NO_MEMORY;
fd->blocks = calloc (blocks, sizeof (rtems_fdisk_block_ctl));
463ce: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
463d2: 2f07 movel %d7,%sp@-
463d4: 4eb9 0004 6f64 jsr 46f64 <calloc>
if (!fd->blocks)
463da: 508f addql #8,%sp
*/
fd->copy_buffer = malloc (c->block_size);
if (!fd->copy_buffer)
return RTEMS_NO_MEMORY;
fd->blocks = calloc (blocks, sizeof (rtems_fdisk_block_ctl));
463dc: 2540 0018 movel %d0,%a2@(24)
if (!fd->blocks)
463e0: 6700 0176 beqw 46558 <rtems_fdisk_initialize+0x31c>
return RTEMS_NO_MEMORY;
fd->block_count = blocks;
463e4: 2547 001c movel %d7,%a2@(28)
fd->devices = calloc (c->device_count, sizeof (rtems_fdisk_device_ctl));
463e8: 4878 000c pea c <OPER1>
463ec: 2f06 movel %d6,%sp@-
463ee: 4eb9 0004 6f64 jsr 46f64 <calloc>
if (!fd->devices)
463f4: 508f addql #8,%sp
if (!fd->blocks)
return RTEMS_NO_MEMORY;
fd->block_count = blocks;
fd->devices = calloc (c->device_count, sizeof (rtems_fdisk_device_ctl));
463f6: 2540 002c movel %d0,%a2@(44)
if (!fd->devices)
463fa: 6700 015c beqw 46558 <rtems_fdisk_initialize+0x31c>
return RTEMS_NO_MEMORY;
sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
463fe: 486a 0064 pea %a2@(100)
46402: 42a7 clrl %sp@-
46404: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
46408: 4878 0001 pea 1 <ADD>
4640c: 2f3c 4644 534b movel #1178882891,%sp@-
46412: 4eb9 0004 befc jsr 4befc <rtems_semaphore_create>
RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE |
RTEMS_INHERIT_PRIORITY, 0, &fd->lock);
if (sc != RTEMS_SUCCESSFUL)
46418: 4fef 0014 lea %sp@(20),%sp
4641c: 4a80 tstl %d0
4641e: 6600 0218 bnew 46638 <rtems_fdisk_initialize+0x3fc>
free (fd->blocks);
free (fd->devices);
return sc;
}
sc = rtems_disk_create_phys(dev, c->block_size,
46422: 486e fff6 pea %fp@(-10)
46426: 42a7 clrl %sp@-
46428: 487a ee42 pea %pc@(4526c <rtems_fdisk_ioctl>)
4642c: 9eaa 0020 subl %a2@(32),%d7
46430: 2f07 movel %d7,%sp@-
46432: 2f13 movel %a3@,%sp@-
46434: 2f2e fff0 movel %fp@(-16),%sp@-
46438: 2f2e ffec movel %fp@(-20),%sp@-
4643c: 4eb9 0004 3c1a jsr 43c1a <rtems_disk_create_phys>
blocks - fd->unavail_blocks,
rtems_fdisk_ioctl, NULL, name);
if (sc != RTEMS_SUCCESSFUL)
46442: 4fef 001c lea %sp@(28),%sp
46446: 4a80 tstl %d0
46448: 6600 01a2 bnew 465ec <rtems_fdisk_initialize+0x3b0>
free (fd->devices);
rtems_fdisk_error ("disk create phy failed");
return sc;
}
for (device = 0; device < c->device_count; device++)
4644c: 206e ffe4 moveal %fp@(-28),%a0
46450: 2a10 movel %a0@,%d5
46452: 6700 00a2 beqw 464f6 <rtems_fdisk_initialize+0x2ba>
46456: 206e ffe0 moveal %fp@(-32),%a0
* @param major Flash disk major device number.
* @param minor Minor device number, not applicable.
* @param arg Initialization argument, not applicable.
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
4645a: 4283 clrl %d3
4645c: 2850 moveal %a0@,%a4
4645e: 2a6a 002c moveal %a2@(44),%a5
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
46462: 2c14 movel %a4@,%d6
static uint32_t
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)
{
uint32_t count = 0;
uint32_t segment;
for (segment = 0; segment < dd->segment_count; segment++)
46464: 6700 0156 beqw 465bc <rtems_fdisk_initialize+0x380>
* @param major Flash disk major device number.
* @param minor Minor device number, not applicable.
* @param arg Initialization argument, not applicable.
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
46468: 2406 movel %d6,%d2
* Count the segments for a device.
*/
static uint32_t
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)
{
uint32_t count = 0;
4646a: 4284 clrl %d4
* @param major Flash disk major device number.
* @param minor Minor device number, not applicable.
* @param arg Initialization argument, not applicable.
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
4646c: e98e lsll #4,%d6
4646e: e58a lsll #2,%d2
46470: 206c 0004 moveal %a4@(4),%a0
46474: 2206 movel %d6,%d1
46476: 9282 subl %d2,%d1
46478: d288 addl %a0,%d1
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)
{
uint32_t count = 0;
uint32_t segment;
for (segment = 0; segment < dd->segment_count; segment++)
count += dd->segments[segment].count;
4647a: 4280 clrl %d0
4647c: 3010 movew %a0@,%d0
4647e: 41e8 000c lea %a0@(12),%a0
46482: d880 addl %d0,%d4
static uint32_t
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)
{
uint32_t count = 0;
uint32_t segment;
for (segment = 0; segment < dd->segment_count; segment++)
46484: b288 cmpl %a0,%d1
46486: 66f2 bnes 4647a <rtems_fdisk_initialize+0x23e> <== NEVER TAKEN
uint32_t segment_count;
uint32_t segment;
segment_count = rtems_fdisk_count_segments (&c->devices[device]);
fd->devices[device].segments = calloc (segment_count,
46488: 4878 0030 pea 30 <OPER2+0x1c>
4648c: 2f04 movel %d4,%sp@-
4648e: 4eb9 0004 6f64 jsr 46f64 <calloc>
sizeof (rtems_fdisk_segment_ctl));
if (!fd->devices[device].segments)
46494: 508f addql #8,%sp
uint32_t segment_count;
uint32_t segment;
segment_count = rtems_fdisk_count_segments (&c->devices[device]);
fd->devices[device].segments = calloc (segment_count,
46496: 2a80 movel %d0,%a5@
sizeof (rtems_fdisk_segment_ctl));
if (!fd->devices[device].segments)
46498: 6700 00e2 beqw 4657c <rtems_fdisk_initialize+0x340>
4649c: 226c 0004 moveal %a4@(4),%a1
* @param major Flash disk major device number.
* @param minor Minor device number, not applicable.
* @param arg Initialization argument, not applicable.
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
464a0: 9c82 subl %d2,%d6
464a2: dc89 addl %a1,%d6
const rtems_fdisk_segment_desc* sd;
uint32_t seg_segment;
sd = &c->devices[device].segments[segment];
for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
464a4: 3411 movew %a1@,%d2
464a6: 672e beqs 464d6 <rtems_fdisk_initialize+0x29a> <== NEVER TAKEN
* @param major Flash disk major device number.
* @param minor Minor device number, not applicable.
* @param arg Initialization argument, not applicable.
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
464a8: 2040 moveal %d0,%a0
464aa: 5888 addql #4,%a0
const rtems_fdisk_segment_desc* sd;
uint32_t seg_segment;
sd = &c->devices[device].segments[segment];
for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
464ac: 4281 clrl %d1
464ae: 0282 0000 ffff andil #65535,%d2
{
sc->descriptor = sd;
sc->device = device;
sc->segment = seg_segment;
464b4: 2141 0008 movel %d1,%a0@(8)
const rtems_fdisk_segment_desc* sd;
uint32_t seg_segment;
sd = &c->devices[device].segments[segment];
for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
464b8: 5281 addql #1,%d1
{
sc->descriptor = sd;
464ba: 2089 movel %a1,%a0@
sc->device = device;
464bc: 2143 0004 movel %d3,%a0@(4)
sc->segment = seg_segment;
sc->erased = 0;
464c0: 42a8 0028 clrl %a0@(40)
464c4: 41e8 0030 lea %a0@(48),%a0
const rtems_fdisk_segment_desc* sd;
uint32_t seg_segment;
sd = &c->devices[device].segments[segment];
for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
464c8: b481 cmpl %d1,%d2
464ca: 62e8 bhis 464b4 <rtems_fdisk_initialize+0x278>
* @param major Flash disk major device number.
* @param minor Minor device number, not applicable.
* @param arg Initialization argument, not applicable.
*/
rtems_device_driver
rtems_fdisk_initialize (rtems_device_major_number major,
464cc: 2202 movel %d2,%d1
464ce: ed8a lsll #6,%d2
464d0: e989 lsll #4,%d1
464d2: 9481 subl %d1,%d2
464d4: d082 addl %d2,%d0
464d6: 43e9 000c lea %a1@(12),%a1
return RTEMS_NO_MEMORY;
}
sc = fd->devices[device].segments;
for (segment = 0; segment < c->devices[device].segment_count; segment++)
464da: bc89 cmpl %a1,%d6
464dc: 66c6 bnes 464a4 <rtems_fdisk_initialize+0x268> <== NEVER TAKEN
sc->erased = 0;
}
}
fd->devices[device].segment_count = segment_count;
fd->devices[device].descriptor = &c->devices[device];
464de: 2b4c 0008 movel %a4,%a5@(8)
free (fd->devices);
rtems_fdisk_error ("disk create phy failed");
return sc;
}
for (device = 0; device < c->device_count; device++)
464e2: 5283 addql #1,%d3
sc->segment = seg_segment;
sc->erased = 0;
}
}
fd->devices[device].segment_count = segment_count;
464e4: 2b44 0004 movel %d4,%a5@(4)
464e8: 49ec 000c lea %a4@(12),%a4
464ec: 4bed 000c lea %a5@(12),%a5
free (fd->devices);
rtems_fdisk_error ("disk create phy failed");
return sc;
}
for (device = 0; device < c->device_count; device++)
464f0: ba83 cmpl %d3,%d5
464f2: 6600 ff6e bnew 46462 <rtems_fdisk_initialize+0x226>
fd->devices[device].segment_count = segment_count;
fd->devices[device].descriptor = &c->devices[device];
}
fd->device_count = c->device_count;
464f6: 2545 0030 movel %d5,%a2@(48)
ret = rtems_fdisk_recover_block_mappings (fd);
464fa: 2f0a movel %a2,%sp@-
464fc: 4eba ea6e jsr %pc@(44f6c <rtems_fdisk_recover_block_mappings>)
if (ret)
46500: 588f addql #4,%sp
46502: 4a80 tstl %d0
46504: 6600 01d0 bnew 466d6 <rtems_fdisk_initialize+0x49a>
rtems_fdisk_error ("recovery of disk failed: %s (%d)",
strerror (ret), ret);
return ret;
}
ret = rtems_fdisk_compact (fd);
46508: 2f0a movel %a2,%sp@-
4650a: 4eba e7ee jsr %pc@(44cfa <rtems_fdisk_compact>)
if (ret)
4650e: 588f addql #4,%sp
46510: 4a80 tstl %d0
46512: 6600 016a bnew 4667e <rtems_fdisk_initialize+0x442>
46516: 7074 moveq #116,%d0
46518: d1ae ffdc addl %d0,%fp@(-36)
4651c: 103c 0020 moveb #32,%d0
sizeof (rtems_flashdisk));
if (!rtems_flashdisks)
return RTEMS_NO_MEMORY;
for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
46520: 52ae ffe8 addql #1,%fp@(-24)
46524: 47eb 0020 lea %a3@(32),%a3
46528: 2439 0007 40e8 movel 740e8 <rtems_flashdisk_configuration_size>,%d2
4652e: d1ae ffe4 addl %d0,%fp@(-28)
46532: d1ae ffe0 addl %d0,%fp@(-32)
46536: b4ae ffe8 cmpl %fp@(-24),%d2
4653a: 6300 0130 blsw 4666c <rtems_fdisk_initialize+0x430>
4653e: 2039 0008 4f98 movel 84f98 <rtems_flashdisks>,%d0 <== NOT EXECUTED
46544: 6000 fda2 braw 462e8 <rtems_fdisk_initialize+0xac> <== NOT EXECUTED
for (b = 0; b < 256; b++)
{
uint32_t i;
uint16_t v = b;
for (i = 8; i--;)
v = v & 1 ? (v >> 1) ^ pattern : v >> 1;
46548: 2002 movel %d2,%d0
4654a: e288 lsrl #1,%d0
4654c: 5388 subql #1,%a0
for (b = 0; b < 256; b++)
{
uint32_t i;
uint16_t v = b;
for (i = 8; i--;)
4654e: 4a88 tstl %a0
46550: 6600 fd26 bnew 46278 <rtems_fdisk_initialize+0x3c>
46554: 6000 fd40 braw 46296 <rtems_fdisk_initialize+0x5a>
rtems_flashdisks = calloc (rtems_flashdisk_configuration_size,
sizeof (rtems_flashdisk));
if (!rtems_flashdisks)
return RTEMS_NO_MEMORY;
46558: 701a moveq #26,%d0 <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
4655a: 4cee 3cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a5 <== NOT EXECUTED
46560: 4e5e unlk %fp <== NOT EXECUTED
46562: 4e75 rts <== NOT EXECUTED
*/
static uint32_t
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,
uint32_t page_size)
{
uint32_t count = 0;
46564: 93c9 subal %a1,%a1 <== NOT EXECUTED
fd->block_size = c->block_size;
fd->unavail_blocks = c->unavail_blocks;
fd->info_level = c->info_level;
for (device = 0; device < c->device_count; device++)
blocks += rtems_fdisk_blocks_in_device (&c->devices[device],
46566: de89 addl %a1,%d7 <== NOT EXECUTED
46568: 49ec 000c lea %a4@(12),%a4 <== NOT EXECUTED
fd->avail_compact_segs = c->avail_compact_segs;
fd->block_size = c->block_size;
fd->unavail_blocks = c->unavail_blocks;
fd->info_level = c->info_level;
for (device = 0; device < c->device_count; device++)
4656c: bbcc cmpal %a4,%a5 <== NOT EXECUTED
4656e: 6600 fe04 bnew 46374 <rtems_fdisk_initialize+0x138> <== NOT EXECUTED
46572: 6000 fe48 braw 463bc <rtems_fdisk_initialize+0x180> <== NOT EXECUTED
for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
{
char name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";
dev_t dev = rtems_filesystem_make_dev_t (major, minor);
uint32_t device;
uint32_t blocks = 0;
46576: 4287 clrl %d7 <== NOT EXECUTED
46578: 6000 fe42 braw 463bc <rtems_fdisk_initialize+0x180> <== NOT EXECUTED
fd->devices[device].segments = calloc (segment_count,
sizeof (rtems_fdisk_segment_ctl));
if (!fd->devices[device].segments)
{
rtems_disk_delete (dev);
4657c: 2f2e fff0 movel %fp@(-16),%sp@- <== NOT EXECUTED
rtems_semaphore_delete (fd->lock);
free (fd->copy_buffer);
46580: 47f9 0004 7344 lea 47344 <free>,%a3 <== NOT EXECUTED
fd->devices[device].segments = calloc (segment_count,
sizeof (rtems_fdisk_segment_ctl));
if (!fd->devices[device].segments)
{
rtems_disk_delete (dev);
46586: 2f2e ffec movel %fp@(-20),%sp@- <== NOT EXECUTED
4658a: 4eb9 0004 39ce jsr 439ce <rtems_disk_delete> <== NOT EXECUTED
rtems_semaphore_delete (fd->lock);
46590: 2f2a 0064 movel %a2@(100),%sp@- <== NOT EXECUTED
46594: 4eb9 0004 c0e8 jsr 4c0e8 <rtems_semaphore_delete> <== NOT EXECUTED
free (fd->copy_buffer);
4659a: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED
4659e: 4e93 jsr %a3@ <== NOT EXECUTED
free (fd->blocks);
465a0: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
465a4: 4e93 jsr %a3@ <== NOT EXECUTED
free (fd->devices);
465a6: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
465aa: 4e93 jsr %a3@ <== NOT EXECUTED
465ac: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
return RTEMS_NO_MEMORY;
465b0: 701a moveq #26,%d0 <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
465b2: 4cee 3cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a5 <== NOT EXECUTED
465b8: 4e5e unlk %fp <== NOT EXECUTED
465ba: 4e75 rts <== NOT EXECUTED
uint32_t segment_count;
uint32_t segment;
segment_count = rtems_fdisk_count_segments (&c->devices[device]);
fd->devices[device].segments = calloc (segment_count,
465bc: 4878 0030 pea 30 <OPER2+0x1c> <== NOT EXECUTED
465c0: 42a7 clrl %sp@- <== NOT EXECUTED
465c2: 4eb9 0004 6f64 jsr 46f64 <calloc> <== NOT EXECUTED
sizeof (rtems_fdisk_segment_ctl));
if (!fd->devices[device].segments)
465c8: 508f addql #8,%sp <== NOT EXECUTED
uint32_t segment_count;
uint32_t segment;
segment_count = rtems_fdisk_count_segments (&c->devices[device]);
fd->devices[device].segments = calloc (segment_count,
465ca: 2a80 movel %d0,%a5@ <== NOT EXECUTED
sizeof (rtems_fdisk_segment_ctl));
if (!fd->devices[device].segments)
465cc: 67ae beqs 4657c <rtems_fdisk_initialize+0x340> <== NOT EXECUTED
* Count the segments for a device.
*/
static uint32_t
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)
{
uint32_t count = 0;
465ce: 4284 clrl %d4 <== NOT EXECUTED
free (fd->devices);
rtems_fdisk_error ("disk create phy failed");
return sc;
}
for (device = 0; device < c->device_count; device++)
465d0: 5283 addql #1,%d3 <== NOT EXECUTED
sc->erased = 0;
}
}
fd->devices[device].segment_count = segment_count;
fd->devices[device].descriptor = &c->devices[device];
465d2: 2b4c 0008 movel %a4,%a5@(8) <== NOT EXECUTED
465d6: 49ec 000c lea %a4@(12),%a4 <== NOT EXECUTED
sc->segment = seg_segment;
sc->erased = 0;
}
}
fd->devices[device].segment_count = segment_count;
465da: 2b44 0004 movel %d4,%a5@(4) <== NOT EXECUTED
465de: 4bed 000c lea %a5@(12),%a5 <== NOT EXECUTED
free (fd->devices);
rtems_fdisk_error ("disk create phy failed");
return sc;
}
for (device = 0; device < c->device_count; device++)
465e2: ba83 cmpl %d3,%d5 <== NOT EXECUTED
465e4: 6600 fe7c bnew 46462 <rtems_fdisk_initialize+0x226> <== NOT EXECUTED
465e8: 6000 ff0c braw 464f6 <rtems_fdisk_initialize+0x2ba> <== NOT EXECUTED
sc = rtems_disk_create_phys(dev, c->block_size,
blocks - fd->unavail_blocks,
rtems_fdisk_ioctl, NULL, name);
if (sc != RTEMS_SUCCESSFUL)
{
rtems_semaphore_delete (fd->lock);
465ec: 2f2a 0064 movel %a2@(100),%sp@- <== NOT EXECUTED
465f0: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_disk_delete (dev);
free (fd->copy_buffer);
465f2: 47f9 0004 7344 lea 47344 <free>,%a3 <== NOT EXECUTED
sc = rtems_disk_create_phys(dev, c->block_size,
blocks - fd->unavail_blocks,
rtems_fdisk_ioctl, NULL, name);
if (sc != RTEMS_SUCCESSFUL)
{
rtems_semaphore_delete (fd->lock);
465f8: 4eb9 0004 c0e8 jsr 4c0e8 <rtems_semaphore_delete> <== NOT EXECUTED
rtems_disk_delete (dev);
465fe: 2f2e fff0 movel %fp@(-16),%sp@- <== NOT EXECUTED
46602: 2f2e ffec movel %fp@(-20),%sp@- <== NOT EXECUTED
46606: 4eb9 0004 39ce jsr 439ce <rtems_disk_delete> <== NOT EXECUTED
free (fd->copy_buffer);
4660c: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED
46610: 4e93 jsr %a3@ <== NOT EXECUTED
free (fd->blocks);
46612: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
46616: 4e93 jsr %a3@ <== NOT EXECUTED
free (fd->devices);
46618: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4661c: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_fdisk_error ("disk create phy failed");
4661e: 4879 0007 05ff pea 705ff <map.6766+0xa49> <== NOT EXECUTED
46624: 4eba dcc0 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
46628: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
free (fd->blocks);
free (fd->devices);
return sc;
}
sc = rtems_disk_create_phys(dev, c->block_size,
4662c: 2002 movel %d2,%d0 <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
4662e: 4cee 3cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a5 <== NOT EXECUTED
46634: 4e5e unlk %fp <== NOT EXECUTED
46636: 4e75 rts <== NOT EXECUTED
sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE |
RTEMS_INHERIT_PRIORITY, 0, &fd->lock);
if (sc != RTEMS_SUCCESSFUL)
{
rtems_fdisk_error ("disk lock create failed");
46638: 4879 0007 05e7 pea 705e7 <map.6766+0xa31> <== NOT EXECUTED
4663e: 2400 movel %d0,%d2 <== NOT EXECUTED
free (fd->copy_buffer);
46640: 47f9 0004 7344 lea 47344 <free>,%a3 <== NOT EXECUTED
sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE |
RTEMS_INHERIT_PRIORITY, 0, &fd->lock);
if (sc != RTEMS_SUCCESSFUL)
{
rtems_fdisk_error ("disk lock create failed");
46646: 4eba dc9e jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
free (fd->copy_buffer);
4664a: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED
4664e: 4e93 jsr %a3@ <== NOT EXECUTED
free (fd->blocks);
46650: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
46654: 4e93 jsr %a3@ <== NOT EXECUTED
free (fd->devices);
46656: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4665a: 4e93 jsr %a3@ <== NOT EXECUTED
4665c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
fd->devices = calloc (c->device_count, sizeof (rtems_fdisk_device_ctl));
if (!fd->devices)
return RTEMS_NO_MEMORY;
sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
46660: 2002 movel %d2,%d0 <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
46662: 4cee 3cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a5 <== NOT EXECUTED
46668: 4e5e unlk %fp <== NOT EXECUTED
4666a: 4e75 rts <== NOT EXECUTED
strerror (ret), ret);
return ret;
}
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
4666c: 23c2 0008 4f9c movel %d2,84f9c <rtems_flashdisk_count>
return RTEMS_SUCCESSFUL;
46672: 4280 clrl %d0
}
46674: 4cee 3cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a5
4667a: 4e5e unlk %fp
4667c: 4e75 rts
}
ret = rtems_fdisk_compact (fd);
if (ret)
{
rtems_disk_delete (dev);
4667e: 2f2e fff0 movel %fp@(-16),%sp@- <== NOT EXECUTED
46682: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_semaphore_delete (fd->lock);
free (fd->copy_buffer);
46684: 47f9 0004 7344 lea 47344 <free>,%a3 <== NOT EXECUTED
}
ret = rtems_fdisk_compact (fd);
if (ret)
{
rtems_disk_delete (dev);
4668a: 2f2e ffec movel %fp@(-20),%sp@- <== NOT EXECUTED
4668e: 4eb9 0004 39ce jsr 439ce <rtems_disk_delete> <== NOT EXECUTED
rtems_semaphore_delete (fd->lock);
46694: 2f2a 0064 movel %a2@(100),%sp@- <== NOT EXECUTED
46698: 4eb9 0004 c0e8 jsr 4c0e8 <rtems_semaphore_delete> <== NOT EXECUTED
free (fd->copy_buffer);
4669e: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED
466a2: 4e93 jsr %a3@ <== NOT EXECUTED
free (fd->blocks);
466a4: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
466a8: 4e93 jsr %a3@ <== NOT EXECUTED
free (fd->devices);
466aa: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
466ae: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_fdisk_error ("compacting of disk failed: %s (%d)",
466b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
466b2: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
466b8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
466ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED
466bc: 4879 0007 0637 pea 70637 <map.6766+0xa81> <== NOT EXECUTED
466c2: 4eba dc22 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
strerror (ret), ret);
return ret;
466c6: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
466ca: 2002 movel %d2,%d0 <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
466cc: 4cee 3cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a5 <== NOT EXECUTED
466d2: 4e5e unlk %fp <== NOT EXECUTED
466d4: 4e75 rts <== NOT EXECUTED
fd->device_count = c->device_count;
ret = rtems_fdisk_recover_block_mappings (fd);
if (ret)
{
rtems_disk_delete (dev);
466d6: 2f2e fff0 movel %fp@(-16),%sp@- <== NOT EXECUTED
466da: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_semaphore_delete (fd->lock);
free (fd->copy_buffer);
466dc: 47f9 0004 7344 lea 47344 <free>,%a3 <== NOT EXECUTED
fd->device_count = c->device_count;
ret = rtems_fdisk_recover_block_mappings (fd);
if (ret)
{
rtems_disk_delete (dev);
466e2: 2f2e ffec movel %fp@(-20),%sp@- <== NOT EXECUTED
466e6: 4eb9 0004 39ce jsr 439ce <rtems_disk_delete> <== NOT EXECUTED
rtems_semaphore_delete (fd->lock);
466ec: 2f2a 0064 movel %a2@(100),%sp@- <== NOT EXECUTED
466f0: 4eb9 0004 c0e8 jsr 4c0e8 <rtems_semaphore_delete> <== NOT EXECUTED
free (fd->copy_buffer);
466f6: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED
466fa: 4e93 jsr %a3@ <== NOT EXECUTED
free (fd->blocks);
466fc: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
46700: 4e93 jsr %a3@ <== NOT EXECUTED
free (fd->devices);
46702: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
46706: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_fdisk_error ("recovery of disk failed: %s (%d)",
46708: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4670a: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
46710: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46712: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46714: 4879 0007 0616 pea 70616 <map.6766+0xa60> <== NOT EXECUTED
4671a: 4eba dbca jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
strerror (ret), ret);
return ret;
4671e: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
46722: 2002 movel %d2,%d0 <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
46724: 4cee 3cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4672a: 4e5e unlk %fp <== NOT EXECUTED
0004526c <rtems_fdisk_ioctl>:
rtems_blkdev_request* r = argp;
rtems_status_code sc;
errno = 0;
sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
4526c: 7274 moveq #116,%d1
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
{
4526e: 4e56 ffac linkw %fp,#-84
45272: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
45276: 246e 0008 moveal %fp@(8),%a2
dev_t device
)
{
union __rtems_dev_t temp;
temp.device = device;
4527a: 262a 0004 movel %a2@(4),%d3
rtems_blkdev_request* r = argp;
rtems_status_code sc;
errno = 0;
sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
4527e: 4c03 1800 mulsl %d3,%d1
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
{
45282: 242e 000c movel %fp@(12),%d2
rtems_blkdev_request* r = argp;
rtems_status_code sc;
errno = 0;
sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
45286: 2d41 ffec movel %d1,%fp@(-20)
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
{
4528a: 2a6e 0010 moveal %fp@(16),%a5
dev_t dev = rtems_disk_get_device_identifier (dd);
rtems_device_minor_number minor = rtems_filesystem_dev_minor_t (dev);
rtems_blkdev_request* r = argp;
rtems_status_code sc;
errno = 0;
4528e: 4eb9 0006 0414 jsr 60414 <__errno>
sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
45294: 226e ffec moveal %fp@(-20),%a1
dev_t dev = rtems_disk_get_device_identifier (dd);
rtems_device_minor_number minor = rtems_filesystem_dev_minor_t (dev);
rtems_blkdev_request* r = argp;
rtems_status_code sc;
errno = 0;
45298: 2040 moveal %d0,%a0
4529a: 4290 clrl %a0@
sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
4529c: 2079 0008 4f98 moveal 84f98 <rtems_flashdisks>,%a0
452a2: 42a7 clrl %sp@-
452a4: 42a7 clrl %sp@-
452a6: 2f30 9864 movel %a0@(00000064,%a1:l),%sp@-
452aa: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain>
if (sc != RTEMS_SUCCESSFUL)
452b0: 4fef 000c lea %sp@(12),%sp
452b4: 4a80 tstl %d0
452b6: 6724 beqs 452dc <rtems_fdisk_ioctl+0x70> <== ALWAYS TAKEN
errno = EIO;
452b8: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
452be: 7605 moveq #5,%d3 <== NOT EXECUTED
452c0: 2440 moveal %d0,%a2 <== NOT EXECUTED
452c2: 2483 movel %d3,%a2@ <== NOT EXECUTED
sc = rtems_semaphore_release (rtems_flashdisks[minor].lock);
if (sc != RTEMS_SUCCESSFUL)
errno = EIO;
}
return errno == 0 ? 0 : -1;
452c4: 4eb9 0006 0414 jsr 60414 <__errno>
452ca: 2440 moveal %d0,%a2
452cc: 4a92 tstl %a2@
452ce: 56c0 sne %d0
}
452d0: 4cee 3cfc ffac moveml %fp@(-84),%d2-%d7/%a2-%a5
452d6: 4e5e unlk %fp
sc = rtems_semaphore_release (rtems_flashdisks[minor].lock);
if (sc != RTEMS_SUCCESSFUL)
errno = EIO;
}
return errno == 0 ? 0 : -1;
452d8: 49c0 extbl %d0
}
452da: 4e75 rts
sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
if (sc != RTEMS_SUCCESSFUL)
errno = EIO;
else
{
errno = 0;
452dc: 4eb9 0006 0414 jsr 60414 <__errno>
452e2: 2040 moveal %d0,%a0
452e4: 4290 clrl %a0@
switch (req)
452e6: 0c82 2000 4283 cmpil #536887939,%d2
452ec: 6700 00fc beqw 453ea <rtems_fdisk_ioctl+0x17e>
452f0: 6200 009c bhiw 4538e <rtems_fdisk_ioctl+0x122>
452f4: 0c82 2000 4281 cmpil #536887937,%d2
452fa: 6700 0270 beqw 4556c <rtems_fdisk_ioctl+0x300>
452fe: 6300 022c blsw 4552c <rtems_fdisk_ioctl+0x2c0>
case RTEMS_FDISK_IOCTL_COMPACT:
errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);
break;
case RTEMS_FDISK_IOCTL_ERASE_USED:
errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);
45302: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
45308: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED
4530c: d5f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a2 <== NOT EXECUTED
45312: 2640 moveal %d0,%a3 <== NOT EXECUTED
*/
static int
rtems_fdisk_erase_used (rtems_flashdisk* fd)
{
rtems_fdisk_segment_ctl* sc;
int latched_ret = 0;
45314: 4282 clrl %d2 <== NOT EXECUTED
{
/*
* The segment will either end up on the available queue or
* the failed queue.
*/
int ret = rtems_fdisk_erase_segment (fd, sc);
45316: 49fa f03e lea %pc@(44356 <rtems_fdisk_erase_segment>),%a4<== NOT EXECUTED
* Pop the head of the segment control queue.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{
if (queue->head)
4531a: 206a 004c moveal %a2@(76),%a0 <== NOT EXECUTED
4531e: 4a88 tstl %a0 <== NOT EXECUTED
45320: 672a beqs 4534c <rtems_fdisk_ioctl+0xe0> <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
45322: 2010 movel %a0@,%d0 <== NOT EXECUTED
45324: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
if (!queue->head)
45328: 6700 0228 beqw 45552 <rtems_fdisk_ioctl+0x2e6> <== NOT EXECUTED
queue->tail = 0;
queue->count--;
4532c: 53aa 0054 subql #1,%a2@(84) <== NOT EXECUTED
sc->next = 0;
45330: 4290 clrl %a0@ <== NOT EXECUTED
{
/*
* The segment will either end up on the available queue or
* the failed queue.
*/
int ret = rtems_fdisk_erase_segment (fd, sc);
45332: 2f08 movel %a0,%sp@- <== NOT EXECUTED
45334: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45336: 4e94 jsr %a4@ <== NOT EXECUTED
if (ret && !latched_ret)
45338: 508f addql #8,%sp <== NOT EXECUTED
4533a: 4a80 tstl %d0 <== NOT EXECUTED
4533c: 67dc beqs 4531a <rtems_fdisk_ioctl+0xae> <== NOT EXECUTED
4533e: 4a82 tstl %d2 <== NOT EXECUTED
45340: 66d8 bnes 4531a <rtems_fdisk_ioctl+0xae> <== NOT EXECUTED
* Pop the head of the segment control queue.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{
if (queue->head)
45342: 206a 004c moveal %a2@(76),%a0 <== NOT EXECUTED
/*
* The segment will either end up on the available queue or
* the failed queue.
*/
int ret = rtems_fdisk_erase_segment (fd, sc);
if (ret && !latched_ret)
45346: 2400 movel %d0,%d2 <== NOT EXECUTED
* Pop the head of the segment control queue.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{
if (queue->head)
45348: 4a88 tstl %a0 <== NOT EXECUTED
4534a: 66d6 bnes 45322 <rtems_fdisk_ioctl+0xb6> <== NOT EXECUTED
4534c: 226e ffec moveal %fp@(-20),%a1 <== NOT EXECUTED
45350: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1 <== NOT EXECUTED
case RTEMS_FDISK_IOCTL_COMPACT:
errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);
break;
case RTEMS_FDISK_IOCTL_ERASE_USED:
errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);
45356: 2682 movel %d2,%a3@ <== NOT EXECUTED
default:
rtems_blkdev_ioctl (dd, req, argp);
break;
}
sc = rtems_semaphore_release (rtems_flashdisks[minor].lock);
45358: 2f29 0064 movel %a1@(100),%sp@-
4535c: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release>
if (sc != RTEMS_SUCCESSFUL)
45362: 588f addql #4,%sp
45364: 4a80 tstl %d0
45366: 6700 ff5c beqw 452c4 <rtems_fdisk_ioctl+0x58>
errno = EIO;
4536a: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
45370: 2240 moveal %d0,%a1 <== NOT EXECUTED
45372: 7005 moveq #5,%d0 <== NOT EXECUTED
45374: 2280 movel %d0,%a1@ <== NOT EXECUTED
}
return errno == 0 ? 0 : -1;
45376: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
4537c: 2440 moveal %d0,%a2 <== NOT EXECUTED
4537e: 4a92 tstl %a2@ <== NOT EXECUTED
45380: 56c0 sne %d0 <== NOT EXECUTED
}
45382: 4cee 3cfc ffac moveml %fp@(-84),%d2-%d7/%a2-%a5 <== NOT EXECUTED
45388: 4e5e unlk %fp <== NOT EXECUTED
sc = rtems_semaphore_release (rtems_flashdisks[minor].lock);
if (sc != RTEMS_SUCCESSFUL)
errno = EIO;
}
return errno == 0 ? 0 : -1;
4538a: 49c0 extbl %d0 <== NOT EXECUTED
}
4538c: 4e75 rts <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
errno = EIO;
else
{
errno = 0;
switch (req)
4538e: 0c82 2000 4285 cmpil #536887941,%d2
45394: 6700 02cc beqw 45662 <rtems_fdisk_ioctl+0x3f6>
45398: 6500 01c0 bcsw 4555a <rtems_fdisk_ioctl+0x2ee>
4539c: 0c82 c018 4201 cmpil #-1072152063,%d2
453a2: 6600 0190 bnew 45534 <rtems_fdisk_ioctl+0x2c8>
{
case RTEMS_BLKIO_REQUEST:
if ((minor >= rtems_flashdisk_count) ||
453a6: b6b9 0008 4f9c cmpl 84f9c <rtems_flashdisk_count>,%d3
453ac: 6400 0696 bccw 45a44 <rtems_fdisk_ioctl+0x7d8>
(rtems_flashdisks[minor].device_count == 0))
453b0: 2079 0008 4f98 moveal 84f98 <rtems_flashdisks>,%a0
{
errno = 0;
switch (req)
{
case RTEMS_BLKIO_REQUEST:
if ((minor >= rtems_flashdisk_count) ||
453b6: 226e ffec moveal %fp@(-20),%a1
453ba: 4ab0 9830 tstl %a0@(00000030,%a1:l)
453be: 6700 0684 beqw 45a44 <rtems_fdisk_ioctl+0x7d8>
{
errno = ENODEV;
}
else
{
switch (r->req)
453c2: 2015 movel %a5@,%d0
453c4: 6700 0698 beqw 45a5e <rtems_fdisk_ioctl+0x7f2>
453c8: 7201 moveq #1,%d1
453ca: b280 cmpl %d0,%d1
453cc: 6700 0930 beqw 45cfe <rtems_fdisk_ioctl+0xa92>
case RTEMS_BLKDEV_REQ_WRITE:
errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
break;
default:
errno = EINVAL;
453d0: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
453d6: 226e ffec moveal %fp@(-20),%a1 <== NOT EXECUTED
453da: 2440 moveal %d0,%a2 <== NOT EXECUTED
453dc: 7216 moveq #22,%d1 <== NOT EXECUTED
453de: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1 <== NOT EXECUTED
453e4: 2481 movel %d1,%a2@ <== NOT EXECUTED
break;
453e6: 6000 ff70 braw 45358 <rtems_fdisk_ioctl+0xec> <== NOT EXECUTED
case RTEMS_FDISK_IOCTL_ERASE_USED:
errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);
break;
case RTEMS_FDISK_IOCTL_MONITORING:
errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
453ea: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
453f0: 226e ffec moveal %fp@(-20),%a1 <== NOT EXECUTED
453f4: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1 <== NOT EXECUTED
rtems_fdisk_monitor_data* data)
{
uint32_t i;
uint32_t j;
data->block_size = fd->block_size;
453fa: 2aa9 0014 movel %a1@(20),%a5@ <== NOT EXECUTED
data->block_count = fd->block_count;
453fe: 2429 001c movel %a1@(28),%d2 <== NOT EXECUTED
data->unavail_blocks = fd->unavail_blocks;
45402: 2b69 0020 0008 movel %a1@(32),%a5@(8) <== NOT EXECUTED
data->device_count = fd->device_count;
45408: 2229 0030 movel %a1@(48),%d1 <== NOT EXECUTED
{
uint32_t i;
uint32_t j;
data->block_size = fd->block_size;
data->block_count = fd->block_count;
4540c: 2b42 0004 movel %d2,%a5@(4) <== NOT EXECUTED
data->unavail_blocks = fd->unavail_blocks;
data->device_count = fd->device_count;
45410: 2b41 000c movel %d1,%a5@(12) <== NOT EXECUTED
data->blocks_used = 0;
45414: 42ad 0018 clrl %a5@(24) <== NOT EXECUTED
for (i = 0; i < fd->block_count; i++)
45418: 4a82 tstl %d2 <== NOT EXECUTED
4541a: 6716 beqs 45432 <rtems_fdisk_ioctl+0x1c6> <== NOT EXECUTED
4541c: 2069 0018 moveal %a1@(24),%a0 <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
45420: e78a lsll #3,%d2 <== NOT EXECUTED
45422: d488 addl %a0,%d2 <== NOT EXECUTED
data->unavail_blocks = fd->unavail_blocks;
data->device_count = fd->device_count;
data->blocks_used = 0;
for (i = 0; i < fd->block_count; i++)
if (fd->blocks[i].segment)
45424: 4a90 tstl %a0@ <== NOT EXECUTED
45426: 6704 beqs 4542c <rtems_fdisk_ioctl+0x1c0> <== NOT EXECUTED
data->blocks_used++;
45428: 52ad 0018 addql #1,%a5@(24) <== NOT EXECUTED
4542c: 5088 addql #8,%a0 <== NOT EXECUTED
data->block_count = fd->block_count;
data->unavail_blocks = fd->unavail_blocks;
data->device_count = fd->device_count;
data->blocks_used = 0;
for (i = 0; i < fd->block_count; i++)
4542e: b488 cmpl %a0,%d2 <== NOT EXECUTED
45430: 66f2 bnes 45424 <rtems_fdisk_ioctl+0x1b8> <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
45432: 2469 0034 moveal %a1@(52),%a2 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
45436: 91c8 subal %a0,%a0 <== NOT EXECUTED
45438: 4a8a tstl %a2 <== NOT EXECUTED
4543a: 6708 beqs 45444 <rtems_fdisk_ioctl+0x1d8> <== NOT EXECUTED
{
count++;
sc = sc->next;
4543c: 2452 moveal %a2@,%a2 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
{
count++;
4543e: 5288 addql #1,%a0 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
45440: 4a8a tstl %a2 <== NOT EXECUTED
45442: 66f8 bnes 4543c <rtems_fdisk_ioctl+0x1d0> <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
45444: 2469 0040 moveal %a1@(64),%a2 <== NOT EXECUTED
data->blocks_used = 0;
for (i = 0; i < fd->block_count; i++)
if (fd->blocks[i].segment)
data->blocks_used++;
data->segs_available = rtems_fdisk_segment_count_queue (&fd->available);
45448: 2b48 001c movel %a0,%a5@(28) <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
4544c: 91c8 subal %a0,%a0 <== NOT EXECUTED
4544e: 4a8a tstl %a2 <== NOT EXECUTED
45450: 6708 beqs 4545a <rtems_fdisk_ioctl+0x1ee> <== NOT EXECUTED
{
count++;
sc = sc->next;
45452: 2452 moveal %a2@,%a2 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
{
count++;
45454: 5288 addql #1,%a0 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
45456: 4a8a tstl %a2 <== NOT EXECUTED
45458: 66f8 bnes 45452 <rtems_fdisk_ioctl+0x1e6> <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
4545a: 2469 0058 moveal %a1@(88),%a2 <== NOT EXECUTED
for (i = 0; i < fd->block_count; i++)
if (fd->blocks[i].segment)
data->blocks_used++;
data->segs_available = rtems_fdisk_segment_count_queue (&fd->available);
data->segs_used = rtems_fdisk_segment_count_queue (&fd->used);
4545e: 2b48 0020 movel %a0,%a5@(32) <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
45462: 91c8 subal %a0,%a0 <== NOT EXECUTED
45464: 4a8a tstl %a2 <== NOT EXECUTED
45466: 6708 beqs 45470 <rtems_fdisk_ioctl+0x204> <== NOT EXECUTED
{
count++;
sc = sc->next;
45468: 2452 moveal %a2@,%a2 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
{
count++;
4546a: 5288 addql #1,%a0 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
4546c: 4a8a tstl %a2 <== NOT EXECUTED
4546e: 66f8 bnes 45468 <rtems_fdisk_ioctl+0x1fc> <== NOT EXECUTED
if (fd->blocks[i].segment)
data->blocks_used++;
data->segs_available = rtems_fdisk_segment_count_queue (&fd->available);
data->segs_used = rtems_fdisk_segment_count_queue (&fd->used);
data->segs_failed = rtems_fdisk_segment_count_queue (&fd->failed);
45470: 2b48 0024 movel %a0,%a5@(36) <== NOT EXECUTED
data->segment_count = 0;
45474: 42ad 0010 clrl %a5@(16) <== NOT EXECUTED
data->page_count = 0;
45478: 42ad 0014 clrl %a5@(20) <== NOT EXECUTED
data->pages_desc = 0;
4547c: 42ad 002c clrl %a5@(44) <== NOT EXECUTED
data->pages_active = 0;
45480: 42ad 0030 clrl %a5@(48) <== NOT EXECUTED
data->pages_used = 0;
45484: 42ad 0034 clrl %a5@(52) <== NOT EXECUTED
data->pages_bad = 0;
45488: 42ad 0038 clrl %a5@(56) <== NOT EXECUTED
data->seg_erases = 0;
4548c: 42ad 0028 clrl %a5@(40) <== NOT EXECUTED
for (i = 0; i < fd->device_count; i++)
45490: 4a81 tstl %d1 <== NOT EXECUTED
45492: 6700 008a beqw 4551e <rtems_fdisk_ioctl+0x2b2> <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
45496: 2401 movel %d1,%d2 <== NOT EXECUTED
45498: 4287 clrl %d7 <== NOT EXECUTED
4549a: e58a lsll #2,%d2 <== NOT EXECUTED
4549c: e989 lsll #4,%d1 <== NOT EXECUTED
4549e: 2669 002c moveal %a1@(44),%a3 <== NOT EXECUTED
454a2: 9282 subl %d2,%d1 <== NOT EXECUTED
454a4: 49f3 1800 lea %a3@(00000000,%d1:l),%a4 <== NOT EXECUTED
data->pages_bad = 0;
data->seg_erases = 0;
for (i = 0; i < fd->device_count; i++)
{
data->segment_count += fd->devices[i].segment_count;
454a8: 222b 0004 movel %a3@(4),%d1 <== NOT EXECUTED
454ac: de81 addl %d1,%d7 <== NOT EXECUTED
for (j = 0; j < fd->devices[i].segment_count; j++)
454ae: 4a81 tstl %d1 <== NOT EXECUTED
454b0: 6760 beqs 45512 <rtems_fdisk_ioctl+0x2a6> <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
454b2: 2401 movel %d1,%d2 <== NOT EXECUTED
454b4: ed89 lsll #6,%d1 <== NOT EXECUTED
454b6: e98a lsll #4,%d2 <== NOT EXECUTED
454b8: 2453 moveal %a3@,%a2 <== NOT EXECUTED
454ba: 9282 subl %d2,%d1 <== NOT EXECUTED
454bc: 41ea 0014 lea %a2@(20),%a0 <== NOT EXECUTED
454c0: 45f2 1814 lea %a2@(00000014,%d1:l),%a2 <== NOT EXECUTED
454c4: 2c2d 0014 movel %a5@(20),%d6 <== NOT EXECUTED
454c8: 2a2d 002c movel %a5@(44),%d5 <== NOT EXECUTED
454cc: 282d 0030 movel %a5@(48),%d4 <== NOT EXECUTED
454d0: 262d 0034 movel %a5@(52),%d3 <== NOT EXECUTED
454d4: 242d 0038 movel %a5@(56),%d2 <== NOT EXECUTED
454d8: 222d 0028 movel %a5@(40),%d1 <== NOT EXECUTED
for (j = 0; j < fd->devices[i].segment_count; j++)
{
rtems_fdisk_segment_ctl* sc = &fd->devices[i].segments[j];
data->page_count += sc->pages;
454dc: dc90 addl %a0@,%d6 <== NOT EXECUTED
data->pages_desc += sc->pages_desc;
454de: daa8 0004 addl %a0@(4),%d5 <== NOT EXECUTED
data->pages_active += sc->pages_active;
454e2: d8a8 0008 addl %a0@(8),%d4 <== NOT EXECUTED
data->pages_used += sc->pages_used;
454e6: d6a8 000c addl %a0@(12),%d3 <== NOT EXECUTED
data->pages_bad += sc->pages_bad;
454ea: d4a8 0010 addl %a0@(16),%d2 <== NOT EXECUTED
data->seg_erases += sc->erased;
454ee: d2a8 0018 addl %a0@(24),%d1 <== NOT EXECUTED
454f2: 41e8 0030 lea %a0@(48),%a0 <== NOT EXECUTED
for (i = 0; i < fd->device_count; i++)
{
data->segment_count += fd->devices[i].segment_count;
for (j = 0; j < fd->devices[i].segment_count; j++)
454f6: b5c8 cmpal %a0,%a2 <== NOT EXECUTED
454f8: 66e2 bnes 454dc <rtems_fdisk_ioctl+0x270> <== NOT EXECUTED
454fa: 2b46 0014 movel %d6,%a5@(20) <== NOT EXECUTED
454fe: 2b45 002c movel %d5,%a5@(44) <== NOT EXECUTED
45502: 2b44 0030 movel %d4,%a5@(48) <== NOT EXECUTED
45506: 2b43 0034 movel %d3,%a5@(52) <== NOT EXECUTED
4550a: 2b42 0038 movel %d2,%a5@(56) <== NOT EXECUTED
4550e: 2b41 0028 movel %d1,%a5@(40) <== NOT EXECUTED
45512: 47eb 000c lea %a3@(12),%a3 <== NOT EXECUTED
data->pages_active = 0;
data->pages_used = 0;
data->pages_bad = 0;
data->seg_erases = 0;
for (i = 0; i < fd->device_count; i++)
45516: b9cb cmpal %a3,%a4 <== NOT EXECUTED
45518: 668e bnes 454a8 <rtems_fdisk_ioctl+0x23c> <== NOT EXECUTED
4551a: 2b47 0010 movel %d7,%a5@(16) <== NOT EXECUTED
case RTEMS_FDISK_IOCTL_ERASE_USED:
errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);
break;
case RTEMS_FDISK_IOCTL_MONITORING:
errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
4551e: 2040 moveal %d0,%a0 <== NOT EXECUTED
data->pages_bad += sc->pages_bad;
data->seg_erases += sc->erased;
}
}
data->info_level = fd->info_level;
45520: 2b69 006c 003c movel %a1@(108),%a5@(60) <== NOT EXECUTED
case RTEMS_FDISK_IOCTL_ERASE_USED:
errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);
break;
case RTEMS_FDISK_IOCTL_MONITORING:
errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
45526: 4290 clrl %a0@ <== NOT EXECUTED
(rtems_fdisk_monitor_data*) argp);
break;
45528: 6000 fe2e braw 45358 <rtems_fdisk_ioctl+0xec> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
errno = EIO;
else
{
errno = 0;
switch (req)
4552c: 0c82 2000 4280 cmpil #536887936,%d2
45532: 6762 beqs 45596 <rtems_fdisk_ioctl+0x32a> <== NEVER TAKEN
case RTEMS_FDISK_IOCTL_PRINT_STATUS:
errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);
break;
default:
rtems_blkdev_ioctl (dd, req, argp);
45534: 2f0d movel %a5,%sp@-
45536: 2f02 movel %d2,%sp@-
45538: 2f0a movel %a2,%sp@-
4553a: 4eb9 0005 56d0 jsr 556d0 <rtems_blkdev_ioctl>
45540: 226e ffec moveal %fp@(-20),%a1
45544: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1
break;
4554a: 4fef 000c lea %sp@(12),%sp
4554e: 6000 fe08 braw 45358 <rtems_fdisk_ioctl+0xec>
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
if (!queue->head)
queue->tail = 0;
45552: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED
45556: 6000 fdd4 braw 4532c <rtems_fdisk_ioctl+0xc0> <== NOT EXECUTED
errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
(rtems_fdisk_monitor_data*) argp);
break;
case RTEMS_FDISK_IOCTL_INFO_LEVEL:
rtems_flashdisks[minor].info_level = (uintptr_t) argp;
4555a: 226e ffec moveal %fp@(-20),%a1 <== NOT EXECUTED
4555e: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1 <== NOT EXECUTED
45564: 234d 006c movel %a5,%a1@(108) <== NOT EXECUTED
break;
45568: 6000 fdee braw 45358 <rtems_fdisk_ioctl+0xec> <== NOT EXECUTED
case RTEMS_FDISK_IOCTL_ERASE_DISK:
errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);
break;
case RTEMS_FDISK_IOCTL_COMPACT:
errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);
4556c: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
45572: 222e ffec movel %fp@(-20),%d1 <== NOT EXECUTED
45576: d2b9 0008 4f98 addl 84f98 <rtems_flashdisks>,%d1 <== NOT EXECUTED
4557c: 2440 moveal %d0,%a2 <== NOT EXECUTED
4557e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
45580: 4eba f778 jsr %pc@(44cfa <rtems_fdisk_compact>) <== NOT EXECUTED
45584: 226e ffec moveal %fp@(-20),%a1 <== NOT EXECUTED
45588: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1 <== NOT EXECUTED
break;
4558e: 588f addql #4,%sp <== NOT EXECUTED
case RTEMS_FDISK_IOCTL_ERASE_DISK:
errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);
break;
case RTEMS_FDISK_IOCTL_COMPACT:
errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);
45590: 2480 movel %d0,%a2@ <== NOT EXECUTED
break;
45592: 6000 fdc4 braw 45358 <rtems_fdisk_ioctl+0xec> <== NOT EXECUTED
}
}
break;
case RTEMS_FDISK_IOCTL_ERASE_DISK:
errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);
45596: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
4559c: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED
455a0: d5f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a2 <== NOT EXECUTED
{
uint32_t device;
int ret;
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "erase-disk");
455a6: 4879 0007 03fa pea 703fa <map.6766+0x844> <== NOT EXECUTED
}
}
break;
case RTEMS_FDISK_IOCTL_ERASE_DISK:
errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);
455ac: 2640 moveal %d0,%a3 <== NOT EXECUTED
{
uint32_t device;
int ret;
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "erase-disk");
455ae: 4bfa eb12 lea %pc@(440c2 <rtems_fdisk_info>),%a5 <== NOT EXECUTED
455b2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
455b4: 4e95 jsr %a5@ <== NOT EXECUTED
*/
static int
rtems_fdisk_erase_flash (const rtems_flashdisk* fd)
{
uint32_t device;
for (device = 0; device < fd->device_count; device++)
455b6: 508f addql #8,%sp <== NOT EXECUTED
455b8: 4aaa 0030 tstl %a2@(48) <== NOT EXECUTED
455bc: 6700 072e beqw 45cec <rtems_fdisk_ioctl+0xa80> <== NOT EXECUTED
455c0: 4283 clrl %d3 <== NOT EXECUTED
455c2: 4282 clrl %d2 <== NOT EXECUTED
455c4: 49fa eb86 lea %pc@(4414c <rtems_fdisk_printf>),%a4 <== NOT EXECUTED
{
int ret;
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " erase-flash:%02d", device);
455c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
455ca: 4879 0007 0405 pea 70405 <map.6766+0x84f> <== NOT EXECUTED
455d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
455d2: 4e95 jsr %a5@ <== NOT EXECUTED
*/
static int
rtems_fdisk_device_erase (const rtems_flashdisk* fd, uint32_t device)
{
const rtems_fdisk_driver_handlers* ops;
ops = fd->devices[device].descriptor->flash_ops;
455d4: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED
455d8: 2070 3808 moveal %a0@(00000008,%d3:l),%a0 <== NOT EXECUTED
455dc: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " device-erase: %02d", device);
455e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
455e2: 4879 0007 0417 pea 70417 <map.6766+0x861> <== NOT EXECUTED
455e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
455ea: 4e94 jsr %a4@ <== NOT EXECUTED
#endif
return ops->erase_device (fd->devices[device].descriptor, device);
455ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
455ee: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED
*/
static int
rtems_fdisk_erase_flash (const rtems_flashdisk* fd)
{
uint32_t device;
for (device = 0; device < fd->device_count; device++)
455f2: 5282 addql #1,%d2 <== NOT EXECUTED
const rtems_fdisk_driver_handlers* ops;
ops = fd->devices[device].descriptor->flash_ops;
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " device-erase: %02d", device);
#endif
return ops->erase_device (fd->devices[device].descriptor, device);
455f4: 2f30 3808 movel %a0@(00000008,%d3:l),%sp@- <== NOT EXECUTED
455f8: 2044 moveal %d4,%a0 <== NOT EXECUTED
455fa: 0683 0000 000c addil #12,%d3 <== NOT EXECUTED
45600: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
45604: 2240 moveal %d0,%a1 <== NOT EXECUTED
45606: 4e91 jsr %a1@ <== NOT EXECUTED
rtems_fdisk_info (fd, " erase-flash:%02d", device);
#endif
ret = rtems_fdisk_device_erase (fd, device);
if (ret != 0)
45608: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
4560c: 4a80 tstl %d0 <== NOT EXECUTED
4560e: 6642 bnes 45652 <rtems_fdisk_ioctl+0x3e6> <== NOT EXECUTED
*/
static int
rtems_fdisk_erase_flash (const rtems_flashdisk* fd)
{
uint32_t device;
for (device = 0; device < fd->device_count; device++)
45610: 222a 0030 movel %a2@(48),%d1 <== NOT EXECUTED
45614: b282 cmpl %d2,%d1 <== NOT EXECUTED
45616: 62b0 bhis 455c8 <rtems_fdisk_ioctl+0x35c> <== NOT EXECUTED
ret = rtems_fdisk_erase_flash (fd);
if (ret == 0)
{
for (device = 0; device < fd->device_count; device++)
45618: 4a81 tstl %d1 <== NOT EXECUTED
4561a: 6736 beqs 45652 <rtems_fdisk_ioctl+0x3e6> <== NOT EXECUTED
{
if (!fd->devices[device].segments)
4561c: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED
45620: 4a90 tstl %a0@ <== NOT EXECUTED
45622: 672c beqs 45650 <rtems_fdisk_ioctl+0x3e4> <== NOT EXECUTED
45624: 760c moveq #12,%d3 <== NOT EXECUTED
45626: 4282 clrl %d2 <== NOT EXECUTED
45628: 49fa f942 lea %pc@(44f6c <rtems_fdisk_recover_block_mappings>),%a4<== NOT EXECUTED
return ENOMEM;
ret = rtems_fdisk_recover_block_mappings (fd);
4562c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
ret = rtems_fdisk_erase_flash (fd);
if (ret == 0)
{
for (device = 0; device < fd->device_count; device++)
4562e: 5282 addql #1,%d2 <== NOT EXECUTED
{
if (!fd->devices[device].segments)
return ENOMEM;
ret = rtems_fdisk_recover_block_mappings (fd);
45630: 4e94 jsr %a4@ <== NOT EXECUTED
if (ret)
45632: 588f addql #4,%sp <== NOT EXECUTED
45634: 4a80 tstl %d0 <== NOT EXECUTED
45636: 661a bnes 45652 <rtems_fdisk_ioctl+0x3e6> <== NOT EXECUTED
ret = rtems_fdisk_erase_flash (fd);
if (ret == 0)
{
for (device = 0; device < fd->device_count; device++)
45638: b4aa 0030 cmpl %a2@(48),%d2 <== NOT EXECUTED
4563c: 6414 bccs 45652 <rtems_fdisk_ioctl+0x3e6> <== NOT EXECUTED
{
if (!fd->devices[device].segments)
4563e: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED
45642: 2030 3800 movel %a0@(00000000,%d3:l),%d0 <== NOT EXECUTED
45646: 0683 0000 000c addil #12,%d3 <== NOT EXECUTED
4564c: 4a80 tstl %d0 <== NOT EXECUTED
4564e: 66dc bnes 4562c <rtems_fdisk_ioctl+0x3c0> <== NOT EXECUTED
return ENOMEM;
45650: 700c moveq #12,%d0 <== NOT EXECUTED
45652: 226e ffec moveal %fp@(-20),%a1 <== NOT EXECUTED
45656: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1 <== NOT EXECUTED
}
}
break;
case RTEMS_FDISK_IOCTL_ERASE_DISK:
errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);
4565c: 2680 movel %d0,%a3@ <== NOT EXECUTED
break;
4565e: 6000 fcf8 braw 45358 <rtems_fdisk_ioctl+0xec> <== NOT EXECUTED
case RTEMS_FDISK_IOCTL_INFO_LEVEL:
rtems_flashdisks[minor].info_level = (uintptr_t) argp;
break;
case RTEMS_FDISK_IOCTL_PRINT_STATUS:
errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);
45662: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
45668: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
4566c: d7f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a3 <== NOT EXECUTED
uint32_t count;
uint32_t device;
fd->info_level = 3;
rtems_fdisk_printf (fd,
45672: 49fa ead8 lea %pc@(4414c <rtems_fdisk_printf>),%a4 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
45676: 4282 clrl %d2 <== NOT EXECUTED
*/
static int
rtems_fdisk_print_status (rtems_flashdisk* fd)
{
#if RTEMS_FDISK_TRACE
uint32_t current_info_level = fd->info_level;
45678: 226b 006c moveal %a3@(108),%a1 <== NOT EXECUTED
case RTEMS_FDISK_IOCTL_INFO_LEVEL:
rtems_flashdisks[minor].info_level = (uintptr_t) argp;
break;
case RTEMS_FDISK_IOCTL_PRINT_STATUS:
errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);
4567c: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED
uint32_t current_info_level = fd->info_level;
uint32_t total;
uint32_t count;
uint32_t device;
fd->info_level = 3;
45680: 7003 moveq #3,%d0 <== NOT EXECUTED
45682: 2740 006c movel %d0,%a3@(108) <== NOT EXECUTED
rtems_fdisk_printf (fd,
45686: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED
4568a: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
4568c: 4879 0007 042b pea 7042b <map.6766+0x875> <== NOT EXECUTED
*/
static int
rtems_fdisk_print_status (rtems_flashdisk* fd)
{
#if RTEMS_FDISK_TRACE
uint32_t current_info_level = fd->info_level;
45692: 2d49 ffe4 movel %a1,%fp@(-28) <== NOT EXECUTED
uint32_t count;
uint32_t device;
fd->info_level = 3;
rtems_fdisk_printf (fd,
45696: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45698: 4e94 jsr %a4@ <== NOT EXECUTED
"Flash Disk Driver Status : %d.%d", fd->major, fd->minor);
rtems_fdisk_printf (fd, "Block count\t%d", fd->block_count);
4569a: 2f2b 001c movel %a3@(28),%sp@- <== NOT EXECUTED
4569e: 4879 0007 044c pea 7044c <map.6766+0x896> <== NOT EXECUTED
456a4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
456a6: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_fdisk_printf (fd, "Unavail blocks\t%d", fd->unavail_blocks);
456a8: 2f2b 0020 movel %a3@(32),%sp@- <== NOT EXECUTED
456ac: 4879 0007 045b pea 7045b <map.6766+0x8a5> <== NOT EXECUTED
456b2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
456b4: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_fdisk_printf (fd, "Starvation threshold\t%d", fd->starvation_threshold);
456b6: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
456ba: 2eab 0024 movel %a3@(36),%sp@ <== NOT EXECUTED
456be: 4879 0007 046d pea 7046d <map.6766+0x8b7> <== NOT EXECUTED
456c4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
456c6: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_fdisk_printf (fd, "Starvations\t%d", fd->starvations);
456c8: 2f2b 0070 movel %a3@(112),%sp@- <== NOT EXECUTED
456cc: 4879 0007 0485 pea 70485 <map.6766+0x8cf> <== NOT EXECUTED
456d2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
456d4: 4e94 jsr %a4@ <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
456d6: 206b 0034 moveal %a3@(52),%a0 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
456da: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
456de: 4a88 tstl %a0 <== NOT EXECUTED
456e0: 6708 beqs 456ea <rtems_fdisk_ioctl+0x47e> <== NOT EXECUTED
{
count++;
sc = sc->next;
456e2: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
{
count++;
456e4: 5282 addql #1,%d2 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
456e6: 4a88 tstl %a0 <== NOT EXECUTED
456e8: 66f8 bnes 456e2 <rtems_fdisk_ioctl+0x476> <== NOT EXECUTED
rtems_fdisk_printf (fd, "Unavail blocks\t%d", fd->unavail_blocks);
rtems_fdisk_printf (fd, "Starvation threshold\t%d", fd->starvation_threshold);
rtems_fdisk_printf (fd, "Starvations\t%d", fd->starvations);
count = rtems_fdisk_segment_count_queue (&fd->available);
total = count;
rtems_fdisk_printf (fd, "Available queue\t%ld (%ld)",
456ea: 2f2b 003c movel %a3@(60),%sp@- <== NOT EXECUTED
456ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
456f0: 4879 0007 0494 pea 70494 <map.6766+0x8de> <== NOT EXECUTED
456f6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
456f8: 4e94 jsr %a4@ <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
456fa: 206b 0040 moveal %a3@(64),%a0 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
456fe: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45702: 4280 clrl %d0 <== NOT EXECUTED
45704: 4a88 tstl %a0 <== NOT EXECUTED
45706: 6708 beqs 45710 <rtems_fdisk_ioctl+0x4a4> <== NOT EXECUTED
{
count++;
sc = sc->next;
45708: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
{
count++;
4570a: 5280 addql #1,%d0 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
4570c: 4a88 tstl %a0 <== NOT EXECUTED
4570e: 66f8 bnes 45708 <rtems_fdisk_ioctl+0x49c> <== NOT EXECUTED
total = count;
rtems_fdisk_printf (fd, "Available queue\t%ld (%ld)",
count, rtems_fdisk_segment_queue_count (&fd->available));
count = rtems_fdisk_segment_count_queue (&fd->used);
total += count;
rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",
45710: 2f2b 0048 movel %a3@(72),%sp@- <== NOT EXECUTED
count = rtems_fdisk_segment_count_queue (&fd->available);
total = count;
rtems_fdisk_printf (fd, "Available queue\t%ld (%ld)",
count, rtems_fdisk_segment_queue_count (&fd->available));
count = rtems_fdisk_segment_count_queue (&fd->used);
total += count;
45714: d480 addl %d0,%d2 <== NOT EXECUTED
rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",
45716: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45718: 4879 0007 04ae pea 704ae <map.6766+0x8f8> <== NOT EXECUTED
4571e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45720: 4e94 jsr %a4@ <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
45722: 206b 004c moveal %a3@(76),%a0 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
45726: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4572a: 4280 clrl %d0 <== NOT EXECUTED
4572c: 4a88 tstl %a0 <== NOT EXECUTED
4572e: 6708 beqs 45738 <rtems_fdisk_ioctl+0x4cc> <== NOT EXECUTED
{
count++;
sc = sc->next;
45730: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
{
count++;
45732: 5280 addql #1,%d0 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
45734: 4a88 tstl %a0 <== NOT EXECUTED
45736: 66f8 bnes 45730 <rtems_fdisk_ioctl+0x4c4> <== NOT EXECUTED
total += count;
rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",
count, rtems_fdisk_segment_queue_count (&fd->used));
count = rtems_fdisk_segment_count_queue (&fd->erase);
total += count;
rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",
45738: 2f2b 0054 movel %a3@(84),%sp@- <== NOT EXECUTED
count = rtems_fdisk_segment_count_queue (&fd->used);
total += count;
rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",
count, rtems_fdisk_segment_queue_count (&fd->used));
count = rtems_fdisk_segment_count_queue (&fd->erase);
total += count;
4573c: d480 addl %d0,%d2 <== NOT EXECUTED
rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",
4573e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45740: 4879 0007 04c3 pea 704c3 <map.6766+0x90d> <== NOT EXECUTED
45746: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45748: 4e94 jsr %a4@ <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
4574a: 206b 0058 moveal %a3@(88),%a0 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
4574e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45752: 4280 clrl %d0 <== NOT EXECUTED
45754: 4a88 tstl %a0 <== NOT EXECUTED
45756: 6708 beqs 45760 <rtems_fdisk_ioctl+0x4f4> <== NOT EXECUTED
{
count++;
sc = sc->next;
45758: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
{
count++;
4575a: 5280 addql #1,%d0 <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
4575c: 4a88 tstl %a0 <== NOT EXECUTED
4575e: 66f8 bnes 45758 <rtems_fdisk_ioctl+0x4ec> <== NOT EXECUTED
total += count;
rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",
count, rtems_fdisk_segment_queue_count (&fd->erase));
count = rtems_fdisk_segment_count_queue (&fd->failed);
total += count;
rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",
45760: 2f2b 0060 movel %a3@(96),%sp@- <== NOT EXECUTED
count = rtems_fdisk_segment_count_queue (&fd->erase);
total += count;
rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",
count, rtems_fdisk_segment_queue_count (&fd->erase));
count = rtems_fdisk_segment_count_queue (&fd->failed);
total += count;
45764: d480 addl %d0,%d2 <== NOT EXECUTED
rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",
45766: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45768: 4879 0007 04d9 pea 704d9 <map.6766+0x923> <== NOT EXECUTED
4576e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45770: 4e94 jsr %a4@ <== NOT EXECUTED
count, rtems_fdisk_segment_queue_count (&fd->failed));
count = 0;
for (device = 0; device < fd->device_count; device++)
45772: 222b 0030 movel %a3@(48),%d1 <== NOT EXECUTED
45776: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4577a: 6700 0560 beqw 45cdc <rtems_fdisk_ioctl+0xa70> <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
4577e: 2601 movel %d1,%d3 <== NOT EXECUTED
count = rtems_fdisk_segment_count_queue (&fd->failed);
total += count;
rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",
count, rtems_fdisk_segment_queue_count (&fd->failed));
count = 0;
45780: 4280 clrl %d0 <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
45782: e58b lsll #2,%d3 <== NOT EXECUTED
45784: e989 lsll #4,%d1 <== NOT EXECUTED
45786: 226b 002c moveal %a3@(44),%a1 <== NOT EXECUTED
4578a: 9283 subl %d3,%d1 <== NOT EXECUTED
4578c: 41e9 0004 lea %a1@(4),%a0 <== NOT EXECUTED
45790: 43f1 1804 lea %a1@(00000004,%d1:l),%a1 <== NOT EXECUTED
rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",
count, rtems_fdisk_segment_queue_count (&fd->failed));
count = 0;
for (device = 0; device < fd->device_count; device++)
count += fd->devices[device].segment_count;
45794: d090 addl %a0@,%d0 <== NOT EXECUTED
45796: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED
total += count;
rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",
count, rtems_fdisk_segment_queue_count (&fd->failed));
count = 0;
for (device = 0; device < fd->device_count; device++)
4579a: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
4579c: 66f6 bnes 45794 <rtems_fdisk_ioctl+0x528> <== NOT EXECUTED
count += fd->devices[device].segment_count;
rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
4579e: 223c 0007 0042 movel #458818,%d1 <== NOT EXECUTED
457a4: b082 cmpl %d2,%d0 <== NOT EXECUTED
457a6: 6700 052a beqw 45cd2 <rtems_fdisk_ioctl+0xa66> <== NOT EXECUTED
457aa: 2f01 movel %d1,%sp@- <== NOT EXECUTED
457ac: 2f00 movel %d0,%sp@- <== NOT EXECUTED
457ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED
457b0: 4879 0007 04f0 pea 704f0 <map.6766+0x93a> <== NOT EXECUTED
457b6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
457b8: 4e94 jsr %a4@ <== NOT EXECUTED
total == count ? "ok" : "MISSING");
rtems_fdisk_printf (fd, "Device count\t%d", fd->device_count);
457ba: 2f2b 0030 movel %a3@(48),%sp@- <== NOT EXECUTED
457be: 4879 0007 050b pea 7050b <map.6766+0x955> <== NOT EXECUTED
457c4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
457c6: 4e94 jsr %a4@ <== NOT EXECUTED
for (device = 0; device < fd->device_count; device++)
457c8: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
457cc: 4aab 0030 tstl %a3@(48) <== NOT EXECUTED
457d0: 6700 015c beqw 4592e <rtems_fdisk_ioctl+0x6c2> <== NOT EXECUTED
457d4: 42ae ffe8 clrl %fp@(-24) <== NOT EXECUTED
457d8: 42ae ffe0 clrl %fp@(-32) <== NOT EXECUTED
{
uint32_t block;
uint32_t seg;
rtems_fdisk_printf (fd, " Device\t\t%ld", device);
457dc: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED
457e0: 4879 0007 051b pea 7051b <map.6766+0x965> <== NOT EXECUTED
457e6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
457e8: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_fdisk_printf (fd, " Segment count\t%ld",
457ea: 206b 002c moveal %a3@(44),%a0 <== NOT EXECUTED
457ee: 222e ffe8 movel %fp@(-24),%d1 <== NOT EXECUTED
457f2: 2f30 1804 movel %a0@(00000004,%d1:l),%sp@- <== NOT EXECUTED
457f6: 4879 0007 0528 pea 70528 <map.6766+0x972> <== NOT EXECUTED
457fc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
457fe: 4e94 jsr %a4@ <== NOT EXECUTED
fd->devices[device].segment_count);
for (seg = 0; seg < fd->devices[device].segment_count; seg++)
45800: 206e ffe8 moveal %fp@(-24),%a0 <== NOT EXECUTED
45804: d1eb 002c addal %a3@(44),%a0 <== NOT EXECUTED
45808: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4580c: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED
45810: 6700 0106 beqw 45918 <rtems_fdisk_ioctl+0x6ac> <== NOT EXECUTED
45814: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED
45818: 4285 clrl %d5 <== NOT EXECUTED
4581a: 2d4c fff0 movel %a4,%fp@(-16) <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
4581e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
45822: d5d0 addal %a0@,%a2 <== NOT EXECUTED
uint32_t active = 0;
uint32_t used = 0;
bool is_active = false;
char queues[5];
rtems_fdisk_queue_status (fd, sc, queues);
45824: 486e fffb pea %fp@(-5) <== NOT EXECUTED
45828: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4582a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4582c: 4eba e7d4 jsr %pc@(44002 <rtems_fdisk_queue_status>) <== NOT EXECUTED
for (page = 0; page < sc->pages; page++)
45830: 242a 0014 movel %a2@(20),%d2 <== NOT EXECUTED
45834: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45838: 6700 01fc beqw 45a36 <rtems_fdisk_ioctl+0x7ca> <== NOT EXECUTED
4583c: 202b 001c movel %a3@(28),%d0 <== NOT EXECUTED
for (seg = 0; seg < fd->devices[device].segment_count; seg++)
{
rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
uint32_t page;
uint32_t erased = 0;
uint32_t active = 0;
45840: 4287 clrl %d7 <== NOT EXECUTED
uint32_t used = 0;
45842: 9bcd subal %a5,%a5 <== NOT EXECUTED
for (seg = 0; seg < fd->devices[device].segment_count; seg++)
{
rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
uint32_t page;
uint32_t erased = 0;
45844: 99cc subal %a4,%a4 <== NOT EXECUTED
bool is_active = false;
char queues[5];
rtems_fdisk_queue_status (fd, sc, queues);
for (page = 0; page < sc->pages; page++)
45846: 4283 clrl %d3 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
uint32_t page;
uint32_t erased = 0;
uint32_t active = 0;
uint32_t used = 0;
bool is_active = false;
45848: 2240 moveal %d0,%a1 <== NOT EXECUTED
4584a: 4204 clrb %d4 <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
4584c: 2c03 movel %d3,%d6 <== NOT EXECUTED
4584e: e78e lsll #3,%d6 <== NOT EXECUTED
rtems_fdisk_queue_status (fd, sc, queues);
for (page = 0; page < sc->pages; page++)
{
if (rtems_fdisk_page_desc_erased (&sc->page_descriptors[page]))
45850: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
45854: d1c6 addal %d6,%a0 <== NOT EXECUTED
static bool
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)
{
return ((pd->crc == 0xffff) &&
(pd->flags == 0xffff) &&
(pd->block == 0xffffffff)) ? true : false;
45856: 7cff moveq #-1,%d6 <== NOT EXECUTED
45858: bc90 cmpl %a0@,%d6 <== NOT EXECUTED
4585a: 6700 0128 beqw 45984 <rtems_fdisk_ioctl+0x718> <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
4585e: 3068 0002 moveaw %a0@(2),%a0 <== NOT EXECUTED
for (page = 0; page < sc->pages; page++)
{
if (rtems_fdisk_page_desc_erased (&sc->page_descriptors[page]))
erased++;
else if (rtems_fdisk_page_desc_flags_set (&sc->page_descriptors[page],
45862: 2208 movel %a0,%d1 <== NOT EXECUTED
45864: 0801 0000 btst #0,%d1 <== NOT EXECUTED
45868: 660e bnes 45878 <rtems_fdisk_ioctl+0x60c> <== NOT EXECUTED
RTEMS_FDISK_PAGE_ACTIVE))
{
if (rtems_fdisk_page_desc_flags_set (&sc->page_descriptors[page],
4586a: 2208 movel %a0,%d1 <== NOT EXECUTED
4586c: 7c02 moveq #2,%d6 <== NOT EXECUTED
4586e: c286 andl %d6,%d1 <== NOT EXECUTED
45870: 4a41 tstw %d1 <== NOT EXECUTED
45872: 6600 0160 bnew 459d4 <rtems_fdisk_ioctl+0x768> <== NOT EXECUTED
RTEMS_FDISK_PAGE_USED))
used++;
45876: 528d addql #1,%a5 <== NOT EXECUTED
active++;
is_active = true;
}
}
for (block = 0; block < fd->block_count; block++)
45878: 4a80 tstl %d0 <== NOT EXECUTED
4587a: 671e beqs 4589a <rtems_fdisk_ioctl+0x62e> <== NOT EXECUTED
4587c: 4282 clrl %d2 <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
4587e: 2202 movel %d2,%d1 <== NOT EXECUTED
45880: e789 lsll #3,%d1 <== NOT EXECUTED
}
}
for (block = 0; block < fd->block_count; block++)
{
if ((fd->blocks[block].segment == sc) &&
45882: 206b 0018 moveal %a3@(24),%a0 <== NOT EXECUTED
45886: d1c1 addal %d1,%a0 <== NOT EXECUTED
45888: b5d0 cmpal %a0@,%a2 <== NOT EXECUTED
4588a: 6700 0106 beqw 45992 <rtems_fdisk_ioctl+0x726> <== NOT EXECUTED
active++;
is_active = true;
}
}
for (block = 0; block < fd->block_count; block++)
4588e: 5282 addql #1,%d2 <== NOT EXECUTED
45890: b082 cmpl %d2,%d0 <== NOT EXECUTED
45892: 62ea bhis 4587e <rtems_fdisk_ioctl+0x612> <== NOT EXECUTED
45894: 242a 0014 movel %a2@(20),%d2 <== NOT EXECUTED
45898: 2240 moveal %d0,%a1 <== NOT EXECUTED
bool is_active = false;
char queues[5];
rtems_fdisk_queue_status (fd, sc, queues);
for (page = 0; page < sc->pages; page++)
4589a: 5283 addql #1,%d3 <== NOT EXECUTED
4589c: b483 cmpl %d3,%d2 <== NOT EXECUTED
4589e: 62ac bhis 4584c <rtems_fdisk_ioctl+0x5e0> <== NOT EXECUTED
458a0: 2209 movel %a1,%d1 <== NOT EXECUTED
page, block);
}
}
count = 0;
for (block = 0; block < fd->block_count; block++)
458a2: 4a81 tstl %d1 <== NOT EXECUTED
458a4: 6700 0136 beqw 459dc <rtems_fdisk_ioctl+0x770> <== NOT EXECUTED
458a8: 226b 0018 moveal %a3@(24),%a1 <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
458ac: 2009 movel %a1,%d0 <== NOT EXECUTED
458ae: 4283 clrl %d3 <== NOT EXECUTED
458b0: e789 lsll #3,%d1 <== NOT EXECUTED
458b2: d081 addl %d1,%d0 <== NOT EXECUTED
}
count = 0;
for (block = 0; block < fd->block_count; block++)
{
if (fd->blocks[block].segment == sc)
458b4: b5d1 cmpal %a1@,%a2 <== NOT EXECUTED
458b6: 6700 010e beqw 459c6 <rtems_fdisk_ioctl+0x75a> <== NOT EXECUTED
458ba: 5089 addql #8,%a1 <== NOT EXECUTED
page, block);
}
}
count = 0;
for (block = 0; block < fd->block_count; block++)
458bc: b089 cmpl %a1,%d0 <== NOT EXECUTED
458be: 66f4 bnes 458b4 <rtems_fdisk_ioctl+0x648> <== NOT EXECUTED
458c0: 7230 moveq #48,%d1 <== NOT EXECUTED
458c2: d3ae fff4 addl %d1,%fp@(-12) <== NOT EXECUTED
rtems_fdisk_printf (fd, " %3ld %s p:%3ld a:%3ld/%3ld" \
" u:%3ld/%3ld e:%3ld/%3ld br:%ld",
seg, queues,
sc->pages, sc->pages_active, active,
sc->pages_used, used, erased,
sc->pages - (sc->pages_active +
458c6: 202a 001c movel %a2@(28),%d0 <== NOT EXECUTED
sc->pages_used + sc->pages_bad),
458ca: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
458ce: 2241 moveal %d1,%a1 <== NOT EXECUTED
{
if (fd->blocks[block].segment == sc)
count++;
}
rtems_fdisk_printf (fd, " %3ld %s p:%3ld a:%3ld/%3ld" \
458d0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
458d2: d3ea 0024 addal %a2@(36),%a1 <== NOT EXECUTED
{
if (fd->blocks[block].segment == sc)
count++;
}
rtems_fdisk_printf (fd, " %3ld %s p:%3ld a:%3ld/%3ld" \
458d6: 2602 movel %d2,%d3 <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
458d8: d3c0 addal %d0,%a1 <== NOT EXECUTED
{
if (fd->blocks[block].segment == sc)
count++;
}
rtems_fdisk_printf (fd, " %3ld %s p:%3ld a:%3ld/%3ld" \
458da: 9689 subl %a1,%d3 <== NOT EXECUTED
458dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
458de: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
458e2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
458e4: 2f0d movel %a5,%sp@- <== NOT EXECUTED
458e6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
458e8: 2f07 movel %d7,%sp@- <== NOT EXECUTED
458ea: 2f00 movel %d0,%sp@- <== NOT EXECUTED
458ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
458ee: 486e fffb pea %fp@(-5) <== NOT EXECUTED
458f2: 2f05 movel %d5,%sp@- <== NOT EXECUTED
458f4: 4879 0007 0569 pea 70569 <map.6766+0x9b3> <== NOT EXECUTED
rtems_fdisk_printf (fd, " Device\t\t%ld", device);
rtems_fdisk_printf (fd, " Segment count\t%ld",
fd->devices[device].segment_count);
for (seg = 0; seg < fd->devices[device].segment_count; seg++)
458fa: 5285 addql #1,%d5 <== NOT EXECUTED
{
if (fd->blocks[block].segment == sc)
count++;
}
rtems_fdisk_printf (fd, " %3ld %s p:%3ld a:%3ld/%3ld" \
458fc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
458fe: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_fdisk_printf (fd, " Device\t\t%ld", device);
rtems_fdisk_printf (fd, " Segment count\t%ld",
fd->devices[device].segment_count);
for (seg = 0; seg < fd->devices[device].segment_count; seg++)
45900: 206e ffe8 moveal %fp@(-24),%a0 <== NOT EXECUTED
45904: d1eb 002c addal %a3@(44),%a0 <== NOT EXECUTED
45908: 4fef 0030 lea %sp@(48),%sp <== NOT EXECUTED
4590c: baa8 0004 cmpl %a0@(4),%d5 <== NOT EXECUTED
45910: 6500 ff0c bcsw 4581e <rtems_fdisk_ioctl+0x5b2> <== NOT EXECUTED
45914: 286e fff0 moveal %fp@(-16),%a4 <== NOT EXECUTED
rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
total == count ? "ok" : "MISSING");
rtems_fdisk_printf (fd, "Device count\t%d", fd->device_count);
for (device = 0; device < fd->device_count; device++)
45918: 52ae ffe0 addql #1,%fp@(-32) <== NOT EXECUTED
4591c: 700c moveq #12,%d0 <== NOT EXECUTED
4591e: d1ae ffe8 addl %d0,%fp@(-24) <== NOT EXECUTED
45922: 222e ffe0 movel %fp@(-32),%d1 <== NOT EXECUTED
45926: b2ab 0030 cmpl %a3@(48),%d1 <== NOT EXECUTED
4592a: 6500 feb0 bcsw 457dc <rtems_fdisk_ioctl+0x570> <== NOT EXECUTED
count);
}
}
{
rtems_fdisk_segment_ctl* sc = fd->used.head;
4592e: 246b 0040 moveal %a3@(64),%a2 <== NOT EXECUTED
int count = 0;
rtems_fdisk_printf (fd, "Used List:");
45932: 4879 0007 05a5 pea 705a5 <map.6766+0x9ef> <== NOT EXECUTED
45938: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4593a: 4e94 jsr %a4@ <== NOT EXECUTED
while (sc)
4593c: 508f addql #8,%sp <== NOT EXECUTED
4593e: 4a8a tstl %a2 <== NOT EXECUTED
45940: 6726 beqs 45968 <rtems_fdisk_ioctl+0x6fc> <== NOT EXECUTED
45942: 4282 clrl %d2 <== NOT EXECUTED
{
rtems_fdisk_printf (fd, " %3d %02d:%03d u:%3ld",
45944: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED
45948: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4594c: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
45950: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45952: 4879 0007 05b0 pea 705b0 <map.6766+0x9fa> <== NOT EXECUTED
count, sc->device, sc->segment, sc->pages_used);
sc = sc->next;
count++;
45958: 5282 addql #1,%d2 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc = fd->used.head;
int count = 0;
rtems_fdisk_printf (fd, "Used List:");
while (sc)
{
rtems_fdisk_printf (fd, " %3d %02d:%03d u:%3ld",
4595a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4595c: 4e94 jsr %a4@ <== NOT EXECUTED
count, sc->device, sc->segment, sc->pages_used);
sc = sc->next;
4595e: 2452 moveal %a2@,%a2 <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = fd->used.head;
int count = 0;
rtems_fdisk_printf (fd, "Used List:");
while (sc)
45960: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
45964: 4a8a tstl %a2 <== NOT EXECUTED
45966: 66dc bnes 45944 <rtems_fdisk_ioctl+0x6d8> <== NOT EXECUTED
count, sc->device, sc->segment, sc->pages_used);
sc = sc->next;
count++;
}
}
fd->info_level = current_info_level;
45968: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED
4596c: 226e ffec moveal %fp@(-20),%a1 <== NOT EXECUTED
45970: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1 <== NOT EXECUTED
45976: 2742 006c movel %d2,%a3@(108) <== NOT EXECUTED
case RTEMS_FDISK_IOCTL_INFO_LEVEL:
rtems_flashdisks[minor].info_level = (uintptr_t) argp;
break;
case RTEMS_FDISK_IOCTL_PRINT_STATUS:
errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);
4597a: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED
4597e: 4290 clrl %a0@ <== NOT EXECUTED
break;
45980: 6000 f9d6 braw 45358 <rtems_fdisk_ioctl+0xec> <== NOT EXECUTED
static bool
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)
{
return ((pd->crc == 0xffff) &&
(pd->flags == 0xffff) &&
(pd->block == 0xffffffff)) ? true : false;
45984: bca8 0004 cmpl %a0@(4),%d6 <== NOT EXECUTED
45988: 6600 fed4 bnew 4585e <rtems_fdisk_ioctl+0x5f2> <== NOT EXECUTED
rtems_fdisk_queue_status (fd, sc, queues);
for (page = 0; page < sc->pages; page++)
{
if (rtems_fdisk_page_desc_erased (&sc->page_descriptors[page]))
erased++;
4598c: 528c addql #1,%a4 <== NOT EXECUTED
4598e: 6000 fee8 braw 45878 <rtems_fdisk_ioctl+0x60c> <== NOT EXECUTED
}
}
for (block = 0; block < fd->block_count; block++)
{
if ((fd->blocks[block].segment == sc) &&
45992: b6a8 0004 cmpl %a0@(4),%d3 <== NOT EXECUTED
45996: 6600 fef6 bnew 4588e <rtems_fdisk_ioctl+0x622> <== NOT EXECUTED
(fd->blocks[block].page == page) && !is_active)
4599a: 4a04 tstb %d4 <== NOT EXECUTED
4599c: 6600 fef0 bnew 4588e <rtems_fdisk_ioctl+0x622> <== NOT EXECUTED
rtems_fdisk_printf (fd,
459a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
459a2: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
active++;
is_active = true;
}
}
for (block = 0; block < fd->block_count; block++)
459a6: 5282 addql #1,%d2 <== NOT EXECUTED
{
if ((fd->blocks[block].segment == sc) &&
(fd->blocks[block].page == page) && !is_active)
rtems_fdisk_printf (fd,
459a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
459aa: 4879 0007 053c pea 7053c <map.6766+0x986> <== NOT EXECUTED
459b0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
459b2: 4e90 jsr %a0@ <== NOT EXECUTED
459b4: 202b 001c movel %a3@(28),%d0 <== NOT EXECUTED
459b8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
active++;
is_active = true;
}
}
for (block = 0; block < fd->block_count; block++)
459bc: b082 cmpl %d2,%d0 <== NOT EXECUTED
459be: 6200 febe bhiw 4587e <rtems_fdisk_ioctl+0x612> <== NOT EXECUTED
459c2: 6000 fed0 braw 45894 <rtems_fdisk_ioctl+0x628> <== NOT EXECUTED
count = 0;
for (block = 0; block < fd->block_count; block++)
{
if (fd->blocks[block].segment == sc)
count++;
459c6: 5283 addql #1,%d3 <== NOT EXECUTED
459c8: 5089 addql #8,%a1 <== NOT EXECUTED
page, block);
}
}
count = 0;
for (block = 0; block < fd->block_count; block++)
459ca: b089 cmpl %a1,%d0 <== NOT EXECUTED
459cc: 6600 fee6 bnew 458b4 <rtems_fdisk_ioctl+0x648> <== NOT EXECUTED
459d0: 6000 feee braw 458c0 <rtems_fdisk_ioctl+0x654> <== NOT EXECUTED
if (rtems_fdisk_page_desc_flags_set (&sc->page_descriptors[page],
RTEMS_FDISK_PAGE_USED))
used++;
else
{
active++;
459d4: 5287 addql #1,%d7 <== NOT EXECUTED
is_active = true;
459d6: 7801 moveq #1,%d4 <== NOT EXECUTED
459d8: 6000 fe9e braw 45878 <rtems_fdisk_ioctl+0x60c> <== NOT EXECUTED
459dc: 7230 moveq #48,%d1 <== NOT EXECUTED
459de: d3ae fff4 addl %d1,%fp@(-12) <== NOT EXECUTED
page, block);
}
}
count = 0;
for (block = 0; block < fd->block_count; block++)
459e2: 4283 clrl %d3 <== NOT EXECUTED
rtems_fdisk_printf (fd, " %3ld %s p:%3ld a:%3ld/%3ld" \
" u:%3ld/%3ld e:%3ld/%3ld br:%ld",
seg, queues,
sc->pages, sc->pages_active, active,
sc->pages_used, used, erased,
sc->pages - (sc->pages_active +
459e4: 202a 001c movel %a2@(28),%d0 <== NOT EXECUTED
sc->pages_used + sc->pages_bad),
459e8: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
459ec: 2241 moveal %d1,%a1 <== NOT EXECUTED
{
if (fd->blocks[block].segment == sc)
count++;
}
rtems_fdisk_printf (fd, " %3ld %s p:%3ld a:%3ld/%3ld" \
459ee: 2f03 movel %d3,%sp@- <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
459f0: d3ea 0024 addal %a2@(36),%a1 <== NOT EXECUTED
{
if (fd->blocks[block].segment == sc)
count++;
}
rtems_fdisk_printf (fd, " %3ld %s p:%3ld a:%3ld/%3ld" \
459f4: 2602 movel %d2,%d3 <== NOT EXECUTED
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
459f6: d3c0 addal %d0,%a1 <== NOT EXECUTED
{
if (fd->blocks[block].segment == sc)
count++;
}
rtems_fdisk_printf (fd, " %3ld %s p:%3ld a:%3ld/%3ld" \
459f8: 9689 subl %a1,%d3 <== NOT EXECUTED
459fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
459fc: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
45a00: 2f0c movel %a4,%sp@- <== NOT EXECUTED
45a02: 2f0d movel %a5,%sp@- <== NOT EXECUTED
45a04: 2f01 movel %d1,%sp@- <== NOT EXECUTED
45a06: 2f07 movel %d7,%sp@- <== NOT EXECUTED
45a08: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45a0a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45a0c: 486e fffb pea %fp@(-5) <== NOT EXECUTED
45a10: 2f05 movel %d5,%sp@- <== NOT EXECUTED
45a12: 4879 0007 0569 pea 70569 <map.6766+0x9b3> <== NOT EXECUTED
rtems_fdisk_printf (fd, " Device\t\t%ld", device);
rtems_fdisk_printf (fd, " Segment count\t%ld",
fd->devices[device].segment_count);
for (seg = 0; seg < fd->devices[device].segment_count; seg++)
45a18: 5285 addql #1,%d5 <== NOT EXECUTED
{
if (fd->blocks[block].segment == sc)
count++;
}
rtems_fdisk_printf (fd, " %3ld %s p:%3ld a:%3ld/%3ld" \
45a1a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45a1c: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_fdisk_printf (fd, " Device\t\t%ld", device);
rtems_fdisk_printf (fd, " Segment count\t%ld",
fd->devices[device].segment_count);
for (seg = 0; seg < fd->devices[device].segment_count; seg++)
45a1e: 206e ffe8 moveal %fp@(-24),%a0 <== NOT EXECUTED
45a22: d1eb 002c addal %a3@(44),%a0 <== NOT EXECUTED
45a26: 4fef 0030 lea %sp@(48),%sp <== NOT EXECUTED
45a2a: baa8 0004 cmpl %a0@(4),%d5 <== NOT EXECUTED
45a2e: 6500 fdee bcsw 4581e <rtems_fdisk_ioctl+0x5b2> <== NOT EXECUTED
45a32: 6000 fee0 braw 45914 <rtems_fdisk_ioctl+0x6a8> <== NOT EXECUTED
45a36: 222b 001c movel %a3@(28),%d1 <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
uint32_t page;
uint32_t erased = 0;
uint32_t active = 0;
45a3a: 4287 clrl %d7 <== NOT EXECUTED
uint32_t used = 0;
45a3c: 9bcd subal %a5,%a5 <== NOT EXECUTED
for (seg = 0; seg < fd->devices[device].segment_count; seg++)
{
rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
uint32_t page;
uint32_t erased = 0;
45a3e: 99cc subal %a4,%a4 <== NOT EXECUTED
45a40: 6000 fe60 braw 458a2 <rtems_fdisk_ioctl+0x636> <== NOT EXECUTED
{
case RTEMS_BLKIO_REQUEST:
if ((minor >= rtems_flashdisk_count) ||
(rtems_flashdisks[minor].device_count == 0))
{
errno = ENODEV;
45a44: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
45a4a: 226e ffec moveal %fp@(-20),%a1 <== NOT EXECUTED
45a4e: 2440 moveal %d0,%a2 <== NOT EXECUTED
45a50: 7413 moveq #19,%d2 <== NOT EXECUTED
45a52: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1 <== NOT EXECUTED
45a58: 2482 movel %d2,%a2@ <== NOT EXECUTED
45a5a: 6000 f8fc braw 45358 <rtems_fdisk_ioctl+0xec> <== NOT EXECUTED
else
{
switch (r->req)
{
case RTEMS_BLKDEV_REQ_READ:
errno = rtems_fdisk_read (&rtems_flashdisks[minor], r);
45a5e: 4eb9 0006 0414 jsr 60414 <__errno>
45a64: 266e ffec moveal %fp@(-20),%a3
* @retval 0 Always. The request done callback contains the status.
*/
static int
rtems_fdisk_read (rtems_flashdisk* fd, rtems_blkdev_request* req)
{
rtems_blkdev_sg_buffer* sg = req->bufs;
45a68: 280d movel %a5,%d4
45a6a: 0684 0000 0018 addil #24,%d4
else
{
switch (r->req)
{
case RTEMS_BLKDEV_REQ_READ:
errno = rtems_fdisk_read (&rtems_flashdisks[minor], r);
45a70: d7f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a3
45a76: 2844 moveal %d4,%a4
45a78: 280d movel %a5,%d4
45a7a: 2d40 ffe8 movel %d0,%fp@(-24)
45a7e: 202d 0010 movel %a5@(16),%d0
{
rtems_blkdev_sg_buffer* sg = req->bufs;
uint32_t buf;
int ret = 0;
for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)
45a82: 42ae fff4 clrl %fp@(-12)
45a86: b0ae fff4 cmpl %fp@(-12),%d0
45a8a: 6300 023e blsw 45cca <rtems_fdisk_ioctl+0xa5e>
{
uint8_t* data;
uint32_t fb;
uint32_t b;
fb = sg->length / fd->block_size;
45a8e: 262c 0004 movel %a4@(4),%d3
45a92: 4c6b 3003 0014 remul %a3@(20),%d3,%d3
data = sg->buffer;
45a98: 242c 0008 movel %a4@(8),%d2
for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)
{
uint8_t* data;
uint32_t fb;
uint32_t b;
fb = sg->length / fd->block_size;
45a9c: 2d43 fff0 movel %d3,%fp@(-16)
data = sg->buffer;
for (b = 0; b < fb; b++, data += fd->block_size)
45aa0: 6700 01e4 beqw 45c86 <rtems_fdisk_ioctl+0xa1a>
45aa4: 4283 clrl %d3
{
ret = rtems_fdisk_read_block (fd, sg->block + b, data);
45aa6: 2e03 movel %d3,%d7
45aa8: de94 addl %a4@,%d7
rtems_fdisk_block_ctl* bc;
rtems_fdisk_segment_ctl* sc;
rtems_fdisk_page_desc* pd;
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "read-block:%d", block);
45aaa: 2f07 movel %d7,%sp@-
45aac: 4879 0007 004a pea 7004a <map.6766+0x494>
45ab2: 2f0b movel %a3,%sp@-
45ab4: 4eba e60c jsr %pc@(440c2 <rtems_fdisk_info>)
/*
* Broken out to allow info messages when testing.
*/
if (block >= (fd->block_count - fd->unavail_blocks))
45ab8: 202b 001c movel %a3@(28),%d0
45abc: 90ab 0020 subl %a3@(32),%d0
45ac0: 4fef 000c lea %sp@(12),%sp
45ac4: b087 cmpl %d7,%d0
45ac6: 6300 0168 blsw 45c30 <rtems_fdisk_ioctl+0x9c4>
{
rtems_fdisk_error ("read-block: block out of range: %d", block);
return EIO;
}
bc = &fd->blocks[block];
45aca: 2c07 movel %d7,%d6
45acc: e78e lsll #3,%d6
45ace: dcab 0018 addl %a3@(24),%d6
if (!bc->segment)
45ad2: 2046 moveal %d6,%a0
45ad4: 2450 moveal %a0@,%a2
45ad6: 4a8a tstl %a2
45ad8: 6700 0174 beqw 45c4e <rtems_fdisk_ioctl+0x9e2>
memset (buffer, 0xff, fd->block_size);
return 0;
}
sc = fd->blocks[block].segment;
pd = &sc->page_descriptors[bc->page];
45adc: 2028 0004 movel %a0@(4),%d0
45ae0: 2200 movel %d0,%d1
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd,
45ae2: 4285 clrl %d5
memset (buffer, 0xff, fd->block_size);
return 0;
}
sc = fd->blocks[block].segment;
pd = &sc->page_descriptors[bc->page];
45ae4: e789 lsll #3,%d1
45ae6: 2a6a 0010 moveal %a2@(16),%a5
45aea: dbc1 addal %d1,%a5
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd,
45aec: 4281 clrl %d1
45aee: 3215 movew %a5@,%d1
45af0: 226d 0004 moveal %a5@(4),%a1
45af4: 2041 moveal %d1,%a0
45af6: 3a2d 0002 movew %a5@(2),%d5
45afa: 4a92 tstl %a2@
45afc: 6700 0146 beqw 45c44 <rtems_fdisk_ioctl+0x9d8>
45b00: 223c 0007 1e92 movel #466578,%d1
45b06: 2f09 movel %a1,%sp@-
45b08: 2f08 movel %a0,%sp@-
45b0a: 2f05 movel %d5,%sp@-
45b0c: 2f01 movel %d1,%sp@-
45b0e: 2f2a 0024 movel %a2@(36),%sp@-
45b12: 2f2a 0020 movel %a2@(32),%sp@-
45b16: 2f2a 001c movel %a2@(28),%sp@-
45b1a: 2f2a 0014 movel %a2@(20),%sp@-
45b1e: 2f00 movel %d0,%sp@-
45b20: 2f2a 000c movel %a2@(12),%sp@-
45b24: 2f2a 0008 movel %a2@(8),%sp@-
45b28: 2f07 movel %d7,%sp@-
45b2a: 4879 0007 009e pea 7009e <map.6766+0x4e8>
45b30: 2f0b movel %a3,%sp@-
45b32: 4eba e58e jsr %pc@(440c2 <rtems_fdisk_info>)
sc->pages, sc->pages_active, sc->pages_used, sc->pages_bad,
sc->next ? "set" : "null",
pd->flags, pd->crc, pd->block);
#endif
if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
45b36: 4fef 0038 lea %sp@(56),%sp
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
45b3a: 302d 0002 movew %a5@(2),%d0
sc->pages, sc->pages_active, sc->pages_used, sc->pages_bad,
sc->next ? "set" : "null",
pd->flags, pd->crc, pd->block);
#endif
if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
45b3e: 0800 0000 btst #0,%d0
45b42: 6648 bnes 45b8c <rtems_fdisk_ioctl+0x920> <== NEVER TAKEN
{
if (rtems_fdisk_page_desc_flags_clear (pd, RTEMS_FDISK_PAGE_USED))
45b44: 0800 0001 btst #1,%d0
45b48: 6664 bnes 45bae <rtems_fdisk_ioctl+0x942> <== ALWAYS TAKEN
rtems_fdisk_error ("read-block: crc failure: %d: buffer:%04x page:%04x",
block, cs, pd->crc);
}
else
{
rtems_fdisk_error ("read-block: block points to used page: %d: %d-%d-%d",
45b4a: 2046 moveal %d6,%a0 <== NOT EXECUTED
45b4c: 2a44 moveal %d4,%a5 <== NOT EXECUTED
45b4e: 2f28 0004 movel %a0@(4),%sp@- <== NOT EXECUTED
45b52: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
45b56: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
45b5a: 2f07 movel %d7,%sp@- <== NOT EXECUTED
45b5c: 4879 0007 014d pea 7014d <map.6766+0x597> <== NOT EXECUTED
45b62: 4eba e782 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
45b66: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
if (ret)
break;
}
}
rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
45b6a: 701b moveq #27,%d0 <== NOT EXECUTED
static inline void rtems_blkdev_request_done(
rtems_blkdev_request *req,
rtems_status_code status
)
{
(*req->done)(req, status);
45b6c: 2f00 movel %d0,%sp@-
45b6e: 206d 0004 moveal %a5@(4),%a0
45b72: 2f0d movel %a5,%sp@-
45b74: 4e90 jsr %a0@
45b76: 226e ffec moveal %fp@(-20),%a1
45b7a: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1
{
switch (r->req)
{
case RTEMS_BLKDEV_REQ_READ:
errno = rtems_fdisk_read (&rtems_flashdisks[minor], r);
break;
45b80: 508f addql #8,%sp
else
{
switch (r->req)
{
case RTEMS_BLKDEV_REQ_READ:
errno = rtems_fdisk_read (&rtems_flashdisks[minor], r);
45b82: 246e ffe8 moveal %fp@(-24),%a2
45b86: 4292 clrl %a2@
break;
45b88: 6000 f7ce braw 45358 <rtems_fdisk_ioctl+0xec>
block, sc->device, sc->segment, bc->page);
}
}
else
{
rtems_fdisk_error ("read-block: block page not active: %d: %d-%d-%d",
45b8c: 2246 moveal %d6,%a1 <== NOT EXECUTED
45b8e: 2a44 moveal %d4,%a5 <== NOT EXECUTED
45b90: 2f29 0004 movel %a1@(4),%sp@- <== NOT EXECUTED
45b94: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
45b98: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
45b9c: 2f07 movel %d7,%sp@- <== NOT EXECUTED
45b9e: 4879 0007 0181 pea 70181 <map.6766+0x5cb> <== NOT EXECUTED
45ba4: 4eba e740 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
45ba8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
45bac: 60bc bras 45b6a <rtems_fdisk_ioctl+0x8fe> <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc,
uint32_t page,
void* buffer)
{
return rtems_fdisk_seg_read (fd, sc,
page * fd->block_size, buffer, fd->block_size);
45bae: 202b 0014 movel %a3@(20),%d0
/*
* We use the segment page offset not the page number used in the
* driver. This skips the page descriptors.
*/
int ret = rtems_fdisk_seg_read_page (fd, sc,
45bb2: 2046 moveal %d6,%a0
rtems_fdisk_seg_read_page (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page,
void* buffer)
{
return rtems_fdisk_seg_read (fd, sc,
45bb4: 2f00 movel %d0,%sp@-
45bb6: 2f02 movel %d2,%sp@-
/*
* We use the segment page offset not the page number used in the
* driver. This skips the page descriptors.
*/
int ret = rtems_fdisk_seg_read_page (fd, sc,
45bb8: 222a 0018 movel %a2@(24),%d1
45bbc: d2a8 0004 addl %a0@(4),%d1
rtems_fdisk_seg_read_page (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page,
void* buffer)
{
return rtems_fdisk_seg_read (fd, sc,
45bc0: 4c00 1800 mulsl %d0,%d1
45bc4: 2f01 movel %d1,%sp@-
45bc6: 2f2a 000c movel %a2@(12),%sp@-
45bca: 2f2a 0008 movel %a2@(8),%sp@-
45bce: 2f0b movel %a3,%sp@-
45bd0: 4eba ebb4 jsr %pc@(44786 <rtems_fdisk_seg_read.isra.14>)
* driver. This skips the page descriptors.
*/
int ret = rtems_fdisk_seg_read_page (fd, sc,
bc->page + sc->pages_desc, buffer);
if (ret)
45bd4: 4fef 0018 lea %sp@(24),%sp
45bd8: 4a80 tstl %d0
45bda: 6600 00bc bnew 45c98 <rtems_fdisk_ioctl+0xa2c>
strerror (ret), ret);
#endif
return ret;
}
cs = rtems_fdisk_page_checksum (buffer, fd->block_size);
45bde: 202b 0014 movel %a3@(20),%d0
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size)
{
uint16_t cs = 0xffff;
uint32_t i;
for (i = 0; i < page_size; i++, buffer++)
45be2: 6700 00ae beqw 45c92 <rtems_fdisk_ioctl+0xa26>
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
45be6: 2242 moveal %d2,%a1
45be8: d3c0 addal %d0,%a1
45bea: 2042 moveal %d2,%a0
* Calculate the checksum of a page in a segment.
*/
static uint16_t
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size)
{
uint16_t cs = 0xffff;
45bec: 72ff moveq #-1,%d1
45bee: 2479 0008 4fa0 moveal 84fa0 <rtems_fdisk_crc16_factor>,%a2
uint32_t i;
for (i = 0; i < page_size; i++, buffer++)
cs = rtems_fdisk_calc_crc16 (cs, *buffer);
45bf4: 4285 clrl %d5
45bf6: 1a18 moveb %a0@+,%d5
45bf8: 0281 0000 00ff andil #255,%d1
45bfe: bb81 eorl %d5,%d1
45c00: 3232 1a00 movew %a2@(00000000,%d1:l:2),%d1
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size)
{
uint16_t cs = 0xffff;
uint32_t i;
for (i = 0; i < page_size; i++, buffer++)
45c04: b3c8 cmpal %a0,%a1
45c06: 66ec bnes 45bf4 <rtems_fdisk_ioctl+0x988>
return ret;
}
cs = rtems_fdisk_page_checksum (buffer, fd->block_size);
if (cs == pd->crc)
45c08: 4285 clrl %d5
45c0a: 0281 0000 ffff andil #65535,%d1
45c10: 3a15 movew %a5@,%d5
45c12: ba81 cmpl %d1,%d5
45c14: 675e beqs 45c74 <rtems_fdisk_ioctl+0xa08> <== ALWAYS TAKEN
return 0;
rtems_fdisk_error ("read-block: crc failure: %d: buffer:%04x page:%04x",
45c16: 2f05 movel %d5,%sp@- <== NOT EXECUTED
45c18: 2a44 moveal %d4,%a5 <== NOT EXECUTED
45c1a: 2f01 movel %d1,%sp@- <== NOT EXECUTED
45c1c: 2f07 movel %d7,%sp@- <== NOT EXECUTED
45c1e: 4879 0007 011a pea 7011a <map.6766+0x564> <== NOT EXECUTED
45c24: 4eba e6c0 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
45c28: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45c2c: 6000 ff3c braw 45b6a <rtems_fdisk_ioctl+0x8fe> <== NOT EXECUTED
* Broken out to allow info messages when testing.
*/
if (block >= (fd->block_count - fd->unavail_blocks))
{
rtems_fdisk_error ("read-block: block out of range: %d", block);
45c30: 2f07 movel %d7,%sp@- <== NOT EXECUTED
45c32: 4879 0007 0058 pea 70058 <map.6766+0x4a2> <== NOT EXECUTED
45c38: 2a44 moveal %d4,%a5 <== NOT EXECUTED
45c3a: 4eba e6aa jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
45c3e: 508f addql #8,%sp <== NOT EXECUTED
45c40: 6000 ff28 braw 45b6a <rtems_fdisk_ioctl+0x8fe> <== NOT EXECUTED
sc = fd->blocks[block].segment;
pd = &sc->page_descriptors[bc->page];
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd,
45c44: 223c 0006 fc46 movel #457798,%d1 <== NOT EXECUTED
45c4a: 6000 feba braw 45b06 <rtems_fdisk_ioctl+0x89a> <== NOT EXECUTED
bc = &fd->blocks[block];
if (!bc->segment)
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "read-block: no segment mapping: %d", block);
45c4e: 2f07 movel %d7,%sp@-
45c50: 4879 0007 007b pea 7007b <map.6766+0x4c5>
45c56: 2f0b movel %a3,%sp@-
45c58: 4eba e468 jsr %pc@(440c2 <rtems_fdisk_info>)
#endif
memset (buffer, 0xff, fd->block_size);
45c5c: 2f2b 0014 movel %a3@(20),%sp@-
45c60: 4878 00ff pea ff <DBL_MANT_DIG+0xca>
45c64: 2f02 movel %d2,%sp@-
45c66: 4eb9 0006 159c jsr 6159c <memset>
45c6c: 202b 0014 movel %a3@(20),%d0
45c70: 4fef 0018 lea %sp@(24),%sp
uint8_t* data;
uint32_t fb;
uint32_t b;
fb = sg->length / fd->block_size;
data = sg->buffer;
for (b = 0; b < fb; b++, data += fd->block_size)
45c74: 5283 addql #1,%d3
45c76: d480 addl %d0,%d2
45c78: b6ae fff0 cmpl %fp@(-16),%d3
45c7c: 6600 fe28 bnew 45aa6 <rtems_fdisk_ioctl+0x83a>
45c80: 2044 moveal %d4,%a0
45c82: 2028 0010 movel %a0@(16),%d0
{
rtems_blkdev_sg_buffer* sg = req->bufs;
uint32_t buf;
int ret = 0;
for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)
45c86: 52ae fff4 addql #1,%fp@(-12)
45c8a: 49ec 0010 lea %a4@(16),%a4
45c8e: 6000 fdf6 braw 45a86 <rtems_fdisk_ioctl+0x81a>
* Calculate the checksum of a page in a segment.
*/
static uint16_t
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size)
{
uint16_t cs = 0xffff;
45c92: 72ff moveq #-1,%d1 <== NOT EXECUTED
45c94: 6000 ff72 braw 45c08 <rtems_fdisk_ioctl+0x99c> <== NOT EXECUTED
bc->page + sc->pages_desc, buffer);
if (ret)
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd,
45c98: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45c9a: 2a00 movel %d0,%d5 <== NOT EXECUTED
45c9c: 2a44 moveal %d4,%a5 <== NOT EXECUTED
45c9e: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
45ca4: 2246 moveal %d6,%a1 <== NOT EXECUTED
45ca6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
45ca8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45caa: 2f29 0004 movel %a1@(4),%sp@- <== NOT EXECUTED
45cae: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
45cb2: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
45cb6: 4879 0007 00e5 pea 700e5 <map.6766+0x52f> <== NOT EXECUTED
45cbc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45cbe: 4eba e402 jsr %pc@(440c2 <rtems_fdisk_info>) <== NOT EXECUTED
45cc2: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
45cc6: 6000 fea2 braw 45b6a <rtems_fdisk_ioctl+0x8fe> <== NOT EXECUTED
45cca: 2a44 moveal %d4,%a5
if (ret)
break;
}
}
rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
45ccc: 4280 clrl %d0
45cce: 6000 fe9c braw 45b6c <rtems_fdisk_ioctl+0x900>
count = 0;
for (device = 0; device < fd->device_count; device++)
count += fd->devices[device].segment_count;
rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
45cd2: 223c 0007 003f movel #458815,%d1 <== NOT EXECUTED
45cd8: 6000 fad0 braw 457aa <rtems_fdisk_ioctl+0x53e> <== NOT EXECUTED
count = rtems_fdisk_segment_count_queue (&fd->failed);
total += count;
rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",
count, rtems_fdisk_segment_queue_count (&fd->failed));
count = 0;
45cdc: 4280 clrl %d0 <== NOT EXECUTED
for (device = 0; device < fd->device_count; device++)
count += fd->devices[device].segment_count;
rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
45cde: 223c 0007 0042 movel #458818,%d1 <== NOT EXECUTED
45ce4: b082 cmpl %d2,%d0 <== NOT EXECUTED
45ce6: 6600 fac2 bnew 457aa <rtems_fdisk_ioctl+0x53e> <== NOT EXECUTED
45cea: 60e6 bras 45cd2 <rtems_fdisk_ioctl+0xa66> <== NOT EXECUTED
45cec: 226e ffec moveal %fp@(-20),%a1 <== NOT EXECUTED
*/
static int
rtems_fdisk_erase_flash (const rtems_flashdisk* fd)
{
uint32_t device;
for (device = 0; device < fd->device_count; device++)
45cf0: 4280 clrl %d0 <== NOT EXECUTED
45cf2: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1 <== NOT EXECUTED
}
}
break;
case RTEMS_FDISK_IOCTL_ERASE_DISK:
errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);
45cf8: 2680 movel %d0,%a3@ <== NOT EXECUTED
45cfa: 6000 f65c braw 45358 <rtems_fdisk_ioctl+0xec> <== NOT EXECUTED
case RTEMS_BLKDEV_REQ_READ:
errno = rtems_fdisk_read (&rtems_flashdisks[minor], r);
break;
case RTEMS_BLKDEV_REQ_WRITE:
errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
45cfe: 4eb9 0006 0414 jsr 60414 <__errno>
45d04: 246e ffec moveal %fp@(-20),%a2
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
45d08: 41ed 0028 lea %a5@(40),%a0
45d0c: 7201 moveq #1,%d1
case RTEMS_BLKDEV_REQ_READ:
errno = rtems_fdisk_read (&rtems_flashdisks[minor], r);
break;
case RTEMS_BLKDEV_REQ_WRITE:
errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
45d0e: d5f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a2
45d14: 2d40 ffdc movel %d0,%fp@(-36)
45d18: 202d 0010 movel %a5@(16),%d0
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
45d1c: 2d48 fff0 movel %a0,%fp@(-16)
45d20: 2d41 ffe8 movel %d1,%fp@(-24)
45d24: 2d4d fff4 movel %a5,%fp@(-12)
{
rtems_blkdev_sg_buffer* sg = req->bufs;
uint32_t buf;
int ret = 0;
for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)
45d28: 222e ffe8 movel %fp@(-24),%d1
45d2c: 5381 subql #1,%d1
45d2e: b081 cmpl %d1,%d0
45d30: 6300 04ea blsw 4621c <rtems_fdisk_ioctl+0xfb0>
{
uint8_t* data;
uint32_t fb;
uint32_t b;
fb = sg->length / fd->block_size;
data = sg->buffer;
45d34: 206e fff0 moveal %fp@(-16),%a0
for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)
{
uint8_t* data;
uint32_t fb;
uint32_t b;
fb = sg->length / fd->block_size;
45d38: 2428 fff4 movel %a0@(-12),%d2
45d3c: 4c6a 2002 0014 remul %a2@(20),%d2,%d2
data = sg->buffer;
45d42: 2628 fff8 movel %a0@(-8),%d3
for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)
{
uint8_t* data;
uint32_t fb;
uint32_t b;
fb = sg->length / fd->block_size;
45d46: 2d42 ffe0 movel %d2,%fp@(-32)
data = sg->buffer;
for (b = 0; b < fb; b++, data += fd->block_size)
45d4a: 6700 0364 beqw 460b0 <rtems_fdisk_ioctl+0xe44>
45d4e: 4284 clrl %d4
{
ret = rtems_fdisk_write_block (fd, sg->block + b, data);
45d50: 206e fff0 moveal %fp@(-16),%a0
45d54: 2a04 movel %d4,%d5
45d56: daa8 fff0 addl %a0@(-16),%d5
rtems_fdisk_page_desc* pd;
uint32_t page;
int ret;
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "write-block:%d", block);
45d5a: 2f05 movel %d5,%sp@-
45d5c: 4879 0007 01b1 pea 701b1 <map.6766+0x5fb>
45d62: 2f0a movel %a2,%sp@-
45d64: 4eba e35c jsr %pc@(440c2 <rtems_fdisk_info>)
/*
* Broken out to allow info messages when testing.
*/
if (block >= (fd->block_count - fd->unavail_blocks))
45d68: 202a 001c movel %a2@(28),%d0
45d6c: 90aa 0020 subl %a2@(32),%d0
45d70: 4fef 000c lea %sp@(12),%sp
45d74: b085 cmpl %d5,%d0
45d76: 6300 0208 blsw 45f80 <rtems_fdisk_ioctl+0xd14>
{
rtems_fdisk_error ("write-block: block out of range: %d", block);
return EIO;
}
bc = &fd->blocks[block];
45d7a: 2005 movel %d5,%d0
45d7c: e788 lsll #3,%d0
45d7e: 2a6a 0018 moveal %a2@(24),%a5
45d82: dbc0 addal %d0,%a5
/*
* Does the page exist in flash ?
*/
if (bc->segment)
45d84: 2655 moveal %a5@,%a3
45d86: 4a8b tstl %a3
45d88: 6700 015a beqw 45ee4 <rtems_fdisk_ioctl+0xc78>
{
sc = bc->segment;
pd = &sc->page_descriptors[bc->page];
45d8c: 202d 0004 movel %a5@(4),%d0
45d90: 2200 movel %d0,%d1
45d92: 286b 0010 moveal %a3@(16),%a4
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",
45d96: 2f00 movel %d0,%sp@-
45d98: 2f2b 000c movel %a3@(12),%sp@-
45d9c: 2f2b 0008 movel %a3@(8),%sp@-
45da0: 4879 0007 01e4 pea 701e4 <map.6766+0x62e>
* Does the page exist in flash ?
*/
if (bc->segment)
{
sc = bc->segment;
pd = &sc->page_descriptors[bc->page];
45da6: e789 lsll #3,%d1
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",
45da8: 2f0a movel %a2,%sp@-
* Does the page exist in flash ?
*/
if (bc->segment)
{
sc = bc->segment;
pd = &sc->page_descriptors[bc->page];
45daa: d9c1 addal %d1,%a4
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",
45dac: 4eba e314 jsr %pc@(440c2 <rtems_fdisk_info>)
#endif
/*
* The page exists in flash so see if the page has been changed.
*/
if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,
45db0: 242b 0008 movel %a3@(8),%d2
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
45db4: 2c02 movel %d2,%d6
45db6: 2002 movel %d2,%d0
45db8: e58e lsll #2,%d6
45dba: e988 lsll #4,%d0
45dbc: 226a 002c moveal %a2@(44),%a1
45dc0: 9086 subl %d6,%d0
45dc2: d3c0 addal %d0,%a1
#endif
/*
* The page exists in flash so see if the page has been changed.
*/
if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,
45dc4: 222b 000c movel %a3@(12),%d1
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
45dc8: 2c01 movel %d1,%d6
45dca: 2001 movel %d1,%d0
uint32_t size)
{
const rtems_fdisk_segment_desc* sd;
const rtems_fdisk_driver_handlers* ops;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
45dcc: 2069 0008 moveal %a1@(8),%a0
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
45dd0: 2d51 ffe4 movel %a1@,%fp@(-28)
45dd4: 226e ffe4 moveal %fp@(-28),%a1
45dd8: e98e lsll #4,%d6
45dda: ed88 lsll #6,%d0
#endif
/*
* The page exists in flash so see if the page has been changed.
*/
if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,
45ddc: 2e2b 0018 movel %a3@(24),%d7
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
45de0: 9086 subl %d6,%d0
#endif
/*
* The page exists in flash so see if the page has been changed.
*/
if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,
45de2: dead 0004 addl %a5@(4),%d7
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
45de6: 2031 0804 movel %a1@(00000004,%d0:l),%d0
uint32_t segment,
uint32_t page,
const void* buffer)
{
return rtems_fdisk_seg_verify (fd, device, segment,
page * fd->block_size, buffer, fd->block_size);
45dea: 226a 0014 moveal %a2@(20),%a1
uint32_t size)
{
const rtems_fdisk_segment_desc* sd;
const rtems_fdisk_driver_handlers* ops;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
45dee: 2c28 0008 movel %a0@(8),%d6
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
45df2: 2d40 ffe4 movel %d0,%fp@(-28)
uint32_t device,
uint32_t segment,
uint32_t page,
const void* buffer)
{
return rtems_fdisk_seg_verify (fd, device, segment,
45df6: 2009 movel %a1,%d0
45df8: 4c00 7800 mulsl %d0,%d7
const rtems_fdisk_segment_desc* sd;
const rtems_fdisk_driver_handlers* ops;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " seg-verify: %02d-%03d: o=%08x s=%d",
45dfc: 2f09 movel %a1,%sp@-
45dfe: 2f07 movel %d7,%sp@-
45e00: 2f01 movel %d1,%sp@-
45e02: 2f02 movel %d2,%sp@-
45e04: 4879 0007 0205 pea 70205 <map.6766+0x64f>
45e0a: 2d41 ffd8 movel %d1,%fp@(-40)
45e0e: 2f0a movel %a2,%sp@-
45e10: 2d49 ffd4 movel %a1,%fp@(-44)
45e14: 4eba e336 jsr %pc@(4414c <rtems_fdisk_printf>)
device, segment, offset, size);
#endif
return ops->verify (sd, device, segment, offset, buffer, size);
45e18: 226e ffd4 moveal %fp@(-44),%a1
45e1c: 4fef 002c lea %sp@(44),%sp
45e20: 2046 moveal %d6,%a0
45e22: 2f09 movel %a1,%sp@-
45e24: 222e ffd8 movel %fp@(-40),%d1
45e28: 2f03 movel %d3,%sp@-
45e2a: 2f07 movel %d7,%sp@-
45e2c: 2f01 movel %d1,%sp@-
45e2e: 2f02 movel %d2,%sp@-
45e30: 2f2e ffe4 movel %fp@(-28),%sp@-
45e34: 2028 000c movel %a0@(12),%d0
45e38: 2240 moveal %d0,%a1
45e3a: 4e91 jsr %a1@
#endif
/*
* The page exists in flash so see if the page has been changed.
*/
if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,
45e3c: 4fef 0018 lea %sp@(24),%sp
45e40: 4a80 tstl %d0
45e42: 6700 0338 beqw 4617c <rtems_fdisk_ioctl+0xf10>
* matches the flash device.
*/
rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_USED);
ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
45e46: 2e2d 0004 movel %a5@(4),%d7
* Set the flags. Setting means clear the bit to 0.
*/
static void
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{
pd->flags &= ~flags;
45e4a: 70fd moveq #-3,%d0
rtems_fdisk_seg_write_page_desc_flags (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page,
const rtems_fdisk_page_desc* page_desc)
{
uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +
45e4c: 2c07 movel %d7,%d6
* Set the flags. Setting means clear the bit to 0.
*/
static void
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{
pd->flags &= ~flags;
45e4e: 322c 0002 movew %a4@(2),%d1
rtems_fdisk_seg_write_page_desc_flags (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page,
const rtems_fdisk_page_desc* page_desc)
{
uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +
45e52: e78e lsll #3,%d6
* Set the flags. Setting means clear the bit to 0.
*/
static void
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{
pd->flags &= ~flags;
45e54: c280 andl %d0,%d1
uint32_t page,
const rtems_fdisk_page_desc* page_desc)
{
uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +
((uint8_t*) &page_desc->flags) - ((uint8_t*) page_desc));
if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))
45e56: 7008 moveq #8,%d0
rtems_fdisk_segment_ctl* sc,
uint32_t page,
const rtems_fdisk_page_desc* page_desc)
{
uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +
((uint8_t*) &page_desc->flags) - ((uint8_t*) page_desc));
45e58: 5486 addql #2,%d6
if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))
45e5a: c0aa 0008 andl %a2@(8),%d0
* Set the flags. Setting means clear the bit to 0.
*/
static void
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{
pd->flags &= ~flags;
45e5e: 3941 0002 movew %d1,%a4@(2)
uint32_t page,
const rtems_fdisk_page_desc* page_desc)
{
uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +
((uint8_t*) &page_desc->flags) - ((uint8_t*) page_desc));
if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))
45e62: 4a80 tstl %d0
45e64: 6700 02cc beqw 46132 <rtems_fdisk_ioctl+0xec6>
{
uint16_t flash_flags;
int ret;
ret = rtems_fdisk_seg_read (fd, sc, offset,
45e68: 4878 0002 pea 2 <DOUBLE_FLOAT>
45e6c: 486e fff8 pea %fp@(-8)
45e70: 2f06 movel %d6,%sp@-
45e72: 2f2b 000c movel %a3@(12),%sp@-
45e76: 2f2b 0008 movel %a3@(8),%sp@-
45e7a: 2f0a movel %a2,%sp@-
45e7c: 4eba e908 jsr %pc@(44786 <rtems_fdisk_seg_read.isra.14>)
&flash_flags, sizeof (flash_flags));
if (ret)
45e80: 4fef 0018 lea %sp@(24),%sp
((uint8_t*) &page_desc->flags) - ((uint8_t*) page_desc));
if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))
{
uint16_t flash_flags;
int ret;
ret = rtems_fdisk_seg_read (fd, sc, offset,
45e84: 2400 movel %d0,%d2
&flash_flags, sizeof (flash_flags));
if (ret)
45e86: 6600 02c2 bnew 4614a <rtems_fdisk_ioctl+0xede>
return ret;
if ((flash_flags & page_desc->flags) != page_desc->flags)
45e8a: 4282 clrl %d2
45e8c: 342c 0002 movew %a4@(2),%d2
45e90: 302e fff8 movew %fp@(-8),%d0
45e94: 2202 movel %d2,%d1
45e96: c480 andl %d0,%d2
45e98: 0282 0000 ffff andil #65535,%d2
45e9e: b481 cmpl %d1,%d2
45ea0: 6700 0290 beqw 46132 <rtems_fdisk_ioctl+0xec6>
{
rtems_fdisk_error (" seg-write-page-flags: %02d-%03d-%03d: "
45ea4: 2f01 movel %d1,%sp@- <== NOT EXECUTED
45ea6: 3f00 movew %d0,%sp@- <== NOT EXECUTED
45ea8: 4267 clrw %sp@- <== NOT EXECUTED
45eaa: 2f07 movel %d7,%sp@- <== NOT EXECUTED
45eac: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
45eb0: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
45eb4: 4879 0007 0258 pea 70258 <map.6766+0x6a2> <== NOT EXECUTED
45eba: 4eba e42a jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
45ebe: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
strerror (ret), ret);
#endif
}
else
{
sc->pages_active--;
45ec2: 53ab 001c subql #1,%a3@(28)
sc->pages_used++;
45ec6: 52ab 0020 addql #1,%a3@(32)
/*
* If possible reuse this segment. This will mean the segment
* needs to be removed from the available list and placed
* back if space is still available.
*/
rtems_fdisk_queue_segment (fd, sc);
45eca: 2f0b movel %a3,%sp@-
45ecc: 2f0a movel %a2,%sp@-
45ece: 4eba e612 jsr %pc@(444e2 <rtems_fdisk_queue_segment>)
/*
* If no background compacting then compact in the forground.
* If we compact we ignore the error as there is little we
* can do from here. The write may will work.
*/
if ((fd->flags & RTEMS_FDISK_BACKGROUND_COMPACT) == 0)
45ed2: 508f addql #8,%sp
45ed4: 7002 moveq #2,%d0
45ed6: c0aa 0008 andl %a2@(8),%d0
45eda: 6608 bnes 45ee4 <rtems_fdisk_ioctl+0xc78> <== NEVER TAKEN
rtems_fdisk_compact (fd);
45edc: 2f0a movel %a2,%sp@-
45ede: 4eba ee1a jsr %pc@(44cfa <rtems_fdisk_compact>)
45ee2: 588f addql #4,%sp
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
45ee4: 286a 0034 moveal %a2@(52),%a4
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
45ee8: 4a8c tstl %a4
45eea: 6700 0216 beqw 46102 <rtems_fdisk_ioctl+0xe96>
45eee: 204c moveal %a4,%a0
45ef0: 4280 clrl %d0
{
count++;
sc = sc->next;
45ef2: 2050 moveal %a0@,%a0
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
{
count++;
45ef4: 5280 addql #1,%d0
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
uint32_t count = 0;
while (sc)
45ef6: 4a88 tstl %a0
45ef8: 66f8 bnes 45ef2 <rtems_fdisk_ioctl+0xc86>
/*
* Is it time to compact the disk ?
*
* We override the background compaction configruation.
*/
if (rtems_fdisk_segment_count_queue (&fd->available) <=
45efa: b0aa 0010 cmpl %a2@(16),%d0
45efe: 6300 0202 blsw 46102 <rtems_fdisk_ioctl+0xe96>
{
if (queue->head)
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
45f02: 2014 movel %a4@,%d0
45f04: 2540 0034 movel %d0,%a2@(52)
if (!queue->head)
45f08: 6700 01e2 beqw 460ec <rtems_fdisk_ioctl+0xe80>
queue->tail = 0;
queue->count--;
45f0c: 53aa 003c subql #1,%a2@(60)
return ENOSPC;
}
}
#if RTEMS_FDISK_TRACE
if (fd->info_level >= 3)
45f10: 7202 moveq #2,%d1
if (!queue->head)
queue->tail = 0;
queue->count--;
sc->next = 0;
45f12: 4294 clrl %a4@
return ENOSPC;
}
}
#if RTEMS_FDISK_TRACE
if (fd->info_level >= 3)
45f14: b2aa 006c cmpl %a2@(108),%d1
45f18: 6500 01a4 bcsw 460be <rtems_fdisk_ioctl+0xe52>
/*
* Find the next avaliable page in the segment.
*/
pd = sc->page_descriptors;
45f1c: 266c 0010 moveal %a4@(16),%a3
for (page = 0; page < sc->pages; page++, pd++)
45f20: 222c 0014 movel %a4@(20),%d1
45f24: 6710 beqs 45f36 <rtems_fdisk_ioctl+0xcca> <== NEVER TAKEN
45f26: 4282 clrl %d2
static bool
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)
{
return ((pd->crc == 0xffff) &&
(pd->flags == 0xffff) &&
(pd->block == 0xffffffff)) ? true : false;
45f28: 7cff moveq #-1,%d6
45f2a: bc93 cmpl %a3@,%d6
45f2c: 6766 beqs 45f94 <rtems_fdisk_ioctl+0xd28>
* Find the next avaliable page in the segment.
*/
pd = sc->page_descriptors;
for (page = 0; page < sc->pages; page++, pd++)
45f2e: 5282 addql #1,%d2
45f30: 508b addql #8,%a3
45f32: b282 cmpl %d2,%d1
45f34: 66f2 bnes 45f28 <rtems_fdisk_ioctl+0xcbc> <== ALWAYS TAKEN
return ret;
}
}
rtems_fdisk_error ("write-block: no erased page descs in segment: %d-%d",
45f36: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED
45f3a: 2f2c 0008 movel %a4@(8),%sp@- <== NOT EXECUTED
45f3e: 4879 0007 03c6 pea 703c6 <map.6766+0x810> <== NOT EXECUTED
45f44: 2a6e fff4 moveal %fp@(-12),%a5 <== NOT EXECUTED
45f48: 4eba e39c jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
sc->device, sc->segment);
sc->failed = true;
45f4c: 7001 moveq #1,%d0 <== NOT EXECUTED
45f4e: 2940 0028 movel %d0,%a4@(40) <== NOT EXECUTED
rtems_fdisk_queue_segment (fd, sc);
45f52: 2f0c movel %a4,%sp@- <== NOT EXECUTED
45f54: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45f56: 4eba e58a jsr %pc@(444e2 <rtems_fdisk_queue_segment>) <== NOT EXECUTED
45f5a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
if (ret)
break;
}
}
rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
45f5e: 701b moveq #27,%d0 <== NOT EXECUTED
45f60: 2f00 movel %d0,%sp@-
45f62: 206d 0004 moveal %a5@(4),%a0
45f66: 2f0d movel %a5,%sp@-
45f68: 4e90 jsr %a0@
45f6a: 226e ffec moveal %fp@(-20),%a1
45f6e: d3f9 0008 4f98 addal 84f98 <rtems_flashdisks>,%a1
errno = rtems_fdisk_read (&rtems_flashdisks[minor], r);
break;
case RTEMS_BLKDEV_REQ_WRITE:
errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
break;
45f74: 508f addql #8,%sp
case RTEMS_BLKDEV_REQ_READ:
errno = rtems_fdisk_read (&rtems_flashdisks[minor], r);
break;
case RTEMS_BLKDEV_REQ_WRITE:
errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
45f76: 206e ffdc moveal %fp@(-36),%a0
45f7a: 4290 clrl %a0@
break;
45f7c: 6000 f3da braw 45358 <rtems_fdisk_ioctl+0xec>
* Broken out to allow info messages when testing.
*/
if (block >= (fd->block_count - fd->unavail_blocks))
{
rtems_fdisk_error ("write-block: block out of range: %d", block);
45f80: 2f05 movel %d5,%sp@- <== NOT EXECUTED
45f82: 4879 0007 01c0 pea 701c0 <map.6766+0x60a> <== NOT EXECUTED
45f88: 2a6e fff4 moveal %fp@(-12),%a5 <== NOT EXECUTED
45f8c: 4eba e358 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
45f90: 508f addql #8,%sp <== NOT EXECUTED
45f92: 60ca bras 45f5e <rtems_fdisk_ioctl+0xcf2> <== NOT EXECUTED
static bool
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)
{
return ((pd->crc == 0xffff) &&
(pd->flags == 0xffff) &&
(pd->block == 0xffffffff)) ? true : false;
45f94: bcab 0004 cmpl %a3@(4),%d6
45f98: 6694 bnes 45f2e <rtems_fdisk_ioctl+0xcc2> <== NEVER TAKEN
for (page = 0; page < sc->pages; page++, pd++)
{
if (rtems_fdisk_page_desc_erased (pd))
{
pd->crc = rtems_fdisk_page_checksum (buffer, fd->block_size);
45f9a: 226a 0014 moveal %a2@(20),%a1
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size)
{
uint16_t cs = 0xffff;
uint32_t i;
for (i = 0; i < page_size; i++, buffer++)
45f9e: 4a89 tstl %a1
45fa0: 6700 028e beqw 46230 <rtems_fdisk_ioctl+0xfc4>
45fa4: 2c39 0008 4fa0 movel 84fa0 <rtems_fdisk_crc16_factor>,%d6
* @param req IOCTL request code.
* @param argp IOCTL argument.
* @retval The IOCTL return value
*/
static int
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)
45faa: 43f1 3800 lea %a1@(00000000,%d3:l),%a1
45fae: 2043 moveal %d3,%a0
* Calculate the checksum of a page in a segment.
*/
static uint16_t
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size)
{
uint16_t cs = 0xffff;
45fb0: 70ff moveq #-1,%d0
45fb2: 2d4a ffe4 movel %a2,%fp@(-28)
uint32_t i;
for (i = 0; i < page_size; i++, buffer++)
cs = rtems_fdisk_calc_crc16 (cs, *buffer);
45fb6: 4287 clrl %d7
45fb8: 1e18 moveb %a0@+,%d7
45fba: 2446 moveal %d6,%a2
45fbc: 0280 0000 00ff andil #255,%d0
45fc2: bf80 eorl %d7,%d0
45fc4: 3032 0a00 movew %a2@(00000000,%d0:l:2),%d0
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size)
{
uint16_t cs = 0xffff;
uint32_t i;
for (i = 0; i < page_size; i++, buffer++)
45fc8: b3c8 cmpal %a0,%a1
45fca: 66ea bnes 45fb6 <rtems_fdisk_ioctl+0xd4a>
45fcc: 4286 clrl %d6
45fce: 3c00 movew %d0,%d6
45fd0: 246e ffe4 moveal %fp@(-28),%a2
* Set the flags. Setting means clear the bit to 0.
*/
static void
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{
pd->flags &= ~flags;
45fd4: 7efe moveq #-2,%d7
for (page = 0; page < sc->pages; page++, pd++)
{
if (rtems_fdisk_page_desc_erased (pd))
{
pd->crc = rtems_fdisk_page_checksum (buffer, fd->block_size);
45fd6: 3680 movew %d0,%a3@
* Set the flags. Setting means clear the bit to 0.
*/
static void
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{
pd->flags &= ~flags;
45fd8: 302b 0002 movew %a3@(2),%d0
for (page = 0; page < sc->pages; page++, pd++)
{
if (rtems_fdisk_page_desc_erased (pd))
{
pd->crc = rtems_fdisk_page_checksum (buffer, fd->block_size);
pd->block = block;
45fdc: 2745 0004 movel %d5,%a3@(4)
* Set the flags. Setting means clear the bit to 0.
*/
static void
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{
pd->flags &= ~flags;
45fe0: c087 andl %d7,%d0
if (rtems_fdisk_page_desc_erased (pd))
{
pd->crc = rtems_fdisk_page_checksum (buffer, fd->block_size);
pd->block = block;
bc->segment = sc;
45fe2: 2a8c movel %a4,%a5@
bc->page = page;
rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \
45fe4: 2e00 movel %d0,%d7
{
pd->crc = rtems_fdisk_page_checksum (buffer, fd->block_size);
pd->block = block;
bc->segment = sc;
bc->page = page;
45fe6: 2b42 0004 movel %d2,%a5@(4)
rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \
45fea: 0287 0000 fffe andil #65534,%d7
* Set the flags. Setting means clear the bit to 0.
*/
static void
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{
pd->flags &= ~flags;
45ff0: 3740 0002 movew %d0,%a3@(2)
bc->page = page;
rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \
45ff4: 4a94 tstl %a4@
45ff6: 6700 022e beqw 46226 <rtems_fdisk_ioctl+0xfba>
45ffa: 203c 0007 1e92 movel #466578,%d0 <== NOT EXECUTED
46000: 2f05 movel %d5,%sp@-
46002: 2f06 movel %d6,%sp@-
46004: 2f07 movel %d7,%sp@-
46006: 2f00 movel %d0,%sp@-
46008: 2f2c 0024 movel %a4@(36),%sp@-
4600c: 2f2c 0020 movel %a4@(32),%sp@-
46010: 2f2c 001c movel %a4@(28),%sp@-
46014: 2f01 movel %d1,%sp@-
46016: 2f02 movel %d2,%sp@-
46018: 2f2c 000c movel %a4@(12),%sp@-
4601c: 2f2c 0008 movel %a4@(8),%sp@-
46020: 2f05 movel %d5,%sp@-
46022: 4879 0007 0304 pea 70304 <map.6766+0x74e>
46028: 2f0a movel %a2,%sp@-
4602a: 4eba e096 jsr %pc@(440c2 <rtems_fdisk_info>)
/*
* We use the segment page offset not the page number used in the
* driver. This skips the page descriptors.
*/
ret = rtems_fdisk_seg_write_page (fd, sc, page + sc->pages_desc, buffer);
4602e: 4fef 0034 lea %sp@(52),%sp
46032: 2042 moveal %d2,%a0
46034: 2e83 movel %d3,%sp@
46036: d1ec 0018 addal %a4@(24),%a0
4603a: 2f08 movel %a0,%sp@-
4603c: 2f0c movel %a4,%sp@-
4603e: 2f0a movel %a2,%sp@-
46040: 4eba e846 jsr %pc@(44888 <rtems_fdisk_seg_write_page>)
if (ret)
46044: 4fef 0010 lea %sp@(16),%sp
/*
* We use the segment page offset not the page number used in the
* driver. This skips the page descriptors.
*/
ret = rtems_fdisk_seg_write_page (fd, sc, page + sc->pages_desc, buffer);
46048: 2a00 movel %d0,%d5
if (ret)
4604a: 6700 0160 beqw 461ac <rtems_fdisk_ioctl+0xf40>
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: write page failed: " \
4604e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46050: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
46056: 2f05 movel %d5,%sp@- <== NOT EXECUTED
46058: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4605a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4605c: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED
46060: 2f2c 0008 movel %a4@(8),%sp@- <== NOT EXECUTED
46064: 4879 0007 0353 pea 70353 <map.6766+0x79d> <== NOT EXECUTED
4606a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4606c: 4eba e054 jsr %pc@(440c2 <rtems_fdisk_info>) <== NOT EXECUTED
46070: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
{
sc->pages_active++;
}
}
rtems_fdisk_queue_segment (fd, sc);
46074: 2f0c movel %a4,%sp@-
46076: 2f0a movel %a2,%sp@-
46078: 4eba e468 jsr %pc@(444e2 <rtems_fdisk_queue_segment>)
static bool
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)
{
bool starvation = fd->erased_blocks < fd->starvation_threshold;
if (starvation)
4607c: 226a 0024 moveal %a2@(36),%a1
46080: 508f addql #8,%sp
46082: b3ea 0028 cmpal %a2@(40),%a1
46086: 630c blss 46094 <rtems_fdisk_ioctl+0xe28> <== ALWAYS TAKEN
fd->starvations++;
46088: 52aa 0070 addql #1,%a2@(112) <== NOT EXECUTED
}
rtems_fdisk_queue_segment (fd, sc);
if (rtems_fdisk_is_erased_blocks_starvation (fd))
rtems_fdisk_compact (fd);
4608c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4608e: 4eba ec6a jsr %pc@(44cfa <rtems_fdisk_compact>) <== NOT EXECUTED
46092: 588f addql #4,%sp <== NOT EXECUTED
fb = sg->length / fd->block_size;
data = sg->buffer;
for (b = 0; b < fb; b++, data += fd->block_size)
{
ret = rtems_fdisk_write_block (fd, sg->block + b, data);
if (ret)
46094: 4a85 tstl %d5
46096: 6600 0130 bnew 461c8 <rtems_fdisk_ioctl+0xf5c>
uint8_t* data;
uint32_t fb;
uint32_t b;
fb = sg->length / fd->block_size;
data = sg->buffer;
for (b = 0; b < fb; b++, data += fd->block_size)
4609a: 5284 addql #1,%d4
4609c: d6aa 0014 addl %a2@(20),%d3
460a0: b8ae ffe0 cmpl %fp@(-32),%d4
460a4: 6600 fcaa bnew 45d50 <rtems_fdisk_ioctl+0xae4>
460a8: 206e fff4 moveal %fp@(-12),%a0
460ac: 2028 0010 movel %a0@(16),%d0
460b0: 7210 moveq #16,%d1
460b2: d3ae fff0 addl %d1,%fp@(-16)
460b6: 52ae ffe8 addql #1,%fp@(-24)
460ba: 6000 fc6c braw 45d28 <rtems_fdisk_ioctl+0xabc>
#if RTEMS_FDISK_TRACE
if (fd->info_level >= 3)
{
char queues[5];
rtems_fdisk_queue_status (fd, sc, queues);
460be: 486e fffb pea %fp@(-5) <== NOT EXECUTED
460c2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
460c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
460c6: 4eba df3a jsr %pc@(44002 <rtems_fdisk_queue_status>) <== NOT EXECUTED
rtems_fdisk_info (fd, " write:%d=>%02d-%03d: queue check: %s",
460ca: 486e fffb pea %fp@(-5) <== NOT EXECUTED
460ce: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED
460d2: 2f2c 0008 movel %a4@(8),%sp@- <== NOT EXECUTED
460d6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
460d8: 4879 0007 02de pea 702de <map.6766+0x728> <== NOT EXECUTED
460de: 2f0a movel %a2,%sp@- <== NOT EXECUTED
460e0: 4eba dfe0 jsr %pc@(440c2 <rtems_fdisk_info>) <== NOT EXECUTED
460e4: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
460e8: 6000 fe32 braw 45f1c <rtems_fdisk_ioctl+0xcb0> <== NOT EXECUTED
queue->head = sc->next;
if (!queue->head)
queue->tail = 0;
queue->count--;
460ec: 53aa 003c subql #1,%a2@(60) <== NOT EXECUTED
return ENOSPC;
}
}
#if RTEMS_FDISK_TRACE
if (fd->info_level >= 3)
460f0: 7202 moveq #2,%d1 <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
if (!queue->head)
queue->tail = 0;
460f2: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
queue->count--;
sc->next = 0;
460f6: 4294 clrl %a4@ <== NOT EXECUTED
return ENOSPC;
}
}
#if RTEMS_FDISK_TRACE
if (fd->info_level >= 3)
460f8: b2aa 006c cmpl %a2@(108),%d1 <== NOT EXECUTED
460fc: 6400 fe1e bccw 45f1c <rtems_fdisk_ioctl+0xcb0> <== NOT EXECUTED
46100: 60bc bras 460be <rtems_fdisk_ioctl+0xe52> <== NOT EXECUTED
*
* We override the background compaction configruation.
*/
if (rtems_fdisk_segment_count_queue (&fd->available) <=
fd->avail_compact_segs)
rtems_fdisk_compact (fd);
46102: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46104: 4eba ebf4 jsr %pc@(44cfa <rtems_fdisk_compact>) <== NOT EXECUTED
46108: 286a 0034 moveal %a2@(52),%a4 <== NOT EXECUTED
* Pop the head of the segment control queue.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{
if (queue->head)
4610c: 588f addql #4,%sp <== NOT EXECUTED
4610e: 4a8c tstl %a4 <== NOT EXECUTED
46110: 6600 fdf0 bnew 45f02 <rtems_fdisk_ioctl+0xc96> <== NOT EXECUTED
{
/*
* If compacting is configured for the background do it now
* to see if we can get some space back.
*/
if ((fd->flags & RTEMS_FDISK_BACKGROUND_COMPACT))
46114: 7002 moveq #2,%d0 <== NOT EXECUTED
46116: c0aa 0008 andl %a2@(8),%d0 <== NOT EXECUTED
4611a: 6600 00b4 bnew 461d0 <rtems_fdisk_ioctl+0xf64> <== NOT EXECUTED
*/
sc = rtems_fdisk_segment_queue_pop_head (&fd->available);
if (!sc)
{
rtems_fdisk_error ("write-block: no available pages");
4611e: 4879 0007 05c7 pea 705c7 <map.6766+0xa11> <== NOT EXECUTED
46124: 2a6e fff4 moveal %fp@(-12),%a5 <== NOT EXECUTED
46128: 4eba e1bc jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
4612c: 588f addql #4,%sp <== NOT EXECUTED
4612e: 6000 fe2e braw 45f5e <rtems_fdisk_ioctl+0xcf2> <== NOT EXECUTED
sc->device, sc->segment, page,
flash_flags, page_desc->flags);
return ret;
}
}
return rtems_fdisk_seg_write (fd, sc, offset,
46132: 4878 0002 pea 2 <DOUBLE_FLOAT>
46136: 486c 0002 pea %a4@(2)
4613a: 2f06 movel %d6,%sp@-
4613c: 2f0b movel %a3,%sp@-
4613e: 2f0a movel %a2,%sp@-
46140: 4eba e094 jsr %pc@(441d6 <rtems_fdisk_seg_write>)
46144: 4fef 0014 lea %sp@(20),%sp
46148: 2400 movel %d0,%d2
rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_USED);
ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
if (ret)
4614a: 4a82 tstl %d2
4614c: 6700 fd74 beqw 45ec2 <rtems_fdisk_ioctl+0xc56>
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " write:%02d-%03d-%03d: " \
46150: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46152: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
46158: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4615a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4615c: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED
46160: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
46164: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
46168: 4879 0007 02a2 pea 702a2 <map.6766+0x6ec> <== NOT EXECUTED
4616e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46170: 4eba df50 jsr %pc@(440c2 <rtems_fdisk_info>) <== NOT EXECUTED
46174: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
46178: 6000 fd50 braw 45eca <rtems_fdisk_ioctl+0xc5e> <== NOT EXECUTED
*/
if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,
bc->page + sc->pages_desc, buffer) == 0)
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "write-block:%d=>%02d-%03d-%03d: page verified",
4617c: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED
uint8_t* data;
uint32_t fb;
uint32_t b;
fb = sg->length / fd->block_size;
data = sg->buffer;
for (b = 0; b < fb; b++, data += fd->block_size)
46180: 5284 addql #1,%d4 <== NOT EXECUTED
*/
if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,
bc->page + sc->pages_desc, buffer) == 0)
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "write-block:%d=>%02d-%03d-%03d: page verified",
46182: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
46186: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
4618a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4618c: 4879 0007 022a pea 7022a <map.6766+0x674> <== NOT EXECUTED
46192: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46194: 4eba df2c jsr %pc@(440c2 <rtems_fdisk_info>) <== NOT EXECUTED
46198: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
uint8_t* data;
uint32_t fb;
uint32_t b;
fb = sg->length / fd->block_size;
data = sg->buffer;
for (b = 0; b < fb; b++, data += fd->block_size)
4619c: d6aa 0014 addl %a2@(20),%d3 <== NOT EXECUTED
461a0: b8ae ffe0 cmpl %fp@(-32),%d4 <== NOT EXECUTED
461a4: 6600 fbaa bnew 45d50 <rtems_fdisk_ioctl+0xae4> <== NOT EXECUTED
461a8: 6000 fefe braw 460a8 <rtems_fdisk_ioctl+0xe3c> <== NOT EXECUTED
strerror (ret), ret);
#endif
}
else
{
ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);
461ac: 2f0b movel %a3,%sp@-
461ae: 2f02 movel %d2,%sp@-
461b0: 2f0c movel %a4,%sp@-
461b2: 2f0a movel %a2,%sp@-
461b4: 4eba e740 jsr %pc@(448f6 <rtems_fdisk_seg_write_page_desc>)
if (ret)
461b8: 4fef 0010 lea %sp@(16),%sp
strerror (ret), ret);
#endif
}
else
{
ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);
461bc: 2a00 movel %d0,%d5
if (ret)
461be: 6630 bnes 461f0 <rtems_fdisk_ioctl+0xf84> <== NEVER TAKEN
strerror (ret), ret);
#endif
}
else
{
sc->pages_active++;
461c0: 52ac 001c addql #1,%a4@(28)
461c4: 6000 feae braw 46074 <rtems_fdisk_ioctl+0xe08>
461c8: 2a6e fff4 moveal %fp@(-12),%a5 <== NOT EXECUTED
461cc: 6000 fd90 braw 45f5e <rtems_fdisk_ioctl+0xcf2> <== NOT EXECUTED
/*
* If compacting is configured for the background do it now
* to see if we can get some space back.
*/
if ((fd->flags & RTEMS_FDISK_BACKGROUND_COMPACT))
rtems_fdisk_compact (fd);
461d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
461d2: 4eba eb26 jsr %pc@(44cfa <rtems_fdisk_compact>) <== NOT EXECUTED
* Pop the head of the segment control queue.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{
if (queue->head)
461d6: 286a 0034 moveal %a2@(52),%a4 <== NOT EXECUTED
461da: 588f addql #4,%sp <== NOT EXECUTED
461dc: 4a8c tstl %a4 <== NOT EXECUTED
461de: 6700 ff3e beqw 4611e <rtems_fdisk_ioctl+0xeb2> <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = queue->head;
queue->head = sc->next;
461e2: 2014 movel %a4@,%d0 <== NOT EXECUTED
461e4: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
if (!queue->head)
461e8: 6600 fd22 bnew 45f0c <rtems_fdisk_ioctl+0xca0> <== NOT EXECUTED
461ec: 6000 fefe braw 460ec <rtems_fdisk_ioctl+0xe80> <== NOT EXECUTED
{
ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);
if (ret)
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: " \
461f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
461f2: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
461f8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
461fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
461fc: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED
46200: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED
46204: 2f2c 0008 movel %a4@(8),%sp@- <== NOT EXECUTED
46208: 4879 0007 038a pea 7038a <map.6766+0x7d4> <== NOT EXECUTED
4620e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46210: 4eba deb0 jsr %pc@(440c2 <rtems_fdisk_info>) <== NOT EXECUTED
46214: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
46218: 6000 fe5a braw 46074 <rtems_fdisk_ioctl+0xe08> <== NOT EXECUTED
4621c: 2a6e fff4 moveal %fp@(-12),%a5
if (ret)
break;
}
}
rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
46220: 4280 clrl %d0
46222: 6000 fd3c braw 45f60 <rtems_fdisk_ioctl+0xcf4>
bc->page = page;
rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \
46226: 203c 0006 fc46 movel #457798,%d0
4622c: 6000 fdd2 braw 46000 <rtems_fdisk_ioctl+0xd94>
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size)
{
uint16_t cs = 0xffff;
uint32_t i;
for (i = 0; i < page_size; i++, buffer++)
46230: 2c3c 0000 ffff movel #65535,%d6 <== NOT EXECUTED
* Calculate the checksum of a page in a segment.
*/
static uint16_t
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size)
{
uint16_t cs = 0xffff;
46236: 70ff moveq #-1,%d0 <== NOT EXECUTED
46238: 6000 fd9a braw 45fd4 <rtems_fdisk_ioctl+0xd68> <== NOT EXECUTED
0004414c <rtems_fdisk_printf>:
*/
static int
rtems_fdisk_printf (const rtems_flashdisk* fd, const char *format, ...)
{
int ret = 0;
if (fd->info_level >= 3)
4414c: 7002 moveq #2,%d0
* @param ... The arguments for the format text.
* @return int The number of bytes written to the output.
*/
static int
rtems_fdisk_printf (const rtems_flashdisk* fd, const char *format, ...)
{
4414e: 4e56 0000 linkw %fp,#0
44152: 206e 0008 moveal %fp@(8),%a0
44156: 2f02 movel %d2,%sp@-
int ret = 0;
if (fd->info_level >= 3)
44158: b0a8 006c cmpl %a0@(108),%d0
4415c: 650c bcss 4416a <rtems_fdisk_printf+0x1e> <== NEVER TAKEN
* @return int The number of bytes written to the output.
*/
static int
rtems_fdisk_printf (const rtems_flashdisk* fd, const char *format, ...)
{
int ret = 0;
4415e: 4282 clrl %d2
fprintf (stdout, "\n");
fflush (stdout);
va_end (args);
}
return ret;
}
44160: 2002 movel %d2,%d0
44162: 242e fffc movel %fp@(-4),%d2
44166: 4e5e unlk %fp
44168: 4e75 rts
int ret = 0;
if (fd->info_level >= 3)
{
va_list args;
va_start (args, format);
fprintf (stdout, "fdisk:");
4416a: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
44170: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44174: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
44178: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4417c: 4879 0006 fbc7 pea 6fbc7 <map.6766+0x11> <== NOT EXECUTED
44182: 4eb9 0006 123e jsr 6123e <fwrite> <== NOT EXECUTED
ret = vfprintf (stdout, format, args);
44188: 486e 0010 pea %fp@(16) <== NOT EXECUTED
4418c: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
44192: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
44196: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4419a: 4eb9 0006 86e0 jsr 686e0 <vfprintf> <== NOT EXECUTED
fprintf (stdout, "\n");
441a0: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
if (fd->info_level >= 3)
{
va_list args;
va_start (args, format);
fprintf (stdout, "fdisk:");
ret = vfprintf (stdout, format, args);
441a6: 2400 movel %d0,%d2 <== NOT EXECUTED
fprintf (stdout, "\n");
441a8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
441ac: 4878 000a pea a <LASTO> <== NOT EXECUTED
441b0: 4eb9 0006 0bc0 jsr 60bc0 <fputc> <== NOT EXECUTED
fflush (stdout);
441b6: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
441bc: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
441c0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
441c4: 4eb9 0006 0792 jsr 60792 <fflush> <== NOT EXECUTED
va_end (args);
441ca: 588f addql #4,%sp <== NOT EXECUTED
}
return ret;
}
441cc: 2002 movel %d2,%d0 <== NOT EXECUTED
441ce: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
441d2: 4e5e unlk %fp <== NOT EXECUTED
000444e2 <rtems_fdisk_queue_segment>:
* @param fd The flash disk control table.
* @param sc The segment control table to be reallocated
*/
static void
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{
444e2: 4e56 ffec linkw %fp,#-20
444e6: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
444ea: 266e 0008 moveal %fp@(8),%a3
444ee: 246e 000c moveal %fp@(12),%a2
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " queue-seg:%02d-%03d: p=%d a=%d u=%d b=%d f=%s n=%s",
444f2: 4a92 tstl %a2@
444f4: 6700 0140 beqw 44636 <rtems_fdisk_queue_segment+0x154>
444f8: 223c 0007 1e92 movel #466578,%d1
444fe: 4aaa 0028 tstl %a2@(40)
44502: 6766 beqs 4456a <rtems_fdisk_queue_segment+0x88> <== ALWAYS TAKEN
44504: 2f01 movel %d1,%sp@- <== NOT EXECUTED
44506: 203c 0006 fc4b movel #457803,%d0 <== NOT EXECUTED
4450c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4450e: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED
44512: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED
44516: 2f2a 001c movel %a2@(28),%sp@- <== NOT EXECUTED
4451a: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED
4451e: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
44522: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
44526: 4879 0006 fc52 pea 6fc52 <map.6766+0x9c> <== NOT EXECUTED
4452c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4452e: 4eba fb92 jsr %pc@(440c2 <rtems_fdisk_info>) <== NOT EXECUTED
/*
* If the segment has failed then check the failed queue and append
* if not failed.
*/
if (sc->failed)
44532: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
44536: 4aaa 0028 tstl %a2@(40) <== NOT EXECUTED
4453a: 6766 beqs 445a2 <rtems_fdisk_queue_segment+0xc0> <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
4453c: 206b 0058 moveal %a3@(88),%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
44540: 4a88 tstl %a0 <== NOT EXECUTED
44542: 6700 017a beqw 446be <rtems_fdisk_queue_segment+0x1dc><== NOT EXECUTED
{
if (it == sc)
44546: b1ca cmpal %a2,%a0 <== NOT EXECUTED
44548: 6716 beqs 44560 <rtems_fdisk_queue_segment+0x7e> <== NOT EXECUTED
return true;
it = it->next;
4454a: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
4454c: 4a88 tstl %a0 <== NOT EXECUTED
4454e: 66f6 bnes 44546 <rtems_fdisk_queue_segment+0x64> <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = 0;
44550: 4292 clrl %a2@ <== NOT EXECUTED
if (queue->head)
{
queue->tail->next = sc;
44552: 206b 005c moveal %a3@(92),%a0 <== NOT EXECUTED
44556: 208a movel %a2,%a0@ <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
44558: 52ab 0060 addql #1,%a3@(96) <== NOT EXECUTED
sc->next = 0;
if (queue->head)
{
queue->tail->next = sc;
queue->tail = sc;
4455c: 274a 005c movel %a2,%a3@(92) <== NOT EXECUTED
if (seg)
rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
else
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
}
}
44560: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
44566: 4e5e unlk %fp <== NOT EXECUTED
44568: 4e75 rts <== NOT EXECUTED
*/
static void
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " queue-seg:%02d-%03d: p=%d a=%d u=%d b=%d f=%s n=%s",
4456a: 2f01 movel %d1,%sp@-
4456c: 203c 0007 1dff movel #466431,%d0
44572: 2f00 movel %d0,%sp@-
44574: 2f2a 0024 movel %a2@(36),%sp@-
44578: 2f2a 0020 movel %a2@(32),%sp@-
4457c: 2f2a 001c movel %a2@(28),%sp@-
44580: 2f2a 0014 movel %a2@(20),%sp@-
44584: 2f2a 000c movel %a2@(12),%sp@-
44588: 2f2a 0008 movel %a2@(8),%sp@-
4458c: 4879 0006 fc52 pea 6fc52 <map.6766+0x9c>
44592: 2f0b movel %a3,%sp@-
44594: 4eba fb2c jsr %pc@(440c2 <rtems_fdisk_info>)
/*
* If the segment has failed then check the failed queue and append
* if not failed.
*/
if (sc->failed)
44598: 4fef 0028 lea %sp@(40),%sp
4459c: 4aaa 0028 tstl %a2@(40)
445a0: 669a bnes 4453c <rtems_fdisk_queue_segment+0x5a> <== NEVER TAKEN
}
/*
* Remove the queue from the available or used queue.
*/
rtems_fdisk_segment_queue_remove (&fd->available, sc);
445a2: 2f0a movel %a2,%sp@-
445a4: 240b movel %a3,%d2
445a6: 0682 0000 0034 addil #52,%d2
445ac: 49fa f9f6 lea %pc@(43fa4 <rtems_fdisk_segment_queue_remove>),%a4
rtems_fdisk_segment_queue_remove (&fd->used, sc);
445b0: 260b movel %a3,%d3
445b2: 0683 0000 0040 addil #64,%d3
}
/*
* Remove the queue from the available or used queue.
*/
rtems_fdisk_segment_queue_remove (&fd->available, sc);
445b8: 2f02 movel %d2,%sp@-
445ba: 4e94 jsr %a4@
rtems_fdisk_segment_queue_remove (&fd->used, sc);
445bc: 2f0a movel %a2,%sp@-
445be: 2f03 movel %d3,%sp@-
445c0: 4e94 jsr %a4@
* active, used and bad pages.
*/
static uint32_t
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)
{
return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
445c2: 226a 0020 moveal %a2@(32),%a1
445c6: 2009 movel %a1,%d0
* If they are and the driver has been configured to background
* erase place the segment on the used queue. If not configured
* to background erase perform the erase now.
*
*/
if (rtems_fdisk_seg_pages_available (sc) == 0)
445c8: 4fef 0010 lea %sp@(16),%sp
* active, used and bad pages.
*/
static uint32_t
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)
{
return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
445cc: 206a 001c moveal %a2@(28),%a0
445d0: d088 addl %a0,%d0
445d2: d0aa 0024 addl %a2@(36),%d0
445d6: 222a 0014 movel %a2@(20),%d1
* If they are and the driver has been configured to background
* erase place the segment on the used queue. If not configured
* to background erase perform the erase now.
*
*/
if (rtems_fdisk_seg_pages_available (sc) == 0)
445da: b081 cmpl %d1,%d0
445dc: 677c beqs 4465a <rtems_fdisk_queue_segment+0x178><== NEVER TAKEN
* bit is cleared for that segment. When 32 erasers
* has occurred the page is re-written to the flash
* with all the counters updated with the number of
* bits cleared and all bits set back to 1.
*/
rtems_fdisk_segment_ctl* seg = fd->available.head;
445de: 206b 0034 moveal %a3@(52),%a0
while (seg)
445e2: 4a88 tstl %a0
445e4: 6700 0104 beqw 446ea <rtems_fdisk_queue_segment+0x208>
*
* @param fd The flash disk control table.
* @param sc The segment control table to be reallocated
*/
static void
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
445e8: 2268 0020 moveal %a0@(32),%a1
* active, used and bad pages.
*/
static uint32_t
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)
{
return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
445ec: 9280 subl %d0,%d1
*
* @param fd The flash disk control table.
* @param sc The segment control table to be reallocated
*/
static void
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
445ee: d3e8 0024 addal %a0@(36),%a1
* active, used and bad pages.
*/
static uint32_t
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)
{
return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
445f2: 2028 0014 movel %a0@(20),%d0
445f6: 9089 subl %a1,%d0
445f8: 90a8 001c subl %a0@(28),%d0
*/
rtems_fdisk_segment_ctl* seg = fd->available.head;
while (seg)
{
if (rtems_fdisk_seg_pages_available (sc) <
445fc: b081 cmpl %d1,%d0
445fe: 621e bhis 4461e <rtems_fdisk_queue_segment+0x13c>
rtems_fdisk_seg_pages_available (seg))
break;
seg = seg->next;
44600: 2050 moveal %a0@,%a0
* with all the counters updated with the number of
* bits cleared and all bits set back to 1.
*/
rtems_fdisk_segment_ctl* seg = fd->available.head;
while (seg)
44602: 4a88 tstl %a0
44604: 673a beqs 44640 <rtems_fdisk_queue_segment+0x15e>
*
* @param fd The flash disk control table.
* @param sc The segment control table to be reallocated
*/
static void
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
44606: 2028 0024 movel %a0@(36),%d0
4460a: d0a8 0020 addl %a0@(32),%d0
* active, used and bad pages.
*/
static uint32_t
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)
{
return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
4460e: 2628 0014 movel %a0@(20),%d3
44612: 9680 subl %d0,%d3
44614: 2003 movel %d3,%d0
44616: 90a8 001c subl %a0@(28),%d0
*/
rtems_fdisk_segment_ctl* seg = fd->available.head;
while (seg)
{
if (rtems_fdisk_seg_pages_available (sc) <
4461a: b081 cmpl %d1,%d0
4461c: 63e2 blss 44600 <rtems_fdisk_queue_segment+0x11e><== ALWAYS TAKEN
break;
seg = seg->next;
}
if (seg)
rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
4461e: 2f0a movel %a2,%sp@-
44620: 2f08 movel %a0,%sp@-
44622: 2f02 movel %d2,%sp@-
44624: 4eba fe56 jsr %pc@(4447c <rtems_fdisk_segment_queue_insert_before>)
44628: 4fef 000c lea %sp@(12),%sp
else
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
}
}
4462c: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
44632: 4e5e unlk %fp
44634: 4e75 rts
*/
static void
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, " queue-seg:%02d-%03d: p=%d a=%d u=%d b=%d f=%s n=%s",
44636: 223c 0006 fc46 movel #457798,%d1
4463c: 6000 fec0 braw 444fe <rtems_fdisk_queue_segment+0x1c>
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = 0;
44640: 4292 clrl %a2@
if (queue->head)
{
queue->tail->next = sc;
44642: 206b 0038 moveal %a3@(56),%a0
44646: 208a movel %a2,%a0@
else
{
queue->head = queue->tail = sc;
}
queue->count++;
44648: 52ab 003c addql #1,%a3@(60)
sc->next = 0;
if (queue->head)
{
queue->tail->next = sc;
queue->tail = sc;
4464c: 274a 0038 movel %a2,%a3@(56)
if (seg)
rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
else
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
}
}
44650: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
44656: 4e5e unlk %fp
44658: 4e75 rts
* to background erase perform the erase now.
*
*/
if (rtems_fdisk_seg_pages_available (sc) == 0)
{
if (sc->pages_active)
4465a: 4a88 tstl %a0 <== NOT EXECUTED
4465c: 662c bnes 4468a <rtems_fdisk_queue_segment+0x1a8><== NOT EXECUTED
else
rtems_fdisk_segment_queue_push_tail (&fd->used, sc);
}
else
{
if ((fd->flags & RTEMS_FDISK_BACKGROUND_ERASE))
4465e: 7001 moveq #1,%d0 <== NOT EXECUTED
44660: c0ab 0008 andl %a3@(8),%d0 <== NOT EXECUTED
44664: 6700 0096 beqw 446fc <rtems_fdisk_queue_segment+0x21a><== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = 0;
44668: 4292 clrl %a2@ <== NOT EXECUTED
if (queue->head)
4466a: 4aab 004c tstl %a3@(76) <== NOT EXECUTED
4466e: 6700 00a0 beqw 44710 <rtems_fdisk_queue_segment+0x22e><== NOT EXECUTED
{
queue->tail->next = sc;
44672: 206b 0050 moveal %a3@(80),%a0 <== NOT EXECUTED
44676: 208a movel %a2,%a0@ <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
44678: 52ab 0054 addql #1,%a3@(84) <== NOT EXECUTED
sc->next = 0;
if (queue->head)
{
queue->tail->next = sc;
queue->tail = sc;
4467c: 274a 0050 movel %a2,%a3@(80) <== NOT EXECUTED
if (seg)
rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
else
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
}
}
44680: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
44686: 4e5e unlk %fp <== NOT EXECUTED
44688: 4e75 rts <== NOT EXECUTED
/*
* Keep the used queue sorted by the most number of used
* pages. When we compact we want to move the pages into
* a new segment and cover more than one segment.
*/
rtems_fdisk_segment_ctl* seg = fd->used.head;
4468a: 206b 0040 moveal %a3@(64),%a0 <== NOT EXECUTED
while (seg)
4468e: 4a88 tstl %a0 <== NOT EXECUTED
44690: 6700 008e beqw 44720 <rtems_fdisk_queue_segment+0x23e><== NOT EXECUTED
{
if (sc->pages_used > seg->pages_used)
44694: b3e8 0020 cmpal %a0@(32),%a1 <== NOT EXECUTED
44698: 620c bhis 446a6 <rtems_fdisk_queue_segment+0x1c4><== NOT EXECUTED
break;
seg = seg->next;
4469a: 2050 moveal %a0@,%a0 <== NOT EXECUTED
* pages. When we compact we want to move the pages into
* a new segment and cover more than one segment.
*/
rtems_fdisk_segment_ctl* seg = fd->used.head;
while (seg)
4469c: 4a88 tstl %a0 <== NOT EXECUTED
4469e: 6730 beqs 446d0 <rtems_fdisk_queue_segment+0x1ee><== NOT EXECUTED
{
if (sc->pages_used > seg->pages_used)
446a0: b3e8 0020 cmpal %a0@(32),%a1 <== NOT EXECUTED
446a4: 63f4 blss 4469a <rtems_fdisk_queue_segment+0x1b8><== NOT EXECUTED
break;
seg = seg->next;
}
if (seg)
rtems_fdisk_segment_queue_insert_before (&fd->used, seg, sc);
446a6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
446a8: 2f08 movel %a0,%sp@- <== NOT EXECUTED
446aa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
446ac: 4eba fdce jsr %pc@(4447c <rtems_fdisk_segment_queue_insert_before>)<== NOT EXECUTED
446b0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (seg)
rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
else
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
}
}
446b4: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
446ba: 4e5e unlk %fp <== NOT EXECUTED
446bc: 4e75 rts <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = 0;
446be: 4292 clrl %a2@ <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
446c0: 52ab 0060 addql #1,%a3@(96) <== NOT EXECUTED
queue->tail->next = sc;
queue->tail = sc;
}
else
{
queue->head = queue->tail = sc;
446c4: 274a 005c movel %a2,%a3@(92) <== NOT EXECUTED
446c8: 274a 0058 movel %a2,%a3@(88) <== NOT EXECUTED
446cc: 6000 fe92 braw 44560 <rtems_fdisk_queue_segment+0x7e> <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = 0;
446d0: 4292 clrl %a2@ <== NOT EXECUTED
if (queue->head)
{
queue->tail->next = sc;
446d2: 206b 0044 moveal %a3@(68),%a0 <== NOT EXECUTED
446d6: 208a movel %a2,%a0@ <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
446d8: 52ab 0048 addql #1,%a3@(72) <== NOT EXECUTED
sc->next = 0;
if (queue->head)
{
queue->tail->next = sc;
queue->tail = sc;
446dc: 274a 0044 movel %a2,%a3@(68) <== NOT EXECUTED
if (seg)
rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
else
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
}
}
446e0: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
446e6: 4e5e unlk %fp <== NOT EXECUTED
446e8: 4e75 rts <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = 0;
446ea: 4292 clrl %a2@
else
{
queue->head = queue->tail = sc;
}
queue->count++;
446ec: 52ab 003c addql #1,%a3@(60)
queue->tail->next = sc;
queue->tail = sc;
}
else
{
queue->head = queue->tail = sc;
446f0: 274a 0038 movel %a2,%a3@(56)
446f4: 274a 0034 movel %a2,%a3@(52)
446f8: 6000 ff56 braw 44650 <rtems_fdisk_queue_segment+0x16e>
else
{
if ((fd->flags & RTEMS_FDISK_BACKGROUND_ERASE))
rtems_fdisk_segment_queue_push_tail (&fd->erase, sc);
else
rtems_fdisk_erase_segment (fd, sc);
446fc: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
44700: 2d4b 0008 movel %a3,%fp@(8) <== NOT EXECUTED
if (seg)
rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
else
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
}
}
44704: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4470a: 4e5e unlk %fp <== NOT EXECUTED
else
{
if ((fd->flags & RTEMS_FDISK_BACKGROUND_ERASE))
rtems_fdisk_segment_queue_push_tail (&fd->erase, sc);
else
rtems_fdisk_erase_segment (fd, sc);
4470c: 6000 fc48 braw 44356 <rtems_fdisk_erase_segment> <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
44710: 52ab 0054 addql #1,%a3@(84) <== NOT EXECUTED
queue->tail->next = sc;
queue->tail = sc;
}
else
{
queue->head = queue->tail = sc;
44714: 274a 0050 movel %a2,%a3@(80) <== NOT EXECUTED
44718: 274a 004c movel %a2,%a3@(76) <== NOT EXECUTED
4471c: 6000 ff62 braw 44680 <rtems_fdisk_queue_segment+0x19e><== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = 0;
44720: 4292 clrl %a2@ <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
44722: 52ab 0048 addql #1,%a3@(72) <== NOT EXECUTED
queue->tail->next = sc;
queue->tail = sc;
}
else
{
queue->head = queue->tail = sc;
44726: 274a 0044 movel %a2,%a3@(68) <== NOT EXECUTED
4472a: 274a 0040 movel %a2,%a3@(64) <== NOT EXECUTED
4472e: 60b0 bras 446e0 <rtems_fdisk_queue_segment+0x1fe><== NOT EXECUTED
00044002 <rtems_fdisk_queue_status>:
*/
static void
rtems_fdisk_queue_status (rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
char queues[5])
{
44002: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44006: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
4400a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4400c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
44010: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
44014: 206a 0034 moveal %a2@(52),%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
44018: 4a88 tstl %a0 <== NOT EXECUTED
4401a: 6766 beqs 44082 <rtems_fdisk_queue_status+0x80> <== NOT EXECUTED
{
if (it == sc)
4401c: b088 cmpl %a0,%d0 <== NOT EXECUTED
4401e: 670a beqs 4402a <rtems_fdisk_queue_status+0x28> <== NOT EXECUTED
return true;
it = it->next;
44020: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
44022: 4a88 tstl %a0 <== NOT EXECUTED
44024: 675c beqs 44082 <rtems_fdisk_queue_status+0x80> <== NOT EXECUTED
{
if (it == sc)
44026: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
44028: 66f6 bnes 44020 <rtems_fdisk_queue_status+0x1e> <== NOT EXECUTED
static void
rtems_fdisk_queue_status (rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
char queues[5])
{
queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
4402a: 7241 moveq #65,%d1 <== NOT EXECUTED
4402c: 1281 moveb %d1,%a1@ <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
4402e: 206a 0040 moveal %a2@(64),%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
44032: 4a88 tstl %a0 <== NOT EXECUTED
44034: 670a beqs 44040 <rtems_fdisk_queue_status+0x3e> <== NOT EXECUTED
{
if (it == sc)
44036: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
44038: 6778 beqs 440b2 <rtems_fdisk_queue_status+0xb0> <== NOT EXECUTED
return true;
it = it->next;
4403a: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
4403c: 4a88 tstl %a0 <== NOT EXECUTED
4403e: 66f6 bnes 44036 <rtems_fdisk_queue_status+0x34> <== NOT EXECUTED
rtems_fdisk_queue_status (rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
char queues[5])
{
queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc) ? 'U' : '-';
44040: 722d moveq #45,%d1 <== NOT EXECUTED
44042: 1341 0001 moveb %d1,%a1@(1) <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
44046: 206a 004c moveal %a2@(76),%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
4404a: 4a88 tstl %a0 <== NOT EXECUTED
4404c: 670a beqs 44058 <rtems_fdisk_queue_status+0x56> <== NOT EXECUTED
{
if (it == sc)
4404e: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
44050: 6750 beqs 440a2 <rtems_fdisk_queue_status+0xa0> <== NOT EXECUTED
return true;
it = it->next;
44052: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
44054: 4a88 tstl %a0 <== NOT EXECUTED
44056: 66f6 bnes 4404e <rtems_fdisk_queue_status+0x4c> <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc,
char queues[5])
{
queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc) ? 'U' : '-';
queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc) ? 'E' : '-';
44058: 722d moveq #45,%d1 <== NOT EXECUTED
4405a: 1341 0002 moveb %d1,%a1@(2) <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
4405e: 206a 0058 moveal %a2@(88),%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
44062: 4a88 tstl %a0 <== NOT EXECUTED
44064: 670a beqs 44070 <rtems_fdisk_queue_status+0x6e> <== NOT EXECUTED
{
if (it == sc)
44066: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
44068: 6726 beqs 44090 <rtems_fdisk_queue_status+0x8e> <== NOT EXECUTED
return true;
it = it->next;
4406a: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
4406c: 4a88 tstl %a0 <== NOT EXECUTED
4406e: 66f6 bnes 44066 <rtems_fdisk_queue_status+0x64> <== NOT EXECUTED
char queues[5])
{
queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc) ? 'U' : '-';
queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc) ? 'E' : '-';
queues[3] = rtems_fdisk_segment_queue_present (&fd->failed, sc) ? 'F' : '-';
44070: 702d moveq #45,%d0 <== NOT EXECUTED
44072: 1340 0003 moveb %d0,%a1@(3) <== NOT EXECUTED
queues[4] = '\0';
44076: 4200 clrb %d0 <== NOT EXECUTED
44078: 1340 0004 moveb %d0,%a1@(4) <== NOT EXECUTED
}
4407c: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4407e: 4e5e unlk %fp <== NOT EXECUTED
44080: 4e75 rts <== NOT EXECUTED
static void
rtems_fdisk_queue_status (rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
char queues[5])
{
queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
44082: 722d moveq #45,%d1 <== NOT EXECUTED
44084: 1281 moveb %d1,%a1@ <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
44086: 206a 0040 moveal %a2@(64),%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
4408a: 4a88 tstl %a0 <== NOT EXECUTED
4408c: 66a8 bnes 44036 <rtems_fdisk_queue_status+0x34> <== NOT EXECUTED
4408e: 60b0 bras 44040 <rtems_fdisk_queue_status+0x3e> <== NOT EXECUTED
char queues[5])
{
queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc) ? 'U' : '-';
queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc) ? 'E' : '-';
queues[3] = rtems_fdisk_segment_queue_present (&fd->failed, sc) ? 'F' : '-';
44090: 7046 moveq #70,%d0 <== NOT EXECUTED
44092: 1340 0003 moveb %d0,%a1@(3) <== NOT EXECUTED
queues[4] = '\0';
44096: 4200 clrb %d0 <== NOT EXECUTED
44098: 1340 0004 moveb %d0,%a1@(4) <== NOT EXECUTED
}
4409c: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4409e: 4e5e unlk %fp <== NOT EXECUTED
440a0: 4e75 rts <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc,
char queues[5])
{
queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc) ? 'U' : '-';
queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc) ? 'E' : '-';
440a2: 7245 moveq #69,%d1 <== NOT EXECUTED
440a4: 1341 0002 moveb %d1,%a1@(2) <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
440a8: 206a 0058 moveal %a2@(88),%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
440ac: 4a88 tstl %a0 <== NOT EXECUTED
440ae: 66b6 bnes 44066 <rtems_fdisk_queue_status+0x64> <== NOT EXECUTED
440b0: 60be bras 44070 <rtems_fdisk_queue_status+0x6e> <== NOT EXECUTED
rtems_fdisk_queue_status (rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
char queues[5])
{
queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc) ? 'U' : '-';
440b2: 7255 moveq #85,%d1 <== NOT EXECUTED
440b4: 1341 0001 moveb %d1,%a1@(1) <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
440b8: 206a 004c moveal %a2@(76),%a0 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
440bc: 4a88 tstl %a0 <== NOT EXECUTED
440be: 668e bnes 4404e <rtems_fdisk_queue_status+0x4c> <== NOT EXECUTED
440c0: 6096 bras 44058 <rtems_fdisk_queue_status+0x56> <== NOT EXECUTED
00044f6c <rtems_fdisk_recover_block_mappings>:
/**
* Recover the block mappings from the devices.
*/
static int
rtems_fdisk_recover_block_mappings (rtems_flashdisk* fd)
{
44f6c: 4e56 ffd8 linkw %fp,#-40
44f70: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
44f74: 2a6e 0008 moveal %fp@(8),%a5
rtems_fdisk_segment_queue_init (&fd->failed);
/*
* Clear the lock mappings.
*/
memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
44f78: 202d 001c movel %a5@(28),%d0
* Initialise the segment control queue.
*/
static void
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue)
{
queue->head = queue->tail = 0;
44f7c: 42ad 0038 clrl %a5@(56)
rtems_fdisk_segment_queue_init (&fd->failed);
/*
* Clear the lock mappings.
*/
memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
44f80: e788 lsll #3,%d0
44f82: 2f00 movel %d0,%sp@-
44f84: 42a7 clrl %sp@-
44f86: 2f2d 0018 movel %a5@(24),%sp@-
* Initialise the segment control queue.
*/
static void
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue)
{
queue->head = queue->tail = 0;
44f8a: 42ad 0034 clrl %a5@(52)
queue->count = 0;
44f8e: 42ad 003c clrl %a5@(60)
* Initialise the segment control queue.
*/
static void
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue)
{
queue->head = queue->tail = 0;
44f92: 42ad 0044 clrl %a5@(68)
44f96: 42ad 0040 clrl %a5@(64)
queue->count = 0;
44f9a: 42ad 0048 clrl %a5@(72)
* Initialise the segment control queue.
*/
static void
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue)
{
queue->head = queue->tail = 0;
44f9e: 42ad 0050 clrl %a5@(80)
44fa2: 42ad 004c clrl %a5@(76)
queue->count = 0;
44fa6: 42ad 0054 clrl %a5@(84)
* Initialise the segment control queue.
*/
static void
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue)
{
queue->head = queue->tail = 0;
44faa: 42ad 005c clrl %a5@(92)
44fae: 42ad 0058 clrl %a5@(88)
queue->count = 0;
44fb2: 42ad 0060 clrl %a5@(96)
rtems_fdisk_segment_queue_init (&fd->failed);
/*
* Clear the lock mappings.
*/
memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
44fb6: 4eb9 0006 159c jsr 6159c <memset>
/*
* Scan each segment or each device recovering the valid pages.
*/
fd->erased_blocks = 0;
fd->starvation_threshold = 0;
for (device = 0; device < fd->device_count; device++)
44fbc: 4fef 000c lea %sp@(12),%sp
memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
/*
* Scan each segment or each device recovering the valid pages.
*/
fd->erased_blocks = 0;
44fc0: 42ad 0028 clrl %a5@(40)
fd->starvation_threshold = 0;
44fc4: 42ad 0024 clrl %a5@(36)
for (device = 0; device < fd->device_count; device++)
44fc8: 4aad 0030 tstl %a5@(48)
44fcc: 6700 0144 beqw 45112 <rtems_fdisk_recover_block_mappings+0x1a6>
44fd0: 4286 clrl %d6
44fd2: 4284 clrl %d4
{
uint32_t segment;
for (segment = 0; segment < fd->devices[device].segment_count; segment++)
44fd4: 226d 002c moveal %a5@(44),%a1
44fd8: d3c6 addal %d6,%a1
44fda: 4aa9 0004 tstl %a1@(4)
44fde: 6700 0122 beqw 45102 <rtems_fdisk_recover_block_mappings+0x196>
44fe2: 4285 clrl %d5
44fe4: 4283 clrl %d3
{
rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[segment];
44fe6: 2651 moveal %a1@,%a3
44fe8: d7c5 addal %d5,%a3
const rtems_fdisk_segment_desc* sd = sc->descriptor;
44fea: 246b 0004 moveal %a3@(4),%a2
rtems_fdisk_page_desc* pd;
uint32_t page;
int ret;
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
44fee: 2f03 movel %d3,%sp@-
44ff0: 2f04 movel %d4,%sp@-
44ff2: 4879 0006 ff45 pea 6ff45 <map.6766+0x38f>
44ff8: 2f0d movel %a5,%sp@-
44ffa: 4eba f0c6 jsr %pc@(440c2 <rtems_fdisk_info>)
#endif
sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
44ffe: 202d 0014 movel %a5@(20),%d0
sc->pages =
rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
if (sc->pages > fd->starvation_threshold)
45002: 4fef 0010 lea %sp@(16),%sp
*/
static uint32_t
rtems_fdisk_pages_in_segment (const rtems_fdisk_segment_desc* sd,
uint32_t page_size)
{
return sd->size / page_size;
45006: 242a 0008 movel %a2@(8),%d2
4500a: 4c40 2002 remul %d0,%d2,%d2
static uint32_t
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,
uint32_t page_size)
{
uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);
uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);
4500e: 2202 movel %d2,%d1
rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
#endif
sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
sc->pages =
rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
45010: 2042 moveal %d2,%a0
static uint32_t
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,
uint32_t page_size)
{
uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);
uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);
45012: e789 lsll #3,%d1
return ((bytes - 1) / page_size) + 1;
45014: 5381 subql #1,%d1
45016: 4c40 1001 remul %d0,%d1,%d1
4501a: 5281 addql #1,%d1
rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
#endif
sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
sc->pages =
rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
4501c: 91c1 subal %d1,%a0
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
#endif
sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
4501e: 2741 0018 movel %d1,%a3@(24)
sc->pages =
45022: 2748 0014 movel %a0,%a3@(20)
rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
if (sc->pages > fd->starvation_threshold)
45026: b1ed 0024 cmpal %a5@(36),%a0
4502a: 6304 blss 45030 <rtems_fdisk_recover_block_mappings+0xc4>
fd->starvation_threshold = sc->pages;
4502c: 2b48 0024 movel %a0,%a5@(36)
sc->pages_bad = 0;
sc->failed = false;
if (!sc->page_descriptors)
sc->page_descriptors = malloc (sc->pages_desc * fd->block_size);
45030: 2401 movel %d1,%d2
45032: 4c00 2800 mulsl %d0,%d2
sc->pages_used = 0;
sc->pages_bad = 0;
sc->failed = false;
if (!sc->page_descriptors)
45036: 246b 0010 moveal %a3@(16),%a2
sc->pages =
rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
if (sc->pages > fd->starvation_threshold)
fd->starvation_threshold = sc->pages;
sc->pages_active = 0;
4503a: 42ab 001c clrl %a3@(28)
sc->pages_used = 0;
4503e: 42ab 0020 clrl %a3@(32)
sc->pages_bad = 0;
45042: 42ab 0024 clrl %a3@(36)
sc->failed = false;
45046: 42ab 0028 clrl %a3@(40)
if (!sc->page_descriptors)
4504a: 4a8a tstl %a2
4504c: 6700 0114 beqw 45162 <rtems_fdisk_recover_block_mappings+0x1f6>
* descriptors.
*
* @todo It may be better to ask the driver to get these value
* so NAND flash could be better supported.
*/
ret = rtems_fdisk_seg_read (fd, sc, 0, (void*) pd,
45050: 2f02 movel %d2,%sp@-
45052: 2f0a movel %a2,%sp@-
45054: 42a7 clrl %sp@-
45056: 2f2b 000c movel %a3@(12),%sp@-
4505a: 2f2b 0008 movel %a3@(8),%sp@-
4505e: 2f0d movel %a5,%sp@-
45060: 4eba f724 jsr %pc@(44786 <rtems_fdisk_seg_read.isra.14>)
sc->pages_desc * fd->block_size);
if (ret)
45064: 4fef 0018 lea %sp@(24),%sp
45068: 4a80 tstl %d0
4506a: 6600 01d4 bnew 45240 <rtems_fdisk_recover_block_mappings+0x2d4>
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
4506e: 4aab 0014 tstl %a3@(20)
45072: 676e beqs 450e2 <rtems_fdisk_recover_block_mappings+0x176><== NEVER TAKEN
/**
* Recover the block mappings from the devices.
*/
static int
rtems_fdisk_recover_block_mappings (rtems_flashdisk* fd)
45074: 49ea 0004 lea %a2@(4),%a4
45078: 4282 clrl %d2
static bool
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)
{
return ((pd->crc == 0xffff) &&
(pd->flags == 0xffff) &&
(pd->block == 0xffffffff)) ? true : false;
4507a: 70ff moveq #-1,%d0
4507c: b092 cmpl %a2@,%d0
4507e: 6700 00a0 beqw 45120 <rtems_fdisk_recover_block_mappings+0x1b4>
sc->pages_used++;
}
}
else
{
if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_USED))
45082: 7202 moveq #2,%d1 <== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
45084: 302a 0002 movew %a2@(2),%d0 <== NOT EXECUTED
sc->pages_used++;
}
}
else
{
if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_USED))
45088: c280 andl %d0,%d1 <== NOT EXECUTED
4508a: 4a41 tstw %d1 <== NOT EXECUTED
4508c: 6700 013c beqw 451ca <rtems_fdisk_recover_block_mappings+0x25e><== NOT EXECUTED
{
sc->pages_used++;
}
else if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
45090: 0800 0000 btst #0,%d0 <== NOT EXECUTED
45094: 6600 014a bnew 451e0 <rtems_fdisk_recover_block_mappings+0x274><== NOT EXECUTED
{
if (pd->block >= fd->block_count)
45098: 2014 movel %a4@,%d0 <== NOT EXECUTED
4509a: b0ad 001c cmpl %a5@(28),%d0 <== NOT EXECUTED
4509e: 6400 0156 bccw 451f6 <rtems_fdisk_recover_block_mappings+0x28a><== NOT EXECUTED
"invalid block number: %d-%d-%d: block: %d",
device, segment, page, pd->block);
#endif
sc->pages_bad++;
}
else if (fd->blocks[pd->block].segment)
450a2: 226d 0018 moveal %a5@(24),%a1 <== NOT EXECUTED
450a6: e788 lsll #3,%d0 <== NOT EXECUTED
450a8: d3c0 addal %d0,%a1 <== NOT EXECUTED
450aa: 2051 moveal %a1@,%a0 <== NOT EXECUTED
450ac: 4a88 tstl %a0 <== NOT EXECUTED
450ae: 6700 0174 beqw 45224 <rtems_fdisk_recover_block_mappings+0x2b8><== NOT EXECUTED
* each block so we can tell which is the later block when
* duplicates appear. A power down with a failed wirte could cause
* a duplicate.
*/
const rtems_fdisk_segment_ctl* bsc = fd->blocks[pd->block].segment;
rtems_fdisk_error ("duplicate block: %d-%d-%d: " \
450b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
450b4: 5282 addql #1,%d2 <== NOT EXECUTED
450b6: 508a addql #8,%a2 <== NOT EXECUTED
450b8: 508c addql #8,%a4 <== NOT EXECUTED
* each block so we can tell which is the later block when
* duplicates appear. A power down with a failed wirte could cause
* a duplicate.
*/
const rtems_fdisk_segment_ctl* bsc = fd->blocks[pd->block].segment;
rtems_fdisk_error ("duplicate block: %d-%d-%d: " \
450ba: 2f03 movel %d3,%sp@- <== NOT EXECUTED
450bc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
450be: 2f29 0004 movel %a1@(4),%sp@- <== NOT EXECUTED
450c2: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
450c6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
450ca: 4879 0007 0010 pea 70010 <map.6766+0x45a> <== NOT EXECUTED
450d0: 4eba f214 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
"duplicate: %d-%d-%d",
bsc->device, bsc->segment,
fd->blocks[pd->block].page,
device, segment, page);
sc->pages_bad++;
450d4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
450d8: 52ab 0024 addql #1,%a3@(36) <== NOT EXECUTED
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
450dc: b4ab 0014 cmpl %a3@(20),%d2 <== NOT EXECUTED
450e0: 6598 bcss 4507a <rtems_fdisk_recover_block_mappings+0x10e><== NOT EXECUTED
}
/*
* Place the segment on to the correct queue.
*/
rtems_fdisk_queue_segment (fd, sc);
450e2: 2f0b movel %a3,%sp@-
fd->erased_blocks = 0;
fd->starvation_threshold = 0;
for (device = 0; device < fd->device_count; device++)
{
uint32_t segment;
for (segment = 0; segment < fd->devices[device].segment_count; segment++)
450e4: 5283 addql #1,%d3
450e6: 0685 0000 0030 addil #48,%d5
}
/*
* Place the segment on to the correct queue.
*/
rtems_fdisk_queue_segment (fd, sc);
450ec: 2f0d movel %a5,%sp@-
450ee: 4eba f3f2 jsr %pc@(444e2 <rtems_fdisk_queue_segment>)
fd->erased_blocks = 0;
fd->starvation_threshold = 0;
for (device = 0; device < fd->device_count; device++)
{
uint32_t segment;
for (segment = 0; segment < fd->devices[device].segment_count; segment++)
450f2: 226d 002c moveal %a5@(44),%a1
450f6: 508f addql #8,%sp
450f8: d3c6 addal %d6,%a1
450fa: b6a9 0004 cmpl %a1@(4),%d3
450fe: 6500 fee6 bcsw 44fe6 <rtems_fdisk_recover_block_mappings+0x7a>
/*
* Scan each segment or each device recovering the valid pages.
*/
fd->erased_blocks = 0;
fd->starvation_threshold = 0;
for (device = 0; device < fd->device_count; device++)
45102: 5284 addql #1,%d4
45104: 0686 0000 000c addil #12,%d6
4510a: b8ad 0030 cmpl %a5@(48),%d4
4510e: 6500 fec4 bcsw 44fd4 <rtems_fdisk_recover_block_mappings+0x68>
*/
rtems_fdisk_queue_segment (fd, sc);
}
}
return 0;
45112: 4282 clrl %d2
}
45114: 2002 movel %d2,%d0
45116: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5
4511c: 4e5e unlk %fp
4511e: 4e75 rts
static bool
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)
{
return ((pd->crc == 0xffff) &&
(pd->flags == 0xffff) &&
(pd->block == 0xffffffff)) ? true : false;
45120: b094 cmpl %a4@,%d0
45122: 6600 ff5e bnew 45082 <rtems_fdisk_recover_block_mappings+0x116>
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page)
{
return rtems_fdisk_seg_blank_check (fd, sc,
page * fd->block_size, fd->block_size);
45126: 202d 0014 movel %a5@(20),%d0
if (rtems_fdisk_page_desc_erased (pd))
{
/*
* Is the page erased ?
*/
ret = rtems_fdisk_seg_blank_check_page (fd, sc,
4512a: 2202 movel %d2,%d1
static int
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page)
{
return rtems_fdisk_seg_blank_check (fd, sc,
4512c: 2f00 movel %d0,%sp@-
if (rtems_fdisk_page_desc_erased (pd))
{
/*
* Is the page erased ?
*/
ret = rtems_fdisk_seg_blank_check_page (fd, sc,
4512e: d2ab 0018 addl %a3@(24),%d1
static int
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page)
{
return rtems_fdisk_seg_blank_check (fd, sc,
45132: 4c00 1800 mulsl %d0,%d1
45136: 2f01 movel %d1,%sp@-
45138: 2f2b 000c movel %a3@(12),%sp@-
4513c: 2f2b 0008 movel %a3@(8),%sp@-
45140: 2f0d movel %a5,%sp@-
45142: 4eba f6c6 jsr %pc@(4480a <rtems_fdisk_seg_blank_check.isra.15>)
* Is the page erased ?
*/
ret = rtems_fdisk_seg_blank_check_page (fd, sc,
page + sc->pages_desc);
if (ret == 0)
45146: 4fef 0014 lea %sp@(20),%sp
4514a: 4a80 tstl %d0
4514c: 6634 bnes 45182 <rtems_fdisk_recover_block_mappings+0x216><== NEVER TAKEN
{
++fd->erased_blocks;
4514e: 52ad 0028 addql #1,%a5@(40)
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
45152: 5282 addql #1,%d2
45154: 508a addql #8,%a2
45156: 508c addql #8,%a4
45158: b4ab 0014 cmpl %a3@(20),%d2
4515c: 6500 ff1c bcsw 4507a <rtems_fdisk_recover_block_mappings+0x10e>
45160: 6080 bras 450e2 <rtems_fdisk_recover_block_mappings+0x176>
sc->pages_bad = 0;
sc->failed = false;
if (!sc->page_descriptors)
sc->page_descriptors = malloc (sc->pages_desc * fd->block_size);
45162: 2f02 movel %d2,%sp@-
45164: 4eb9 0004 794c jsr 4794c <malloc>
if (!sc->page_descriptors)
4516a: 588f addql #4,%sp
sc->pages_bad = 0;
sc->failed = false;
if (!sc->page_descriptors)
sc->page_descriptors = malloc (sc->pages_desc * fd->block_size);
4516c: 2440 moveal %d0,%a2
4516e: 2740 0010 movel %d0,%a3@(16)
if (!sc->page_descriptors)
45172: 6600 fedc bnew 45050 <rtems_fdisk_recover_block_mappings+0xe4>
rtems_fdisk_abort ("no memory for page descriptors");
45176: 4879 0006 ff26 pea 6ff26 <map.6766+0x370> <== NOT EXECUTED
4517c: 4eb9 0004 672e jsr 4672e <rtems_fdisk_abort.constprop.16> <== NOT EXECUTED
++fd->erased_blocks;
}
else
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_warning (fd, "page not blank: %d-%d-%d",
45182: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
45184: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45186: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45188: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4518a: 4879 0006 ffa7 pea 6ffa7 <map.6766+0x3f1> <== NOT EXECUTED
45190: 2f0d movel %a5,%sp@- <== NOT EXECUTED
45192: 4eba f0ca jsr %pc@(4425e <rtems_fdisk_warning>) <== NOT EXECUTED
* Set the flags. Setting means clear the bit to 0.
*/
static void
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{
pd->flags &= ~flags;
45196: 302a 0002 movew %a2@(2),%d0 <== NOT EXECUTED
4519a: 72fd moveq #-3,%d1 <== NOT EXECUTED
4519c: c081 andl %d1,%d0 <== NOT EXECUTED
4519e: 3540 0002 movew %d0,%a2@(2) <== NOT EXECUTED
rtems_fdisk_warning (fd, "page not blank: %d-%d-%d",
device, segment, page, pd->block);
#endif
rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_USED);
ret = rtems_fdisk_seg_write_page_desc (fd, sc,
451a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
451a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
451a6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
451a8: 2f0d movel %a5,%sp@- <== NOT EXECUTED
451aa: 4eba f74a jsr %pc@(448f6 <rtems_fdisk_seg_write_page_desc>)<== NOT EXECUTED
page, pd);
if (ret)
451ae: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
451b2: 4a80 tstl %d0 <== NOT EXECUTED
451b4: 6714 beqs 451ca <rtems_fdisk_recover_block_mappings+0x25e><== NOT EXECUTED
{
rtems_fdisk_error ("forcing page to used failed: %d-%d-%d",
451b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
451b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
451ba: 2f04 movel %d4,%sp@- <== NOT EXECUTED
451bc: 4879 0006 ffc0 pea 6ffc0 <map.6766+0x40a> <== NOT EXECUTED
451c2: 4eba f122 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
451c6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
else
{
if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_USED))
{
sc->pages_used++;
451ca: 52ab 0020 addql #1,%a3@(32) <== NOT EXECUTED
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
451ce: 5282 addql #1,%d2 <== NOT EXECUTED
451d0: 508a addql #8,%a2 <== NOT EXECUTED
451d2: 508c addql #8,%a4 <== NOT EXECUTED
451d4: b4ab 0014 cmpl %a3@(20),%d2 <== NOT EXECUTED
451d8: 6500 fea0 bcsw 4507a <rtems_fdisk_recover_block_mappings+0x10e><== NOT EXECUTED
451dc: 6000 ff04 braw 450e2 <rtems_fdisk_recover_block_mappings+0x176><== NOT EXECUTED
*/
sc->pages_active++;
}
}
else
sc->pages_bad++;
451e0: 52ab 0024 addql #1,%a3@(36) <== NOT EXECUTED
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
451e4: 5282 addql #1,%d2 <== NOT EXECUTED
451e6: 508a addql #8,%a2 <== NOT EXECUTED
451e8: 508c addql #8,%a4 <== NOT EXECUTED
451ea: b4ab 0014 cmpl %a3@(20),%d2 <== NOT EXECUTED
451ee: 6500 fe8a bcsw 4507a <rtems_fdisk_recover_block_mappings+0x10e><== NOT EXECUTED
451f2: 6000 feee braw 450e2 <rtems_fdisk_recover_block_mappings+0x176><== NOT EXECUTED
else if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
{
if (pd->block >= fd->block_count)
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_warning (fd,
451f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
451f8: 508a addql #8,%a2 <== NOT EXECUTED
451fa: 508c addql #8,%a4 <== NOT EXECUTED
else if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
{
if (pd->block >= fd->block_count)
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_warning (fd,
451fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
451fe: 5282 addql #1,%d2 <== NOT EXECUTED
else if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
{
if (pd->block >= fd->block_count)
{
#if RTEMS_FDISK_TRACE
rtems_fdisk_warning (fd,
45200: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45202: 2f04 movel %d4,%sp@- <== NOT EXECUTED
45204: 4879 0006 ffe6 pea 6ffe6 <map.6766+0x430> <== NOT EXECUTED
4520a: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4520c: 4eba f050 jsr %pc@(4425e <rtems_fdisk_warning>) <== NOT EXECUTED
"invalid block number: %d-%d-%d: block: %d",
device, segment, page, pd->block);
#endif
sc->pages_bad++;
45210: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
45214: 52ab 0024 addql #1,%a3@(36) <== NOT EXECUTED
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
45218: b4ab 0014 cmpl %a3@(20),%d2 <== NOT EXECUTED
4521c: 6500 fe5c bcsw 4507a <rtems_fdisk_recover_block_mappings+0x10e><== NOT EXECUTED
45220: 6000 fec0 braw 450e2 <rtems_fdisk_recover_block_mappings+0x176><== NOT EXECUTED
/**
* @todo
* Add start up crc checks here.
*/
fd->blocks[pd->block].segment = sc;
fd->blocks[pd->block].page = page;
45224: 2342 0004 movel %d2,%a1@(4) <== NOT EXECUTED
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
45228: 5282 addql #1,%d2 <== NOT EXECUTED
4522a: 508a addql #8,%a2 <== NOT EXECUTED
4522c: 508c addql #8,%a4 <== NOT EXECUTED
{
/**
* @todo
* Add start up crc checks here.
*/
fd->blocks[pd->block].segment = sc;
4522e: 228b movel %a3,%a1@ <== NOT EXECUTED
fd->blocks[pd->block].page = page;
/*
* The page is active.
*/
sc->pages_active++;
45230: 52ab 001c addql #1,%a3@(28) <== NOT EXECUTED
* are active and how many are used.
*
* If the page is active see if the block is with-in range and
* if the block is a duplicate.
*/
for (page = 0; page < sc->pages; page++, pd++)
45234: b4ab 0014 cmpl %a3@(20),%d2 <== NOT EXECUTED
45238: 6500 fe40 bcsw 4507a <rtems_fdisk_recover_block_mappings+0x10e><== NOT EXECUTED
4523c: 6000 fea4 braw 450e2 <rtems_fdisk_recover_block_mappings+0x176><== NOT EXECUTED
ret = rtems_fdisk_seg_read (fd, sc, 0, (void*) pd,
sc->pages_desc * fd->block_size);
if (ret)
{
rtems_fdisk_error ("recover-block-mappings:%02d-%03d: " \
45240: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45242: 2400 movel %d0,%d2 <== NOT EXECUTED
45244: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
4524a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4524c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4524e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45250: 2f04 movel %d4,%sp@- <== NOT EXECUTED
45252: 4879 0006 ff66 pea 6ff66 <map.6766+0x3b0> <== NOT EXECUTED
45258: 4eba f08c jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
"read page desc failed: %s (%d)",
device, segment, strerror (ret), ret);
return ret;
4525c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
rtems_fdisk_queue_segment (fd, sc);
}
}
return 0;
}
45260: 2002 movel %d2,%d0 <== NOT EXECUTED
45262: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
45268: 4e5e unlk %fp <== NOT EXECUTED
00044952 <rtems_fdisk_recycle_segment>:
static int
rtems_fdisk_recycle_segment (rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* ssc,
rtems_fdisk_segment_ctl* dsc,
uint32_t *pages)
{
44952: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
44956: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
4495a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4495e: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
44962: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
44966: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
4496a: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED
int ret;
uint32_t spage;
uint32_t used = 0;
uint32_t active = 0;
for (spage = 0; spage < ssc->pages; spage++)
4496e: 4aab 0014 tstl %a3@(20) <== NOT EXECUTED
44972: 6700 0352 beqw 44cc6 <rtems_fdisk_recycle_segment+0x374><== NOT EXECUTED
44976: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
4497a: 4284 clrl %d4 <== NOT EXECUTED
4497c: 4283 clrl %d3 <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
}
}
static int
rtems_fdisk_recycle_segment (rtems_flashdisk* fd,
4497e: 2003 movel %d3,%d0 <== NOT EXECUTED
44980: e788 lsll #3,%d0 <== NOT EXECUTED
uint32_t used = 0;
uint32_t active = 0;
for (spage = 0; spage < ssc->pages; spage++)
{
rtems_fdisk_page_desc* spd = &ssc->page_descriptors[spage];
44982: 2a6b 0010 moveal %a3@(16),%a5 <== NOT EXECUTED
44986: dbc0 addal %d0,%a5 <== NOT EXECUTED
if (!dsc && ssc->pages_active > 0)
44988: 4a8a tstl %a2 <== NOT EXECUTED
4498a: 6700 017e beqw 44b0a <rtems_fdisk_recycle_segment+0x1b8><== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
4498e: 302d 0002 movew %a5@(2),%d0 <== NOT EXECUTED
{
rtems_fdisk_error ("recycle: no available dst segment");
return EIO;
}
if (rtems_fdisk_page_desc_flags_set (spd, RTEMS_FDISK_PAGE_ACTIVE) &&
44992: 0800 0000 btst #0,%d0 <== NOT EXECUTED
44996: 6600 0272 bnew 44c0a <rtems_fdisk_recycle_segment+0x2b8><== NOT EXECUTED
4499a: 7202 moveq #2,%d1 <== NOT EXECUTED
4499c: c081 andl %d1,%d0 <== NOT EXECUTED
4499e: 4a40 tstw %d0 <== NOT EXECUTED
449a0: 6700 0268 beqw 44c0a <rtems_fdisk_recycle_segment+0x2b8><== NOT EXECUTED
}
rtems_flashdisk_count = rtems_flashdisk_configuration_size;
return RTEMS_SUCCESSFUL;
}
449a4: 222a 0010 movel %a2@(16),%d1 <== NOT EXECUTED
449a8: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
rtems_fdisk_seg_next_available_page (rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_page_desc* pd = &sc->page_descriptors[0];
uint32_t page;
for (page = 0; page < sc->pages; page++, pd++)
449ac: 6712 beqs 449c0 <rtems_fdisk_recycle_segment+0x6e><== NOT EXECUTED
449ae: 2041 moveal %d1,%a0 <== NOT EXECUTED
449b0: 4282 clrl %d2 <== NOT EXECUTED
static bool
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)
{
return ((pd->crc == 0xffff) &&
(pd->flags == 0xffff) &&
(pd->block == 0xffffffff)) ? true : false;
449b2: 7aff moveq #-1,%d5 <== NOT EXECUTED
449b4: ba90 cmpl %a0@,%d5 <== NOT EXECUTED
449b6: 675e beqs 44a16 <rtems_fdisk_recycle_segment+0xc4><== NOT EXECUTED
rtems_fdisk_seg_next_available_page (rtems_fdisk_segment_ctl* sc)
{
rtems_fdisk_page_desc* pd = &sc->page_descriptors[0];
uint32_t page;
for (page = 0; page < sc->pages; page++, pd++)
449b8: 5282 addql #1,%d2 <== NOT EXECUTED
449ba: 5088 addql #8,%a0 <== NOT EXECUTED
449bc: b082 cmpl %d2,%d0 <== NOT EXECUTED
449be: 66f2 bnes 449b2 <rtems_fdisk_recycle_segment+0x60><== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
}
}
static int
rtems_fdisk_recycle_segment (rtems_flashdisk* fd,
449c0: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
449c4: d2aa 001c addl %a2@(28),%d1 <== NOT EXECUTED
{
rtems_fdisk_error ("recycle: %02d-%03d: " \
"no page desc available: %d",
dsc->device, dsc->segment,
rtems_fdisk_seg_pages_available (dsc));
dsc->failed = true;
449c8: 7a01 moveq #1,%d5 <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (&fd->available, sc);
}
}
static int
rtems_fdisk_recycle_segment (rtems_flashdisk* fd,
449ca: d2aa 0024 addl %a2@(36),%d1 <== NOT EXECUTED
active++;
if (dpage >= dsc->pages)
{
rtems_fdisk_error ("recycle: %02d-%03d: " \
449ce: 9081 subl %d1,%d0 <== NOT EXECUTED
449d0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
449d2: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
449d6: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
449da: 4879 0006 fcef pea 6fcef <map.6766+0x139> <== NOT EXECUTED
449e0: 4eba f904 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
"no page desc available: %d",
dsc->device, dsc->segment,
rtems_fdisk_seg_pages_available (dsc));
dsc->failed = true;
449e4: 2545 0028 movel %d5,%a2@(40) <== NOT EXECUTED
rtems_fdisk_queue_segment (fd, dsc);
449e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
449ea: 2f0c movel %a4,%sp@- <== NOT EXECUTED
449ec: 4eba faf4 jsr %pc@(444e2 <rtems_fdisk_queue_segment>) <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = queue->head;
449f0: 26ac 0040 movel %a4@(64),%a3@ <== NOT EXECUTED
queue->head = sc;
if (queue->tail == 0)
449f4: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = queue->head;
queue->head = sc;
449f8: 294b 0040 movel %a3,%a4@(64) <== NOT EXECUTED
if (queue->tail == 0)
449fc: 4aac 0044 tstl %a4@(68) <== NOT EXECUTED
44a00: 6700 02aa beqw 44cac <rtems_fdisk_recycle_segment+0x35a><== NOT EXECUTED
queue->tail = sc;
queue->count++;
44a04: 52ac 0048 addql #1,%a4@(72) <== NOT EXECUTED
dsc->device, dsc->segment,
rtems_fdisk_seg_pages_available (dsc));
dsc->failed = true;
rtems_fdisk_queue_segment (fd, dsc);
rtems_fdisk_segment_queue_push_head (&fd->used, ssc);
return EIO;
44a08: 7205 moveq #5,%d1 <== NOT EXECUTED
}
ret = rtems_fdisk_erase_segment (fd, ssc);
return ret;
}
44a0a: 2001 movel %d1,%d0 <== NOT EXECUTED
44a0c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44a12: 4e5e unlk %fp <== NOT EXECUTED
44a14: 4e75 rts <== NOT EXECUTED
static bool
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)
{
return ((pd->crc == 0xffff) &&
(pd->flags == 0xffff) &&
(pd->block == 0xffffffff)) ? true : false;
44a16: baa8 0004 cmpl %a0@(4),%d5 <== NOT EXECUTED
44a1a: 669c bnes 449b8 <rtems_fdisk_recycle_segment+0x66><== NOT EXECUTED
uint32_t dst_pages;
rtems_fdisk_page_desc* dpd;
uint32_t dpage;
dpage = rtems_fdisk_seg_next_available_page (dsc);
dpd = &dsc->page_descriptors[dpage];
44a1c: 2e02 movel %d2,%d7 <== NOT EXECUTED
active++;
44a1e: 52ae fff8 addql #1,%fp@(-8) <== NOT EXECUTED
uint32_t dst_pages;
rtems_fdisk_page_desc* dpd;
uint32_t dpage;
dpage = rtems_fdisk_seg_next_available_page (dsc);
dpd = &dsc->page_descriptors[dpage];
44a22: e78f lsll #3,%d7 <== NOT EXECUTED
44a24: de81 addl %d1,%d7 <== NOT EXECUTED
active++;
if (dpage >= dsc->pages)
44a26: b480 cmpl %d0,%d2 <== NOT EXECUTED
44a28: 6496 bccs 449c0 <rtems_fdisk_recycle_segment+0x6e><== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (&fd->used, ssc);
return EIO;
}
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "recycle: %02d-%03d-%03d=>%02d-%03d-%03d",
44a2a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44a2c: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
ssc->device, ssc->segment, spage,
dsc->device, dsc->segment, dpage);
#endif
ret = rtems_fdisk_seg_copy_page (fd, ssc,
44a30: 2c02 movel %d2,%d6 <== NOT EXECUTED
44a32: 2a03 movel %d3,%d5 <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (&fd->used, ssc);
return EIO;
}
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "recycle: %02d-%03d-%03d=>%02d-%03d-%03d",
44a34: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
44a38: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44a3a: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
44a3e: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
44a42: 4879 0006 fd1e pea 6fd1e <map.6766+0x168> <== NOT EXECUTED
44a48: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44a4a: 4eba f676 jsr %pc@(440c2 <rtems_fdisk_info>) <== NOT EXECUTED
rtems_fdisk_segment_ctl* dst_sc,
uint32_t dst_page)
{
int ret;
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " seg-copy-page: %02d-%03d~%03d=>%02d-%03d~%03d",
44a4e: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
#if RTEMS_FDISK_TRACE
rtems_fdisk_info (fd, "recycle: %02d-%03d-%03d=>%02d-%03d-%03d",
ssc->device, ssc->segment, spage,
dsc->device, dsc->segment, dpage);
#endif
ret = rtems_fdisk_seg_copy_page (fd, ssc,
44a52: daab 0018 addl %a3@(24),%d5 <== NOT EXECUTED
44a56: dcaa 0018 addl %a2@(24),%d6 <== NOT EXECUTED
rtems_fdisk_segment_ctl* dst_sc,
uint32_t dst_page)
{
int ret;
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " seg-copy-page: %02d-%03d~%03d=>%02d-%03d~%03d",
44a5a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
44a5c: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
44a60: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
44a64: 2f05 movel %d5,%sp@- <== NOT EXECUTED
44a66: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
44a6a: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
44a6e: 4879 0006 fd46 pea 6fd46 <map.6766+0x190> <== NOT EXECUTED
44a74: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44a76: 4eba f6d4 jsr %pc@(4414c <rtems_fdisk_printf>) <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc,
uint32_t page,
void* buffer)
{
return rtems_fdisk_seg_read (fd, sc,
page * fd->block_size, buffer, fd->block_size);
44a7a: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED
rtems_fdisk_seg_read_page (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page,
void* buffer)
{
return rtems_fdisk_seg_read (fd, sc,
44a7e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
44a82: 4c00 5800 mulsl %d0,%d5 <== NOT EXECUTED
44a86: 2e80 movel %d0,%sp@ <== NOT EXECUTED
44a88: 2f2c 0068 movel %a4@(104),%sp@- <== NOT EXECUTED
44a8c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
44a8e: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
44a92: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
44a96: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44a98: 4eba fcec jsr %pc@(44786 <rtems_fdisk_seg_read.isra.14>)<== NOT EXECUTED
src_sc->device, src_sc->segment, src_page,
dst_sc->device, dst_sc->segment, dst_page);
#endif
ret = rtems_fdisk_seg_read_page (fd, src_sc, src_page,
fd->copy_buffer);
if (ret)
44a9c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
44aa0: 4a80 tstl %d0 <== NOT EXECUTED
44aa2: 6700 0090 beqw 44b34 <rtems_fdisk_recycle_segment+0x1e2><== NOT EXECUTED
spage + ssc->pages_desc,
dsc,
dpage + dsc->pages_desc);
if (ret)
{
rtems_fdisk_error ("recycle: %02d-%03d-%03d=>" \
44aa6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44aa8: 2d40 fff4 movel %d0,%fp@(-12) <== NOT EXECUTED
44aac: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
44ab2: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
44ab6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
44ab8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44aba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44abc: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
44ac0: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
44ac4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44ac6: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
44aca: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
44ace: 4879 0006 fd76 pea 6fd76 <map.6766+0x1c0> <== NOT EXECUTED
dsc,
dpage, dpd);
if (ret)
{
rtems_fdisk_error ("recycle: %02d-%03d-%03d=>" \
44ad4: 4eba f810 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
"%02d-%03d-%03d: copy pd failed: %s (%d)",
ssc->device, ssc->segment, spage,
dsc->device, dsc->segment, dpage,
strerror (ret), ret);
rtems_fdisk_queue_segment (fd, dsc);
44ad8: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
44adc: 2e8a movel %a2,%sp@ <== NOT EXECUTED
44ade: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44ae0: 4eba fa00 jsr %pc@(444e2 <rtems_fdisk_queue_segment>) <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = queue->head;
44ae4: 26ac 0040 movel %a4@(64),%a3@ <== NOT EXECUTED
queue->head = sc;
if (queue->tail == 0)
44ae8: 508f addql #8,%sp <== NOT EXECUTED
44aea: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = queue->head;
queue->head = sc;
44aee: 294b 0040 movel %a3,%a4@(64) <== NOT EXECUTED
if (queue->tail == 0)
44af2: 4aac 0044 tstl %a4@(68) <== NOT EXECUTED
44af6: 6700 01c2 beqw 44cba <rtems_fdisk_recycle_segment+0x368><== NOT EXECUTED
queue->tail = sc;
queue->count++;
44afa: 52ac 0048 addql #1,%a4@(72) <== NOT EXECUTED
}
ret = rtems_fdisk_erase_segment (fd, ssc);
return ret;
}
44afe: 2001 movel %d1,%d0 <== NOT EXECUTED
44b00: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44b06: 4e5e unlk %fp <== NOT EXECUTED
44b08: 4e75 rts <== NOT EXECUTED
for (spage = 0; spage < ssc->pages; spage++)
{
rtems_fdisk_page_desc* spd = &ssc->page_descriptors[spage];
if (!dsc && ssc->pages_active > 0)
44b0a: 4aab 001c tstl %a3@(28) <== NOT EXECUTED
44b0e: 6700 fe7e beqw 4498e <rtems_fdisk_recycle_segment+0x3c><== NOT EXECUTED
{
rtems_fdisk_error ("recycle: no available dst segment");
return EIO;
44b12: 7205 moveq #5,%d1 <== NOT EXECUTED
{
rtems_fdisk_page_desc* spd = &ssc->page_descriptors[spage];
if (!dsc && ssc->pages_active > 0)
{
rtems_fdisk_error ("recycle: no available dst segment");
44b14: 4879 0006 fccd pea 6fccd <map.6766+0x117> <== NOT EXECUTED
44b1a: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
44b1e: 4eba f7c6 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
return EIO;
44b22: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
44b26: 588f addql #4,%sp <== NOT EXECUTED
}
ret = rtems_fdisk_erase_segment (fd, ssc);
return ret;
}
44b28: 2001 movel %d1,%d0 <== NOT EXECUTED
44b2a: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44b30: 4e5e unlk %fp <== NOT EXECUTED
44b32: 4e75 rts <== NOT EXECUTED
#endif
ret = rtems_fdisk_seg_read_page (fd, src_sc, src_page,
fd->copy_buffer);
if (ret)
return ret;
return rtems_fdisk_seg_write_page (fd, dst_sc, dst_page,
44b34: 2f2c 0068 movel %a4@(104),%sp@- <== NOT EXECUTED
44b38: 2f06 movel %d6,%sp@- <== NOT EXECUTED
44b3a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44b3c: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44b3e: 4eba fd48 jsr %pc@(44888 <rtems_fdisk_seg_write_page>)<== NOT EXECUTED
#endif
ret = rtems_fdisk_seg_copy_page (fd, ssc,
spage + ssc->pages_desc,
dsc,
dpage + dsc->pages_desc);
if (ret)
44b42: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
44b46: 4a80 tstl %d0 <== NOT EXECUTED
44b48: 6600 ff5c bnew 44aa6 <rtems_fdisk_recycle_segment+0x154><== NOT EXECUTED
rtems_fdisk_queue_segment (fd, dsc);
rtems_fdisk_segment_queue_push_head (&fd->used, ssc);
return ret;
}
*dpd = *spd;
44b4c: 2047 moveal %d7,%a0 <== NOT EXECUTED
44b4e: 2015 movel %a5@,%d0 <== NOT EXECUTED
44b50: 222d 0004 movel %a5@(4),%d1 <== NOT EXECUTED
44b54: 2080 movel %d0,%a0@ <== NOT EXECUTED
44b56: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
ret = rtems_fdisk_seg_write_page_desc (fd,
44b5a: 2f07 movel %d7,%sp@- <== NOT EXECUTED
44b5c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44b5e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44b60: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44b62: 4eba fd92 jsr %pc@(448f6 <rtems_fdisk_seg_write_page_desc>)<== NOT EXECUTED
dsc,
dpage, dpd);
if (ret)
44b66: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
44b6a: 4a80 tstl %d0 <== NOT EXECUTED
44b6c: 6600 00e8 bnew 44c56 <rtems_fdisk_recycle_segment+0x304><== NOT EXECUTED
*/
ssc->pages_active--;
ssc->pages_used++;
fd->blocks[spd->block].segment = dsc;
44b70: 202d 0004 movel %a5@(4),%d0 <== NOT EXECUTED
rtems_fdisk_queue_segment (fd, dsc);
rtems_fdisk_segment_queue_push_head (&fd->used, ssc);
return ret;
}
dsc->pages_active++;
44b74: 52aa 001c addql #1,%a2@(28) <== NOT EXECUTED
* We do the stats to make sure everything is as it should
* be.
*/
ssc->pages_active--;
ssc->pages_used++;
44b78: 52ab 0020 addql #1,%a3@(32) <== NOT EXECUTED
* segment will be erased. Power down could be a problem.
* We do the stats to make sure everything is as it should
* be.
*/
ssc->pages_active--;
44b7c: 53ab 001c subql #1,%a3@(28) <== NOT EXECUTED
ssc->pages_used++;
fd->blocks[spd->block].segment = dsc;
44b80: 206c 0018 moveal %a4@(24),%a0 <== NOT EXECUTED
44b84: e788 lsll #3,%d0 <== NOT EXECUTED
44b86: d1c0 addal %d0,%a0 <== NOT EXECUTED
44b88: 208a movel %a2,%a0@ <== NOT EXECUTED
fd->blocks[spd->block].page = dpage;
44b8a: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
/*
* Place the segment on to the correct queue.
*/
rtems_fdisk_queue_segment (fd, dsc);
44b8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44b90: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44b92: 4eba f94e jsr %pc@(444e2 <rtems_fdisk_queue_segment>) <== NOT EXECUTED
* active, used and bad pages.
*/
static uint32_t
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)
{
return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
44b96: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED
44b9a: d0aa 001c addl %a2@(28),%d0 <== NOT EXECUTED
44b9e: d0aa 0024 addl %a2@(36),%d0 <== NOT EXECUTED
/*
* Get new destination segment if necessary.
*/
dst_pages = rtems_fdisk_seg_pages_available (dsc);
if (dst_pages == 0)
44ba2: 508f addql #8,%sp <== NOT EXECUTED
44ba4: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
44ba8: 674c beqs 44bf6 <rtems_fdisk_recycle_segment+0x2a4><== NOT EXECUTED
dsc = rtems_fdisk_seg_most_available (&fd->available);
(*pages)--;
44baa: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
44bae: 5390 subql #1,%a0@ <== NOT EXECUTED
int ret;
uint32_t spage;
uint32_t used = 0;
uint32_t active = 0;
for (spage = 0; spage < ssc->pages; spage++)
44bb0: 5283 addql #1,%d3 <== NOT EXECUTED
44bb2: b6ab 0014 cmpl %a3@(20),%d3 <== NOT EXECUTED
44bb6: 6500 fdc6 bcsw 4497e <rtems_fdisk_recycle_segment+0x2c><== NOT EXECUTED
used++;
}
}
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, "ssc end: %d-%d: p=%ld, a=%ld, u=%ld",
44bba: 2f04 movel %d4,%sp@- <== NOT EXECUTED
44bbc: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
44bc0: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
44bc4: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
44bc8: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
44bcc: 4879 0006 fdfa pea 6fdfa <map.6766+0x244> <== NOT EXECUTED
44bd2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44bd4: 4eba f576 jsr %pc@(4414c <rtems_fdisk_printf>) <== NOT EXECUTED
ssc->device, ssc->segment,
pages, active, used);
#endif
if (ssc->pages_active != 0)
44bd8: 202b 001c movel %a3@(28),%d0 <== NOT EXECUTED
44bdc: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
44be0: 6652 bnes 44c34 <rtems_fdisk_recycle_segment+0x2e2><== NOT EXECUTED
{
rtems_fdisk_error ("compacting: ssc pages not 0: %d",
ssc->pages_active);
}
ret = rtems_fdisk_erase_segment (fd, ssc);
44be2: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
44be6: 2d4c 0008 movel %a4,%fp@(8) <== NOT EXECUTED
return ret;
}
44bea: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44bf0: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_fdisk_error ("compacting: ssc pages not 0: %d",
ssc->pages_active);
}
ret = rtems_fdisk_erase_segment (fd, ssc);
44bf2: 6000 f762 braw 44356 <rtems_fdisk_erase_segment> <== NOT EXECUTED
/*
* Get new destination segment if necessary.
*/
dst_pages = rtems_fdisk_seg_pages_available (dsc);
if (dst_pages == 0)
dsc = rtems_fdisk_seg_most_available (&fd->available);
44bf6: 2f2c 0034 movel %a4@(52),%sp@- <== NOT EXECUTED
44bfa: 4eba fb34 jsr %pc@(44730 <rtems_fdisk_seg_most_available.isra.12>)<== NOT EXECUTED
(*pages)--;
44bfe: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
44c02: 5390 subql #1,%a0@ <== NOT EXECUTED
/*
* Get new destination segment if necessary.
*/
dst_pages = rtems_fdisk_seg_pages_available (dsc);
if (dst_pages == 0)
dsc = rtems_fdisk_seg_most_available (&fd->available);
44c04: 588f addql #4,%sp <== NOT EXECUTED
44c06: 2440 moveal %d0,%a2 <== NOT EXECUTED
44c08: 60a6 bras 44bb0 <rtems_fdisk_recycle_segment+0x25e><== NOT EXECUTED
static bool
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)
{
return ((pd->crc == 0xffff) &&
(pd->flags == 0xffff) &&
(pd->block == 0xffffffff)) ? true : false;
44c0a: 70ff moveq #-1,%d0 <== NOT EXECUTED
44c0c: b095 cmpl %a5@,%d0 <== NOT EXECUTED
44c0e: 670e beqs 44c1e <rtems_fdisk_recycle_segment+0x2cc><== NOT EXECUTED
{
--fd->erased_blocks;
}
else
{
used++;
44c10: 5284 addql #1,%d4 <== NOT EXECUTED
int ret;
uint32_t spage;
uint32_t used = 0;
uint32_t active = 0;
for (spage = 0; spage < ssc->pages; spage++)
44c12: 5283 addql #1,%d3 <== NOT EXECUTED
44c14: b6ab 0014 cmpl %a3@(20),%d3 <== NOT EXECUTED
44c18: 6500 fd64 bcsw 4497e <rtems_fdisk_recycle_segment+0x2c><== NOT EXECUTED
44c1c: 609c bras 44bba <rtems_fdisk_recycle_segment+0x268><== NOT EXECUTED
static bool
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)
{
return ((pd->crc == 0xffff) &&
(pd->flags == 0xffff) &&
(pd->block == 0xffffffff)) ? true : false;
44c1e: b0ad 0004 cmpl %a5@(4),%d0 <== NOT EXECUTED
44c22: 66ec bnes 44c10 <rtems_fdisk_recycle_segment+0x2be><== NOT EXECUTED
(*pages)--;
}
else if (rtems_fdisk_page_desc_erased (spd))
{
--fd->erased_blocks;
44c24: 53ac 0028 subql #1,%a4@(40) <== NOT EXECUTED
int ret;
uint32_t spage;
uint32_t used = 0;
uint32_t active = 0;
for (spage = 0; spage < ssc->pages; spage++)
44c28: 5283 addql #1,%d3 <== NOT EXECUTED
44c2a: b6ab 0014 cmpl %a3@(20),%d3 <== NOT EXECUTED
44c2e: 6500 fd4e bcsw 4497e <rtems_fdisk_recycle_segment+0x2c><== NOT EXECUTED
44c32: 6086 bras 44bba <rtems_fdisk_recycle_segment+0x268><== NOT EXECUTED
ssc->device, ssc->segment,
pages, active, used);
#endif
if (ssc->pages_active != 0)
{
rtems_fdisk_error ("compacting: ssc pages not 0: %d",
44c34: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44c36: 4879 0006 fe1e pea 6fe1e <map.6766+0x268> <== NOT EXECUTED
44c3c: 4eba f6a8 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
44c40: 508f addql #8,%sp <== NOT EXECUTED
ssc->pages_active);
}
ret = rtems_fdisk_erase_segment (fd, ssc);
44c42: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
44c46: 2d4c 0008 movel %a4,%fp@(8) <== NOT EXECUTED
return ret;
}
44c4a: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44c50: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_fdisk_error ("compacting: ssc pages not 0: %d",
ssc->pages_active);
}
ret = rtems_fdisk_erase_segment (fd, ssc);
44c52: 6000 f702 braw 44356 <rtems_fdisk_erase_segment> <== NOT EXECUTED
dsc,
dpage, dpd);
if (ret)
{
rtems_fdisk_error ("recycle: %02d-%03d-%03d=>" \
44c56: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44c58: 2d40 fff4 movel %d0,%fp@(-12) <== NOT EXECUTED
44c5c: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
44c62: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
44c66: 2f01 movel %d1,%sp@- <== NOT EXECUTED
44c68: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44c6a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44c6c: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
44c70: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
44c74: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44c76: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
44c7a: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
44c7e: 4879 0006 fdb9 pea 6fdb9 <map.6766+0x203> <== NOT EXECUTED
44c84: 4eba f660 jsr %pc@(442e6 <rtems_fdisk_error>) <== NOT EXECUTED
"%02d-%03d-%03d: copy pd failed: %s (%d)",
ssc->device, ssc->segment, spage,
dsc->device, dsc->segment, dpage,
strerror (ret), ret);
rtems_fdisk_queue_segment (fd, dsc);
44c88: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
44c8c: 2e8a movel %a2,%sp@ <== NOT EXECUTED
44c8e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44c90: 4eba f850 jsr %pc@(444e2 <rtems_fdisk_queue_segment>) <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = queue->head;
44c94: 26ac 0040 movel %a4@(64),%a3@ <== NOT EXECUTED
queue->head = sc;
if (queue->tail == 0)
44c98: 508f addql #8,%sp <== NOT EXECUTED
44c9a: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc)
{
if (sc)
{
sc->next = queue->head;
queue->head = sc;
44c9e: 294b 0040 movel %a3,%a4@(64) <== NOT EXECUTED
if (queue->tail == 0)
44ca2: 4aac 0044 tstl %a4@(68) <== NOT EXECUTED
44ca6: 6600 fe52 bnew 44afa <rtems_fdisk_recycle_segment+0x1a8><== NOT EXECUTED
44caa: 600e bras 44cba <rtems_fdisk_recycle_segment+0x368><== NOT EXECUTED
queue->tail = sc;
queue->count++;
44cac: 52ac 0048 addql #1,%a4@(72) <== NOT EXECUTED
dsc->device, dsc->segment,
rtems_fdisk_seg_pages_available (dsc));
dsc->failed = true;
rtems_fdisk_queue_segment (fd, dsc);
rtems_fdisk_segment_queue_push_head (&fd->used, ssc);
return EIO;
44cb0: 7205 moveq #5,%d1 <== NOT EXECUTED
{
sc->next = queue->head;
queue->head = sc;
if (queue->tail == 0)
queue->tail = sc;
44cb2: 294b 0044 movel %a3,%a4@(68) <== NOT EXECUTED
44cb6: 6000 fd52 braw 44a0a <rtems_fdisk_recycle_segment+0xb8><== NOT EXECUTED
queue->count++;
44cba: 52ac 0048 addql #1,%a4@(72) <== NOT EXECUTED
{
sc->next = queue->head;
queue->head = sc;
if (queue->tail == 0)
queue->tail = sc;
44cbe: 294b 0044 movel %a3,%a4@(68) <== NOT EXECUTED
44cc2: 6000 fe3a braw 44afe <rtems_fdisk_recycle_segment+0x1ac><== NOT EXECUTED
rtems_fdisk_segment_ctl* dsc,
uint32_t *pages)
{
int ret;
uint32_t spage;
uint32_t used = 0;
44cc6: 4284 clrl %d4 <== NOT EXECUTED
uint32_t active = 0;
44cc8: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
used++;
}
}
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, "ssc end: %d-%d: p=%ld, a=%ld, u=%ld",
44ccc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
44cce: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
44cd2: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
44cd6: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
44cda: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
44cde: 4879 0006 fdfa pea 6fdfa <map.6766+0x244> <== NOT EXECUTED
44ce4: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44ce6: 4eba f464 jsr %pc@(4414c <rtems_fdisk_printf>) <== NOT EXECUTED
ssc->device, ssc->segment,
pages, active, used);
#endif
if (ssc->pages_active != 0)
44cea: 202b 001c movel %a3@(28),%d0 <== NOT EXECUTED
44cee: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
44cf2: 6700 feee beqw 44be2 <rtems_fdisk_recycle_segment+0x290><== NOT EXECUTED
44cf6: 6000 ff3c braw 44c34 <rtems_fdisk_recycle_segment+0x2e2><== NOT EXECUTED
00044730 <rtems_fdisk_seg_most_available.isra.12>:
/**
* Find the segment on the queue that has the most free pages.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_seg_most_available (const rtems_fdisk_segment_ctl_queue* queue)
44730: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44734: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
44738: 2f02 movel %d2,%sp@- <== NOT EXECUTED
{
rtems_fdisk_segment_ctl* sc = queue->head;
rtems_fdisk_segment_ctl* biggest = queue->head;
while (sc)
4473a: 4a88 tstl %a0 <== NOT EXECUTED
4473c: 673e beqs 4477c <rtems_fdisk_seg_most_available.isra.12+0x4c><== NOT EXECUTED
4473e: 2248 moveal %a0,%a1 <== NOT EXECUTED
/**
* Find the segment on the queue that has the most free pages.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_seg_most_available (const rtems_fdisk_segment_ctl_queue* queue)
44740: 2228 0020 movel %a0@(32),%d1 <== NOT EXECUTED
44744: d2a8 001c addl %a0@(28),%d1 <== NOT EXECUTED
* active, used and bad pages.
*/
static uint32_t
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)
{
return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
44748: 2428 0014 movel %a0@(20),%d2 <== NOT EXECUTED
4474c: 9481 subl %d1,%d2 <== NOT EXECUTED
4474e: 2202 movel %d2,%d1 <== NOT EXECUTED
44750: 92a8 0024 subl %a0@(36),%d1 <== NOT EXECUTED
/**
* Find the segment on the queue that has the most free pages.
*/
static rtems_fdisk_segment_ctl*
rtems_fdisk_seg_most_available (const rtems_fdisk_segment_ctl_queue* queue)
44754: 2029 001c movel %a1@(28),%d0 <== NOT EXECUTED
44758: d0a9 0020 addl %a1@(32),%d0 <== NOT EXECUTED
* active, used and bad pages.
*/
static uint32_t
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)
{
return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
4475c: 2429 0014 movel %a1@(20),%d2 <== NOT EXECUTED
44760: 9480 subl %d0,%d2 <== NOT EXECUTED
44762: 2002 movel %d2,%d0 <== NOT EXECUTED
44764: 90a9 0024 subl %a1@(36),%d0 <== NOT EXECUTED
rtems_fdisk_segment_ctl* sc = queue->head;
rtems_fdisk_segment_ctl* biggest = queue->head;
while (sc)
{
if (rtems_fdisk_seg_pages_available (sc) >
44768: b081 cmpl %d1,%d0 <== NOT EXECUTED
4476a: 6402 bccs 4476e <rtems_fdisk_seg_most_available.isra.12+0x3e><== NOT EXECUTED
4476c: 2248 moveal %a0,%a1 <== NOT EXECUTED
rtems_fdisk_seg_pages_available (biggest))
biggest = sc;
sc = sc->next;
4476e: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_fdisk_seg_most_available (const rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
rtems_fdisk_segment_ctl* biggest = queue->head;
while (sc)
44770: 4a88 tstl %a0 <== NOT EXECUTED
44772: 66cc bnes 44740 <rtems_fdisk_seg_most_available.isra.12+0x10><== NOT EXECUTED
biggest = sc;
sc = sc->next;
}
return biggest;
}
44774: 241f movel %sp@+,%d2 <== NOT EXECUTED
44776: 2009 movel %a1,%d0 <== NOT EXECUTED
44778: 4e5e unlk %fp <== NOT EXECUTED
4477a: 4e75 rts <== NOT EXECUTED
4477c: 241f movel %sp@+,%d2 <== NOT EXECUTED
rtems_fdisk_seg_most_available (const rtems_fdisk_segment_ctl_queue* queue)
{
rtems_fdisk_segment_ctl* sc = queue->head;
rtems_fdisk_segment_ctl* biggest = queue->head;
while (sc)
4477e: 93c9 subal %a1,%a1 <== NOT EXECUTED
biggest = sc;
sc = sc->next;
}
return biggest;
}
44780: 2009 movel %a1,%d0 <== NOT EXECUTED
44782: 4e5e unlk %fp <== NOT EXECUTED
000441d6 <rtems_fdisk_seg_write>:
rtems_fdisk_seg_write (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t offset,
const void* buffer,
uint32_t size)
{
441d6: 4e56 ffe4 linkw %fp,#-28
441da: 206e 0008 moveal %fp@(8),%a0
441de: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@
441e2: 246e 000c moveal %fp@(12),%a2
int ret;
uint32_t device;
uint32_t segment;
const rtems_fdisk_segment_desc* sd;
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
441e6: 242a 0008 movel %a2@(8),%d2
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
441ea: 2202 movel %d2,%d1
441ec: 2002 movel %d2,%d0
441ee: e589 lsll #2,%d1
441f0: e988 lsll #4,%d0
441f2: 2268 002c moveal %a0@(44),%a1
441f6: 9081 subl %d1,%d0
441f8: d3c0 addal %d0,%a1
uint32_t device;
uint32_t segment;
const rtems_fdisk_segment_desc* sd;
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
segment = sc->segment;
441fa: 262a 000c movel %a2@(12),%d3
static const rtems_fdisk_segment_desc*
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,
uint32_t device,
uint32_t segment)
{
return fd->devices[device].segments[segment].descriptor;
441fe: 2203 movel %d3,%d1
44200: 2003 movel %d3,%d0
44202: e989 lsll #4,%d1
44204: ed88 lsll #6,%d0
44206: 2651 moveal %a1@,%a3
44208: 9081 subl %d1,%d0
4420a: 2c33 0804 movel %a3@(00000004,%d0:l),%d6
const rtems_fdisk_segment_desc* sd;
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
segment = sc->segment;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
4420e: 2269 0008 moveal %a1@(8),%a1
rtems_fdisk_seg_write (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t offset,
const void* buffer,
uint32_t size)
{
44212: 2a2e 0018 movel %fp@(24),%d5
const rtems_fdisk_segment_desc* sd;
const rtems_fdisk_driver_handlers* ops;
device = sc->device;
segment = sc->segment;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
44216: 2669 0008 moveal %a1@(8),%a3
rtems_fdisk_seg_write (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t offset,
const void* buffer,
uint32_t size)
{
4421a: 282e 0010 movel %fp@(16),%d4
device = sc->device;
segment = sc->segment;
sd = rtems_fdisk_seg_descriptor (fd, device, segment);
ops = fd->devices[device].descriptor->flash_ops;
#if RTEMS_FDISK_TRACE
rtems_fdisk_printf (fd, " seg-write: %02d-%03d: o=%08x s=%d",
4421e: 2f05 movel %d5,%sp@-
44220: 2f04 movel %d4,%sp@-
44222: 2f03 movel %d3,%sp@-
44224: 2f02 movel %d2,%sp@-
44226: 4879 0006 fbce pea 6fbce <map.6766+0x18>
4422c: 2f08 movel %a0,%sp@-
4422e: 4eba ff1c jsr %pc@(4414c <rtems_fdisk_printf>)
device, segment, offset, size);
#endif
ret = ops->write (sd, device, segment, offset, buffer, size);
44232: 2f05 movel %d5,%sp@-
44234: 2f2e 0014 movel %fp@(20),%sp@-
44238: 2f04 movel %d4,%sp@-
4423a: 2f03 movel %d3,%sp@-
4423c: 2f02 movel %d2,%sp@-
4423e: 2f06 movel %d6,%sp@-
44240: 206b 0004 moveal %a3@(4),%a0
44244: 4e90 jsr %a0@
if (ret)
44246: 4fef 0030 lea %sp@(48),%sp
4424a: 4a80 tstl %d0
4424c: 6706 beqs 44254 <rtems_fdisk_seg_write+0x7e> <== ALWAYS TAKEN
sc->failed = true;
4424e: 7201 moveq #1,%d1 <== NOT EXECUTED
44250: 2541 0028 movel %d1,%a2@(40) <== NOT EXECUTED
return ret;
}
44254: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3
4425a: 4e5e unlk %fp <== NOT EXECUTED
00044888 <rtems_fdisk_seg_write_page>:
rtems_fdisk_seg_write_page (rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page,
const void* buffer)
{
if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))
44888: 7008 moveq #8,%d0
static int
rtems_fdisk_seg_write_page (rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page,
const void* buffer)
{
4488a: 4e56 0000 linkw %fp,#0
4488e: 2f0b movel %a3,%sp@-
44890: 266e 000c moveal %fp@(12),%a3
44894: 2f0a movel %a2,%sp@-
44896: 246e 0008 moveal %fp@(8),%a2
if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))
4489a: c0aa 0008 andl %a2@(8),%d0
4489e: 6726 beqs 448c6 <rtems_fdisk_seg_write_page+0x3e><== NEVER TAKEN
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page)
{
return rtems_fdisk_seg_blank_check (fd, sc,
page * fd->block_size, fd->block_size);
448a0: 202a 0014 movel %a2@(20),%d0
static int
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page)
{
return rtems_fdisk_seg_blank_check (fd, sc,
448a4: 222e 0010 movel %fp@(16),%d1
448a8: 4c00 1800 mulsl %d0,%d1
448ac: 2f00 movel %d0,%sp@-
448ae: 2f01 movel %d1,%sp@-
448b0: 2f2b 000c movel %a3@(12),%sp@-
448b4: 2f2b 0008 movel %a3@(8),%sp@-
448b8: 2f0a movel %a2,%sp@-
448ba: 4eba ff4e jsr %pc@(4480a <rtems_fdisk_seg_blank_check.isra.15>)
const void* buffer)
{
if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))
{
int ret = rtems_fdisk_seg_blank_check_page (fd, sc, page);
if (ret)
448be: 4fef 0014 lea %sp@(20),%sp
448c2: 4a80 tstl %d0
448c4: 6624 bnes 448ea <rtems_fdisk_seg_write_page+0x62><== NEVER TAKEN
return ret;
}
--fd->erased_blocks;
448c6: 53aa 0028 subql #1,%a2@(40)
return rtems_fdisk_seg_write (fd, sc,
page * fd->block_size, buffer, fd->block_size);
448ca: 202a 0014 movel %a2@(20),%d0
int ret = rtems_fdisk_seg_blank_check_page (fd, sc, page);
if (ret)
return ret;
}
--fd->erased_blocks;
return rtems_fdisk_seg_write (fd, sc,
448ce: 222e 0010 movel %fp@(16),%d1
448d2: 4c00 1800 mulsl %d0,%d1
448d6: 2f00 movel %d0,%sp@-
448d8: 2f2e 0014 movel %fp@(20),%sp@-
448dc: 2f01 movel %d1,%sp@-
448de: 2f0b movel %a3,%sp@-
448e0: 2f0a movel %a2,%sp@-
448e2: 4eba f8f2 jsr %pc@(441d6 <rtems_fdisk_seg_write>)
448e6: 4fef 0014 lea %sp@(20),%sp
page * fd->block_size, buffer, fd->block_size);
}
448ea: 246e fff8 moveal %fp@(-8),%a2
448ee: 266e fffc moveal %fp@(-4),%a3
448f2: 4e5e unlk %fp <== NOT EXECUTED
000448f6 <rtems_fdisk_seg_write_page_desc>:
rtems_fdisk_segment_ctl* sc,
uint32_t page,
const rtems_fdisk_page_desc* page_desc)
{
uint32_t offset = page * sizeof (rtems_fdisk_page_desc);
if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))
448f6: 7008 moveq #8,%d0
static int
rtems_fdisk_seg_write_page_desc (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page,
const rtems_fdisk_page_desc* page_desc)
{
448f8: 4e56 fff4 linkw %fp,#-12
448fc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
44900: 246e 0008 moveal %fp@(8),%a2
44904: 242e 0010 movel %fp@(16),%d2
uint32_t offset = page * sizeof (rtems_fdisk_page_desc);
if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))
44908: c0aa 0008 andl %a2@(8),%d0
static int
rtems_fdisk_seg_write_page_desc (const rtems_flashdisk* fd,
rtems_fdisk_segment_ctl* sc,
uint32_t page,
const rtems_fdisk_page_desc* page_desc)
{
4490c: 266e 000c moveal %fp@(12),%a3
uint32_t offset = page * sizeof (rtems_fdisk_page_desc);
44910: e78a lsll #3,%d2
if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))
44912: 4a80 tstl %d0
44914: 671c beqs 44932 <rtems_fdisk_seg_write_page_desc+0x3c><== NEVER TAKEN
{
int ret = rtems_fdisk_seg_blank_check (fd, sc,
44916: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
4491a: 2f02 movel %d2,%sp@-
4491c: 2f2b 000c movel %a3@(12),%sp@-
44920: 2f2b 0008 movel %a3@(8),%sp@-
44924: 2f0a movel %a2,%sp@-
44926: 4eba fee2 jsr %pc@(4480a <rtems_fdisk_seg_blank_check.isra.15>)
offset,
sizeof (rtems_fdisk_page_desc));
if (ret)
4492a: 4fef 0014 lea %sp@(20),%sp
4492e: 4a80 tstl %d0
44930: 6616 bnes 44948 <rtems_fdisk_seg_write_page_desc+0x52><== NEVER TAKEN
return ret;
}
return rtems_fdisk_seg_write (fd, sc, offset,
44932: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
44936: 2f2e 0014 movel %fp@(20),%sp@-
4493a: 2f02 movel %d2,%sp@-
4493c: 2f0b movel %a3,%sp@-
4493e: 2f0a movel %a2,%sp@-
44940: 4eba f894 jsr %pc@(441d6 <rtems_fdisk_seg_write>)
44944: 4fef 0014 lea %sp@(20),%sp
page_desc, sizeof (rtems_fdisk_page_desc));
}
44948: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4494e: 4e5e unlk %fp <== NOT EXECUTED
0004447c <rtems_fdisk_segment_queue_insert_before>:
*/
static void
rtems_fdisk_segment_queue_insert_before (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* item,
rtems_fdisk_segment_ctl* sc)
{
4447c: 4e56 0000 linkw %fp,#0
44480: 226e 0008 moveal %fp@(8),%a1
44484: 2f0a movel %a2,%sp@-
44486: 222e 000c movel %fp@(12),%d1
4448a: 246e 0010 moveal %fp@(16),%a2
if (item)
4448e: 6718 beqs 444a8 <rtems_fdisk_segment_queue_insert_before+0x2c><== NEVER TAKEN
{
rtems_fdisk_segment_ctl** prev = &queue->head;
rtems_fdisk_segment_ctl* it = queue->head;
44490: 2051 moveal %a1@,%a0
while (it)
44492: 4a88 tstl %a0
44494: 6712 beqs 444a8 <rtems_fdisk_segment_queue_insert_before+0x2c><== NEVER TAKEN
{
if (item == it)
44496: b1c1 cmpal %d1,%a0
44498: 672c beqs 444c6 <rtems_fdisk_segment_queue_insert_before+0x4a><== ALWAYS TAKEN
queue->count++;
return;
}
prev = &it->next;
it = it->next;
4449a: 2010 movel %a0@,%d0 <== NOT EXECUTED
if (item)
{
rtems_fdisk_segment_ctl** prev = &queue->head;
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
4449c: 670a beqs 444a8 <rtems_fdisk_segment_queue_insert_before+0x2c><== NOT EXECUTED
{
if (item == it)
4449e: b081 cmpl %d1,%d0 <== NOT EXECUTED
444a0: 6726 beqs 444c8 <rtems_fdisk_segment_queue_insert_before+0x4c><== NOT EXECUTED
444a2: 2040 moveal %d0,%a0 <== NOT EXECUTED
queue->count++;
return;
}
prev = &it->next;
it = it->next;
444a4: 2010 movel %a0@,%d0 <== NOT EXECUTED
if (item)
{
rtems_fdisk_segment_ctl** prev = &queue->head;
rtems_fdisk_segment_ctl* it = queue->head;
while (it)
444a6: 66f6 bnes 4449e <rtems_fdisk_segment_queue_insert_before+0x22><== NOT EXECUTED
*/
static void
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
if (sc)
444a8: 4a8a tstl %a2 <== NOT EXECUTED
444aa: 6714 beqs 444c0 <rtems_fdisk_segment_queue_insert_before+0x44><== NOT EXECUTED
{
sc->next = 0;
444ac: 4292 clrl %a2@ <== NOT EXECUTED
if (queue->head)
444ae: 4a91 tstl %a1@ <== NOT EXECUTED
444b0: 6724 beqs 444d6 <rtems_fdisk_segment_queue_insert_before+0x5a><== NOT EXECUTED
{
queue->tail->next = sc;
444b2: 2069 0004 moveal %a1@(4),%a0 <== NOT EXECUTED
444b6: 208a movel %a2,%a0@ <== NOT EXECUTED
else
{
queue->head = queue->tail = sc;
}
queue->count++;
444b8: 52a9 0008 addql #1,%a1@(8) <== NOT EXECUTED
sc->next = 0;
if (queue->head)
{
queue->tail->next = sc;
queue->tail = sc;
444bc: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
it = it->next;
}
}
rtems_fdisk_segment_queue_push_tail (queue, sc);
}
444c0: 245f moveal %sp@+,%a2 <== NOT EXECUTED
444c2: 4e5e unlk %fp <== NOT EXECUTED
444c4: 4e75 rts <== NOT EXECUTED
rtems_fdisk_segment_ctl* item,
rtems_fdisk_segment_ctl* sc)
{
if (item)
{
rtems_fdisk_segment_ctl** prev = &queue->head;
444c6: 2049 moveal %a1,%a0
while (it)
{
if (item == it)
{
sc->next = item;
444c8: 2481 movel %d1,%a2@
*prev = sc;
444ca: 208a movel %a2,%a0@
it = it->next;
}
}
rtems_fdisk_segment_queue_push_tail (queue, sc);
}
444cc: 245f moveal %sp@+,%a2
{
if (item == it)
{
sc->next = item;
*prev = sc;
queue->count++;
444ce: 52a9 0008 addql #1,%a1@(8)
it = it->next;
}
}
rtems_fdisk_segment_queue_push_tail (queue, sc);
}
444d2: 4e5e unlk %fp
444d4: 4e75 rts
else
{
queue->head = queue->tail = sc;
}
queue->count++;
444d6: 52a9 0008 addql #1,%a1@(8) <== NOT EXECUTED
queue->tail->next = sc;
queue->tail = sc;
}
else
{
queue->head = queue->tail = sc;
444da: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
444de: 228a movel %a2,%a1@ <== NOT EXECUTED
444e0: 60de bras 444c0 <rtems_fdisk_segment_queue_insert_before+0x44><== NOT EXECUTED
00043fa4 <rtems_fdisk_segment_queue_remove>:
* Remove from the segment control queue.
*/
static void
rtems_fdisk_segment_queue_remove (rtems_fdisk_segment_ctl_queue* queue,
rtems_fdisk_segment_ctl* sc)
{
43fa4: 4e56 0000 linkw %fp,#0
43fa8: 226e 000c moveal %fp@(12),%a1
43fac: 2f0a movel %a2,%sp@-
43fae: 246e 0008 moveal %fp@(8),%a2
rtems_fdisk_segment_ctl* prev = 0;
rtems_fdisk_segment_ctl* it = queue->head;
43fb2: 2052 moveal %a2@,%a0
/*
* Do not change sc->next as sc could be on another queue.
*/
while (it)
43fb4: 4a88 tstl %a0
43fb6: 6712 beqs 43fca <rtems_fdisk_segment_queue_remove+0x26>
{
if (sc == it)
43fb8: b3c8 cmpal %a0,%a1
43fba: 6734 beqs 43ff0 <rtems_fdisk_segment_queue_remove+0x4c>
queue->count--;
break;
}
prev = it;
it = it->next;
43fbc: 2010 movel %a0@,%d0
/*
* Do not change sc->next as sc could be on another queue.
*/
while (it)
43fbe: 670a beqs 43fca <rtems_fdisk_segment_queue_remove+0x26>
{
if (sc == it)
43fc0: b089 cmpl %a1,%d0
43fc2: 670c beqs 43fd0 <rtems_fdisk_segment_queue_remove+0x2c><== NEVER TAKEN
43fc4: 2040 moveal %d0,%a0
queue->count--;
break;
}
prev = it;
it = it->next;
43fc6: 2010 movel %a0@,%d0
/*
* Do not change sc->next as sc could be on another queue.
*/
while (it)
43fc8: 66f6 bnes 43fc0 <rtems_fdisk_segment_queue_remove+0x1c>
}
prev = it;
it = it->next;
}
}
43fca: 245f moveal %sp@+,%a2
43fcc: 4e5e unlk %fp
43fce: 4e75 rts
if (queue->head == 0)
queue->tail = 0;
}
else
{
prev->next = sc->next;
43fd0: 2091 movel %a1@,%a0@ <== NOT EXECUTED
if (queue->tail == sc)
43fd2: b3ea 0004 cmpal %a2@(4),%a1 <== NOT EXECUTED
43fd6: 670c beqs 43fe4 <rtems_fdisk_segment_queue_remove+0x40><== NOT EXECUTED
queue->tail = prev;
}
sc->next = 0;
43fd8: 4291 clrl %a1@
queue->count--;
43fda: 53aa 0008 subql #1,%a2@(8)
}
prev = it;
it = it->next;
}
}
43fde: 245f moveal %sp@+,%a2
43fe0: 4e5e unlk %fp
43fe2: 4e75 rts
}
else
{
prev->next = sc->next;
if (queue->tail == sc)
queue->tail = prev;
43fe4: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
}
sc->next = 0;
43fe8: 4291 clrl %a1@ <== NOT EXECUTED
queue->count--;
43fea: 53aa 0008 subql #1,%a2@(8) <== NOT EXECUTED
43fee: 60ee bras 43fde <rtems_fdisk_segment_queue_remove+0x3a><== NOT EXECUTED
{
if (sc == it)
{
if (prev == 0)
{
queue->head = sc->next;
43ff0: 2011 movel %a1@,%d0
43ff2: 2480 movel %d0,%a2@
if (queue->head == 0)
43ff4: 66e2 bnes 43fd8 <rtems_fdisk_segment_queue_remove+0x34><== ALWAYS TAKEN
queue->tail = 0;
43ff6: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
{
prev->next = sc->next;
if (queue->tail == sc)
queue->tail = prev;
}
sc->next = 0;
43ffa: 4291 clrl %a1@ <== NOT EXECUTED
queue->count--;
43ffc: 53aa 0008 subql #1,%a2@(8) <== NOT EXECUTED
44000: 60dc bras 43fde <rtems_fdisk_segment_queue_remove+0x3a><== NOT EXECUTED
0004425e <rtems_fdisk_warning>:
* @param ... The arguments for the format text.
* @return int The number of bytes written to the output.
*/
static int
rtems_fdisk_warning (const rtems_flashdisk* fd, const char *format, ...)
{
4425e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44262: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
44266: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int ret = 0;
if (fd->info_level >= 1)
44268: 4aa8 006c tstl %a0@(108) <== NOT EXECUTED
4426c: 660c bnes 4427a <rtems_fdisk_warning+0x1c> <== NOT EXECUTED
* @return int The number of bytes written to the output.
*/
static int
rtems_fdisk_warning (const rtems_flashdisk* fd, const char *format, ...)
{
int ret = 0;
4426e: 4282 clrl %d2 <== NOT EXECUTED
fprintf (stdout, "\n");
fflush (stdout);
va_end (args);
}
return ret;
}
44270: 2002 movel %d2,%d0 <== NOT EXECUTED
44272: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
44276: 4e5e unlk %fp <== NOT EXECUTED
44278: 4e75 rts <== NOT EXECUTED
int ret = 0;
if (fd->info_level >= 1)
{
va_list args;
va_start (args, format);
fprintf (stdout, "fdisk:warning:");
4427a: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
44280: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44284: 4878 000e pea e <OPER1+0x2> <== NOT EXECUTED
44288: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4428c: 4879 0006 fbf2 pea 6fbf2 <map.6766+0x3c> <== NOT EXECUTED
44292: 4eb9 0006 123e jsr 6123e <fwrite> <== NOT EXECUTED
ret = vfprintf (stdout, format, args);
44298: 486e 0010 pea %fp@(16) <== NOT EXECUTED
4429c: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
442a2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
442a6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
442aa: 4eb9 0006 86e0 jsr 686e0 <vfprintf> <== NOT EXECUTED
fprintf (stdout, "\n");
442b0: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
if (fd->info_level >= 1)
{
va_list args;
va_start (args, format);
fprintf (stdout, "fdisk:warning:");
ret = vfprintf (stdout, format, args);
442b6: 2400 movel %d0,%d2 <== NOT EXECUTED
fprintf (stdout, "\n");
442b8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
442bc: 4878 000a pea a <LASTO> <== NOT EXECUTED
442c0: 4eb9 0006 0bc0 jsr 60bc0 <fputc> <== NOT EXECUTED
fflush (stdout);
442c6: 2079 0007 424c moveal 7424c <_impure_ptr>,%a0 <== NOT EXECUTED
442cc: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
442d0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
442d4: 4eb9 0006 0792 jsr 60792 <fflush> <== NOT EXECUTED
va_end (args);
442da: 588f addql #4,%sp <== NOT EXECUTED
}
return ret;
}
442dc: 2002 movel %d2,%d0 <== NOT EXECUTED
442de: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
442e2: 4e5e unlk %fp <== NOT EXECUTED
0004bd84 <rtems_filesystem_check_access>:
int eval_flags,
mode_t node_mode,
uid_t node_uid,
gid_t node_gid
)
{
4bd84: 4e56 fff4 linkw %fp,#-12
4bd88: 48d7 001c moveml %d2-%d4,%sp@
mode_t perm_flags = eval_flags & RTEMS_FS_PERMS_RWX;
4bd8c: 7407 moveq #7,%d2
int eval_flags,
mode_t node_mode,
uid_t node_uid,
gid_t node_gid
)
{
4bd8e: 362e 0012 movew %fp@(18),%d3
4bd92: 382e 0016 movew %fp@(22),%d4
mode_t perm_flags = eval_flags & RTEMS_FS_PERMS_RWX;
4bd96: c4ae 0008 andl %fp@(8),%d2
uid_t task_uid = geteuid();
4bd9a: 4eb9 0004 dc38 jsr 4dc38 <geteuid>
if (task_uid == 0 || task_uid == node_uid) {
4bda0: 4a40 tstw %d0
4bda2: 6732 beqs 4bdd6 <rtems_filesystem_check_access+0x52>
4bda4: 0280 0000 ffff andil #65535,%d0
4bdaa: 0283 0000 ffff andil #65535,%d3
4bdb0: b680 cmpl %d0,%d3
4bdb2: 6722 beqs 4bdd6 <rtems_filesystem_check_access+0x52>
perm_flags <<= RTEMS_FS_USR_SHIFT;
} else {
gid_t task_gid = getegid();
4bdb4: 4eb9 0004 dc24 jsr 4dc24 <getegid>
if (task_gid == 0 || task_gid == node_gid) {
4bdba: 4a40 tstw %d0
4bdbc: 6630 bnes 4bdee <rtems_filesystem_check_access+0x6a>
perm_flags <<= RTEMS_FS_GRP_SHIFT;
4bdbe: e78a lsll #3,%d2
} else {
perm_flags <<= RTEMS_FS_OTH_SHIFT;
}
}
return (perm_flags & node_mode) == perm_flags;
4bdc0: 2002 movel %d2,%d0
4bdc2: c0ae 000c andl %fp@(12),%d0
4bdc6: b480 cmpl %d0,%d2
4bdc8: 57c0 seq %d0
}
4bdca: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4
4bdd0: 4e5e unlk %fp
4bdd2: 4480 negl %d0
4bdd4: 4e75 rts
{
mode_t perm_flags = eval_flags & RTEMS_FS_PERMS_RWX;
uid_t task_uid = geteuid();
if (task_uid == 0 || task_uid == node_uid) {
perm_flags <<= RTEMS_FS_USR_SHIFT;
4bdd6: ed8a lsll #6,%d2
} else {
perm_flags <<= RTEMS_FS_OTH_SHIFT;
}
}
return (perm_flags & node_mode) == perm_flags;
4bdd8: 2002 movel %d2,%d0
4bdda: c0ae 000c andl %fp@(12),%d0
4bdde: b480 cmpl %d0,%d2
4bde0: 57c0 seq %d0
}
4bde2: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4
4bde8: 4e5e unlk %fp
4bdea: 4480 negl %d0
4bdec: 4e75 rts
if (task_uid == 0 || task_uid == node_uid) {
perm_flags <<= RTEMS_FS_USR_SHIFT;
} else {
gid_t task_gid = getegid();
if (task_gid == 0 || task_gid == node_gid) {
4bdee: 0280 0000 ffff andil #65535,%d0
4bdf4: 0284 0000 ffff andil #65535,%d4
4bdfa: b880 cmpl %d0,%d4
4bdfc: 67c0 beqs 4bdbe <rtems_filesystem_check_access+0x3a><== NEVER TAKEN
} else {
perm_flags <<= RTEMS_FS_OTH_SHIFT;
}
}
return (perm_flags & node_mode) == perm_flags;
4bdfe: 2002 movel %d2,%d0
4be00: c0ae 000c andl %fp@(12),%d0
4be04: b480 cmpl %d0,%d2
4be06: 57c0 seq %d0
}
4be08: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4
4be0e: 4e5e unlk %fp
4be10: 4480 negl %d0 <== NOT EXECUTED
00044734 <rtems_filesystem_do_unmount>:
}
void rtems_filesystem_do_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
44734: 4e56 0000 linkw %fp,#0
44738: 2f0a movel %a2,%sp@-
4473a: 246e 0008 moveal %fp@(8),%a2
*/
#include <rtems/userenv.h>
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4473e: 42a7 clrl %sp@-
44740: 42a7 clrl %sp@-
44742: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
44748: 4eb9 0004 7458 jsr 47458 <rtems_semaphore_obtain>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4474e: 2252 moveal %a2@,%a1
previous = the_node->previous;
44750: 206a 0004 moveal %a2@(4),%a0
next->previous = previous;
44754: 2348 0004 movel %a0,%a1@(4)
previous->next = next;
44758: 2089 movel %a1,%a0@
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4475a: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
44760: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
rtems_filesystem_mt_lock();
rtems_chain_extract_unprotected(&mt_entry->mt_node);
rtems_filesystem_mt_unlock();
rtems_filesystem_global_location_release(mt_entry->mt_point_node);
44766: 2f2a 0020 movel %a2@(32),%sp@-
4476a: 4eb9 0004 4954 jsr 44954 <rtems_filesystem_global_location_release>
(*mt_entry->ops->fsunmount_me_h)(mt_entry);
44770: 206a 000c moveal %a2@(12),%a0
44774: 2f0a movel %a2,%sp@-
44776: 2068 003c moveal %a0@(60),%a0
4477a: 4e90 jsr %a0@
if (mt_entry->unmount_task != 0) {
4477c: 202a 003a movel %a2@(58),%d0
44780: 4fef 0018 lea %sp@(24),%sp
44784: 6714 beqs 4479a <rtems_filesystem_do_unmount+0x66><== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE rtems_status_code rtems_event_transient_send(
rtems_id id
)
{
return rtems_event_system_send( id, RTEMS_EVENT_SYSTEM_TRANSIENT );
44786: 2f3c 8000 0000 movel #-2147483648,%sp@-
4478c: 2f00 movel %d0,%sp@-
4478e: 4eb9 0004 7670 jsr 47670 <rtems_event_system_send>
rtems_status_code sc =
rtems_event_transient_send(mt_entry->unmount_task);
if (sc != RTEMS_SUCCESSFUL) {
44794: 508f addql #8,%sp
44796: 4a80 tstl %d0
44798: 6610 bnes 447aa <rtems_filesystem_do_unmount+0x76><== NEVER TAKEN
rtems_fatal_error_occurred(0xdeadbeef);
}
}
free(mt_entry);
4479a: 2d4a 0008 movel %a2,%fp@(8)
}
4479e: 246e fffc moveal %fp@(-4),%a2
447a2: 4e5e unlk %fp
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
}
}
free(mt_entry);
447a4: 4ef9 0004 30cc jmp 430cc <free>
if (mt_entry->unmount_task != 0) {
rtems_status_code sc =
rtems_event_transient_send(mt_entry->unmount_task);
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
447aa: 2f3c dead beef movel #-559038737,%sp@- <== NOT EXECUTED
447b0: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred> <== NOT EXECUTED
0004c058 <rtems_filesystem_eval_path_eat_delimiter>:
#include <rtems/libio_.h>
void rtems_filesystem_eval_path_eat_delimiter(
rtems_filesystem_eval_path_context_t *ctx
)
{
4c058: 4e56 0000 linkw %fp,#0
4c05c: 2f0a movel %a2,%sp@-
4c05e: 246e 0008 moveal %fp@(8),%a2
const char *current = ctx->path;
4c062: 2212 movel %a2@,%d1
const char *end = current + ctx->pathlen;
4c064: 2241 moveal %d1,%a1
4c066: d3ea 0004 addal %a2@(4),%a1
#include <rtems/libio_.h>
void rtems_filesystem_eval_path_eat_delimiter(
rtems_filesystem_eval_path_context_t *ctx
)
{
4c06a: 2f02 movel %d2,%sp@-
const char *current = ctx->path;
const char *end = current + ctx->pathlen;
while (current != end && rtems_filesystem_is_delimiter(*current)) {
4c06c: b3c1 cmpal %d1,%a1
4c06e: 6716 beqs 4c086 <rtems_filesystem_eval_path_eat_delimiter+0x2e><== NEVER TAKEN
4c070: 2041 moveal %d1,%a0
4c072: 2208 movel %a0,%d1
gid_t node_gid
);
static inline bool rtems_filesystem_is_delimiter(char c)
{
return c == '/' || c == '\\';
4c074: 742f moveq #47,%d2
4c076: 1018 moveb %a0@+,%d0
4c078: 49c0 extbl %d0
4c07a: b480 cmpl %d0,%d2
4c07c: 6718 beqs 4c096 <rtems_filesystem_eval_path_eat_delimiter+0x3e>
4c07e: 143c 005c moveb #92,%d2
4c082: b480 cmpl %d0,%d2
4c084: 6710 beqs 4c096 <rtems_filesystem_eval_path_eat_delimiter+0x3e>
++current;
}
ctx->path = current;
ctx->pathlen = (size_t) (end - current);
}
4c086: 241f movel %sp@+,%d2
while (current != end && rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
ctx->pathlen = (size_t) (end - current);
4c088: 93c1 subal %d1,%a1
while (current != end && rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
4c08a: 2481 movel %d1,%a2@
ctx->pathlen = (size_t) (end - current);
4c08c: 2549 0004 movel %a1,%a2@(4)
}
4c090: 245f moveal %sp@+,%a2
4c092: 4e5e unlk %fp
4c094: 4e75 rts
{
const char *current = ctx->path;
const char *end = current + ctx->pathlen;
while (current != end && rtems_filesystem_is_delimiter(*current)) {
++current;
4c096: 2208 movel %a0,%d1
)
{
const char *current = ctx->path;
const char *end = current + ctx->pathlen;
while (current != end && rtems_filesystem_is_delimiter(*current)) {
4c098: b1c9 cmpal %a1,%a0
4c09a: 66d6 bnes 4c072 <rtems_filesystem_eval_path_eat_delimiter+0x1a>
++current;
}
ctx->path = current;
ctx->pathlen = (size_t) (end - current);
}
4c09c: 241f movel %sp@+,%d2
while (current != end && rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
ctx->pathlen = (size_t) (end - current);
4c09e: 93c1 subal %d1,%a1
while (current != end && rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
4c0a0: 2481 movel %d1,%a2@
ctx->pathlen = (size_t) (end - current);
4c0a2: 2549 0004 movel %a1,%a2@(4)
}
4c0a6: 245f moveal %sp@+,%a2
4c0a8: 4e5e unlk %fp <== NOT EXECUTED
0004be60 <rtems_filesystem_eval_path_generic>:
void rtems_filesystem_eval_path_generic(
rtems_filesystem_eval_path_context_t *ctx,
void *arg,
const rtems_filesystem_eval_path_generic_config *config
)
{
4be60: 4e56 ffe4 linkw %fp,#-28
4be64: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
4be68: 246e 0008 moveal %fp@(8),%a2
rtems_filesystem_eval_path_error(ctx, EINVAL);
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
} else if (rtems_filesystem_is_parent_directory(token, tokenlen)) {
rtems_filesystem_location_info_t *currentloc =
4be6c: 280a movel %a2,%d4
4be6e: 49f9 0004 c0ac lea 4c0ac <rtems_filesystem_eval_path_next_token>,%a4
4be74: 0684 0000 0018 addil #24,%d4
void rtems_filesystem_eval_path_generic(
rtems_filesystem_eval_path_context_t *ctx,
void *arg,
const rtems_filesystem_eval_path_generic_config *config
)
{
4be7a: 262e 000c movel %fp@(12),%d3
4be7e: 2a6e 0010 moveal %fp@(16),%a5
rtems_filesystem_eval_path_context_t *ctx,
const char **token,
size_t *tokenlen
)
{
rtems_filesystem_eval_path_next_token(ctx);
4be82: 2f0a movel %a2,%sp@-
4be84: 4e94 jsr %a4@
*token = ctx->token;
4be86: 266a 0008 moveal %a2@(8),%a3
const char *token;
size_t tokenlen;
rtems_filesystem_eval_path_get_next_token(ctx, &token, &tokenlen);
if (tokenlen > 0) {
4be8a: 588f addql #4,%sp
*tokenlen = ctx->tokenlen;
4be8c: 242a 000c movel %a2@(12),%d2
4be90: 660a bnes 4be9c <rtems_filesystem_eval_path_generic+0x3c>
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
4be92: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4be98: 4e5e unlk %fp
4be9a: 4e75 rts
size_t tokenlen;
rtems_filesystem_eval_path_get_next_token(ctx, &token, &tokenlen);
if (tokenlen > 0) {
if ((*config->is_directory)(ctx, arg)) {
4be9c: 2f03 movel %d3,%sp@-
4be9e: 2055 moveal %a5@,%a0
4bea0: 2f0a movel %a2,%sp@-
4bea2: 4e90 jsr %a0@
4bea4: 508f addql #8,%sp
4bea6: 4a00 tstb %d0
4bea8: 672c beqs 4bed6 <rtems_filesystem_eval_path_generic+0x76>
static inline bool rtems_filesystem_is_current_directory(
const char *token,
size_t tokenlen
)
{
return tokenlen == 1 && token [0] == '.';
4beaa: 7001 moveq #1,%d0
4beac: b082 cmpl %d2,%d0
4beae: 673e beqs 4beee <rtems_filesystem_eval_path_generic+0x8e>
static inline bool rtems_filesystem_is_parent_directory(
const char *token,
size_t tokenlen
)
{
return tokenlen == 2 && token [0] == '.' && token [1] == '.';
4beb0: 7002 moveq #2,%d0
4beb2: b082 cmpl %d2,%d0
4beb4: 6700 00ae beqw 4bf64 <rtems_filesystem_eval_path_generic+0x104>
}
} else {
status = (*config->eval_token)(ctx, arg, "..", 2);
}
} else {
status = (*config->eval_token)(ctx, arg, token, tokenlen);
4beb8: 2f02 movel %d2,%sp@-
4beba: 206d 0004 moveal %a5@(4),%a0
4bebe: 2f0b movel %a3,%sp@-
4bec0: 2f03 movel %d3,%sp@-
4bec2: 2f0a movel %a2,%sp@-
4bec4: 4e90 jsr %a0@
4bec6: 4fef 0010 lea %sp@(16),%sp
}
if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) {
4beca: 7202 moveq #2,%d1
4becc: b280 cmpl %d0,%d1
4bece: 6756 beqs 4bf26 <rtems_filesystem_eval_path_generic+0xc6>
)
{
rtems_filesystem_eval_path_generic_status status =
RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;
while (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE) {
4bed0: 4a80 tstl %d0
4bed2: 67ae beqs 4be82 <rtems_filesystem_eval_path_generic+0x22>
4bed4: 60bc bras 4be92 <rtems_filesystem_eval_path_generic+0x32>
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOTDIR);
4bed6: 7214 moveq #20,%d1
4bed8: 2d4a 0008 movel %a2,%fp@(8)
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
4bedc: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOTDIR);
4bee2: 2d41 000c movel %d1,%fp@(12)
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
4bee6: 4e5e unlk %fp
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOTDIR);
4bee8: 4ef9 0004 402a jmp 4402a <rtems_filesystem_eval_path_error>
static inline bool rtems_filesystem_is_current_directory(
const char *token,
size_t tokenlen
)
{
return tokenlen == 1 && token [0] == '.';
4beee: 722e moveq #46,%d1
4bef0: 1013 moveb %a3@,%d0
4bef2: 49c0 extbl %d0
4bef4: b280 cmpl %d0,%d1
4bef6: 66c0 bnes 4beb8 <rtems_filesystem_eval_path_generic+0x58>
rtems_filesystem_eval_path_get_next_token(ctx, &token, &tokenlen);
if (tokenlen > 0) {
if ((*config->is_directory)(ctx, arg)) {
if (rtems_filesystem_is_current_directory(token, tokenlen)) {
if (rtems_filesystem_eval_path_has_path(ctx)) {
4bef8: 4aaa 0004 tstl %a2@(4)
4befc: 6600 00d6 bnew 4bfd4 <rtems_filesystem_eval_path_generic+0x174>
status = (*config->eval_token)(ctx, arg, ".", 1);
} else {
int eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if ((eval_flags & RTEMS_FS_REJECT_TERMINAL_DOT) == 0) {
4bf00: 202a 0010 movel %a2@(16),%d0
4bf04: 0280 0000 0100 andil #256,%d0
4bf0a: 6700 00c8 beqw 4bfd4 <rtems_filesystem_eval_path_generic+0x174>
status = (*config->eval_token)(ctx, arg, ".", 1);
} else {
rtems_filesystem_eval_path_error(ctx, EINVAL);
4bf0e: 7016 moveq #22,%d0
eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if (
(eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0
|| rtems_filesystem_eval_path_has_path(ctx)
) {
rtems_filesystem_eval_path_error(ctx, ENOENT);
4bf10: 2d4a 0008 movel %a2,%fp@(8)
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
4bf14: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if (
(eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0
|| rtems_filesystem_eval_path_has_path(ctx)
) {
rtems_filesystem_eval_path_error(ctx, ENOENT);
4bf1a: 2d40 000c movel %d0,%fp@(12)
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
4bf1e: 4e5e unlk %fp
eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if (
(eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0
|| rtems_filesystem_eval_path_has_path(ctx)
) {
rtems_filesystem_eval_path_error(ctx, ENOENT);
4bf20: 4ef9 0004 402a jmp 4402a <rtems_filesystem_eval_path_error>
} else {
status = (*config->eval_token)(ctx, arg, token, tokenlen);
}
if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) {
if (rtems_filesystem_eval_path_has_path(ctx)) {
4bf26: 4aaa 0004 tstl %a2@(4)
4bf2a: 6700 ff66 beqw 4be92 <rtems_filesystem_eval_path_generic+0x32>
int eval_flags;
rtems_filesystem_eval_path_eat_delimiter(ctx);
4bf2e: 2f0a movel %a2,%sp@-
4bf30: 4eb9 0004 c058 jsr 4c058 <rtems_filesystem_eval_path_eat_delimiter>
eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if (
(eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0
4bf36: 202a 0010 movel %a2@(16),%d0
if (rtems_filesystem_eval_path_has_path(ctx)) {
int eval_flags;
rtems_filesystem_eval_path_eat_delimiter(ctx);
eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if (
4bf3a: 588f addql #4,%sp
(eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0
4bf3c: 0280 0000 0080 andil #128,%d0
if (rtems_filesystem_eval_path_has_path(ctx)) {
int eval_flags;
rtems_filesystem_eval_path_eat_delimiter(ctx);
eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if (
4bf42: 6708 beqs 4bf4c <rtems_filesystem_eval_path_generic+0xec>
(eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0
|| rtems_filesystem_eval_path_has_path(ctx)
4bf44: 4aaa 0004 tstl %a2@(4)
4bf48: 6700 ff48 beqw 4be92 <rtems_filesystem_eval_path_generic+0x32>
) {
rtems_filesystem_eval_path_error(ctx, ENOENT);
4bf4c: 7002 moveq #2,%d0
4bf4e: 2d4a 0008 movel %a2,%fp@(8)
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
4bf52: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if (
(eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0
|| rtems_filesystem_eval_path_has_path(ctx)
) {
rtems_filesystem_eval_path_error(ctx, ENOENT);
4bf58: 2d40 000c movel %d0,%fp@(12)
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
4bf5c: 4e5e unlk %fp
eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if (
(eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0
|| rtems_filesystem_eval_path_has_path(ctx)
) {
rtems_filesystem_eval_path_error(ctx, ENOENT);
4bf5e: 4ef9 0004 402a jmp 4402a <rtems_filesystem_eval_path_error>
static inline bool rtems_filesystem_is_parent_directory(
const char *token,
size_t tokenlen
)
{
return tokenlen == 2 && token [0] == '.' && token [1] == '.';
4bf64: 722e moveq #46,%d1
4bf66: 1013 moveb %a3@,%d0
4bf68: 49c0 extbl %d0
4bf6a: b280 cmpl %d0,%d1
4bf6c: 6600 ff4a bnew 4beb8 <rtems_filesystem_eval_path_generic+0x58>
4bf70: 102b 0001 moveb %a3@(1),%d0
4bf74: 49c0 extbl %d0
4bf76: b280 cmpl %d0,%d1
4bf78: 6600 ff3e bnew 4beb8 <rtems_filesystem_eval_path_generic+0x58>
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
4bf7c: 226a 0030 moveal %a2@(48),%a1
static bool is_eval_path_root(
const rtems_filesystem_eval_path_context_t *ctx,
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
4bf80: 206a 002c moveal %a2@(44),%a0
const rtems_filesystem_location_info_t *rootloc = &ctx->rootloc->location;
return mt_entry == rootloc->mt_entry
&& (*mt_entry->ops->are_nodes_equal_h)( loc, rootloc );
4bf84: b1e9 0014 cmpal %a1@(20),%a0
4bf88: 6766 beqs 4bff0 <rtems_filesystem_eval_path_generic+0x190>
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
const rtems_filesystem_location_info_t *mt_fs_root =
&mt_entry->mt_fs_root->location;
return (*mt_entry->ops->are_nodes_equal_h)( loc, mt_fs_root );
4bf8a: 2268 000c moveal %a0@(12),%a1
4bf8e: 2f28 0024 movel %a0@(36),%sp@-
4bf92: 2f04 movel %d4,%sp@-
4bf94: 2069 0010 moveal %a1@(16),%a0
4bf98: 4e90 jsr %a0@
rtems_filesystem_eval_path_get_currentloc( ctx );
if (is_eval_path_root(ctx, currentloc)) {
/* This prevents the escape from a chroot() environment */
status = (*config->eval_token)(ctx, arg, ".", 1);
} else if (is_fs_root(currentloc)) {
4bf9a: 508f addql #8,%sp
4bf9c: 4a00 tstb %d0
4bf9e: 677e beqs 4c01e <rtems_filesystem_eval_path_generic+0x1be>
if (currentloc->mt_entry->mt_point_node != NULL) {
4bfa0: 206a 002c moveal %a2@(44),%a0
4bfa4: 4aa8 0020 tstl %a0@(32)
4bfa8: 6700 0090 beqw 4c03a <rtems_filesystem_eval_path_generic+0x1da>
static inline void rtems_filesystem_eval_path_put_back_token(
rtems_filesystem_eval_path_context_t *ctx
)
{
size_t tokenlen = ctx->tokenlen;
4bfac: 202a 000c movel %a2@(12),%d0
ctx->path -= tokenlen;
4bfb0: 9192 subl %d0,%a2@
rtems_filesystem_eval_path_put_back_token(ctx);
rtems_filesystem_eval_path_restart(
4bfb2: 41e8 0020 lea %a0@(32),%a0
4bfb6: 2d48 000c movel %a0,%fp@(12)
ctx->pathlen += tokenlen;
4bfba: d1aa 0004 addl %d0,%a2@(4)
ctx->tokenlen = 0;
4bfbe: 42aa 000c clrl %a2@(12)
4bfc2: 2d4a 0008 movel %a2,%fp@(8)
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
4bfc6: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4bfcc: 4e5e unlk %fp
/* This prevents the escape from a chroot() environment */
status = (*config->eval_token)(ctx, arg, ".", 1);
} else if (is_fs_root(currentloc)) {
if (currentloc->mt_entry->mt_point_node != NULL) {
rtems_filesystem_eval_path_put_back_token(ctx);
rtems_filesystem_eval_path_restart(
4bfce: 4ef9 0004 4540 jmp 44540 <rtems_filesystem_eval_path_restart>
status = (*config->eval_token)(ctx, arg, ".", 1);
} else {
int eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
if ((eval_flags & RTEMS_FS_REJECT_TERMINAL_DOT) == 0) {
status = (*config->eval_token)(ctx, arg, ".", 1);
4bfd4: 4878 0001 pea 1 <ADD>
4bfd8: 4879 0005 d839 pea 5d839 <status_flags_assoc+0x31>
} else {
/* This is the root file system */
status = (*config->eval_token)(ctx, arg, ".", 1);
}
} else {
status = (*config->eval_token)(ctx, arg, "..", 2);
4bfde: 206d 0004 moveal %a5@(4),%a0
4bfe2: 2f03 movel %d3,%sp@-
4bfe4: 2f0a movel %a2,%sp@-
4bfe6: 4e90 jsr %a0@
4bfe8: 4fef 0010 lea %sp@(16),%sp
4bfec: 6000 fedc braw 4beca <rtems_filesystem_eval_path_generic+0x6a>
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
const rtems_filesystem_location_info_t *rootloc = &ctx->rootloc->location;
return mt_entry == rootloc->mt_entry
&& (*mt_entry->ops->are_nodes_equal_h)( loc, rootloc );
4bff0: 2068 000c moveal %a0@(12),%a0
4bff4: 2f09 movel %a1,%sp@-
4bff6: 2f04 movel %d4,%sp@-
4bff8: 2068 0010 moveal %a0@(16),%a0
4bffc: 4e90 jsr %a0@
4bffe: 508f addql #8,%sp
4c000: 4a00 tstb %d0
4c002: 6636 bnes 4c03a <rtems_filesystem_eval_path_generic+0x1da>
4c004: 206a 002c moveal %a2@(44),%a0
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
const rtems_filesystem_location_info_t *mt_fs_root =
&mt_entry->mt_fs_root->location;
return (*mt_entry->ops->are_nodes_equal_h)( loc, mt_fs_root );
4c008: 2268 000c moveal %a0@(12),%a1
4c00c: 2f28 0024 movel %a0@(36),%sp@-
4c010: 2f04 movel %d4,%sp@-
4c012: 2069 0010 moveal %a1@(16),%a0
4c016: 4e90 jsr %a0@
rtems_filesystem_eval_path_get_currentloc( ctx );
if (is_eval_path_root(ctx, currentloc)) {
/* This prevents the escape from a chroot() environment */
status = (*config->eval_token)(ctx, arg, ".", 1);
} else if (is_fs_root(currentloc)) {
4c018: 508f addql #8,%sp
4c01a: 4a00 tstb %d0
4c01c: 6682 bnes 4bfa0 <rtems_filesystem_eval_path_generic+0x140><== NEVER TAKEN
} else {
/* This is the root file system */
status = (*config->eval_token)(ctx, arg, ".", 1);
}
} else {
status = (*config->eval_token)(ctx, arg, "..", 2);
4c01e: 4878 0002 pea 2 <DOUBLE_FLOAT>
4c022: 4879 0005 d838 pea 5d838 <status_flags_assoc+0x30>
4c028: 206d 0004 moveal %a5@(4),%a0
4c02c: 2f03 movel %d3,%sp@-
4c02e: 2f0a movel %a2,%sp@-
4c030: 4e90 jsr %a0@
4c032: 4fef 0010 lea %sp@(16),%sp
4c036: 6000 fe92 braw 4beca <rtems_filesystem_eval_path_generic+0x6a>
rtems_filesystem_location_info_t *currentloc =
rtems_filesystem_eval_path_get_currentloc( ctx );
if (is_eval_path_root(ctx, currentloc)) {
/* This prevents the escape from a chroot() environment */
status = (*config->eval_token)(ctx, arg, ".", 1);
4c03a: 4878 0001 pea 1 <ADD>
4c03e: 4879 0005 d839 pea 5d839 <status_flags_assoc+0x31>
4c044: 202d 0004 movel %a5@(4),%d0
4c048: 2040 moveal %d0,%a0
4c04a: 2f03 movel %d3,%sp@-
4c04c: 2f0a movel %a2,%sp@-
4c04e: 4e90 jsr %a0@
4c050: 4fef 0010 lea %sp@(16),%sp
4c054: 6000 fe74 braw 4beca <rtems_filesystem_eval_path_generic+0x6a>
0004c0ac <rtems_filesystem_eval_path_next_token>:
}
void rtems_filesystem_eval_path_next_token(
rtems_filesystem_eval_path_context_t *ctx
)
{
4c0ac: 4e56 fff4 linkw %fp,#-12
4c0b0: 48d7 040c moveml %d2-%d3/%a2,%sp@
4c0b4: 246e 0008 moveal %fp@(8),%a2
rtems_filesystem_eval_path_eat_delimiter(ctx);
4c0b8: 2f0a movel %a2,%sp@-
4c0ba: 4eb9 0004 c058 jsr 4c058 <rtems_filesystem_eval_path_eat_delimiter>
ctx->pathlen = (size_t) (end - current);
}
static void next_token(rtems_filesystem_eval_path_context_t *ctx)
{
const char *begin = ctx->path;
4c0c0: 2252 moveal %a2@,%a1
const char *end = begin + ctx->pathlen;
4c0c2: 2409 movel %a1,%d2
4c0c4: d4aa 0004 addl %a2@(4),%d2
const char *current = begin;
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
4c0c8: 588f addql #4,%sp
4c0ca: b489 cmpl %a1,%d2
4c0cc: 674e beqs 4c11c <rtems_filesystem_eval_path_next_token+0x70>
4c0ce: 722f moveq #47,%d1
4c0d0: 1011 moveb %a1@,%d0
4c0d2: 49c0 extbl %d0
4c0d4: b280 cmpl %d0,%d1
4c0d6: 6764 beqs 4c13c <rtems_filesystem_eval_path_next_token+0x90><== NEVER TAKEN
4c0d8: 765c moveq #92,%d3
4c0da: b680 cmpl %d0,%d3
4c0dc: 673e beqs 4c11c <rtems_filesystem_eval_path_next_token+0x70><== NEVER TAKEN
ctx->pathlen = (size_t) (end - current);
ctx->token = begin;
ctx->tokenlen = (size_t) (current - begin);
}
void rtems_filesystem_eval_path_next_token(
4c0de: 41e9 0001 lea %a1@(1),%a0
const char *begin = ctx->path;
const char *end = begin + ctx->pathlen;
const char *current = begin;
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
++current;
4c0e2: 2008 movel %a0,%d0
{
const char *begin = ctx->path;
const char *end = begin + ctx->pathlen;
const char *current = begin;
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
4c0e4: b488 cmpl %a0,%d2
4c0e6: 6774 beqs 4c15c <rtems_filesystem_eval_path_next_token+0xb0>
4c0e8: 762f moveq #47,%d3
4c0ea: 1210 moveb %a0@,%d1
4c0ec: 2040 moveal %d0,%a0
4c0ee: 5288 addql #1,%a0
4c0f0: 49c1 extbl %d1
4c0f2: b681 cmpl %d1,%d3
4c0f4: 6706 beqs 4c0fc <rtems_filesystem_eval_path_next_token+0x50>
4c0f6: 765c moveq #92,%d3
4c0f8: b681 cmpl %d1,%d3
4c0fa: 66e6 bnes 4c0e2 <rtems_filesystem_eval_path_next_token+0x36>
4c0fc: 2040 moveal %d0,%a0
4c0fe: 2200 movel %d0,%d1
++current;
}
ctx->path = current;
ctx->pathlen = (size_t) (end - current);
4c100: 9488 subl %a0,%d2
4c102: 9289 subl %a1,%d1
4c104: 2542 0004 movel %d2,%a2@(4)
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
4c108: 2480 movel %d0,%a2@
ctx->pathlen = (size_t) (end - current);
ctx->token = begin;
4c10a: 2549 0008 movel %a1,%a2@(8)
ctx->tokenlen = (size_t) (current - begin);
4c10e: 2541 000c movel %d1,%a2@(12)
rtems_filesystem_eval_path_context_t *ctx
)
{
rtems_filesystem_eval_path_eat_delimiter(ctx);
next_token(ctx);
}
4c112: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
4c118: 4e5e unlk %fp
4c11a: 4e75 rts
4c11c: 2049 moveal %a1,%a0
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
ctx->pathlen = (size_t) (end - current);
4c11e: 9488 subl %a0,%d2
4c120: 2009 movel %a1,%d0
4c122: 4281 clrl %d1
4c124: 2542 0004 movel %d2,%a2@(4)
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
4c128: 2480 movel %d0,%a2@
ctx->pathlen = (size_t) (end - current);
ctx->token = begin;
4c12a: 2549 0008 movel %a1,%a2@(8)
ctx->tokenlen = (size_t) (current - begin);
4c12e: 2541 000c movel %d1,%a2@(12)
rtems_filesystem_eval_path_context_t *ctx
)
{
rtems_filesystem_eval_path_eat_delimiter(ctx);
next_token(ctx);
}
4c132: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
4c138: 4e5e unlk %fp
4c13a: 4e75 rts
4c13c: 2049 moveal %a1,%a0 <== NOT EXECUTED
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
ctx->pathlen = (size_t) (end - current);
4c13e: 9488 subl %a0,%d2 <== NOT EXECUTED
4c140: 2009 movel %a1,%d0 <== NOT EXECUTED
4c142: 4201 clrb %d1 <== NOT EXECUTED
4c144: 2542 0004 movel %d2,%a2@(4) <== NOT EXECUTED
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
4c148: 2480 movel %d0,%a2@ <== NOT EXECUTED
ctx->pathlen = (size_t) (end - current);
ctx->token = begin;
4c14a: 2549 0008 movel %a1,%a2@(8) <== NOT EXECUTED
ctx->tokenlen = (size_t) (current - begin);
4c14e: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
rtems_filesystem_eval_path_context_t *ctx
)
{
rtems_filesystem_eval_path_eat_delimiter(ctx);
next_token(ctx);
}
4c152: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4c158: 4e5e unlk %fp <== NOT EXECUTED
4c15a: 4e75 rts <== NOT EXECUTED
4c15c: 2202 movel %d2,%d1
4c15e: 2042 moveal %d2,%a0
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
ctx->pathlen = (size_t) (end - current);
4c160: 9488 subl %a0,%d2
4c162: 9289 subl %a1,%d1
4c164: 2542 0004 movel %d2,%a2@(4)
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
++current;
}
ctx->path = current;
4c168: 2480 movel %d0,%a2@
ctx->pathlen = (size_t) (end - current);
ctx->token = begin;
4c16a: 2549 0008 movel %a1,%a2@(8)
ctx->tokenlen = (size_t) (current - begin);
4c16e: 2541 000c movel %d1,%a2@(12)
rtems_filesystem_eval_path_context_t *ctx
)
{
rtems_filesystem_eval_path_eat_delimiter(ctx);
next_token(ctx);
}
4c172: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
4c178: 4e5e unlk %fp <== NOT EXECUTED
000445b4 <rtems_filesystem_eval_path_recursive>:
void rtems_filesystem_eval_path_recursive(
rtems_filesystem_eval_path_context_t *ctx,
const char *path,
size_t pathlen
)
{
445b4: 4e56 ffec linkw %fp,#-20
445b8: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
445bc: 246e 0008 moveal %fp@(8),%a2
445c0: 266e 000c moveal %fp@(12),%a3
445c4: 242e 0010 movel %fp@(16),%d2
if (pathlen > 0) {
445c8: 6772 beqs 4463c <rtems_filesystem_eval_path_recursive+0x88><== NEVER TAKEN
if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) {
445ca: 701f moveq #31,%d0
445cc: b0aa 0014 cmpl %a2@(20),%d0
445d0: 6d00 0082 bltw 44654 <rtems_filesystem_eval_path_recursive+0xa0>
const char *saved_path = ctx->path;
445d4: 2612 movel %a2@,%d3
gid_t node_gid
);
static inline bool rtems_filesystem_is_delimiter(char c)
{
return c == '/' || c == '\\';
445d6: 722f moveq #47,%d1
445d8: 1013 moveb %a3@,%d0
size_t saved_pathlen = ctx->pathlen;
445da: 282a 0004 movel %a2@(4),%d4
445de: 49c0 extbl %d0
445e0: b280 cmpl %d0,%d1
445e2: 673e beqs 44622 <rtems_filesystem_eval_path_recursive+0x6e>
445e4: 123c 005c moveb #92,%d1
445e8: b280 cmpl %d0,%d1
445ea: 6736 beqs 44622 <rtems_filesystem_eval_path_recursive+0x6e><== NEVER TAKEN
if (rtems_filesystem_is_delimiter(path [0])) {
rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc);
}
ctx->path = path;
445ec: 248b movel %a3,%a2@
ctx->pathlen = pathlen;
++ctx->recursionlevel;
445ee: 52aa 0014 addql #1,%a2@(20)
if (rtems_filesystem_is_delimiter(path [0])) {
rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc);
}
ctx->path = path;
ctx->pathlen = pathlen;
445f2: 2542 0004 movel %d2,%a2@(4)
++ctx->recursionlevel;
while (ctx->pathlen > 0) {
(*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);
445f6: 206a 002c moveal %a2@(44),%a0
445fa: 2068 000c moveal %a0@(12),%a0
445fe: 2f0a movel %a2,%sp@-
44600: 2068 0008 moveal %a0@(8),%a0
44604: 4e90 jsr %a0@
ctx->path = path;
ctx->pathlen = pathlen;
++ctx->recursionlevel;
while (ctx->pathlen > 0) {
44606: 588f addql #4,%sp
44608: 4aaa 0004 tstl %a2@(4)
4460c: 66e8 bnes 445f6 <rtems_filesystem_eval_path_recursive+0x42>
(*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);
}
--ctx->recursionlevel;
4460e: 53aa 0014 subql #1,%a2@(20)
ctx->path = saved_path;
44612: 2483 movel %d3,%a2@
ctx->pathlen = saved_pathlen;
44614: 2544 0004 movel %d4,%a2@(4)
rtems_filesystem_eval_path_error(ctx, ELOOP);
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
44618: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4461e: 4e5e unlk %fp
44620: 4e75 rts
if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) {
const char *saved_path = ctx->path;
size_t saved_pathlen = ctx->pathlen;
if (rtems_filesystem_is_delimiter(path [0])) {
rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc);
44622: 486a 0030 pea %a2@(48)
44626: 2f0a movel %a2,%sp@-
44628: 4eb9 0004 4540 jsr 44540 <rtems_filesystem_eval_path_restart>
4462e: 508f addql #8,%sp
}
ctx->path = path;
ctx->pathlen = pathlen;
++ctx->recursionlevel;
44630: 52aa 0014 addql #1,%a2@(20)
if (rtems_filesystem_is_delimiter(path [0])) {
rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc);
}
ctx->path = path;
44634: 248b movel %a3,%a2@
ctx->pathlen = pathlen;
44636: 2542 0004 movel %d2,%a2@(4)
4463a: 60ba bras 445f6 <rtems_filesystem_eval_path_recursive+0x42>
ctx->pathlen = saved_pathlen;
} else {
rtems_filesystem_eval_path_error(ctx, ELOOP);
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
4463c: 7202 moveq #2,%d1 <== NOT EXECUTED
4463e: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
44642: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
ctx->pathlen = saved_pathlen;
} else {
rtems_filesystem_eval_path_error(ctx, ELOOP);
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
44648: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
}
}
4464c: 4e5e unlk %fp <== NOT EXECUTED
ctx->pathlen = saved_pathlen;
} else {
rtems_filesystem_eval_path_error(ctx, ELOOP);
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
4464e: 4ef9 0004 402a jmp 4402a <rtems_filesystem_eval_path_error><== NOT EXECUTED
--ctx->recursionlevel;
ctx->path = saved_path;
ctx->pathlen = saved_pathlen;
} else {
rtems_filesystem_eval_path_error(ctx, ELOOP);
44654: 705c moveq #92,%d0
44656: 2d4a 0008 movel %a2,%fp@(8)
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
4465a: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
--ctx->recursionlevel;
ctx->path = saved_path;
ctx->pathlen = saved_pathlen;
} else {
rtems_filesystem_eval_path_error(ctx, ELOOP);
44660: 2d40 000c movel %d0,%fp@(12)
}
} else {
rtems_filesystem_eval_path_error(ctx, ENOENT);
}
}
44664: 4e5e unlk %fp
--ctx->recursionlevel;
ctx->path = saved_path;
ctx->pathlen = saved_pathlen;
} else {
rtems_filesystem_eval_path_error(ctx, ELOOP);
44666: 4ef9 0004 402a jmp 4402a <rtems_filesystem_eval_path_error>
0004bba4 <rtems_filesystem_get_mount_handler>:
rtems_filesystem_fsmount_me_t
rtems_filesystem_get_mount_handler(
const char *type
)
{
4bba4: 4e56 fff8 linkw %fp,#-8
4bba8: 202e 0008 movel %fp@(8),%d0
find_arg fa = {
4bbac: 42ae fffc clrl %fp@(-4)
4bbb0: 2d40 fff8 movel %d0,%fp@(-8)
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4bbb4: 6718 beqs 4bbce <rtems_filesystem_get_mount_handler+0x2a><== NEVER TAKEN
rtems_filesystem_iterate( find_handler, &fa );
4bbb6: 486e fff8 pea %fp@(-8)
4bbba: 487a ff0c pea %pc@(4bac8 <find_handler>)
4bbbe: 4eb9 0004 bb0a jsr 4bb0a <rtems_filesystem_iterate>
4bbc4: 202e fffc movel %fp@(-4),%d0
4bbc8: 508f addql #8,%sp
}
return fa.mount_h;
}
4bbca: 4e5e unlk %fp
4bbcc: 4e75 rts
find_arg fa = {
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4bbce: 4280 clrl %d0 <== NOT EXECUTED
rtems_filesystem_iterate( find_handler, &fa );
}
return fa.mount_h;
}
4bbd0: 4e5e unlk %fp <== NOT EXECUTED
000449c8 <rtems_filesystem_global_location_obtain>:
}
rtems_filesystem_global_location_t *rtems_filesystem_global_location_obtain(
rtems_filesystem_global_location_t *const *global_loc_ptr
)
{
449c8: 4e56 fff0 linkw %fp,#-16
449cc: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
rtems_filesystem_mt_entry_declare_lock_context(lock_context);
rtems_filesystem_global_location_t *global_loc;
if (deferred_released_global_locations != NULL) {
449d0: 4ab9 0005 f0f8 tstl 5f0f8 <deferred_released_global_locations>
449d6: 675c beqs 44a34 <rtems_filesystem_global_location_obtain+0x6c>
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
449d8: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
++level;
449de: 5280 addql #1,%d0
_Thread_Dispatch_disable_level = level;
449e0: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
do {
int count = 0;
_Thread_Disable_dispatch();
current = deferred_released_global_locations;
449e6: 2479 0005 f0f8 moveal 5f0f8 <deferred_released_global_locations>,%a2
449ec: 47f9 0004 9c44 lea 49c44 <_Thread_Enable_dispatch>,%a3
449f2: 49fa febe lea %pc@(448b2 <release_with_count>),%a4
if (current != NULL) {
449f6: 4a8a tstl %a2
449f8: 6738 beqs 44a32 <rtems_filesystem_global_location_obtain+0x6a><== NEVER TAKEN
deferred_released_global_locations = current->deferred_released_next;
449fa: 41ea 001c lea %a2@(28),%a0
449fe: 23d0 0005 f0f8 movel %a0@,5f0f8 <deferred_released_global_locations>
count = current->deferred_released_count;
44a04: 242a 0020 movel %a2@(32),%d2
current->deferred_released_next = NULL;
44a08: 42aa 001c clrl %a2@(28)
current->deferred_released_count = 0;
44a0c: 42aa 0020 clrl %a2@(32)
}
_Thread_Enable_dispatch();
44a10: 4e93 jsr %a3@
if (current != NULL) {
release_with_count(current, count);
44a12: 2f02 movel %d2,%sp@-
44a14: 2f0a movel %a2,%sp@-
44a16: 4e94 jsr %a4@
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
44a18: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
++level;
44a1e: 5280 addql #1,%d0
_Thread_Dispatch_disable_level = level;
44a20: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
do {
int count = 0;
_Thread_Disable_dispatch();
current = deferred_released_global_locations;
44a26: 2479 0005 f0f8 moveal 5f0f8 <deferred_released_global_locations>,%a2
if (current != NULL) {
44a2c: 508f addql #8,%sp
44a2e: 4a8a tstl %a2
44a30: 66c8 bnes 449fa <rtems_filesystem_global_location_obtain+0x32><== NEVER TAKEN
deferred_released_global_locations = current->deferred_released_next;
count = current->deferred_released_count;
current->deferred_released_next = NULL;
current->deferred_released_count = 0;
}
_Thread_Enable_dispatch();
44a32: 4e93 jsr %a3@
if (deferred_released_global_locations != NULL) {
deferred_release();
}
rtems_filesystem_mt_entry_lock(lock_context);
44a34: 203c 0000 0700 movel #1792,%d0
44a3a: 40c2 movew %sr,%d2
44a3c: 8082 orl %d2,%d0
44a3e: 46c0 movew %d0,%sr
global_loc = *global_loc_ptr;
44a40: 206e 0008 moveal %fp@(8),%a0
44a44: 2050 moveal %a0@,%a0
if (global_loc == NULL || !global_loc->location.mt_entry->mounted) {
44a46: 4a88 tstl %a0
44a48: 670a beqs 44a54 <rtems_filesystem_global_location_obtain+0x8c>
44a4a: 2268 0014 moveal %a0@(20),%a1
44a4e: 4a29 0028 tstb %a1@(40)
44a52: 6612 bnes 44a66 <rtems_filesystem_global_location_obtain+0x9e>
global_loc = &rtems_filesystem_global_location_null;
errno = ENXIO;
44a54: 4eb9 0004 e144 jsr 4e144 <__errno>
}
rtems_filesystem_mt_entry_lock(lock_context);
global_loc = *global_loc_ptr;
if (global_loc == NULL || !global_loc->location.mt_entry->mounted) {
global_loc = &rtems_filesystem_global_location_null;
44a5a: 41f9 0005 e2da lea 5e2da <rtems_filesystem_global_location_null>,%a0
errno = ENXIO;
44a60: 2240 moveal %d0,%a1
44a62: 7006 moveq #6,%d0
44a64: 2280 movel %d0,%a1@
}
++global_loc->reference_count;
44a66: 52a8 0018 addql #1,%a0@(24)
rtems_filesystem_mt_entry_unlock(lock_context);
44a6a: 46c2 movew %d2,%sr
return global_loc;
}
44a6c: 2008 movel %a0,%d0
44a6e: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4
44a74: 4e5e unlk %fp <== NOT EXECUTED
00042dc4 <rtems_filesystem_initialize>:
/*
* Default mode for created files.
*/
void rtems_filesystem_initialize( void )
{
42dc4: 4e56 0000 linkw %fp,#0
int rv = 0;
const rtems_filesystem_mount_configuration *root_config =
&rtems_filesystem_root_configuration;
rv = mount(
42dc8: 2f39 0005 c630 movel 5c630 <rtems_filesystem_root_configuration+0x10>,%sp@-
42dce: 2f39 0005 c62c movel 5c62c <rtems_filesystem_root_configuration+0xc>,%sp@-
42dd4: 2f39 0005 c628 movel 5c628 <rtems_filesystem_root_configuration+0x8>,%sp@-
42dda: 2f39 0005 c624 movel 5c624 <rtems_filesystem_root_configuration+0x4>,%sp@-
42de0: 2f39 0005 c620 movel 5c620 <rtems_filesystem_root_configuration>,%sp@-
42de6: 4eb9 0004 3614 jsr 43614 <mount>
root_config->target,
root_config->filesystemtype,
root_config->options,
root_config->data
);
if ( rv != 0 )
42dec: 4fef 0014 lea %sp@(20),%sp
42df0: 4a80 tstl %d0
42df2: 661a bnes 42e0e <rtems_filesystem_initialize+0x4a><== NEVER TAKEN
*
* NOTE: UNIX root is 755 and owned by root/root (0/0). It is actually
* created that way by the IMFS.
*/
rv = mkdir( "/dev", 0777);
42df4: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca>
42df8: 4879 0005 cdaa pea 5cdaa <IMFS_node_control_default+0x14>
42dfe: 4eb9 0004 348c jsr 4348c <mkdir>
if ( rv != 0 )
42e04: 508f addql #8,%sp
42e06: 4a80 tstl %d0
42e08: 6610 bnes 42e1a <rtems_filesystem_initialize+0x56><== NEVER TAKEN
* it will be mounted onto is created. Moreover, if it is going to
* use a device, then it is REALLY unfair to attempt this
* before device drivers are initialized. So we return via a base
* filesystem image and nothing auto-mounted at this point.
*/
}
42e0a: 4e5e unlk %fp
42e0c: 4e75 rts
root_config->filesystemtype,
root_config->options,
root_config->data
);
if ( rv != 0 )
rtems_fatal_error_occurred( 0xABCD0002 );
42e0e: 2f3c abcd 0002 movel #-1412628478,%sp@- <== NOT EXECUTED
42e14: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred> <== NOT EXECUTED
* created that way by the IMFS.
*/
rv = mkdir( "/dev", 0777);
if ( rv != 0 )
rtems_fatal_error_occurred( 0xABCD0003 );
42e1a: 2f3c abcd 0003 movel #-1412628477,%sp@- <== NOT EXECUTED
42e20: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred> <== NOT EXECUTED
...
0004bb0a <rtems_filesystem_iterate>:
bool rtems_filesystem_iterate(
rtems_per_filesystem_routine routine,
void *routine_arg
)
{
4bb0a: 4e56 fff0 linkw %fp,#-16
4bb0e: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
4bb12: 266e 0008 moveal %fp@(8),%a3
const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
rtems_chain_node *node = NULL;
bool stop = false;
while ( table_entry->type && !stop ) {
4bb16: 45f9 0005 c634 lea 5c634 <rtems_filesystem_table>,%a2
bool rtems_filesystem_iterate(
rtems_per_filesystem_routine routine,
void *routine_arg
)
{
4bb1c: 262e 000c movel %fp@(12),%d3
const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
rtems_chain_node *node = NULL;
bool stop = false;
while ( table_entry->type && !stop ) {
4bb20: 4ab9 0005 c634 tstl 5c634 <rtems_filesystem_table>
4bb26: 6724 beqs 4bb4c <rtems_filesystem_iterate+0x42> <== NEVER TAKEN
stop = (*routine)( table_entry, routine_arg );
4bb28: 2f03 movel %d3,%sp@-
4bb2a: 2f0a movel %a2,%sp@-
++table_entry;
4bb2c: 508a addql #8,%a2
const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
rtems_chain_node *node = NULL;
bool stop = false;
while ( table_entry->type && !stop ) {
stop = (*routine)( table_entry, routine_arg );
4bb2e: 4e93 jsr %a3@
{
const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
rtems_chain_node *node = NULL;
bool stop = false;
while ( table_entry->type && !stop ) {
4bb30: 508f addql #8,%sp
stop = (*routine)( table_entry, routine_arg );
4bb32: 1400 moveb %d0,%d2
{
const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
rtems_chain_node *node = NULL;
bool stop = false;
while ( table_entry->type && !stop ) {
4bb34: 4a92 tstl %a2@
4bb36: 6710 beqs 4bb48 <rtems_filesystem_iterate+0x3e>
4bb38: 4a00 tstb %d0
4bb3a: 67ec beqs 4bb28 <rtems_filesystem_iterate+0x1e>
}
rtems_libio_unlock();
}
return stop;
}
4bb3c: 1002 moveb %d2,%d0
4bb3e: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4bb44: 4e5e unlk %fp
4bb46: 4e75 rts
while ( table_entry->type && !stop ) {
stop = (*routine)( table_entry, routine_arg );
++table_entry;
}
if ( !stop ) {
4bb48: 4a00 tstb %d0
4bb4a: 66f0 bnes 4bb3c <rtems_filesystem_iterate+0x32>
*/
#include <rtems/userenv.h>
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4bb4c: 42a7 clrl %sp@-
rtems_libio_lock();
for (
4bb4e: 4202 clrb %d2
4bb50: 42a7 clrl %sp@-
4bb52: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
4bb58: 4eb9 0004 7458 jsr 47458 <rtems_semaphore_obtain>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
4bb5e: 2479 0005 e358 moveal 5e358 <filesystem_chain>,%a2
4bb64: 4fef 000c lea %sp@(12),%sp
4bb68: b5fc 0005 e35c cmpal #385884,%a2
4bb6e: 671a beqs 4bb8a <rtems_filesystem_iterate+0x80>
!rtems_chain_is_tail( &filesystem_chain, node ) && !stop;
node = rtems_chain_next( node )
) {
const filesystem_node *fsn = (filesystem_node *) node;
stop = (*routine)( &fsn->entry, routine_arg );
4bb70: 2f03 movel %d3,%sp@-
4bb72: 486a 0008 pea %a2@(8)
4bb76: 4e93 jsr %a3@
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4bb78: 2452 moveal %a2@,%a2
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4bb7a: 508f addql #8,%sp
!rtems_chain_is_tail( &filesystem_chain, node ) && !stop;
node = rtems_chain_next( node )
) {
const filesystem_node *fsn = (filesystem_node *) node;
stop = (*routine)( &fsn->entry, routine_arg );
4bb7c: 1400 moveb %d0,%d2
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4bb7e: b5fc 0005 e35c cmpal #385884,%a2
4bb84: 6704 beqs 4bb8a <rtems_filesystem_iterate+0x80>
node = rtems_chain_first( &filesystem_chain );
!rtems_chain_is_tail( &filesystem_chain, node ) && !stop;
4bb86: 4a00 tstb %d0
4bb88: 67e6 beqs 4bb70 <rtems_filesystem_iterate+0x66> <== ALWAYS TAKEN
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4bb8a: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
4bb90: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
4bb96: 588f addql #4,%sp
}
rtems_libio_unlock();
}
return stop;
}
4bb98: 1002 moveb %d2,%d0
4bb9a: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4bba0: 4e5e unlk %fp <== NOT EXECUTED
0004b83c <rtems_filesystem_location_clone>:
void rtems_filesystem_location_clone(
rtems_filesystem_location_info_t *clone,
const rtems_filesystem_location_info_t *master
)
{
4b83c: 4e56 0000 linkw %fp,#0
4b840: 2f0a movel %a2,%sp@-
int rv = 0;
clone = rtems_filesystem_location_copy( clone, master );
4b842: 2f2e 000c movel %fp@(12),%sp@-
4b846: 2f2e 0008 movel %fp@(8),%sp@-
4b84a: 4eb9 0004 466c jsr 4466c <rtems_filesystem_location_copy>
4b850: 2440 moveal %d0,%a2
rv = (*clone->mt_entry->ops->clonenod_h)( clone );
4b852: 206a 0014 moveal %a2@(20),%a0
4b856: 2068 000c moveal %a0@(12),%a0
4b85a: 2f00 movel %d0,%sp@-
4b85c: 2068 0028 moveal %a0@(40),%a0
4b860: 4e90 jsr %a0@
if ( rv != 0 ) {
4b862: 4fef 000c lea %sp@(12),%sp
4b866: 4a80 tstl %d0
4b868: 6608 bnes 4b872 <rtems_filesystem_location_clone+0x36>
rtems_filesystem_location_remove_from_mt_entry( clone );
rtems_filesystem_location_initialize_to_null( clone );
}
}
4b86a: 246e fffc moveal %fp@(-4),%a2
4b86e: 4e5e unlk %fp
4b870: 4e75 rts
int rv = 0;
clone = rtems_filesystem_location_copy( clone, master );
rv = (*clone->mt_entry->ops->clonenod_h)( clone );
if ( rv != 0 ) {
rtems_filesystem_location_remove_from_mt_entry( clone );
4b872: 2f0a movel %a2,%sp@-
4b874: 4eb9 0004 47b6 jsr 447b6 <rtems_filesystem_location_remove_from_mt_entry>
static inline rtems_filesystem_location_info_t *
rtems_filesystem_location_initialize_to_null(
rtems_filesystem_location_info_t *loc
)
{
return rtems_filesystem_location_copy(
4b87a: 588f addql #4,%sp
4b87c: 203c 0005 e2da movel #385754,%d0
4b882: 2d4a 0008 movel %a2,%fp@(8)
rtems_filesystem_location_initialize_to_null( clone );
}
}
4b886: 246e fffc moveal %fp@(-4),%a2
4b88a: 2d40 000c movel %d0,%fp@(12)
4b88e: 4e5e unlk %fp
4b890: 4ef9 0004 466c jmp 4466c <rtems_filesystem_location_copy>
...
000447b6 <rtems_filesystem_location_remove_from_mt_entry>:
)
{
rtems_filesystem_mt_entry_declare_lock_context(lock_context);
bool do_unmount;
rtems_filesystem_mt_entry_lock(lock_context);
447b6: 203c 0000 0700 movel #1792,%d0
}
void rtems_filesystem_location_remove_from_mt_entry(
rtems_filesystem_location_info_t *loc
)
{
447bc: 4e56 0000 linkw %fp,#0
447c0: 206e 0008 moveal %fp@(8),%a0
447c4: 2f0b movel %a3,%sp@-
447c6: 2f0a movel %a2,%sp@-
rtems_filesystem_mt_entry_declare_lock_context(lock_context);
bool do_unmount;
rtems_filesystem_mt_entry_lock(lock_context);
447c8: 40c1 movew %sr,%d1
447ca: 8081 orl %d1,%d0
447cc: 46c0 movew %d0,%sr
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
447ce: 2650 moveal %a0@,%a3
previous = the_node->previous;
447d0: 2468 0004 moveal %a0@(4),%a2
rtems_chain_extract_unprotected(&loc->mt_entry_node);
do_unmount = rtems_filesystem_is_ready_for_unmount(loc->mt_entry);
447d4: 2268 0014 moveal %a0@(20),%a1
next->previous = previous;
447d8: 274a 0004 movel %a2,%a3@(4)
previous->next = next;
447dc: 248b movel %a3,%a2@
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
bool ready = !mt_entry->mounted
&& rtems_chain_has_only_one_node( &mt_entry->location_chain )
&& mt_entry->mt_fs_root->reference_count == 1;
447de: 4a29 0028 tstb %a1@(40)
447e2: 660a bnes 447ee <rtems_filesystem_location_remove_from_mt_entry+0x38>
static inline bool rtems_filesystem_is_ready_for_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
bool ready = !mt_entry->mounted
&& rtems_chain_has_only_one_node( &mt_entry->location_chain )
447e4: 2029 001c movel %a1@(28),%d0
447e8: b0a9 0014 cmpl %a1@(20),%d0
447ec: 6722 beqs 44810 <rtems_filesystem_location_remove_from_mt_entry+0x5a>
static inline bool rtems_filesystem_is_ready_for_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
bool ready = !mt_entry->mounted
447ee: 4200 clrb %d0
rtems_filesystem_mt_entry_unlock(lock_context);
447f0: 46c1 movew %d1,%sr
if (do_unmount) {
447f2: 4a00 tstb %d0
447f4: 6608 bnes 447fe <rtems_filesystem_location_remove_from_mt_entry+0x48><== NEVER TAKEN
rtems_filesystem_do_unmount(loc->mt_entry);
}
}
447f6: 245f moveal %sp@+,%a2
447f8: 265f moveal %sp@+,%a3
447fa: 4e5e unlk %fp
447fc: 4e75 rts
447fe: 245f moveal %sp@+,%a2 <== NOT EXECUTED
rtems_chain_extract_unprotected(&loc->mt_entry_node);
do_unmount = rtems_filesystem_is_ready_for_unmount(loc->mt_entry);
rtems_filesystem_mt_entry_unlock(lock_context);
if (do_unmount) {
rtems_filesystem_do_unmount(loc->mt_entry);
44800: 2d68 0014 0008 movel %a0@(20),%fp@(8) <== NOT EXECUTED
}
}
44806: 265f moveal %sp@+,%a3 <== NOT EXECUTED
44808: 4e5e unlk %fp <== NOT EXECUTED
rtems_chain_extract_unprotected(&loc->mt_entry_node);
do_unmount = rtems_filesystem_is_ready_for_unmount(loc->mt_entry);
rtems_filesystem_mt_entry_unlock(lock_context);
if (do_unmount) {
rtems_filesystem_do_unmount(loc->mt_entry);
4480a: 4ef9 0004 4734 jmp 44734 <rtems_filesystem_do_unmount> <== NOT EXECUTED
&& rtems_chain_has_only_one_node( &mt_entry->location_chain )
&& mt_entry->mt_fs_root->reference_count == 1;
44810: 2469 0024 moveal %a1@(36),%a2
44814: 7001 moveq #1,%d0
44816: b0aa 0018 cmpl %a2@(24),%d0
4481a: 66d2 bnes 447ee <rtems_filesystem_location_remove_from_mt_entry+0x38><== ALWAYS TAKEN
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4481c: 45e9 0018 lea %a1@(24),%a2 <== NOT EXECUTED
44820: 234a 0014 movel %a2,%a1@(20) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
44824: 45e9 0014 lea %a1@(20),%a2 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
44828: 42a9 0018 clrl %a1@(24) <== NOT EXECUTED
static inline bool rtems_filesystem_is_ready_for_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
bool ready = !mt_entry->mounted
4482c: 7001 moveq #1,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4482e: 234a 001c movel %a2,%a1@(28) <== NOT EXECUTED
44832: 60bc bras 447f0 <rtems_filesystem_location_remove_from_mt_entry+0x3a><== NOT EXECUTED
00044a78 <rtems_filesystem_location_transform_to_global>:
}
rtems_filesystem_global_location_t *rtems_filesystem_location_transform_to_global(
rtems_filesystem_location_info_t *loc
)
{
44a78: 4e56 fffc linkw %fp,#-4
44a7c: 2f0a movel %a2,%sp@-
44a7e: 2f02 movel %d2,%sp@-
rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
44a80: 4878 0024 pea 24 <OPER2+0x10>
}
rtems_filesystem_global_location_t *rtems_filesystem_location_transform_to_global(
rtems_filesystem_location_info_t *loc
)
{
44a84: 242e 0008 movel %fp@(8),%d2
rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
44a88: 4eb9 0004 33cc jsr 433cc <malloc>
if (global_loc != NULL) {
44a8e: 588f addql #4,%sp
rtems_filesystem_global_location_t *rtems_filesystem_location_transform_to_global(
rtems_filesystem_location_info_t *loc
)
{
rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
44a90: 2440 moveal %d0,%a2
if (global_loc != NULL) {
44a92: 4a80 tstl %d0
44a94: 6732 beqs 44ac8 <rtems_filesystem_location_transform_to_global+0x50><== NEVER TAKEN
global_loc->reference_count = 1;
44a96: 7001 moveq #1,%d0
global_loc->deferred_released_next = NULL;
44a98: 42aa 001c clrl %a2@(28)
)
{
rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
if (global_loc != NULL) {
global_loc->reference_count = 1;
44a9c: 2540 0018 movel %d0,%a2@(24)
global_loc->deferred_released_next = NULL;
global_loc->deferred_released_count = 0;
44aa0: 42aa 0020 clrl %a2@(32)
rtems_filesystem_location_copy(&global_loc->location, loc);
44aa4: 2f02 movel %d2,%sp@-
44aa6: 2f0a movel %a2,%sp@-
44aa8: 4eb9 0004 466c jsr 4466c <rtems_filesystem_location_copy>
rtems_filesystem_location_remove_from_mt_entry(loc);
44aae: 2f02 movel %d2,%sp@-
44ab0: 4eb9 0004 47b6 jsr 447b6 <rtems_filesystem_location_remove_from_mt_entry>
global_loc = rtems_filesystem_global_location_obtain_null();
errno = ENOMEM;
}
return global_loc;
}
44ab6: 242e fff4 movel %fp@(-12),%d2
44aba: 200a movel %a2,%d0
if (global_loc != NULL) {
global_loc->reference_count = 1;
global_loc->deferred_released_next = NULL;
global_loc->deferred_released_count = 0;
rtems_filesystem_location_copy(&global_loc->location, loc);
rtems_filesystem_location_remove_from_mt_entry(loc);
44abc: 4fef 000c lea %sp@(12),%sp
global_loc = rtems_filesystem_global_location_obtain_null();
errno = ENOMEM;
}
return global_loc;
}
44ac0: 246e fff8 moveal %fp@(-8),%a2
44ac4: 4e5e unlk %fp
44ac6: 4e75 rts
global_loc->deferred_released_next = NULL;
global_loc->deferred_released_count = 0;
rtems_filesystem_location_copy(&global_loc->location, loc);
rtems_filesystem_location_remove_from_mt_entry(loc);
} else {
rtems_filesystem_location_free(loc);
44ac8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44aca: 4eb9 0004 b898 jsr 4b898 <rtems_filesystem_location_free> <== NOT EXECUTED
);
static inline rtems_filesystem_global_location_t *
rtems_filesystem_global_location_obtain_null(void)
{
rtems_filesystem_global_location_t *global_loc = NULL;
44ad0: 204e moveal %fp,%a0 <== NOT EXECUTED
44ad2: 42a0 clrl %a0@- <== NOT EXECUTED
return rtems_filesystem_global_location_obtain( &global_loc );
44ad4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
44ad6: 4eb9 0004 49c8 jsr 449c8 <rtems_filesystem_global_location_obtain><== NOT EXECUTED
44adc: 2440 moveal %d0,%a2 <== NOT EXECUTED
global_loc = rtems_filesystem_global_location_obtain_null();
errno = ENOMEM;
44ade: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
}
return global_loc;
}
44ae4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
rtems_filesystem_location_copy(&global_loc->location, loc);
rtems_filesystem_location_remove_from_mt_entry(loc);
} else {
rtems_filesystem_location_free(loc);
global_loc = rtems_filesystem_global_location_obtain_null();
errno = ENOMEM;
44ae8: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
return global_loc;
}
44aea: 200a movel %a2,%d0 <== NOT EXECUTED
rtems_filesystem_location_copy(&global_loc->location, loc);
rtems_filesystem_location_remove_from_mt_entry(loc);
} else {
rtems_filesystem_location_free(loc);
global_loc = rtems_filesystem_global_location_obtain_null();
errno = ENOMEM;
44aec: 720c moveq #12,%d1 <== NOT EXECUTED
44aee: 508f addql #8,%sp <== NOT EXECUTED
}
return global_loc;
}
44af0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
44af4: 4e5e unlk %fp <== NOT EXECUTED
rtems_filesystem_location_copy(&global_loc->location, loc);
rtems_filesystem_location_remove_from_mt_entry(loc);
} else {
rtems_filesystem_location_free(loc);
global_loc = rtems_filesystem_global_location_obtain_null();
errno = ENOMEM;
44af6: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
return global_loc;
}
...
000434ac <rtems_filesystem_mknod>:
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
434ac: 4e56 ffec linkw %fp,#-20
int rv = 0;
mode &= ~rtems_filesystem_umask;
434b0: 2079 0005 e2ac moveal 5e2ac <rtems_current_user_env>,%a0
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
434b6: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
int rv = 0;
mode &= ~rtems_filesystem_umask;
434ba: 2628 0008 movel %a0@(8),%d3
434be: 4683 notl %d3
434c0: c6ae 0014 andl %fp@(20),%d3
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
434c4: 206e 0008 moveal %fp@(8),%a0
int rv = 0;
mode &= ~rtems_filesystem_umask;
switch (mode & S_IFMT) {
434c8: 2403 movel %d3,%d2
434ca: 0282 0000 f000 andil #61440,%d2
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
434d0: 226e 000c moveal %fp@(12),%a1
434d4: 282e 0010 movel %fp@(16),%d4
434d8: 202e 0018 movel %fp@(24),%d0
434dc: 222e 001c movel %fp@(28),%d1
int rv = 0;
mode &= ~rtems_filesystem_umask;
switch (mode & S_IFMT) {
434e0: 0c82 0000 4000 cmpil #16384,%d2
434e6: 673a beqs 43522 <rtems_filesystem_mknod+0x76>
434e8: 6328 blss 43512 <rtems_filesystem_mknod+0x66>
434ea: 0c82 0000 6000 cmpil #24576,%d2
434f0: 6730 beqs 43522 <rtems_filesystem_mknod+0x76>
434f2: 0c82 0000 8000 cmpil #32768,%d2
434f8: 6728 beqs 43522 <rtems_filesystem_mknod+0x76> <== ALWAYS TAKEN
case S_IFDIR:
case S_IFIFO:
case S_IFREG:
break;
default:
errno = EINVAL;
434fa: 4eb9 0004 e144 jsr 4e144 <__errno>
43500: 2040 moveal %d0,%a0
43502: 7016 moveq #22,%d0
rv = (*ops->mknod_h)( parentloc, name, namelen, mode, dev );
}
return rv;
}
43504: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
case S_IFDIR:
case S_IFIFO:
case S_IFREG:
break;
default:
errno = EINVAL;
4350a: 2080 movel %d0,%a0@
rv = (*ops->mknod_h)( parentloc, name, namelen, mode, dev );
}
return rv;
}
4350c: 70ff moveq #-1,%d0
4350e: 4e5e unlk %fp
43510: 4e75 rts
{
int rv = 0;
mode &= ~rtems_filesystem_umask;
switch (mode & S_IFMT) {
43512: 0c82 0000 1000 cmpil #4096,%d2
43518: 6708 beqs 43522 <rtems_filesystem_mknod+0x76>
4351a: 0c82 0000 2000 cmpil #8192,%d2
43520: 66d8 bnes 434fa <rtems_filesystem_mknod+0x4e>
}
if ( rv == 0 ) {
const rtems_filesystem_operations_table *ops = parentloc->mt_entry->ops;
rv = (*ops->mknod_h)( parentloc, name, namelen, mode, dev );
43522: 2668 0014 moveal %a0@(20),%a3
43526: 246b 000c moveal %a3@(12),%a2
4352a: 2d40 0018 movel %d0,%fp@(24)
4352e: 2d41 001c movel %d1,%fp@(28)
43532: 2d43 0014 movel %d3,%fp@(20)
43536: 2d44 0010 movel %d4,%fp@(16)
4353a: 2d49 000c movel %a1,%fp@(12)
4353e: 2d48 0008 movel %a0,%fp@(8)
43542: 226a 0018 moveal %a2@(24),%a1
}
return rv;
}
43546: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4354c: 4e5e unlk %fp
}
if ( rv == 0 ) {
const rtems_filesystem_operations_table *ops = parentloc->mt_entry->ops;
rv = (*ops->mknod_h)( parentloc, name, namelen, mode, dev );
4354e: 4ed1 jmp %a1@
0004bcb2 <rtems_filesystem_unregister>:
int
rtems_filesystem_unregister(
const char *type
)
{
4bcb2: 4e56 fff4 linkw %fp,#-12
4bcb6: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4bcba: 242e 0008 movel %fp@(8),%d2
rtems_chain_node *node = NULL;
if ( type == NULL ) {
4bcbe: 6700 0094 beqw 4bd54 <rtems_filesystem_unregister+0xa2>
*/
#include <rtems/userenv.h>
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4bcc2: 42a7 clrl %sp@-
4bcc4: 42a7 clrl %sp@-
4bcc6: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
4bccc: 4eb9 0004 7458 jsr 47458 <rtems_semaphore_obtain>
4bcd2: 2479 0005 e358 moveal 5e358 <filesystem_chain>,%a2
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
4bcd8: 4fef 000c lea %sp@(12),%sp
4bcdc: b5fc 0005 e35c cmpal #385884,%a2
4bce2: 671e beqs 4bd02 <rtems_filesystem_unregister+0x50>
4bce4: 47f9 0004 eef0 lea 4eef0 <strcmp>,%a3
!rtems_chain_is_tail( &filesystem_chain, node );
node = rtems_chain_next( node )
) {
filesystem_node *fsn = (filesystem_node *) node;
if ( strcmp( fsn->entry.type, type ) == 0 ) {
4bcea: 2f02 movel %d2,%sp@-
4bcec: 2f2a 0008 movel %a2@(8),%sp@-
4bcf0: 4e93 jsr %a3@
4bcf2: 508f addql #8,%sp
4bcf4: 4a80 tstl %d0
4bcf6: 6730 beqs 4bd28 <rtems_filesystem_unregister+0x76>
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4bcf8: 2452 moveal %a2@,%a2
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
4bcfa: b5fc 0005 e35c cmpal #385884,%a2
4bd00: 66e8 bnes 4bcea <rtems_filesystem_unregister+0x38><== NEVER TAKEN
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4bd02: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
4bd08: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return 0;
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
4bd0e: 4eb9 0004 e144 jsr 4e144 <__errno>
4bd14: 588f addql #4,%sp
4bd16: 7202 moveq #2,%d1
4bd18: 2040 moveal %d0,%a0
4bd1a: 70ff moveq #-1,%d0
}
4bd1c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
return 0;
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
4bd22: 2081 movel %d1,%a0@
}
4bd24: 4e5e unlk %fp
4bd26: 4e75 rts
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4bd28: 2f0a movel %a2,%sp@-
4bd2a: 4eb9 0004 c584 jsr 4c584 <_Chain_Extract>
) {
filesystem_node *fsn = (filesystem_node *) node;
if ( strcmp( fsn->entry.type, type ) == 0 ) {
rtems_chain_extract( node );
free( fsn );
4bd30: 2f0a movel %a2,%sp@-
4bd32: 4eb9 0004 30cc jsr 430cc <free>
4bd38: 2f39 0005 f8fc movel 5f8fc <rtems_libio_semaphore>,%sp@-
4bd3e: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
4bd44: 4fef 000c lea %sp@(12),%sp
rtems_libio_unlock();
return 0;
4bd48: 4280 clrl %d0
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4bd4a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4bd50: 4e5e unlk %fp
4bd52: 4e75 rts
)
{
rtems_chain_node *node = NULL;
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
4bd54: 4eb9 0004 e144 jsr 4e144 <__errno>
4bd5a: 7416 moveq #22,%d2
4bd5c: 2040 moveal %d0,%a0
4bd5e: 70ff moveq #-1,%d0
4bd60: 2082 movel %d2,%a0@
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4bd62: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4bd68: 4e5e unlk %fp <== NOT EXECUTED
00043a08 <rtems_gxx_key_create>:
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
{
43a08: 4e56 0000 linkw %fp,#0
43a0c: 2f0a movel %a2,%sp@-
43a0e: 2f02 movel %d2,%sp@-
* pointer to the buffer that will hold the value of the key itself.
* We have to to this, because the others functions on this interface
* deal with the value of the key, as used with the POSIX API.
*/
/* Do not pull your hair, trust me this works. :-) */
__gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
43a10: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
}
return 0;
}
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
{
43a14: 242e 000c movel %fp@(12),%d2
* pointer to the buffer that will hold the value of the key itself.
* We have to to this, because the others functions on this interface
* deal with the value of the key, as used with the POSIX API.
*/
/* Do not pull your hair, trust me this works. :-) */
__gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
43a18: 4eb9 0004 3de4 jsr 43de4 <malloc>
*key = new_key;
43a1e: 206e 0008 moveal %fp@(8),%a0
* pointer to the buffer that will hold the value of the key itself.
* We have to to this, because the others functions on this interface
* deal with the value of the key, as used with the POSIX API.
*/
/* Do not pull your hair, trust me this works. :-) */
__gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
43a22: 2440 moveal %d0,%a2
"gxx_wrappers: create key=%x, dtor=%x, new_key=%x\n", key, dtor, new_key
);
#endif
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
43a24: 2f02 movel %d2,%sp@-
43a26: 2f00 movel %d0,%sp@-
* We have to to this, because the others functions on this interface
* deal with the value of the key, as used with the POSIX API.
*/
/* Do not pull your hair, trust me this works. :-) */
__gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
*key = new_key;
43a28: 2080 movel %d0,%a0@
"gxx_wrappers: create key=%x, dtor=%x, new_key=%x\n", key, dtor, new_key
);
#endif
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
43a2a: 42a7 clrl %sp@-
* deal with the value of the key, as used with the POSIX API.
*/
/* Do not pull your hair, trust me this works. :-) */
__gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
*key = new_key;
new_key->val = NULL;
43a2c: 4292 clrl %a2@
new_key->dtor = dtor;
43a2e: 2542 0004 movel %d2,%a2@(4)
"gxx_wrappers: create key=%x, dtor=%x, new_key=%x\n", key, dtor, new_key
);
#endif
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
43a32: 4eb9 0004 8588 jsr 48588 <rtems_task_variable_add>
if ( status == RTEMS_SUCCESSFUL )
43a38: 4fef 0010 lea %sp@(16),%sp
return 0;
43a3c: 4281 clrl %d1
);
#endif
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
if ( status == RTEMS_SUCCESSFUL )
43a3e: 4a80 tstl %d0
43a40: 660e bnes 43a50 <rtems_gxx_key_create+0x48> <== NEVER TAKEN
return 0;
free( new_key );
return -1;
}
43a42: 242e fff8 movel %fp@(-8),%d2
43a46: 2001 movel %d1,%d0
43a48: 246e fffc moveal %fp@(-4),%a2
43a4c: 4e5e unlk %fp
43a4e: 4e75 rts
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
if ( status == RTEMS_SUCCESSFUL )
return 0;
free( new_key );
43a50: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43a52: 4eb9 0004 3844 jsr 43844 <free> <== NOT EXECUTED
return -1;
}
43a58: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
if ( status == RTEMS_SUCCESSFUL )
return 0;
free( new_key );
return -1;
43a5c: 588f addql #4,%sp <== NOT EXECUTED
43a5e: 72ff moveq #-1,%d1 <== NOT EXECUTED
}
43a60: 2001 movel %d1,%d0 <== NOT EXECUTED
43a62: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
43a66: 4e5e unlk %fp <== NOT EXECUTED
00043a7a <rtems_gxx_key_delete>:
int rtems_gxx_key_delete (__gthread_key_t key)
{
43a7a: 4e56 0000 linkw %fp,#0
43a7e: 2f0a movel %a2,%sp@-
43a80: 246e 0008 moveal %fp@(8),%a2
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: delete key=%x\n", key );
#endif
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_delete( RTEMS_SELF, (void **)key );
43a84: 2f0a movel %a2,%sp@-
43a86: 42a7 clrl %sp@-
43a88: 4eb9 0004 8650 jsr 48650 <rtems_task_variable_delete>
if ( status == RTEMS_SUCCESSFUL ) {
43a8e: 508f addql #8,%sp
43a90: 4a80 tstl %d0
43a92: 660e bnes 43aa2 <rtems_gxx_key_delete+0x28> <== NEVER TAKEN
/* Hmm - hopefully all tasks using this key have gone away... */
if ( key ) free( *(void **)key );
43a94: 4a8a tstl %a2
43a96: 670a beqs 43aa2 <rtems_gxx_key_delete+0x28> <== NEVER TAKEN
43a98: 2f12 movel %a2@,%sp@-
43a9a: 4eb9 0004 3844 jsr 43844 <free>
43aa0: 588f addql #4,%sp
return 0;
}
key = NULL;
return 0;
}
43aa2: 246e fffc moveal %fp@(-4),%a2
43aa6: 4280 clrl %d0
43aa8: 4e5e unlk %fp <== NOT EXECUTED
0004398c <rtems_gxx_once>:
/* uncomment this if you need to debug this interface */
/*#define DEBUG_GXX_WRAPPERS 1*/
int rtems_gxx_once(__gthread_once_t *once, void (*func) (void))
{
4398c: 4e56 fff0 linkw %fp,#-16
43990: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
43994: 246e 0008 moveal %fp@(8),%a2
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: once=%x, func=%x\n", *once, func );
#endif
if ( *(volatile __gthread_once_t *)once == 0 ) {
43998: 2012 movel %a2@,%d0
4399a: 670c beqs 439a8 <rtems_gxx_once+0x1c>
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
if ( o == 0 )
(*func)();
}
return 0;
}
4399c: 4280 clrl %d0
4399e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
439a4: 4e5e unlk %fp
439a6: 4e75 rts
if ( *(volatile __gthread_once_t *)once == 0 ) {
rtems_mode saveMode;
__gthread_once_t o;
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
439a8: 240e movel %fp,%d2
439aa: 5982 subql #4,%d2
439ac: 47f9 0004 8358 lea 48358 <rtems_task_mode>,%a3
439b2: 2f02 movel %d2,%sp@-
439b4: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
439b8: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
439bc: 4e93 jsr %a3@
if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {
439be: 2012 movel %a2@,%d0
439c0: 4fef 000c lea %sp@(12),%sp
439c4: 6626 bnes 439ec <rtems_gxx_once+0x60> <== NEVER TAKEN
*(volatile __gthread_once_t *)once = 1;
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
439c6: 2f02 movel %d2,%sp@-
439c8: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
rtems_mode saveMode;
__gthread_once_t o;
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {
*(volatile __gthread_once_t *)once = 1;
439cc: 7001 moveq #1,%d0
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
439ce: 2f2e fffc movel %fp@(-4),%sp@-
rtems_mode saveMode;
__gthread_once_t o;
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {
*(volatile __gthread_once_t *)once = 1;
439d2: 2480 movel %d0,%a2@
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
439d4: 4e93 jsr %a3@
if ( o == 0 )
(*func)();
439d6: 206e 000c moveal %fp@(12),%a0
439da: 4e90 jsr %a0@
439dc: 4fef 000c lea %sp@(12),%sp
}
return 0;
}
439e0: 4280 clrl %d0
439e2: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
439e8: 4e5e unlk %fp
439ea: 4e75 rts
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {
*(volatile __gthread_once_t *)once = 1;
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
439ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
439ee: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
439f2: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
439f6: 4e93 jsr %a3@ <== NOT EXECUTED
439f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( o == 0 )
(*func)();
}
return 0;
}
439fc: 4280 clrl %d0 <== NOT EXECUTED
439fe: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
43a04: 4e5e unlk %fp <== NOT EXECUTED
00043c1e <rtems_gxx_recursive_mutex_unlock>:
}
int rtems_gxx_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex)
{
43c1e: 4e56 0000 linkw %fp,#0
return rtems_gxx_mutex_unlock(mutex);
}
43c22: 4e5e unlk %fp
return rtems_gxx_mutex_trylock(mutex);
}
int rtems_gxx_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex)
{
return rtems_gxx_mutex_unlock(mutex);
43c24: 4ef9 0004 3bde jmp 43bde <rtems_gxx_mutex_unlock>
...
00043b0c <rtems_gxx_setspecific>:
#endif
return p;
}
int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr)
{
43b0c: 4e56 0000 linkw %fp,#0
43b10: 2f0a movel %a2,%sp@-
43b12: 246e 0008 moveal %fp@(8),%a2
rtems_task_self()
);
#endif
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_add( RTEMS_SELF, (void **)key, key->dtor );
43b16: 2f2a 0004 movel %a2@(4),%sp@-
43b1a: 2f0a movel %a2,%sp@-
43b1c: 42a7 clrl %sp@-
43b1e: 4eb9 0004 8588 jsr 48588 <rtems_task_variable_add>
if ( status == RTEMS_SUCCESSFUL ) {
43b24: 4fef 000c lea %sp@(12),%sp
43b28: 4a80 tstl %d0
43b2a: 660c bnes 43b38 <rtems_gxx_setspecific+0x2c> <== NEVER TAKEN
/* now let's set the proper value */
key->val = (void *)ptr;
43b2c: 24ae 000c movel %fp@(12),%a2@
return 0;
}
return -1;
}
43b30: 246e fffc moveal %fp@(-4),%a2
43b34: 4e5e unlk %fp
43b36: 4e75 rts
43b38: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
/* now let's set the proper value */
key->val = (void *)ptr;
return 0;
}
return -1;
43b3c: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
43b3e: 4e5e unlk %fp <== NOT EXECUTED
00047fe8 <rtems_heap_allocate_aligned_with_boundary>:
size_t size,
uintptr_t alignment,
uintptr_t boundary
)
{
if (
47fe8: 7003 moveq #3,%d0
void *rtems_heap_allocate_aligned_with_boundary(
size_t size,
uintptr_t alignment,
uintptr_t boundary
)
{
47fea: 4e56 0000 linkw %fp,#0
if (
47fee: b0b9 0006 6138 cmpl 66138 <_System_state_Current>,%d0
47ff4: 6726 beqs 4801c <rtems_heap_allocate_aligned_with_boundary+0x34>
&& !malloc_is_system_state_OK()
) {
return NULL;
}
malloc_deferred_frees_process();
47ff6: 4eb9 0004 6f58 jsr 46f58 <malloc_deferred_frees_process>
/* FIXME: Statistics, boundary checks */
return _Protected_heap_Allocate_aligned_with_boundary(
47ffc: 2f2e 0010 movel %fp@(16),%sp@-
48000: 2f2e 000c movel %fp@(12),%sp@-
48004: 2f2e 0008 movel %fp@(8),%sp@-
48008: 2f39 0006 3f10 movel 63f10 <RTEMS_Malloc_Heap>,%sp@-
4800e: 4eb9 0004 e0b8 jsr 4e0b8 <_Protected_heap_Allocate_aligned_with_boundary>
48014: 4fef 0010 lea %sp@(16),%sp
RTEMS_Malloc_Heap,
size,
alignment,
boundary
);
}
48018: 4e5e unlk %fp
4801a: 4e75 rts
uintptr_t boundary
)
{
if (
_System_state_Is_up( _System_state_Get() )
&& !malloc_is_system_state_OK()
4801c: 4eb9 0004 6f38 jsr 46f38 <malloc_is_system_state_OK>
48022: 4a00 tstb %d0
48024: 66d0 bnes 47ff6 <rtems_heap_allocate_aligned_with_boundary+0xe><== NEVER TAKEN
) {
return NULL;
48026: 4280 clrl %d0
RTEMS_Malloc_Heap,
size,
alignment,
boundary
);
}
48028: 4e5e unlk %fp <== NOT EXECUTED
00043f08 <rtems_heap_extend_via_sbrk>:
void *rtems_heap_extend_via_sbrk(
Heap_Control *heap,
size_t alloc_size
)
{
43f08: 4e56 fff0 linkw %fp,#-16
ptrdiff_t sbrk_amount = RTEMS_Malloc_Sbrk_amount;
43f0c: 2039 0005 fbbc movel 5fbbc <RTEMS_Malloc_Sbrk_amount>,%d0
void *rtems_heap_extend_via_sbrk(
Heap_Control *heap,
size_t alloc_size
)
{
43f12: 48d7 041c moveml %d2-%d4/%a2,%sp@
43f16: 242e 000c movel %fp@(12),%d2
ptrdiff_t sbrk_amount = RTEMS_Malloc_Sbrk_amount;
ptrdiff_t sbrk_size = (ptrdiff_t) alloc_size;
ptrdiff_t misaligned = sbrk_size % sbrk_amount;
43f1a: 2802 movel %d2,%d4
Heap_Control *heap,
size_t alloc_size
)
{
ptrdiff_t sbrk_amount = RTEMS_Malloc_Sbrk_amount;
ptrdiff_t sbrk_size = (ptrdiff_t) alloc_size;
43f1c: 2602 movel %d2,%d3
ptrdiff_t misaligned = sbrk_size % sbrk_amount;
43f1e: 4c40 4801 remsl %d0,%d1,%d4
void *rtems_heap_extend_via_sbrk(
Heap_Control *heap,
size_t alloc_size
)
{
43f22: 282e 0008 movel %fp@(8),%d4
ptrdiff_t sbrk_amount = RTEMS_Malloc_Sbrk_amount;
ptrdiff_t sbrk_size = (ptrdiff_t) alloc_size;
ptrdiff_t misaligned = sbrk_size % sbrk_amount;
void *return_this = NULL;
if ( misaligned != 0 ) {
43f26: 4a81 tstl %d1
43f28: 6706 beqs 43f30 <rtems_heap_extend_via_sbrk+0x28>
sbrk_size += sbrk_amount - misaligned;
43f2a: 2600 movel %d0,%d3
43f2c: 9681 subl %d1,%d3
43f2e: d682 addl %d2,%d3
}
if ( sbrk_size > 0 && sbrk_amount > 0 ) {
43f30: 4a83 tstl %d3
43f32: 6f54 bles 43f88 <rtems_heap_extend_via_sbrk+0x80><== NEVER TAKEN
43f34: 4a80 tstl %d0
43f36: 6f50 bles 43f88 <rtems_heap_extend_via_sbrk+0x80><== NEVER TAKEN
void *area_begin = sbrk( sbrk_size );
43f38: 2f03 movel %d3,%sp@-
43f3a: 45f9 0004 080c lea 4080c <sbrk>,%a2
43f40: 4e92 jsr %a2@
if ( area_begin != (void *) -1 ) {
43f42: 588f addql #4,%sp
43f44: 72ff moveq #-1,%d1
43f46: b280 cmpl %d0,%d1
43f48: 673e beqs 43f88 <rtems_heap_extend_via_sbrk+0x80>
bool ok = _Protected_heap_Extend( heap, area_begin, sbrk_size );
43f4a: 2f03 movel %d3,%sp@-
43f4c: 2f00 movel %d0,%sp@-
43f4e: 2f04 movel %d4,%sp@-
43f50: 4eb9 0004 9110 jsr 49110 <_Protected_heap_Extend>
if ( ok ) {
43f56: 4fef 000c lea %sp@(12),%sp
43f5a: 4a00 tstb %d0
43f5c: 6722 beqs 43f80 <rtems_heap_extend_via_sbrk+0x78>
43f5e: 42a7 clrl %sp@-
MSBUMP( space_available, sbrk_size );
43f60: d7b9 0005 fb90 addl %d3,5fb90 <rtems_malloc_statistics>
43f66: 42a7 clrl %sp@-
43f68: 2f02 movel %d2,%sp@-
43f6a: 2f04 movel %d4,%sp@-
43f6c: 4eb9 0004 90d0 jsr 490d0 <_Protected_heap_Allocate_aligned_with_boundary>
43f72: 4fef 0010 lea %sp@(16),%sp
}
}
}
return return_this;
}
43f76: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
43f7c: 4e5e unlk %fp
43f7e: 4e75 rts
if ( ok ) {
MSBUMP( space_available, sbrk_size );
return_this = _Protected_heap_Allocate( heap, alloc_size );
} else {
sbrk( -sbrk_size );
43f80: 4483 negl %d3
43f82: 2f03 movel %d3,%sp@-
43f84: 4e92 jsr %a2@
43f86: 588f addql #4,%sp
)
{
ptrdiff_t sbrk_amount = RTEMS_Malloc_Sbrk_amount;
ptrdiff_t sbrk_size = (ptrdiff_t) alloc_size;
ptrdiff_t misaligned = sbrk_size % sbrk_amount;
void *return_this = NULL;
43f88: 4280 clrl %d0
}
}
}
return return_this;
}
43f8a: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
43f90: 4e5e unlk %fp <== NOT EXECUTED
00046314 <rtems_heap_greedy_free>:
void rtems_heap_greedy_free( void *opaque )
{
46314: 4e56 0000 linkw %fp,#0
46318: 2f02 movel %d2,%sp@-
_RTEMS_Lock_allocator();
4631a: 2f39 0006 4b2e movel 64b2e <_RTEMS_Allocator_Mutex>,%sp@-
return opaque;
}
void rtems_heap_greedy_free( void *opaque )
{
46320: 242e 0008 movel %fp@(8),%d2
_RTEMS_Lock_allocator();
46324: 4eb9 0004 a3a0 jsr 4a3a0 <_API_Mutex_Lock>
_Heap_Greedy_free( RTEMS_Malloc_Heap, opaque );
4632a: 2f02 movel %d2,%sp@-
4632c: 2f39 0006 2df4 movel 62df4 <RTEMS_Malloc_Heap>,%sp@-
46332: 4eb9 0004 ab38 jsr 4ab38 <_Heap_Greedy_free>
_RTEMS_Unlock_allocator();
}
46338: 242e fffc movel %fp@(-4),%d2
void rtems_heap_greedy_free( void *opaque )
{
_RTEMS_Lock_allocator();
_Heap_Greedy_free( RTEMS_Malloc_Heap, opaque );
_RTEMS_Unlock_allocator();
4633c: 41f9 0006 4b2e lea 64b2e <_RTEMS_Allocator_Mutex>,%a0
46342: 4fef 000c lea %sp@(12),%sp
46346: 2d50 0008 movel %a0@,%fp@(8)
}
4634a: 4e5e unlk %fp
void rtems_heap_greedy_free( void *opaque )
{
_RTEMS_Lock_allocator();
_Heap_Greedy_free( RTEMS_Malloc_Heap, opaque );
_RTEMS_Unlock_allocator();
4634c: 4ef9 0004 a400 jmp 4a400 <_API_Mutex_Unlock>
...
00043f64 <rtems_heap_null_extend>:
Heap_Control *heap __attribute__((unused)),
size_t alloc_size __attribute__((unused))
)
{
return NULL;
}
43f64: 4280 clrl %d0
void *rtems_heap_null_extend(
Heap_Control *heap __attribute__((unused)),
size_t alloc_size __attribute__((unused))
)
{
43f66: 4e56 0000 linkw %fp,#0
return NULL;
}
43f6a: 4e5e unlk %fp
...
000447ae <rtems_ide_part_table_free>:
* RETURNS:
* N/A
*/
void
rtems_ide_part_table_free(rtems_disk_desc_t *disk_desc)
{
447ae: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
partition_table_free( disk_desc );
}
447b2: 4e5e unlk %fp <== NOT EXECUTED
* N/A
*/
void
rtems_ide_part_table_free(rtems_disk_desc_t *disk_desc)
{
partition_table_free( disk_desc );
447b4: 6000 face braw 44284 <partition_table_free> <== NOT EXECUTED
000447b8 <rtems_ide_part_table_get>:
* RTEMS_SUCCESSFUL if success,
* RTEMS_INTERNAL_ERROR otherwise
*/
rtems_status_code
rtems_ide_part_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc)
{
447b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return partition_table_get( dev_name, disk_desc );
}
447bc: 4e5e unlk %fp <== NOT EXECUTED
* RTEMS_INTERNAL_ERROR otherwise
*/
rtems_status_code
rtems_ide_part_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc)
{
return partition_table_get( dev_name, disk_desc );
447be: 6000 fdd6 braw 44596 <partition_table_get> <== NOT EXECUTED
000447c2 <rtems_ide_part_table_initialize>:
* RTEMS_NO_MEMOTY if cannot have not enough memory,
* RTEMS_INTERNAL_ERROR if other error occurs.
*/
rtems_status_code
rtems_ide_part_table_initialize(const char *dev_name)
{
447c2: 4e56 ffc4 linkw %fp,#-60
447c6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
rtems_part_desc_t *part_desc;
/* logical device name /dev/hdxyy */
char name[RTEMS_IDE_PARTITION_DEV_NAME_LENGTH_MAX];
disk_desc = (rtems_disk_desc_t *) calloc(1, sizeof(rtems_disk_desc_t));
447ca: 4878 0124 pea 124 <DBL_MANT_DIG+0xef>
447ce: 4878 0001 pea 1 <ADD>
* RTEMS_NO_MEMOTY if cannot have not enough memory,
* RTEMS_INTERNAL_ERROR if other error occurs.
*/
rtems_status_code
rtems_ide_part_table_initialize(const char *dev_name)
{
447d2: 262e 0008 movel %fp@(8),%d3
rtems_part_desc_t *part_desc;
/* logical device name /dev/hdxyy */
char name[RTEMS_IDE_PARTITION_DEV_NAME_LENGTH_MAX];
disk_desc = (rtems_disk_desc_t *) calloc(1, sizeof(rtems_disk_desc_t));
447d6: 4eb9 0004 5024 jsr 45024 <calloc>
if (disk_desc == NULL)
447dc: 508f addql #8,%sp
rtems_part_desc_t *part_desc;
/* logical device name /dev/hdxyy */
char name[RTEMS_IDE_PARTITION_DEV_NAME_LENGTH_MAX];
disk_desc = (rtems_disk_desc_t *) calloc(1, sizeof(rtems_disk_desc_t));
447de: 2640 moveal %d0,%a3
if (disk_desc == NULL)
447e0: 4a80 tstl %d0
447e2: 6700 00b4 beqw 44898 <rtems_ide_part_table_initialize+0xd6>
{
return RTEMS_NO_MEMORY;
}
/* get partition table */
rc = partition_table_get(dev_name, disk_desc);
447e6: 2f00 movel %d0,%sp@-
447e8: 2f03 movel %d3,%sp@-
447ea: 4eba fdaa jsr %pc@(44596 <partition_table_get>)
if (rc != RTEMS_SUCCESSFUL)
447ee: 508f addql #8,%sp
{
return RTEMS_NO_MEMORY;
}
/* get partition table */
rc = partition_table_get(dev_name, disk_desc);
447f0: 2d40 ffec movel %d0,%fp@(-20)
if (rc != RTEMS_SUCCESSFUL)
447f4: 6600 00b6 bnew 448ac <rtems_ide_part_table_initialize+0xea>
rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);
/* create logical disks on the physical one */
for (part_num = 0; part_num < disk_desc->last_log_id; part_num++)
{
sprintf(name, "%s%d", dev_name, part_num + 1);
447f8: 240e movel %fp,%d2
* RTEMS_SUCCESSFUL if success,
* RTEMS_NO_MEMOTY if cannot have not enough memory,
* RTEMS_INTERNAL_ERROR if other error occurs.
*/
rtems_status_code
rtems_ide_part_table_initialize(const char *dev_name)
447fa: 45eb 0028 lea %a3@(40),%a2
*/
rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);
/* create logical disks on the physical one */
for (part_num = 0; part_num < disk_desc->last_log_id; part_num++)
447fe: 4287 clrl %d7
{
sprintf(name, "%s%d", dev_name, part_num + 1);
44800: 0682 ffff fff0 addil #-16,%d2
44806: 49f9 0005 46b4 lea 546b4 <sprintf>,%a4
if (part_desc == NULL)
{
continue;
}
rc = rtems_disk_create_log(dev, disk_desc->dev, part_desc->start,
4480c: 4bf9 0004 3da6 lea 43da6 <rtems_disk_create_log>,%a5
part_desc->size, name);
if (rc != RTEMS_SUCCESSFUL)
{
fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
44812: 2c3c 0005 3ede movel #343774,%d6
/* To avoid device numbers conflicts we have to use for logic disk the same
* device major number as ATA device has, and minor number that equals to
* sum of logic disk partition number and the minor number of physical disk
*/
rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);
44818: 2a13 movel %a3@,%d5
4481a: 282b 0004 movel %a3@(4),%d4
/* create logical disks on the physical one */
for (part_num = 0; part_num < disk_desc->last_log_id; part_num++)
4481e: beab 0024 cmpl %a3@(36),%d7
44822: 6c5e bges 44882 <rtems_ide_part_table_initialize+0xc0>
{
sprintf(name, "%s%d", dev_name, part_num + 1);
44824: 5287 addql #1,%d7
44826: 2f07 movel %d7,%sp@-
44828: 2f03 movel %d3,%sp@-
4482a: 4879 0006 2278 pea 62278 <RTEMS_BDPART_MBR_MASTER_TYPE+0x14>
44830: 2f02 movel %d2,%sp@-
44832: 4e94 jsr %a4@
dev = rtems_filesystem_make_dev_t(major, ++minor);
part_desc = disk_desc->partitions[part_num];
44834: 225a moveal %a2@+,%a1
{
union __rtems_dev_t temp;
temp.__overlay.major = _major;
temp.__overlay.minor = _minor;
return temp.device;
44836: 2207 movel %d7,%d1
if (part_desc == NULL)
44838: 4fef 0010 lea %sp@(16),%sp
4483c: d284 addl %d4,%d1
4483e: 4a89 tstl %a1
44840: 67dc beqs 4481e <rtems_ide_part_table_initialize+0x5c>
{
continue;
}
rc = rtems_disk_create_log(dev, disk_desc->dev, part_desc->start,
44842: 2f02 movel %d2,%sp@-
44844: 2f29 0008 movel %a1@(8),%sp@-
44848: 2f29 0004 movel %a1@(4),%sp@-
4484c: 2f2b 0004 movel %a3@(4),%sp@-
44850: 2f13 movel %a3@,%sp@-
44852: 2f01 movel %d1,%sp@-
44854: 2f05 movel %d5,%sp@-
44856: 4e95 jsr %a5@
part_desc->size, name);
if (rc != RTEMS_SUCCESSFUL)
44858: 4fef 001c lea %sp@(28),%sp
4485c: 4a80 tstl %d0
4485e: 67be beqs 4481e <rtems_ide_part_table_initialize+0x5c><== ALWAYS TAKEN
{
fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
44860: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44862: 2279 0006 39d8 moveal 639d8 <_impure_ptr>,%a1 <== NOT EXECUTED
44868: 2046 moveal %d6,%a0 <== NOT EXECUTED
4486a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4486c: 4879 0006 227d pea 6227d <RTEMS_BDPART_MBR_MASTER_TYPE+0x19><== NOT EXECUTED
44872: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
44876: 4e90 jsr %a0@ <== NOT EXECUTED
continue;
44878: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*/
rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);
/* create logical disks on the physical one */
for (part_num = 0; part_num < disk_desc->last_log_id; part_num++)
4487c: beab 0024 cmpl %a3@(36),%d7 <== NOT EXECUTED
44880: 6da2 blts 44824 <rtems_ide_part_table_initialize+0x62><== NOT EXECUTED
fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
continue;
}
}
partition_table_free(disk_desc);
44882: 2f0b movel %a3,%sp@-
44884: 4eba f9fe jsr %pc@(44284 <partition_table_free>)
return RTEMS_SUCCESSFUL;
}
44888: 202e ffec movel %fp@(-20),%d0
fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
continue;
}
}
partition_table_free(disk_desc);
4488c: 588f addql #4,%sp
return RTEMS_SUCCESSFUL;
}
4488e: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5
44894: 4e5e unlk %fp
44896: 4e75 rts
char name[RTEMS_IDE_PARTITION_DEV_NAME_LENGTH_MAX];
disk_desc = (rtems_disk_desc_t *) calloc(1, sizeof(rtems_disk_desc_t));
if (disk_desc == NULL)
{
return RTEMS_NO_MEMORY;
44898: 701a moveq #26,%d0 <== NOT EXECUTED
4489a: 2d40 ffec movel %d0,%fp@(-20) <== NOT EXECUTED
}
partition_table_free(disk_desc);
return RTEMS_SUCCESSFUL;
}
4489e: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
448a2: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
448a8: 4e5e unlk %fp <== NOT EXECUTED
448aa: 4e75 rts <== NOT EXECUTED
/* get partition table */
rc = partition_table_get(dev_name, disk_desc);
if (rc != RTEMS_SUCCESSFUL)
{
free(disk_desc);
448ac: 2f0b movel %a3,%sp@- <== NOT EXECUTED
448ae: 4eb9 0004 5344 jsr 45344 <free> <== NOT EXECUTED
}
partition_table_free(disk_desc);
return RTEMS_SUCCESSFUL;
}
448b4: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
/* get partition table */
rc = partition_table_get(dev_name, disk_desc);
if (rc != RTEMS_SUCCESSFUL)
{
free(disk_desc);
448b8: 588f addql #4,%sp <== NOT EXECUTED
}
partition_table_free(disk_desc);
return RTEMS_SUCCESSFUL;
}
448ba: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
448c0: 4e5e unlk %fp <== NOT EXECUTED
00047b8c <rtems_initialize_start_multitasking>:
47b8c: 7002 moveq #2,%d0
}
void rtems_initialize_start_multitasking(void)
{
47b8e: 4e56 0000 linkw %fp,#0
47b92: 23c0 0005 fb6c movel %d0,5fb6c <_System_state_Current>
uint32_t status;
_System_state_Set( SYSTEM_STATE_BEGIN_MULTITASKING );
_Thread_Start_multitasking();
47b98: 4eb9 0004 a628 jsr 4a628 <_Thread_Start_multitasking>
****** RETURNS WHEN SYSTEM IS SHUT DOWN ******
*******************************************************************
*******************************************************************
*******************************************************************/
status = _Per_CPU_Information[0].idle->Wait.return_code;
47b9e: 2079 0005 fb86 moveal 5fb86 <_Per_CPU_Information+0x16>,%a0
rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, status );
47ba4: 2f28 0034 movel %a0@(52),%sp@-
47ba8: 4878 0005 pea 5 <COMPARE>
47bac: 4eb9 0004 7c38 jsr 47c38 <rtems_fatal>
...
000494dc <rtems_io_register_driver>:
rtems_status_code rtems_io_register_driver(
rtems_device_major_number major,
const rtems_driver_address_table *driver_table,
rtems_device_major_number *registered_major
)
{
494dc: 4e56 0000 linkw %fp,#0
494e0: 226e 000c moveal %fp@(12),%a1
494e4: 2f0a movel %a2,%sp@-
494e6: 206e 0010 moveal %fp@(16),%a0
494ea: 2f02 movel %d2,%sp@-
494ec: 242e 0008 movel %fp@(8),%d2
rtems_device_major_number major_limit = _IO_Number_of_drivers;
494f0: 2039 0006 41dc movel 641dc <_IO_Number_of_drivers>,%d0
if ( rtems_interrupt_is_in_progress() )
494f6: 4ab9 0006 415c tstl 6415c <_Per_CPU_Information+0x8>
494fc: 670e beqs 4950c <rtems_io_register_driver+0x30>
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
494fe: 242e fff8 movel %fp@(-8),%d2
)
{
rtems_device_major_number major_limit = _IO_Number_of_drivers;
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
49502: 7012 moveq #18,%d0
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
49504: 246e fffc moveal %fp@(-4),%a2
49508: 4e5e unlk %fp
4950a: 4e75 rts
rtems_device_major_number major_limit = _IO_Number_of_drivers;
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
if ( registered_major == NULL )
4950c: 4a88 tstl %a0
4950e: 6722 beqs 49532 <rtems_io_register_driver+0x56>
return RTEMS_INVALID_ADDRESS;
/* Set it to an invalid value */
*registered_major = major_limit;
49510: 2080 movel %d0,%a0@
if ( driver_table == NULL )
49512: 4a89 tstl %a1
49514: 671c beqs 49532 <rtems_io_register_driver+0x56>
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
49516: 4a91 tstl %a1@
49518: 6712 beqs 4952c <rtems_io_register_driver+0x50>
return RTEMS_INVALID_ADDRESS;
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
if ( major >= major_limit )
4951a: b480 cmpl %d0,%d2
4951c: 6522 bcss 49540 <rtems_io_register_driver+0x64>
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
4951e: 242e fff8 movel %fp@(-8),%d2
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
if ( major >= major_limit )
return RTEMS_INVALID_NUMBER;
49522: 700a moveq #10,%d0
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
49524: 246e fffc moveal %fp@(-4),%a2
49528: 4e5e unlk %fp
4952a: 4e75 rts
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
4952c: 4aa9 0004 tstl %a1@(4)
49530: 66e8 bnes 4951a <rtems_io_register_driver+0x3e>
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
49532: 242e fff8 movel %fp@(-8),%d2
if ( driver_table == NULL )
return RTEMS_INVALID_ADDRESS;
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
49536: 7009 moveq #9,%d0
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
49538: 246e fffc moveal %fp@(-4),%a2
4953c: 4e5e unlk %fp
4953e: 4e75 rts
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
49540: 2039 0006 3fea movel 63fea <_Thread_Dispatch_disable_level>,%d0
++level;
49546: 5280 addql #1,%d0
_Thread_Dispatch_disable_level = level;
49548: 23c0 0006 3fea movel %d0,63fea <_Thread_Dispatch_disable_level>
if ( major >= major_limit )
return RTEMS_INVALID_NUMBER;
_Thread_Disable_dispatch();
if ( major == 0 ) {
4954e: 4a82 tstl %d2
49550: 676a beqs 495bc <rtems_io_register_driver+0xe0>
_Thread_Enable_dispatch();
return sc;
}
major = *registered_major;
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
49552: 2202 movel %d2,%d1
49554: 2002 movel %d2,%d0
49556: e789 lsll #3,%d1
49558: eb88 lsll #5,%d0
4955a: 2479 0006 41e0 moveal 641e0 <_IO_Driver_address_table>,%a2
49560: 9081 subl %d1,%d0
49562: d5c0 addal %d0,%a2
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
49564: 4a92 tstl %a2@
49566: 6714 beqs 4957c <rtems_io_register_driver+0xa0>
major = *registered_major;
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
if ( !rtems_io_is_empty_table( table ) ) {
_Thread_Enable_dispatch();
49568: 4eb9 0004 b5b0 jsr 4b5b0 <_Thread_Enable_dispatch>
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
4956e: 242e fff8 movel %fp@(-8),%d2
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
if ( !rtems_io_is_empty_table( table ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
49572: 700c moveq #12,%d0
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
49574: 246e fffc moveal %fp@(-4),%a2
49578: 4e5e unlk %fp
4957a: 4e75 rts
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
4957c: 4aaa 0004 tstl %a2@(4)
49580: 66e6 bnes 49568 <rtems_io_register_driver+0x8c>
49582: 2239 0006 41e0 movel 641e0 <_IO_Driver_address_table>,%d1
if ( !rtems_io_is_empty_table( table ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
}
*registered_major = major;
49588: 2082 movel %d2,%a0@
}
_IO_Driver_address_table [major] = *driver_table;
4958a: 2041 moveal %d1,%a0
4958c: d1c0 addal %d0,%a0
4958e: 20d9 movel %a1@+,%a0@+
49590: 20d9 movel %a1@+,%a0@+
49592: 20d9 movel %a1@+,%a0@+
49594: 20d9 movel %a1@+,%a0@+
49596: 20d9 movel %a1@+,%a0@+
49598: 2091 movel %a1@,%a0@
_Thread_Enable_dispatch();
4959a: 4eb9 0004 b5b0 jsr 4b5b0 <_Thread_Enable_dispatch>
return rtems_io_initialize( major, 0, NULL );
}
495a0: 246e fffc moveal %fp@(-4),%a2
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
495a4: 2d42 0008 movel %d2,%fp@(8)
}
495a8: 242e fff8 movel %fp@(-8),%d2
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
495ac: 42ae 0010 clrl %fp@(16)
495b0: 42ae 000c clrl %fp@(12)
}
495b4: 4e5e unlk %fp
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
495b6: 4ef9 0005 0ca8 jmp 50ca8 <rtems_io_initialize>
static rtems_status_code rtems_io_obtain_major_number(
rtems_device_major_number *major
)
{
rtems_device_major_number n = _IO_Number_of_drivers;
495bc: 2039 0006 41dc movel 641dc <_IO_Number_of_drivers>,%d0
rtems_device_major_number m = 0;
/* major is error checked by caller */
for ( m = 0; m < n; ++m ) {
495c2: 6770 beqs 49634 <rtems_io_register_driver+0x158> <== NEVER TAKEN
495c4: 2239 0006 41e0 movel 641e0 <_IO_Driver_address_table>,%d1
495ca: 2441 moveal %d1,%a2
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
495cc: 4a92 tstl %a2@
495ce: 6720 beqs 495f0 <rtems_io_register_driver+0x114>
rtems_device_major_number n = _IO_Number_of_drivers;
rtems_device_major_number m = 0;
/* major is error checked by caller */
for ( m = 0; m < n; ++m ) {
495d0: 5282 addql #1,%d2
495d2: 45ea 0018 lea %a2@(24),%a2
495d6: b082 cmpl %d2,%d0
495d8: 66f2 bnes 495cc <rtems_io_register_driver+0xf0>
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
495da: 2082 movel %d2,%a0@
if ( major == 0 ) {
rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
if ( sc != RTEMS_SUCCESSFUL ) {
_Thread_Enable_dispatch();
495dc: 4eb9 0004 b5b0 jsr 4b5b0 <_Thread_Enable_dispatch>
*major = m;
if ( m != n )
return RTEMS_SUCCESSFUL;
return RTEMS_TOO_MANY;
495e2: 7005 moveq #5,%d0
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
495e4: 242e fff8 movel %fp@(-8),%d2
495e8: 246e fffc moveal %fp@(-4),%a2
495ec: 4e5e unlk %fp
495ee: 4e75 rts
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
495f0: 4aaa 0004 tstl %a2@(4)
495f4: 66da bnes 495d0 <rtems_io_register_driver+0xf4>
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
495f6: 2082 movel %d2,%a0@
if ( m != n )
495f8: b480 cmpl %d0,%d2
495fa: 67e0 beqs 495dc <rtems_io_register_driver+0x100> <== NEVER TAKEN
495fc: 7018 moveq #24,%d0
495fe: 4c02 0800 mulsl %d2,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
49602: 2041 moveal %d1,%a0
49604: d1c0 addal %d0,%a0
49606: 20d9 movel %a1@+,%a0@+
49608: 20d9 movel %a1@+,%a0@+
4960a: 20d9 movel %a1@+,%a0@+
4960c: 20d9 movel %a1@+,%a0@+
4960e: 20d9 movel %a1@+,%a0@+
49610: 2091 movel %a1@,%a0@
_Thread_Enable_dispatch();
49612: 4eb9 0004 b5b0 jsr 4b5b0 <_Thread_Enable_dispatch>
return rtems_io_initialize( major, 0, NULL );
}
49618: 246e fffc moveal %fp@(-4),%a2
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
4961c: 2d42 0008 movel %d2,%fp@(8)
}
49620: 242e fff8 movel %fp@(-8),%d2
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
49624: 42ae 0010 clrl %fp@(16)
49628: 42ae 000c clrl %fp@(12)
}
4962c: 4e5e unlk %fp
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
4962e: 4ef9 0005 0ca8 jmp 50ca8 <rtems_io_initialize>
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
49634: 4290 clrl %a0@ <== NOT EXECUTED
if ( major == 0 ) {
rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
if ( sc != RTEMS_SUCCESSFUL ) {
_Thread_Enable_dispatch();
49636: 4eb9 0004 b5b0 jsr 4b5b0 <_Thread_Enable_dispatch> <== NOT EXECUTED
*major = m;
if ( m != n )
return RTEMS_SUCCESSFUL;
return RTEMS_TOO_MANY;
4963c: 7005 moveq #5,%d0 <== NOT EXECUTED
4963e: 60a4 bras 495e4 <rtems_io_register_driver+0x108> <== NOT EXECUTED
0004a21c <rtems_iterate_over_all_threads>:
#include <rtems/system.h>
#include <rtems/score/thread.h>
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine)
{
4a21c: 4e56 fff0 linkw %fp,#-16
4a220: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
4a224: 266e 0008 moveal %fp@(8),%a3
4a228: 49f9 0006 2466 lea 62466 <_Objects_Information_table+0x4>,%a4
uint32_t i;
uint32_t api_index;
Thread_Control *the_thread;
Objects_Information *information;
if ( !routine )
4a22e: 4a8b tstl %a3
4a230: 673c beqs 4a26e <rtems_iterate_over_all_threads+0x52><== NEVER TAKEN
return;
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
#if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)
if ( !_Objects_Information_table[ api_index ] )
4a232: 205c moveal %a4@+,%a0
4a234: 4a88 tstl %a0
4a236: 672e beqs 4a266 <rtems_iterate_over_all_threads+0x4a>
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
4a238: 2468 0004 moveal %a0@(4),%a2
if ( !information )
4a23c: 4a8a tstl %a2
4a23e: 6726 beqs 4a266 <rtems_iterate_over_all_threads+0x4a>
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
4a240: 4a6a 000e tstw %a2@(14)
4a244: 6720 beqs 4a266 <rtems_iterate_over_all_threads+0x4a><== NEVER TAKEN
4a246: 7401 moveq #1,%d2
the_thread = (Thread_Control *)information->local_table[ i ];
4a248: 206a 0018 moveal %a2@(24),%a0
4a24c: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0
information = _Objects_Information_table[ api_index ][ 1 ];
if ( !information )
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
4a250: 5282 addql #1,%d2
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
4a252: 4a80 tstl %d0
4a254: 6706 beqs 4a25c <rtems_iterate_over_all_threads+0x40><== NEVER TAKEN
continue;
(*routine)(the_thread);
4a256: 2f00 movel %d0,%sp@-
4a258: 4e93 jsr %a3@
4a25a: 588f addql #4,%sp
information = _Objects_Information_table[ api_index ][ 1 ];
if ( !information )
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
4a25c: 4280 clrl %d0
4a25e: 302a 000e movew %a2@(14),%d0
4a262: b480 cmpl %d0,%d2
4a264: 63e2 blss 4a248 <rtems_iterate_over_all_threads+0x2c>
Objects_Information *information;
if ( !routine )
return;
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
4a266: b9fc 0006 2472 cmpal #402546,%a4
4a26c: 66c4 bnes 4a232 <rtems_iterate_over_all_threads+0x16>
(*routine)(the_thread);
}
}
}
4a26e: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4
4a274: 4e5e unlk %fp <== NOT EXECUTED
00043214 <rtems_libio_init>:
rtems_id rtems_libio_semaphore;
rtems_libio_t *rtems_libio_iops;
rtems_libio_t *rtems_libio_iop_freelist;
void rtems_libio_init( void )
{
43214: 4e56 0000 linkw %fp,#0
43218: 2f02 movel %d2,%sp@-
rtems_status_code rc;
uint32_t i;
rtems_libio_t *iop;
if (rtems_libio_number_iops > 0)
4321a: 2439 0005 e260 movel 5e260 <rtems_libio_number_iops>,%d2
43220: 6744 beqs 43266 <rtems_libio_init+0x52> <== NEVER TAKEN
{
rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
43222: 4878 0030 pea 30 <OPER2+0x1c>
43226: 2f02 movel %d2,%sp@-
43228: 4eb9 0004 2e28 jsr 42e28 <calloc>
sizeof(rtems_libio_t));
if (rtems_libio_iops == NULL)
4322e: 508f addql #8,%sp
uint32_t i;
rtems_libio_t *iop;
if (rtems_libio_number_iops > 0)
{
rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
43230: 23c0 0005 f8f4 movel %d0,5f8f4 <rtems_libio_iops>
sizeof(rtems_libio_t));
if (rtems_libio_iops == NULL)
43236: 6774 beqs 432ac <rtems_libio_init+0x98>
rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
iop = rtems_libio_iop_freelist = rtems_libio_iops;
43238: 23c0 0005 f8f8 movel %d0,5f8f8 <rtems_libio_iop_freelist>
for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)
4323e: 7201 moveq #1,%d1
43240: b282 cmpl %d2,%d1
43242: 641c bccs 43260 <rtems_libio_init+0x4c>
43244: 2040 moveal %d0,%a0
iop->data1 = iop + 1;
43246: 41e8 0030 lea %a0@(48),%a0
sizeof(rtems_libio_t));
if (rtems_libio_iops == NULL)
rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
iop = rtems_libio_iop_freelist = rtems_libio_iops;
for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)
4324a: 5281 addql #1,%d1
iop->data1 = iop + 1;
4324c: 2148 fffc movel %a0,%a0@(-4)
sizeof(rtems_libio_t));
if (rtems_libio_iops == NULL)
rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
iop = rtems_libio_iop_freelist = rtems_libio_iops;
for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)
43250: b481 cmpl %d1,%d2
43252: 66f2 bnes 43246 <rtems_libio_init+0x32>
rtems_id rtems_libio_semaphore;
rtems_libio_t *rtems_libio_iops;
rtems_libio_t *rtems_libio_iop_freelist;
void rtems_libio_init( void )
43254: 5381 subql #1,%d1
43256: 2401 movel %d1,%d2
43258: ed89 lsll #6,%d1
4325a: e98a lsll #4,%d2
4325c: 9282 subl %d2,%d1
4325e: d081 addl %d1,%d0
rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
iop = rtems_libio_iop_freelist = rtems_libio_iops;
for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)
iop->data1 = iop + 1;
iop->data1 = NULL;
43260: 2040 moveal %d0,%a0
43262: 42a8 002c clrl %a0@(44)
/*
* Create the binary semaphore used to provide mutual exclusion
* on the IOP Table.
*/
rc = rtems_semaphore_create(
43266: 4879 0005 f8fc pea 5f8fc <rtems_libio_semaphore>
4326c: 42a7 clrl %sp@-
4326e: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
43272: 4878 0001 pea 1 <ADD>
43276: 2f3c 4c42 494f movel #1279412559,%sp@-
4327c: 4eb9 0004 7194 jsr 47194 <rtems_semaphore_create>
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&rtems_libio_semaphore
);
if ( rc != RTEMS_SUCCESSFUL )
43282: 4fef 0014 lea %sp@(20),%sp
43286: 4a80 tstl %d0
43288: 661a bnes 432a4 <rtems_libio_init+0x90> <== NEVER TAKEN
/*
* Initialize the base file system infrastructure.
*/
if (rtems_fs_init_helper)
4328a: 2279 0005 e264 moveal 5e264 <rtems_fs_init_helper>,%a1
43290: 4a89 tstl %a1
43292: 6708 beqs 4329c <rtems_libio_init+0x88>
(* rtems_fs_init_helper)();
}
43294: 242e fffc movel %fp@(-4),%d2
43298: 4e5e unlk %fp
/*
* Initialize the base file system infrastructure.
*/
if (rtems_fs_init_helper)
(* rtems_fs_init_helper)();
4329a: 4ed1 jmp %a1@
}
4329c: 242e fffc movel %fp@(-4),%d2
432a0: 4e5e unlk %fp
432a2: 4e75 rts
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&rtems_libio_semaphore
);
if ( rc != RTEMS_SUCCESSFUL )
rtems_fatal_error_occurred( rc );
432a4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
432a6: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred> <== NOT EXECUTED
if (rtems_libio_number_iops > 0)
{
rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
sizeof(rtems_libio_t));
if (rtems_libio_iops == NULL)
rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
432ac: 4878 001a pea 1a <OPER2+0x6>
432b0: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred>
...
000437f8 <rtems_libio_set_private_env>:
}
rtems_status_code rtems_libio_set_private_env(void)
{
437f8: 4e56 ffec linkw %fp,#-20
437fc: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_id self_task_id = rtems_task_self();
43800: 4eb9 0004 53cc jsr 453cc <rtems_task_self>
rtems_user_env_t *old_env = rtems_current_user_env;
43806: 2679 0005 cfa4 moveal 5cfa4 <rtems_current_user_env>,%a3
}
rtems_status_code rtems_libio_set_private_env(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_id self_task_id = rtems_task_self();
4380c: 2400 movel %d0,%d2
rtems_user_env_t *old_env = rtems_current_user_env;
bool uses_global_env = old_env == &rtems_global_user_env;
bool uses_shared_env = old_env->task_id != self_task_id;
4380e: 202b 0022 movel %a3@(34),%d0
if (uses_global_env || uses_shared_env) {
43812: b7fc 0005 cfa8 cmpal #380840,%a3
43818: 6706 beqs 43820 <rtems_libio_set_private_env+0x28>
4381a: b082 cmpl %d2,%d0
4381c: 6700 00b0 beqw 438ce <rtems_libio_set_private_env+0xd6>
rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));
43820: 4878 002a pea 2a <OPER2+0x16>
43824: 4878 0001 pea 1 <ADD>
43828: 4eb9 0004 85cc jsr 485cc <calloc>
if (new_env != NULL) {
4382e: 508f addql #8,%sp
rtems_user_env_t *old_env = rtems_current_user_env;
bool uses_global_env = old_env == &rtems_global_user_env;
bool uses_shared_env = old_env->task_id != self_task_id;
if (uses_global_env || uses_shared_env) {
rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));
43830: 2440 moveal %d0,%a2
if (new_env != NULL) {
43832: 4a80 tstl %d0
43834: 6700 008c beqw 438c2 <rtems_libio_set_private_env+0xca>
*new_env = *old_env;
43838: 2040 moveal %d0,%a0
4383a: 224b moveal %a3,%a1
new_env->reference_count = 1;
4383c: 7001 moveq #1,%d0
new_env->task_id = self_task_id;
new_env->root_directory =
rtems_filesystem_global_location_obtain(&old_env->root_directory);
4383e: 49f9 0004 4698 lea 44698 <rtems_filesystem_global_location_obtain>,%a4
if (uses_global_env || uses_shared_env) {
rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));
if (new_env != NULL) {
*new_env = *old_env;
43844: 20d9 movel %a1@+,%a0@+
43846: 20d9 movel %a1@+,%a0@+
43848: 20d9 movel %a1@+,%a0@+
4384a: 20d9 movel %a1@+,%a0@+
4384c: 20d9 movel %a1@+,%a0@+
4384e: 20d9 movel %a1@+,%a0@+
43850: 20d9 movel %a1@+,%a0@+
43852: 20d9 movel %a1@+,%a0@+
43854: 20d9 movel %a1@+,%a0@+
43856: 20d9 movel %a1@+,%a0@+
43858: 3091 movew %a1@,%a0@
new_env->reference_count = 1;
new_env->task_id = self_task_id;
new_env->root_directory =
rtems_filesystem_global_location_obtain(&old_env->root_directory);
4385a: 486b 0004 pea %a3@(4)
if (uses_global_env || uses_shared_env) {
rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));
if (new_env != NULL) {
*new_env = *old_env;
new_env->reference_count = 1;
4385e: 2540 0026 movel %d0,%a2@(38)
new_env->task_id = self_task_id;
43862: 2542 0022 movel %d2,%a2@(34)
new_env->root_directory =
rtems_filesystem_global_location_obtain(&old_env->root_directory);
43866: 4e94 jsr %a4@
new_env->current_directory =
rtems_filesystem_global_location_obtain(&old_env->current_directory);
43868: 2f0b movel %a3,%sp@-
if (new_env != NULL) {
*new_env = *old_env;
new_env->reference_count = 1;
new_env->task_id = self_task_id;
new_env->root_directory =
4386a: 2540 0004 movel %d0,%a2@(4)
rtems_filesystem_global_location_obtain(&old_env->root_directory);
new_env->current_directory =
rtems_filesystem_global_location_obtain(&old_env->current_directory);
4386e: 4e94 jsr %a4@
rtems_fatal_error_occurred(0xdeadbeef);
}
rtems_current_user_env = &rtems_global_user_env;
}
}
43870: 206a 0004 moveal %a2@(4),%a0
new_env->root_directory =
rtems_filesystem_global_location_obtain(&old_env->root_directory);
new_env->current_directory =
rtems_filesystem_global_location_obtain(&old_env->current_directory);
if (
43874: 508f addql #8,%sp
43876: 223c 0005 c104 movel #377092,%d1
*new_env = *old_env;
new_env->reference_count = 1;
new_env->task_id = self_task_id;
new_env->root_directory =
rtems_filesystem_global_location_obtain(&old_env->root_directory);
new_env->current_directory =
4387c: 2480 movel %d0,%a2@
rtems_filesystem_global_location_obtain(&old_env->current_directory);
if (
4387e: b2a8 0010 cmpl %a0@(16),%d1
43882: 6776 beqs 438fa <rtems_libio_set_private_env+0x102>
!rtems_filesystem_global_location_is_null(new_env->root_directory)
&& !rtems_filesystem_global_location_is_null(new_env->current_directory)
43884: 2040 moveal %d0,%a0
43886: b2a8 0010 cmpl %a0@(16),%d1
4388a: 676e beqs 438fa <rtems_libio_set_private_env+0x102><== NEVER TAKEN
) {
sc = rtems_task_variable_add(
4388c: 487a feee pea %pc@(4377c <free_user_env>)
43890: 4879 0005 cfa4 pea 5cfa4 <rtems_current_user_env>
43896: 42a7 clrl %sp@-
43898: 4eb9 0004 5490 jsr 45490 <rtems_task_variable_add>
RTEMS_SELF,
(void **) &rtems_current_user_env,
free_user_env
);
if (sc == RTEMS_SUCCESSFUL) {
4389e: 4fef 000c lea %sp@(12),%sp
438a2: 4a80 tstl %d0
438a4: 6734 beqs 438da <rtems_libio_set_private_env+0xe2>
free_user_env_protected(old_env);
rtems_current_user_env = new_env;
} else {
sc = RTEMS_TOO_MANY;
438a6: 7005 moveq #5,%d0
} else {
sc = RTEMS_UNSATISFIED;
}
if (sc != RTEMS_SUCCESSFUL) {
free_user_env(new_env);
438a8: 2f0a movel %a2,%sp@-
438aa: 2d40 fffc movel %d0,%fp@(-4)
438ae: 4eba fecc jsr %pc@(4377c <free_user_env>)
438b2: 202e fffc movel %fp@(-4),%d0
438b6: 588f addql #4,%sp
sc = RTEMS_NO_MEMORY;
}
}
return sc;
}
438b8: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
438be: 4e5e unlk %fp
438c0: 4e75 rts
if (sc != RTEMS_SUCCESSFUL) {
free_user_env(new_env);
}
} else {
sc = RTEMS_NO_MEMORY;
438c2: 701a moveq #26,%d0
}
}
return sc;
}
438c4: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
438ca: 4e5e unlk %fp
438cc: 4e75 rts
_Thread_Enable_dispatch();
}
rtems_status_code rtems_libio_set_private_env(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
438ce: 4280 clrl %d0
sc = RTEMS_NO_MEMORY;
}
}
return sc;
}
438d0: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
438d6: 4e5e unlk %fp
438d8: 4e75 rts
RTEMS_SELF,
(void **) &rtems_current_user_env,
free_user_env
);
if (sc == RTEMS_SUCCESSFUL) {
free_user_env_protected(old_env);
438da: 2f0b movel %a3,%sp@-
438dc: 2d40 fffc movel %d0,%fp@(-4)
438e0: 4eba fef0 jsr %pc@(437d2 <free_user_env_protected>)
438e4: 202e fffc movel %fp@(-4),%d0
rtems_current_user_env = new_env;
438e8: 588f addql #4,%sp
438ea: 23ca 0005 cfa4 movel %a2,5cfa4 <rtems_current_user_env>
sc = RTEMS_NO_MEMORY;
}
}
return sc;
}
438f0: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
438f6: 4e5e unlk %fp
438f8: 4e75 rts
rtems_current_user_env = new_env;
} else {
sc = RTEMS_TOO_MANY;
}
} else {
sc = RTEMS_UNSATISFIED;
438fa: 700d moveq #13,%d0
}
if (sc != RTEMS_SUCCESSFUL) {
free_user_env(new_env);
438fc: 2f0a movel %a2,%sp@-
438fe: 2d40 fffc movel %d0,%fp@(-4)
43902: 4eba fe78 jsr %pc@(4377c <free_user_env>)
43906: 202e fffc movel %fp@(-4),%d0
4390a: 588f addql #4,%sp
4390c: 60aa bras 438b8 <rtems_libio_set_private_env+0xc0>
0004390e <rtems_libio_share_private_env>:
return sc;
}
rtems_status_code rtems_libio_share_private_env(rtems_id task_id)
{
4390e: 4e56 fff8 linkw %fp,#-8
43912: 2f02 movel %d2,%sp@-
43914: 242e 0008 movel %fp@(8),%d2
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_id self_task_id = rtems_task_self();
43918: 4eb9 0004 53cc jsr 453cc <rtems_task_self>
if (task_id != RTEMS_SELF && self_task_id != task_id) {
4391e: 4a82 tstl %d2
43920: 677a beqs 4399c <rtems_libio_share_private_env+0x8e>
43922: b480 cmpl %d0,%d2
43924: 6776 beqs 4399c <rtems_libio_share_private_env+0x8e>
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
43926: 2039 0005 e05a movel 5e05a <_Thread_Dispatch_disable_level>,%d0
++level;
4392c: 5280 addql #1,%d0
_Thread_Dispatch_disable_level = level;
4392e: 23c0 0005 e05a movel %d0,5e05a <_Thread_Dispatch_disable_level>
/*
* We have to disable the thread dispatching to prevent deletion of the
* environment in the meantime.
*/
_Thread_Disable_dispatch();
sc = rtems_task_variable_get(
43934: 486e fffc pea %fp@(-4)
43938: 4879 0005 cfa4 pea 5cfa4 <rtems_current_user_env>
4393e: 2f02 movel %d2,%sp@-
43940: 4eb9 0004 55fc jsr 455fc <rtems_task_variable_get>
task_id,
(void *) &rtems_current_user_env,
(void *) &env
);
if (sc == RTEMS_SUCCESSFUL) {
43946: 4fef 000c lea %sp@(12),%sp
4394a: 4a80 tstl %d0
4394c: 6658 bnes 439a6 <rtems_libio_share_private_env+0x98>
++env->reference_count;
4394e: 206e fffc moveal %fp@(-4),%a0
43952: 52a8 0026 addql #1,%a0@(38)
} else {
sc = RTEMS_UNSATISFIED;
}
_Thread_Enable_dispatch();
43956: 4eb9 0004 72dc jsr 472dc <_Thread_Enable_dispatch>
if (sc == RTEMS_SUCCESSFUL) {
sc = rtems_task_variable_add(
4395c: 487a fe1e pea %pc@(4377c <free_user_env>)
43960: 4879 0005 cfa4 pea 5cfa4 <rtems_current_user_env>
43966: 42a7 clrl %sp@-
43968: 4eb9 0004 5490 jsr 45490 <rtems_task_variable_add>
RTEMS_SELF,
(void **) &rtems_current_user_env,
free_user_env
);
if (sc == RTEMS_SUCCESSFUL) {
4396e: 4fef 000c lea %sp@(12),%sp
43972: 4a80 tstl %d0
43974: 6640 bnes 439b6 <rtems_libio_share_private_env+0xa8><== NEVER TAKEN
free_user_env_protected(rtems_current_user_env);
43976: 2f39 0005 cfa4 movel 5cfa4 <rtems_current_user_env>,%sp@-
4397c: 2d40 fff8 movel %d0,%fp@(-8)
43980: 4eba fe50 jsr %pc@(437d2 <free_user_env_protected>)
43984: 202e fff8 movel %fp@(-8),%d0
rtems_current_user_env = env;
43988: 41ee fffc lea %fp@(-4),%a0
4398c: 588f addql #4,%sp
}
}
}
return sc;
}
4398e: 242e fff4 movel %fp@(-12),%d2
43992: 4e5e unlk %fp
(void **) &rtems_current_user_env,
free_user_env
);
if (sc == RTEMS_SUCCESSFUL) {
free_user_env_protected(rtems_current_user_env);
rtems_current_user_env = env;
43994: 23d0 0005 cfa4 movel %a0@,5cfa4 <rtems_current_user_env>
}
}
}
return sc;
}
4399a: 4e75 rts
4399c: 242e fff4 movel %fp@(-12),%d2
return sc;
}
rtems_status_code rtems_libio_share_private_env(rtems_id task_id)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
439a0: 4280 clrl %d0
}
}
}
return sc;
}
439a2: 4e5e unlk %fp
439a4: 4e75 rts
if (sc == RTEMS_SUCCESSFUL) {
++env->reference_count;
} else {
sc = RTEMS_UNSATISFIED;
}
_Thread_Enable_dispatch();
439a6: 4eb9 0004 72dc jsr 472dc <_Thread_Enable_dispatch>
}
}
}
return sc;
}
439ac: 242e fff4 movel %fp@(-12),%d2
(void *) &env
);
if (sc == RTEMS_SUCCESSFUL) {
++env->reference_count;
} else {
sc = RTEMS_UNSATISFIED;
439b0: 700d moveq #13,%d0
}
}
}
return sc;
}
439b2: 4e5e unlk %fp
439b4: 4e75 rts
);
if (sc == RTEMS_SUCCESSFUL) {
free_user_env_protected(rtems_current_user_env);
rtems_current_user_env = env;
} else {
free_user_env_protected(env);
439b6: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
sc = RTEMS_TOO_MANY;
439ba: 7005 moveq #5,%d0 <== NOT EXECUTED
);
if (sc == RTEMS_SUCCESSFUL) {
free_user_env_protected(rtems_current_user_env);
rtems_current_user_env = env;
} else {
free_user_env_protected(env);
439bc: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
439c0: 4eba fe10 jsr %pc@(437d2 <free_user_env_protected>) <== NOT EXECUTED
439c4: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
439c8: 588f addql #4,%sp <== NOT EXECUTED
}
}
}
return sc;
}
439ca: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
439ce: 4e5e unlk %fp <== NOT EXECUTED
0004b9b8 <rtems_libio_to_fcntl_flags>:
int rtems_libio_to_fcntl_flags( uint32_t flags )
{
int fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b9b8: 7006 moveq #6,%d0
return flags;
}
int rtems_libio_to_fcntl_flags( uint32_t flags )
{
4b9ba: 4e56 0000 linkw %fp,#0
4b9be: 222e 0008 movel %fp@(8),%d1
int fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b9c2: c081 andl %d1,%d0
return flags;
}
int rtems_libio_to_fcntl_flags( uint32_t flags )
{
4b9c4: 2f02 movel %d2,%sp@-
int fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b9c6: 7406 moveq #6,%d2
4b9c8: b480 cmpl %d0,%d2
4b9ca: 6738 beqs 4ba04 <rtems_libio_to_fcntl_flags+0x4c><== NEVER TAKEN
fcntl_flags |= O_RDWR;
} else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {
4b9cc: 0801 0001 btst #1,%d1
4b9d0: 6726 beqs 4b9f8 <rtems_libio_to_fcntl_flags+0x40><== NEVER TAKEN
fcntl_flags |= O_RDONLY;
4b9d2: 4280 clrl %d0
} else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) {
fcntl_flags |= O_WRONLY;
}
if ( (flags & LIBIO_FLAGS_NO_DELAY) == LIBIO_FLAGS_NO_DELAY ) {
4b9d4: 0801 0000 btst #0,%d1
4b9d8: 6704 beqs 4b9de <rtems_libio_to_fcntl_flags+0x26>
fcntl_flags |= O_NONBLOCK;
4b9da: 08c0 000e bset #14,%d0
}
if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {
4b9de: 0801 0009 btst #9,%d1
4b9e2: 6704 beqs 4b9e8 <rtems_libio_to_fcntl_flags+0x30>
fcntl_flags |= O_APPEND;
4b9e4: 7408 moveq #8,%d2
4b9e6: 8082 orl %d2,%d0
}
if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) {
4b9e8: 0801 000a btst #10,%d1
4b9ec: 6704 beqs 4b9f2 <rtems_libio_to_fcntl_flags+0x3a>
fcntl_flags |= O_CREAT;
4b9ee: 08c0 0009 bset #9,%d0
}
return fcntl_flags;
}
4b9f2: 241f movel %sp@+,%d2
4b9f4: 4e5e unlk %fp
4b9f6: 4e75 rts
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
fcntl_flags |= O_RDWR;
} else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {
fcntl_flags |= O_RDONLY;
} else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) {
4b9f8: 2001 movel %d1,%d0 <== NOT EXECUTED
4b9fa: e488 lsrl #2,%d0 <== NOT EXECUTED
4b9fc: 143c 0001 moveb #1,%d2 <== NOT EXECUTED
4ba00: c082 andl %d2,%d0 <== NOT EXECUTED
4ba02: 60d0 bras 4b9d4 <rtems_libio_to_fcntl_flags+0x1c><== NOT EXECUTED
int rtems_libio_to_fcntl_flags( uint32_t flags )
{
int fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
fcntl_flags |= O_RDWR;
4ba04: 7002 moveq #2,%d0 <== NOT EXECUTED
4ba06: 60cc bras 4b9d4 <rtems_libio_to_fcntl_flags+0x1c><== NOT EXECUTED
000439d2 <rtems_libio_use_global_env>:
void rtems_libio_use_global_env(void)
{
439d2: 4e56 0000 linkw %fp,#0
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_user_env_t *env = rtems_current_user_env;
bool uses_private_env = env != &rtems_global_user_env;
if (uses_private_env) {
439d6: 203c 0005 cfa8 movel #380840,%d0
439dc: b0b9 0005 cfa4 cmpl 5cfa4 <rtems_current_user_env>,%d0
439e2: 6720 beqs 43a04 <rtems_libio_use_global_env+0x32>
sc = rtems_task_variable_delete(
439e4: 4879 0005 cfa4 pea 5cfa4 <rtems_current_user_env>
439ea: 42a7 clrl %sp@-
439ec: 4eb9 0004 5558 jsr 45558 <rtems_task_variable_delete>
RTEMS_SELF,
(void **) &rtems_current_user_env
);
if (sc != RTEMS_SUCCESSFUL) {
439f2: 508f addql #8,%sp
439f4: 4a80 tstl %d0
439f6: 6610 bnes 43a08 <rtems_libio_use_global_env+0x36><== NEVER TAKEN
rtems_fatal_error_occurred(0xdeadbeef);
}
rtems_current_user_env = &rtems_global_user_env;
439f8: 203c 0005 cfa8 movel #380840,%d0
439fe: 23c0 0005 cfa4 movel %d0,5cfa4 <rtems_current_user_env>
}
}
43a04: 4e5e unlk %fp
43a06: 4e75 rts
sc = rtems_task_variable_delete(
RTEMS_SELF,
(void **) &rtems_current_user_env
);
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
43a08: 2f3c dead beef movel #-559038737,%sp@- <== NOT EXECUTED
43a0e: 4eb9 0004 583c jsr 4583c <rtems_fatal_error_occurred> <== NOT EXECUTED
00047250 <rtems_malloc_statistics_at_free>:
* size and thus we skip updating the statistics.
*/
static void rtems_malloc_statistics_at_free(
void *pointer
)
{
47250: 4e56 fffc linkw %fp,#-4
47254: 2f03 movel %d3,%sp@-
47256: 2f02 movel %d2,%sp@-
uintptr_t size;
if (_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &size) ) {
47258: 486e fffc pea %fp@(-4)
4725c: 2f2e 0008 movel %fp@(8),%sp@-
47260: 2f39 0006 3f10 movel 63f10 <RTEMS_Malloc_Heap>,%sp@-
47266: 4eb9 0004 e178 jsr 4e178 <_Protected_heap_Get_block_size>
4726c: 4fef 000c lea %sp@(12),%sp
47270: 4a00 tstb %d0
47272: 671a beqs 4728e <rtems_malloc_statistics_at_free+0x3e><== NEVER TAKEN
MSBUMP(lifetime_freed, size);
47274: 262e fffc movel %fp@(-4),%d3
47278: 4282 clrl %d2
4727a: d7b9 0006 5ef4 addl %d3,65ef4 <rtems_malloc_statistics+0x28>
47280: 2039 0006 5ef0 movel 65ef0 <rtems_malloc_statistics+0x24>,%d0
47286: d182 addxl %d2,%d0
47288: 23c0 0006 5ef0 movel %d0,65ef0 <rtems_malloc_statistics+0x24>
}
}
4728e: 242e fff4 movel %fp@(-12),%d2
47292: 262e fff8 movel %fp@(-8),%d3
47296: 4e5e unlk %fp <== NOT EXECUTED
0004729a <rtems_malloc_statistics_at_malloc>:
}
static void rtems_malloc_statistics_at_malloc(
void *pointer
)
{
4729a: 4e56 fffc linkw %fp,#-4
4729e: 202e 0008 movel %fp@(8),%d0
472a2: 2f03 movel %d3,%sp@-
uintptr_t actual_size = 0;
472a4: 42ae fffc clrl %fp@(-4)
}
static void rtems_malloc_statistics_at_malloc(
void *pointer
)
{
472a8: 2f02 movel %d2,%sp@-
uintptr_t actual_size = 0;
uint32_t current_depth;
rtems_malloc_statistics_t *s = &rtems_malloc_statistics;
if ( !pointer )
472aa: 4a80 tstl %d0
472ac: 674c beqs 472fa <rtems_malloc_statistics_at_malloc+0x60><== NEVER TAKEN
return;
_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
472ae: 486e fffc pea %fp@(-4)
MSBUMP(lifetime_allocated, actual_size);
472b2: 4282 clrl %d2
rtems_malloc_statistics_t *s = &rtems_malloc_statistics;
if ( !pointer )
return;
_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
472b4: 2f00 movel %d0,%sp@-
472b6: 2f39 0006 3f10 movel 63f10 <RTEMS_Malloc_Heap>,%sp@-
472bc: 4eb9 0004 e178 jsr 4e178 <_Protected_heap_Get_block_size>
MSBUMP(lifetime_allocated, actual_size);
472c2: 262e fffc movel %fp@(-4),%d3
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
if (current_depth > s->max_depth)
472c6: 4fef 000c lea %sp@(12),%sp
if ( !pointer )
return;
_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
MSBUMP(lifetime_allocated, actual_size);
472ca: 2039 0006 5ee8 movel 65ee8 <rtems_malloc_statistics+0x1c>,%d0
472d0: d6b9 0006 5eec addl 65eec <rtems_malloc_statistics+0x20>,%d3
472d6: d580 addxl %d0,%d2
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
472d8: 2003 movel %d3,%d0
472da: 90b9 0006 5ef4 subl 65ef4 <rtems_malloc_statistics+0x28>,%d0
if ( !pointer )
return;
_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
MSBUMP(lifetime_allocated, actual_size);
472e0: 23c2 0006 5ee8 movel %d2,65ee8 <rtems_malloc_statistics+0x1c>
472e6: 23c3 0006 5eec movel %d3,65eec <rtems_malloc_statistics+0x20>
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
if (current_depth > s->max_depth)
472ec: b0b9 0006 5ee4 cmpl 65ee4 <rtems_malloc_statistics+0x18>,%d0
472f2: 6306 blss 472fa <rtems_malloc_statistics_at_malloc+0x60>
s->max_depth = current_depth;
472f4: 23c0 0006 5ee4 movel %d0,65ee4 <rtems_malloc_statistics+0x18>
}
472fa: 242e fff4 movel %fp@(-12),%d2
472fe: 262e fff8 movel %fp@(-8),%d3
47302: 4e5e unlk %fp <== NOT EXECUTED
000501c4 <rtems_memalign>:
int rtems_memalign(
void **pointer,
size_t alignment,
size_t size
)
{
501c4: 4e56 0000 linkw %fp,#0
501c8: 2f0a movel %a2,%sp@-
501ca: 246e 0008 moveal %fp@(8),%a2
501ce: 2f02 movel %d2,%sp@-
void *return_this;
/*
* Parameter error checks
*/
if ( !pointer )
501d0: 4a8a tstl %a2
501d2: 675e beqs 50232 <rtems_memalign+0x6e>
return EINVAL;
*pointer = NULL;
501d4: 4292 clrl %a2@
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
501d6: 7003 moveq #3,%d0
501d8: b0b9 0006 4150 cmpl 64150 <_System_state_Current>,%d0
501de: 6748 beqs 50228 <rtems_memalign+0x64>
return EINVAL;
/*
* If some free's have been deferred, then do them now.
*/
malloc_deferred_frees_process();
501e0: 4eb9 0004 48e0 jsr 448e0 <malloc_deferred_frees_process>
Heap_Control *heap,
uintptr_t size,
uintptr_t alignment
)
{
return
501e6: 42a7 clrl %sp@-
501e8: 2f2e 000c movel %fp@(12),%sp@-
501ec: 2f2e 0010 movel %fp@(16),%sp@-
501f0: 2f39 0006 2764 movel 62764 <RTEMS_Malloc_Heap>,%sp@-
501f6: 4eb9 0004 aa60 jsr 4aa60 <_Protected_heap_Allocate_aligned_with_boundary>
return_this = _Protected_heap_Allocate_aligned(
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
501fc: 4fef 0010 lea %sp@(16),%sp
50200: 2400 movel %d0,%d2
50202: 673c beqs 50240 <rtems_memalign+0x7c>
return ENOMEM;
/*
* If configured, update the more involved statistics
*/
if ( rtems_malloc_statistics_helpers )
50204: 2079 0006 2e04 moveal 62e04 <rtems_malloc_statistics_helpers>,%a0
5020a: 4a88 tstl %a0
5020c: 670a beqs 50218 <rtems_memalign+0x54>
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
5020e: 2f0a movel %a2,%sp@-
50210: 2068 0004 moveal %a0@(4),%a0
50214: 4e90 jsr %a0@
50216: 588f addql #4,%sp
*pointer = return_this;
50218: 2482 movel %d2,%a2@
return 0;
}
5021a: 242e fff8 movel %fp@(-8),%d2
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
5021e: 4280 clrl %d0
}
50220: 246e fffc moveal %fp@(-4),%a2
50224: 4e5e unlk %fp
50226: 4e75 rts
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
!malloc_is_system_state_OK() )
50228: 4eb9 0004 48c0 jsr 448c0 <malloc_is_system_state_OK>
*pointer = NULL;
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
5022e: 4a00 tstb %d0
50230: 66ae bnes 501e0 <rtems_memalign+0x1c> <== ALWAYS TAKEN
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
50232: 242e fff8 movel %fp@(-8),%d2
/*
* Parameter error checks
*/
if ( !pointer )
return EINVAL;
50236: 7016 moveq #22,%d0
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
50238: 246e fffc moveal %fp@(-4),%a2
5023c: 4e5e unlk %fp
5023e: 4e75 rts
50240: 242e fff8 movel %fp@(-8),%d2
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
return ENOMEM;
50244: 700c moveq #12,%d0
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
50246: 246e fffc moveal %fp@(-4),%a2
5024a: 4e5e unlk %fp
...
0004883c <rtems_mkdir>:
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4883c: 4e56 ff90 linkw %fp,#-112
48840: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
int success = 0;
char *dup_path = strdup(path);
48844: 2f2e 0008 movel %fp@(8),%sp@-
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
48848: 262e 000c movel %fp@(12),%d3
int success = 0;
char *dup_path = strdup(path);
4884c: 4eb9 0006 2160 jsr 62160 <strdup>
if (dup_path != NULL) {
48852: 588f addql #4,%sp
int
rtems_mkdir(const char *path, mode_t mode)
{
int success = 0;
char *dup_path = strdup(path);
48854: 2640 moveal %d0,%a3
if (dup_path != NULL) {
48856: 4a80 tstl %d0
48858: 6700 0122 beqw 4897c <rtems_mkdir+0x140>
char *p;
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
4885c: 742f moveq #47,%d2
4885e: 1013 moveb %a3@,%d0
48860: 1200 moveb %d0,%d1
48862: 49c1 extbl %d1
48864: b481 cmpl %d1,%d2
48866: 6700 013e beqw 489a6 <rtems_mkdir+0x16a>
4886a: 244b moveal %a3,%a2
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
if (errno == EEXIST || errno == EISDIR) {
if (stat(path, &sb) < 0) {
4886c: 2e0e movel %fp,%d7
(void)umask(oumask);
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
4886e: 4bea 0001 lea %a2@(1),%a5
48872: 4282 clrl %d2
48874: 327c 0001 moveaw #1,%a1
first = 0;
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
if (errno == EEXIST || errno == EISDIR) {
48878: 2a3c 0006 0414 movel #394260,%d5
if (stat(path, &sb) < 0) {
4887e: 0687 ffff ffba addil #-70,%d7
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
48884: 49f9 0004 b3b8 lea 4b3b8 <umask>,%a4
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
if (p[0] == '\0')
4888a: 4a00 tstb %d0
4888c: 6710 beqs 4889e <rtems_mkdir+0x62> <== NEVER TAKEN
last = 1;
else if (p[0] != '/')
4888e: 49c0 extbl %d0
48890: 722f moveq #47,%d1
48892: b280 cmpl %d0,%d1
48894: 6732 beqs 488c8 <rtems_mkdir+0x8c>
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
48896: 528a addql #1,%a2
48898: 101d moveb %a5@+,%d0
if (p[0] == '\0')
4889a: 4a00 tstb %d0
4889c: 66f0 bnes 4888e <rtems_mkdir+0x52>
last = 1;
else if (p[0] != '/')
continue;
*p = '\0';
4889e: 7c01 moveq #1,%d6
488a0: 4212 clrb %a2@
if (!last && p[1] == '\0')
last = 1;
if (first) {
488a2: 4a89 tstl %a1
488a4: 6632 bnes 488d8 <rtems_mkdir+0x9c>
oumask = umask(0);
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
488a6: 4a86 tstl %d6
488a8: 6644 bnes 488ee <rtems_mkdir+0xb2>
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
488aa: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca>
488ae: 2f0b movel %a3,%sp@-
488b0: 4eb9 0004 7a0c jsr 47a0c <mkdir>
488b6: 508f addql #8,%sp
488b8: 4a80 tstl %d0
488ba: 6d5e blts 4891a <rtems_mkdir+0xde>
retval = 0;
break;
}
}
if (!last)
*p = '/';
488bc: 93c9 subal %a1,%a1
488be: 14bc 002f moveb #47,%a2@
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
488c2: 528a addql #1,%a2
488c4: 101d moveb %a5@+,%d0
488c6: 60d2 bras 4889a <rtems_mkdir+0x5e>
if (p[0] == '\0')
last = 1;
else if (p[0] != '/')
continue;
*p = '\0';
488c8: 4212 clrb %a2@
if (!last && p[1] == '\0')
488ca: 4a15 tstb %a5@
488cc: 57c1 seq %d1
488ce: 1c01 moveb %d1,%d6
488d0: 49c6 extbl %d6
488d2: 4486 negl %d6
last = 1;
if (first) {
488d4: 4a89 tstl %a1
488d6: 67ce beqs 488a6 <rtems_mkdir+0x6a>
* mkdir [-m mode] dir
*
* We change the user's umask and then restore it,
* instead of doing chmod's.
*/
oumask = umask(0);
488d8: 42a7 clrl %sp@-
488da: 4e94 jsr %a4@
488dc: 2400 movel %d0,%d2
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
488de: 0280 ffff ff3f andil #-193,%d0
488e4: 2f00 movel %d0,%sp@-
488e6: 4e94 jsr %a4@
488e8: 508f addql #8,%sp
first = 0;
}
if (last)
488ea: 4a86 tstl %d6
488ec: 67bc beqs 488aa <rtems_mkdir+0x6e>
(void)umask(oumask);
488ee: 2f02 movel %d2,%sp@-
488f0: 4e94 jsr %a4@
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
488f2: 2f03 movel %d3,%sp@-
488f4: 2f0b movel %a3,%sp@-
488f6: 4eb9 0004 7a0c jsr 47a0c <mkdir>
488fc: 4fef 000c lea %sp@(12),%sp
48900: 4a80 tstl %d0
48902: 6d16 blts 4891a <rtems_mkdir+0xde>
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
48904: 2f0b movel %a3,%sp@-
48906: 4eb9 0004 7344 jsr 47344 <free>
4890c: 588f addql #4,%sp
}
return success != 0 ? 0 : -1;
4890e: 4280 clrl %d0
}
48910: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5
48916: 4e5e unlk %fp
48918: 4e75 rts
first = 0;
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
if (errno == EEXIST || errno == EISDIR) {
4891a: 2045 moveal %d5,%a0
4891c: 283c 0006 0414 movel #394260,%d4
48922: 4e90 jsr %a0@
48924: 7211 moveq #17,%d1
48926: 2040 moveal %d0,%a0
48928: b290 cmpl %a0@,%d1
4892a: 670c beqs 48938 <rtems_mkdir+0xfc>
4892c: 2044 moveal %d4,%a0
4892e: 4e90 jsr %a0@
48930: 7215 moveq #21,%d1
48932: 2040 moveal %d0,%a0
48934: b290 cmpl %a0@,%d1
48936: 6636 bnes 4896e <rtems_mkdir+0x132> <== ALWAYS TAKEN
if (stat(path, &sb) < 0) {
48938: 2f07 movel %d7,%sp@-
4893a: 2f0b movel %a3,%sp@-
4893c: 4eb9 0004 89ec jsr 489ec <stat>
48942: 508f addql #8,%sp
48944: 4a80 tstl %d0
48946: 6d26 blts 4896e <rtems_mkdir+0x132> <== NEVER TAKEN
retval = 0;
break;
} else if (!S_ISDIR(sb.st_mode)) {
48948: 202e ffc6 movel %fp@(-58),%d0
4894c: 0280 0000 f000 andil #61440,%d0
48952: 0c80 0000 4000 cmpil #16384,%d0
48958: 6676 bnes 489d0 <rtems_mkdir+0x194>
else
errno = ENOTDIR;
retval = 0;
break;
}
if (last)
4895a: 4a86 tstl %d6
4895c: 6700 ff5e beqw 488bc <rtems_mkdir+0x80>
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
48960: 2f0b movel %a3,%sp@-
48962: 4eb9 0004 7344 jsr 47344 <free>
48968: 588f addql #4,%sp
}
return success != 0 ? 0 : -1;
4896a: 4280 clrl %d0
4896c: 60a2 bras 48910 <rtems_mkdir+0xd4>
}
}
if (!last)
*p = '/';
}
if (!first && !last)
4896e: 4a86 tstl %d6
48970: 671e beqs 48990 <rtems_mkdir+0x154> <== NEVER TAKEN
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
48972: 2f0b movel %a3,%sp@-
48974: 4eb9 0004 7344 jsr 47344 <free>
4897a: 588f addql #4,%sp
}
return success != 0 ? 0 : -1;
4897c: 70ff moveq #-1,%d0
}
4897e: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5
48984: 4e5e unlk %fp
48986: 4e75 rts
break;
} else if (!S_ISDIR(sb.st_mode)) {
if (last)
errno = EEXIST;
else
errno = ENOTDIR;
48988: 4e90 jsr %a0@
4898a: 2040 moveal %d0,%a0
4898c: 7014 moveq #20,%d0
4898e: 2080 movel %d0,%a0@
}
if (!last)
*p = '/';
}
if (!first && !last)
(void)umask(oumask);
48990: 2f02 movel %d2,%sp@-
48992: 4eb9 0004 b3b8 jsr 4b3b8 <umask>
48998: 588f addql #4,%sp
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
4899a: 2f0b movel %a3,%sp@-
4899c: 4eb9 0004 7344 jsr 47344 <free>
489a2: 588f addql #4,%sp
489a4: 60d6 bras 4897c <rtems_mkdir+0x140>
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
489a6: 45eb 0001 lea %a3@(1),%a2
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
if (errno == EEXIST || errno == EISDIR) {
if (stat(path, &sb) < 0) {
489aa: 2e0e movel %fp,%d7
(void)umask(oumask);
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
489ac: 4bea 0001 lea %a2@(1),%a5
489b0: 4282 clrl %d2
489b2: 327c 0001 moveaw #1,%a1
first = 0;
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
if (errno == EEXIST || errno == EISDIR) {
489b6: 2a3c 0006 0414 movel #394260,%d5
if (stat(path, &sb) < 0) {
489bc: 0687 ffff ffba addil #-70,%d7
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
489c2: 49f9 0004 b3b8 lea 4b3b8 <umask>,%a4
489c8: 102b 0001 moveb %a3@(1),%d0
489cc: 6000 febc braw 4888a <rtems_mkdir+0x4e>
if (stat(path, &sb) < 0) {
retval = 0;
break;
} else if (!S_ISDIR(sb.st_mode)) {
if (last)
errno = EEXIST;
489d0: 2044 moveal %d4,%a0
if (errno == EEXIST || errno == EISDIR) {
if (stat(path, &sb) < 0) {
retval = 0;
break;
} else if (!S_ISDIR(sb.st_mode)) {
if (last)
489d2: 4a86 tstl %d6
489d4: 67b2 beqs 48988 <rtems_mkdir+0x14c>
errno = EEXIST;
489d6: 4e90 jsr %a0@
489d8: 7211 moveq #17,%d1
489da: 2040 moveal %d0,%a0
489dc: 2081 movel %d1,%a0@
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
489de: 2f0b movel %a3,%sp@-
489e0: 4eb9 0004 7344 jsr 47344 <free>
489e6: 588f addql #4,%sp
489e8: 6092 bras 4897c <rtems_mkdir+0x140>
...
00048d9c <rtems_object_get_class_information>:
rtems_status_code rtems_object_get_class_information(
int the_api,
int the_class,
rtems_object_api_class_information *info
)
{
48d9c: 4e56 0000 linkw %fp,#0
48da0: 2f0a movel %a2,%sp@-
48da2: 246e 0010 moveal %fp@(16),%a2
48da6: 2f02 movel %d2,%sp@-
int i;
/*
* Validate parameters and look up information structure.
*/
if ( !info )
48da8: 4a8a tstl %a2
48daa: 6768 beqs 48e14 <rtems_object_get_class_information+0x78>
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
48dac: 3f2e 000e movew %fp@(14),%sp@-
48db0: 4267 clrw %sp@-
48db2: 2f2e 0008 movel %fp@(8),%sp@-
48db6: 4eb9 0004 ac44 jsr 4ac44 <_Objects_Get_information>
if ( !obj_info )
48dbc: 508f addql #8,%sp
* Validate parameters and look up information structure.
*/
if ( !info )
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
48dbe: 2040 moveal %d0,%a0
if ( !obj_info )
48dc0: 4a80 tstl %d0
48dc2: 675e beqs 48e22 <rtems_object_get_class_information+0x86>
return RTEMS_INVALID_NUMBER;
/*
* Return information about this object class to the user.
*/
info->minimum_id = obj_info->minimum_id;
48dc4: 24a8 0006 movel %a0@(6),%a2@
info->maximum_id = obj_info->maximum_id;
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
48dc8: 4282 clrl %d2
/*
* Return information about this object class to the user.
*/
info->minimum_id = obj_info->minimum_id;
info->maximum_id = obj_info->maximum_id;
48dca: 2568 000a 0004 movel %a0@(10),%a2@(4)
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
48dd0: 3428 000e movew %a0@(14),%d2
/*
* Return information about this object class to the user.
*/
info->minimum_id = obj_info->minimum_id;
info->maximum_id = obj_info->maximum_id;
info->auto_extend = obj_info->auto_extend;
48dd4: 1568 0010 000c moveb %a0@(16),%a2@(12)
info->maximum = obj_info->maximum;
48dda: 2542 0008 movel %d2,%a2@(8)
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
48dde: 6750 beqs 48e30 <rtems_object_get_class_information+0x94><== NEVER TAKEN
48de0: 2068 0018 moveal %a0@(24),%a0
48de4: 7201 moveq #1,%d1
48de6: 7001 moveq #1,%d0
48de8: 93c9 subal %a1,%a1
48dea: 5280 addql #1,%d0
if ( !obj_info->local_table[i] )
48dec: 4ab0 1c00 tstl %a0@(00000000,%d1:l:4)
48df0: 6718 beqs 48e0a <rtems_object_get_class_information+0x6e>
info->minimum_id = obj_info->minimum_id;
info->maximum_id = obj_info->maximum_id;
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
48df2: 2200 movel %d0,%d1
48df4: b082 cmpl %d2,%d0
48df6: 63f2 blss 48dea <rtems_object_get_class_information+0x4e><== ALWAYS TAKEN
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
48df8: 2549 000e movel %a1,%a2@(14)
return RTEMS_SUCCESSFUL;
48dfc: 4280 clrl %d0
}
48dfe: 242e fff8 movel %fp@(-8),%d2
48e02: 246e fffc moveal %fp@(-4),%a2
48e06: 4e5e unlk %fp
48e08: 4e75 rts
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
if ( !obj_info->local_table[i] )
unallocated++;
48e0a: 5289 addql #1,%a1
info->minimum_id = obj_info->minimum_id;
info->maximum_id = obj_info->maximum_id;
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
48e0c: 2200 movel %d0,%d1
48e0e: b082 cmpl %d2,%d0
48e10: 63d8 blss 48dea <rtems_object_get_class_information+0x4e><== NEVER TAKEN
48e12: 60e4 bras 48df8 <rtems_object_get_class_information+0x5c>
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
48e14: 242e fff8 movel %fp@(-8),%d2
/*
* Validate parameters and look up information structure.
*/
if ( !info )
return RTEMS_INVALID_ADDRESS;
48e18: 7009 moveq #9,%d0
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
48e1a: 246e fffc moveal %fp@(-4),%a2
48e1e: 4e5e unlk %fp
48e20: 4e75 rts
48e22: 242e fff8 movel %fp@(-8),%d2
if ( !info )
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
if ( !obj_info )
return RTEMS_INVALID_NUMBER;
48e26: 700a moveq #10,%d0
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
48e28: 246e fffc moveal %fp@(-4),%a2
48e2c: 4e5e unlk %fp
48e2e: 4e75 rts
info->minimum_id = obj_info->minimum_id;
info->maximum_id = obj_info->maximum_id;
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
48e30: 93c9 subal %a1,%a1 <== NOT EXECUTED
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
48e32: 4280 clrl %d0 <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
48e34: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED
48e38: 60c4 bras 48dfe <rtems_object_get_class_information+0x62><== NOT EXECUTED
...
00048ea4 <rtems_object_set_name>:
*/
rtems_status_code rtems_object_set_name(
rtems_id id,
const char *name
)
{
48ea4: 4e56 fffc linkw %fp,#-4
48ea8: 2f03 movel %d3,%sp@-
48eaa: 2f02 movel %d2,%sp@-
Objects_Information *information;
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
48eac: 4aae 000c tstl %fp@(12)
48eb0: 677c beqs 48f2e <rtems_object_set_name+0x8a>
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
48eb2: 4aae 0008 tstl %fp@(8)
48eb6: 6656 bnes 48f0e <rtems_object_set_name+0x6a>
48eb8: 2079 0006 2aa6 moveal 62aa6 <_Per_CPU_Information+0xe>,%a0
48ebe: 2628 0008 movel %a0@(8),%d3
information = _Objects_Get_information_id( tmpId );
48ec2: 2f03 movel %d3,%sp@-
48ec4: 4eb9 0004 ac18 jsr 4ac18 <_Objects_Get_information_id>
if ( !information )
48eca: 588f addql #4,%sp
if ( !name )
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
information = _Objects_Get_information_id( tmpId );
48ecc: 2400 movel %d0,%d2
if ( !information )
48ece: 6750 beqs 48f20 <rtems_object_set_name+0x7c> <== NEVER TAKEN
return RTEMS_INVALID_ID;
the_object = _Objects_Get( information, tmpId, &location );
48ed0: 486e fffc pea %fp@(-4)
48ed4: 2f03 movel %d3,%sp@-
48ed6: 2f00 movel %d0,%sp@-
48ed8: 4eb9 0004 ae00 jsr 4ae00 <_Objects_Get>
switch ( location ) {
48ede: 4fef 000c lea %sp@(12),%sp
48ee2: 4aae fffc tstl %fp@(-4)
48ee6: 6638 bnes 48f20 <rtems_object_set_name+0x7c>
case OBJECTS_LOCAL:
_Objects_Set_name( information, the_object, name );
48ee8: 2f2e 000c movel %fp@(12),%sp@-
48eec: 2f00 movel %d0,%sp@-
48eee: 2f02 movel %d2,%sp@-
48ef0: 4eb9 0004 afe0 jsr 4afe0 <_Objects_Set_name>
_Thread_Enable_dispatch();
48ef6: 4eb9 0004 bc20 jsr 4bc20 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48efc: 242e fff4 movel %fp@(-12),%d2
the_object = _Objects_Get( information, tmpId, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_Objects_Set_name( information, the_object, name );
_Thread_Enable_dispatch();
48f00: 4fef 000c lea %sp@(12),%sp
return RTEMS_SUCCESSFUL;
48f04: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48f06: 262e fff8 movel %fp@(-8),%d3
48f0a: 4e5e unlk %fp
48f0c: 4e75 rts
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
48f0e: 262e 0008 movel %fp@(8),%d3
information = _Objects_Get_information_id( tmpId );
48f12: 2f03 movel %d3,%sp@-
48f14: 4eb9 0004 ac18 jsr 4ac18 <_Objects_Get_information_id>
if ( !information )
48f1a: 588f addql #4,%sp
if ( !name )
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
information = _Objects_Get_information_id( tmpId );
48f1c: 2400 movel %d0,%d2
if ( !information )
48f1e: 66b0 bnes 48ed0 <rtems_object_set_name+0x2c>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48f20: 242e fff4 movel %fp@(-12),%d2
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48f24: 7004 moveq #4,%d0
}
48f26: 262e fff8 movel %fp@(-8),%d3
48f2a: 4e5e unlk %fp
48f2c: 4e75 rts
48f2e: 242e fff4 movel %fp@(-12),%d2
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
48f32: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48f34: 262e fff8 movel %fp@(-8),%d3
48f38: 4e5e unlk %fp <== NOT EXECUTED
00054f90 <rtems_partition_create>:
uint32_t length,
uint32_t buffer_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
54f90: 4e56 0000 linkw %fp,#0
54f94: 2f0a movel %a2,%sp@-
54f96: 2f02 movel %d2,%sp@-
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
54f98: 4aae 0008 tstl %fp@(8)
54f9c: 660e bnes 54fac <rtems_partition_create+0x1c>
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
54f9e: 242e fff8 movel %fp@(-8),%d2
)
{
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
54fa2: 7003 moveq #3,%d0
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
54fa4: 246e fffc moveal %fp@(-4),%a2
54fa8: 4e5e unlk %fp
54faa: 4e75 rts
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !starting_address )
54fac: 4aae 000c tstl %fp@(12)
54fb0: 671a beqs 54fcc <rtems_partition_create+0x3c>
return RTEMS_INVALID_ADDRESS;
if ( !id )
54fb2: 4aae 001c tstl %fp@(28)
54fb6: 6714 beqs 54fcc <rtems_partition_create+0x3c> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
if ( length == 0 || buffer_size == 0 || length < buffer_size ||
54fb8: 4aae 0010 tstl %fp@(16)
54fbc: 661c bnes 54fda <rtems_partition_create+0x4a>
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
54fbe: 242e fff8 movel %fp@(-8),%d2
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( length == 0 || buffer_size == 0 || length < buffer_size ||
!_Partition_Is_buffer_size_aligned( buffer_size ) )
return RTEMS_INVALID_SIZE;
54fc2: 7008 moveq #8,%d0
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
54fc4: 246e fffc moveal %fp@(-4),%a2
54fc8: 4e5e unlk %fp
54fca: 4e75 rts
54fcc: 242e fff8 movel %fp@(-8),%d2
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !starting_address )
return RTEMS_INVALID_ADDRESS;
54fd0: 7009 moveq #9,%d0
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
54fd2: 246e fffc moveal %fp@(-4),%a2
54fd6: 4e5e unlk %fp
54fd8: 4e75 rts
return RTEMS_INVALID_ADDRESS;
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( length == 0 || buffer_size == 0 || length < buffer_size ||
54fda: 4aae 0014 tstl %fp@(20)
54fde: 67de beqs 54fbe <rtems_partition_create+0x2e>
54fe0: 202e 0014 movel %fp@(20),%d0
54fe4: b0ae 0010 cmpl %fp@(16),%d0
54fe8: 62d4 bhis 54fbe <rtems_partition_create+0x2e>
*/
RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned (
uint32_t buffer_size
)
{
return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0);
54fea: 7003 moveq #3,%d0
54fec: c0ae 0014 andl %fp@(20),%d0
54ff0: 66cc bnes 54fbe <rtems_partition_create+0x2e>
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
54ff2: 103c 0003 moveb #3,%d0
54ff6: c0ae 000c andl %fp@(12),%d0
!_Partition_Is_buffer_size_aligned( buffer_size ) )
return RTEMS_INVALID_SIZE;
if ( !_Addresses_Is_aligned( starting_address ) )
54ffa: 66d0 bnes 54fcc <rtems_partition_create+0x3c>
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
54ffc: 2039 0007 c302 movel 7c302 <_Thread_Dispatch_disable_level>,%d0
++level;
55002: 5280 addql #1,%d0
_Thread_Dispatch_disable_level = level;
55004: 23c0 0007 c302 movel %d0,7c302 <_Thread_Dispatch_disable_level>
* This function allocates a partition control block from
* the inactive chain of free partition control blocks.
*/
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Allocate ( void )
{
return (Partition_Control *) _Objects_Allocate( &_Partition_Information );
5500a: 4879 0007 c18c pea 7c18c <_Partition_Information>
55010: 4eb9 0005 9f48 jsr 59f48 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_partition = _Partition_Allocate();
if ( !the_partition ) {
55016: 588f addql #4,%sp
55018: 2440 moveal %d0,%a2
5501a: 4a80 tstl %d0
5501c: 6776 beqs 55094 <rtems_partition_create+0x104>
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
the_partition->length = length;
5501e: 242e 0010 movel %fp@(16),%d2
the_partition->buffer_size = buffer_size;
the_partition->attribute_set = attribute_set;
the_partition->number_of_used_blocks = 0;
_Chain_Initialize( &the_partition->Memory, starting_address,
55022: 2002 movel %d2,%d0
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
the_partition->length = length;
55024: 2542 0014 movel %d2,%a2@(20)
the_partition->buffer_size = buffer_size;
the_partition->attribute_set = attribute_set;
the_partition->number_of_used_blocks = 0;
_Chain_Initialize( &the_partition->Memory, starting_address,
55028: 242e 0014 movel %fp@(20),%d2
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
5502c: 222e 000c movel %fp@(12),%d1
the_partition->length = length;
the_partition->buffer_size = buffer_size;
the_partition->attribute_set = attribute_set;
55030: 256e 0018 001c movel %fp@(24),%a2@(28)
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
55036: 2541 0010 movel %d1,%a2@(16)
the_partition->length = length;
the_partition->buffer_size = buffer_size;
the_partition->attribute_set = attribute_set;
the_partition->number_of_used_blocks = 0;
_Chain_Initialize( &the_partition->Memory, starting_address,
5503a: 4c42 0000 remul %d2,%d0,%d0
}
#endif
the_partition->starting_address = starting_address;
the_partition->length = length;
the_partition->buffer_size = buffer_size;
5503e: 2542 0018 movel %d2,%a2@(24)
the_partition->attribute_set = attribute_set;
the_partition->number_of_used_blocks = 0;
55042: 42aa 0020 clrl %a2@(32)
_Chain_Initialize( &the_partition->Memory, starting_address,
55046: 2f02 movel %d2,%sp@-
55048: 2f00 movel %d0,%sp@-
5504a: 2f2e 000c movel %fp@(12),%sp@-
5504e: 486a 0024 pea %a2@(36)
55052: 4eb9 0005 87c8 jsr 587c8 <_Chain_Initialize>
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
55058: 202a 0008 movel %a2@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
5505c: 2200 movel %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
5505e: 2079 0007 c1a4 moveal 7c1a4 <_Partition_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
55064: 0281 0000 ffff andil #65535,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
5506a: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
5506e: 206e 0008 moveal %fp@(8),%a0
55072: 2548 000c movel %a0,%a2@(12)
&_Partition_Information,
&the_partition->Object,
(Objects_Name) name
);
*id = the_partition->Object.id;
55076: 206e 001c moveal %fp@(28),%a0
5507a: 2080 movel %d0,%a0@
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
5507c: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
}
55082: 242e fff8 movel %fp@(-8),%d2
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
55086: 4fef 0010 lea %sp@(16),%sp
5508a: 4280 clrl %d0
}
5508c: 246e fffc moveal %fp@(-4),%a2
55090: 4e5e unlk %fp
55092: 4e75 rts
_Thread_Disable_dispatch(); /* prevents deletion */
the_partition = _Partition_Allocate();
if ( !the_partition ) {
_Thread_Enable_dispatch();
55094: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
5509a: 242e fff8 movel %fp@(-8),%d2
the_partition = _Partition_Allocate();
if ( !the_partition ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
5509e: 7005 moveq #5,%d0
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
550a0: 246e fffc moveal %fp@(-4),%a2
550a4: 4e5e unlk %fp <== NOT EXECUTED
000551d0 <rtems_partition_return_buffer>:
rtems_status_code rtems_partition_return_buffer(
rtems_id id,
void *buffer
)
{
551d0: 4e56 fff8 linkw %fp,#-8
551d4: 2f02 movel %d2,%sp@-
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
551d6: 486e fffc pea %fp@(-4)
551da: 2f2e 0008 movel %fp@(8),%sp@-
551de: 4879 0007 c18c pea 7c18c <_Partition_Information>
551e4: 4eb9 0005 a480 jsr 5a480 <_Objects_Get>
register Partition_Control *the_partition;
Objects_Locations location;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
551ea: 4fef 000c lea %sp@(12),%sp
551ee: 4aae fffc tstl %fp@(-4)
551f2: 6660 bnes 55254 <rtems_partition_return_buffer+0x84>
)
{
void *starting;
void *ending;
starting = the_partition->starting_address;
551f4: 2040 moveal %d0,%a0
551f6: 2228 0010 movel %a0@(16),%d1
ending = _Addresses_Add_offset( starting, the_partition->length );
551fa: 2068 0014 moveal %a0@(20),%a0
const void *address,
const void *base,
const void *limit
)
{
return (address >= base && address <= limit);
551fe: b2ae 000c cmpl %fp@(12),%d1
55202: 625a bhis 5525e <rtems_partition_return_buffer+0x8e>
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
55204: 41f0 1800 lea %a0@(00000000,%d1:l),%a0
const void *address,
const void *base,
const void *limit
)
{
return (address >= base && address <= limit);
55208: b1ee 000c cmpal %fp@(12),%a0
5520c: 6550 bcss 5525e <rtems_partition_return_buffer+0x8e><== NEVER TAKEN
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
5520e: 242e 000c movel %fp@(12),%d2
offset = (uint32_t) _Addresses_Subtract(
the_buffer,
the_partition->starting_address
);
return ((offset % the_partition->buffer_size) == 0);
55212: 2040 moveal %d0,%a0
55214: 9481 subl %d1,%d2
55216: 2202 movel %d2,%d1
55218: 41e8 0018 lea %a0@(24),%a0
5521c: 4c50 1002 remul %a0@,%d2,%d1
starting = the_partition->starting_address;
ending = _Addresses_Add_offset( starting, the_partition->length );
return (
_Addresses_Is_in_range( the_buffer, starting, ending ) &&
55220: 4a82 tstl %d2
55222: 663a bnes 5525e <rtems_partition_return_buffer+0x8e>
RTEMS_INLINE_ROUTINE void _Partition_Free_buffer (
Partition_Control *the_partition,
Chain_Node *the_buffer
)
{
_Chain_Append( &the_partition->Memory, the_buffer );
55224: 2f2e 000c movel %fp@(12),%sp@-
55228: 2240 moveal %d0,%a1
5522a: 4869 0024 pea %a1@(36)
5522e: 2d40 fff8 movel %d0,%fp@(-8)
55232: 4eb9 0005 8754 jsr 58754 <_Chain_Append>
case OBJECTS_LOCAL:
if ( _Partition_Is_buffer_valid( buffer, the_partition ) ) {
_Partition_Free_buffer( the_partition, buffer );
the_partition->number_of_used_blocks -= 1;
55238: 202e fff8 movel %fp@(-8),%d0
5523c: 2040 moveal %d0,%a0
5523e: 53a8 0020 subql #1,%a0@(32)
_Thread_Enable_dispatch();
55242: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55248: 242e fff4 movel %fp@(-12),%d2
case OBJECTS_LOCAL:
if ( _Partition_Is_buffer_valid( buffer, the_partition ) ) {
_Partition_Free_buffer( the_partition, buffer );
the_partition->number_of_used_blocks -= 1;
_Thread_Enable_dispatch();
5524c: 508f addql #8,%sp
return RTEMS_SUCCESSFUL;
5524e: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55250: 4e5e unlk %fp
55252: 4e75 rts
55254: 242e fff4 movel %fp@(-12),%d2
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
55258: 7004 moveq #4,%d0
}
5525a: 4e5e unlk %fp
5525c: 4e75 rts
_Partition_Free_buffer( the_partition, buffer );
the_partition->number_of_used_blocks -= 1;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
5525e: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55264: 242e fff4 movel %fp@(-12),%d2
the_partition->number_of_used_blocks -= 1;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
55268: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5526a: 4e5e unlk %fp
...
00054640 <rtems_port_external_to_internal>:
rtems_status_code rtems_port_external_to_internal(
rtems_id id,
void *external,
void **internal
)
{
54640: 4e56 fffc linkw %fp,#-4
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !internal )
54644: 4aae 0010 tstl %fp@(16)
54648: 6748 beqs 54692 <rtems_port_external_to_internal+0x52>
RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Dual_ported_memory_Control *)
5464a: 486e fffc pea %fp@(-4)
5464e: 2f2e 0008 movel %fp@(8),%sp@-
54652: 4879 0007 c154 pea 7c154 <_Dual_ported_memory_Information>
54658: 4eb9 0005 a480 jsr 5a480 <_Objects_Get>
return RTEMS_INVALID_ADDRESS;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
5465e: 4fef 000c lea %sp@(12),%sp
54662: 4aae fffc tstl %fp@(-4)
54666: 6624 bnes 5468c <rtems_port_external_to_internal+0x4c>
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
54668: 222e 000c movel %fp@(12),%d1
5466c: 2040 moveal %d0,%a0
5466e: 92a8 0014 subl %a0@(20),%d1
case OBJECTS_LOCAL:
ending = _Addresses_Subtract( external, the_port->external_base );
if ( ending > the_port->length )
54672: b2a8 0018 cmpl %a0@(24),%d1
54676: 6320 blss 54698 <rtems_port_external_to_internal+0x58>
*internal = external;
54678: 206e 0010 moveal %fp@(16),%a0
5467c: 20ae 000c movel %fp@(12),%a0@
else
*internal = _Addresses_Add_offset( the_port->internal_base,
ending );
_Thread_Enable_dispatch();
54680: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
54686: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
54688: 4e5e unlk %fp
5468a: 4e75 rts
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5468c: 7004 moveq #4,%d0
}
5468e: 4e5e unlk %fp
54690: 4e75 rts
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !internal )
return RTEMS_INVALID_ADDRESS;
54692: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
54694: 4e5e unlk %fp
54696: 4e75 rts
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
54698: 2040 moveal %d0,%a0
5469a: d2a8 0010 addl %a0@(16),%d1
5469e: 206e 0010 moveal %fp@(16),%a0
546a2: 2081 movel %d1,%a0@
if ( ending > the_port->length )
*internal = external;
else
*internal = _Addresses_Add_offset( the_port->internal_base,
ending );
_Thread_Enable_dispatch();
546a4: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
546aa: 4280 clrl %d0
546ac: 60da bras 54688 <rtems_port_external_to_internal+0x48>
...
000546d8 <rtems_port_internal_to_external>:
rtems_status_code rtems_port_internal_to_external(
rtems_id id,
void *internal,
void **external
)
{
546d8: 4e56 fffc linkw %fp,#-4
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !external )
546dc: 4aae 0010 tstl %fp@(16)
546e0: 6748 beqs 5472a <rtems_port_internal_to_external+0x52>
546e2: 486e fffc pea %fp@(-4)
546e6: 2f2e 0008 movel %fp@(8),%sp@-
546ea: 4879 0007 c154 pea 7c154 <_Dual_ported_memory_Information>
546f0: 4eb9 0005 a480 jsr 5a480 <_Objects_Get>
return RTEMS_INVALID_ADDRESS;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
546f6: 4fef 000c lea %sp@(12),%sp
546fa: 4aae fffc tstl %fp@(-4)
546fe: 6624 bnes 54724 <rtems_port_internal_to_external+0x4c>
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
54700: 222e 000c movel %fp@(12),%d1
54704: 2040 moveal %d0,%a0
54706: 92a8 0010 subl %a0@(16),%d1
case OBJECTS_LOCAL:
ending = _Addresses_Subtract( internal, the_port->internal_base );
if ( ending > the_port->length )
5470a: b2a8 0018 cmpl %a0@(24),%d1
5470e: 6320 blss 54730 <rtems_port_internal_to_external+0x58>
*external = internal;
54710: 206e 0010 moveal %fp@(16),%a0
54714: 20ae 000c movel %fp@(12),%a0@
else
*external = _Addresses_Add_offset( the_port->external_base,
ending );
_Thread_Enable_dispatch();
54718: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
5471e: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
54720: 4e5e unlk %fp
54722: 4e75 rts
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
54724: 7004 moveq #4,%d0
}
54726: 4e5e unlk %fp
54728: 4e75 rts
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !external )
return RTEMS_INVALID_ADDRESS;
5472a: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5472c: 4e5e unlk %fp
5472e: 4e75 rts
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
54730: 2040 moveal %d0,%a0
54732: d2a8 0014 addl %a0@(20),%d1
54736: 206e 0010 moveal %fp@(16),%a0
5473a: 2081 movel %d1,%a0@
if ( ending > the_port->length )
*external = internal;
else
*external = _Addresses_Add_offset( the_port->external_base,
ending );
_Thread_Enable_dispatch();
5473c: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
54742: 4280 clrl %d0
54744: 60da bras 54720 <rtems_port_internal_to_external+0x48>
...
0004242c <rtems_print_buffer>:
void rtems_print_buffer(
const unsigned char *buffer,
int length
)
{
4242c: 4e56 ff58 linkw %fp,#-168
42430: 202e 000c movel %fp@(12),%d0
42434: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
int i, mod, max;
if ( !length ) return;
42438: 4a80 tstl %d0
4243a: 6700 00e2 beqw 4251e <rtems_print_buffer+0xf2>
mod = length % 16;
4243e: 2c00 movel %d0,%d6
42440: 0286 8000 000f andil #-2147483633,%d6
42446: 6d00 01d4 bltw 4261c <rtems_print_buffer+0x1f0>
max = length - mod;
4244a: 9086 subl %d6,%d0
int i, mod, max;
if ( !length ) return;
mod = length % 16;
4244c: 2d46 ff80 movel %d6,%fp@(-128)
max = length - mod;
42450: 2d40 ff84 movel %d0,%fp@(-124)
for ( i=0 ; i<max ; i+=16 )
42454: 6f00 00c4 blew 4251a <rtems_print_buffer+0xee>
static inline void Dump_Line(
const unsigned char *buffer,
int length
);
void rtems_print_buffer(
42458: 202e ff84 movel %fp@(-124),%d0
4245c: 72f0 moveq #-16,%d1
4245e: 5380 subql #1,%d0
42460: 45ee ff88 lea %fp@(-120),%a2
42464: 4bf9 0004 ec80 lea 4ec80 <sprintf>,%a5
4246a: 49f9 0004 f3e0 lea 4f3e0 <strlen>,%a4
42470: 2a3c 0004 3ed8 movel #278232,%d5
42476: 242e 0008 movel %fp@(8),%d2
4247a: 2042 moveal %d2,%a0
4247c: c081 andl %d1,%d0
4247e: 41f0 0810 lea %a0@(00000010,%d0:l),%a0
42482: 2808 movel %a0,%d4
{
int i;
char line_buffer[120];
line_buffer[0] = '\0';
42484: 2642 moveal %d2,%a3
for( i=0 ; i<length ; i++ )
42486: 4283 clrl %d3
{
int i;
char line_buffer[120];
line_buffer[0] = '\0';
42488: 4200 clrb %d0
4248a: 1d40 ff88 moveb %d0,%fp@(-120)
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
4248e: 4280 clrl %d0
42490: 101b moveb %a3@+,%d0
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
42492: 5283 addql #1,%d3
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
42494: 2f00 movel %d0,%sp@-
42496: 2f0a movel %a2,%sp@-
42498: 4879 0005 cb15 pea 5cb15 <map.6766+0x11>
4249e: 2f0a movel %a2,%sp@-
424a0: 4e95 jsr %a5@
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
424a2: 4fef 0010 lea %sp@(16),%sp
424a6: 7210 moveq #16,%d1
424a8: b283 cmpl %d3,%d1
424aa: 66e2 bnes 4248e <rtems_print_buffer+0x62>
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
424ac: 2f0a movel %a2,%sp@-
424ae: 2642 moveal %d2,%a3
for( i=0 ; i<length ; i++ )
424b0: 4283 clrl %d3
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
424b2: 4e94 jsr %a4@
424b4: 588f addql #4,%sp
424b6: 307c 7c00 moveaw #31744,%a0
424ba: 3588 0800 movew %a0,%a2@(00000000,%d0:l)
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
424be: 4287 clrl %d7
424c0: 1e1b moveb %a3@+,%d7
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
424c2: 722e moveq #46,%d1
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
424c4: 2079 0005 e1e4 moveal 5e1e4 <__ctype_ptr__>,%a0
424ca: 1030 7801 moveb %a0@(00000001,%d7:l),%d0
424ce: 49c0 extbl %d0
424d0: 0280 0000 0097 andil #151,%d0
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
424d6: 6702 beqs 424da <rtems_print_buffer+0xae>
424d8: 2207 movel %d7,%d1
424da: 2f01 movel %d1,%sp@-
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
424dc: 5283 addql #1,%d3
sprintf( line_buffer, "%s%c", line_buffer,
424de: 2f0a movel %a2,%sp@-
424e0: 4879 0005 cb1d pea 5cb1d <map.6766+0x19>
424e6: 2f0a movel %a2,%sp@-
424e8: 4e95 jsr %a5@
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
424ea: 4fef 0010 lea %sp@(16),%sp
424ee: 7010 moveq #16,%d0
424f0: b083 cmpl %d3,%d0
424f2: 66ca bnes 424be <rtems_print_buffer+0x92>
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|\n" );
424f4: 2f0a movel %a2,%sp@-
424f6: 0682 0000 0010 addil #16,%d2
424fc: 4e94 jsr %a4@
424fe: 4201 clrb %d1
42500: 41f2 0800 lea %a2@(00000000,%d0:l),%a0
42504: 30bc 7c0a movew #31754,%a0@
42508: 1141 0002 moveb %d1,%a0@(2)
printk( line_buffer );
4250c: 2045 moveal %d5,%a0
4250e: 2e8a movel %a2,%sp@
42510: 4e90 jsr %a0@
mod = length % 16;
max = length - mod;
for ( i=0 ; i<max ; i+=16 )
42512: 588f addql #4,%sp
42514: b882 cmpl %d2,%d4
42516: 6600 ff6c bnew 42484 <rtems_print_buffer+0x58>
Dump_Line( &buffer[ i ], 16 );
if ( mod )
4251a: 4a86 tstl %d6
4251c: 660a bnes 42528 <rtems_print_buffer+0xfc>
Dump_Line( &buffer[ max ], mod );
}
4251e: 4cee 3cfc ff58 moveml %fp@(-168),%d2-%d7/%a2-%a5
42524: 4e5e unlk %fp
42526: 4e75 rts
for ( i=0 ; i<max ; i+=16 )
Dump_Line( &buffer[ i ], 16 );
if ( mod )
Dump_Line( &buffer[ max ], mod );
42528: 266e 0008 moveal %fp@(8),%a3
4252c: d7ee ff84 addal %fp@(-124),%a3
{
int i;
char line_buffer[120];
line_buffer[0] = '\0';
42530: 4200 clrb %d0
42532: 1d40 ff88 moveb %d0,%fp@(-120)
for( i=0 ; i<length ; i++ )
42536: 4a86 tstl %d6
42538: 6f00 00ee blew 42628 <rtems_print_buffer+0x1fc>
static inline void Dump_Line(
const unsigned char *buffer,
int length
);
void rtems_print_buffer(
4253c: 240b movel %a3,%d2
4253e: d486 addl %d6,%d2
42540: 284b moveal %a3,%a4
42542: 45ee ff88 lea %fp@(-120),%a2
42546: 4bf9 0004 ec80 lea 4ec80 <sprintf>,%a5
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
4254c: 4280 clrl %d0
4254e: 101c moveb %a4@+,%d0
42550: 2f00 movel %d0,%sp@-
42552: 2f0a movel %a2,%sp@-
42554: 4879 0005 cb15 pea 5cb15 <map.6766+0x11>
4255a: 2f0a movel %a2,%sp@-
4255c: 4e95 jsr %a5@
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
4255e: 4fef 0010 lea %sp@(16),%sp
42562: b48c cmpl %a4,%d2
42564: 66e6 bnes 4254c <rtems_print_buffer+0x120>
42566: 2406 movel %d6,%d2
42568: 49f9 0004 f3e0 lea 4f3e0 <strlen>,%a4
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
4256e: 2f0a movel %a2,%sp@-
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
42570: 5282 addql #1,%d2
strcat( line_buffer, " " );
42572: 4e94 jsr %a4@
42574: 588f addql #4,%sp
42576: 223c 2020 2000 movel #538976256,%d1
4257c: 2581 0800 movel %d1,%a2@(00000000,%d0:l)
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
42580: 700f moveq #15,%d0
42582: b082 cmpl %d2,%d0
42584: 6ce8 bges 4256e <rtems_print_buffer+0x142>
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
42586: 2f0a movel %a2,%sp@-
42588: 4282 clrl %d2
4258a: 4eb9 0004 f3e0 jsr 4f3e0 <strlen>
42590: 588f addql #4,%sp
42592: 323c 7c00 movew #31744,%d1
42596: 3581 0800 movew %d1,%a2@(00000000,%d0:l)
for( i=0 ; i<length ; i++ )
4259a: 4a86 tstl %d6
4259c: 6f3e bles 425dc <rtems_print_buffer+0x1b0>
static inline void Dump_Line(
const unsigned char *buffer,
int length
);
void rtems_print_buffer(
4259e: dc8b addl %a3,%d6
425a0: 4bf9 0004 ec80 lea 4ec80 <sprintf>,%a5
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
425a6: 4282 clrl %d2
425a8: 141b moveb %a3@+,%d2
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
425aa: 722e moveq #46,%d1
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
425ac: 2079 0005 e1e4 moveal 5e1e4 <__ctype_ptr__>,%a0
425b2: 1030 2801 moveb %a0@(00000001,%d2:l),%d0
425b6: 49c0 extbl %d0
425b8: 0280 0000 0097 andil #151,%d0
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
425be: 6702 beqs 425c2 <rtems_print_buffer+0x196>
425c0: 2202 movel %d2,%d1
425c2: 2f01 movel %d1,%sp@-
425c4: 2f0a movel %a2,%sp@-
425c6: 4879 0005 cb1d pea 5cb1d <map.6766+0x19>
425cc: 2f0a movel %a2,%sp@-
425ce: 4e95 jsr %a5@
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
425d0: 4fef 0010 lea %sp@(16),%sp
425d4: bc8b cmpl %a3,%d6
425d6: 66ce bnes 425a6 <rtems_print_buffer+0x17a>
425d8: 242e ff80 movel %fp@(-128),%d2
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
425dc: 2f0a movel %a2,%sp@-
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
425de: 5282 addql #1,%d2
strcat( line_buffer, " " );
425e0: 4e94 jsr %a4@
425e2: 588f addql #4,%sp
425e4: 307c 2000 moveaw #8192,%a0
425e8: 3588 0800 movew %a0,%a2@(00000000,%d0:l)
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
425ec: 700f moveq #15,%d0
425ee: b082 cmpl %d2,%d0
425f0: 6cea bges 425dc <rtems_print_buffer+0x1b0>
strcat( line_buffer, " " );
strcat( line_buffer, "|\n" );
425f2: 2f0a movel %a2,%sp@-
425f4: 4eb9 0004 f3e0 jsr 4f3e0 <strlen>
425fa: 4201 clrb %d1
425fc: 41f2 0800 lea %a2@(00000000,%d0:l),%a0
42600: 30bc 7c0a movew #31754,%a0@
42604: 1141 0002 moveb %d1,%a0@(2)
printk( line_buffer );
42608: 2e8a movel %a2,%sp@
4260a: 4eb9 0004 3ed8 jsr 43ed8 <printk>
42610: 588f addql #4,%sp
for ( i=0 ; i<max ; i+=16 )
Dump_Line( &buffer[ i ], 16 );
if ( mod )
Dump_Line( &buffer[ max ], mod );
}
42612: 4cee 3cfc ff58 moveml %fp@(-168),%d2-%d7/%a2-%a5
42618: 4e5e unlk %fp
4261a: 4e75 rts
int i, mod, max;
if ( !length ) return;
mod = length % 16;
4261c: 5386 subql #1,%d6
4261e: 72f0 moveq #-16,%d1
42620: 8c81 orl %d1,%d6
42622: 5286 addql #1,%d6
42624: 6000 fe24 braw 4244a <rtems_print_buffer+0x1e>
42628: 45ee ff88 lea %fp@(-120),%a2
4262c: 49f9 0004 f3e0 lea 4f3e0 <strlen>,%a4
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
42632: 4282 clrl %d2
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
42634: 5282 addql #1,%d2
strcat( line_buffer, " " );
42636: 2f0a movel %a2,%sp@-
42638: 4e94 jsr %a4@
4263a: 588f addql #4,%sp
4263c: 223c 2020 2000 movel #538976256,%d1
42642: 2581 0800 movel %d1,%a2@(00000000,%d0:l)
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
42646: 700f moveq #15,%d0
42648: b082 cmpl %d2,%d0
4264a: 6c00 ff22 bgew 4256e <rtems_print_buffer+0x142>
4264e: 6000 ff36 braw 42586 <rtems_print_buffer+0x15a> <== NOT EXECUTED
...
00073a24 <rtems_rate_monotonic_period>:
rtems_status_code rtems_rate_monotonic_period(
rtems_id id,
rtems_interval length
)
{
73a24: 4e56 fff8 linkw %fp,#-8
73a28: 2f03 movel %d3,%sp@-
73a2a: 2f02 movel %d2,%sp@-
73a2c: 486e fffc pea %fp@(-4)
73a30: 2f2e 0008 movel %fp@(8),%sp@-
73a34: 4879 000a 01c0 pea a01c0 <_Rate_monotonic_Information>
73a3a: 4eb9 0004 8c00 jsr 48c00 <_Objects_Get>
rtems_rate_monotonic_period_states local_state;
ISR_Level level;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
73a40: 4fef 000c lea %sp@(12),%sp
73a44: 4aae fffc tstl %fp@(-4)
73a48: 6624 bnes 73a6e <rtems_rate_monotonic_period+0x4a>
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
73a4a: 2279 0009 fff2 moveal 9fff2 <_Per_CPU_Information+0xe>,%a1
73a50: 2040 moveal %d0,%a0
73a52: b3e8 0040 cmpal %a0@(64),%a1
73a56: 6726 beqs 73a7e <rtems_rate_monotonic_period+0x5a>
_Thread_Enable_dispatch();
73a58: 4eb9 0004 98e8 jsr 498e8 <_Thread_Enable_dispatch>
return RTEMS_NOT_OWNER_OF_RESOURCE;
73a5e: 7417 moveq #23,%d2
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
73a60: 2002 movel %d2,%d0
73a62: 242e fff0 movel %fp@(-16),%d2
73a66: 262e fff4 movel %fp@(-12),%d3
73a6a: 4e5e unlk %fp
73a6c: 4e75 rts
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
73a6e: 7404 moveq #4,%d2
}
73a70: 2002 movel %d2,%d0
73a72: 242e fff0 movel %fp@(-16),%d2
73a76: 262e fff4 movel %fp@(-12),%d3
73a7a: 4e5e unlk %fp
73a7c: 4e75 rts
if ( !_Thread_Is_executing( the_period->owner ) ) {
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
if ( length == RTEMS_PERIOD_STATUS ) {
73a7e: 4aae 000c tstl %fp@(12)
73a82: 6700 008a beqw 73b0e <rtems_rate_monotonic_period+0xea>
}
_Thread_Enable_dispatch();
return( return_value );
}
_ISR_Disable( level );
73a86: 223c 0000 0700 movel #1792,%d1
73a8c: 40c2 movew %sr,%d2
73a8e: 8282 orl %d2,%d1
73a90: 46c1 movew %d1,%sr
if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {
73a92: 2040 moveal %d0,%a0
73a94: 2228 0038 movel %a0@(56),%d1
73a98: 6700 00a8 beqw 73b42 <rtems_rate_monotonic_period+0x11e>
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {
73a9c: 7602 moveq #2,%d3
73a9e: b681 cmpl %d1,%d3
73aa0: 6700 010e beqw 73bb0 <rtems_rate_monotonic_period+0x18c>
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {
73aa4: 7604 moveq #4,%d3
73aa6: b681 cmpl %d1,%d3
73aa8: 66c4 bnes 73a6e <rtems_rate_monotonic_period+0x4a><== NEVER TAKEN
/*
* Update statistics from the concluding period
*/
_Rate_monotonic_Update_statistics( the_period );
73aaa: 2f00 movel %d0,%sp@-
73aac: 2d40 fff8 movel %d0,%fp@(-8)
73ab0: 4eba fe08 jsr %pc@(738ba <_Rate_monotonic_Update_statistics>)
_ISR_Enable( level );
73ab4: 46c2 movew %d2,%sr
the_period->state = RATE_MONOTONIC_ACTIVE;
73ab6: 7202 moveq #2,%d1
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Scheduler_Release_job(the_period->owner, the_period->next_length);
_Thread_Enable_dispatch();
return RTEMS_TIMEOUT;
73ab8: 7406 moveq #6,%d2
*/
_Rate_monotonic_Update_statistics( the_period );
_ISR_Enable( level );
the_period->state = RATE_MONOTONIC_ACTIVE;
73aba: 202e fff8 movel %fp@(-8),%d0
73abe: 2040 moveal %d0,%a0
the_period->next_length = length;
73ac0: 226e 000c moveal %fp@(12),%a1
*/
_Rate_monotonic_Update_statistics( the_period );
_ISR_Enable( level );
the_period->state = RATE_MONOTONIC_ACTIVE;
73ac4: 2141 0038 movel %d1,%a0@(56)
the_period->next_length = length;
73ac8: 2149 003c movel %a1,%a0@(60)
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
73acc: 2149 001c movel %a1,%a0@(28)
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
73ad0: 4868 0010 pea %a0@(16)
73ad4: 4879 0009 ff16 pea 9ff16 <_Watchdog_Ticks_chain>
73ada: 4eb9 0004 a548 jsr 4a548 <_Watchdog_Insert>
73ae0: 202e fff8 movel %fp@(-8),%d0
73ae4: 2040 moveal %d0,%a0
73ae6: 2f28 003c movel %a0@(60),%sp@-
73aea: 2f28 0040 movel %a0@(64),%sp@-
73aee: 2079 0009 b1b0 moveal 9b1b0 <_Scheduler+0x34>,%a0
73af4: 4e90 jsr %a0@
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Scheduler_Release_job(the_period->owner, the_period->next_length);
_Thread_Enable_dispatch();
73af6: 4eb9 0004 98e8 jsr 498e8 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
73afc: 262e fff4 movel %fp@(-12),%d3
73b00: 2002 movel %d2,%d0
the_period->state = RATE_MONOTONIC_ACTIVE;
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Scheduler_Release_job(the_period->owner, the_period->next_length);
_Thread_Enable_dispatch();
73b02: 4fef 0014 lea %sp@(20),%sp
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
73b06: 242e fff0 movel %fp@(-16),%d2
73b0a: 4e5e unlk %fp
73b0c: 4e75 rts
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
if ( length == RTEMS_PERIOD_STATUS ) {
switch ( the_period->state ) {
73b0e: 2040 moveal %d0,%a0
73b10: 7204 moveq #4,%d1
73b12: 2028 0038 movel %a0@(56),%d0
73b16: b280 cmpl %d0,%d1
73b18: 651e bcss 73b38 <rtems_rate_monotonic_period+0x114><== NEVER TAKEN
73b1a: 41f9 0009 9958 lea 99958 <CSWTCH.24>,%a0
73b20: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2
case RATE_MONOTONIC_ACTIVE:
default: /* unreached -- only to remove warnings */
return_value = RTEMS_SUCCESSFUL;
break;
}
_Thread_Enable_dispatch();
73b24: 4eb9 0004 98e8 jsr 498e8 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
73b2a: 2002 movel %d2,%d0
73b2c: 242e fff0 movel %fp@(-16),%d2
73b30: 262e fff4 movel %fp@(-12),%d3
73b34: 4e5e unlk %fp
73b36: 4e75 rts
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
if ( length == RTEMS_PERIOD_STATUS ) {
switch ( the_period->state ) {
73b38: 4282 clrl %d2 <== NOT EXECUTED
case RATE_MONOTONIC_ACTIVE:
default: /* unreached -- only to remove warnings */
return_value = RTEMS_SUCCESSFUL;
break;
}
_Thread_Enable_dispatch();
73b3a: 4eb9 0004 98e8 jsr 498e8 <_Thread_Enable_dispatch> <== NOT EXECUTED
73b40: 60e8 bras 73b2a <rtems_rate_monotonic_period+0x106><== NOT EXECUTED
return( return_value );
}
_ISR_Disable( level );
if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {
_ISR_Enable( level );
73b42: 46c2 movew %d2,%sr
the_period->next_length = length;
73b44: 226e 000c moveal %fp@(12),%a1
NULL
);
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
73b48: 4282 clrl %d2
_ISR_Disable( level );
if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {
_ISR_Enable( level );
the_period->next_length = length;
73b4a: 2149 003c movel %a1,%a0@(60)
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
73b4e: 2f00 movel %d0,%sp@-
73b50: 2d40 fff8 movel %d0,%fp@(-8)
73b54: 4eb9 0007 3984 jsr 73984 <_Rate_monotonic_Initiate_statistics>
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
73b5a: 202e fff8 movel %fp@(-8),%d0
73b5e: 43f9 0007 3c48 lea 73c48 <_Rate_monotonic_Timeout>,%a1
73b64: 2040 moveal %d0,%a0
the_period->state = RATE_MONOTONIC_ACTIVE;
73b66: 7202 moveq #2,%d1
73b68: 2149 002c movel %a1,%a0@(44)
the_watchdog->id = id;
73b6c: 262e 0008 movel %fp@(8),%d3
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
73b70: 226e 000c moveal %fp@(12),%a1
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
73b74: 2143 0030 movel %d3,%a0@(48)
73b78: 2141 0038 movel %d1,%a0@(56)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
73b7c: 42a8 0018 clrl %a0@(24)
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
73b80: 42a8 0034 clrl %a0@(52)
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
73b84: 2149 001c movel %a1,%a0@(28)
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
73b88: 4868 0010 pea %a0@(16)
73b8c: 4879 0009 ff16 pea 9ff16 <_Watchdog_Ticks_chain>
73b92: 4eb9 0004 a548 jsr 4a548 <_Watchdog_Insert>
id,
NULL
);
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
73b98: 4eb9 0004 98e8 jsr 498e8 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
73b9e: 262e fff4 movel %fp@(-12),%d3
73ba2: 2002 movel %d2,%d0
id,
NULL
);
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
73ba4: 4fef 000c lea %sp@(12),%sp
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
73ba8: 242e fff0 movel %fp@(-16),%d2
73bac: 4e5e unlk %fp
73bae: 4e75 rts
if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {
/*
* Update statistics from the concluding period.
*/
_Rate_monotonic_Update_statistics( the_period );
73bb0: 2f00 movel %d0,%sp@-
73bb2: 2d40 fff8 movel %d0,%fp@(-8)
73bb6: 4eba fd02 jsr %pc@(738ba <_Rate_monotonic_Update_statistics>)
/*
* This tells the _Rate_monotonic_Timeout that this task is
* in the process of blocking on the period and that we
* may be changing the length of the next period.
*/
the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;
73bba: 202e fff8 movel %fp@(-8),%d0
73bbe: 7201 moveq #1,%d1
73bc0: 2040 moveal %d0,%a0
the_period->next_length = length;
73bc2: 226e 000c moveal %fp@(12),%a1
/*
* This tells the _Rate_monotonic_Timeout that this task is
* in the process of blocking on the period and that we
* may be changing the length of the next period.
*/
the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;
73bc6: 2141 0038 movel %d1,%a0@(56)
the_period->next_length = length;
73bca: 2149 003c movel %a1,%a0@(60)
_ISR_Enable( level );
73bce: 46c2 movew %d2,%sr
_Thread_Executing->Wait.id = the_period->Object.id;
73bd0: 2079 0009 fff2 moveal 9fff2 <_Per_CPU_Information+0xe>,%a0
73bd6: 2240 moveal %d0,%a1
73bd8: 5089 addql #8,%a1
73bda: 2151 0020 movel %a1@,%a0@(32)
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
73bde: 4878 4000 pea 4000 <D_MAX_EXP+0x3801>
73be2: 2d40 fff8 movel %d0,%fp@(-8)
73be6: 2f08 movel %a0,%sp@-
73be8: 4eb9 0004 a1e4 jsr 4a1e4 <_Thread_Set_state>
/*
* Did the watchdog timer expire while we were actually blocking
* on it?
*/
_ISR_Disable( level );
73bee: 223c 0000 0700 movel #1792,%d1
73bf4: 40c2 movew %sr,%d2
73bf6: 8282 orl %d2,%d1
73bf8: 46c1 movew %d1,%sr
local_state = the_period->state;
73bfa: 202e fff8 movel %fp@(-8),%d0
73bfe: 2040 moveal %d0,%a0
73c00: 2228 0038 movel %a0@(56),%d1
the_period->state = RATE_MONOTONIC_ACTIVE;
73c04: 2143 0038 movel %d3,%a0@(56)
_ISR_Enable( level );
73c08: 46c2 movew %d2,%sr
/*
* If it did, then we want to unblock ourself and continue as
* if nothing happen. The period was reset in the timeout routine.
*/
if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )
73c0a: 7003 moveq #3,%d0
73c0c: 4fef 000c lea %sp@(12),%sp
73c10: b081 cmpl %d1,%d0
73c12: 6716 beqs 73c2a <rtems_rate_monotonic_period+0x206>
_Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
_Thread_Enable_dispatch();
73c14: 4eb9 0004 98e8 jsr 498e8 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
73c1a: 4282 clrl %d2
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
73c1c: 2002 movel %d2,%d0
73c1e: 242e fff0 movel %fp@(-16),%d2
73c22: 262e fff4 movel %fp@(-12),%d3
73c26: 4e5e unlk %fp
73c28: 4e75 rts
/*
* If it did, then we want to unblock ourself and continue as
* if nothing happen. The period was reset in the timeout routine.
*/
if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )
_Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
73c2a: 4878 4000 pea 4000 <D_MAX_EXP+0x3801>
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
73c2e: 4282 clrl %d2
/*
* If it did, then we want to unblock ourself and continue as
* if nothing happen. The period was reset in the timeout routine.
*/
if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )
_Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
73c30: 2f39 0009 fff2 movel 9fff2 <_Per_CPU_Information+0xe>,%sp@-
73c36: 4eb9 0004 94e8 jsr 494e8 <_Thread_Clear_state>
73c3c: 508f addql #8,%sp
_Thread_Enable_dispatch();
73c3e: 4eb9 0004 98e8 jsr 498e8 <_Thread_Enable_dispatch>
73c44: 60d6 bras 73c1c <rtems_rate_monotonic_period+0x1f8>
...
000664e8 <rtems_rate_monotonic_report_statistics_with_plugin>:
void rtems_rate_monotonic_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
664e8: 4e56 ff78 linkw %fp,#-136
664ec: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
664f0: 242e 0008 movel %fp@(8),%d2
664f4: 246e 000c moveal %fp@(12),%a2
rtems_id id;
rtems_rate_monotonic_period_statistics the_stats;
rtems_rate_monotonic_period_status the_status;
char name[5];
if ( !print )
664f8: 4a8a tstl %a2
664fa: 6700 0082 beqw 6657e <rtems_rate_monotonic_report_statistics_with_plugin+0x96>
return;
(*print)( context, "Period information by period\n" );
664fe: 4879 0009 7050 pea 97050 <_TOD_Days_per_month+0x68>
66504: 2f02 movel %d2,%sp@-
66506: 4e92 jsr %a2@
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
(*print)( context, "--- CPU times are in seconds ---\n" );
66508: 4879 0009 706e pea 9706e <_TOD_Days_per_month+0x86>
6650e: 2f02 movel %d2,%sp@-
66510: 4e92 jsr %a2@
(*print)( context, "--- Wall times are in seconds ---\n" );
66512: 4879 0009 7090 pea 97090 <_TOD_Days_per_month+0xa8>
66518: 2f02 movel %d2,%sp@-
6651a: 4e92 jsr %a2@
Be sure to test the various cases.
(*print)( context,"\
1234567890123456789012345678901234567890123456789012345678901234567890123456789\
\n");
*/
(*print)( context, " ID OWNER COUNT MISSED "
6651c: 4879 0009 70b3 pea 970b3 <_TOD_Days_per_month+0xcb>
66522: 2f02 movel %d2,%sp@-
66524: 4e92 jsr %a2@
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
" "
#endif
" WALL TIME\n"
);
(*print)( context, " "
66526: 4fef 001c lea %sp@(28),%sp
6652a: 2ebc 0009 70fe movel #618750,%sp@
66530: 2f02 movel %d2,%sp@-
66532: 4e92 jsr %a2@
/*
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
66534: 2e39 000a 01c6 movel a01c6 <_Rate_monotonic_Information+0x6>,%d7
6653a: 508f addql #8,%sp
6653c: beb9 000a 01ca cmpl a01ca <_Rate_monotonic_Information+0xa>,%d7
66542: 623a bhis 6657e <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NEVER TAKEN
66544: 260e movel %fp,%d3
#if defined(RTEMS_DEBUG)
status = rtems_rate_monotonic_get_status( id, &the_status );
if ( status != RTEMS_SUCCESSFUL )
continue;
#else
(void) rtems_rate_monotonic_get_status( id, &the_status );
66546: 2a0e movel %fp,%d5
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
66548: 280e movel %fp,%d4
6654a: 0683 ffff ffc8 addil #-56,%d3
66550: 47f9 0007 3538 lea 73538 <rtems_rate_monotonic_get_statistics>,%a3
#if defined(RTEMS_DEBUG)
status = rtems_rate_monotonic_get_status( id, &the_status );
if ( status != RTEMS_SUCCESSFUL )
continue;
#else
(void) rtems_rate_monotonic_get_status( id, &the_status );
66556: 0685 ffff ffb0 addil #-80,%d5
6655c: 4bf9 0007 36e4 lea 736e4 <rtems_rate_monotonic_get_status>,%a5
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
66562: 0684 ffff ffa3 addil #-93,%d4
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
status = rtems_rate_monotonic_get_statistics( id, &the_stats );
66568: 2f03 movel %d3,%sp@-
6656a: 2f07 movel %d7,%sp@-
6656c: 4e93 jsr %a3@
if ( status != RTEMS_SUCCESSFUL )
6656e: 508f addql #8,%sp
66570: 4a80 tstl %d0
66572: 6714 beqs 66588 <rtems_rate_monotonic_report_statistics_with_plugin+0xa0>
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
66574: 5287 addql #1,%d7
/*
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
66576: beb9 000a 01ca cmpl a01ca <_Rate_monotonic_Information+0xa>,%d7
6657c: 63ea blss 66568 <rtems_rate_monotonic_report_statistics_with_plugin+0x80>
the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall
);
#endif
}
}
}
6657e: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5
66584: 4e5e unlk %fp
66586: 4e75 rts
#if defined(RTEMS_DEBUG)
status = rtems_rate_monotonic_get_status( id, &the_status );
if ( status != RTEMS_SUCCESSFUL )
continue;
#else
(void) rtems_rate_monotonic_get_status( id, &the_status );
66588: 2f05 movel %d5,%sp@-
struct timespec cpu_average;
struct timespec *min_cpu = &the_stats.min_cpu_time;
struct timespec *max_cpu = &the_stats.max_cpu_time;
struct timespec *total_cpu = &the_stats.total_cpu_time;
_Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
6658a: 49f9 0006 7160 lea 67160 <_Timespec_Divide_by_integer>,%a4
#if defined(RTEMS_DEBUG)
status = rtems_rate_monotonic_get_status( id, &the_status );
if ( status != RTEMS_SUCCESSFUL )
continue;
#else
(void) rtems_rate_monotonic_get_status( id, &the_status );
66590: 2f07 movel %d7,%sp@-
66592: 4e95 jsr %a5@
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
66594: 2f04 movel %d4,%sp@-
66596: 4878 0005 pea 5 <COMPARE>
6659a: 2f2e ffb0 movel %fp@(-80),%sp@-
6659e: 4eb9 0004 e620 jsr 4e620 <rtems_object_get_name>
/*
* Print part of report line that is not dependent on granularity
*/
(*print)( context,
665a4: 2f2e ffcc movel %fp@(-52),%sp@-
665a8: 2f2e ffc8 movel %fp@(-56),%sp@-
665ac: 2f04 movel %d4,%sp@-
665ae: 2f07 movel %d7,%sp@-
665b0: 4879 0009 714a pea 9714a <_TOD_Days_per_month+0x162>
665b6: 2f02 movel %d2,%sp@-
665b8: 4e92 jsr %a2@
);
/*
* If the count is zero, don't print statistics
*/
if (the_stats.count == 0) {
665ba: 202e ffc8 movel %fp@(-56),%d0
665be: 4fef 002c lea %sp@(44),%sp
665c2: 6618 bnes 665dc <rtems_rate_monotonic_report_statistics_with_plugin+0xf4>
(*print)( context, "\n" );
665c4: 4879 0009 20cb pea 920cb <_CPU_m68k_BFFFO_table+0x382>
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
665ca: 5287 addql #1,%d7
/*
* If the count is zero, don't print statistics
*/
if (the_stats.count == 0) {
(*print)( context, "\n" );
665cc: 2f02 movel %d2,%sp@-
665ce: 4e92 jsr %a2@
continue;
665d0: 508f addql #8,%sp
/*
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
665d2: beb9 000a 01ca cmpl a01ca <_Rate_monotonic_Information+0xa>,%d7
665d8: 638e blss 66568 <rtems_rate_monotonic_report_statistics_with_plugin+0x80><== ALWAYS TAKEN
665da: 60a2 bras 6657e <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
struct timespec cpu_average;
struct timespec *min_cpu = &the_stats.min_cpu_time;
struct timespec *max_cpu = &the_stats.max_cpu_time;
struct timespec *total_cpu = &the_stats.total_cpu_time;
_Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
665dc: 486e ffa8 pea %fp@(-88)
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
665e0: 5287 addql #1,%d7
struct timespec cpu_average;
struct timespec *min_cpu = &the_stats.min_cpu_time;
struct timespec *max_cpu = &the_stats.max_cpu_time;
struct timespec *total_cpu = &the_stats.total_cpu_time;
_Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
665e2: 2f00 movel %d0,%sp@-
665e4: 486e ffe0 pea %fp@(-32)
665e8: 4e94 jsr %a4@
(*print)( context,
665ea: 202e ffac movel %fp@(-84),%d0
665ee: 223c 0000 03e8 movel #1000,%d1
665f4: 4c41 0800 remsl %d1,%d0,%d0
665f8: 2c2e ffdc movel %fp@(-36),%d6
665fc: 2f00 movel %d0,%sp@-
665fe: 2001 movel %d1,%d0
66600: 2f2e ffa8 movel %fp@(-88),%sp@-
66604: 4c40 6806 remsl %d0,%d6,%d6
66608: 202e ffd4 movel %fp@(-44),%d0
6660c: 2246 moveal %d6,%a1
6660e: 223c 0000 03e8 movel #1000,%d1
66614: 2f09 movel %a1,%sp@-
66616: 2f2e ffd8 movel %fp@(-40),%sp@-
6661a: 4c41 0800 remsl %d1,%d0,%d0
struct timespec *min_wall = &the_stats.min_wall_time;
struct timespec *max_wall = &the_stats.max_wall_time;
struct timespec *total_wall = &the_stats.total_wall_time;
_Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
(*print)( context,
6661e: 2c3c 0000 03e8 movel #1000,%d6
struct timespec *min_cpu = &the_stats.min_cpu_time;
struct timespec *max_cpu = &the_stats.max_cpu_time;
struct timespec *total_cpu = &the_stats.total_cpu_time;
_Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
(*print)( context,
66624: 2f00 movel %d0,%sp@-
66626: 2f2e ffd0 movel %fp@(-48),%sp@-
6662a: 4879 0009 7161 pea 97161 <_TOD_Days_per_month+0x179>
66630: 2f02 movel %d2,%sp@-
66632: 4e92 jsr %a2@
struct timespec wall_average;
struct timespec *min_wall = &the_stats.min_wall_time;
struct timespec *max_wall = &the_stats.max_wall_time;
struct timespec *total_wall = &the_stats.total_wall_time;
_Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
66634: 4fef 002c lea %sp@(44),%sp
66638: 486e ffa8 pea %fp@(-88)
6663c: 2f2e ffc8 movel %fp@(-56),%sp@-
66640: 486e fff8 pea %fp@(-8)
66644: 4e94 jsr %a4@
(*print)( context,
66646: 202e ffac movel %fp@(-84),%d0
6664a: 4c46 0800 remsl %d6,%d0,%d0
6664e: 222e fff4 movel %fp@(-12),%d1
66652: 2f00 movel %d0,%sp@-
66654: 2f2e ffa8 movel %fp@(-88),%sp@-
66658: 4c46 1801 remsl %d6,%d1,%d1
6665c: 202e ffec movel %fp@(-20),%d0
66660: 2241 moveal %d1,%a1
66662: 2f09 movel %a1,%sp@-
66664: 2f2e fff0 movel %fp@(-16),%sp@-
66668: 4c46 0800 remsl %d6,%d0,%d0
6666c: 2f00 movel %d0,%sp@-
6666e: 2f2e ffe8 movel %fp@(-24),%sp@-
66672: 4879 0009 7180 pea 97180 <_TOD_Days_per_month+0x198>
66678: 2f02 movel %d2,%sp@-
6667a: 4e92 jsr %a2@
6667c: 4fef 002c lea %sp@(44),%sp
/*
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
66680: beb9 000a 01ca cmpl a01ca <_Rate_monotonic_Information+0xa>,%d7
66686: 6300 fee0 blsw 66568 <rtems_rate_monotonic_report_statistics_with_plugin+0x80>
6668a: 6000 fef2 braw 6657e <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
000666a8 <rtems_rate_monotonic_reset_all_statistics>:
/*
* rtems_rate_monotonic_reset_all_statistics
*/
void rtems_rate_monotonic_reset_all_statistics( void )
{
666a8: 4e56 0000 linkw %fp,#0
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
666ac: 2039 0009 fe7a movel 9fe7a <_Thread_Dispatch_disable_level>,%d0
++level;
666b2: 5280 addql #1,%d0
666b4: 2f0a movel %a2,%sp@-
_Thread_Dispatch_disable_level = level;
666b6: 23c0 0009 fe7a movel %d0,9fe7a <_Thread_Dispatch_disable_level>
666bc: 2f02 movel %d2,%sp@-
/*
* Cycle through all possible ids and try to reset each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
666be: 2439 000a 01c6 movel a01c6 <_Rate_monotonic_Information+0x6>,%d2
666c4: 45f9 0006 66f4 lea 666f4 <rtems_rate_monotonic_reset_statistics>,%a2
666ca: b4b9 000a 01ca cmpl a01ca <_Rate_monotonic_Information+0xa>,%d2
666d0: 6210 bhis 666e2 <rtems_rate_monotonic_reset_all_statistics+0x3a><== NEVER TAKEN
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
(void) rtems_rate_monotonic_reset_statistics( id );
666d2: 2f02 movel %d2,%sp@-
* Cycle through all possible ids and try to reset each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
666d4: 5282 addql #1,%d2
(void) rtems_rate_monotonic_reset_statistics( id );
666d6: 4e92 jsr %a2@
/*
* Cycle through all possible ids and try to reset each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
666d8: 588f addql #4,%sp
666da: b4b9 000a 01ca cmpl a01ca <_Rate_monotonic_Information+0xa>,%d2
666e0: 63f0 blss 666d2 <rtems_rate_monotonic_reset_all_statistics+0x2a>
/*
* Done so exit thread dispatching disabled critical section.
*/
_Thread_Enable_dispatch();
}
666e2: 242e fff8 movel %fp@(-8),%d2
666e6: 246e fffc moveal %fp@(-4),%a2
666ea: 4e5e unlk %fp
}
/*
* Done so exit thread dispatching disabled critical section.
*/
_Thread_Enable_dispatch();
666ec: 4ef9 0004 98e8 jmp 498e8 <_Thread_Enable_dispatch>
...
000486de <rtems_rbheap_allocate>:
return big_enough;
}
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{
486de: 4e56 ffec linkw %fp,#-20
486e2: 202e 000c movel %fp@(12),%d0
486e6: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
486ea: 266e 0008 moveal %fp@(8),%a3
#include <stdlib.h>
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)
{
uintptr_t excess = value % alignment;
486ee: 2400 movel %d0,%d2
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{
void *ptr = NULL;
rtems_chain_control *free_chain = &control->free_chunk_chain;
rtems_rbtree_control *chunk_tree = &control->chunk_tree;
uintptr_t alignment = control->alignment;
486f0: 262b 002e movel %a3@(46),%d3
#include <stdlib.h>
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)
{
uintptr_t excess = value % alignment;
486f4: 4c43 2001 remul %d3,%d1,%d2
if (excess > 0) {
486f8: 4a81 tstl %d1
486fa: 664a bnes 48746 <rtems_rbheap_allocate+0x68> <== NEVER TAKEN
rtems_chain_control *free_chain = &control->free_chunk_chain;
rtems_rbtree_control *chunk_tree = &control->chunk_tree;
uintptr_t alignment = control->alignment;
uintptr_t aligned_size = align_up(alignment, size);
if (size > 0 && size <= aligned_size) {
486fc: 2600 movel %d0,%d3
486fe: 6716 beqs 48716 <rtems_rbheap_allocate+0x38>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
48700: 204b moveal %a3,%a0
48702: 2458 moveal %a0@+,%a2
{
rtems_chain_node *current = rtems_chain_first(free_chain);
const rtems_chain_node *tail = rtems_chain_tail(free_chain);
rtems_rbheap_chunk *big_enough = NULL;
while (current != tail && big_enough == NULL) {
48704: b1ca cmpal %a2,%a0
48706: 670e beqs 48716 <rtems_rbheap_allocate+0x38>
rtems_rbheap_chunk *free_chunk = (rtems_rbheap_chunk *) current;
if (free_chunk->size >= size) {
48708: 242a 001c movel %a2@(28),%d2
4870c: b682 cmpl %d2,%d3
4870e: 6312 blss 48722 <rtems_rbheap_allocate+0x44>
rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));
if (chunk != NULL) {
rtems_rbheap_add_to_spare_descriptor_chain(control, chunk);
}
}
48710: 2452 moveal %a2@,%a2
{
rtems_chain_node *current = rtems_chain_first(free_chain);
const rtems_chain_node *tail = rtems_chain_tail(free_chain);
rtems_rbheap_chunk *big_enough = NULL;
while (current != tail && big_enough == NULL) {
48712: b5c8 cmpal %a0,%a2
48714: 66f2 bnes 48708 <rtems_rbheap_allocate+0x2a> <== NEVER TAKEN
return big_enough;
}
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{
void *ptr = NULL;
48716: 4280 clrl %d0
}
}
}
return ptr;
}
48718: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
4871e: 4e5e unlk %fp
48720: 4e75 rts
rtems_rbheap_chunk *free_chunk = search_free_chunk(free_chain, aligned_size);
if (free_chunk != NULL) {
uintptr_t free_size = free_chunk->size;
if (free_size > aligned_size) {
48722: b483 cmpl %d3,%d2
48724: 6236 bhis 4875c <rtems_rbheap_allocate+0x7e>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
48726: 2252 moveal %a2@,%a1
previous = the_node->previous;
48728: 206a 0004 moveal %a2@(4),%a0
ptr = (void *) new_chunk->begin;
}
} else {
rtems_chain_extract_unprotected(&free_chunk->chain_node);
rtems_chain_set_off_chain(&free_chunk->chain_node);
ptr = (void *) free_chunk->begin;
4872c: 202a 0018 movel %a2@(24),%d0
next->previous = previous;
48730: 2348 0004 movel %a0,%a1@(4)
previous->next = next;
48734: 2089 movel %a1,%a0@
*/
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(
Chain_Node *node
)
{
node->next = node->previous = NULL;
48736: 42aa 0004 clrl %a2@(4)
4873a: 4292 clrl %a2@
}
}
}
return ptr;
}
4873c: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
48742: 4e5e unlk %fp
48744: 4e75 rts
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)
{
uintptr_t excess = value % alignment;
if (excess > 0) {
value += alignment - excess;
48746: d680 addl %d0,%d3 <== NOT EXECUTED
48748: 9681 subl %d1,%d3 <== NOT EXECUTED
rtems_chain_control *free_chain = &control->free_chunk_chain;
rtems_rbtree_control *chunk_tree = &control->chunk_tree;
uintptr_t alignment = control->alignment;
uintptr_t aligned_size = align_up(alignment, size);
if (size > 0 && size <= aligned_size) {
4874a: 4a80 tstl %d0 <== NOT EXECUTED
4874c: 67c8 beqs 48716 <rtems_rbheap_allocate+0x38> <== NOT EXECUTED
4874e: b680 cmpl %d0,%d3 <== NOT EXECUTED
48750: 65c4 bcss 48716 <rtems_rbheap_allocate+0x38> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
48752: 204b moveal %a3,%a0 <== NOT EXECUTED
48754: 2458 moveal %a0@+,%a2 <== NOT EXECUTED
{
rtems_chain_node *current = rtems_chain_first(free_chain);
const rtems_chain_node *tail = rtems_chain_tail(free_chain);
rtems_rbheap_chunk *big_enough = NULL;
while (current != tail && big_enough == NULL) {
48756: b1ca cmpal %a2,%a0 <== NOT EXECUTED
48758: 66ae bnes 48708 <rtems_rbheap_allocate+0x2a> <== NOT EXECUTED
4875a: 60ba bras 48716 <rtems_rbheap_allocate+0x38> <== NOT EXECUTED
if (free_chunk != NULL) {
uintptr_t free_size = free_chunk->size;
if (free_size > aligned_size) {
rtems_rbheap_chunk *new_chunk = get_chunk(control);
4875c: 2f0b movel %a3,%sp@-
4875e: 4eba fd5c jsr %pc@(484bc <get_chunk>)
if (new_chunk != NULL) {
48762: 588f addql #4,%sp
if (free_chunk != NULL) {
uintptr_t free_size = free_chunk->size;
if (free_size > aligned_size) {
rtems_rbheap_chunk *new_chunk = get_chunk(control);
48764: 2840 moveal %d0,%a4
if (new_chunk != NULL) {
48766: 4a80 tstl %d0
48768: 67ac beqs 48716 <rtems_rbheap_allocate+0x38> <== NEVER TAKEN
uintptr_t new_free_size = free_size - aligned_size;
4876a: 9483 subl %d3,%d2
free_chunk->size = new_free_size;
new_chunk->begin = free_chunk->begin + new_free_size;
4876c: 2002 movel %d2,%d0
4876e: d0aa 0018 addl %a2@(24),%d0
rtems_rbheap_chunk *new_chunk = get_chunk(control);
if (new_chunk != NULL) {
uintptr_t new_free_size = free_size - aligned_size;
free_chunk->size = new_free_size;
48772: 2542 001c movel %d2,%a2@(28)
new_chunk->begin = free_chunk->begin + new_free_size;
48776: 2940 0018 movel %d0,%a4@(24)
new_chunk->size = aligned_size;
4877a: 2943 001c movel %d3,%a4@(28)
*/
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(
Chain_Node *node
)
{
node->next = node->previous = NULL;
4877e: 42ac 0004 clrl %a4@(4)
48782: 4294 clrl %a4@
static void insert_into_tree(
rtems_rbtree_control *tree,
rtems_rbheap_chunk *chunk
)
{
_RBTree_Insert_unprotected(tree, &chunk->tree_node);
48784: 486c 0008 pea %a4@(8)
48788: 486b 0018 pea %a3@(24)
4878c: 4eb9 0004 a0bc jsr 4a0bc <_RBTree_Insert_unprotected>
free_chunk->size = new_free_size;
new_chunk->begin = free_chunk->begin + new_free_size;
new_chunk->size = aligned_size;
rtems_chain_set_off_chain(&new_chunk->chain_node);
insert_into_tree(chunk_tree, new_chunk);
ptr = (void *) new_chunk->begin;
48792: 202c 0018 movel %a4@(24),%d0
48796: 508f addql #8,%sp
}
}
}
return ptr;
}
48798: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
4879e: 4e5e unlk %fp <== NOT EXECUTED
000488a2 <rtems_rbheap_extend_descriptors_with_malloc>:
void rtems_rbheap_extend_descriptors_with_malloc(rtems_rbheap_control *control)
{
488a2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
488a6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
488a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));
488aa: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
{
/* Do nothing */
}
void rtems_rbheap_extend_descriptors_with_malloc(rtems_rbheap_control *control)
{
488ae: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));
488b2: 4eb9 0004 3b84 jsr 43b84 <malloc> <== NOT EXECUTED
if (chunk != NULL) {
488b8: 588f addql #4,%sp <== NOT EXECUTED
488ba: 4a80 tstl %d0 <== NOT EXECUTED
488bc: 6718 beqs 488d6 <rtems_rbheap_extend_descriptors_with_malloc+0x34><== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
488be: 206a 000c moveal %a2@(12),%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert_unprotected(_Chain_Head(the_chain), the_node);
488c2: 2240 moveal %d0,%a1 <== NOT EXECUTED
488c4: 47ea 000c lea %a2@(12),%a3 <== NOT EXECUTED
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
488c8: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert_unprotected(_Chain_Head(the_chain), the_node);
488cc: 234b 0004 movel %a3,%a1@(4) <== NOT EXECUTED
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
488d0: 2288 movel %a0,%a1@ <== NOT EXECUTED
before_node->previous = the_node;
488d2: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
rtems_rbheap_add_to_spare_descriptor_chain(control, chunk);
}
}
488d6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
488da: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
488de: 4e5e unlk %fp <== NOT EXECUTED
...
000487a2 <rtems_rbheap_free>:
_RBTree_Extract_unprotected(chunk_tree, &b->tree_node);
}
}
rtems_status_code rtems_rbheap_free(rtems_rbheap_control *control, void *ptr)
{
487a2: 4e56 ffc4 linkw %fp,#-60
487a6: 202e 000c movel %fp@(12),%d0
487aa: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
487ae: 2a6e 0008 moveal %fp@(8),%a5
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (ptr != NULL) {
487b2: 4a80 tstl %d0
487b4: 6700 00cc beqw 48882 <rtems_rbheap_free+0xe0>
#define NULL_PAGE rtems_rbheap_chunk_of_node(NULL)
static rtems_rbheap_chunk *find(rtems_rbtree_control *chunk_tree, uintptr_t key)
{
rtems_rbheap_chunk chunk = { .begin = key };
487b8: 49ee ffe8 lea %fp@(-24),%a4
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (ptr != NULL) {
rtems_chain_control *free_chain = &control->free_chunk_chain;
rtems_rbtree_control *chunk_tree = &control->chunk_tree;
487bc: 47ed 0018 lea %a5@(24),%a3
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Find_unprotected(
RBTree_Control *the_rbtree,
RBTree_Node *the_node
)
{
RBTree_Node* iter_node = the_rbtree->root;
487c0: 246d 001c moveal %a5@(28),%a2
#define NULL_PAGE rtems_rbheap_chunk_of_node(NULL)
static rtems_rbheap_chunk *find(rtems_rbtree_control *chunk_tree, uintptr_t key)
{
rtems_rbheap_chunk chunk = { .begin = key };
487c4: 42ae ffe0 clrl %fp@(-32)
487c8: 42ae ffe4 clrl %fp@(-28)
487cc: 4294 clrl %a4@
487ce: 42ae ffec clrl %fp@(-20)
487d2: 42ae fff0 clrl %fp@(-16)
487d6: 42ae fff4 clrl %fp@(-12)
487da: 42ae fffc clrl %fp@(-4)
487de: 2d40 fff8 movel %d0,%fp@(-8)
RBTree_Node* found = NULL;
int compare_result;
while (iter_node) {
487e2: 4a8a tstl %a2
487e4: 6700 00a8 beqw 4888e <rtems_rbheap_free+0xec>
487e8: 4282 clrl %d2
compare_result = the_rbtree->compare_function(the_node, iter_node);
487ea: 2f0a movel %a2,%sp@-
487ec: 206b 0010 moveal %a3@(16),%a0
487f0: 2f0c movel %a4,%sp@-
487f2: 4e90 jsr %a0@
if ( _RBTree_Is_equal( compare_result ) ) {
487f4: 508f addql #8,%sp
487f6: 4a80 tstl %d0
487f8: 6608 bnes 48802 <rtems_rbheap_free+0x60> <== NEVER TAKEN
found = iter_node;
if ( the_rbtree->is_unique )
487fa: 240a movel %a2,%d2
487fc: 4a2b 0014 tstb %a3@(20)
48800: 6612 bnes 48814 <rtems_rbheap_free+0x72> <== ALWAYS TAKEN
RTEMS_INLINE_ROUTINE bool _RBTree_Is_greater(
int compare_result
)
{
return compare_result > 0;
48802: 4a80 tstl %d0
48804: 5ec0 sgt %d0
break;
}
RBTree_Direction dir =
(RBTree_Direction) _RBTree_Is_greater( compare_result );
iter_node = iter_node->child[dir];
48806: 7201 moveq #1,%d1
RTEMS_INLINE_ROUTINE bool _RBTree_Is_greater(
int compare_result
)
{
return compare_result > 0;
48808: 49c0 extbl %d0
break;
}
RBTree_Direction dir =
(RBTree_Direction) _RBTree_Is_greater( compare_result );
iter_node = iter_node->child[dir];
4880a: 9280 subl %d0,%d1
4880c: 2472 1c00 moveal %a2@(00000000,%d1:l:4),%a2
)
{
RBTree_Node* iter_node = the_rbtree->root;
RBTree_Node* found = NULL;
int compare_result;
while (iter_node) {
48810: 4a8a tstl %a2
48812: 66d6 bnes 487ea <rtems_rbheap_free+0x48> <== NEVER TAKEN
return rtems_rbheap_chunk_of_node(
48814: 2442 moveal %d2,%a2
48816: 518a subql #8,%a2
if (ptr != NULL) {
rtems_chain_control *free_chain = &control->free_chunk_chain;
rtems_rbtree_control *chunk_tree = &control->chunk_tree;
rtems_rbheap_chunk *chunk = find(chunk_tree, (uintptr_t) ptr);
if (chunk != NULL_PAGE) {
48818: 70f8 moveq #-8,%d0
4881a: b08a cmpl %a2,%d0
4881c: 6770 beqs 4888e <rtems_rbheap_free+0xec>
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(
const Chain_Node *node
)
{
return (node->next == NULL) && (node->previous == NULL);
4881e: 4a92 tstl %a2@
48820: 670c beqs 4882e <rtems_rbheap_free+0x8c>
check_and_merge(free_chain, chunk_tree, chunk, succ);
add_to_chain(free_chain, chunk);
check_and_merge(free_chain, chunk_tree, chunk, pred);
} else {
sc = RTEMS_INCORRECT_STATE;
48822: 700e moveq #14,%d0
sc = RTEMS_INVALID_ID;
}
}
return sc;
}
48824: 4cee 3c1c ffc4 moveml %fp@(-60),%d2-%d4/%a2-%a5
4882a: 4e5e unlk %fp
4882c: 4e75 rts
4882e: 4aaa 0004 tstl %a2@(4)
48832: 66ee bnes 48822 <rtems_rbheap_free+0x80> <== NEVER TAKEN
static rtems_rbheap_chunk *get_next(
const rtems_rbheap_chunk *chunk,
RBTree_Direction dir
)
{
return rtems_rbheap_chunk_of_node(
48834: 42a7 clrl %sp@-
48836: 283c 0004 a33c movel #303932,%d4
4883c: 2f02 movel %d2,%sp@-
4883e: 2044 moveal %d4,%a0
if (chunk != NULL_PAGE) {
if (!rtems_rbheap_is_chunk_free(chunk)) {
rtems_rbheap_chunk *pred = get_next(chunk, RBT_LEFT);
rtems_rbheap_chunk *succ = get_next(chunk, RBT_RIGHT);
check_and_merge(free_chain, chunk_tree, chunk, succ);
48840: 49fa fcf6 lea %pc@(48538 <check_and_merge>),%a4
static rtems_rbheap_chunk *get_next(
const rtems_rbheap_chunk *chunk,
RBTree_Direction dir
)
{
return rtems_rbheap_chunk_of_node(
48844: 4e90 jsr %a0@
48846: 4878 0001 pea 1 <ADD>
4884a: 2044 moveal %d4,%a0
4884c: 2600 movel %d0,%d3
4884e: 2f02 movel %d2,%sp@-
48850: 4e90 jsr %a0@
if (chunk != NULL_PAGE) {
if (!rtems_rbheap_is_chunk_free(chunk)) {
rtems_rbheap_chunk *pred = get_next(chunk, RBT_LEFT);
rtems_rbheap_chunk *succ = get_next(chunk, RBT_RIGHT);
check_and_merge(free_chain, chunk_tree, chunk, succ);
48852: 5180 subql #8,%d0
48854: 2f00 movel %d0,%sp@-
48856: 2f0a movel %a2,%sp@-
48858: 2f0b movel %a3,%sp@-
4885a: 2f0d movel %a5,%sp@-
4885c: 4e94 jsr %a4@
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4885e: 2055 moveal %a5@,%a0
add_to_chain(free_chain, chunk);
check_and_merge(free_chain, chunk_tree, chunk, pred);
48860: 4fef 0020 lea %sp@(32),%sp
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
48864: 254d 0004 movel %a5,%a2@(4)
before_node = after_node->next;
after_node->next = the_node;
48868: 2a8a movel %a2,%a5@
the_node->next = before_node;
before_node->previous = the_node;
4886a: 214a 0004 movel %a2,%a0@(4)
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
4886e: 2488 movel %a0,%a2@
48870: 2043 moveal %d3,%a0
48872: 4868 fff8 pea %a0@(-8)
48876: 2f0a movel %a2,%sp@-
48878: 2f0b movel %a3,%sp@-
4887a: 2f0d movel %a5,%sp@-
4887c: 4e94 jsr %a4@
4887e: 4fef 0010 lea %sp@(16),%sp
}
}
rtems_status_code rtems_rbheap_free(rtems_rbheap_control *control, void *ptr)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
48882: 4280 clrl %d0
sc = RTEMS_INVALID_ID;
}
}
return sc;
}
48884: 4cee 3c1c ffc4 moveml %fp@(-60),%d2-%d4/%a2-%a5
4888a: 4e5e unlk %fp
4888c: 4e75 rts
check_and_merge(free_chain, chunk_tree, chunk, pred);
} else {
sc = RTEMS_INCORRECT_STATE;
}
} else {
sc = RTEMS_INVALID_ID;
4888e: 7004 moveq #4,%d0
}
}
return sc;
}
48890: 4cee 3c1c ffc4 moveml %fp@(-60),%d2-%d4/%a2-%a5
48896: 4e5e unlk %fp <== NOT EXECUTED
000485b2 <rtems_rbheap_initialize>:
uintptr_t area_size,
uintptr_t alignment,
rtems_rbheap_extend_descriptors extend_descriptors,
void *handler_arg
)
{
485b2: 4e56 fff0 linkw %fp,#-16
485b6: 202e 0014 movel %fp@(20),%d0
485ba: 48d7 041c moveml %d2-%d4/%a2,%sp@
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (alignment > 0) {
485be: 4a80 tstl %d0
485c0: 660c bnes 485ce <rtems_rbheap_initialize+0x1c>
}
} else {
sc = RTEMS_INVALID_ADDRESS;
}
} else {
sc = RTEMS_INVALID_NUMBER;
485c2: 700a moveq #10,%d0
}
return sc;
}
485c4: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
485ca: 4e5e unlk %fp
485cc: 4e75 rts
#include <stdlib.h>
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)
{
uintptr_t excess = value % alignment;
485ce: 262e 000c movel %fp@(12),%d3
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (alignment > 0) {
uintptr_t begin = (uintptr_t) area_begin;
uintptr_t end = begin + area_size;
485d2: 242e 000c movel %fp@(12),%d2
485d6: d4ae 0010 addl %fp@(16),%d2
#include <stdlib.h>
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)
{
uintptr_t excess = value % alignment;
485da: 4c40 3001 remul %d0,%d1,%d3
if (excess > 0) {
485de: 4a81 tstl %d1
485e0: 6600 00c2 bnew 486a4 <rtems_rbheap_initialize+0xf2>
return value;
}
static uintptr_t align_down(uintptr_t alignment, uintptr_t value)
{
uintptr_t excess = value % alignment;
485e4: 2602 movel %d2,%d3
return value - excess;
485e6: 2802 movel %d2,%d4
return value;
}
static uintptr_t align_down(uintptr_t alignment, uintptr_t value)
{
uintptr_t excess = value % alignment;
485e8: 4c40 3001 remul %d0,%d1,%d3
return value - excess;
485ec: 9881 subl %d1,%d4
uintptr_t begin = (uintptr_t) area_begin;
uintptr_t end = begin + area_size;
uintptr_t aligned_begin = align_up(alignment, begin);
uintptr_t aligned_end = align_down(alignment, end);
if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
485ee: b4ae 000c cmpl %fp@(12),%d2
485f2: 6300 00b6 blsw 486aa <rtems_rbheap_initialize+0xf8>
485f6: 262e 000c movel %fp@(12),%d3
485fa: b684 cmpl %d4,%d3
485fc: 6400 00ac bccw 486aa <rtems_rbheap_initialize+0xf8>
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
48600: 206e 0008 moveal %fp@(8),%a0
48604: 2448 moveal %a0,%a2
48606: 45ea 0010 lea %a2@(16),%a2
4860a: 226e 0008 moveal %fp@(8),%a1
4860e: 5889 addql #4,%a1
48610: 2089 movel %a1,%a0@
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48612: 2248 moveal %a0,%a1
48614: 43e9 000c lea %a1@(12),%a1
Chain_Node *tail = _Chain_Tail( the_chain );
48618: 214a 000c movel %a2,%a0@(12)
{
the_rbtree->permanent_null = NULL;
the_rbtree->root = NULL;
the_rbtree->first[0] = NULL;
the_rbtree->first[1] = NULL;
the_rbtree->compare_function = compare_function;
4861c: 45fa fe86 lea %pc@(484a4 <chunk_compare>),%a2
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48620: 2149 0014 movel %a1,%a0@(20)
rtems_chain_initialize_empty(free_chain);
rtems_chain_initialize_empty(&control->spare_descriptor_chain);
rtems_rbtree_initialize_empty(chunk_tree, chunk_compare, true);
control->alignment = alignment;
control->handler_arg = handler_arg;
48624: 43ee 001c lea %fp@(28),%a1
48628: 214a 0028 movel %a2,%a0@(40)
control->extend_descriptors = extend_descriptors;
4862c: 45ee 0018 lea %fp@(24),%a2
rtems_chain_initialize_empty(free_chain);
rtems_chain_initialize_empty(&control->spare_descriptor_chain);
rtems_rbtree_initialize_empty(chunk_tree, chunk_compare, true);
control->alignment = alignment;
control->handler_arg = handler_arg;
48630: 2151 0036 movel %a1@,%a0@(54)
control->extend_descriptors = extend_descriptors;
48634: 2152 0032 movel %a2@,%a0@(50)
the_rbtree->is_unique = is_unique;
48638: 7201 moveq #1,%d1
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4863a: 42a8 0004 clrl %a0@(4)
4863e: 1141 002c moveb %d1,%a0@(44)
tail->previous = head;
48642: 2148 0008 movel %a0,%a0@(8)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
48646: 42a8 0010 clrl %a0@(16)
RBTree_Control *the_rbtree,
RBTree_Compare_function compare_function,
bool is_unique
)
{
the_rbtree->permanent_null = NULL;
4864a: 42a8 0018 clrl %a0@(24)
the_rbtree->root = NULL;
4864e: 42a8 001c clrl %a0@(28)
the_rbtree->first[0] = NULL;
48652: 42a8 0020 clrl %a0@(32)
the_rbtree->first[1] = NULL;
48656: 42a8 0024 clrl %a0@(36)
rtems_rbheap_chunk *first = NULL;
rtems_chain_initialize_empty(free_chain);
rtems_chain_initialize_empty(&control->spare_descriptor_chain);
rtems_rbtree_initialize_empty(chunk_tree, chunk_compare, true);
control->alignment = alignment;
4865a: 2140 002e movel %d0,%a0@(46)
control->handler_arg = handler_arg;
control->extend_descriptors = extend_descriptors;
first = get_chunk(control);
4865e: 2f08 movel %a0,%sp@-
48660: 4eba fe5a jsr %pc@(484bc <get_chunk>)
if (first != NULL) {
48664: 588f addql #4,%sp
rtems_rbtree_initialize_empty(chunk_tree, chunk_compare, true);
control->alignment = alignment;
control->handler_arg = handler_arg;
control->extend_descriptors = extend_descriptors;
first = get_chunk(control);
48666: 2040 moveal %d0,%a0
if (first != NULL) {
48668: 4a80 tstl %d0
4866a: 6766 beqs 486d2 <rtems_rbheap_initialize+0x120>
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4866c: 246e 0008 moveal %fp@(8),%a2
first->begin = aligned_begin;
first->size = aligned_end - aligned_begin;
48670: 9883 subl %d3,%d4
48672: 2252 moveal %a2@,%a1
48674: 2144 001c movel %d4,%a0@(28)
control->handler_arg = handler_arg;
control->extend_descriptors = extend_descriptors;
first = get_chunk(control);
if (first != NULL) {
first->begin = aligned_begin;
48678: 2143 0018 movel %d3,%a0@(24)
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4867c: 214a 0004 movel %a2,%a0@(4)
before_node = after_node->next;
after_node->next = the_node;
48680: 2480 movel %d0,%a2@
the_node->next = before_node;
before_node->previous = the_node;
48682: 2340 0004 movel %d0,%a1@(4)
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
48686: 2089 movel %a1,%a0@
static void insert_into_tree(
rtems_rbtree_control *tree,
rtems_rbheap_chunk *chunk
)
{
_RBTree_Insert_unprotected(tree, &chunk->tree_node);
48688: 4868 0008 pea %a0@(8)
4868c: 486a 0018 pea %a2@(24)
48690: 4eb9 0004 a0bc jsr 4a0bc <_RBTree_Insert_unprotected>
48696: 508f addql #8,%sp
uintptr_t alignment,
rtems_rbheap_extend_descriptors extend_descriptors,
void *handler_arg
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
48698: 4280 clrl %d0
} else {
sc = RTEMS_INVALID_NUMBER;
}
return sc;
}
4869a: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
486a0: 4e5e unlk %fp
486a2: 4e75 rts
uintptr_t begin = (uintptr_t) area_begin;
uintptr_t end = begin + area_size;
uintptr_t aligned_begin = align_up(alignment, begin);
uintptr_t aligned_end = align_down(alignment, end);
if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
486a4: b4ae 000c cmpl %fp@(12),%d2
486a8: 620c bhis 486b6 <rtems_rbheap_initialize+0x104>
insert_into_tree(chunk_tree, first);
} else {
sc = RTEMS_NO_MEMORY;
}
} else {
sc = RTEMS_INVALID_ADDRESS;
486aa: 7009 moveq #9,%d0
} else {
sc = RTEMS_INVALID_NUMBER;
}
return sc;
}
486ac: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
486b2: 4e5e unlk %fp
486b4: 4e75 rts
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)
{
uintptr_t excess = value % alignment;
if (excess > 0) {
value += alignment - excess;
486b6: 262e 000c movel %fp@(12),%d3
486ba: d680 addl %d0,%d3
486bc: 9681 subl %d1,%d3
uintptr_t begin = (uintptr_t) area_begin;
uintptr_t end = begin + area_size;
uintptr_t aligned_begin = align_up(alignment, begin);
uintptr_t aligned_end = align_down(alignment, end);
if (begin < end && begin <= aligned_begin && aligned_begin < aligned_end) {
486be: b6ae 000c cmpl %fp@(12),%d3
486c2: 65e6 bcss 486aa <rtems_rbheap_initialize+0xf8> <== NEVER TAKEN
return value;
}
static uintptr_t align_down(uintptr_t alignment, uintptr_t value)
{
uintptr_t excess = value % alignment;
486c4: 2802 movel %d2,%d4
486c6: 4c40 4001 remul %d0,%d1,%d4
return value - excess;
486ca: 2802 movel %d2,%d4
486cc: 9881 subl %d1,%d4
486ce: 6000 ff2a braw 485fa <rtems_rbheap_initialize+0x48>
first->begin = aligned_begin;
first->size = aligned_end - aligned_begin;
add_to_chain(free_chain, first);
insert_into_tree(chunk_tree, first);
} else {
sc = RTEMS_NO_MEMORY;
486d2: 701a moveq #26,%d0
} else {
sc = RTEMS_INVALID_NUMBER;
}
return sc;
}
486d4: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
486da: 4e5e unlk %fp <== NOT EXECUTED
00055e80 <rtems_region_extend>:
rtems_status_code rtems_region_extend(
rtems_id id,
void *starting_address,
uintptr_t length
)
{
55e80: 4e56 fffc linkw %fp,#-4
55e84: 2f0a movel %a2,%sp@-
55e86: 2f02 movel %d2,%sp@-
uintptr_t amount_extended;
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
if ( !starting_address )
55e88: 4aae 000c tstl %fp@(12)
55e8c: 6700 0082 beqw 55f10 <rtems_region_extend+0x90>
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator(); /* to prevent deletion */
55e90: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@-
55e96: 4eb9 0005 86c0 jsr 586c0 <_API_Mutex_Lock>
RTEMS_INLINE_ROUTINE Region_Control *_Region_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Region_Control *)
55e9c: 486e fffc pea %fp@(-4)
55ea0: 2f2e 0008 movel %fp@(8),%sp@-
55ea4: 4879 0007 c1fc pea 7c1fc <_Region_Information>
55eaa: 4eb9 0005 a440 jsr 5a440 <_Objects_Get_no_protection>
the_region = _Region_Get( id, &location );
switch ( location ) {
55eb0: 4fef 0010 lea %sp@(16),%sp
55eb4: 2440 moveal %d0,%a2
55eb6: 4aae fffc tstl %fp@(-4)
55eba: 6642 bnes 55efe <rtems_region_extend+0x7e>
case OBJECTS_LOCAL:
amount_extended = _Heap_Extend(
55ebc: 42a7 clrl %sp@-
55ebe: 2f2e 0010 movel %fp@(16),%sp@-
55ec2: 2f2e 000c movel %fp@(12),%sp@-
55ec6: 486a 0068 pea %a2@(104)
55eca: 4eb9 0005 947c jsr 5947c <_Heap_Extend>
starting_address,
length,
0
);
if ( amount_extended > 0 ) {
55ed0: 4fef 0010 lea %sp@(16),%sp
55ed4: 4a80 tstl %d0
55ed6: 6748 beqs 55f20 <rtems_region_extend+0xa0>
the_region->length += amount_extended;
55ed8: d1aa 0054 addl %d0,%a2@(84)
the_region->maximum_segment_size += amount_extended;
return_status = RTEMS_SUCCESSFUL;
55edc: 4282 clrl %d2
0
);
if ( amount_extended > 0 ) {
the_region->length += amount_extended;
the_region->maximum_segment_size += amount_extended;
55ede: d1aa 005c addl %d0,%a2@(92)
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
55ee2: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@-
55ee8: 4eb9 0005 8720 jsr 58720 <_API_Mutex_Unlock>
55eee: 588f addql #4,%sp
return return_status;
}
55ef0: 2002 movel %d2,%d0
55ef2: 242e fff4 movel %fp@(-12),%d2
55ef6: 246e fff8 moveal %fp@(-8),%a2
55efa: 4e5e unlk %fp
55efc: 4e75 rts
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
55efe: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@-
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
55f04: 7404 moveq #4,%d2
break;
}
_RTEMS_Unlock_allocator();
55f06: 4eb9 0005 8720 jsr 58720 <_API_Mutex_Unlock>
55f0c: 588f addql #4,%sp
55f0e: 60e0 bras 55ef0 <rtems_region_extend+0x70>
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
if ( !starting_address )
return RTEMS_INVALID_ADDRESS;
55f10: 7409 moveq #9,%d2
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
55f12: 2002 movel %d2,%d0
55f14: 242e fff4 movel %fp@(-12),%d2
55f18: 246e fff8 moveal %fp@(-8),%a2
55f1c: 4e5e unlk %fp
55f1e: 4e75 rts
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
55f20: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@-
if ( amount_extended > 0 ) {
the_region->length += amount_extended;
the_region->maximum_segment_size += amount_extended;
return_status = RTEMS_SUCCESSFUL;
} else {
return_status = RTEMS_INVALID_ADDRESS;
55f26: 7409 moveq #9,%d2
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
55f28: 4eb9 0005 8720 jsr 58720 <_API_Mutex_Unlock>
55f2e: 588f addql #4,%sp
55f30: 60be bras 55ef0 <rtems_region_extend+0x70>
...
00055fcc <rtems_region_get_information>:
rtems_status_code rtems_region_get_information(
rtems_id id,
Heap_Information_block *the_info
)
{
55fcc: 4e56 fffc linkw %fp,#-4
55fd0: 2f02 movel %d2,%sp@-
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
55fd2: 4aae 000c tstl %fp@(12)
55fd6: 6768 beqs 56040 <rtems_region_get_information+0x74><== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
55fd8: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@-
55fde: 4eb9 0005 86c0 jsr 586c0 <_API_Mutex_Lock>
55fe4: 486e fffc pea %fp@(-4)
55fe8: 2f2e 0008 movel %fp@(8),%sp@-
55fec: 4879 0007 c1fc pea 7c1fc <_Region_Information>
55ff2: 4eb9 0005 a440 jsr 5a440 <_Objects_Get_no_protection>
the_region = _Region_Get( id, &location );
switch ( location ) {
55ff8: 4fef 0010 lea %sp@(16),%sp
55ffc: 4aae fffc tstl %fp@(-4)
56000: 662c bnes 5602e <rtems_region_get_information+0x62>
case OBJECTS_LOCAL:
_Heap_Get_information( &the_region->Memory, the_info );
56002: 2f2e 000c movel %fp@(12),%sp@-
56006: 2040 moveal %d0,%a0
56008: 4868 0068 pea %a0@(104)
return_status = RTEMS_SUCCESSFUL;
5600c: 4282 clrl %d2
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_Heap_Get_information( &the_region->Memory, the_info );
5600e: 4eb9 0005 98e4 jsr 598e4 <_Heap_Get_information>
return_status = RTEMS_SUCCESSFUL;
break;
56014: 508f addql #8,%sp
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
56016: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@-
5601c: 4eb9 0005 8720 jsr 58720 <_API_Mutex_Unlock>
56022: 588f addql #4,%sp
return return_status;
}
56024: 2002 movel %d2,%d0
56026: 242e fff8 movel %fp@(-8),%d2
5602a: 4e5e unlk %fp
5602c: 4e75 rts
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5602e: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@-
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
56034: 7404 moveq #4,%d2
break;
}
_RTEMS_Unlock_allocator();
56036: 4eb9 0005 8720 jsr 58720 <_API_Mutex_Unlock>
5603c: 588f addql #4,%sp
5603e: 60e4 bras 56024 <rtems_region_get_information+0x58>
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
56040: 7409 moveq #9,%d2
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
56042: 2002 movel %d2,%d0
56044: 242e fff8 movel %fp@(-8),%d2
56048: 4e5e unlk %fp <== NOT EXECUTED
000561bc <rtems_region_get_segment_size>:
rtems_status_code rtems_region_get_segment_size(
rtems_id id,
void *segment,
uintptr_t *size
)
{
561bc: 4e56 fff8 linkw %fp,#-8
Objects_Locations location;
rtems_status_code return_status = RTEMS_SUCCESSFUL;
register Region_Control *the_region;
if ( !segment )
561c0: 4aae 000c tstl %fp@(12)
561c4: 6768 beqs 5622e <rtems_region_get_segment_size+0x72>
return RTEMS_INVALID_ADDRESS;
if ( !size )
561c6: 4aae 0010 tstl %fp@(16)
561ca: 6762 beqs 5622e <rtems_region_get_segment_size+0x72>
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
561cc: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@-
561d2: 4eb9 0005 86c0 jsr 586c0 <_API_Mutex_Lock>
561d8: 486e fffc pea %fp@(-4)
561dc: 2f2e 0008 movel %fp@(8),%sp@-
561e0: 4879 0007 c1fc pea 7c1fc <_Region_Information>
561e6: 4eb9 0005 a440 jsr 5a440 <_Objects_Get_no_protection>
the_region = _Region_Get( id, &location );
switch ( location ) {
561ec: 222e fffc movel %fp@(-4),%d1
561f0: 4fef 0010 lea %sp@(16),%sp
561f4: 663e bnes 56234 <rtems_region_get_segment_size+0x78>
case OBJECTS_LOCAL:
if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) )
561f6: 2f2e 0010 movel %fp@(16),%sp@-
561fa: 2040 moveal %d0,%a0
561fc: 2f2e 000c movel %fp@(12),%sp@-
56200: 4868 0068 pea %a0@(104)
56204: 4eb9 0005 9e1c jsr 59e1c <_Heap_Size_of_alloc_area>
5620a: 4fef 000c lea %sp@(12),%sp
5620e: 4a00 tstb %d0
56210: 675c beqs 5626e <rtems_region_get_segment_size+0xb2><== NEVER TAKEN
void *segment,
uintptr_t *size
)
{
Objects_Locations location;
rtems_status_code return_status = RTEMS_SUCCESSFUL;
56212: 4280 clrl %d0
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
56214: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@-
5621a: 2d40 fff8 movel %d0,%fp@(-8)
5621e: 4eb9 0005 8720 jsr 58720 <_API_Mutex_Unlock>
56224: 202e fff8 movel %fp@(-8),%d0
56228: 588f addql #4,%sp
return return_status;
}
5622a: 4e5e unlk %fp
5622c: 4e75 rts
Objects_Locations location;
rtems_status_code return_status = RTEMS_SUCCESSFUL;
register Region_Control *the_region;
if ( !segment )
return RTEMS_INVALID_ADDRESS;
5622e: 7009 moveq #9,%d0
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
56230: 4e5e unlk %fp
56232: 4e75 rts
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
the_region = _Region_Get( id, &location );
switch ( location ) {
56234: 7001 moveq #1,%d0
56236: b081 cmpl %d1,%d0
56238: 671a beqs 56254 <rtems_region_get_segment_size+0x98><== ALWAYS TAKEN
void *segment,
uintptr_t *size
)
{
Objects_Locations location;
rtems_status_code return_status = RTEMS_SUCCESSFUL;
5623a: 4200 clrb %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5623c: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
56242: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
56246: 4eb9 0005 8720 jsr 58720 <_API_Mutex_Unlock> <== NOT EXECUTED
5624c: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
56250: 588f addql #4,%sp <== NOT EXECUTED
56252: 60d6 bras 5622a <rtems_region_get_segment_size+0x6e><== NOT EXECUTED
case OBJECTS_REMOTE: /* this error cannot be returned */
break;
#endif
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
56254: 7004 moveq #4,%d0
break;
}
_RTEMS_Unlock_allocator();
56256: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@-
5625c: 2d40 fff8 movel %d0,%fp@(-8)
56260: 4eb9 0005 8720 jsr 58720 <_API_Mutex_Unlock>
56266: 202e fff8 movel %fp@(-8),%d0
5626a: 588f addql #4,%sp
5626c: 60bc bras 5622a <rtems_region_get_segment_size+0x6e>
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) )
return_status = RTEMS_INVALID_ADDRESS;
5626e: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
56270: 2f39 0007 c386 movel 7c386 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
56276: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
5627a: 4eb9 0005 8720 jsr 58720 <_API_Mutex_Unlock> <== NOT EXECUTED
56280: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
56284: 588f addql #4,%sp <== NOT EXECUTED
56286: 60a2 bras 5622a <rtems_region_get_segment_size+0x6e><== NOT EXECUTED
00058c52 <rtems_rfs_bitmap_create_search>:
int
rtems_rfs_bitmap_create_search (rtems_rfs_bitmap_control* control)
{
58c52: 4e56 ffdc linkw %fp,#-36
58c56: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
rtems_rfs_bitmap_map map;
size_t size;
rtems_rfs_bitmap_bit bit;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
58c5a: 486e fffc pea %fp@(-4)
return 0;
}
int
rtems_rfs_bitmap_create_search (rtems_rfs_bitmap_control* control)
{
58c5e: 246e 0008 moveal %fp@(8),%a2
rtems_rfs_bitmap_map map;
size_t size;
rtems_rfs_bitmap_bit bit;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
58c62: 2f0a movel %a2,%sp@-
58c64: 4eba fa22 jsr %pc@(58688 <rtems_rfs_bitmap_load_map>)
if (rc > 0)
58c68: 508f addql #8,%sp
58c6a: 4a80 tstl %d0
58c6c: 6f0a bles 58c78 <rtems_rfs_bitmap_create_search+0x26><== ALWAYS TAKEN
bit++;
map++;
}
return 0;
}
58c6e: 4cee 1c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a4 <== NOT EXECUTED
58c74: 4e5e unlk %fp <== NOT EXECUTED
58c76: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_bitmap_load_map (control, &map);
if (rc > 0)
return rc;
control->free = 0;
58c78: 42aa 0010 clrl %a2@(16)
search_map = control->search_bits;
58c7c: 286a 0014 moveal %a2@(20),%a4
size = control->size;
58c80: 226a 000c moveal %a2@(12),%a1
bit = 0;
*search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
58c84: 70ff moveq #-1,%d0
58c86: 2880 movel %d0,%a4@
while (size)
58c88: 4a89 tstl %a1
58c8a: 6748 beqs 58cd4 <rtems_rfs_bitmap_create_search+0x82><== NEVER TAKEN
58c8c: 266e fffc moveal %fp@(-4),%a3
return rc;
control->free = 0;
search_map = control->search_bits;
size = control->size;
bit = 0;
58c90: 4284 clrl %d4
rtems_rfs_bitmap_element
rtems_rfs_bitmap_mask (unsigned int size)
{
rtems_rfs_bitmap_element mask = RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK;
mask >>= (rtems_rfs_bitmap_element_bits () - size);
58c92: 7cff moveq #-1,%d6
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
58c94: 7601 moveq #1,%d3
*search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
while (size)
{
rtems_rfs_bitmap_element bits;
int available;
if (size < rtems_rfs_bitmap_element_bits ())
58c96: 701f moveq #31,%d0
58c98: b089 cmpl %a1,%d0
58c9a: 6544 bcss 58ce0 <rtems_rfs_bitmap_create_search+0x8e>
rtems_rfs_bitmap_element
rtems_rfs_bitmap_mask (unsigned int size)
{
rtems_rfs_bitmap_element mask = RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK;
mask >>= (rtems_rfs_bitmap_element_bits () - size);
58c9c: 103c 0020 moveb #32,%d0
58ca0: 9089 subl %a1,%d0
58ca2: 2406 movel %d6,%d2
58ca4: e0aa lsrl %d0,%d2
if (size < rtems_rfs_bitmap_element_bits ())
{
bits = rtems_rfs_bitmap_merge (*map,
RTEMS_RFS_BITMAP_ELEMENT_SET,
rtems_rfs_bitmap_mask_section (0, size));
available = size;
58ca6: 2049 moveal %a1,%a0
58ca8: 2a09 movel %a1,%d5
{
/*
* Use the normal bit operators because we do not change the bits just merge
* the 2 separate parts.
*/
bits1 &= mask;
58caa: c493 andl %a3@,%d2
{
bits = *map;
available = rtems_rfs_bitmap_element_bits ();
}
if (rtems_rfs_bitmap_match (bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
58cac: 4a82 tstl %d2
58cae: 6714 beqs 58cc4 <rtems_rfs_bitmap_create_search+0x72>
58cb0: 4280 clrl %d0
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
58cb2: 2203 movel %d3,%d1
58cb4: e1a9 lsll %d0,%d1
if (rtems_rfs_bitmap_match (bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
rtems_rfs_bitmap_set (*search_map, bit);
else
{
int b;
for (b = 0; b < available; b++)
58cb6: 5280 addql #1,%d0
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
58cb8: c282 andl %d2,%d1
rtems_rfs_bitmap_set (*search_map, bit);
else
{
int b;
for (b = 0; b < available; b++)
if (!rtems_rfs_bitmap_test (bits, b))
58cba: 6704 beqs 58cc0 <rtems_rfs_bitmap_create_search+0x6e>
control->free++;
58cbc: 52aa 0010 addql #1,%a2@(16)
if (rtems_rfs_bitmap_match (bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
rtems_rfs_bitmap_set (*search_map, bit);
else
{
int b;
for (b = 0; b < available; b++)
58cc0: b088 cmpl %a0,%d0
58cc2: 6dee blts 58cb2 <rtems_rfs_bitmap_create_search+0x60>
if (!rtems_rfs_bitmap_test (bits, b))
control->free++;
}
size -= available;
58cc4: 93c5 subal %d5,%a1
if (bit == rtems_rfs_bitmap_element_bits ())
58cc6: 7020 moveq #32,%d0
58cc8: b084 cmpl %d4,%d0
58cca: 671e beqs 58cea <rtems_rfs_bitmap_create_search+0x98><== NEVER TAKEN
bit = 0;
search_map++;
*search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
}
else
bit++;
58ccc: 5284 addql #1,%d4
58cce: 588b addql #4,%a3
search_map = control->search_bits;
size = control->size;
bit = 0;
*search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
while (size)
58cd0: 4a89 tstl %a1
58cd2: 66c2 bnes 58c96 <rtems_rfs_bitmap_create_search+0x44>
else
bit++;
map++;
}
return 0;
58cd4: 4280 clrl %d0
}
58cd6: 4cee 1c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a4
58cdc: 4e5e unlk %fp
58cde: 4e75 rts
rtems_rfs_bitmap_mask_section (0, size));
available = size;
}
else
{
bits = *map;
58ce0: 2413 movel %a3@,%d2
58ce2: 7a20 moveq #32,%d5
available = rtems_rfs_bitmap_element_bits ();
58ce4: 307c 0020 moveaw #32,%a0
58ce8: 60c2 bras 58cac <rtems_rfs_bitmap_create_search+0x5a>
if (bit == rtems_rfs_bitmap_element_bits ())
{
bit = 0;
search_map++;
*search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
58cea: 70ff moveq #-1,%d0 <== NOT EXECUTED
size -= available;
if (bit == rtems_rfs_bitmap_element_bits ())
{
bit = 0;
58cec: 4284 clrl %d4 <== NOT EXECUTED
58cee: 588b addql #4,%a3 <== NOT EXECUTED
search_map++;
*search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
58cf0: 2940 0004 movel %d0,%a4@(4) <== NOT EXECUTED
size -= available;
if (bit == rtems_rfs_bitmap_element_bits ())
{
bit = 0;
search_map++;
58cf4: 588c addql #4,%a4 <== NOT EXECUTED
search_map = control->search_bits;
size = control->size;
bit = 0;
*search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
while (size)
58cf6: 4a89 tstl %a1 <== NOT EXECUTED
58cf8: 669c bnes 58c96 <rtems_rfs_bitmap_create_search+0x44><== NOT EXECUTED
58cfa: 60d8 bras 58cd4 <rtems_rfs_bitmap_create_search+0x82><== NOT EXECUTED
00058688 <rtems_rfs_bitmap_load_map>:
* @return int The error number (errno). No error if 0.
*/
static int
rtems_rfs_bitmap_load_map (rtems_rfs_bitmap_control* control,
rtems_rfs_bitmap_map* map)
{
58688: 4e56 0000 linkw %fp,#0
5868c: 2f0a movel %a2,%sp@-
5868e: 246e 0008 moveal %fp@(8),%a2
int rc;
if (!control->buffer)
58692: 4a92 tstl %a2@
58694: 6738 beqs 586ce <rtems_rfs_bitmap_load_map+0x46> <== NEVER TAKEN
return ENXIO;
*map = NULL;
rc = rtems_rfs_buffer_handle_request (control->fs,
58696: 4878 0001 pea 1 <ADD>
5869a: 2f2a 0008 movel %a2@(8),%sp@-
int rc;
if (!control->buffer)
return ENXIO;
*map = NULL;
5869e: 206e 000c moveal %fp@(12),%a0
586a2: 4290 clrl %a0@
rc = rtems_rfs_buffer_handle_request (control->fs,
586a4: 2f12 movel %a2@,%sp@-
586a6: 2f2a 0004 movel %a2@(4),%sp@-
586aa: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request>
control->buffer,
control->block,
true);
if (rc)
586b0: 4fef 0010 lea %sp@(16),%sp
586b4: 4a80 tstl %d0
586b6: 660e bnes 586c6 <rtems_rfs_bitmap_load_map+0x3e> <== NEVER TAKEN
return rc;
*map = rtems_rfs_buffer_data (control->buffer);
586b8: 2052 moveal %a2@,%a0
586ba: 226e 000c moveal %fp@(12),%a1
586be: 2068 0006 moveal %a0@(6),%a0
586c2: 22a8 001a movel %a0@(26),%a1@
return 0;
}
586c6: 246e fffc moveal %fp@(-4),%a2
586ca: 4e5e unlk %fp
586cc: 4e75 rts
586ce: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_rfs_bitmap_map* map)
{
int rc;
if (!control->buffer)
return ENXIO;
586d2: 7006 moveq #6,%d0 <== NOT EXECUTED
if (rc)
return rc;
*map = rtems_rfs_buffer_data (control->buffer);
return 0;
}
586d4: 4e5e unlk %fp <== NOT EXECUTED
00058bae <rtems_rfs_bitmap_map_alloc>:
int
rtems_rfs_bitmap_map_alloc (rtems_rfs_bitmap_control* control,
rtems_rfs_bitmap_bit seed,
bool* allocated,
rtems_rfs_bitmap_bit* bit)
{
58bae: 4e56 ffe4 linkw %fp,#-28
58bb2: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
58bb6: 266e 0010 moveal %fp@(16),%a3
* Search up first so bits allocated in succession are grouped together.
*/
if (upper_seed < control->size)
{
*bit = upper_seed;
rc = rtems_rfs_search_map_for_clear_bit (control, bit, allocated,
58bba: 283c 0005 86d8 movel #362200,%d4
* seed up then from the seed down a window number of bits, then repeat the
* process from the window distance from the seed, again above then
* below. Keep moving out until all bits have been searched.
*/
upper_seed = seed;
lower_seed = seed;
58bc0: 262e 000c movel %fp@(12),%d3
* of bits from the original seed above then below. That is search from the
* seed up then from the seed down a window number of bits, then repeat the
* process from the window distance from the seed, again above then
* below. Keep moving out until all bits have been searched.
*/
upper_seed = seed;
58bc4: 2403 movel %d3,%d2
int rc = 0;
/*
* By default we assume the allocation failed.
*/
*allocated = false;
58bc6: 4213 clrb %a3@
int
rtems_rfs_bitmap_map_alloc (rtems_rfs_bitmap_control* control,
rtems_rfs_bitmap_bit seed,
bool* allocated,
rtems_rfs_bitmap_bit* bit)
{
58bc8: 246e 0008 moveal %fp@(8),%a2
58bcc: 286e 0014 moveal %fp@(20),%a4
* we have searched all of the map. The seed may not be aligned to a window
* boundary so we may need to search a partial window and this may also not
* be balanced for the upper or lower seeds. We move to the limits, search
* then return false if no clear bits are found.
*/
while (((upper_seed >= 0) && (upper_seed < control->size))
58bd0: 4a82 tstl %d2
58bd2: 6d44 blts 58c18 <rtems_rfs_bitmap_map_alloc+0x6a><== NEVER TAKEN
58bd4: b4aa 000c cmpl %a2@(12),%d2
58bd8: 643e bccs 58c18 <rtems_rfs_bitmap_map_alloc+0x6a><== NEVER TAKEN
* Search up first so bits allocated in succession are grouped together.
*/
if (upper_seed < control->size)
{
*bit = upper_seed;
rc = rtems_rfs_search_map_for_clear_bit (control, bit, allocated,
58bda: 4878 0001 pea 1 <ADD>
58bde: 2044 moveal %d4,%a0
58be0: 4bfa faf6 lea %pc@(586d8 <rtems_rfs_search_map_for_clear_bit.constprop.1>),%a5
58be4: 2f0b movel %a3,%sp@-
58be6: 2f0c movel %a4,%sp@-
/*
* Search up first so bits allocated in succession are grouped together.
*/
if (upper_seed < control->size)
{
*bit = upper_seed;
58be8: 2882 movel %d2,%a4@
rc = rtems_rfs_search_map_for_clear_bit (control, bit, allocated,
58bea: 2f0a movel %a2,%sp@-
58bec: 4e90 jsr %a0@
window, 1);
if ((rc > 0) || *allocated)
58bee: 4fef 0010 lea %sp@(16),%sp
58bf2: 4a80 tstl %d0
58bf4: 6e50 bgts 58c46 <rtems_rfs_bitmap_map_alloc+0x98><== NEVER TAKEN
58bf6: 4a13 tstb %a3@
58bf8: 664c bnes 58c46 <rtems_rfs_bitmap_map_alloc+0x98><== ALWAYS TAKEN
break;
}
if (lower_seed >= 0)
58bfa: 4a83 tstl %d3 <== NOT EXECUTED
58bfc: 6c2e bges 58c2c <rtems_rfs_bitmap_map_alloc+0x7e><== NOT EXECUTED
/*
* Do not bound the limits at the edges of the map. Do not update if an
* edge has been passed.
*/
if (upper_seed < control->size)
58bfe: b4aa 000c cmpl %a2@(12),%d2 <== NOT EXECUTED
58c02: 6406 bccs 58c0a <rtems_rfs_bitmap_map_alloc+0x5c><== NOT EXECUTED
upper_seed += window;
58c04: 0682 0000 0800 addil #2048,%d2 <== NOT EXECUTED
if (lower_seed >= 0)
58c0a: 4a83 tstl %d3 <== NOT EXECUTED
58c0c: 6dc2 blts 58bd0 <rtems_rfs_bitmap_map_alloc+0x22><== NOT EXECUTED
lower_seed -= window;
58c0e: 0683 ffff f800 addil #-2048,%d3 <== NOT EXECUTED
* we have searched all of the map. The seed may not be aligned to a window
* boundary so we may need to search a partial window and this may also not
* be balanced for the upper or lower seeds. We move to the limits, search
* then return false if no clear bits are found.
*/
while (((upper_seed >= 0) && (upper_seed < control->size))
58c14: 4a82 tstl %d2 <== NOT EXECUTED
58c16: 6cbc bges 58bd4 <rtems_rfs_bitmap_map_alloc+0x26><== NOT EXECUTED
|| ((lower_seed >= 0) && (lower_seed < control->size)))
58c18: 4a83 tstl %d3 <== NOT EXECUTED
58c1a: 6d2a blts 58c46 <rtems_rfs_bitmap_map_alloc+0x98><== NOT EXECUTED
58c1c: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
58c20: b283 cmpl %d3,%d1 <== NOT EXECUTED
58c22: 6322 blss 58c46 <rtems_rfs_bitmap_map_alloc+0x98><== NOT EXECUTED
58c24: 4bfa fab2 lea %pc@(586d8 <rtems_rfs_search_map_for_clear_bit.constprop.1>),%a5<== NOT EXECUTED
{
/*
* Search up first so bits allocated in succession are grouped together.
*/
if (upper_seed < control->size)
58c28: b481 cmpl %d1,%d2 <== NOT EXECUTED
58c2a: 65ae bcss 58bda <rtems_rfs_bitmap_map_alloc+0x2c><== NOT EXECUTED
}
if (lower_seed >= 0)
{
*bit = lower_seed;
rc = rtems_rfs_search_map_for_clear_bit (control, bit, allocated,
58c2c: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
58c30: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58c32: 2f0c movel %a4,%sp@- <== NOT EXECUTED
break;
}
if (lower_seed >= 0)
{
*bit = lower_seed;
58c34: 2883 movel %d3,%a4@ <== NOT EXECUTED
rc = rtems_rfs_search_map_for_clear_bit (control, bit, allocated,
58c36: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58c38: 4e95 jsr %a5@ <== NOT EXECUTED
window, -1);
if ((rc > 0) || *allocated)
58c3a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
58c3e: 4a80 tstl %d0 <== NOT EXECUTED
58c40: 6e04 bgts 58c46 <rtems_rfs_bitmap_map_alloc+0x98><== NOT EXECUTED
58c42: 4a13 tstb %a3@ <== NOT EXECUTED
58c44: 67b8 beqs 58bfe <rtems_rfs_bitmap_map_alloc+0x50><== NOT EXECUTED
if (lower_seed >= 0)
lower_seed -= window;
}
return 0;
}
58c46: 4280 clrl %d0
58c48: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
58c4e: 4e5e unlk %fp <== NOT EXECUTED
000589be <rtems_rfs_bitmap_map_clear>:
int
rtems_rfs_bitmap_map_clear (rtems_rfs_bitmap_control* control,
rtems_rfs_bitmap_bit bit)
{
589be: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
589c2: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
rtems_rfs_bitmap_map map;
rtems_rfs_bitmap_map search_map;
int index;
int offset;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
589c6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
}
int
rtems_rfs_bitmap_map_clear (rtems_rfs_bitmap_control* control,
rtems_rfs_bitmap_bit bit)
{
589ca: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_rfs_bitmap_map map;
rtems_rfs_bitmap_map search_map;
int index;
int offset;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
589ce: 2f0a movel %a2,%sp@- <== NOT EXECUTED
589d0: 4eba fcb6 jsr %pc@(58688 <rtems_rfs_bitmap_load_map>) <== NOT EXECUTED
if (rc > 0)
589d4: 508f addql #8,%sp <== NOT EXECUTED
589d6: 4a80 tstl %d0 <== NOT EXECUTED
589d8: 6f0a bles 589e4 <rtems_rfs_bitmap_map_clear+0x26><== NOT EXECUTED
offset = rtems_rfs_bitmap_map_offset(bit);
search_map[index] = rtems_rfs_bitmap_clear (search_map[index], 1 << offset);
rtems_rfs_buffer_mark_dirty (control->buffer);
control->free++;
return 0;
}
589da: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED
589e0: 4e5e unlk %fp <== NOT EXECUTED
589e2: 4e75 rts <== NOT EXECUTED
int offset;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
if (rc > 0)
return rc;
if (bit >= control->size)
589e4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
589e8: b0aa 000c cmpl %a2@(12),%d0 <== NOT EXECUTED
589ec: 650c bcss 589fa <rtems_rfs_bitmap_map_clear+0x3c><== NOT EXECUTED
return EINVAL;
589ee: 7016 moveq #22,%d0 <== NOT EXECUTED
offset = rtems_rfs_bitmap_map_offset(bit);
search_map[index] = rtems_rfs_bitmap_clear (search_map[index], 1 << offset);
rtems_rfs_buffer_mark_dirty (control->buffer);
control->free++;
return 0;
}
589f0: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED
589f6: 4e5e unlk %fp <== NOT EXECUTED
589f8: 4e75 rts <== NOT EXECUTED
if (rc > 0)
return rc;
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
589fa: 2600 movel %d0,%d3 <== NOT EXECUTED
offset = rtems_rfs_bitmap_map_offset (bit);
map[index] = rtems_rfs_bitmap_clear (map[index], 1 << offset);
bit = index;
index = rtems_rfs_bitmap_map_index (bit);
589fc: 2200 movel %d0,%d1 <== NOT EXECUTED
589fe: 7a0a moveq #10,%d5 <== NOT EXECUTED
if (rc > 0)
return rc;
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
58a00: ea83 asrl #5,%d3 <== NOT EXECUTED
offset = rtems_rfs_bitmap_map_offset (bit);
map[index] = rtems_rfs_bitmap_clear (map[index], 1 << offset);
bit = index;
index = rtems_rfs_bitmap_map_index (bit);
58a02: eaa1 asrl %d5,%d1 <== NOT EXECUTED
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
map[index] = rtems_rfs_bitmap_clear (map[index], 1 << offset);
58a04: 2a03 movel %d3,%d5 <== NOT EXECUTED
return rc;
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
58a06: 781f moveq #31,%d4 <== NOT EXECUTED
map[index] = rtems_rfs_bitmap_clear (map[index], 1 << offset);
58a08: 7401 moveq #1,%d2 <== NOT EXECUTED
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset(bit);
search_map[index] = rtems_rfs_bitmap_clear (search_map[index], 1 << offset);
rtems_rfs_buffer_mark_dirty (control->buffer);
control->free++;
return 0;
58a0a: 4280 clrl %d0 <== NOT EXECUTED
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
map[index] = rtems_rfs_bitmap_clear (map[index], 1 << offset);
58a0c: e58d lsll #2,%d5 <== NOT EXECUTED
58a0e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
58a12: d7c5 addal %d5,%a3 <== NOT EXECUTED
58a14: 2a02 movel %d2,%d5 <== NOT EXECUTED
return rc;
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
58a16: c8ae 000c andl %fp@(12),%d4 <== NOT EXECUTED
rc = rtems_rfs_bitmap_load_map (control, &map);
if (rc > 0)
return rc;
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
58a1a: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
map[index] = rtems_rfs_bitmap_clear (map[index], 1 << offset);
58a1e: e9ad lsll %d4,%d5 <== NOT EXECUTED
bit = index;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset(bit);
search_map[index] = rtems_rfs_bitmap_clear (search_map[index], 1 << offset);
rtems_rfs_buffer_mark_dirty (control->buffer);
58a20: 2252 moveal %a2@,%a1 <== NOT EXECUTED
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
map[index] = rtems_rfs_bitmap_clear (map[index], 1 << offset);
58a22: 2805 movel %d5,%d4 <== NOT EXECUTED
bit = index;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset(bit);
58a24: 7a1f moveq #31,%d5 <== NOT EXECUTED
58a26: c685 andl %d5,%d3 <== NOT EXECUTED
*/
static rtems_rfs_bitmap_element
rtems_rfs_bitmap_clear (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_element bits)
{
return RTEMS_RFS_BITMAP_CLEAR_BITS (target, bits);
58a28: 8993 orl %d4,%a3@ <== NOT EXECUTED
offset = rtems_rfs_bitmap_map_offset (bit);
map[index] = rtems_rfs_bitmap_clear (map[index], 1 << offset);
bit = index;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset(bit);
search_map[index] = rtems_rfs_bitmap_clear (search_map[index], 1 << offset);
58a2a: e7aa lsll %d3,%d2 <== NOT EXECUTED
*/
static rtems_rfs_bitmap_element
rtems_rfs_bitmap_clear (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_element bits)
{
return RTEMS_RFS_BITMAP_CLEAR_BITS (target, bits);
58a2c: 85b0 1c00 orl %d2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
map[index] = rtems_rfs_bitmap_clear (map[index], 1 << offset);
bit = index;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset(bit);
search_map[index] = rtems_rfs_bitmap_clear (search_map[index], 1 << offset);
rtems_rfs_buffer_mark_dirty (control->buffer);
58a30: 12bc 0001 moveb #1,%a1@ <== NOT EXECUTED
control->free++;
58a34: 52aa 0010 addql #1,%a2@(16) <== NOT EXECUTED
return 0;
}
58a38: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED
58a3e: 4e5e unlk %fp <== NOT EXECUTED
00058b22 <rtems_rfs_bitmap_map_clear_all>:
int
rtems_rfs_bitmap_map_clear_all (rtems_rfs_bitmap_control* control)
{
58b22: 4e56 ffec linkw %fp,#-20
58b26: 48d7 041c moveml %d2-%d4/%a2,%sp@
rtems_rfs_bitmap_bit last_search_bit;
size_t elements;
int e;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
58b2a: 486e fffc pea %fp@(-4)
return 0;
}
int
rtems_rfs_bitmap_map_clear_all (rtems_rfs_bitmap_control* control)
{
58b2e: 246e 0008 moveal %fp@(8),%a2
rtems_rfs_bitmap_bit last_search_bit;
size_t elements;
int e;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
58b32: 2f0a movel %a2,%sp@-
58b34: 4eba fb52 jsr %pc@(58688 <rtems_rfs_bitmap_load_map>)
if (rc > 0)
58b38: 508f addql #8,%sp
58b3a: 4a80 tstl %d0
58b3c: 6f0a bles 58b48 <rtems_rfs_bitmap_map_clear_all+0x26><== ALWAYS TAKEN
rtems_rfs_bitmap_mask (last_search_bit));
rtems_rfs_buffer_mark_dirty (control->buffer);
return 0;
}
58b3e: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58b44: 4e5e unlk %fp <== NOT EXECUTED
58b46: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_bitmap_load_map (control, &map);
if (rc > 0)
return rc;
elements = rtems_rfs_bitmap_elements (control->size);
58b48: 242a 000c movel %a2@(12),%d2
58b4c: 5382 subql #1,%d2
58b4e: ea8a lsrl #5,%d2
58b50: 2042 moveal %d2,%a0
58b52: 5288 addql #1,%a0
control->free = elements;
for (e = 0; e < elements; e++)
58b54: 4281 clrl %d1
58b56: 4280 clrl %d0
58b58: 226e fffc moveal %fp@(-4),%a1
if (rc > 0)
return rc;
elements = rtems_rfs_bitmap_elements (control->size);
control->free = elements;
58b5c: 2548 0010 movel %a0,%a2@(16)
for (e = 0; e < elements; e++)
map[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
58b60: 76ff moveq #-1,%d3
elements = rtems_rfs_bitmap_elements (control->size);
control->free = elements;
for (e = 0; e < elements; e++)
58b62: 5280 addql #1,%d0
map[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
58b64: 2383 1c00 movel %d3,%a1@(00000000,%d1:l:4)
elements = rtems_rfs_bitmap_elements (control->size);
control->free = elements;
for (e = 0; e < elements; e++)
58b68: 2200 movel %d0,%d1
58b6a: b1c0 cmpal %d0,%a0
58b6c: 66f2 bnes 58b60 <rtems_rfs_bitmap_map_clear_all+0x3e>
/*
* Set the un-mapped bits in the last search element so the available logic
* works.
*/
last_search_bit = rtems_rfs_bitmap_map_offset (elements);
58b6e: 781f moveq #31,%d4
58b70: c084 andl %d4,%d0
if (last_search_bit == 0)
58b72: 6736 beqs 58baa <rtems_rfs_bitmap_map_clear_all+0x88>
58b74: 7220 moveq #32,%d1
58b76: 9280 subl %d0,%d1
58b78: e2ab lsrl %d1,%d3
58b7a: 206a 0014 moveal %a2@(20),%a0
last_search_bit = rtems_rfs_bitmap_element_bits ();
elements = rtems_rfs_bitmap_elements (elements);
58b7e: ea8a lsrl #5,%d2
for (e = 0; e < (elements - 1); e++)
58b80: 6712 beqs 58b94 <rtems_rfs_bitmap_map_clear_all+0x72><== ALWAYS TAKEN
58b82: 4281 clrl %d1 <== NOT EXECUTED
58b84: 4280 clrl %d0 <== NOT EXECUTED
control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
58b86: 78ff moveq #-1,%d4 <== NOT EXECUTED
if (last_search_bit == 0)
last_search_bit = rtems_rfs_bitmap_element_bits ();
elements = rtems_rfs_bitmap_elements (elements);
for (e = 0; e < (elements - 1); e++)
58b88: 5280 addql #1,%d0 <== NOT EXECUTED
control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
58b8a: 2184 1c00 movel %d4,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
if (last_search_bit == 0)
last_search_bit = rtems_rfs_bitmap_element_bits ();
elements = rtems_rfs_bitmap_elements (elements);
for (e = 0; e < (elements - 1); e++)
58b8e: 2200 movel %d0,%d1 <== NOT EXECUTED
58b90: b480 cmpl %d0,%d2 <== NOT EXECUTED
58b92: 66f2 bnes 58b86 <rtems_rfs_bitmap_map_clear_all+0x64><== NOT EXECUTED
control->search_bits[elements - 1] =
rtems_rfs_bitmap_merge (RTEMS_RFS_BITMAP_ELEMENT_CLEAR,
RTEMS_RFS_BITMAP_ELEMENT_SET,
rtems_rfs_bitmap_mask (last_search_bit));
rtems_rfs_buffer_mark_dirty (control->buffer);
58b94: 2252 moveal %a2@,%a1
return 0;
58b96: 4280 clrl %d0
elements = rtems_rfs_bitmap_elements (elements);
for (e = 0; e < (elements - 1); e++)
control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;
control->search_bits[elements - 1] =
58b98: 2183 2c00 movel %d3,%a0@(00000000,%d2:l:4)
rtems_rfs_bitmap_mask (last_search_bit));
rtems_rfs_buffer_mark_dirty (control->buffer);
return 0;
}
58b9c: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2
control->search_bits[elements - 1] =
rtems_rfs_bitmap_merge (RTEMS_RFS_BITMAP_ELEMENT_CLEAR,
RTEMS_RFS_BITMAP_ELEMENT_SET,
rtems_rfs_bitmap_mask (last_search_bit));
rtems_rfs_buffer_mark_dirty (control->buffer);
58ba2: 12bc 0001 moveb #1,%a1@
return 0;
}
58ba6: 4e5e unlk %fp
58ba8: 4e75 rts
* Set the un-mapped bits in the last search element so the available logic
* works.
*/
last_search_bit = rtems_rfs_bitmap_map_offset (elements);
if (last_search_bit == 0)
58baa: 76ff moveq #-1,%d3
58bac: 60cc bras 58b7a <rtems_rfs_bitmap_map_clear_all+0x58>
00058924 <rtems_rfs_bitmap_map_set>:
int
rtems_rfs_bitmap_map_set (rtems_rfs_bitmap_control* control,
rtems_rfs_bitmap_bit bit)
{
58924: 4e56 ffec linkw %fp,#-20
58928: 48d7 041c moveml %d2-%d4/%a2,%sp@
rtems_rfs_bitmap_map map;
rtems_rfs_bitmap_map search_map;
int index;
int offset;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
5892c: 486e fffc pea %fp@(-4)
}
int
rtems_rfs_bitmap_map_set (rtems_rfs_bitmap_control* control,
rtems_rfs_bitmap_bit bit)
{
58930: 246e 0008 moveal %fp@(8),%a2
rtems_rfs_bitmap_map map;
rtems_rfs_bitmap_map search_map;
int index;
int offset;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
58934: 2f0a movel %a2,%sp@-
58936: 4eba fd50 jsr %pc@(58688 <rtems_rfs_bitmap_load_map>)
if (rc > 0)
5893a: 508f addql #8,%sp
5893c: 4a80 tstl %d0
5893e: 6f0a bles 5894a <rtems_rfs_bitmap_map_set+0x26> <== ALWAYS TAKEN
search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
control->free--;
rtems_rfs_buffer_mark_dirty (control->buffer);
}
return 0;
}
58940: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58946: 4e5e unlk %fp <== NOT EXECUTED
58948: 4e75 rts <== NOT EXECUTED
int offset;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
if (rc > 0)
return rc;
if (bit >= control->size)
5894a: 202e 000c movel %fp@(12),%d0
5894e: b0aa 000c cmpl %a2@(12),%d0
58952: 650c bcss 58960 <rtems_rfs_bitmap_map_set+0x3c> <== ALWAYS TAKEN
return EINVAL;
58954: 7016 moveq #22,%d0 <== NOT EXECUTED
search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
control->free--;
rtems_rfs_buffer_mark_dirty (control->buffer);
}
return 0;
}
58956: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
5895c: 4e5e unlk %fp <== NOT EXECUTED
5895e: 4e75 rts <== NOT EXECUTED
if (rc > 0)
return rc;
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
58960: 2400 movel %d0,%d2
58962: ea82 asrl #5,%d2
offset = rtems_rfs_bitmap_map_offset (bit);
map[index] = rtems_rfs_bitmap_set (map[index], 1 << offset);
58964: 2602 movel %d2,%d3
return rc;
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
58966: 701f moveq #31,%d0
map[index] = rtems_rfs_bitmap_set (map[index], 1 << offset);
58968: 7201 moveq #1,%d1
5896a: e58b lsll #2,%d3
5896c: 206e fffc moveal %fp@(-4),%a0
58970: d1c3 addal %d3,%a0
58972: 2601 movel %d1,%d3
return rc;
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
58974: c0ae 000c andl %fp@(12),%d0
rc = rtems_rfs_bitmap_load_map (control, &map);
if (rc > 0)
return rc;
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
58978: 226a 0014 moveal %a2@(20),%a1
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
map[index] = rtems_rfs_bitmap_set (map[index], 1 << offset);
5897c: e1ab lsll %d0,%d3
5897e: 2003 movel %d3,%d0
*/
static rtems_rfs_bitmap_element
rtems_rfs_bitmap_set (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_element bits)
{
return RTEMS_RFS_BITMAP_SET_BITS (target, bits);
58980: 4680 notl %d0
58982: c090 andl %a0@,%d0
if (bit >= control->size)
return EINVAL;
search_map = control->search_bits;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
map[index] = rtems_rfs_bitmap_set (map[index], 1 << offset);
58984: 2080 movel %d0,%a0@
if (rtems_rfs_bitmap_match(map[index], RTEMS_RFS_BITMAP_ELEMENT_SET))
58986: 662a bnes 589b2 <rtems_rfs_bitmap_map_set+0x8e> <== ALWAYS TAKEN
{
bit = index;
index = rtems_rfs_bitmap_map_index (bit);
58988: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
5898c: 780a moveq #10,%d4 <== NOT EXECUTED
5898e: e8a3 asrl %d4,%d3 <== NOT EXECUTED
offset = rtems_rfs_bitmap_map_offset (bit);
58990: 183c 001f moveb #31,%d4 <== NOT EXECUTED
58994: c484 andl %d4,%d2 <== NOT EXECUTED
search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
control->free--;
rtems_rfs_buffer_mark_dirty (control->buffer);
58996: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if (rtems_rfs_bitmap_match(map[index], RTEMS_RFS_BITMAP_ELEMENT_SET))
{
bit = index;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
58998: e5a9 lsll %d2,%d1 <== NOT EXECUTED
*/
static rtems_rfs_bitmap_element
rtems_rfs_bitmap_set (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_element bits)
{
return RTEMS_RFS_BITMAP_SET_BITS (target, bits);
5899a: 4681 notl %d1 <== NOT EXECUTED
5899c: c3b1 3c00 andl %d1,%a1@(00000000,%d3:l:4) <== NOT EXECUTED
{
bit = index;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
control->free--;
589a0: 53aa 0010 subql #1,%a2@(16) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (control->buffer);
}
return 0;
}
589a4: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
bit = index;
index = rtems_rfs_bitmap_map_index (bit);
offset = rtems_rfs_bitmap_map_offset (bit);
search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
control->free--;
rtems_rfs_buffer_mark_dirty (control->buffer);
589aa: 10bc 0001 moveb #1,%a0@ <== NOT EXECUTED
}
return 0;
}
589ae: 4e5e unlk %fp <== NOT EXECUTED
589b0: 4e75 rts <== NOT EXECUTED
offset = rtems_rfs_bitmap_map_offset (bit);
search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
control->free--;
rtems_rfs_buffer_mark_dirty (control->buffer);
}
return 0;
589b2: 4280 clrl %d0
}
589b4: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2
589ba: 4e5e unlk %fp <== NOT EXECUTED
00058aa8 <rtems_rfs_bitmap_map_set_all>:
int
rtems_rfs_bitmap_map_set_all (rtems_rfs_bitmap_control* control)
{
58aa8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
58aac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58aae: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
58ab2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_rfs_bitmap_map map;
size_t elements;
int e;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
58ab4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58ab8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58aba: 4eba fbcc jsr %pc@(58688 <rtems_rfs_bitmap_load_map>) <== NOT EXECUTED
if (rc > 0)
58abe: 508f addql #8,%sp <== NOT EXECUTED
58ac0: 4a80 tstl %d0 <== NOT EXECUTED
58ac2: 6f0c bles 58ad0 <rtems_rfs_bitmap_map_set_all+0x28><== NOT EXECUTED
control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_SET;
rtems_rfs_buffer_mark_dirty (control->buffer);
return 0;
}
58ac4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
58ac8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
58acc: 4e5e unlk %fp <== NOT EXECUTED
58ace: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_bitmap_load_map (control, &map);
if (rc > 0)
return rc;
elements = rtems_rfs_bitmap_elements (control->size);
58ad0: 242a 000c movel %a2@(12),%d2 <== NOT EXECUTED
58ad4: 5382 subql #1,%d2 <== NOT EXECUTED
58ad6: ea8a lsrl #5,%d2 <== NOT EXECUTED
*state = rtems_rfs_bitmap_test (map[index], bit);
return 0;
}
int
rtems_rfs_bitmap_map_set_all (rtems_rfs_bitmap_control* control)
58ad8: 2242 moveal %d2,%a1 <== NOT EXECUTED
58ada: 5289 addql #1,%a1 <== NOT EXECUTED
elements = rtems_rfs_bitmap_elements (control->size);
control->free = 0;
for (e = 0; e < elements; e++)
58adc: 4281 clrl %d1 <== NOT EXECUTED
58ade: 4280 clrl %d0 <== NOT EXECUTED
58ae0: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
if (rc > 0)
return rc;
elements = rtems_rfs_bitmap_elements (control->size);
control->free = 0;
58ae4: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
for (e = 0; e < elements; e++)
map[e] = RTEMS_RFS_BITMAP_ELEMENT_SET;
58ae8: 42b0 1c00 clrl %a0@(00000000,%d1:l:4) <== NOT EXECUTED
elements = rtems_rfs_bitmap_elements (control->size);
control->free = 0;
for (e = 0; e < elements; e++)
58aec: 5280 addql #1,%d0 <== NOT EXECUTED
58aee: 2200 movel %d0,%d1 <== NOT EXECUTED
58af0: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
58af2: 66f4 bnes 58ae8 <rtems_rfs_bitmap_map_set_all+0x40><== NOT EXECUTED
map[e] = RTEMS_RFS_BITMAP_ELEMENT_SET;
elements = rtems_rfs_bitmap_elements (elements);
58af4: ea8a lsrl #5,%d2 <== NOT EXECUTED
*state = rtems_rfs_bitmap_test (map[index], bit);
return 0;
}
int
rtems_rfs_bitmap_map_set_all (rtems_rfs_bitmap_control* control)
58af6: 2242 moveal %d2,%a1 <== NOT EXECUTED
58af8: 5289 addql #1,%a1 <== NOT EXECUTED
for (e = 0; e < elements; e++)
map[e] = RTEMS_RFS_BITMAP_ELEMENT_SET;
elements = rtems_rfs_bitmap_elements (elements);
for (e = 0; e < elements; e++)
58afa: 4281 clrl %d1 <== NOT EXECUTED
58afc: 4280 clrl %d0 <== NOT EXECUTED
58afe: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_SET;
58b02: 42b0 1c00 clrl %a0@(00000000,%d1:l:4) <== NOT EXECUTED
for (e = 0; e < elements; e++)
map[e] = RTEMS_RFS_BITMAP_ELEMENT_SET;
elements = rtems_rfs_bitmap_elements (elements);
for (e = 0; e < elements; e++)
58b06: 5280 addql #1,%d0 <== NOT EXECUTED
58b08: 2200 movel %d0,%d1 <== NOT EXECUTED
58b0a: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
58b0c: 66f4 bnes 58b02 <rtems_rfs_bitmap_map_set_all+0x5a><== NOT EXECUTED
control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_SET;
rtems_rfs_buffer_mark_dirty (control->buffer);
58b0e: 2052 moveal %a2@,%a0 <== NOT EXECUTED
return 0;
58b10: 4280 clrl %d0 <== NOT EXECUTED
}
58b12: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
58b16: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
58b1a: 4e5e unlk %fp <== NOT EXECUTED
elements = rtems_rfs_bitmap_elements (elements);
for (e = 0; e < elements; e++)
control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_SET;
rtems_rfs_buffer_mark_dirty (control->buffer);
58b1c: 10bc 0001 moveb #1,%a0@ <== NOT EXECUTED
return 0;
}
00058a42 <rtems_rfs_bitmap_map_test>:
int
rtems_rfs_bitmap_map_test (rtems_rfs_bitmap_control* control,
rtems_rfs_bitmap_bit bit,
bool* state)
{
58a42: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
58a46: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
rtems_rfs_bitmap_map map;
int index;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
58a4a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
int
rtems_rfs_bitmap_map_test (rtems_rfs_bitmap_control* control,
rtems_rfs_bitmap_bit bit,
bool* state)
{
58a4e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_rfs_bitmap_map map;
int index;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
58a52: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58a54: 4eba fc32 jsr %pc@(58688 <rtems_rfs_bitmap_load_map>) <== NOT EXECUTED
if (rc > 0)
58a58: 508f addql #8,%sp <== NOT EXECUTED
58a5a: 4a80 tstl %d0 <== NOT EXECUTED
58a5c: 6f0a bles 58a68 <rtems_rfs_bitmap_map_test+0x26> <== NOT EXECUTED
if (bit >= control->size)
return EINVAL;
index = rtems_rfs_bitmap_map_index (bit);
*state = rtems_rfs_bitmap_test (map[index], bit);
return 0;
}
58a5e: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
58a64: 4e5e unlk %fp <== NOT EXECUTED
58a66: 4e75 rts <== NOT EXECUTED
int index;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
if (rc > 0)
return rc;
if (bit >= control->size)
58a68: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
58a6c: b0aa 000c cmpl %a2@(12),%d0 <== NOT EXECUTED
58a70: 650c bcss 58a7e <rtems_rfs_bitmap_map_test+0x3c> <== NOT EXECUTED
return EINVAL;
58a72: 7016 moveq #22,%d0 <== NOT EXECUTED
index = rtems_rfs_bitmap_map_index (bit);
*state = rtems_rfs_bitmap_test (map[index], bit);
return 0;
}
58a74: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
58a7a: 4e5e unlk %fp <== NOT EXECUTED
58a7c: 4e75 rts <== NOT EXECUTED
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
58a7e: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
58a82: 7201 moveq #1,%d1 <== NOT EXECUTED
rc = rtems_rfs_bitmap_load_map (control, &map);
if (rc > 0)
return rc;
if (bit >= control->size)
return EINVAL;
index = rtems_rfs_bitmap_map_index (bit);
58a84: 2400 movel %d0,%d2 <== NOT EXECUTED
58a86: ea82 asrl #5,%d2 <== NOT EXECUTED
*state = rtems_rfs_bitmap_test (map[index], bit);
return 0;
58a88: 4280 clrl %d0 <== NOT EXECUTED
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
58a8a: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
58a8e: e7a9 lsll %d3,%d1 <== NOT EXECUTED
58a90: c2b0 2c00 andl %a0@(00000000,%d2:l:4),%d1 <== NOT EXECUTED
if (rc > 0)
return rc;
if (bit >= control->size)
return EINVAL;
index = rtems_rfs_bitmap_map_index (bit);
*state = rtems_rfs_bitmap_test (map[index], bit);
58a94: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
58a98: 57c1 seq %d1 <== NOT EXECUTED
if (bit >= control->size)
return EINVAL;
index = rtems_rfs_bitmap_map_index (bit);
*state = rtems_rfs_bitmap_test (map[index], bit);
return 0;
}
58a9a: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
58aa0: 4e5e unlk %fp <== NOT EXECUTED
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
58aa2: 4481 negl %d1 <== NOT EXECUTED
if (rc > 0)
return rc;
if (bit >= control->size)
return EINVAL;
index = rtems_rfs_bitmap_map_index (bit);
*state = rtems_rfs_bitmap_test (map[index], bit);
58aa4: 1081 moveb %d1,%a0@ <== NOT EXECUTED
return 0;
}
000588e6 <rtems_rfs_bitmap_mask>:
rtems_rfs_bitmap_element
rtems_rfs_bitmap_mask (unsigned int size)
{
rtems_rfs_bitmap_element mask = RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK;
mask >>= (rtems_rfs_bitmap_element_bits () - size);
588e6: 7220 moveq #32,%d1 <== NOT EXECUTED
588e8: 70ff moveq #-1,%d0 <== NOT EXECUTED
return 0;
}
rtems_rfs_bitmap_element
rtems_rfs_bitmap_mask (unsigned int size)
{
588ea: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_rfs_bitmap_element mask = RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK;
mask >>= (rtems_rfs_bitmap_element_bits () - size);
588ee: 92ae 0008 subl %fp@(8),%d1 <== NOT EXECUTED
return mask;
}
588f2: 4e5e unlk %fp <== NOT EXECUTED
588f4: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
000588f8 <rtems_rfs_bitmap_mask_section>:
rtems_rfs_bitmap_element
rtems_rfs_bitmap_mask_section (unsigned int start, unsigned int end)
{
588f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
588fc: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
58900: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
58904: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_rfs_bitmap_element mask = 0;
if (end > start)
58906: b280 cmpl %d0,%d1 <== NOT EXECUTED
58908: 6412 bccs 5891c <rtems_rfs_bitmap_mask_section+0x24><== NOT EXECUTED
mask = rtems_rfs_bitmap_mask (end - start) << start;
5890a: 9081 subl %d1,%d0 <== NOT EXECUTED
rtems_rfs_bitmap_element
rtems_rfs_bitmap_mask (unsigned int size)
{
rtems_rfs_bitmap_element mask = RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK;
mask >>= (rtems_rfs_bitmap_element_bits () - size);
5890c: 7420 moveq #32,%d2 <== NOT EXECUTED
5890e: 9480 subl %d0,%d2 <== NOT EXECUTED
58910: 70ff moveq #-1,%d0 <== NOT EXECUTED
58912: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
{
rtems_rfs_bitmap_element mask = 0;
if (end > start)
mask = rtems_rfs_bitmap_mask (end - start) << start;
return mask;
}
58914: 241f movel %sp@+,%d2 <== NOT EXECUTED
58916: 4e5e unlk %fp <== NOT EXECUTED
rtems_rfs_bitmap_element
rtems_rfs_bitmap_mask_section (unsigned int start, unsigned int end)
{
rtems_rfs_bitmap_element mask = 0;
if (end > start)
mask = rtems_rfs_bitmap_mask (end - start) << start;
58918: e3a8 lsll %d1,%d0 <== NOT EXECUTED
return mask;
}
5891a: 4e75 rts <== NOT EXECUTED
5891c: 241f movel %sp@+,%d2 <== NOT EXECUTED
}
rtems_rfs_bitmap_element
rtems_rfs_bitmap_mask_section (unsigned int start, unsigned int end)
{
rtems_rfs_bitmap_element mask = 0;
5891e: 4280 clrl %d0 <== NOT EXECUTED
if (end > start)
mask = rtems_rfs_bitmap_mask (end - start) << start;
return mask;
}
58920: 4e5e unlk %fp <== NOT EXECUTED
00058cfc <rtems_rfs_bitmap_open>:
rtems_rfs_bitmap_open (rtems_rfs_bitmap_control* control,
rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* buffer,
size_t size,
rtems_rfs_buffer_block block)
{
58cfc: 4e56 0000 linkw %fp,#0
58d00: 222e 0014 movel %fp@(20),%d1
size_t elements = rtems_rfs_bitmap_elements (size);
58d04: 2001 movel %d1,%d0
58d06: 5380 subql #1,%d0
rtems_rfs_bitmap_open (rtems_rfs_bitmap_control* control,
rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* buffer,
size_t size,
rtems_rfs_buffer_block block)
{
58d08: 2f0a movel %a2,%sp@-
58d0a: 246e 0008 moveal %fp@(8),%a2
58d0e: 2f02 movel %d2,%sp@-
control->buffer = buffer;
control->fs = fs;
control->block = block;
control->size = size;
elements = rtems_rfs_bitmap_elements (elements);
58d10: 740a moveq #10,%d2
58d12: e4a8 lsrl %d2,%d0
control->search_bits = malloc (elements * sizeof (rtems_rfs_bitmap_element));
58d14: e588 lsll #2,%d0
58d16: 2040 moveal %d0,%a0
58d18: 4868 0004 pea %a0@(4)
size_t size,
rtems_rfs_buffer_block block)
{
size_t elements = rtems_rfs_bitmap_elements (size);
control->buffer = buffer;
58d1c: 24ae 0010 movel %fp@(16),%a2@
control->fs = fs;
58d20: 256e 000c 0004 movel %fp@(12),%a2@(4)
control->block = block;
58d26: 256e 0018 0008 movel %fp@(24),%a2@(8)
control->size = size;
58d2c: 2541 000c movel %d1,%a2@(12)
elements = rtems_rfs_bitmap_elements (elements);
control->search_bits = malloc (elements * sizeof (rtems_rfs_bitmap_element));
58d30: 4eb9 0004 794c jsr 4794c <malloc>
if (!control->search_bits)
58d36: 588f addql #4,%sp
control->fs = fs;
control->block = block;
control->size = size;
elements = rtems_rfs_bitmap_elements (elements);
control->search_bits = malloc (elements * sizeof (rtems_rfs_bitmap_element));
58d38: 2540 0014 movel %d0,%a2@(20)
if (!control->search_bits)
58d3c: 6714 beqs 58d52 <rtems_rfs_bitmap_open+0x56> <== NEVER TAKEN
return ENOMEM;
return rtems_rfs_bitmap_create_search (control);
58d3e: 2d4a 0008 movel %a2,%fp@(8)
}
58d42: 242e fff8 movel %fp@(-8),%d2
58d46: 246e fffc moveal %fp@(-4),%a2
58d4a: 4e5e unlk %fp
control->search_bits = malloc (elements * sizeof (rtems_rfs_bitmap_element));
if (!control->search_bits)
return ENOMEM;
return rtems_rfs_bitmap_create_search (control);
58d4c: 4ef9 0005 8c52 jmp 58c52 <rtems_rfs_bitmap_create_search>
}
58d52: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
58d56: 700c moveq #12,%d0 <== NOT EXECUTED
58d58: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
58d5c: 4e5e unlk %fp <== NOT EXECUTED
00058ee0 <rtems_rfs_block_find_indirect>:
rtems_rfs_block_find_indirect (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* buffer,
rtems_rfs_block_no block,
int offset,
rtems_rfs_block_no* result)
{
58ee0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
58ee4: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
/*
* If the handle has a buffer and this request is a different block the current
* buffer is released.
*/
rc = rtems_rfs_buffer_handle_request (fs, buffer, block, true);
58ee8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
58eec: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
rtems_rfs_block_find_indirect (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* buffer,
rtems_rfs_block_no block,
int offset,
rtems_rfs_block_no* result)
{
58ef0: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
58ef4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* If the handle has a buffer and this request is a different block the current
* buffer is released.
*/
rc = rtems_rfs_buffer_handle_request (fs, buffer, block, true);
58ef8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58efa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58efc: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request> <== NOT EXECUTED
if (rc > 0)
58f02: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
58f06: 4a80 tstl %d0 <== NOT EXECUTED
58f08: 6f0a bles 58f14 <rtems_rfs_block_find_indirect+0x34><== NOT EXECUTED
*result = 0;
rc = EIO;
}
return 0;
}
58f0a: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58f10: 4e5e unlk %fp <== NOT EXECUTED
58f12: 4e75 rts <== NOT EXECUTED
*/
rc = rtems_rfs_buffer_handle_request (fs, buffer, block, true);
if (rc > 0)
return rc;
*result = rtems_rfs_block_get_number (buffer, offset);
58f14: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
58f18: 4283 clrl %d3 <== NOT EXECUTED
58f1a: 4280 clrl %d0 <== NOT EXECUTED
58f1c: 4282 clrl %d2 <== NOT EXECUTED
58f1e: 7818 moveq #24,%d4 <== NOT EXECUTED
58f20: 206b 0006 moveal %a3@(6),%a0 <== NOT EXECUTED
58f24: e589 lsll #2,%d1 <== NOT EXECUTED
58f26: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
58f2a: 1630 1800 moveb %a0@(00000000,%d1:l),%d3 <== NOT EXECUTED
58f2e: 1030 1803 moveb %a0@(00000003,%d1:l),%d0 <== NOT EXECUTED
58f32: 1430 1801 moveb %a0@(00000001,%d1:l),%d2 <== NOT EXECUTED
58f36: 1230 1802 moveb %a0@(00000002,%d1:l),%d1 <== NOT EXECUTED
58f3a: e9ab lsll %d4,%d3 <== NOT EXECUTED
58f3c: 4842 swap %d2 <== NOT EXECUTED
58f3e: 4242 clrw %d2 <== NOT EXECUTED
58f40: 0281 0000 00ff andil #255,%d1 <== NOT EXECUTED
58f46: 8083 orl %d3,%d0 <== NOT EXECUTED
if ((*result + 1) == 0)
*result = 0;
58f48: 206e 0018 moveal %fp@(24),%a0 <== NOT EXECUTED
*/
rc = rtems_rfs_buffer_handle_request (fs, buffer, block, true);
if (rc > 0)
return rc;
*result = rtems_rfs_block_get_number (buffer, offset);
58f4c: e189 lsll #8,%d1 <== NOT EXECUTED
58f4e: 8082 orl %d2,%d0 <== NOT EXECUTED
58f50: 8081 orl %d1,%d0 <== NOT EXECUTED
if ((*result + 1) == 0)
58f52: 72ff moveq #-1,%d1 <== NOT EXECUTED
58f54: b280 cmpl %d0,%d1 <== NOT EXECUTED
58f56: 6738 beqs 58f90 <rtems_rfs_block_find_indirect+0xb0><== NOT EXECUTED
*/
rc = rtems_rfs_buffer_handle_request (fs, buffer, block, true);
if (rc > 0)
return rc;
*result = rtems_rfs_block_get_number (buffer, offset);
58f58: 2080 movel %d0,%a0@ <== NOT EXECUTED
if ((*result + 1) == 0)
*result = 0;
if (*result >= rtems_rfs_fs_blocks (fs))
58f5a: b0aa 0004 cmpl %a2@(4),%d0 <== NOT EXECUTED
58f5e: 640c bccs 58f6c <rtems_rfs_block_find_indirect+0x8c><== NOT EXECUTED
58f60: 4280 clrl %d0 <== NOT EXECUTED
*result = 0;
rc = EIO;
}
return 0;
}
58f62: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58f68: 4e5e unlk %fp <== NOT EXECUTED
58f6a: 4e75 rts <== NOT EXECUTED
if ((*result + 1) == 0)
*result = 0;
if (*result >= rtems_rfs_fs_blocks (fs))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_FIND))
58f6c: 4878 1000 pea 1000 <D_MAX_EXP+0x801> <== NOT EXECUTED
58f70: 42a7 clrl %sp@- <== NOT EXECUTED
58f72: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
58f78: 508f addql #8,%sp <== NOT EXECUTED
58f7a: 4a00 tstb %d0 <== NOT EXECUTED
58f7c: 6618 bnes 58f96 <rtems_rfs_block_find_indirect+0xb6><== NOT EXECUTED
printf ("rtems-rfs: block-find: invalid block in table:"
" block=%" PRId32 ", indirect=%" PRId32 "/%d\n", *result, block, offset);
*result = 0;
58f7e: 206e 0018 moveal %fp@(24),%a0 <== NOT EXECUTED
58f82: 4280 clrl %d0 <== NOT EXECUTED
58f84: 4290 clrl %a0@ <== NOT EXECUTED
rc = EIO;
}
return 0;
}
58f86: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58f8c: 4e5e unlk %fp <== NOT EXECUTED
58f8e: 4e75 rts <== NOT EXECUTED
if (rc > 0)
return rc;
*result = rtems_rfs_block_get_number (buffer, offset);
if ((*result + 1) == 0)
*result = 0;
58f90: 4290 clrl %a0@ <== NOT EXECUTED
58f92: 4280 clrl %d0 <== NOT EXECUTED
58f94: 60c4 bras 58f5a <rtems_rfs_block_find_indirect+0x7a><== NOT EXECUTED
if (*result >= rtems_rfs_fs_blocks (fs))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_FIND))
printf ("rtems-rfs: block-find: invalid block in table:"
58f96: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
58f9a: 206e 0018 moveal %fp@(24),%a0 <== NOT EXECUTED
58f9e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
58fa2: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
58fa4: 4879 0007 2108 pea 72108 <CSWTCH.2+0x40> <== NOT EXECUTED
58faa: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
" block=%" PRId32 ", indirect=%" PRId32 "/%d\n", *result, block, offset);
*result = 0;
58fb0: 206e 0018 moveal %fp@(24),%a0 <== NOT EXECUTED
*result = 0;
if (*result >= rtems_rfs_fs_blocks (fs))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_FIND))
printf ("rtems-rfs: block-find: invalid block in table:"
58fb4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
" block=%" PRId32 ", indirect=%" PRId32 "/%d\n", *result, block, offset);
*result = 0;
58fb8: 4280 clrl %d0 <== NOT EXECUTED
58fba: 4290 clrl %a0@ <== NOT EXECUTED
58fbc: 60c8 bras 58f86 <rtems_rfs_block_find_indirect+0xa6><== NOT EXECUTED
00059112 <rtems_rfs_block_get_block_size>:
void
rtems_rfs_block_get_block_size (rtems_rfs_file_system* fs,
rtems_rfs_pos pos,
rtems_rfs_block_size* size)
{
59112: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
59116: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
5911a: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
if (pos == 0)
5911e: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
59122: 80ae 0010 orl %fp@(16),%d0 <== NOT EXECUTED
59126: 6748 beqs 59170 <rtems_rfs_block_get_block_size+0x5e><== NOT EXECUTED
rtems_rfs_block_set_size_zero (size);
else
{
size->count = pos / rtems_rfs_fs_block_size (fs) + 1;
59128: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
5912c: 4282 clrl %d2 <== NOT EXECUTED
5912e: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED
59132: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59134: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59136: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5913a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5913e: 4eb9 0006 dfc8 jsr 6dfc8 <__udivdi3> <== NOT EXECUTED
59144: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
59148: 5281 addql #1,%d1 <== NOT EXECUTED
5914a: 2481 movel %d1,%a2@ <== NOT EXECUTED
size->offset = pos % rtems_rfs_fs_block_size (fs);
5914c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5914e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59150: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
59154: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
59158: 4eb9 0006 e3cc jsr 6e3cc <__umoddi3> <== NOT EXECUTED
5915e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
59162: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
}
59166: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5916c: 4e5e unlk %fp <== NOT EXECUTED
5916e: 4e75 rts <== NOT EXECUTED
* @param size A pointer to the block size.
*/
static inline void
rtems_rfs_block_set_size_zero (rtems_rfs_block_size* size)
{
size->count = 0;
59170: 4292 clrl %a2@ <== NOT EXECUTED
size->offset = 0;
59172: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
59176: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5917c: 4e5e unlk %fp <== NOT EXECUTED
000590a2 <rtems_rfs_block_get_bpos>:
void
rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs,
rtems_rfs_pos pos,
rtems_rfs_block_pos* bpos)
{
590a2: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
590a6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
590aa: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
bpos->bno = pos / rtems_rfs_fs_block_size (fs);
590ae: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED
590b2: 4282 clrl %d2 <== NOT EXECUTED
590b4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
void
rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs,
rtems_rfs_pos pos,
rtems_rfs_block_pos* bpos)
{
590b6: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
590ba: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
590be: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
bpos->bno = pos / rtems_rfs_fs_block_size (fs);
590c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
590c4: 2f05 movel %d5,%sp@- <== NOT EXECUTED
590c6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
590c8: 4eb9 0006 dfc8 jsr 6dfc8 <__udivdi3> <== NOT EXECUTED
bpos->boff = pos % rtems_rfs_fs_block_size (fs);
590ce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
590d2: 2e83 movel %d3,%sp@ <== NOT EXECUTED
590d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
void
rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs,
rtems_rfs_pos pos,
rtems_rfs_block_pos* bpos)
{
bpos->bno = pos / rtems_rfs_fs_block_size (fs);
590d6: 2481 movel %d1,%a2@ <== NOT EXECUTED
bpos->boff = pos % rtems_rfs_fs_block_size (fs);
590d8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
590da: 2f04 movel %d4,%sp@- <== NOT EXECUTED
590dc: 4eb9 0006 e3cc jsr 6e3cc <__umoddi3> <== NOT EXECUTED
590e2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
590e6: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
590ea: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
590f0: 4e5e unlk %fp <== NOT EXECUTED
000590f4 <rtems_rfs_block_get_pos>:
rtems_rfs_pos
rtems_rfs_block_get_pos (rtems_rfs_file_system* fs,
rtems_rfs_block_pos* bpos)
{
return (bpos->bno * rtems_rfs_fs_block_size (fs)) + bpos->boff;
}
590f4: 4280 clrl %d0 <== NOT EXECUTED
}
rtems_rfs_pos
rtems_rfs_block_get_pos (rtems_rfs_file_system* fs,
rtems_rfs_block_pos* bpos)
{
590f6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
590fa: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
590fe: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
return (bpos->bno * rtems_rfs_fs_block_size (fs)) + bpos->boff;
}
59102: 4e5e unlk %fp <== NOT EXECUTED
rtems_rfs_pos
rtems_rfs_block_get_pos (rtems_rfs_file_system* fs,
rtems_rfs_block_pos* bpos)
{
return (bpos->bno * rtems_rfs_fs_block_size (fs)) + bpos->boff;
59104: 2229 0008 movel %a1@(8),%d1 <== NOT EXECUTED
59108: 4c10 1800 mulsl %a0@,%d1 <== NOT EXECUTED
}
5910c: d2a8 0004 addl %a0@(4),%d1 <== NOT EXECUTED
00059180 <rtems_rfs_block_get_size>:
rtems_rfs_pos
rtems_rfs_block_get_size (rtems_rfs_file_system* fs,
rtems_rfs_block_size* size)
{
59180: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59184: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
59188: 2f03 movel %d3,%sp@- <== NOT EXECUTED
uint32_t offset;
uint64_t block_size;
if (size->count == 0)
5918a: 2010 movel %a0@,%d0 <== NOT EXECUTED
}
rtems_rfs_pos
rtems_rfs_block_get_size (rtems_rfs_file_system* fs,
rtems_rfs_block_size* size)
{
5918c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t offset;
uint64_t block_size;
if (size->count == 0)
5918e: 4a80 tstl %d0 <== NOT EXECUTED
59190: 6762 beqs 591f4 <rtems_rfs_block_get_size+0x74> <== NOT EXECUTED
return 0;
if (size->offset == 0)
59192: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
59196: 6636 bnes 591ce <rtems_rfs_block_get_size+0x4e> <== NOT EXECUTED
offset = rtems_rfs_fs_block_size (fs);
59198: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
else
offset = size->offset;
block_size = rtems_rfs_fs_block_size (fs);
return (((uint64_t) (size->count - 1)) * block_size) + offset;
5919c: 5380 subql #1,%d0 <== NOT EXECUTED
5919e: 4282 clrl %d2 <== NOT EXECUTED
uint32_t offset;
uint64_t block_size;
if (size->count == 0)
return 0;
if (size->offset == 0)
offset = rtems_rfs_fs_block_size (fs);
591a0: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
591a4: 2041 moveal %d1,%a0 <== NOT EXECUTED
else
offset = size->offset;
block_size = rtems_rfs_fs_block_size (fs);
return (((uint64_t) (size->count - 1)) * block_size) + offset;
591a6: 2601 movel %d1,%d3 <== NOT EXECUTED
591a8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
591aa: 42a7 clrl %sp@- <== NOT EXECUTED
591ac: 2f08 movel %a0,%sp@- <== NOT EXECUTED
591ae: 42a7 clrl %sp@- <== NOT EXECUTED
591b0: 4eb9 0006 d714 jsr 6d714 <__muldi3> <== NOT EXECUTED
591b6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
591ba: d681 addl %d1,%d3 <== NOT EXECUTED
591bc: d580 addxl %d0,%d2 <== NOT EXECUTED
}
591be: 2002 movel %d2,%d0 <== NOT EXECUTED
591c0: 2203 movel %d3,%d1 <== NOT EXECUTED
591c2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
591c6: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
591ca: 4e5e unlk %fp <== NOT EXECUTED
591cc: 4e75 rts <== NOT EXECUTED
591ce: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
if (size->offset == 0)
offset = rtems_rfs_fs_block_size (fs);
else
offset = size->offset;
block_size = rtems_rfs_fs_block_size (fs);
return (((uint64_t) (size->count - 1)) * block_size) + offset;
591d2: 5380 subql #1,%d0 <== NOT EXECUTED
591d4: 2601 movel %d1,%d3 <== NOT EXECUTED
591d6: 4282 clrl %d2 <== NOT EXECUTED
591d8: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED
591dc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
591de: 42a7 clrl %sp@- <== NOT EXECUTED
591e0: 2f08 movel %a0,%sp@- <== NOT EXECUTED
591e2: 42a7 clrl %sp@- <== NOT EXECUTED
591e4: 4eb9 0006 d714 jsr 6d714 <__muldi3> <== NOT EXECUTED
591ea: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
591ee: d681 addl %d1,%d3 <== NOT EXECUTED
591f0: d580 addxl %d0,%d2 <== NOT EXECUTED
591f2: 60ca bras 591be <rtems_rfs_block_get_size+0x3e> <== NOT EXECUTED
rtems_rfs_block_size* size)
{
uint32_t offset;
uint64_t block_size;
if (size->count == 0)
return 0;
591f4: 4282 clrl %d2 <== NOT EXECUTED
591f6: 4283 clrl %d3 <== NOT EXECUTED
offset = rtems_rfs_fs_block_size (fs);
else
offset = size->offset;
block_size = rtems_rfs_fs_block_size (fs);
return (((uint64_t) (size->count - 1)) * block_size) + offset;
}
591f8: 2002 movel %d2,%d0 <== NOT EXECUTED
591fa: 2203 movel %d3,%d1 <== NOT EXECUTED
591fc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
59200: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
59204: 4e5e unlk %fp <== NOT EXECUTED
00059394 <rtems_rfs_block_map_close>:
int
rtems_rfs_block_map_close (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map)
{
59394: 4e56 ffe8 linkw %fp,#-24
59398: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
5939c: 242e 0008 movel %fp@(8),%d2
593a0: 246e 000c moveal %fp@(12),%a2
int rc = 0;
int brc;
if (map->dirty && map->inode)
593a4: 4a12 tstb %a2@
593a6: 675c beqs 59404 <rtems_rfs_block_map_close+0x70> <== NEVER TAKEN
593a8: 202a 0002 movel %a2@(2),%d0
593ac: 6756 beqs 59404 <rtems_rfs_block_map_close+0x70> <== NEVER TAKEN
{
brc = rtems_rfs_inode_load (fs, map->inode);
593ae: 2f00 movel %d0,%sp@-
593b0: 2f02 movel %d2,%sp@-
593b2: 4eb9 0005 11fc jsr 511fc <rtems_rfs_inode_load>
if (brc > 0)
593b8: 508f addql #8,%sp
593ba: 4a80 tstl %d0
593bc: 6f00 008a blew 59448 <rtems_rfs_block_map_close+0xb4>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
593c0: 486a 0036 pea %a2@(54) <== NOT EXECUTED
593c4: 2600 movel %d0,%d3 <== NOT EXECUTED
593c6: 47f9 0005 9fc0 lea 59fc0 <rtems_rfs_buffer_handle_release>,%a3<== NOT EXECUTED
593cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
map->dirty = false;
}
}
map->inode = NULL;
593ce: 42aa 0002 clrl %a2@(2) <== NOT EXECUTED
593d2: 4e93 jsr %a3@ <== NOT EXECUTED
593d4: 486a 0040 pea %a2@(64) <== NOT EXECUTED
handle->dirty = false;
593d8: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
593da: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
593de: 1540 0036 moveb %d0,%a2@(54) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
593e2: 42aa 003c clrl %a2@(60) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
593e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
593e8: 4e93 jsr %a3@ <== NOT EXECUTED
handle->dirty = false;
593ea: 4201 clrb %d1 <== NOT EXECUTED
rc = brc;
brc = rtems_rfs_buffer_handle_close (fs, &map->doubly_buffer);
if ((brc > 0) && (rc == 0))
rc = brc;
return rc;
}
593ec: 2003 movel %d3,%d0 <== NOT EXECUTED
593ee: 1541 0040 moveb %d1,%a2@(64) <== NOT EXECUTED
handle->bnum = 0;
593f2: 42aa 0042 clrl %a2@(66) <== NOT EXECUTED
handle->buffer = NULL;
593f6: 42aa 0046 clrl %a2@(70) <== NOT EXECUTED
593fa: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
59400: 4e5e unlk %fp <== NOT EXECUTED
59402: 4e75 rts <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
59404: 486a 0036 pea %a2@(54) <== NOT EXECUTED
59408: 47f9 0005 9fc0 lea 59fc0 <rtems_rfs_buffer_handle_release>,%a3<== NOT EXECUTED
int
rtems_rfs_block_map_close (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map)
{
int rc = 0;
5940e: 4283 clrl %d3 <== NOT EXECUTED
59410: 2f02 movel %d2,%sp@- <== NOT EXECUTED
map->dirty = false;
}
}
map->inode = NULL;
59412: 42aa 0002 clrl %a2@(2) <== NOT EXECUTED
59416: 4e93 jsr %a3@ <== NOT EXECUTED
59418: 486a 0040 pea %a2@(64) <== NOT EXECUTED
handle->dirty = false;
5941c: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5941e: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
59422: 1540 0036 moveb %d0,%a2@(54) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
59426: 42aa 003c clrl %a2@(60) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5942a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5942c: 4e93 jsr %a3@ <== NOT EXECUTED
handle->dirty = false;
5942e: 4201 clrb %d1 <== NOT EXECUTED
rc = brc;
brc = rtems_rfs_buffer_handle_close (fs, &map->doubly_buffer);
if ((brc > 0) && (rc == 0))
rc = brc;
return rc;
}
59430: 2003 movel %d3,%d0 <== NOT EXECUTED
59432: 1541 0040 moveb %d1,%a2@(64) <== NOT EXECUTED
handle->bnum = 0;
59436: 42aa 0042 clrl %a2@(66) <== NOT EXECUTED
handle->buffer = NULL;
5943a: 42aa 0046 clrl %a2@(70) <== NOT EXECUTED
5943e: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
59444: 4e5e unlk %fp <== NOT EXECUTED
59446: 4e75 rts <== NOT EXECUTED
return rc;
}
int
rtems_rfs_block_map_close (rtems_rfs_file_system* fs,
59448: 47ea 0022 lea %a2@(34),%a3
5944c: 93c9 subal %a1,%a1
if (rc == 0)
{
int b;
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_inode_set_block (map->inode, b, map->blocks[b]);
5944e: 206a 0002 moveal %a2@(2),%a0
* @param bno The block number.
*/
static inline void
rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
{
rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);
59452: 2009 movel %a1,%d0
59454: 5e80 addql #7,%d0
59456: 7618 moveq #24,%d3
if (rc == 0)
{
int b;
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
59458: 5289 addql #1,%a1
rtems_rfs_inode_set_block (map->inode, b, map->blocks[b]);
5945a: 221b movel %a3@+,%d1
5945c: 2801 movel %d1,%d4
5945e: e6ac lsrl %d3,%d4
59460: 2601 movel %d1,%d3
59462: e08b lsrl #8,%d3
59464: e588 lsll #2,%d0
59466: 2868 000c moveal %a0@(12),%a4
5946a: 1984 0800 moveb %d4,%a4@(00000000,%d0:l)
5946e: 2801 movel %d1,%d4
59470: 2868 000c moveal %a0@(12),%a4
59474: 4244 clrw %d4
59476: 4844 swap %d4
59478: 1984 0801 moveb %d4,%a4@(00000001,%d0:l)
5947c: 2868 000c moveal %a0@(12),%a4
59480: 1983 0802 moveb %d3,%a4@(00000002,%d0:l)
59484: 2868 000c moveal %a0@(12),%a4
59488: 1981 0803 moveb %d1,%a4@(00000003,%d0:l)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5948c: 7001 moveq #1,%d0
if (rc == 0)
{
int b;
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
5948e: 7205 moveq #5,%d1
59490: 1140 0010 moveb %d0,%a0@(16)
59494: b289 cmpl %a1,%d1
59496: 66b6 bnes 5944e <rtems_rfs_block_map_close+0xba>
rtems_rfs_inode_set_block (map->inode, b, map->blocks[b]);
rtems_rfs_inode_set_block_count (map->inode, map->size.count);
59498: 206a 0002 moveal %a2@(2),%a0
* @param block_count The block count.
*/
static inline void
rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_count)
{
rtems_rfs_write_u32 (&handle->node->block_count, block_count);
5949c: 123c 0018 moveb #24,%d1
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
594a0: 47f9 0005 9fc0 lea 59fc0 <rtems_rfs_buffer_handle_release>,%a3
594a6: 202a 0006 movel %a2@(6),%d0
594aa: 2600 movel %d0,%d3
594ac: e2ab lsrl %d1,%d3
594ae: 2200 movel %d0,%d1
594b0: e089 lsrl #8,%d1
594b2: 2268 000c moveal %a0@(12),%a1
594b6: 1343 000c moveb %d3,%a1@(12)
594ba: 2600 movel %d0,%d3
594bc: 2268 000c moveal %a0@(12),%a1
594c0: 4243 clrw %d3
594c2: 4843 swap %d3
594c4: 1343 000d moveb %d3,%a1@(13)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
594c8: 7601 moveq #1,%d3
* @param block_count The block count.
*/
static inline void
rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_count)
{
rtems_rfs_write_u32 (&handle->node->block_count, block_count);
594ca: 2268 000c moveal %a0@(12),%a1
594ce: 1341 000e moveb %d1,%a1@(14)
594d2: 2268 000c moveal %a0@(12),%a1
594d6: 1340 000f moveb %d0,%a1@(15)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
594da: 1143 0010 moveb %d3,%a0@(16)
int
rtems_rfs_block_map_free_all (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map)
{
return rtems_rfs_block_map_shrink (fs, map, map->size.count);
}
594de: 202a 000a movel %a2@(10),%d0
int b;
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_inode_set_block (map->inode, b, map->blocks[b]);
rtems_rfs_inode_set_block_count (map->inode, map->size.count);
rtems_rfs_inode_set_block_offset (map->inode, map->size.offset);
594e2: 206a 0002 moveal %a2@(2),%a0
int
rtems_rfs_block_map_free_all (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map)
{
return rtems_rfs_block_map_shrink (fs, map, map->size.count);
}
594e6: 0280 0000 ffff andil #65535,%d0
*/
static inline void
rtems_rfs_inode_set_block_offset (rtems_rfs_inode_handle* handle,
uint16_t block_offset)
{
rtems_rfs_write_u16 (&handle->node->block_offset, block_offset);
594ec: 2268 000c moveal %a0@(12),%a1
594f0: 2200 movel %d0,%d1
594f2: e089 lsrl #8,%d1
594f4: 1341 000a moveb %d1,%a1@(10)
* @param block_count The last map block number.
*/
static inline void
rtems_rfs_inode_set_last_map_block (rtems_rfs_inode_handle* handle, uint32_t last_map_block)
{
rtems_rfs_write_u32 (&handle->node->last_map_block, last_map_block);
594f8: 7218 moveq #24,%d1
*/
static inline void
rtems_rfs_inode_set_block_offset (rtems_rfs_inode_handle* handle,
uint16_t block_offset)
{
rtems_rfs_write_u16 (&handle->node->block_offset, block_offset);
594fa: 2268 000c moveal %a0@(12),%a1
594fe: 1340 000b moveb %d0,%a1@(11)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
59502: 1143 0010 moveb %d3,%a0@(16)
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_inode_set_block (map->inode, b, map->blocks[b]);
rtems_rfs_inode_set_block_count (map->inode, map->size.count);
rtems_rfs_inode_set_block_offset (map->inode, map->size.offset);
rtems_rfs_inode_set_last_map_block (map->inode, map->last_map_block);
59506: 206a 0002 moveal %a2@(2),%a0
5950a: 202a 001a movel %a2@(26),%d0
* @param block_count The last map block number.
*/
static inline void
rtems_rfs_inode_set_last_map_block (rtems_rfs_inode_handle* handle, uint32_t last_map_block)
{
rtems_rfs_write_u32 (&handle->node->last_map_block, last_map_block);
5950e: 2600 movel %d0,%d3
59510: e2ab lsrl %d1,%d3
59512: 2200 movel %d0,%d1
59514: e089 lsrl #8,%d1
59516: 2268 000c moveal %a0@(12),%a1
5951a: 1343 0030 moveb %d3,%a1@(48)
5951e: 2600 movel %d0,%d3
59520: 2268 000c moveal %a0@(12),%a1
59524: 4243 clrw %d3
59526: 4843 swap %d3
59528: 1343 0031 moveb %d3,%a1@(49)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5952c: 7601 moveq #1,%d3
* @param block_count The last map block number.
*/
static inline void
rtems_rfs_inode_set_last_map_block (rtems_rfs_inode_handle* handle, uint32_t last_map_block)
{
rtems_rfs_write_u32 (&handle->node->last_map_block, last_map_block);
5952e: 2268 000c moveal %a0@(12),%a1
59532: 1341 0032 moveb %d1,%a1@(50)
* @param block_count The last data block number.
*/
static inline void
rtems_rfs_inode_set_last_data_block (rtems_rfs_inode_handle* handle, uint32_t last_data_block)
{
rtems_rfs_write_u32 (&handle->node->last_data_block, last_data_block);
59536: 7218 moveq #24,%d1
* @param block_count The last map block number.
*/
static inline void
rtems_rfs_inode_set_last_map_block (rtems_rfs_inode_handle* handle, uint32_t last_map_block)
{
rtems_rfs_write_u32 (&handle->node->last_map_block, last_map_block);
59538: 2268 000c moveal %a0@(12),%a1
5953c: 1340 0033 moveb %d0,%a1@(51)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
59540: 1143 0010 moveb %d3,%a0@(16)
rtems_rfs_inode_set_last_data_block (map->inode, map->last_data_block);
59544: 206a 0002 moveal %a2@(2),%a0
59548: 202a 001e movel %a2@(30),%d0
* @param block_count The last data block number.
*/
static inline void
rtems_rfs_inode_set_last_data_block (rtems_rfs_inode_handle* handle, uint32_t last_data_block)
{
rtems_rfs_write_u32 (&handle->node->last_data_block, last_data_block);
5954c: 2600 movel %d0,%d3
5954e: e2ab lsrl %d1,%d3
59550: 2200 movel %d0,%d1
59552: e089 lsrl #8,%d1
59554: 2268 000c moveal %a0@(12),%a1
59558: 1343 0034 moveb %d3,%a1@(52)
5955c: 2600 movel %d0,%d3
5955e: 2268 000c moveal %a0@(12),%a1
59562: 4243 clrw %d3
59564: 4843 swap %d3
59566: 1343 0035 moveb %d3,%a1@(53)
5956a: 2268 000c moveal %a0@(12),%a1
5956e: 1341 0036 moveb %d1,%a1@(54)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
59572: 7601 moveq #1,%d3
* @param block_count The last data block number.
*/
static inline void
rtems_rfs_inode_set_last_data_block (rtems_rfs_inode_handle* handle, uint32_t last_data_block)
{
rtems_rfs_write_u32 (&handle->node->last_data_block, last_data_block);
59574: 2268 000c moveal %a0@(12),%a1
59578: 1340 0037 moveb %d0,%a1@(55)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5957c: 1143 0010 moveb %d3,%a0@(16)
brc = rtems_rfs_inode_unload (fs, map->inode, true);
59580: 4878 0001 pea 1 <ADD>
59584: 2f2a 0002 movel %a2@(2),%sp@-
59588: 2f02 movel %d2,%sp@-
5958a: 4eb9 0005 1384 jsr 51384 <rtems_rfs_inode_unload>
59590: 4fef 000c lea %sp@(12),%sp
59594: 2600 movel %d0,%d3
59596: 4680 notl %d0
if (brc > 0)
rc = brc;
map->dirty = false;
59598: 4212 clrb %a2@
5959a: d080 addl %d0,%d0
5959c: 9180 subxl %d0,%d0
5959e: 486a 0036 pea %a2@(54)
595a2: c680 andl %d0,%d3
595a4: 2f02 movel %d2,%sp@-
}
}
map->inode = NULL;
595a6: 42aa 0002 clrl %a2@(2)
595aa: 4e93 jsr %a3@
595ac: 486a 0040 pea %a2@(64)
handle->dirty = false;
595b0: 4200 clrb %d0
handle->bnum = 0;
595b2: 42aa 0038 clrl %a2@(56)
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
595b6: 1540 0036 moveb %d0,%a2@(54)
handle->bnum = 0;
handle->buffer = NULL;
595ba: 42aa 003c clrl %a2@(60)
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
595be: 2f02 movel %d2,%sp@-
595c0: 4e93 jsr %a3@
handle->dirty = false;
595c2: 4201 clrb %d1
rc = brc;
brc = rtems_rfs_buffer_handle_close (fs, &map->doubly_buffer);
if ((brc > 0) && (rc == 0))
rc = brc;
return rc;
}
595c4: 2003 movel %d3,%d0
595c6: 1541 0040 moveb %d1,%a2@(64)
handle->bnum = 0;
595ca: 42aa 0042 clrl %a2@(66)
handle->buffer = NULL;
595ce: 42aa 0046 clrl %a2@(70)
595d2: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
595d8: 4e5e unlk %fp <== NOT EXECUTED
000595dc <rtems_rfs_block_map_find>:
int
rtems_rfs_block_map_find (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_block_pos* bpos,
rtems_rfs_block_no* block)
{
595dc: 4e56 ffe0 linkw %fp,#-32
595e0: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
595e4: 286e 0014 moveal %fp@(20),%a4
595e8: 266e 0010 moveal %fp@(16),%a3
595ec: 246e 000c moveal %fp@(12),%a2
int rc = 0;
*block = 0;
595f0: 4294 clrl %a4@
/*
* Range checking here makes the remaining logic simpler.
*/
if (rtems_rfs_block_pos_block_past_end (bpos, &map->size))
595f2: 2013 movel %a3@,%d0
595f4: 222a 0006 movel %a2@(6),%d1
595f8: 4a80 tstl %d0
595fa: 6710 beqs 5960c <rtems_rfs_block_map_find+0x30> <== ALWAYS TAKEN
595fc: 4a81 tstl %d1 <== NOT EXECUTED
595fe: 660c bnes 5960c <rtems_rfs_block_map_find+0x30> <== NOT EXECUTED
{
/*
* This should never happen. Here so Joel can remove once his coverage
* testing gets to the file systems.
*/
rc = ENXIO;
59600: 7006 moveq #6,%d0
rtems_rfs_block_copy_bpos (&map->bpos, bpos);
map->bpos.block = *block;
}
return rc;
}
59602: 4cee 3c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a5
59608: 4e5e unlk %fp
5960a: 4e75 rts
*block = 0;
/*
* Range checking here makes the remaining logic simpler.
*/
if (rtems_rfs_block_pos_block_past_end (bpos, &map->size))
5960c: b280 cmpl %d0,%d1
5960e: 63f0 blss 59600 <rtems_rfs_block_map_find+0x24> <== ALWAYS TAKEN
return ENXIO;
/*
* If the block position is the same and we have found the block just return it.
*/
if ((bpos->bno == map->bpos.bno) && (map->bpos.block != 0))
59610: b0aa 000e cmpl %a2@(14),%d0 <== NOT EXECUTED
59614: 672a beqs 59640 <rtems_rfs_block_map_find+0x64> <== NOT EXECUTED
/*
* Determine the type of access we need to perform. If the number of blocks
* is less than or equal to the number of slots in the inode the blocks are
* directly accessed.
*/
if (map->size.count <= RTEMS_RFS_INODE_BLOCKS)
59616: 7405 moveq #5,%d2 <== NOT EXECUTED
59618: b481 cmpl %d1,%d2 <== NOT EXECUTED
5961a: 6546 bcss 59662 <rtems_rfs_block_map_find+0x86> <== NOT EXECUTED
{
*block = map->blocks[bpos->bno];
5961c: 28b2 0c22 movel %a2@(00000022,%d0:l:4),%a4@ <== NOT EXECUTED
}
}
if (rc == 0)
{
rtems_rfs_block_copy_bpos (&map->bpos, bpos);
59620: 2553 000e movel %a3@,%a2@(14) <== NOT EXECUTED
map->bpos.block = *block;
59624: 4280 clrl %d0 <== NOT EXECUTED
}
}
if (rc == 0)
{
rtems_rfs_block_copy_bpos (&map->bpos, bpos);
59626: 256b 0004 0012 movel %a3@(4),%a2@(18) <== NOT EXECUTED
5962c: 256b 0008 0016 movel %a3@(8),%a2@(22) <== NOT EXECUTED
map->bpos.block = *block;
59632: 2554 0016 movel %a4@,%a2@(22) <== NOT EXECUTED
}
return rc;
}
59636: 4cee 3c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a5 <== NOT EXECUTED
5963c: 4e5e unlk %fp <== NOT EXECUTED
5963e: 4e75 rts <== NOT EXECUTED
return ENXIO;
/*
* If the block position is the same and we have found the block just return it.
*/
if ((bpos->bno == map->bpos.bno) && (map->bpos.block != 0))
59640: 206a 0016 moveal %a2@(22),%a0 <== NOT EXECUTED
59644: 4a88 tstl %a0 <== NOT EXECUTED
59646: 67ce beqs 59616 <rtems_rfs_block_map_find+0x3a> <== NOT EXECUTED
{
*block = map->bpos.block;
59648: 2888 movel %a0,%a4@ <== NOT EXECUTED
}
}
if (rc == 0)
{
rtems_rfs_block_copy_bpos (&map->bpos, bpos);
5964a: 2553 000e movel %a3@,%a2@(14) <== NOT EXECUTED
map->bpos.block = *block;
5964e: 4280 clrl %d0 <== NOT EXECUTED
}
}
if (rc == 0)
{
rtems_rfs_block_copy_bpos (&map->bpos, bpos);
59650: 256b 0004 0012 movel %a3@(4),%a2@(18) <== NOT EXECUTED
59656: 256b 0008 0016 movel %a3@(8),%a2@(22) <== NOT EXECUTED
map->bpos.block = *block;
5965c: 2554 0016 movel %a4@,%a2@(22) <== NOT EXECUTED
59660: 60d4 bras 59636 <rtems_rfs_block_map_find+0x5a> <== NOT EXECUTED
* The map is either singly or doubly indirect.
*/
rtems_rfs_block_no direct;
rtems_rfs_block_no singly;
direct = bpos->bno % fs->blocks_per_block;
59662: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
59666: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED
5966a: 4c42 0004 remul %d2,%d4,%d0 <== NOT EXECUTED
5966e: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
singly = bpos->bno / fs->blocks_per_block;
59672: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
if (map->size.count <= fs->block_map_singly_blocks)
59676: b2a8 0038 cmpl %a0@(56),%d1 <== NOT EXECUTED
5967a: 635e blss 596da <rtems_rfs_block_map_find+0xfe> <== NOT EXECUTED
rtems_rfs_block_no doubly;
doubly = singly / fs->blocks_per_block;
singly %= fs->blocks_per_block;
if (map->size.count < fs->block_map_doubly_blocks)
5967c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
* The map is doubly indirect.
*/
rtems_rfs_block_no doubly;
doubly = singly / fs->blocks_per_block;
singly %= fs->blocks_per_block;
59680: 4c42 0003 remul %d2,%d3,%d0 <== NOT EXECUTED
59684: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
59688: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED
if (map->size.count < fs->block_map_doubly_blocks)
5968c: b2a8 003c cmpl %a0@(60),%d1 <== NOT EXECUTED
59690: 6400 ff6e bccw 59600 <rtems_rfs_block_map_find+0x24> <== NOT EXECUTED
{
rc = rtems_rfs_block_find_indirect (fs,
59694: 486e fffc pea %fp@(-4) <== NOT EXECUTED
59698: 4bfa f846 lea %pc@(58ee0 <rtems_rfs_block_find_indirect>),%a5<== NOT EXECUTED
5969c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5969e: 2f32 0c22 movel %a2@(00000022,%d0:l:4),%sp@- <== NOT EXECUTED
596a2: 486a 0040 pea %a2@(64) <== NOT EXECUTED
596a6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
596a8: 4e95 jsr %a5@ <== NOT EXECUTED
&map->doubly_buffer,
map->blocks[doubly],
singly, &singly);
if (rc == 0)
596aa: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
596ae: 4a80 tstl %d0 <== NOT EXECUTED
596b0: 6600 ff50 bnew 59602 <rtems_rfs_block_map_find+0x26> <== NOT EXECUTED
{
rc = rtems_rfs_block_find_indirect (fs,
596b4: 2f0c movel %a4,%sp@- <== NOT EXECUTED
596b6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
596b8: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
596bc: 486a 0036 pea %a2@(54) <== NOT EXECUTED
596c0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
596c4: 4e95 jsr %a5@ <== NOT EXECUTED
596c6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
}
}
}
if (rc == 0)
596ca: 4a80 tstl %d0 <== NOT EXECUTED
596cc: 6700 ff52 beqw 59620 <rtems_rfs_block_map_find+0x44> <== NOT EXECUTED
rtems_rfs_block_copy_bpos (&map->bpos, bpos);
map->bpos.block = *block;
}
return rc;
}
596d0: 4cee 3c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a5 <== NOT EXECUTED
596d6: 4e5e unlk %fp <== NOT EXECUTED
596d8: 4e75 rts <== NOT EXECUTED
{
/*
* This is a single indirect table of blocks anchored off a slot in the
* inode.
*/
rc = rtems_rfs_block_find_indirect (fs,
596da: 2f0c movel %a4,%sp@- <== NOT EXECUTED
596dc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
596de: 2f32 0c22 movel %a2@(00000022,%d0:l:4),%sp@- <== NOT EXECUTED
596e2: 486a 0036 pea %a2@(54) <== NOT EXECUTED
596e6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
596e8: 4eba f7f6 jsr %pc@(58ee0 <rtems_rfs_block_find_indirect>)<== NOT EXECUTED
596ec: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
}
}
}
if (rc == 0)
596f0: 4a80 tstl %d0 <== NOT EXECUTED
596f2: 66dc bnes 596d0 <rtems_rfs_block_map_find+0xf4> <== NOT EXECUTED
596f4: 6000 ff2a braw 59620 <rtems_rfs_block_map_find+0x44> <== NOT EXECUTED
00059df0 <rtems_rfs_block_map_free_all>:
}
int
rtems_rfs_block_map_free_all (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map)
{
59df0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59df4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
return rtems_rfs_block_map_shrink (fs, map, map->size.count);
59df8: 2f28 0006 movel %a0@(6),%sp@- <== NOT EXECUTED
59dfc: 2f08 movel %a0,%sp@- <== NOT EXECUTED
59dfe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
59e02: 4eb9 0005 9b44 jsr 59b44 <rtems_rfs_block_map_shrink> <== NOT EXECUTED
}
59e08: 4e5e unlk %fp <== NOT EXECUTED
000597a8 <rtems_rfs_block_map_grow>:
int
rtems_rfs_block_map_grow (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
size_t blocks,
rtems_rfs_block_no* new_block)
{
597a8: 4e56 ffc0 linkw %fp,#-64
597ac: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
597b0: 4878 2000 pea 2000 <D_MAX_EXP+0x1801>
int
rtems_rfs_block_map_grow (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
size_t blocks,
rtems_rfs_block_no* new_block)
{
597b4: 266e 0008 moveal %fp@(8),%a3
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
597b8: 42a7 clrl %sp@-
int
rtems_rfs_block_map_grow (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
size_t blocks,
rtems_rfs_block_no* new_block)
{
597ba: 246e 000c moveal %fp@(12),%a2
597be: 282e 0010 movel %fp@(16),%d4
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
597c2: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
597c8: 508f addql #8,%sp
597ca: 4a00 tstb %d0
597cc: 661a bnes 597e8 <rtems_rfs_block_map_grow+0x40> <== NEVER TAKEN
printf ("rtems-rfs: block-map-grow: entry: blocks=%zd count=%" PRIu32 "\n",
blocks, map->size.count);
if ((map->size.count + blocks) >= rtems_rfs_fs_max_block_map_blocks (fs))
597ce: 2004 movel %d4,%d0
597d0: d0aa 0006 addl %a2@(6),%d0
597d4: b0ab 003c cmpl %a3@(60),%d0
597d8: 6530 bcss 5980a <rtems_rfs_block_map_grow+0x62> <== ALWAYS TAKEN
return EFBIG;
597da: 721b moveq #27,%d1 <== NOT EXECUTED
map->last_data_block = block;
map->dirty = true;
}
return 0;
}
597dc: 2001 movel %d1,%d0 <== NOT EXECUTED
597de: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 <== NOT EXECUTED
597e4: 4e5e unlk %fp <== NOT EXECUTED
597e6: 4e75 rts <== NOT EXECUTED
rtems_rfs_block_no* new_block)
{
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: entry: blocks=%zd count=%" PRIu32 "\n",
597e8: 2f2a 0006 movel %a2@(6),%sp@- <== NOT EXECUTED
597ec: 2f04 movel %d4,%sp@- <== NOT EXECUTED
597ee: 4879 0007 2153 pea 72153 <CSWTCH.2+0x8b> <== NOT EXECUTED
597f4: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
597fa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
blocks, map->size.count);
if ((map->size.count + blocks) >= rtems_rfs_fs_max_block_map_blocks (fs))
597fe: 2004 movel %d4,%d0 <== NOT EXECUTED
59800: d0aa 0006 addl %a2@(6),%d0 <== NOT EXECUTED
59804: b0ab 003c cmpl %a3@(60),%d0 <== NOT EXECUTED
59808: 64d0 bccs 597da <rtems_rfs_block_map_grow+0x32> <== NOT EXECUTED
/*
* Allocate a block at a time. The buffer handles hold the blocks so adding
* this way does not thrash the cache with lots of requests.
*/
for (b = 0; b < blocks; b++)
5980a: 4a84 tstl %d4
5980c: 6778 beqs 59886 <rtems_rfs_block_map_grow+0xde> <== NEVER TAKEN
}
singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
singly);
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
5980e: 2c0a movel %a2,%d6
singly,
singly_block);
}
else
{
rc = rtems_rfs_buffer_handle_request (fs,
59810: 41ea 0040 lea %a2@(64),%a0
}
singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
singly);
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
59814: 0686 0000 0036 addil #54,%d6
5981a: 2a0e movel %fp,%d5
map->last_map_block = new_block;
return 0;
}
int
rtems_rfs_block_map_grow (rtems_rfs_file_system* fs,
5981c: 4282 clrl %d2
5981e: 5185 subql #8,%d5
59820: 49f9 0005 0d4a lea 50d4a <rtems_rfs_group_bitmap_alloc>,%a4
singly,
singly_block);
}
else
{
rc = rtems_rfs_buffer_handle_request (fs,
59826: 4bf9 0005 a19a lea 5a19a <rtems_rfs_buffer_handle_request>,%a5
5982c: 202a 001e movel %a2@(30),%d0
59830: 2d48 fff4 movel %a0,%fp@(-12)
* doubly indirect block as well. Both always occur when direct is 0
* and the doubly indirect block when singly is 0.
*/
if (direct == 0)
{
rc = rtems_rfs_block_map_indirect_alloc (fs, map,
59834: 2d46 ffe8 movel %d6,%fp@(-24)
/*
* Allocate the block. If an indirect block is needed and cannot be
* allocated free this block.
*/
rc = rtems_rfs_group_bitmap_alloc (fs, map->last_data_block,
59838: 2f05 movel %d5,%sp@-
5983a: 42a7 clrl %sp@-
5983c: 2f00 movel %d0,%sp@-
5983e: 2f0b movel %a3,%sp@-
59840: 4e94 jsr %a4@
false, &block);
if (rc > 0)
59842: 4fef 0010 lea %sp@(16),%sp
59846: 4a80 tstl %d0
59848: 6e00 02ec bgtw 59b36 <rtems_rfs_block_map_grow+0x38e>
return rc;
if (map->size.count < RTEMS_RFS_INODE_BLOCKS)
5984c: 202a 0006 movel %a2@(6),%d0
59850: 7204 moveq #4,%d1
59852: b280 cmpl %d0,%d1
59854: 653e bcss 59894 <rtems_rfs_block_map_grow+0xec> <== NEVER TAKEN
map->blocks[map->size.count] = block;
59856: 41ee fff8 lea %fp@(-8),%a0
5985a: 2590 0c22 movel %a0@,%a2@(00000022,%d0:l:4)
}
rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
}
map->size.count++;
5985e: 5280 addql #1,%d0
map->size.offset = 0;
59860: 42aa 000a clrl %a2@(10)
}
rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
}
map->size.count++;
59864: 2540 0006 movel %d0,%a2@(6)
map->size.offset = 0;
if (b == 0)
59868: 4a82 tstl %d2
5986a: 6608 bnes 59874 <rtems_rfs_block_map_grow+0xcc> <== NEVER TAKEN
*new_block = block;
5986c: 206e 0014 moveal %fp@(20),%a0
59870: 20ae fff8 movel %fp@(-8),%a0@
map->last_data_block = block;
59874: 202e fff8 movel %fp@(-8),%d0
/*
* Allocate a block at a time. The buffer handles hold the blocks so adding
* this way does not thrash the cache with lots of requests.
*/
for (b = 0; b < blocks; b++)
59878: 5282 addql #1,%d2
map->size.offset = 0;
if (b == 0)
*new_block = block;
map->last_data_block = block;
map->dirty = true;
5987a: 14bc 0001 moveb #1,%a2@
map->size.count++;
map->size.offset = 0;
if (b == 0)
*new_block = block;
map->last_data_block = block;
5987e: 2540 001e movel %d0,%a2@(30)
/*
* Allocate a block at a time. The buffer handles hold the blocks so adding
* this way does not thrash the cache with lots of requests.
*/
for (b = 0; b < blocks; b++)
59882: b882 cmpl %d2,%d4
59884: 66b2 bnes 59838 <rtems_rfs_block_map_grow+0x90> <== NEVER TAKEN
*new_block = block;
map->last_data_block = block;
map->dirty = true;
}
return 0;
59886: 4281 clrl %d1
}
59888: 2001 movel %d1,%d0
5988a: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5
59890: 4e5e unlk %fp
59892: 4e75 rts
* Single indirect access is occuring. It could still be doubly indirect.
*/
rtems_rfs_block_no direct;
rtems_rfs_block_no singly;
direct = map->size.count % fs->blocks_per_block;
59894: 222b 0034 movel %a3@(52),%d1 <== NOT EXECUTED
59898: 2c00 movel %d0,%d6 <== NOT EXECUTED
5989a: 4c41 6003 remul %d1,%d3,%d6 <== NOT EXECUTED
5989e: 4c41 6006 remul %d1,%d6,%d6 <== NOT EXECUTED
598a2: 2046 moveal %d6,%a0 <== NOT EXECUTED
singly = map->size.count / fs->blocks_per_block;
if (map->size.count < fs->block_map_singly_blocks)
598a4: b0ab 0038 cmpl %a3@(56),%d0 <== NOT EXECUTED
598a8: 6400 00a2 bccw 5994c <rtems_rfs_block_map_grow+0x1a4> <== NOT EXECUTED
* Singly indirect tables are being used. Allocate a new block for a
* mapping table if direct is 0 or we are moving up (upping). If upping
* move the direct blocks into the table and if not this is the first
* entry of a new block.
*/
if ((direct == 0) ||
598ac: 4a83 tstl %d3 <== NOT EXECUTED
598ae: 6774 beqs 59924 <rtems_rfs_block_map_grow+0x17c> <== NOT EXECUTED
598b0: 4a86 tstl %d6 <== NOT EXECUTED
598b2: 6606 bnes 598ba <rtems_rfs_block_map_grow+0x112> <== NOT EXECUTED
((singly == 0) && (direct == RTEMS_RFS_INODE_BLOCKS)))
598b4: 7e05 moveq #5,%d7 <== NOT EXECUTED
598b6: be83 cmpl %d3,%d7 <== NOT EXECUTED
598b8: 676a beqs 59924 <rtems_rfs_block_map_grow+0x17c> <== NOT EXECUTED
&map->blocks[singly],
upping);
}
else
{
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
598ba: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
598be: 2f32 8c22 movel %a2@(00000022,%a0:l:4),%sp@- <== NOT EXECUTED
598c2: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED
598c6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
598c8: 4e95 jsr %a5@ <== NOT EXECUTED
598ca: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
singly);
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
singly_block, true);
if (rc > 0)
598ce: 4a80 tstl %d0 <== NOT EXECUTED
598d0: 6e00 023e bgtw 59b10 <rtems_rfs_block_map_grow+0x368> <== NOT EXECUTED
return rc;
}
}
}
rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
598d4: 206a 003c moveal %a2@(60),%a0 <== NOT EXECUTED
598d8: 43ee fff8 lea %fp@(-8),%a1 <== NOT EXECUTED
598dc: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
598e0: e58b lsll #2,%d3 <== NOT EXECUTED
598e2: 7001 moveq #1,%d0 <== NOT EXECUTED
598e4: 1191 3800 moveb %a1@,%a0@(00000000,%d3:l) <== NOT EXECUTED
598e8: 43ee fff9 lea %fp@(-7),%a1 <== NOT EXECUTED
598ec: 206a 003c moveal %a2@(60),%a0 <== NOT EXECUTED
598f0: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
598f4: 1191 3801 moveb %a1@,%a0@(00000001,%d3:l) <== NOT EXECUTED
598f8: 43ee fffa lea %fp@(-6),%a1 <== NOT EXECUTED
598fc: 206a 003c moveal %a2@(60),%a0 <== NOT EXECUTED
59900: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
59904: 1191 3802 moveb %a1@,%a0@(00000002,%d3:l) <== NOT EXECUTED
59908: 43ee fffb lea %fp@(-5),%a1 <== NOT EXECUTED
5990c: 206a 003c moveal %a2@(60),%a0 <== NOT EXECUTED
59910: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
59914: 1191 3803 moveb %a1@,%a0@(00000003,%d3:l) <== NOT EXECUTED
59918: 1540 0036 moveb %d0,%a2@(54) <== NOT EXECUTED
5991c: 202a 0006 movel %a2@(6),%d0 <== NOT EXECUTED
59920: 6000 ff3c braw 5985e <rtems_rfs_block_map_grow+0xb6> <== NOT EXECUTED
{
/*
* Upping is when we move from direct to singly indirect.
*/
bool upping;
upping = map->size.count == RTEMS_RFS_INODE_BLOCKS;
59924: 7205 moveq #5,%d1 <== NOT EXECUTED
59926: b280 cmpl %d0,%d1 <== NOT EXECUTED
59928: 57c0 seq %d0 <== NOT EXECUTED
5992a: 49c0 extbl %d0 <== NOT EXECUTED
rc = rtems_rfs_block_map_indirect_alloc (fs, map,
5992c: 4480 negl %d0 <== NOT EXECUTED
5992e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
59930: 4872 8c22 pea %a2@(00000022,%a0:l:4) <== NOT EXECUTED
59934: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED
59938: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5993a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5993c: 4eba f43a jsr %pc@(58d78 <rtems_rfs_block_map_indirect_alloc>)<== NOT EXECUTED
* move the direct blocks into the table and if not this is the first
* entry of a new block.
*/
if ((direct == 0) ||
((singly == 0) && (direct == RTEMS_RFS_INODE_BLOCKS)))
{
59940: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
singly);
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
singly_block, true);
if (rc > 0)
59944: 4a80 tstl %d0 <== NOT EXECUTED
59946: 6f8c bles 598d4 <rtems_rfs_block_map_grow+0x12c> <== NOT EXECUTED
59948: 6000 01c6 braw 59b10 <rtems_rfs_block_map_grow+0x368> <== NOT EXECUTED
* Doubly indirect tables are being used.
*/
rtems_rfs_block_no doubly;
rtems_rfs_block_no singly_block;
doubly = singly / fs->blocks_per_block;
5994c: 4c41 6007 remul %d1,%d7,%d6 <== NOT EXECUTED
59950: 4c41 6006 remul %d1,%d6,%d6 <== NOT EXECUTED
* Allocate a new block for a singly indirect table if direct is 0 as
* it is the first entry of a new block. We may also need to allocate a
* doubly indirect block as well. Both always occur when direct is 0
* and the doubly indirect block when singly is 0.
*/
if (direct == 0)
59954: 4a83 tstl %d3 <== NOT EXECUTED
59956: 6600 0146 bnew 59a9e <rtems_rfs_block_map_grow+0x2f6> <== NOT EXECUTED
{
rc = rtems_rfs_block_map_indirect_alloc (fs, map,
5995a: 42a7 clrl %sp@- <== NOT EXECUTED
5995c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
59960: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED
59964: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59966: 2d46 fff0 movel %d6,%fp@(-16) <== NOT EXECUTED
5996a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5996c: 4eba f40a jsr %pc@(58d78 <rtems_rfs_block_map_indirect_alloc>)<== NOT EXECUTED
&map->singly_buffer,
&singly_block,
false);
if (rc > 0)
59970: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED
59974: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
59978: 4a80 tstl %d0 <== NOT EXECUTED
5997a: 6e00 0194 bgtw 59b10 <rtems_rfs_block_map_grow+0x368> <== NOT EXECUTED
/*
* Allocate a new block for a doubly indirect table if singly is 0 as
* it is the first entry of a new singly indirect block.
*/
if ((singly == 0) ||
5997e: 4a87 tstl %d7 <== NOT EXECUTED
59980: 6700 00c0 beqw 59a42 <rtems_rfs_block_map_grow+0x29a> <== NOT EXECUTED
59984: 4a81 tstl %d1 <== NOT EXECUTED
59986: 6608 bnes 59990 <rtems_rfs_block_map_grow+0x1e8> <== NOT EXECUTED
((doubly == 0) && (singly == RTEMS_RFS_INODE_BLOCKS)))
59988: 7005 moveq #5,%d0 <== NOT EXECUTED
5998a: b087 cmpl %d7,%d0 <== NOT EXECUTED
5998c: 6700 00b4 beqw 59a42 <rtems_rfs_block_map_grow+0x29a> <== NOT EXECUTED
return rc;
}
}
else
{
rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
59990: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
59994: 2f32 1c22 movel %a2@(00000022,%d1:l:4),%sp@- <== NOT EXECUTED
59998: 2f2e fff4 movel %fp@(-12),%sp@- <== NOT EXECUTED
5999c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5999e: 4e95 jsr %a5@ <== NOT EXECUTED
map->blocks[doubly], true);
if (rc > 0)
599a0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
599a4: 4a80 tstl %d0 <== NOT EXECUTED
599a6: 6e00 00c4 bgtw 59a6c <rtems_rfs_block_map_grow+0x2c4> <== NOT EXECUTED
rtems_rfs_group_bitmap_free (fs, false, block);
return rc;
}
}
rtems_rfs_block_set_number (&map->doubly_buffer,
599aa: 206a 0046 moveal %a2@(70),%a0 <== NOT EXECUTED
599ae: 43ee fffc lea %fp@(-4),%a1 <== NOT EXECUTED
599b2: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
599b6: e58f lsll #2,%d7 <== NOT EXECUTED
599b8: 7001 moveq #1,%d0 <== NOT EXECUTED
return rc;
}
}
}
rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
599ba: e58b lsll #2,%d3 <== NOT EXECUTED
rtems_rfs_group_bitmap_free (fs, false, block);
return rc;
}
}
rtems_rfs_block_set_number (&map->doubly_buffer,
599bc: 1191 7800 moveb %a1@,%a0@(00000000,%d7:l) <== NOT EXECUTED
599c0: 43ee fffd lea %fp@(-3),%a1 <== NOT EXECUTED
599c4: 206a 0046 moveal %a2@(70),%a0 <== NOT EXECUTED
599c8: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
599cc: 1191 7801 moveb %a1@,%a0@(00000001,%d7:l) <== NOT EXECUTED
599d0: 43ee fffe lea %fp@(-2),%a1 <== NOT EXECUTED
599d4: 206a 0046 moveal %a2@(70),%a0 <== NOT EXECUTED
599d8: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
599dc: 1191 7802 moveb %a1@,%a0@(00000002,%d7:l) <== NOT EXECUTED
599e0: 43ee ffff lea %fp@(-1),%a1 <== NOT EXECUTED
599e4: 206a 0046 moveal %a2@(70),%a0 <== NOT EXECUTED
599e8: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
599ec: 1191 7803 moveb %a1@,%a0@(00000003,%d7:l) <== NOT EXECUTED
return rc;
}
}
}
rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
599f0: 43ee fff8 lea %fp@(-8),%a1 <== NOT EXECUTED
599f4: 206a 003c moveal %a2@(60),%a0 <== NOT EXECUTED
599f8: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
rtems_rfs_group_bitmap_free (fs, false, block);
return rc;
}
}
rtems_rfs_block_set_number (&map->doubly_buffer,
599fc: 1540 0040 moveb %d0,%a2@(64) <== NOT EXECUTED
return rc;
}
}
}
rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
59a00: 1191 3800 moveb %a1@,%a0@(00000000,%d3:l) <== NOT EXECUTED
59a04: 43ee fff9 lea %fp@(-7),%a1 <== NOT EXECUTED
59a08: 206a 003c moveal %a2@(60),%a0 <== NOT EXECUTED
59a0c: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
59a10: 1191 3801 moveb %a1@,%a0@(00000001,%d3:l) <== NOT EXECUTED
59a14: 43ee fffa lea %fp@(-6),%a1 <== NOT EXECUTED
59a18: 206a 003c moveal %a2@(60),%a0 <== NOT EXECUTED
59a1c: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
59a20: 1191 3802 moveb %a1@,%a0@(00000002,%d3:l) <== NOT EXECUTED
59a24: 7001 moveq #1,%d0 <== NOT EXECUTED
59a26: 43ee fffb lea %fp@(-5),%a1 <== NOT EXECUTED
59a2a: 206a 003c moveal %a2@(60),%a0 <== NOT EXECUTED
59a2e: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
59a32: 1191 3803 moveb %a1@,%a0@(00000003,%d3:l) <== NOT EXECUTED
59a36: 1540 0036 moveb %d0,%a2@(54) <== NOT EXECUTED
59a3a: 202a 0006 movel %a2@(6),%d0 <== NOT EXECUTED
59a3e: 6000 fe1e braw 5985e <rtems_rfs_block_map_grow+0xb6> <== NOT EXECUTED
*/
if ((singly == 0) ||
((doubly == 0) && (singly == RTEMS_RFS_INODE_BLOCKS)))
{
bool upping;
upping = map->size.count == fs->block_map_singly_blocks;
59a42: 2c2b 0038 movel %a3@(56),%d6 <== NOT EXECUTED
59a46: bcaa 0006 cmpl %a2@(6),%d6 <== NOT EXECUTED
59a4a: 57c0 seq %d0 <== NOT EXECUTED
59a4c: 49c0 extbl %d0 <== NOT EXECUTED
rc = rtems_rfs_block_map_indirect_alloc (fs, map,
59a4e: 4480 negl %d0 <== NOT EXECUTED
59a50: 2f00 movel %d0,%sp@- <== NOT EXECUTED
59a52: 4872 1c22 pea %a2@(00000022,%d1:l:4) <== NOT EXECUTED
59a56: 2f2e fff4 movel %fp@(-12),%sp@- <== NOT EXECUTED
59a5a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59a5c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59a5e: 4eba f318 jsr %pc@(58d78 <rtems_rfs_block_map_indirect_alloc>)<== NOT EXECUTED
&map->doubly_buffer,
&map->blocks[doubly],
upping);
if (rc > 0)
59a62: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
59a66: 4a80 tstl %d0 <== NOT EXECUTED
59a68: 6f00 ff40 blew 599aa <rtems_rfs_block_map_grow+0x202> <== NOT EXECUTED
{
rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
map->blocks[doubly], true);
if (rc > 0)
{
rtems_rfs_group_bitmap_free (fs, false, singly_block);
59a6c: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
59a70: 45f9 0005 0f5c lea 50f5c <rtems_rfs_group_bitmap_free>,%a2 <== NOT EXECUTED
59a76: 42a7 clrl %sp@- <== NOT EXECUTED
59a78: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED
59a7c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59a7e: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_rfs_group_bitmap_free (fs, false, block);
59a80: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
59a84: 42a7 clrl %sp@- <== NOT EXECUTED
59a86: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59a88: 4e92 jsr %a2@ <== NOT EXECUTED
59a8a: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED
59a8e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
map->last_data_block = block;
map->dirty = true;
}
return 0;
}
59a92: 2001 movel %d1,%d0 <== NOT EXECUTED
59a94: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59a9a: 4e5e unlk %fp <== NOT EXECUTED
59a9c: 4e75 rts <== NOT EXECUTED
singly,
singly_block);
}
else
{
rc = rtems_rfs_buffer_handle_request (fs,
59a9e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
59aa2: 2f32 6c22 movel %a2@(00000022,%d6:l:4),%sp@- <== NOT EXECUTED
59aa6: 2f2e fff4 movel %fp@(-12),%sp@- <== NOT EXECUTED
59aaa: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59aac: 4e95 jsr %a5@ <== NOT EXECUTED
&map->doubly_buffer,
map->blocks[doubly],
true);
if (rc > 0)
59aae: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
59ab2: 4a80 tstl %d0 <== NOT EXECUTED
59ab4: 6e5a bgts 59b10 <rtems_rfs_block_map_grow+0x368> <== NOT EXECUTED
{
rtems_rfs_group_bitmap_free (fs, false, block);
return rc;
}
singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
59ab6: 206a 0046 moveal %a2@(70),%a0 <== NOT EXECUTED
59aba: 4286 clrl %d6 <== NOT EXECUTED
59abc: 4281 clrl %d1 <== NOT EXECUTED
59abe: 4280 clrl %d0 <== NOT EXECUTED
59ac0: e58f lsll #2,%d7 <== NOT EXECUTED
59ac2: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
59ac6: 1c30 7801 moveb %a0@(00000001,%d7:l),%d6 <== NOT EXECUTED
59aca: 1230 7800 moveb %a0@(00000000,%d7:l),%d1 <== NOT EXECUTED
59ace: 1030 7803 moveb %a0@(00000003,%d7:l),%d0 <== NOT EXECUTED
59ad2: 1e30 7802 moveb %a0@(00000002,%d7:l),%d7 <== NOT EXECUTED
singly);
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
59ad6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
{
rtems_rfs_group_bitmap_free (fs, false, block);
return rc;
}
singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
59ada: 0287 0000 00ff andil #255,%d7 <== NOT EXECUTED
59ae0: 2d46 ffec movel %d6,%fp@(-20) <== NOT EXECUTED
59ae4: 7c18 moveq #24,%d6 <== NOT EXECUTED
59ae6: eda9 lsll %d6,%d1 <== NOT EXECUTED
59ae8: e18f lsll #8,%d7 <== NOT EXECUTED
59aea: 8081 orl %d1,%d0 <== NOT EXECUTED
59aec: 222e ffec movel %fp@(-20),%d1 <== NOT EXECUTED
59af0: 4841 swap %d1 <== NOT EXECUTED
59af2: 4241 clrw %d1 <== NOT EXECUTED
59af4: 8081 orl %d1,%d0 <== NOT EXECUTED
59af6: 8087 orl %d7,%d0 <== NOT EXECUTED
singly);
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
59af8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
59afa: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED
{
rtems_rfs_group_bitmap_free (fs, false, block);
return rc;
}
singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
59afe: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
singly);
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
59b02: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59b04: 4e95 jsr %a5@ <== NOT EXECUTED
singly_block, true);
if (rc > 0)
59b06: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
59b0a: 4a80 tstl %d0 <== NOT EXECUTED
59b0c: 6f00 fdc6 blew 598d4 <rtems_rfs_block_map_grow+0x12c> <== NOT EXECUTED
{
rtems_rfs_group_bitmap_free (fs, false, block);
59b10: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
59b14: 42a7 clrl %sp@- <== NOT EXECUTED
59b16: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED
59b1a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59b1c: 4eb9 0005 0f5c jsr 50f5c <rtems_rfs_group_bitmap_free> <== NOT EXECUTED
59b22: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED
59b26: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
map->last_data_block = block;
map->dirty = true;
}
return 0;
}
59b2a: 2001 movel %d1,%d0 <== NOT EXECUTED
59b2c: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59b32: 4e5e unlk %fp <== NOT EXECUTED
59b34: 4e75 rts <== NOT EXECUTED
59b36: 2200 movel %d0,%d1 <== NOT EXECUTED
59b38: 2001 movel %d1,%d0 <== NOT EXECUTED
59b3a: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59b40: 4e5e unlk %fp <== NOT EXECUTED
00058d78 <rtems_rfs_block_map_indirect_alloc>:
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_buffer_handle* buffer,
rtems_rfs_block_no* block,
bool upping)
{
58d78: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
58d7c: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
int rc;
/*
* Save the new block locally because upping can have *block pointing to the
* slots which are cleared when upping.
*/
rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
58d80: 486e fffc pea %fp@(-4) <== NOT EXECUTED
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_buffer_handle* buffer,
rtems_rfs_block_no* block,
bool upping)
{
58d84: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
int rc;
/*
* Save the new block locally because upping can have *block pointing to the
* slots which are cleared when upping.
*/
rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
58d88: 42a7 clrl %sp@- <== NOT EXECUTED
58d8a: 2f2b 001a movel %a3@(26),%sp@- <== NOT EXECUTED
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_buffer_handle* buffer,
rtems_rfs_block_no* block,
bool upping)
{
58d8e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
58d92: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED
int rc;
/*
* Save the new block locally because upping can have *block pointing to the
* slots which are cleared when upping.
*/
rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
58d96: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_buffer_handle* buffer,
rtems_rfs_block_no* block,
bool upping)
{
58d98: 162e 001b moveb %fp@(27),%d3 <== NOT EXECUTED
int rc;
/*
* Save the new block locally because upping can have *block pointing to the
* slots which are cleared when upping.
*/
rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
58d9c: 4eb9 0005 0d4a jsr 50d4a <rtems_rfs_group_bitmap_alloc> <== NOT EXECUTED
if (rc > 0)
58da2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
int rc;
/*
* Save the new block locally because upping can have *block pointing to the
* slots which are cleared when upping.
*/
rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
58da6: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
58da8: 6f0c bles 58db6 <rtems_rfs_block_map_indirect_alloc+0x3e><== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (buffer);
*block = new_block;
map->last_map_block = new_block;
return 0;
}
58daa: 2002 movel %d2,%d0 <== NOT EXECUTED
58dac: 4cee 3c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a5 <== NOT EXECUTED
58db2: 4e5e unlk %fp <== NOT EXECUTED
58db4: 4e75 rts <== NOT EXECUTED
* slots which are cleared when upping.
*/
rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
if (rc > 0)
return rc;
rc = rtems_rfs_buffer_handle_request (fs, buffer, new_block, false);
58db6: 42a7 clrl %sp@- <== NOT EXECUTED
58db8: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
58dbc: 2f0c movel %a4,%sp@- <== NOT EXECUTED
58dbe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58dc0: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request> <== NOT EXECUTED
if (rc > 0)
58dc6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
* slots which are cleared when upping.
*/
rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
if (rc > 0)
return rc;
rc = rtems_rfs_buffer_handle_request (fs, buffer, new_block, false);
58dca: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
58dcc: 6f1e bles 58dec <rtems_rfs_block_map_indirect_alloc+0x74><== NOT EXECUTED
{
rtems_rfs_group_bitmap_free (fs, false, new_block);
58dce: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
58dd2: 42a7 clrl %sp@- <== NOT EXECUTED
58dd4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58dd6: 4eb9 0005 0f5c jsr 50f5c <rtems_rfs_group_bitmap_free> <== NOT EXECUTED
58ddc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (buffer);
*block = new_block;
map->last_map_block = new_block;
return 0;
}
58de0: 2002 movel %d2,%d0 <== NOT EXECUTED
58de2: 4cee 3c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a5 <== NOT EXECUTED
58de8: 4e5e unlk %fp <== NOT EXECUTED
58dea: 4e75 rts <== NOT EXECUTED
if (rc > 0)
{
rtems_rfs_group_bitmap_free (fs, false, new_block);
return rc;
}
memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
58dec: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
58df0: 206c 0006 moveal %a4@(6),%a0 <== NOT EXECUTED
58df4: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
58df8: 2f28 001a movel %a0@(26),%sp@- <== NOT EXECUTED
58dfc: 4eb9 0006 159c jsr 6159c <memset> <== NOT EXECUTED
if (upping)
58e02: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58e06: 4a03 tstb %d3 <== NOT EXECUTED
58e08: 6620 bnes 58e2a <rtems_rfs_block_map_indirect_alloc+0xb2><== NOT EXECUTED
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_block_set_number (buffer, b, map->blocks[b]);
memset (map->blocks, 0, sizeof (map->blocks));
}
rtems_rfs_buffer_mark_dirty (buffer);
*block = new_block;
58e0a: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
map->last_map_block = new_block;
return 0;
58e0e: 4282 clrl %d2 <== NOT EXECUTED
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_block_set_number (buffer, b, map->blocks[b]);
memset (map->blocks, 0, sizeof (map->blocks));
}
rtems_rfs_buffer_mark_dirty (buffer);
*block = new_block;
58e10: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
map->size.count);
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_block_set_number (buffer, b, map->blocks[b]);
memset (map->blocks, 0, sizeof (map->blocks));
}
rtems_rfs_buffer_mark_dirty (buffer);
58e14: 18bc 0001 moveb #1,%a4@ <== NOT EXECUTED
*block = new_block;
58e18: 2080 movel %d0,%a0@ <== NOT EXECUTED
map->last_map_block = new_block;
58e1a: 2740 001a movel %d0,%a3@(26) <== NOT EXECUTED
return 0;
}
58e1e: 2002 movel %d2,%d0 <== NOT EXECUTED
58e20: 4cee 3c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a5 <== NOT EXECUTED
58e26: 4e5e unlk %fp <== NOT EXECUTED
58e28: 4e75 rts <== NOT EXECUTED
}
memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
if (upping)
{
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
58e2a: 4878 2000 pea 2000 <D_MAX_EXP+0x1801> <== NOT EXECUTED
58e2e: 42a7 clrl %sp@- <== NOT EXECUTED
58e30: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
58e36: 508f addql #8,%sp <== NOT EXECUTED
58e38: 4a00 tstb %d0 <== NOT EXECUTED
58e3a: 6600 0082 bnew 58ebe <rtems_rfs_block_map_indirect_alloc+0x146><== NOT EXECUTED
* @param block The block number of the indirect block allocated.
* @param upping True is upping the map to the next indirect level.
* @return int The error number (errno). No error if 0.
*/
static int
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs,
58e3e: 240b movel %a3,%d2 <== NOT EXECUTED
58e40: 0682 0000 0022 addil #34,%d2 <== NOT EXECUTED
58e46: 2042 moveal %d2,%a0 <== NOT EXECUTED
58e48: 4280 clrl %d0 <== NOT EXECUTED
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
map->size.count);
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_block_set_number (buffer, b, map->blocks[b]);
58e4a: 226c 0006 moveal %a4@(6),%a1 <== NOT EXECUTED
58e4e: 4be8 0001 lea %a0@(1),%a5 <== NOT EXECUTED
* @param block The block number of the indirect block allocated.
* @param upping True is upping the map to the next indirect level.
* @return int The error number (errno). No error if 0.
*/
static int
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs,
58e52: 2448 moveal %a0,%a2 <== NOT EXECUTED
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
map->size.count);
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_block_set_number (buffer, b, map->blocks[b]);
58e54: 568a addql #3,%a2 <== NOT EXECUTED
58e56: 2269 001a moveal %a1@(26),%a1 <== NOT EXECUTED
58e5a: 1390 0800 moveb %a0@,%a1@(00000000,%d0:l) <== NOT EXECUTED
58e5e: 226c 0006 moveal %a4@(6),%a1 <== NOT EXECUTED
58e62: 2269 001a moveal %a1@(26),%a1 <== NOT EXECUTED
58e66: 1395 0801 moveb %a5@,%a1@(00000001,%d0:l) <== NOT EXECUTED
58e6a: 226c 0006 moveal %a4@(6),%a1 <== NOT EXECUTED
58e6e: 2218 movel %a0@+,%d1 <== NOT EXECUTED
58e70: e089 lsrl #8,%d1 <== NOT EXECUTED
58e72: 2269 001a moveal %a1@(26),%a1 <== NOT EXECUTED
58e76: 1381 0802 moveb %d1,%a1@(00000002,%d0:l) <== NOT EXECUTED
{
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
map->size.count);
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
58e7a: 7214 moveq #20,%d1 <== NOT EXECUTED
rtems_rfs_block_set_number (buffer, b, map->blocks[b]);
58e7c: 226c 0006 moveal %a4@(6),%a1 <== NOT EXECUTED
58e80: 2269 001a moveal %a1@(26),%a1 <== NOT EXECUTED
58e84: 1392 0803 moveb %a2@,%a1@(00000003,%d0:l) <== NOT EXECUTED
58e88: 18bc 0001 moveb #1,%a4@ <== NOT EXECUTED
58e8c: 5880 addql #4,%d0 <== NOT EXECUTED
{
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
map->size.count);
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
58e8e: b280 cmpl %d0,%d1 <== NOT EXECUTED
58e90: 66b8 bnes 58e4a <rtems_rfs_block_map_indirect_alloc+0xd2><== NOT EXECUTED
rtems_rfs_block_set_number (buffer, b, map->blocks[b]);
memset (map->blocks, 0, sizeof (map->blocks));
58e92: 2042 moveal %d2,%a0 <== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (buffer);
*block = new_block;
map->last_map_block = new_block;
return 0;
58e94: 4282 clrl %d2 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
map->size.count);
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_block_set_number (buffer, b, map->blocks[b]);
memset (map->blocks, 0, sizeof (map->blocks));
58e96: 4290 clrl %a0@ <== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (buffer);
*block = new_block;
58e98: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
map->size.count);
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_block_set_number (buffer, b, map->blocks[b]);
memset (map->blocks, 0, sizeof (map->blocks));
58e9c: 42ab 0026 clrl %a3@(38) <== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (buffer);
*block = new_block;
58ea0: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
map->size.count);
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
rtems_rfs_block_set_number (buffer, b, map->blocks[b]);
memset (map->blocks, 0, sizeof (map->blocks));
58ea4: 42ab 002a clrl %a3@(42) <== NOT EXECUTED
58ea8: 42ab 002e clrl %a3@(46) <== NOT EXECUTED
58eac: 42ab 0032 clrl %a3@(50) <== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (buffer);
58eb0: 18bc 0001 moveb #1,%a4@ <== NOT EXECUTED
*block = new_block;
58eb4: 2080 movel %d0,%a0@ <== NOT EXECUTED
map->last_map_block = new_block;
58eb6: 2740 001a movel %d0,%a3@(26) <== NOT EXECUTED
58eba: 6000 ff62 braw 58e1e <rtems_rfs_block_map_indirect_alloc+0xa6><== NOT EXECUTED
memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
if (upping)
{
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
58ebe: 2f2b 0006 movel %a3@(6),%sp@- <== NOT EXECUTED
* @param block The block number of the indirect block allocated.
* @param upping True is upping the map to the next indirect level.
* @return int The error number (errno). No error if 0.
*/
static int
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs,
58ec2: 240b movel %a3,%d2 <== NOT EXECUTED
memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
if (upping)
{
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
58ec4: 4879 0007 20d4 pea 720d4 <CSWTCH.2+0xc> <== NOT EXECUTED
* @param block The block number of the indirect block allocated.
* @param upping True is upping the map to the next indirect level.
* @return int The error number (errno). No error if 0.
*/
static int
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs,
58eca: 0682 0000 0022 addil #34,%d2 <== NOT EXECUTED
memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
if (upping)
{
int b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
58ed0: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
58ed6: 508f addql #8,%sp <== NOT EXECUTED
* @param block The block number of the indirect block allocated.
* @param upping True is upping the map to the next indirect level.
* @return int The error number (errno). No error if 0.
*/
static int
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs,
58ed8: 2042 moveal %d2,%a0 <== NOT EXECUTED
58eda: 4280 clrl %d0 <== NOT EXECUTED
58edc: 6000 ff6c braw 58e4a <rtems_rfs_block_map_indirect_alloc+0xd2><== NOT EXECUTED
00058fbe <rtems_rfs_block_map_indirect_shrink.isra.12>:
* @param indirect The index index in the inode's block table.
* @param index The index in the indirect table of the block.
* @return int The error number (errno). No error if 0.
*/
static int
rtems_rfs_block_map_indirect_shrink (rtems_rfs_file_system* fs,
58fbe: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
58fc2: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED
58fc6: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
58fca: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
* block to be freed and the indirect block is now also free, or we have only
* one indirect table and we can fit the remaining blocks into the inode,
* then either move to the next indirect block or move the remaining blocks
* into the inode and free the indirect table's block.
*/
if ((index == 0) ||
58fce: 4aae 0018 tstl %fp@(24) <== NOT EXECUTED
58fd2: 671a beqs 58fee <rtems_rfs_block_map_indirect_shrink.isra.12+0x30><== NOT EXECUTED
58fd4: 4a80 tstl %d0 <== NOT EXECUTED
58fd6: 6642 bnes 5901a <rtems_rfs_block_map_indirect_shrink.isra.12+0x5c><== NOT EXECUTED
((indirect == 0) && (index == RTEMS_RFS_INODE_BLOCKS)))
58fd8: 103c 0005 moveb #5,%d0 <== NOT EXECUTED
58fdc: b0ae 0018 cmpl %fp@(24),%d0 <== NOT EXECUTED
58fe0: 6744 beqs 59026 <rtems_rfs_block_map_indirect_shrink.isra.12+0x68><== NOT EXECUTED
rtems_rfs_block_map* map,
rtems_rfs_buffer_handle* buffer,
rtems_rfs_block_no indirect,
rtems_rfs_block_no index)
{
int rc = 0;
58fe2: 4200 clrb %d0 <== NOT EXECUTED
map->last_map_block = block_to_free;
}
return rc;
}
58fe4: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
58fea: 4e5e unlk %fp <== NOT EXECUTED
58fec: 4e75 rts <== NOT EXECUTED
* into the inode and free the indirect table's block.
*/
if ((index == 0) ||
((indirect == 0) && (index == RTEMS_RFS_INODE_BLOCKS)))
{
rtems_rfs_block_no block_to_free = map->blocks[indirect];
58fee: 2632 0c22 movel %a2@(00000022,%d0:l:4),%d3 <== NOT EXECUTED
else
{
/*
* One less singly indirect block in the inode.
*/
map->blocks[indirect] = 0;
58ff2: 42b2 0c22 clrl %a2@(00000022,%d0:l:4) <== NOT EXECUTED
}
rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);
58ff6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
58ff8: 42a7 clrl %sp@- <== NOT EXECUTED
58ffa: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58ffe: 4eb9 0005 0f5c jsr 50f5c <rtems_rfs_group_bitmap_free> <== NOT EXECUTED
if (rc > 0)
59004: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59008: 4a80 tstl %d0 <== NOT EXECUTED
5900a: 6ed8 bgts 58fe4 <rtems_rfs_block_map_indirect_shrink.isra.12+0x26><== NOT EXECUTED
return rc;
map->last_map_block = block_to_free;
5900c: 2543 001a movel %d3,%a2@(26) <== NOT EXECUTED
}
return rc;
}
59010: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
59016: 4e5e unlk %fp <== NOT EXECUTED
59018: 4e75 rts <== NOT EXECUTED
rtems_rfs_block_map* map,
rtems_rfs_buffer_handle* buffer,
rtems_rfs_block_no indirect,
rtems_rfs_block_no index)
{
int rc = 0;
5901a: 4280 clrl %d0 <== NOT EXECUTED
map->last_map_block = block_to_free;
}
return rc;
}
5901c: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
59022: 4e5e unlk %fp <== NOT EXECUTED
59024: 4e75 rts <== NOT EXECUTED
59026: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
* @param indirect The index index in the inode's block table.
* @param index The index in the indirect table of the block.
* @return int The error number (errno). No error if 0.
*/
static int
rtems_rfs_block_map_indirect_shrink (rtems_rfs_file_system* fs,
5902a: 43ea 0022 lea %a2@(34),%a1 <== NOT EXECUTED
5902e: 2050 moveal %a0@,%a0 <== NOT EXECUTED
59030: 2a28 001a movel %a0@(26),%d5 <== NOT EXECUTED
59034: 2045 moveal %d5,%a0 <== NOT EXECUTED
59036: 5288 addql #1,%a0 <== NOT EXECUTED
59038: 0685 0000 0015 addil #21,%d5 <== NOT EXECUTED
* into the inode and free the indirect table's block.
*/
if ((index == 0) ||
((indirect == 0) && (index == RTEMS_RFS_INODE_BLOCKS)))
{
rtems_rfs_block_no block_to_free = map->blocks[indirect];
5903e: 262a 0022 movel %a2@(34),%d3 <== NOT EXECUTED
/*
* Move to direct inode access.
*/
int b;
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
map->blocks[b] = rtems_rfs_block_get_number (buffer, b);
59042: 4280 clrl %d0 <== NOT EXECUTED
59044: 4282 clrl %d2 <== NOT EXECUTED
59046: 1028 ffff moveb %a0@(-1),%d0 <== NOT EXECUTED
5904a: 1410 moveb %a0@,%d2 <== NOT EXECUTED
5904c: 7218 moveq #24,%d1 <== NOT EXECUTED
5904e: 4284 clrl %d4 <== NOT EXECUTED
59050: 1828 0002 moveb %a0@(2),%d4 <== NOT EXECUTED
59054: e3a8 lsll %d1,%d0 <== NOT EXECUTED
59056: 4842 swap %d2 <== NOT EXECUTED
59058: 4242 clrw %d2 <== NOT EXECUTED
5905a: 4281 clrl %d1 <== NOT EXECUTED
5905c: 1228 0001 moveb %a0@(1),%d1 <== NOT EXECUTED
59060: 5888 addql #4,%a0 <== NOT EXECUTED
59062: 8082 orl %d2,%d0 <== NOT EXECUTED
59064: e189 lsll #8,%d1 <== NOT EXECUTED
59066: 8084 orl %d4,%d0 <== NOT EXECUTED
59068: 8081 orl %d1,%d0 <== NOT EXECUTED
5906a: 22c0 movel %d0,%a1@+ <== NOT EXECUTED
{
/*
* Move to direct inode access.
*/
int b;
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
5906c: ba88 cmpl %a0,%d5 <== NOT EXECUTED
5906e: 6786 beqs 58ff6 <rtems_rfs_block_map_indirect_shrink.isra.12+0x38><== NOT EXECUTED
map->blocks[b] = rtems_rfs_block_get_number (buffer, b);
59070: 4280 clrl %d0 <== NOT EXECUTED
59072: 4282 clrl %d2 <== NOT EXECUTED
59074: 1028 ffff moveb %a0@(-1),%d0 <== NOT EXECUTED
59078: 1410 moveb %a0@,%d2 <== NOT EXECUTED
5907a: 7218 moveq #24,%d1 <== NOT EXECUTED
5907c: 4284 clrl %d4 <== NOT EXECUTED
5907e: 1828 0002 moveb %a0@(2),%d4 <== NOT EXECUTED
59082: e3a8 lsll %d1,%d0 <== NOT EXECUTED
59084: 4842 swap %d2 <== NOT EXECUTED
59086: 4242 clrw %d2 <== NOT EXECUTED
59088: 4281 clrl %d1 <== NOT EXECUTED
5908a: 1228 0001 moveb %a0@(1),%d1 <== NOT EXECUTED
5908e: 5888 addql #4,%a0 <== NOT EXECUTED
59090: 8082 orl %d2,%d0 <== NOT EXECUTED
59092: e189 lsll #8,%d1 <== NOT EXECUTED
59094: 8084 orl %d4,%d0 <== NOT EXECUTED
59096: 8081 orl %d1,%d0 <== NOT EXECUTED
59098: 22c0 movel %d0,%a1@+ <== NOT EXECUTED
{
/*
* Move to direct inode access.
*/
int b;
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
5909a: ba88 cmpl %a0,%d5 <== NOT EXECUTED
5909c: 66a4 bnes 59042 <rtems_rfs_block_map_indirect_shrink.isra.12+0x84><== NOT EXECUTED
5909e: 6000 ff56 braw 58ff6 <rtems_rfs_block_map_indirect_shrink.isra.12+0x38><== NOT EXECUTED
00059776 <rtems_rfs_block_map_next_block>:
int
rtems_rfs_block_map_next_block (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_block_no* block)
{
59776: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
rtems_rfs_block_pos bpos;
bpos.bno = map->bpos.bno + 1;
bpos.boff = 0;
bpos.block = 0;
return rtems_rfs_block_map_find (fs, map, &bpos, block);
5977a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
int
rtems_rfs_block_map_next_block (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_block_no* block)
{
5977e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
rtems_rfs_block_pos bpos;
bpos.bno = map->bpos.bno + 1;
bpos.boff = 0;
bpos.block = 0;
return rtems_rfs_block_map_find (fs, map, &bpos, block);
59782: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
rtems_rfs_block_map_next_block (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_block_no* block)
{
rtems_rfs_block_pos bpos;
bpos.bno = map->bpos.bno + 1;
59786: 2028 000e movel %a0@(14),%d0 <== NOT EXECUTED
5978a: 5280 addql #1,%d0 <== NOT EXECUTED
bpos.boff = 0;
bpos.block = 0;
return rtems_rfs_block_map_find (fs, map, &bpos, block);
5978c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5978e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
rtems_rfs_block_map_next_block (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_block_no* block)
{
rtems_rfs_block_pos bpos;
bpos.bno = map->bpos.bno + 1;
59792: 2d40 fff4 movel %d0,%fp@(-12) <== NOT EXECUTED
bpos.boff = 0;
59796: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
bpos.block = 0;
5979a: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
return rtems_rfs_block_map_find (fs, map, &bpos, block);
5979e: 4eb9 0005 95dc jsr 595dc <rtems_rfs_block_map_find> <== NOT EXECUTED
}
597a4: 4e5e unlk %fp <== NOT EXECUTED
00059208 <rtems_rfs_block_map_open>:
int
rtems_rfs_block_map_open (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* inode,
rtems_rfs_block_map* map)
{
59208: 4e56 ffe4 linkw %fp,#-28
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5920c: 4200 clrb %d0
5920e: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
59212: 286e 000c moveal %fp@(12),%a4
59216: 246e 0010 moveal %fp@(16),%a2
return rc;
rc = rtems_rfs_buffer_handle_open (fs, &map->doubly_buffer);
if (rc > 0)
return rc;
rc = rtems_rfs_inode_load (fs, inode);
5921a: 2f0c movel %a4,%sp@-
int
rtems_rfs_block_map_open (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* inode,
rtems_rfs_block_map* map)
{
5921c: 2a2e 0008 movel %fp@(8),%d5
* sure the inode has been loaded into memory. If we did not load the inode
* do not unload it. The caller may assume it is still loaded when we return.
*/
map->dirty = false;
map->inode = NULL;
59220: 42aa 0002 clrl %a2@(2)
* Set the count to 0 so at least find fails, then open the handle and make
* sure the inode has been loaded into memory. If we did not load the inode
* do not unload it. The caller may assume it is still loaded when we return.
*/
map->dirty = false;
59224: 4212 clrb %a2@
* @param size A pointer to the block size.
*/
static inline void
rtems_rfs_block_set_size_zero (rtems_rfs_block_size* size)
{
size->count = 0;
59226: 42aa 0006 clrl %a2@(6)
5922a: 1540 0036 moveb %d0,%a2@(54)
size->offset = 0;
5922e: 42aa 000a clrl %a2@(10)
59232: 1540 0040 moveb %d0,%a2@(64)
* @param bpos A pointer to the block position.
*/
static inline void
rtems_rfs_block_set_bpos_zero (rtems_rfs_block_pos* bpos)
{
bpos->bno = 0;
59236: 42aa 000e clrl %a2@(14)
bpos->boff = 0;
5923a: 42aa 0012 clrl %a2@(18)
bpos->block = 0;
5923e: 42aa 0016 clrl %a2@(22)
handle->bnum = 0;
59242: 42aa 0038 clrl %a2@(56)
handle->buffer = NULL;
59246: 42aa 003c clrl %a2@(60)
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
handle->bnum = 0;
5924a: 42aa 0042 clrl %a2@(66)
handle->buffer = NULL;
5924e: 42aa 0046 clrl %a2@(70)
return rc;
rc = rtems_rfs_buffer_handle_open (fs, &map->doubly_buffer);
if (rc > 0)
return rc;
rc = rtems_rfs_inode_load (fs, inode);
59252: 2f05 movel %d5,%sp@-
59254: 4eb9 0005 11fc jsr 511fc <rtems_rfs_inode_load>
if (rc > 0)
5925a: 508f addql #8,%sp
return rc;
rc = rtems_rfs_buffer_handle_open (fs, &map->doubly_buffer);
if (rc > 0)
return rc;
rc = rtems_rfs_inode_load (fs, inode);
5925c: 2400 movel %d0,%d2
if (rc > 0)
5925e: 6e00 00f2 bgtw 59352 <rtems_rfs_block_map_open+0x14a>
59262: 226c 000c moveal %a4@(12),%a1
block_size = rtems_rfs_fs_block_size (fs);
return (((uint64_t) (size->count - 1)) * block_size) + offset;
}
int
rtems_rfs_block_map_open (rtems_rfs_file_system* fs,
59266: 47ea 0022 lea %a2@(34),%a3
/*
* Extract the block and block count data from the inode into the targets
* byte order.
*/
map->inode = inode;
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
5926a: 4281 clrl %d1
/*
* Extract the block and block count data from the inode into the targets
* byte order.
*/
map->inode = inode;
5926c: 254c 0002 movel %a4,%a2@(2)
* @return uint32_t The block number.
*/
static inline uint32_t
rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block)
{
return rtems_rfs_read_u32 (&handle->node->data.blocks[block]);
59270: 4280 clrl %d0
59272: 4283 clrl %d3
59274: 7418 moveq #24,%d2
59276: 4284 clrl %d4
59278: 41f1 1c1c lea %a1@(0000001c,%d1:l:4),%a0
for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)
5927c: 5281 addql #1,%d1
5927e: 1010 moveb %a0@,%d0
59280: 1628 0001 moveb %a0@(1),%d3
59284: 1828 0003 moveb %a0@(3),%d4
59288: e5a8 lsll %d2,%d0
5928a: 4843 swap %d3
5928c: 4243 clrw %d3
5928e: 4282 clrl %d2
59290: 1428 0002 moveb %a0@(2),%d2
59294: 8083 orl %d3,%d0
59296: e18a lsll #8,%d2
59298: 8084 orl %d4,%d0
5929a: 8082 orl %d2,%d0
5929c: 26c0 movel %d0,%a3@+
5929e: 7005 moveq #5,%d0
592a0: b081 cmpl %d1,%d0
592a2: 66cc bnes 59270 <rtems_rfs_block_map_open+0x68>
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
592a4: 4280 clrl %d0
592a6: 4282 clrl %d2
592a8: 1029 000c moveb %a1@(12),%d0
592ac: 1429 000d moveb %a1@(13),%d2
592b0: 7218 moveq #24,%d1
592b2: 4283 clrl %d3
592b4: 1629 000f moveb %a1@(15),%d3
592b8: e3a8 lsll %d1,%d0
592ba: 4842 swap %d2
592bc: 4242 clrw %d2
592be: 4281 clrl %d1
592c0: 1229 000e moveb %a1@(14),%d1
592c4: 8082 orl %d2,%d0
592c6: e189 lsll #8,%d1
* @return uint32_t The last map block number.
*/
static inline uint32_t
rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->last_map_block);
592c8: 4282 clrl %d2
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
592ca: 8083 orl %d3,%d0
592cc: 8081 orl %d1,%d0
* @return uint32_t The block offset.
*/
static inline uint16_t
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->block_offset);
592ce: 4281 clrl %d1
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
592d0: 2540 0006 movel %d0,%a2@(6)
* @return uint32_t The block offset.
*/
static inline uint16_t
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->block_offset);
592d4: 4280 clrl %d0
592d6: 1029 000a moveb %a1@(10),%d0
592da: 1229 000b moveb %a1@(11),%d1
592de: e188 lsll #8,%d0
map->blocks[b] = rtems_rfs_inode_get_block (inode, b);
map->size.count = rtems_rfs_inode_get_block_count (inode);
map->size.offset = rtems_rfs_inode_get_block_offset (inode);
592e0: 8081 orl %d1,%d0
* @return uint32_t The last map block number.
*/
static inline uint32_t
rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->last_map_block);
592e2: 7218 moveq #24,%d1
592e4: 2540 000a movel %d0,%a2@(10)
592e8: 4280 clrl %d0
592ea: 1029 0030 moveb %a1@(48),%d0
592ee: 1429 0031 moveb %a1@(49),%d2
592f2: 1629 0033 moveb %a1@(51),%d3
592f6: e3a8 lsll %d1,%d0
592f8: 4842 swap %d2
592fa: 4242 clrw %d2
592fc: 4281 clrl %d1
592fe: 1229 0032 moveb %a1@(50),%d1
59302: 8082 orl %d2,%d0
59304: e189 lsll #8,%d1
* @return uint32_t The last data block number.
*/
static inline uint32_t
rtems_rfs_inode_get_last_data_block (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->last_data_block);
59306: 4282 clrl %d2
* @return uint32_t The last map block number.
*/
static inline uint32_t
rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->last_map_block);
59308: 8083 orl %d3,%d0
5930a: 8081 orl %d1,%d0
* @return uint32_t The last data block number.
*/
static inline uint32_t
rtems_rfs_inode_get_last_data_block (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->last_data_block);
5930c: 7218 moveq #24,%d1
* @return uint32_t The last map block number.
*/
static inline uint32_t
rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->last_map_block);
5930e: 2540 001a movel %d0,%a2@(26)
* @return uint32_t The last data block number.
*/
static inline uint32_t
rtems_rfs_inode_get_last_data_block (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->last_data_block);
59312: 4280 clrl %d0
59314: 1029 0034 moveb %a1@(52),%d0
59318: 1429 0035 moveb %a1@(53),%d2
5931c: 1629 0037 moveb %a1@(55),%d3
59320: e3a8 lsll %d1,%d0
59322: 4842 swap %d2
59324: 4242 clrw %d2
59326: 4281 clrl %d1
59328: 1229 0036 moveb %a1@(54),%d1
5932c: 8082 orl %d2,%d0
5932e: e189 lsll #8,%d1
map->last_map_block = rtems_rfs_inode_get_last_map_block (inode);
map->last_data_block = rtems_rfs_inode_get_last_data_block (inode);
rc = rtems_rfs_inode_unload (fs, inode, false);
59330: 2d4c 000c movel %a4,%fp@(12)
59334: 8083 orl %d3,%d0
59336: 2d45 0008 movel %d5,%fp@(8)
5933a: 8081 orl %d1,%d0
5933c: 42ae 0010 clrl %fp@(16)
59340: 2540 001e movel %d0,%a2@(30)
return rc;
}
59344: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
5934a: 4e5e unlk %fp
map->size.count = rtems_rfs_inode_get_block_count (inode);
map->size.offset = rtems_rfs_inode_get_block_offset (inode);
map->last_map_block = rtems_rfs_inode_get_last_map_block (inode);
map->last_data_block = rtems_rfs_inode_get_last_data_block (inode);
rc = rtems_rfs_inode_unload (fs, inode, false);
5934c: 4ef9 0005 1384 jmp 51384 <rtems_rfs_inode_unload>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
59352: 486a 0036 pea %a2@(54) <== NOT EXECUTED
59356: 47f9 0005 9fc0 lea 59fc0 <rtems_rfs_buffer_handle_release>,%a3<== NOT EXECUTED
5935c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5935e: 4e93 jsr %a3@ <== NOT EXECUTED
59360: 486a 0040 pea %a2@(64) <== NOT EXECUTED
handle->dirty = false;
59364: 4201 clrb %d1 <== NOT EXECUTED
59366: 1541 0036 moveb %d1,%a2@(54) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5936a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
handle->dirty = false;
handle->bnum = 0;
5936c: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
handle->buffer = NULL;
59370: 42aa 003c clrl %a2@(60) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
59374: 4e93 jsr %a3@ <== NOT EXECUTED
handle->dirty = false;
handle->bnum = 0;
handle->buffer = NULL;
59376: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5937a: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5937c: 42aa 0042 clrl %a2@(66) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
59380: 1540 0040 moveb %d0,%a2@(64) <== NOT EXECUTED
return rc;
}
59384: 2002 movel %d2,%d0 <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
59386: 42aa 0046 clrl %a2@(70) <== NOT EXECUTED
5938a: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
59390: 4e5e unlk %fp <== NOT EXECUTED
000596f8 <rtems_rfs_block_map_seek>:
int
rtems_rfs_block_map_seek (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_pos_rel offset,
rtems_rfs_block_no* block)
{
596f8: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
596fc: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
59700: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
void
rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs,
rtems_rfs_pos pos,
rtems_rfs_block_pos* bpos)
{
bpos->bno = pos / rtems_rfs_fs_block_size (fs);
59704: 4284 clrl %d4 <== NOT EXECUTED
rtems_rfs_pos
rtems_rfs_block_get_pos (rtems_rfs_file_system* fs,
rtems_rfs_block_pos* bpos)
{
return (bpos->bno * rtems_rfs_fs_block_size (fs)) + bpos->boff;
59706: 4282 clrl %d2 <== NOT EXECUTED
int
rtems_rfs_block_map_seek (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
rtems_rfs_pos_rel offset,
rtems_rfs_block_no* block)
{
59708: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_rfs_pos
rtems_rfs_block_get_pos (rtems_rfs_file_system* fs,
rtems_rfs_block_pos* bpos)
{
return (bpos->bno * rtems_rfs_fs_block_size (fs)) + bpos->boff;
5970c: 202a 000e movel %a2@(14),%d0 <== NOT EXECUTED
int
rtems_rfs_block_map_free_all (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map)
{
return rtems_rfs_block_map_shrink (fs, map, map->size.count);
}
59710: 222b 0008 movel %a3@(8),%d1 <== NOT EXECUTED
rtems_rfs_pos
rtems_rfs_block_get_pos (rtems_rfs_file_system* fs,
rtems_rfs_block_pos* bpos)
{
return (bpos->bno * rtems_rfs_fs_block_size (fs)) + bpos->boff;
59714: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
void
rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs,
rtems_rfs_pos pos,
rtems_rfs_block_pos* bpos)
{
bpos->bno = pos / rtems_rfs_fs_block_size (fs);
59718: 2a01 movel %d1,%d5 <== NOT EXECUTED
5971a: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5971c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
rtems_rfs_pos
rtems_rfs_block_get_pos (rtems_rfs_file_system* fs,
rtems_rfs_block_pos* bpos)
{
return (bpos->bno * rtems_rfs_fs_block_size (fs)) + bpos->boff;
5971e: d0aa 0012 addl %a2@(18),%d0 <== NOT EXECUTED
59722: 2600 movel %d0,%d3 <== NOT EXECUTED
static inline void
rtems_rfs_block_add_pos (rtems_rfs_file_system* fs,
rtems_rfs_pos_rel offset,
rtems_rfs_block_pos* bpos)
{
rtems_rfs_block_get_bpos (fs,
59724: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
59728: d6ae 0014 addl %fp@(20),%d3 <== NOT EXECUTED
5972c: d580 addxl %d0,%d2 <== NOT EXECUTED
void
rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs,
rtems_rfs_pos pos,
rtems_rfs_block_pos* bpos)
{
bpos->bno = pos / rtems_rfs_fs_block_size (fs);
5972e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59730: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59732: 4eb9 0006 dfc8 jsr 6dfc8 <__udivdi3> <== NOT EXECUTED
bpos->boff = pos % rtems_rfs_fs_block_size (fs);
59738: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5973c: 2e85 movel %d5,%sp@ <== NOT EXECUTED
5973e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
59740: 2f03 movel %d3,%sp@- <== NOT EXECUTED
void
rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs,
rtems_rfs_pos pos,
rtems_rfs_block_pos* bpos)
{
bpos->bno = pos / rtems_rfs_fs_block_size (fs);
59742: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
bpos->boff = pos % rtems_rfs_fs_block_size (fs);
59746: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59748: 4eb9 0006 e3cc jsr 6e3cc <__umoddi3> <== NOT EXECUTED
rtems_rfs_block_no* block)
{
rtems_rfs_block_pos bpos;
rtems_rfs_block_copy_bpos (&bpos, &map->bpos);
rtems_rfs_block_add_pos (fs, offset, &bpos);
return rtems_rfs_block_map_find (fs, map, &bpos, block);
5974e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59752: 2eae 0018 movel %fp@(24),%sp@ <== NOT EXECUTED
59756: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
5975a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs,
rtems_rfs_pos pos,
rtems_rfs_block_pos* bpos)
{
bpos->bno = pos / rtems_rfs_fs_block_size (fs);
bpos->boff = pos % rtems_rfs_fs_block_size (fs);
5975c: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
rtems_rfs_block_no* block)
{
rtems_rfs_block_pos bpos;
rtems_rfs_block_copy_bpos (&bpos, &map->bpos);
rtems_rfs_block_add_pos (fs, offset, &bpos);
return rtems_rfs_block_map_find (fs, map, &bpos, block);
59760: 2f0b movel %a3,%sp@- <== NOT EXECUTED
rtems_rfs_block_get_pos (fs, bpos) + offset,
bpos);
bpos->block = 0;
59762: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
59766: 4eb9 0005 95dc jsr 595dc <rtems_rfs_block_map_find> <== NOT EXECUTED
}
5976c: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED
59772: 4e5e unlk %fp <== NOT EXECUTED
00059b44 <rtems_rfs_block_map_shrink>:
int
rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
size_t blocks)
{
59b44: 4e56 ffc0 linkw %fp,#-64 <== NOT EXECUTED
59b48: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))
59b4c: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
int
rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
size_t blocks)
{
59b50: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))
59b54: 42a7 clrl %sp@- <== NOT EXECUTED
int
rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
size_t blocks)
{
59b56: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))
59b5a: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
59b60: 508f addql #8,%sp <== NOT EXECUTED
59b62: 4a00 tstb %d0 <== NOT EXECUTED
59b64: 6600 0248 bnew 59dae <rtems_rfs_block_map_shrink+0x26a><== NOT EXECUTED
printf ("rtems-rfs: block-map-shrink: entry: blocks=%zd count=%" PRIu32 "\n",
blocks, map->size.count);
if (map->size.count == 0)
59b68: 222a 0006 movel %a2@(6),%d1 <== NOT EXECUTED
59b6c: 6700 00a4 beqw 59c12 <rtems_rfs_block_map_shrink+0xce><== NOT EXECUTED
59b70: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
59b74: b283 cmpl %d3,%d1 <== NOT EXECUTED
59b76: 6500 0230 bcsw 59da8 <rtems_rfs_block_map_shrink+0x264><== NOT EXECUTED
return 0;
if (blocks > map->size.count)
blocks = map->size.count;
while (blocks)
59b7a: 4a83 tstl %d3 <== NOT EXECUTED
59b7c: 6700 024c beqw 59dca <rtems_rfs_block_map_shrink+0x286><== NOT EXECUTED
rtems_rfs_block_no doubly_singly;
doubly = singly / fs->blocks_per_block;
doubly_singly = singly % fs->blocks_per_block;
rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
59b80: 41ea 0040 lea %a2@(64),%a0 <== NOT EXECUTED
59b84: 49f9 0005 a19a lea 5a19a <rtems_rfs_buffer_handle_request>,%a4<== NOT EXECUTED
59b8a: 2d48 fff8 movel %a0,%fp@(-8) <== NOT EXECUTED
doubly_singly);
/*
* Read the singly indirect table and get the block number.
*/
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
59b8e: 41ea 0036 lea %a2@(54),%a0 <== NOT EXECUTED
59b92: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED
int
rtems_rfs_block_map_free_all (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map)
{
return rtems_rfs_block_map_shrink (fs, map, map->size.count);
}
59b96: 41ea 0046 lea %a2@(70),%a0 <== NOT EXECUTED
59b9a: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED
59b9e: 41ea 003c lea %a2@(60),%a0 <== NOT EXECUTED
59ba2: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED
{
rtems_rfs_block_no block;
rtems_rfs_block_no block_to_free;
int rc;
block = map->size.count - 1;
59ba6: 2001 movel %d1,%d0 <== NOT EXECUTED
59ba8: 5380 subql #1,%d0 <== NOT EXECUTED
if (block < RTEMS_RFS_INODE_BLOCKS)
59baa: 7404 moveq #4,%d2 <== NOT EXECUTED
59bac: b480 cmpl %d0,%d2 <== NOT EXECUTED
59bae: 656e bcss 59c1e <rtems_rfs_block_map_shrink+0xda><== NOT EXECUTED
{
/*
* We have less than RTEMS_RFS_INODE_BLOCKS so they are held in the
* inode.
*/
block_to_free = map->blocks[block];
59bb0: 2432 0c22 movel %a2@(00000022,%d0:l:4),%d2 <== NOT EXECUTED
59bb4: 4bf9 0005 0f5c lea 50f5c <rtems_rfs_group_bitmap_free>,%a5 <== NOT EXECUTED
map->blocks[block] = 0;
59bba: 42b2 0c22 clrl %a2@(00000022,%d0:l:4) <== NOT EXECUTED
{
rc = EIO;
break;
}
}
rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);
59bbe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59bc0: 42a7 clrl %sp@- <== NOT EXECUTED
59bc2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59bc4: 4e95 jsr %a5@ <== NOT EXECUTED
if (rc > 0)
59bc6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59bca: 4a80 tstl %d0 <== NOT EXECUTED
59bcc: 6e46 bgts 59c14 <rtems_rfs_block_map_shrink+0xd0><== NOT EXECUTED
return rc;
map->size.count--;
59bce: 222a 0006 movel %a2@(6),%d1 <== NOT EXECUTED
59bd2: 5381 subql #1,%d1 <== NOT EXECUTED
map->size.offset = 0;
map->last_data_block = block_to_free;
map->dirty = true;
blocks--;
59bd4: 5383 subql #1,%d3 <== NOT EXECUTED
if (rc > 0)
return rc;
map->size.count--;
map->size.offset = 0;
map->last_data_block = block_to_free;
map->dirty = true;
59bd6: 14bc 0001 moveb #1,%a2@ <== NOT EXECUTED
}
}
rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);
if (rc > 0)
return rc;
map->size.count--;
59bda: 2541 0006 movel %d1,%a2@(6) <== NOT EXECUTED
map->size.offset = 0;
59bde: 42aa 000a clrl %a2@(10) <== NOT EXECUTED
map->last_data_block = block_to_free;
59be2: 2542 001e movel %d2,%a2@(30) <== NOT EXECUTED
return 0;
if (blocks > map->size.count)
blocks = map->size.count;
while (blocks)
59be6: 4a83 tstl %d3 <== NOT EXECUTED
59be8: 66bc bnes 59ba6 <rtems_rfs_block_map_shrink+0x62><== NOT EXECUTED
map->last_data_block = block_to_free;
map->dirty = true;
blocks--;
}
if (map->size.count == 0)
59bea: 4a81 tstl %d1 <== NOT EXECUTED
59bec: 6600 01dc bnew 59dca <rtems_rfs_block_map_shrink+0x286><== NOT EXECUTED
{
map->last_map_block = 0;
59bf0: 42aa 001a clrl %a2@(26) <== NOT EXECUTED
map->last_data_block = 0;
59bf4: 42aa 001e clrl %a2@(30) <== NOT EXECUTED
59bf8: 202a 000a movel %a2@(10),%d0 <== NOT EXECUTED
/*
* Keep the position inside the map.
*/
if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))
rtems_rfs_block_size_get_bpos (&map->size, &map->bpos);
59bfc: 2541 000e movel %d1,%a2@(14) <== NOT EXECUTED
59c00: 2540 0012 movel %d0,%a2@(18) <== NOT EXECUTED
59c04: 42aa 0016 clrl %a2@(22) <== NOT EXECUTED
59c08: 4a80 tstl %d0 <== NOT EXECUTED
59c0a: 6706 beqs 59c12 <rtems_rfs_block_map_shrink+0xce><== NOT EXECUTED
59c0c: 5381 subql #1,%d1 <== NOT EXECUTED
59c0e: 2541 000e movel %d1,%a2@(14) <== NOT EXECUTED
return 0;
59c12: 4280 clrl %d0 <== NOT EXECUTED
}
59c14: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59c1a: 4e5e unlk %fp <== NOT EXECUTED
59c1c: 4e75 rts <== NOT EXECUTED
* table of block numbers.
*/
rtems_rfs_block_no direct;
rtems_rfs_block_no singly;
direct = block % fs->blocks_per_block;
59c1e: 242b 0034 movel %a3@(52),%d2 <== NOT EXECUTED
59c22: 2c00 movel %d0,%d6 <== NOT EXECUTED
59c24: 4c42 6005 remul %d2,%d5,%d6 <== NOT EXECUTED
59c28: 4c42 6006 remul %d2,%d6,%d6 <== NOT EXECUTED
singly = block / fs->blocks_per_block;
if (block < fs->block_map_singly_blocks)
59c2c: b0ab 0038 cmpl %a3@(56),%d0 <== NOT EXECUTED
59c30: 6500 0100 bcsw 59d32 <rtems_rfs_block_map_shrink+0x1ee><== NOT EXECUTED
rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
singly, direct);
if (rc)
return rc;
}
else if (block < fs->block_map_doubly_blocks)
59c34: b0ab 003c cmpl %a3@(60),%d0 <== NOT EXECUTED
59c38: 64b0 bccs 59bea <rtems_rfs_block_map_shrink+0xa6><== NOT EXECUTED
rtems_rfs_block_no doubly_singly;
doubly = singly / fs->blocks_per_block;
doubly_singly = singly % fs->blocks_per_block;
rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
59c3a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
* value is still valid for doubly indirect tables.
*/
rtems_rfs_block_no doubly;
rtems_rfs_block_no doubly_singly;
doubly = singly / fs->blocks_per_block;
59c3e: 4c42 6007 remul %d2,%d7,%d6 <== NOT EXECUTED
59c42: 4c42 6006 remul %d2,%d6,%d6 <== NOT EXECUTED
doubly_singly = singly % fs->blocks_per_block;
rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
59c46: 2f32 6c22 movel %a2@(00000022,%d6:l:4),%sp@- <== NOT EXECUTED
59c4a: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
* value is still valid for doubly indirect tables.
*/
rtems_rfs_block_no doubly;
rtems_rfs_block_no doubly_singly;
doubly = singly / fs->blocks_per_block;
59c4e: 2d47 ffe8 movel %d7,%fp@(-24) <== NOT EXECUTED
doubly_singly = singly % fs->blocks_per_block;
rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
59c52: 2f0b movel %a3,%sp@- <== NOT EXECUTED
* value is still valid for doubly indirect tables.
*/
rtems_rfs_block_no doubly;
rtems_rfs_block_no doubly_singly;
doubly = singly / fs->blocks_per_block;
59c54: 2d46 ffec movel %d6,%fp@(-20) <== NOT EXECUTED
doubly_singly = singly % fs->blocks_per_block;
rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
59c58: 4e94 jsr %a4@ <== NOT EXECUTED
map->blocks[doubly], true);
if (rc > 0)
59c5a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
59c5e: 4a80 tstl %d0 <== NOT EXECUTED
59c60: 6eb2 bgts 59c14 <rtems_rfs_block_map_shrink+0xd0><== NOT EXECUTED
return rc;
singly = rtems_rfs_block_get_number (&map->doubly_buffer,
59c62: 206a 0046 moveal %a2@(70),%a0 <== NOT EXECUTED
59c66: 2007 movel %d7,%d0 <== NOT EXECUTED
59c68: 4282 clrl %d2 <== NOT EXECUTED
59c6a: 4284 clrl %d4 <== NOT EXECUTED
59c6c: 4281 clrl %d1 <== NOT EXECUTED
59c6e: 7c18 moveq #24,%d6 <== NOT EXECUTED
59c70: e588 lsll #2,%d0 <== NOT EXECUTED
59c72: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
59c76: 1430 0800 moveb %a0@(00000000,%d0:l),%d2 <== NOT EXECUTED
59c7a: 1830 0803 moveb %a0@(00000003,%d0:l),%d4 <== NOT EXECUTED
59c7e: 1230 0801 moveb %a0@(00000001,%d0:l),%d1 <== NOT EXECUTED
59c82: 1030 0802 moveb %a0@(00000002,%d0:l),%d0 <== NOT EXECUTED
doubly_singly);
/*
* Read the singly indirect table and get the block number.
*/
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
59c86: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
map->blocks[doubly], true);
if (rc > 0)
return rc;
singly = rtems_rfs_block_get_number (&map->doubly_buffer,
59c8a: edaa lsll %d6,%d2 <== NOT EXECUTED
59c8c: 4841 swap %d1 <== NOT EXECUTED
59c8e: 4241 clrw %d1 <== NOT EXECUTED
59c90: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
59c96: 8882 orl %d2,%d4 <== NOT EXECUTED
59c98: e188 lsll #8,%d0 <== NOT EXECUTED
59c9a: 8881 orl %d1,%d4 <== NOT EXECUTED
59c9c: 8880 orl %d0,%d4 <== NOT EXECUTED
doubly_singly);
/*
* Read the singly indirect table and get the block number.
*/
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
59c9e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
59ca0: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
59ca4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59ca6: 4e94 jsr %a4@ <== NOT EXECUTED
singly, true);
if (rc > 0)
59ca8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
59cac: 4a80 tstl %d0 <== NOT EXECUTED
59cae: 6e00 ff64 bgtw 59c14 <rtems_rfs_block_map_shrink+0xd0><== NOT EXECUTED
return rc;
block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
59cb2: 206a 003c moveal %a2@(60),%a0 <== NOT EXECUTED
59cb6: 2005 movel %d5,%d0 <== NOT EXECUTED
59cb8: 4287 clrl %d7 <== NOT EXECUTED
59cba: 4282 clrl %d2 <== NOT EXECUTED
59cbc: 4281 clrl %d1 <== NOT EXECUTED
59cbe: 4bf9 0005 0f5c lea 50f5c <rtems_rfs_group_bitmap_free>,%a5 <== NOT EXECUTED
59cc4: e588 lsll #2,%d0 <== NOT EXECUTED
59cc6: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
59cca: 1e30 0800 moveb %a0@(00000000,%d0:l),%d7 <== NOT EXECUTED
59cce: 1430 0803 moveb %a0@(00000003,%d0:l),%d2 <== NOT EXECUTED
59cd2: 1230 0801 moveb %a0@(00000001,%d0:l),%d1 <== NOT EXECUTED
59cd6: 1030 0802 moveb %a0@(00000002,%d0:l),%d0 <== NOT EXECUTED
59cda: edaf lsll %d6,%d7 <== NOT EXECUTED
59cdc: 4841 swap %d1 <== NOT EXECUTED
59cde: 4241 clrw %d1 <== NOT EXECUTED
59ce0: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
59ce6: 8487 orl %d7,%d2 <== NOT EXECUTED
59ce8: e188 lsll #8,%d0 <== NOT EXECUTED
59cea: 8481 orl %d1,%d2 <== NOT EXECUTED
59cec: 8480 orl %d0,%d2 <== NOT EXECUTED
direct);
if (direct == 0)
59cee: 4a85 tstl %d5 <== NOT EXECUTED
59cf0: 6600 fecc bnew 59bbe <rtems_rfs_block_map_shrink+0x7a><== NOT EXECUTED
{
rc = rtems_rfs_group_bitmap_free (fs, false, singly);
59cf4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
59cf6: 42a7 clrl %sp@- <== NOT EXECUTED
59cf8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59cfa: 4e95 jsr %a5@ <== NOT EXECUTED
if (rc > 0)
59cfc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59d00: 4a80 tstl %d0 <== NOT EXECUTED
59d02: 6e00 ff10 bgtw 59c14 <rtems_rfs_block_map_shrink+0xd0><== NOT EXECUTED
return rc;
map->last_map_block = singly;
rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->doubly_buffer,
59d06: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED
59d0a: 2f2e ffec movel %fp@(-20),%sp@- <== NOT EXECUTED
59d0e: 2f2e fff0 movel %fp@(-16),%sp@- <== NOT EXECUTED
59d12: 2f0a movel %a2,%sp@- <== NOT EXECUTED
{
rc = rtems_rfs_group_bitmap_free (fs, false, singly);
if (rc > 0)
return rc;
map->last_map_block = singly;
59d14: 2544 001a movel %d4,%a2@(26) <== NOT EXECUTED
rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->doubly_buffer,
59d18: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59d1a: 4eba f2a2 jsr %pc@(58fbe <rtems_rfs_block_map_indirect_shrink.isra.12>)<== NOT EXECUTED
doubly, doubly_singly);
if (rc)
59d1e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
59d22: 4a80 tstl %d0 <== NOT EXECUTED
59d24: 6700 fe98 beqw 59bbe <rtems_rfs_block_map_shrink+0x7a><== NOT EXECUTED
*/
if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))
rtems_rfs_block_size_get_bpos (&map->size, &map->bpos);
return 0;
}
59d28: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 <== NOT EXECUTED
59d2e: 4e5e unlk %fp <== NOT EXECUTED
59d30: 4e75 rts <== NOT EXECUTED
{
/*
* Request the indirect block and then obtain the block number from the
* indirect block.
*/
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
59d32: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
59d36: 2f32 6c22 movel %a2@(00000022,%d6:l:4),%sp@- <== NOT EXECUTED
59d3a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
59d3e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59d40: 4e94 jsr %a4@ <== NOT EXECUTED
map->blocks[singly], true);
if (rc > 0)
59d42: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
59d46: 4a80 tstl %d0 <== NOT EXECUTED
59d48: 6e00 feca bgtw 59c14 <rtems_rfs_block_map_shrink+0xd0><== NOT EXECUTED
return rc;
block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
59d4c: 206a 003c moveal %a2@(60),%a0 <== NOT EXECUTED
59d50: 2005 movel %d5,%d0 <== NOT EXECUTED
59d52: 4282 clrl %d2 <== NOT EXECUTED
59d54: 4284 clrl %d4 <== NOT EXECUTED
59d56: 4281 clrl %d1 <== NOT EXECUTED
59d58: e588 lsll #2,%d0 <== NOT EXECUTED
59d5a: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
59d5e: 1430 0803 moveb %a0@(00000003,%d0:l),%d2 <== NOT EXECUTED
59d62: 1830 0800 moveb %a0@(00000000,%d0:l),%d4 <== NOT EXECUTED
59d66: 1230 0801 moveb %a0@(00000001,%d0:l),%d1 <== NOT EXECUTED
59d6a: 1030 0802 moveb %a0@(00000002,%d0:l),%d0 <== NOT EXECUTED
direct);
rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
59d6e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
map->blocks[singly], true);
if (rc > 0)
return rc;
block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
59d70: 7a18 moveq #24,%d5 <== NOT EXECUTED
direct);
rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
59d72: 2f06 movel %d6,%sp@- <== NOT EXECUTED
59d74: 2f2e fff4 movel %fp@(-12),%sp@- <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
map->blocks[singly], true);
if (rc > 0)
return rc;
block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
59d78: ebac lsll %d5,%d4 <== NOT EXECUTED
59d7a: 4841 swap %d1 <== NOT EXECUTED
59d7c: 4241 clrw %d1 <== NOT EXECUTED
59d7e: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
59d84: 8484 orl %d4,%d2 <== NOT EXECUTED
direct);
rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
59d86: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
map->blocks[singly], true);
if (rc > 0)
return rc;
block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
59d88: 8481 orl %d1,%d2 <== NOT EXECUTED
direct);
rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
59d8a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
map->blocks[singly], true);
if (rc > 0)
return rc;
block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
59d8c: e188 lsll #8,%d0 <== NOT EXECUTED
59d8e: 8480 orl %d0,%d2 <== NOT EXECUTED
direct);
rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
59d90: 4eba f22c jsr %pc@(58fbe <rtems_rfs_block_map_indirect_shrink.isra.12>)<== NOT EXECUTED
singly, direct);
if (rc)
59d94: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
59d98: 4a80 tstl %d0 <== NOT EXECUTED
59d9a: 6600 fe78 bnew 59c14 <rtems_rfs_block_map_shrink+0xd0><== NOT EXECUTED
59d9e: 4bf9 0005 0f5c lea 50f5c <rtems_rfs_group_bitmap_free>,%a5 <== NOT EXECUTED
59da4: 6000 fe18 braw 59bbe <rtems_rfs_block_map_shrink+0x7a><== NOT EXECUTED
59da8: 2601 movel %d1,%d3 <== NOT EXECUTED
59daa: 6000 fdce braw 59b7a <rtems_rfs_block_map_shrink+0x36><== NOT EXECUTED
rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs,
rtems_rfs_block_map* map,
size_t blocks)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))
printf ("rtems-rfs: block-map-shrink: entry: blocks=%zd count=%" PRIu32 "\n",
59dae: 2f2a 0006 movel %a2@(6),%sp@- <== NOT EXECUTED
59db2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
59db6: 4879 0007 218b pea 7218b <CSWTCH.2+0xc3> <== NOT EXECUTED
59dbc: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
59dc2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59dc6: 6000 fda0 braw 59b68 <rtems_rfs_block_map_shrink+0x24><== NOT EXECUTED
}
/*
* Keep the position inside the map.
*/
if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))
59dca: 206a 000e moveal %a2@(14),%a0 <== NOT EXECUTED
59dce: b288 cmpl %a0,%d1 <== NOT EXECUTED
59dd0: 6300 fe26 blsw 59bf8 <rtems_rfs_block_map_shrink+0xb4><== NOT EXECUTED
59dd4: 2001 movel %d1,%d0 <== NOT EXECUTED
59dd6: 5380 subql #1,%d0 <== NOT EXECUTED
59dd8: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
59dda: 6600 fe36 bnew 59c12 <rtems_rfs_block_map_shrink+0xce><== NOT EXECUTED
59dde: 202a 000a movel %a2@(10),%d0 <== NOT EXECUTED
59de2: b0aa 0012 cmpl %a2@(18),%d0 <== NOT EXECUTED
59de6: 6500 fe14 bcsw 59bfc <rtems_rfs_block_map_shrink+0xb8><== NOT EXECUTED
rtems_rfs_block_size_get_bpos (&map->size, &map->bpos);
return 0;
59dea: 4280 clrl %d0 <== NOT EXECUTED
59dec: 6000 fe26 braw 59c14 <rtems_rfs_block_map_shrink+0xd0><== NOT EXECUTED
00060052 <rtems_rfs_buffer_bdbuf_release>:
}
int
rtems_rfs_buffer_bdbuf_release (rtems_rfs_buffer* buffer,
bool modified)
{
60052: 4e56 0000 linkw %fp,#0
60056: 2f0a movel %a2,%sp@-
60058: 246e 0008 moveal %fp@(8),%a2
6005c: 2f02 movel %d2,%sp@-
rtems_status_code sc;
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))
6005e: 4878 0040 pea 40 <DBL_MANT_DIG+0xb>
}
int
rtems_rfs_buffer_bdbuf_release (rtems_rfs_buffer* buffer,
bool modified)
{
60062: 142e 000f moveb %fp@(15),%d2
rtems_status_code sc;
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))
60066: 42a7 clrl %sp@-
60068: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
6006e: 508f addql #8,%sp
60070: 4a00 tstb %d0
60072: 6724 beqs 60098 <rtems_rfs_buffer_bdbuf_release+0x46><== ALWAYS TAKEN
printf ("rtems-rfs: bdbuf-release: block=%" PRIuPTR " bdbuf=%" PRIu32 " %s\n",
60074: 4a02 tstb %d2 <== NOT EXECUTED
60076: 674c beqs 600c4 <rtems_rfs_buffer_bdbuf_release+0x72><== NOT EXECUTED
60078: 203c 0007 3678 movel #472696,%d0 <== NOT EXECUTED
6007e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
60080: 2f2a 0016 movel %a2@(22),%sp@- <== NOT EXECUTED
60084: 2f2a 0032 movel %a2@(50),%sp@- <== NOT EXECUTED
60088: 4879 0007 3683 pea 73683 <rtems_rfs_rtems_file_handlers+0x37><== NOT EXECUTED
6008e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
60094: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
((intptr_t) buffer->user),
buffer->block, modified ? "(modified)" : "");
if (modified)
60098: 4a02 tstb %d2
6009a: 671c beqs 600b8 <rtems_rfs_buffer_bdbuf_release+0x66>
sc = rtems_bdbuf_release_modified (buffer);
6009c: 2f0a movel %a2,%sp@-
6009e: 4eb9 0005 519e jsr 5519e <rtems_bdbuf_release_modified>
600a4: 588f addql #4,%sp
else
sc = rtems_bdbuf_release (buffer);
if (sc != RTEMS_SUCCESSFUL)
600a6: 4a80 tstl %d0
600a8: 6702 beqs 600ac <rtems_rfs_buffer_bdbuf_release+0x5a><== ALWAYS TAKEN
#if RTEMS_RFS_BUFFER_ERRORS
printf ("rtems-rfs: buffer-release: bdbuf-%s: %s(%d)\n",
modified ? "modified" : "not-modified",
rtems_status_text (sc), sc);
#endif
rc = EIO;
600aa: 7005 moveq #5,%d0 <== NOT EXECUTED
}
return rc;
}
600ac: 242e fff8 movel %fp@(-8),%d2
600b0: 246e fffc moveal %fp@(-4),%a2
600b4: 4e5e unlk %fp
600b6: 4e75 rts
buffer->block, modified ? "(modified)" : "");
if (modified)
sc = rtems_bdbuf_release_modified (buffer);
else
sc = rtems_bdbuf_release (buffer);
600b8: 2f0a movel %a2,%sp@-
600ba: 4eb9 0005 50e4 jsr 550e4 <rtems_bdbuf_release>
600c0: 588f addql #4,%sp
600c2: 60e2 bras 600a6 <rtems_rfs_buffer_bdbuf_release+0x54>
{
rtems_status_code sc;
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))
printf ("rtems-rfs: bdbuf-release: block=%" PRIuPTR " bdbuf=%" PRIu32 " %s\n",
600c4: 203c 0007 0e04 movel #462340,%d0 <== NOT EXECUTED
600ca: 2f00 movel %d0,%sp@- <== NOT EXECUTED
600cc: 2f2a 0016 movel %a2@(22),%sp@- <== NOT EXECUTED
600d0: 2f2a 0032 movel %a2@(50),%sp@- <== NOT EXECUTED
600d4: 4879 0007 3683 pea 73683 <rtems_rfs_rtems_file_handlers+0x37><== NOT EXECUTED
600da: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
600e0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
600e4: 60b2 bras 60098 <rtems_rfs_buffer_bdbuf_release+0x46><== NOT EXECUTED
...
0006000c <rtems_rfs_buffer_bdbuf_request>:
int
rtems_rfs_buffer_bdbuf_request (rtems_rfs_file_system* fs,
rtems_rfs_buffer_block block,
bool read,
rtems_rfs_buffer** buffer)
{
6000c: 4e56 0000 linkw %fp,#0
60010: 206e 0008 moveal %fp@(8),%a0
rtems_status_code sc;
int rc = 0;
if (read)
60014: 4a2e 0013 tstb %fp@(19)
60018: 6720 beqs 6003a <rtems_rfs_buffer_bdbuf_request+0x2e>
sc = rtems_bdbuf_read (rtems_rfs_fs_device (fs), block, buffer);
6001a: 2f2e 0014 movel %fp@(20),%sp@-
6001e: 2f2e 000c movel %fp@(12),%sp@-
60022: 2f28 0010 movel %a0@(16),%sp@-
60026: 4eb9 0005 4f12 jsr 54f12 <rtems_bdbuf_read>
6002c: 4fef 000c lea %sp@(12),%sp
else
sc = rtems_bdbuf_get (rtems_rfs_fs_device (fs), block, buffer);
if (sc != RTEMS_SUCCESSFUL)
60030: 4a80 tstl %d0
60032: 6702 beqs 60036 <rtems_rfs_buffer_bdbuf_request+0x2a><== ALWAYS TAKEN
{
#if RTEMS_RFS_BUFFER_ERRORS
printf ("rtems-rfs: buffer-bdbuf-request: block=%lu: bdbuf-%s: %d: %s\n",
block, read ? "read" : "get", sc, rtems_status_text (sc));
#endif
rc = EIO;
60034: 7005 moveq #5,%d0 <== NOT EXECUTED
}
return rc;
}
60036: 4e5e unlk %fp
60038: 4e75 rts
int rc = 0;
if (read)
sc = rtems_bdbuf_read (rtems_rfs_fs_device (fs), block, buffer);
else
sc = rtems_bdbuf_get (rtems_rfs_fs_device (fs), block, buffer);
6003a: 2f2e 0014 movel %fp@(20),%sp@-
6003e: 2f2e 000c movel %fp@(12),%sp@-
60042: 2f28 0010 movel %a0@(16),%sp@-
60046: 4eb9 0005 4e10 jsr 54e10 <rtems_bdbuf_get>
6004c: 4fef 000c lea %sp@(12),%sp
60050: 60de bras 60030 <rtems_rfs_buffer_bdbuf_request+0x24>
0005a83e <rtems_rfs_buffer_close>:
return 0;
}
int
rtems_rfs_buffer_close (rtems_rfs_file_system* fs)
{
5a83e: 4e56 fff4 linkw %fp,#-12
5a842: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))
5a846: 4878 0010 pea 10 <INVALID_OPERATION>
5a84a: 47f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a3
return 0;
}
int
rtems_rfs_buffer_close (rtems_rfs_file_system* fs)
{
5a850: 246e 0008 moveal %fp@(8),%a2
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))
5a854: 42a7 clrl %sp@-
5a856: 4e93 jsr %a3@
5a858: 508f addql #8,%sp
5a85a: 4a00 tstb %d0
5a85c: 6640 bnes 5a89e <rtems_rfs_buffer_close+0x60> <== NEVER TAKEN
/*
* Change the block size to the media device size. It will release and sync
* all buffers.
*/
rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_media_block_size (fs));
5a85e: 206a 0010 moveal %a2@(16),%a0
5a862: 2f28 0020 movel %a0@(32),%sp@-
5a866: 2f0a movel %a2,%sp@-
5a868: 4eb9 0005 a738 jsr 5a738 <rtems_rfs_buffer_setblksize>
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))
5a86e: 508f addql #8,%sp
/*
* Change the block size to the media device size. It will release and sync
* all buffers.
*/
rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_media_block_size (fs));
5a870: 2400 movel %d0,%d2
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))
5a872: 6f0e bles 5a882 <rtems_rfs_buffer_close+0x44> <== ALWAYS TAKEN
5a874: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
5a878: 42a7 clrl %sp@- <== NOT EXECUTED
5a87a: 4e93 jsr %a3@ <== NOT EXECUTED
5a87c: 508f addql #8,%sp <== NOT EXECUTED
5a87e: 4a00 tstb %d0 <== NOT EXECUTED
5a880: 666c bnes 5a8ee <rtems_rfs_buffer_close+0xb0> <== NOT EXECUTED
printf ("rtems-rfs: buffer-close: set media block size failed: %d: %s\n",
rc, strerror (rc));
if (close (fs->device) < 0)
5a882: 2f2a 000c movel %a2@(12),%sp@-
5a886: 4eb9 0004 7070 jsr 47070 <close>
5a88c: 588f addql #4,%sp
5a88e: 4a80 tstl %d0
5a890: 6d1c blts 5a8ae <rtems_rfs_buffer_close+0x70> <== NEVER TAKEN
printf ("rtems-rfs: buffer-close: file close failed: %d: %s\n",
rc, strerror (rc));
}
return rc;
}
5a892: 2002 movel %d2,%d0
5a894: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
5a89a: 4e5e unlk %fp
5a89c: 4e75 rts
rtems_rfs_buffer_close (rtems_rfs_file_system* fs)
{
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))
printf ("rtems-rfs: buffer-close: closing\n");
5a89e: 4879 0007 260f pea 7260f <CSWTCH.2+0x547> <== NOT EXECUTED
5a8a4: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5a8aa: 588f addql #4,%sp <== NOT EXECUTED
5a8ac: 60b0 bras 5a85e <rtems_rfs_buffer_close+0x20> <== NOT EXECUTED
printf ("rtems-rfs: buffer-close: set media block size failed: %d: %s\n",
rc, strerror (rc));
if (close (fs->device) < 0)
{
rc = errno;
5a8ae: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5a8b4: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a8b6: 2410 movel %a0@,%d2 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))
5a8b8: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
5a8bc: 42a7 clrl %sp@- <== NOT EXECUTED
5a8be: 4e93 jsr %a3@ <== NOT EXECUTED
5a8c0: 508f addql #8,%sp <== NOT EXECUTED
5a8c2: 4a00 tstb %d0 <== NOT EXECUTED
5a8c4: 67cc beqs 5a892 <rtems_rfs_buffer_close+0x54> <== NOT EXECUTED
printf ("rtems-rfs: buffer-close: file close failed: %d: %s\n",
5a8c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a8c8: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5a8ce: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a8d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a8d2: 4879 0007 266e pea 7266e <CSWTCH.2+0x5a6> <== NOT EXECUTED
5a8d8: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a8de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
}
return rc;
}
5a8e2: 2002 movel %d2,%d0 <== NOT EXECUTED
5a8e4: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
5a8ea: 4e5e unlk %fp <== NOT EXECUTED
5a8ec: 4e75 rts <== NOT EXECUTED
* all buffers.
*/
rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_media_block_size (fs));
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))
printf ("rtems-rfs: buffer-close: set media block size failed: %d: %s\n",
5a8ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a8f0: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5a8f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a8f8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a8fa: 4879 0007 2630 pea 72630 <CSWTCH.2+0x568> <== NOT EXECUTED
5a900: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a906: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
if (close (fs->device) < 0)
5a90a: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
5a90e: 4eb9 0004 7070 jsr 47070 <close> <== NOT EXECUTED
5a914: 588f addql #4,%sp <== NOT EXECUTED
5a916: 4a80 tstl %d0 <== NOT EXECUTED
5a918: 6c00 ff78 bgew 5a892 <rtems_rfs_buffer_close+0x54> <== NOT EXECUTED
5a91c: 6090 bras 5a8ae <rtems_rfs_buffer_close+0x70> <== NOT EXECUTED
...
00059fc0 <rtems_rfs_buffer_handle_release>:
}
int
rtems_rfs_buffer_handle_release (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
59fc0: 4e56 ffec linkw %fp,#-20
59fc4: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
59fc8: 266e 0008 moveal %fp@(8),%a3
59fcc: 246e 000c moveal %fp@(12),%a2
int rc = 0;
if (rtems_rfs_buffer_handle_has_block (handle))
59fd0: 4aaa 0006 tstl %a2@(6)
59fd4: 6700 00c4 beqw 5a09a <rtems_rfs_buffer_handle_release+0xda>
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))
59fd8: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb>
59fdc: 49f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a4
59fe2: 42a7 clrl %sp@-
59fe4: 4e94 jsr %a4@
59fe6: 508f addql #8,%sp
59fe8: 4a00 tstb %d0
59fea: 6624 bnes 5a010 <rtems_rfs_buffer_handle_release+0x50><== NEVER TAKEN
rtems_rfs_buffer_bnum (handle),
rtems_rfs_buffer_dirty (handle) ? "(dirty)" : "",
rtems_rfs_buffer_refs (handle),
rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
if (rtems_rfs_buffer_refs (handle) > 0)
59fec: 206a 0006 moveal %a2@(6),%a0
59ff0: 2428 002e movel %a0@(46),%d2
59ff4: 6f06 bles 59ffc <rtems_rfs_buffer_handle_release+0x3c><== NEVER TAKEN
rtems_rfs_buffer_refs_down (handle);
59ff6: 5382 subql #1,%d2
59ff8: 2142 002e movel %d2,%a0@(46)
if (rtems_rfs_buffer_refs (handle) == 0)
59ffc: 4a82 tstl %d2
59ffe: 674a beqs 5a04a <rtems_rfs_buffer_handle_release+0x8a><== ALWAYS TAKEN
int
rtems_rfs_buffer_handle_release (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
int rc = 0;
5a000: 4280 clrl %d0 <== NOT EXECUTED
rtems_chain_append (&fs->release, rtems_rfs_buffer_link (handle));
fs->release_count++;
}
}
}
handle->buffer = NULL;
5a002: 42aa 0006 clrl %a2@(6) <== NOT EXECUTED
}
return rc;
}
5a006: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
5a00c: 4e5e unlk %fp
5a00e: 4e75 rts
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))
printf ("rtems-rfs: buffer-release: block=%" PRIu32 " %s refs=%d %s\n",
rtems_rfs_buffer_bnum (handle),
rtems_rfs_buffer_dirty (handle) ? "(dirty)" : "",
rtems_rfs_buffer_refs (handle),
rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
5a010: 206a 0006 moveal %a2@(6),%a0 <== NOT EXECUTED
5a014: 2028 002e movel %a0@(46),%d0 <== NOT EXECUTED
int rc = 0;
if (rtems_rfs_buffer_handle_has_block (handle))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))
printf ("rtems-rfs: buffer-release: block=%" PRIu32 " %s refs=%d %s\n",
5a018: 6600 008c bnew 5a0a6 <rtems_rfs_buffer_handle_release+0xe6><== NOT EXECUTED
5a01c: 41f9 0007 223d lea 7223d <CSWTCH.2+0x175>,%a0 <== NOT EXECUTED
5a022: 4a12 tstb %a2@ <== NOT EXECUTED
5a024: 6700 008c beqw 5a0b2 <rtems_rfs_buffer_handle_release+0xf2><== NOT EXECUTED
5a028: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5a02a: 223c 0007 224b movel #467531,%d1 <== NOT EXECUTED
5a030: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a032: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5a034: 2f2a 0002 movel %a2@(2),%sp@- <== NOT EXECUTED
5a038: 4879 0007 2253 pea 72253 <CSWTCH.2+0x18b> <== NOT EXECUTED
5a03e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a044: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5a048: 60a2 bras 59fec <rtems_rfs_buffer_handle_release+0x2c><== NOT EXECUTED
5a04a: 2f08 movel %a0,%sp@-
5a04c: 4eb9 0005 7274 jsr 57274 <_Chain_Extract>
if (rtems_rfs_buffer_refs (handle) == 0)
{
rtems_chain_extract (rtems_rfs_buffer_link (handle));
fs->buffers_count--;
if (rtems_rfs_fs_no_local_cache (fs))
5a052: 588f addql #4,%sp
5a054: 7002 moveq #2,%d0
rtems_rfs_buffer_refs_down (handle);
if (rtems_rfs_buffer_refs (handle) == 0)
{
rtems_chain_extract (rtems_rfs_buffer_link (handle));
fs->buffers_count--;
5a056: 53ab 0050 subql #1,%a3@(80)
if (rtems_rfs_fs_no_local_cache (fs))
5a05a: c093 andl %a3@,%d0
5a05c: 6678 bnes 5a0d6 <rtems_rfs_buffer_handle_release+0x116><== ALWAYS TAKEN
* head.
*
* This code stops a large series of transactions causing all the
* buffers in the cache being held in queues of this file system.
*/
if ((fs->release_count +
5a05e: 202b 0070 movel %a3@(112),%d0 <== NOT EXECUTED
5a062: d0ab 0060 addl %a3@(96),%d0 <== NOT EXECUTED
5a066: b0ab 0040 cmpl %a3@(64),%d0 <== NOT EXECUTED
5a06a: 6400 00ae bccw 5a11a <rtems_rfs_buffer_handle_release+0x15a><== NOT EXECUTED
int
rtems_rfs_buffer_handle_release (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
int rc = 0;
5a06e: 4280 clrl %d0 <== NOT EXECUTED
}
buffer->user = (void*) 0;
rc = rtems_rfs_buffer_io_release (buffer, modified);
}
if (rtems_rfs_buffer_dirty (handle))
5a070: 4a12 tstb %a2@ <== NOT EXECUTED
5a072: 6700 0082 beqw 5a0f6 <rtems_rfs_buffer_handle_release+0x136><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void rtems_chain_append(
rtems_chain_control *the_chain,
rtems_chain_node *the_node
)
{
_Chain_Append( the_chain, the_node );
5a076: 2f2a 0006 movel %a2@(6),%sp@- <== NOT EXECUTED
5a07a: 486b 0064 pea %a3@(100) <== NOT EXECUTED
5a07e: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
5a082: 4eb9 0004 cce8 jsr 4cce8 <_Chain_Append> <== NOT EXECUTED
5a088: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
{
rtems_chain_append (&fs->release_modified,
rtems_rfs_buffer_link (handle));
fs->release_modified_count++;
5a08c: 52ab 0070 addql #1,%a3@(112) <== NOT EXECUTED
5a090: 508f addql #8,%sp <== NOT EXECUTED
rtems_chain_append (&fs->release, rtems_rfs_buffer_link (handle));
fs->release_count++;
}
}
}
handle->buffer = NULL;
5a092: 42aa 0006 clrl %a2@(6) <== NOT EXECUTED
5a096: 6000 ff6e braw 5a006 <rtems_rfs_buffer_handle_release+0x46><== NOT EXECUTED
int
rtems_rfs_buffer_handle_release (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
int rc = 0;
5a09a: 4280 clrl %d0
}
handle->buffer = NULL;
}
return rc;
}
5a09c: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
5a0a2: 4e5e unlk %fp
5a0a4: 4e75 rts
int rc = 0;
if (rtems_rfs_buffer_handle_has_block (handle))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))
printf ("rtems-rfs: buffer-release: block=%" PRIu32 " %s refs=%d %s\n",
5a0a6: 41f9 0007 0e04 lea 70e04 <rtems_termios_baud_table+0x10a>,%a0<== NOT EXECUTED
5a0ac: 4a12 tstb %a2@ <== NOT EXECUTED
5a0ae: 6600 ff78 bnew 5a028 <rtems_rfs_buffer_handle_release+0x68><== NOT EXECUTED
5a0b2: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5a0b4: 223c 0007 0e04 movel #462340,%d1 <== NOT EXECUTED
5a0ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a0bc: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5a0be: 2f2a 0002 movel %a2@(2),%sp@- <== NOT EXECUTED
5a0c2: 4879 0007 2253 pea 72253 <CSWTCH.2+0x18b> <== NOT EXECUTED
5a0c8: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a0ce: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5a0d2: 6000 ff18 braw 59fec <rtems_rfs_buffer_handle_release+0x2c><== NOT EXECUTED
fs->buffers_count--;
if (rtems_rfs_fs_no_local_cache (fs))
{
handle->buffer->user = (void*) 0;
rc = rtems_rfs_buffer_io_release (handle->buffer,
5a0d6: 4280 clrl %d0
5a0d8: 1012 moveb %a2@,%d0
rtems_chain_extract (rtems_rfs_buffer_link (handle));
fs->buffers_count--;
if (rtems_rfs_fs_no_local_cache (fs))
{
handle->buffer->user = (void*) 0;
5a0da: 206a 0006 moveal %a2@(6),%a0
5a0de: 42a8 0032 clrl %a0@(50)
rc = rtems_rfs_buffer_io_release (handle->buffer,
5a0e2: 2f00 movel %d0,%sp@-
5a0e4: 2f08 movel %a0,%sp@-
5a0e6: 4eb9 0006 0052 jsr 60052 <rtems_rfs_buffer_bdbuf_release>
5a0ec: 508f addql #8,%sp
rtems_chain_append (&fs->release, rtems_rfs_buffer_link (handle));
fs->release_count++;
}
}
}
handle->buffer = NULL;
5a0ee: 42aa 0006 clrl %a2@(6)
5a0f2: 6000 ff12 braw 5a006 <rtems_rfs_buffer_handle_release+0x46>
5a0f6: 2f2a 0006 movel %a2@(6),%sp@- <== NOT EXECUTED
5a0fa: 486b 0054 pea %a3@(84) <== NOT EXECUTED
5a0fe: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
5a102: 4eb9 0004 cce8 jsr 4cce8 <_Chain_Append> <== NOT EXECUTED
5a108: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
fs->release_modified_count++;
}
else
{
rtems_chain_append (&fs->release, rtems_rfs_buffer_link (handle));
fs->release_count++;
5a10c: 52ab 0060 addql #1,%a3@(96) <== NOT EXECUTED
5a110: 508f addql #8,%sp <== NOT EXECUTED
}
}
}
handle->buffer = NULL;
5a112: 42aa 0006 clrl %a2@(6) <== NOT EXECUTED
5a116: 6000 feee braw 5a006 <rtems_rfs_buffer_handle_release+0x46><== NOT EXECUTED
fs->release_modified_count) >= fs->max_held_buffers)
{
rtems_rfs_buffer* buffer;
bool modified;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))
5a11a: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb> <== NOT EXECUTED
5a11e: 42a7 clrl %sp@- <== NOT EXECUTED
5a120: 4e94 jsr %a4@ <== NOT EXECUTED
5a122: 508f addql #8,%sp <== NOT EXECUTED
5a124: 4a00 tstb %d0 <== NOT EXECUTED
5a126: 6630 bnes 5a158 <rtems_rfs_buffer_handle_release+0x198><== NOT EXECUTED
printf ("rtems-rfs: buffer-release: local cache overflow:"
" %" PRIu32 "\n", fs->release_count + fs->release_modified_count);
if (fs->release_count > fs->release_modified_count)
5a128: 206b 0070 moveal %a3@(112),%a0 <== NOT EXECUTED
5a12c: b1eb 0060 cmpal %a3@(96),%a0 <== NOT EXECUTED
5a130: 6440 bccs 5a172 <rtems_rfs_buffer_handle_release+0x1b2><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(
rtems_chain_control *the_chain
)
{
return _Chain_Get( the_chain );
5a132: 486b 0054 pea %a3@(84) <== NOT EXECUTED
5a136: 4eb9 0004 cd20 jsr 4cd20 <_Chain_Get> <== NOT EXECUTED
{
buffer = (rtems_rfs_buffer*) rtems_chain_get (&fs->release);
fs->release_count--;
5a13c: 588f addql #4,%sp <== NOT EXECUTED
5a13e: 53ab 0060 subql #1,%a3@(96) <== NOT EXECUTED
buffer =
(rtems_rfs_buffer*) rtems_chain_get (&fs->release_modified);
fs->release_modified_count--;
modified = true;
}
buffer->user = (void*) 0;
5a142: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a144: 42a8 0032 clrl %a0@(50) <== NOT EXECUTED
rc = rtems_rfs_buffer_io_release (buffer, modified);
5a148: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a14a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a14c: 4eb9 0006 0052 jsr 60052 <rtems_rfs_buffer_bdbuf_release> <== NOT EXECUTED
5a152: 508f addql #8,%sp <== NOT EXECUTED
5a154: 6000 ff1a braw 5a070 <rtems_rfs_buffer_handle_release+0xb0><== NOT EXECUTED
{
rtems_rfs_buffer* buffer;
bool modified;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))
printf ("rtems-rfs: buffer-release: local cache overflow:"
5a158: 202b 0070 movel %a3@(112),%d0 <== NOT EXECUTED
5a15c: d0ab 0060 addl %a3@(96),%d0 <== NOT EXECUTED
5a160: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a162: 4879 0007 2287 pea 72287 <CSWTCH.2+0x1bf> <== NOT EXECUTED
5a168: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a16e: 508f addql #8,%sp <== NOT EXECUTED
5a170: 60b6 bras 5a128 <rtems_rfs_buffer_handle_release+0x168><== NOT EXECUTED
5a172: 486b 0064 pea %a3@(100) <== NOT EXECUTED
}
else
{
buffer =
(rtems_rfs_buffer*) rtems_chain_get (&fs->release_modified);
fs->release_modified_count--;
5a176: 7401 moveq #1,%d2 <== NOT EXECUTED
5a178: 4eb9 0004 cd20 jsr 4cd20 <_Chain_Get> <== NOT EXECUTED
5a17e: 588f addql #4,%sp <== NOT EXECUTED
5a180: 53ab 0070 subql #1,%a3@(112) <== NOT EXECUTED
modified = true;
}
buffer->user = (void*) 0;
5a184: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a186: 42a8 0032 clrl %a0@(50) <== NOT EXECUTED
rc = rtems_rfs_buffer_io_release (buffer, modified);
5a18a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a18c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a18e: 4eb9 0006 0052 jsr 60052 <rtems_rfs_buffer_bdbuf_release> <== NOT EXECUTED
5a194: 508f addql #8,%sp <== NOT EXECUTED
5a196: 6000 fed8 braw 5a070 <rtems_rfs_buffer_handle_release+0xb0><== NOT EXECUTED
0005a19a <rtems_rfs_buffer_handle_request>:
int
rtems_rfs_buffer_handle_request (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle,
rtems_rfs_buffer_block block,
bool read)
{
5a19a: 4e56 ffe8 linkw %fp,#-24
5a19e: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
5a1a2: 266e 0008 moveal %fp@(8),%a3
5a1a6: 49f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a4
5a1ac: 246e 000c moveal %fp@(12),%a2
5a1b0: 262e 0010 movel %fp@(16),%d3
5a1b4: 182e 0017 moveb %fp@(23),%d4
/*
* If the handle has a buffer release it. This allows a handle to be reused
* without needing to close then open it again.
*/
if (rtems_rfs_buffer_handle_has_block (handle))
5a1b8: 4aaa 0006 tstl %a2@(6)
5a1bc: 6744 beqs 5a202 <rtems_rfs_buffer_handle_request+0x68>
{
/*
* Treat block 0 as special to handle the loading of the super block.
*/
if (block && (rtems_rfs_buffer_bnum (handle) == block))
5a1be: 4a83 tstl %d3
5a1c0: 6708 beqs 5a1ca <rtems_rfs_buffer_handle_request+0x30><== NEVER TAKEN
5a1c2: b6aa 0002 cmpl %a2@(2),%d3
5a1c6: 6700 00fa beqw 5a2c2 <rtems_rfs_buffer_handle_request+0x128>
return 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
5a1ca: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
5a1ce: 49f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a4
5a1d4: 42a7 clrl %sp@-
5a1d6: 4e94 jsr %a4@
5a1d8: 508f addql #8,%sp
5a1da: 4a00 tstb %d0
5a1dc: 6600 00bc bnew 5a29a <rtems_rfs_buffer_handle_request+0x100>
printf ("rtems-rfs: buffer-request: handle has buffer: %" PRIu32 "\n",
rtems_rfs_buffer_bnum (handle));
rc = rtems_rfs_buffer_handle_release (fs, handle);
5a1e0: 2f0a movel %a2,%sp@-
5a1e2: 2f0b movel %a3,%sp@-
5a1e4: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release>
if (rc > 0)
5a1ea: 508f addql #8,%sp
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
printf ("rtems-rfs: buffer-request: handle has buffer: %" PRIu32 "\n",
rtems_rfs_buffer_bnum (handle));
rc = rtems_rfs_buffer_handle_release (fs, handle);
5a1ec: 2400 movel %d0,%d2
if (rc > 0)
5a1ee: 6f0c bles 5a1fc <rtems_rfs_buffer_handle_request+0x62><== ALWAYS TAKEN
printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
block, read ? "read" : "get", handle->buffer->block,
handle->buffer->references);
return 0;
}
5a1f0: 2002 movel %d2,%d0 <== NOT EXECUTED
5a1f2: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
5a1f8: 4e5e unlk %fp <== NOT EXECUTED
5a1fa: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_release (fs, handle);
if (rc > 0)
return rc;
handle->dirty = false;
handle->bnum = 0;
5a1fc: 42aa 0002 clrl %a2@(2)
rtems_rfs_buffer_bnum (handle));
rc = rtems_rfs_buffer_handle_release (fs, handle);
if (rc > 0)
return rc;
handle->dirty = false;
5a200: 4212 clrb %a2@
handle->bnum = 0;
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
5a202: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
5a206: 42a7 clrl %sp@-
5a208: 4e94 jsr %a4@
5a20a: 508f addql #8,%sp
5a20c: 4a00 tstb %d0
5a20e: 6600 012e bnew 5a33e <rtems_rfs_buffer_handle_request+0x1a4>
* currently attached to a handle. If it is share the access. A buffer could
* be shared where different parts of the block have separate functions. An
* example is an inode block and the file system needs to handle 2 inodes in
* the same block at the same time.
*/
if (fs->buffers_count)
5a212: 4aab 0050 tstl %a3@(80)
5a216: 6600 013e bnew 5a356 <rtems_rfs_buffer_handle_request+0x1bc>
5a21a: 206a 0006 moveal %a2@(6),%a0
/*
* If the buffer has not been found check the local cache of released
* buffers. There are release and released modified lists to preserve the
* state.
*/
if (!rtems_rfs_fs_no_local_cache (fs) &&
5a21e: 7002 moveq #2,%d0
5a220: c093 andl %a3@,%d0
5a222: 6600 00ac bnew 5a2d0 <rtems_rfs_buffer_handle_request+0x136>
5a226: 4a88 tstl %a0 <== NOT EXECUTED
5a228: 6700 01aa beqw 5a3d4 <rtems_rfs_buffer_handle_request+0x23a><== NOT EXECUTED
}
/*
* Increase the reference count of the buffer.
*/
rtems_rfs_buffer_refs_up (handle);
5a22c: 52a8 002e addql #1,%a0@(46)
RTEMS_INLINE_ROUTINE void rtems_chain_append(
rtems_chain_control *the_chain,
rtems_chain_node *the_node
)
{
_Chain_Append( the_chain, the_node );
5a230: 2f08 movel %a0,%sp@-
5a232: 486b 0044 pea %a3@(68)
5a236: 4eb9 0004 cce8 jsr 4cce8 <_Chain_Append>
rtems_chain_append (&fs->buffers, rtems_rfs_buffer_link (handle));
fs->buffers_count++;
handle->buffer->user = (void*) ((intptr_t) block);
5a23c: 206a 0006 moveal %a2@(6),%a0
/*
* Increase the reference count of the buffer.
*/
rtems_rfs_buffer_refs_up (handle);
rtems_chain_append (&fs->buffers, rtems_rfs_buffer_link (handle));
fs->buffers_count++;
5a240: 52ab 0050 addql #1,%a3@(80)
handle->buffer->user = (void*) ((intptr_t) block);
5a244: 2143 0032 movel %d3,%a0@(50)
handle->bnum = block;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
5a248: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
5a24c: 42a7 clrl %sp@-
rtems_rfs_buffer_refs_up (handle);
rtems_chain_append (&fs->buffers, rtems_rfs_buffer_link (handle));
fs->buffers_count++;
handle->buffer->user = (void*) ((intptr_t) block);
handle->bnum = block;
5a24e: 2543 0002 movel %d3,%a2@(2)
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
5a252: 4e94 jsr %a4@
5a254: 4fef 0010 lea %sp@(16),%sp
5a258: 4a00 tstb %d0
5a25a: 6766 beqs 5a2c2 <rtems_rfs_buffer_handle_request+0x128><== ALWAYS TAKEN
printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
block, read ? "read" : "get", handle->buffer->block,
handle->buffer->references);
5a25c: 206a 0006 moveal %a2@(6),%a0 <== NOT EXECUTED
handle->buffer->user = (void*) ((intptr_t) block);
handle->bnum = block;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
5a260: 2268 002e moveal %a0@(46),%a1 <== NOT EXECUTED
5a264: 2228 0016 movel %a0@(22),%d1 <== NOT EXECUTED
5a268: 4a04 tstb %d4 <== NOT EXECUTED
5a26a: 6700 013c beqw 5a3a8 <rtems_rfs_buffer_handle_request+0x20e><== NOT EXECUTED
5a26e: 2f09 movel %a1,%sp@- <== NOT EXECUTED
5a270: 203c 0007 1e6b movel #466539,%d0 <== NOT EXECUTED
5a276: 2f01 movel %d1,%sp@- <== NOT EXECUTED
block, read ? "read" : "get", handle->buffer->block,
handle->buffer->references);
return 0;
5a278: 4282 clrl %d2 <== NOT EXECUTED
handle->buffer->user = (void*) ((intptr_t) block);
handle->bnum = block;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
5a27a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a27c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5a27e: 4879 0007 2386 pea 72386 <CSWTCH.2+0x2be> <== NOT EXECUTED
5a284: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a28a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
block, read ? "read" : "get", handle->buffer->block,
handle->buffer->references);
return 0;
}
5a28e: 2002 movel %d2,%d0 <== NOT EXECUTED
5a290: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
5a296: 4e5e unlk %fp <== NOT EXECUTED
5a298: 4e75 rts <== NOT EXECUTED
*/
if (block && (rtems_rfs_buffer_bnum (handle) == block))
return 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
printf ("rtems-rfs: buffer-request: handle has buffer: %" PRIu32 "\n",
5a29a: 2f2a 0002 movel %a2@(2),%sp@- <== NOT EXECUTED
5a29e: 4879 0007 22c1 pea 722c1 <CSWTCH.2+0x1f9> <== NOT EXECUTED
5a2a4: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a2aa: 508f addql #8,%sp <== NOT EXECUTED
rtems_rfs_buffer_bnum (handle));
rc = rtems_rfs_buffer_handle_release (fs, handle);
5a2ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5a2ae: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5a2b0: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
if (rc > 0)
5a2b6: 508f addql #8,%sp <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
printf ("rtems-rfs: buffer-request: handle has buffer: %" PRIu32 "\n",
rtems_rfs_buffer_bnum (handle));
rc = rtems_rfs_buffer_handle_release (fs, handle);
5a2b8: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5a2ba: 6e00 ff34 bgtw 5a1f0 <rtems_rfs_buffer_handle_request+0x56><== NOT EXECUTED
5a2be: 6000 ff3c braw 5a1fc <rtems_rfs_buffer_handle_request+0x62><== NOT EXECUTED
{
/*
* Treat block 0 as special to handle the loading of the super block.
*/
if (block && (rtems_rfs_buffer_bnum (handle) == block))
return 0;
5a2c2: 4282 clrl %d2
printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
block, read ? "read" : "get", handle->buffer->block,
handle->buffer->references);
return 0;
}
5a2c4: 2002 movel %d2,%d0
5a2c6: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
5a2cc: 4e5e unlk %fp
5a2ce: 4e75 rts
}
/*
* If not located we request the buffer from the I/O layer.
*/
if (!rtems_rfs_buffer_handle_has_block (handle))
5a2d0: 4a88 tstl %a0
5a2d2: 6600 ff58 bnew 5a22c <rtems_rfs_buffer_handle_request+0x92>
{
rc = rtems_rfs_buffer_io_request (fs, block, read, &handle->buffer);
5a2d6: 486a 0006 pea %a2@(6)
5a2da: 4280 clrl %d0
5a2dc: 1004 moveb %d4,%d0
5a2de: 2f00 movel %d0,%sp@-
5a2e0: 2f03 movel %d3,%sp@-
5a2e2: 2f0b movel %a3,%sp@-
5a2e4: 4eb9 0006 000c jsr 6000c <rtems_rfs_buffer_bdbuf_request>
if (rc > 0)
5a2ea: 4fef 0010 lea %sp@(16),%sp
/*
* If not located we request the buffer from the I/O layer.
*/
if (!rtems_rfs_buffer_handle_has_block (handle))
{
rc = rtems_rfs_buffer_io_request (fs, block, read, &handle->buffer);
5a2ee: 2400 movel %d0,%d2
if (rc > 0)
5a2f0: 6f00 0114 blew 5a406 <rtems_rfs_buffer_handle_request+0x26c>
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
5a2f4: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
5a2f8: 42a7 clrl %sp@- <== NOT EXECUTED
5a2fa: 4e94 jsr %a4@ <== NOT EXECUTED
5a2fc: 508f addql #8,%sp <== NOT EXECUTED
5a2fe: 4a00 tstb %d0 <== NOT EXECUTED
5a300: 6700 feee beqw 5a1f0 <rtems_rfs_buffer_handle_request+0x56><== NOT EXECUTED
printf ("rtems-rfs: buffer-request: block=%" PRIu32 ": bdbuf-%s: %d: %s\n",
5a304: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a306: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5a30c: 588f addql #4,%sp <== NOT EXECUTED
5a30e: 4a04 tstb %d4 <== NOT EXECUTED
5a310: 6700 0120 beqw 5a432 <rtems_rfs_buffer_handle_request+0x298><== NOT EXECUTED
5a314: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a316: 223c 0007 1e6b movel #466539,%d1 <== NOT EXECUTED
5a31c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a31e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5a320: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5a322: 4879 0007 234e pea 7234e <CSWTCH.2+0x286> <== NOT EXECUTED
5a328: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a32e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
block, read ? "read" : "get", handle->buffer->block,
handle->buffer->references);
return 0;
}
5a332: 2002 movel %d2,%d0 <== NOT EXECUTED
5a334: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
5a33a: 4e5e unlk %fp <== NOT EXECUTED
5a33c: 4e75 rts <== NOT EXECUTED
handle->dirty = false;
handle->bnum = 0;
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
printf ("rtems-rfs: buffer-request: block=%" PRIu32 "\n", block);
5a33e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5a340: 4879 0007 22f4 pea 722f4 <CSWTCH.2+0x22c> <== NOT EXECUTED
5a346: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a34c: 508f addql #8,%sp <== NOT EXECUTED
* currently attached to a handle. If it is share the access. A buffer could
* be shared where different parts of the block have separate functions. An
* example is an inode block and the file system needs to handle 2 inodes in
* the same block at the same time.
*/
if (fs->buffers_count)
5a34e: 4aab 0050 tstl %a3@(80) <== NOT EXECUTED
5a352: 6700 fec6 beqw 5a21a <rtems_rfs_buffer_handle_request+0x80><== NOT EXECUTED
{
/*
* Check the active buffer list for shared buffers.
*/
handle->buffer = rtems_rfs_scan_chain (&fs->buffers,
5a356: 2f03 movel %d3,%sp@-
5a358: 486b 0050 pea %a3@(80)
5a35c: 486b 0044 pea %a3@(68)
5a360: 4eba fb46 jsr %pc@(59ea8 <rtems_rfs_scan_chain>)
&fs->buffers_count,
block);
if (rtems_rfs_buffer_handle_has_block (handle) &&
5a364: 4fef 000c lea %sp@(12),%sp
if (fs->buffers_count)
{
/*
* Check the active buffer list for shared buffers.
*/
handle->buffer = rtems_rfs_scan_chain (&fs->buffers,
5a368: 2540 0006 movel %d0,%a2@(6)
&fs->buffers_count,
block);
if (rtems_rfs_buffer_handle_has_block (handle) &&
5a36c: 675e beqs 5a3cc <rtems_rfs_buffer_handle_request+0x232><== ALWAYS TAKEN
rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
5a36e: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
5a372: 42a7 clrl %sp@- <== NOT EXECUTED
5a374: 4e94 jsr %a4@ <== NOT EXECUTED
printf ("rtems-rfs: buffer-request: buffer shared: refs: %d\n",
rtems_rfs_buffer_refs (handle) + 1);
5a376: 206a 0006 moveal %a2@(6),%a0 <== NOT EXECUTED
* Check the active buffer list for shared buffers.
*/
handle->buffer = rtems_rfs_scan_chain (&fs->buffers,
&fs->buffers_count,
block);
if (rtems_rfs_buffer_handle_has_block (handle) &&
5a37a: 508f addql #8,%sp <== NOT EXECUTED
5a37c: 4a00 tstb %d0 <== NOT EXECUTED
5a37e: 6700 fe9e beqw 5a21e <rtems_rfs_buffer_handle_request+0x84><== NOT EXECUTED
rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
printf ("rtems-rfs: buffer-request: buffer shared: refs: %d\n",
5a382: 2068 002e moveal %a0@(46),%a0 <== NOT EXECUTED
5a386: 5288 addql #1,%a0 <== NOT EXECUTED
5a388: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5a38a: 4879 0007 231a pea 7231a <CSWTCH.2+0x252> <== NOT EXECUTED
5a390: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a396: 206a 0006 moveal %a2@(6),%a0 <== NOT EXECUTED
/*
* If the buffer has not been found check the local cache of released
* buffers. There are release and released modified lists to preserve the
* state.
*/
if (!rtems_rfs_fs_no_local_cache (fs) &&
5a39a: 7002 moveq #2,%d0 <== NOT EXECUTED
5a39c: 508f addql #8,%sp <== NOT EXECUTED
5a39e: c093 andl %a3@,%d0 <== NOT EXECUTED
5a3a0: 6600 ff2e bnew 5a2d0 <rtems_rfs_buffer_handle_request+0x136><== NOT EXECUTED
5a3a4: 6000 fe80 braw 5a226 <rtems_rfs_buffer_handle_request+0x8c><== NOT EXECUTED
handle->buffer->user = (void*) ((intptr_t) block);
handle->bnum = block;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
5a3a8: 2f09 movel %a1,%sp@- <== NOT EXECUTED
5a3aa: 203c 0007 22bd movel #467645,%d0 <== NOT EXECUTED
5a3b0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
block, read ? "read" : "get", handle->buffer->block,
handle->buffer->references);
return 0;
5a3b2: 4282 clrl %d2 <== NOT EXECUTED
handle->buffer->user = (void*) ((intptr_t) block);
handle->bnum = block;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
5a3b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a3b6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5a3b8: 4879 0007 2386 pea 72386 <CSWTCH.2+0x2be> <== NOT EXECUTED
5a3be: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a3c4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5a3c8: 6000 fec4 braw 5a28e <rtems_rfs_buffer_handle_request+0xf4><== NOT EXECUTED
/*
* If the buffer has not been found check the local cache of released
* buffers. There are release and released modified lists to preserve the
* state.
*/
if (!rtems_rfs_fs_no_local_cache (fs) &&
5a3cc: 7002 moveq #2,%d0
5a3ce: c093 andl %a3@,%d0
5a3d0: 6600 ff04 bnew 5a2d6 <rtems_rfs_buffer_handle_request+0x13c>
!rtems_rfs_buffer_handle_has_block (handle))
{
/*
* Check the local cache of released buffers.
*/
if (fs->release_count)
5a3d4: 4aab 0060 tstl %a3@(96) <== NOT EXECUTED
5a3d8: 663a bnes 5a414 <rtems_rfs_buffer_handle_request+0x27a><== NOT EXECUTED
handle->buffer = rtems_rfs_scan_chain (&fs->release,
&fs->release_count,
block);
if (!rtems_rfs_buffer_handle_has_block (handle) &&
5a3da: 4aab 0070 tstl %a3@(112) <== NOT EXECUTED
5a3de: 6700 fef6 beqw 5a2d6 <rtems_rfs_buffer_handle_request+0x13c><== NOT EXECUTED
fs->release_modified_count)
{
handle->buffer = rtems_rfs_scan_chain (&fs->release_modified,
5a3e2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5a3e4: 486b 0070 pea %a3@(112) <== NOT EXECUTED
5a3e8: 486b 0064 pea %a3@(100) <== NOT EXECUTED
5a3ec: 4eba faba jsr %pc@(59ea8 <rtems_rfs_scan_chain>) <== NOT EXECUTED
&fs->release_modified_count,
block);
/*
* If we found a buffer retain the dirty buffer state.
*/
if (rtems_rfs_buffer_handle_has_block (handle))
5a3f0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
block);
if (!rtems_rfs_buffer_handle_has_block (handle) &&
fs->release_modified_count)
{
handle->buffer = rtems_rfs_scan_chain (&fs->release_modified,
5a3f4: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a3f6: 2540 0006 movel %d0,%a2@(6) <== NOT EXECUTED
&fs->release_modified_count,
block);
/*
* If we found a buffer retain the dirty buffer state.
*/
if (rtems_rfs_buffer_handle_has_block (handle))
5a3fa: 6700 feda beqw 5a2d6 <rtems_rfs_buffer_handle_request+0x13c><== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (handle);
5a3fe: 14bc 0001 moveb #1,%a2@ <== NOT EXECUTED
5a402: 6000 fe28 braw 5a22c <rtems_rfs_buffer_handle_request+0x92><== NOT EXECUTED
printf ("rtems-rfs: buffer-request: block=%" PRIu32 ": bdbuf-%s: %d: %s\n",
block, read ? "read" : "get", rc, strerror (rc));
return rc;
}
rtems_chain_set_off_chain (rtems_rfs_buffer_link(handle));
5a406: 206a 0006 moveal %a2@(6),%a0
5a40a: 42a8 0004 clrl %a0@(4)
5a40e: 4290 clrl %a0@
5a410: 6000 fe1a braw 5a22c <rtems_rfs_buffer_handle_request+0x92>
{
/*
* Check the local cache of released buffers.
*/
if (fs->release_count)
handle->buffer = rtems_rfs_scan_chain (&fs->release,
5a414: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5a416: 486b 0060 pea %a3@(96) <== NOT EXECUTED
5a41a: 486b 0054 pea %a3@(84) <== NOT EXECUTED
5a41e: 4eba fa88 jsr %pc@(59ea8 <rtems_rfs_scan_chain>) <== NOT EXECUTED
&fs->release_count,
block);
if (!rtems_rfs_buffer_handle_has_block (handle) &&
5a422: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
{
/*
* Check the local cache of released buffers.
*/
if (fs->release_count)
handle->buffer = rtems_rfs_scan_chain (&fs->release,
5a426: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a428: 2540 0006 movel %d0,%a2@(6) <== NOT EXECUTED
&fs->release_count,
block);
if (!rtems_rfs_buffer_handle_has_block (handle) &&
5a42c: 6600 fdfe bnew 5a22c <rtems_rfs_buffer_handle_request+0x92><== NOT EXECUTED
5a430: 60a8 bras 5a3da <rtems_rfs_buffer_handle_request+0x240><== NOT EXECUTED
rc = rtems_rfs_buffer_io_request (fs, block, read, &handle->buffer);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))
printf ("rtems-rfs: buffer-request: block=%" PRIu32 ": bdbuf-%s: %d: %s\n",
5a432: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a434: 223c 0007 22bd movel #467645,%d1 <== NOT EXECUTED
5a43a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a43c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5a43e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5a440: 4879 0007 234e pea 7234e <CSWTCH.2+0x286> <== NOT EXECUTED
5a446: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a44c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5a450: 6000 fee0 braw 5a332 <rtems_rfs_buffer_handle_request+0x198><== NOT EXECUTED
0005a454 <rtems_rfs_buffer_open>:
return rc;
}
int
rtems_rfs_buffer_open (const char* name, rtems_rfs_file_system* fs)
{
5a454: 4e56 ffac linkw %fp,#-84
5a458: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
struct stat st;
#if RTEMS_RFS_USE_LIBBLOCK
int rv;
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
5a45c: 4878 0020 pea 20 <OPER2+0xc>
5a460: 45f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a2
return rc;
}
int
rtems_rfs_buffer_open (const char* name, rtems_rfs_file_system* fs)
{
5a466: 242e 0008 movel %fp@(8),%d2
struct stat st;
#if RTEMS_RFS_USE_LIBBLOCK
int rv;
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
5a46a: 42a7 clrl %sp@-
return rc;
}
int
rtems_rfs_buffer_open (const char* name, rtems_rfs_file_system* fs)
{
5a46c: 266e 000c moveal %fp@(12),%a3
struct stat st;
#if RTEMS_RFS_USE_LIBBLOCK
int rv;
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
5a470: 4e92 jsr %a2@
5a472: 508f addql #8,%sp
5a474: 4a00 tstb %d0
5a476: 6656 bnes 5a4ce <rtems_rfs_buffer_open+0x7a> <== NEVER TAKEN
printf ("rtems-rfs: buffer-open: opening: %s\n", name);
fs->device = open (name, O_RDWR);
5a478: 4878 0002 pea 2 <DOUBLE_FLOAT>
5a47c: 2f02 movel %d2,%sp@-
5a47e: 4eb9 0004 82f8 jsr 482f8 <open>
if (fs->device < 0)
5a484: 508f addql #8,%sp
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-open: opening: %s\n", name);
fs->device = open (name, O_RDWR);
5a486: 2740 000c movel %d0,%a3@(12)
if (fs->device < 0)
5a48a: 6d66 blts 5a4f2 <rtems_rfs_buffer_open+0x9e> <== NEVER TAKEN
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))
printf ("rtems-rfs: buffer-open: cannot open file\n");
return ENXIO;
}
if (fstat (fs->device, &st) < 0)
5a48c: 486e ffba pea %fp@(-70)
5a490: 2f00 movel %d0,%sp@-
5a492: 4eb9 0004 73d4 jsr 473d4 <fstat>
5a498: 508f addql #8,%sp
5a49a: 4a80 tstl %d0
5a49c: 6d00 00d6 bltw 5a574 <rtems_rfs_buffer_open+0x120>
#if RTEMS_RFS_USE_LIBBLOCK
/*
* Is the device a block device ?
*/
if (!S_ISBLK (st.st_mode))
5a4a0: 202e ffc6 movel %fp@(-58),%d0
5a4a4: 0280 0000 f000 andil #61440,%d0
5a4aa: 0c80 0000 6000 cmpil #24576,%d0
5a4b0: 6760 beqs 5a512 <rtems_rfs_buffer_open+0xbe> <== ALWAYS TAKEN
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))
5a4b2: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
5a4b6: 42a7 clrl %sp@- <== NOT EXECUTED
5a4b8: 4e92 jsr %a2@ <== NOT EXECUTED
5a4ba: 508f addql #8,%sp <== NOT EXECUTED
5a4bc: 4a00 tstb %d0 <== NOT EXECUTED
5a4be: 6600 0098 bnew 5a558 <rtems_rfs_buffer_open+0x104> <== NOT EXECUTED
fs->device = open (name, O_RDWR);
if (fs->device < 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))
printf ("rtems-rfs: buffer-open: cannot open file\n");
return ENXIO;
5a4c2: 7006 moveq #6,%d0 <== NOT EXECUTED
printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
rtems_rfs_fs_media_blocks (fs),
rtems_rfs_fs_media_block_size (fs));
return 0;
}
5a4c4: 4cee 0c04 ffac moveml %fp@(-84),%d2/%a2-%a3 <== NOT EXECUTED
5a4ca: 4e5e unlk %fp <== NOT EXECUTED
5a4cc: 4e75 rts <== NOT EXECUTED
#if RTEMS_RFS_USE_LIBBLOCK
int rv;
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-open: opening: %s\n", name);
5a4ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a4d0: 4879 0007 23c1 pea 723c1 <CSWTCH.2+0x2f9> <== NOT EXECUTED
5a4d6: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a4dc: 508f addql #8,%sp <== NOT EXECUTED
fs->device = open (name, O_RDWR);
5a4de: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
5a4e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a4e4: 4eb9 0004 82f8 jsr 482f8 <open> <== NOT EXECUTED
if (fs->device < 0)
5a4ea: 508f addql #8,%sp <== NOT EXECUTED
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-open: opening: %s\n", name);
fs->device = open (name, O_RDWR);
5a4ec: 2740 000c movel %d0,%a3@(12) <== NOT EXECUTED
if (fs->device < 0)
5a4f0: 6c9a bges 5a48c <rtems_rfs_buffer_open+0x38> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))
5a4f2: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
5a4f6: 42a7 clrl %sp@- <== NOT EXECUTED
5a4f8: 4e92 jsr %a2@ <== NOT EXECUTED
5a4fa: 508f addql #8,%sp <== NOT EXECUTED
5a4fc: 4a00 tstb %d0 <== NOT EXECUTED
5a4fe: 67c2 beqs 5a4c2 <rtems_rfs_buffer_open+0x6e> <== NOT EXECUTED
printf ("rtems-rfs: buffer-open: cannot open file\n");
5a500: 4879 0007 23e6 pea 723e6 <CSWTCH.2+0x31e> <== NOT EXECUTED
5a506: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5a50c: 588f addql #4,%sp <== NOT EXECUTED
return ENXIO;
5a50e: 7006 moveq #6,%d0 <== NOT EXECUTED
5a510: 60b2 bras 5a4c4 <rtems_rfs_buffer_open+0x70> <== NOT EXECUTED
static inline int rtems_disk_fd_get_disk_device(
int fd,
rtems_disk_device **dd_ptr
)
{
return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);
5a512: 486b 0010 pea %a3@(16)
5a516: 2f3c 4004 4209 movel #1074020873,%sp@-
5a51c: 2f2b 000c movel %a3@(12),%sp@-
5a520: 4eb9 0004 7544 jsr 47544 <ioctl>
/*
* Check that device is registred as a block device and lock it.
*/
rv = rtems_disk_fd_get_disk_device (fs->device, &fs->disk);
if (rv != 0)
5a526: 4fef 000c lea %sp@(12),%sp
5a52a: 4a80 tstl %d0
5a52c: 6700 0086 beqw 5a5b4 <rtems_rfs_buffer_open+0x160>
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))
5a530: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
5a534: 42a7 clrl %sp@- <== NOT EXECUTED
5a536: 4e92 jsr %a2@ <== NOT EXECUTED
5a538: 508f addql #8,%sp <== NOT EXECUTED
5a53a: 4a00 tstb %d0 <== NOT EXECUTED
5a53c: 6784 beqs 5a4c2 <rtems_rfs_buffer_open+0x6e> <== NOT EXECUTED
printf ("rtems-rfs: buffer-open: cannot obtain the disk\n");
5a53e: 4879 0007 2471 pea 72471 <CSWTCH.2+0x3a9> <== NOT EXECUTED
5a544: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5a54a: 588f addql #4,%sp <== NOT EXECUTED
return ENXIO;
5a54c: 7006 moveq #6,%d0 <== NOT EXECUTED
printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
rtems_rfs_fs_media_blocks (fs),
rtems_rfs_fs_media_block_size (fs));
return 0;
}
5a54e: 4cee 0c04 ffac moveml %fp@(-84),%d2/%a2-%a3 <== NOT EXECUTED
5a554: 4e5e unlk %fp <== NOT EXECUTED
5a556: 4e75 rts <== NOT EXECUTED
* Is the device a block device ?
*/
if (!S_ISBLK (st.st_mode))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))
printf ("rtems-rfs: buffer-open: '%s' is not a block device\n", name);
5a558: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a55a: 4879 0007 243d pea 7243d <CSWTCH.2+0x375> <== NOT EXECUTED
5a560: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a566: 508f addql #8,%sp <== NOT EXECUTED
return ENXIO;
5a568: 7006 moveq #6,%d0 <== NOT EXECUTED
printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
rtems_rfs_fs_media_blocks (fs),
rtems_rfs_fs_media_block_size (fs));
return 0;
}
5a56a: 4cee 0c04 ffac moveml %fp@(-84),%d2/%a2-%a3 <== NOT EXECUTED
5a570: 4e5e unlk %fp <== NOT EXECUTED
5a572: 4e75 rts <== NOT EXECUTED
return ENXIO;
}
if (fstat (fs->device, &st) < 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))
5a574: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
5a578: 42a7 clrl %sp@- <== NOT EXECUTED
5a57a: 4e92 jsr %a2@ <== NOT EXECUTED
5a57c: 508f addql #8,%sp <== NOT EXECUTED
5a57e: 4a00 tstb %d0 <== NOT EXECUTED
5a580: 6700 ff40 beqw 5a4c2 <rtems_rfs_buffer_open+0x6e> <== NOT EXECUTED
printf ("rtems-rfs: buffer-open: stat '%s' failed: %s\n",
name, strerror (errno));
5a584: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
}
if (fstat (fs->device, &st) < 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))
printf ("rtems-rfs: buffer-open: stat '%s' failed: %s\n",
5a58a: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a58c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
5a58e: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5a594: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a596: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a598: 4879 0007 240f pea 7240f <CSWTCH.2+0x347> <== NOT EXECUTED
5a59e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a5a4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
name, strerror (errno));
return ENXIO;
5a5a8: 7006 moveq #6,%d0 <== NOT EXECUTED
printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
rtems_rfs_fs_media_blocks (fs),
rtems_rfs_fs_media_block_size (fs));
return 0;
}
5a5aa: 4cee 0c04 ffac moveml %fp@(-84),%d2/%a2-%a3 <== NOT EXECUTED
5a5b0: 4e5e unlk %fp <== NOT EXECUTED
5a5b2: 4e75 rts <== NOT EXECUTED
#else
fs->media_size = st.st_size;
strcat (fs->name, name);
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
5a5b4: 4878 0020 pea 20 <OPER2+0xc>
5a5b8: 42a7 clrl %sp@-
5a5ba: 4e92 jsr %a2@
5a5bc: 508f addql #8,%sp
5a5be: 4a00 tstb %d0
5a5c0: 660c bnes 5a5ce <rtems_rfs_buffer_open+0x17a> <== NEVER TAKEN
printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
rtems_rfs_fs_media_blocks (fs),
rtems_rfs_fs_media_block_size (fs));
return 0;
5a5c2: 4280 clrl %d0
}
5a5c4: 4cee 0c04 ffac moveml %fp@(-84),%d2/%a2-%a3
5a5ca: 4e5e unlk %fp
5a5cc: 4e75 rts
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
rtems_rfs_fs_media_blocks (fs),
rtems_rfs_fs_media_block_size (fs));
5a5ce: 206b 0010 moveal %a3@(16),%a0 <== NOT EXECUTED
fs->media_size = st.st_size;
strcat (fs->name, name);
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
5a5d2: 2f28 0020 movel %a0@(32),%sp@- <== NOT EXECUTED
5a5d6: 2f28 001c movel %a0@(28),%sp@- <== NOT EXECUTED
5a5da: 4879 0007 24a0 pea 724a0 <CSWTCH.2+0x3d8> <== NOT EXECUTED
5a5e0: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a5e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_rfs_fs_media_blocks (fs),
rtems_rfs_fs_media_block_size (fs));
return 0;
5a5ea: 4280 clrl %d0 <== NOT EXECUTED
}
5a5ec: 4cee 0c04 ffac moveml %fp@(-84),%d2/%a2-%a3 <== NOT EXECUTED
5a5f2: 4e5e unlk %fp <== NOT EXECUTED
0005a738 <rtems_rfs_buffer_setblksize>:
return result;
}
int
rtems_rfs_buffer_setblksize (rtems_rfs_file_system* fs, size_t size)
{
5a738: 4e56 fff4 linkw %fp,#-12
5a73c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
5a740: 4878 0400 pea 400 <D_BIAS+0x2>
5a744: 47f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a3
return result;
}
int
rtems_rfs_buffer_setblksize (rtems_rfs_file_system* fs, size_t size)
{
5a74a: 246e 0008 moveal %fp@(8),%a2
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
5a74e: 42a7 clrl %sp@-
5a750: 4e93 jsr %a3@
5a752: 508f addql #8,%sp
5a754: 4a00 tstb %d0
5a756: 6660 bnes 5a7b8 <rtems_rfs_buffer_setblksize+0x80><== NEVER TAKEN
printf ("rtems-rfs: buffer-setblksize: block size: %zu\n", size);
rc = rtems_rfs_buffers_release (fs);
5a758: 2f0a movel %a2,%sp@-
5a75a: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release>
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
5a760: 588f addql #4,%sp
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
printf ("rtems-rfs: buffer-setblksize: block size: %zu\n", size);
rc = rtems_rfs_buffers_release (fs);
5a762: 2400 movel %d0,%d2
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
5a764: 6f0e bles 5a774 <rtems_rfs_buffer_setblksize+0x3c><== ALWAYS TAKEN
5a766: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED
5a76a: 42a7 clrl %sp@- <== NOT EXECUTED
5a76c: 4e93 jsr %a3@ <== NOT EXECUTED
5a76e: 508f addql #8,%sp <== NOT EXECUTED
5a770: 4a00 tstb %d0 <== NOT EXECUTED
5a772: 666c bnes 5a7e0 <rtems_rfs_buffer_setblksize+0xa8><== NOT EXECUTED
printf ("rtems-rfs: buffer-setblksize: buffer release failed: %d: %s\n",
rc, strerror (rc));
rc = rtems_rfs_buffer_sync (fs);
5a774: 2f0a movel %a2,%sp@-
5a776: 4eb9 0005 a5f6 jsr 5a5f6 <rtems_rfs_buffer_sync>
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
5a77c: 588f addql #4,%sp
rc = rtems_rfs_buffers_release (fs);
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
printf ("rtems-rfs: buffer-setblksize: buffer release failed: %d: %s\n",
rc, strerror (rc));
rc = rtems_rfs_buffer_sync (fs);
5a77e: 2400 movel %d0,%d2
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
5a780: 6f0e bles 5a790 <rtems_rfs_buffer_setblksize+0x58><== ALWAYS TAKEN
5a782: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED
5a786: 42a7 clrl %sp@- <== NOT EXECUTED
5a788: 4e93 jsr %a3@ <== NOT EXECUTED
5a78a: 508f addql #8,%sp <== NOT EXECUTED
5a78c: 4a00 tstb %d0 <== NOT EXECUTED
5a78e: 6670 bnes 5a800 <rtems_rfs_buffer_setblksize+0xc8><== NOT EXECUTED
printf ("rtems-rfs: buffer-setblksize: device sync failed: %d: %s\n",
rc, strerror (rc));
#if RTEMS_RFS_USE_LIBBLOCK
rc = fs->disk->ioctl (fs->disk, RTEMS_BLKIO_SETBLKSIZE, &size);
5a790: 486e 000c pea %fp@(12)
5a794: 206a 0010 moveal %a2@(16),%a0
5a798: 2f3c 8004 4204 movel #-2147204604,%sp@-
5a79e: 2f08 movel %a0,%sp@-
5a7a0: 2068 0038 moveal %a0@(56),%a0
5a7a4: 4e90 jsr %a0@
if (rc < 0)
5a7a6: 4fef 000c lea %sp@(12),%sp
5a7aa: 4a80 tstl %d0
5a7ac: 6d1e blts 5a7cc <rtems_rfs_buffer_setblksize+0x94><== NEVER TAKEN
rc = errno;
#endif
return rc;
}
5a7ae: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
5a7b4: 4e5e unlk %fp
5a7b6: 4e75 rts
rtems_rfs_buffer_setblksize (rtems_rfs_file_system* fs, size_t size)
{
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
printf ("rtems-rfs: buffer-setblksize: block size: %zu\n", size);
5a7b8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5a7bc: 4879 0007 2569 pea 72569 <CSWTCH.2+0x4a1> <== NOT EXECUTED
5a7c2: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a7c8: 508f addql #8,%sp <== NOT EXECUTED
5a7ca: 608c bras 5a758 <rtems_rfs_buffer_setblksize+0x20><== NOT EXECUTED
rc, strerror (rc));
#if RTEMS_RFS_USE_LIBBLOCK
rc = fs->disk->ioctl (fs->disk, RTEMS_BLKIO_SETBLKSIZE, &size);
if (rc < 0)
rc = errno;
5a7cc: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5a7d2: 2040 moveal %d0,%a0 <== NOT EXECUTED
#endif
return rc;
}
5a7d4: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
rc, strerror (rc));
#if RTEMS_RFS_USE_LIBBLOCK
rc = fs->disk->ioctl (fs->disk, RTEMS_BLKIO_SETBLKSIZE, &size);
if (rc < 0)
rc = errno;
5a7da: 2010 movel %a0@,%d0 <== NOT EXECUTED
#endif
return rc;
}
5a7dc: 4e5e unlk %fp <== NOT EXECUTED
5a7de: 4e75 rts <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
printf ("rtems-rfs: buffer-setblksize: block size: %zu\n", size);
rc = rtems_rfs_buffers_release (fs);
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
printf ("rtems-rfs: buffer-setblksize: buffer release failed: %d: %s\n",
5a7e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a7e2: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5a7e8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a7ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a7ec: 4879 0007 2598 pea 72598 <CSWTCH.2+0x4d0> <== NOT EXECUTED
5a7f2: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a7f8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5a7fc: 6000 ff76 braw 5a774 <rtems_rfs_buffer_setblksize+0x3c><== NOT EXECUTED
rc, strerror (rc));
rc = rtems_rfs_buffer_sync (fs);
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
printf ("rtems-rfs: buffer-setblksize: device sync failed: %d: %s\n",
5a800: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a802: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5a808: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a80a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a80c: 4879 0007 25d5 pea 725d5 <CSWTCH.2+0x50d> <== NOT EXECUTED
5a812: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a818: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
#if RTEMS_RFS_USE_LIBBLOCK
rc = fs->disk->ioctl (fs->disk, RTEMS_BLKIO_SETBLKSIZE, &size);
5a81c: 486e 000c pea %fp@(12) <== NOT EXECUTED
5a820: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
5a824: 2f3c 8004 4204 movel #-2147204604,%sp@- <== NOT EXECUTED
5a82a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5a82c: 2068 0038 moveal %a0@(56),%a0 <== NOT EXECUTED
5a830: 4e90 jsr %a0@ <== NOT EXECUTED
if (rc < 0)
5a832: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5a836: 4a80 tstl %d0 <== NOT EXECUTED
5a838: 6c00 ff74 bgew 5a7ae <rtems_rfs_buffer_setblksize+0x76><== NOT EXECUTED
5a83c: 608e bras 5a7cc <rtems_rfs_buffer_setblksize+0x94><== NOT EXECUTED
0005a5f6 <rtems_rfs_buffer_sync>:
return rc;
}
int
rtems_rfs_buffer_sync (rtems_rfs_file_system* fs)
{
5a5f6: 4e56 fff4 linkw %fp,#-12
5a5fa: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
int result = 0;
#if RTEMS_RFS_USE_LIBBLOCK
rtems_status_code sc;
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
5a5fe: 4878 0020 pea 20 <OPER2+0xc>
5a602: 47f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a3
return rc;
}
int
rtems_rfs_buffer_sync (rtems_rfs_file_system* fs)
{
5a608: 246e 0008 moveal %fp@(8),%a2
int result = 0;
#if RTEMS_RFS_USE_LIBBLOCK
rtems_status_code sc;
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
5a60c: 42a7 clrl %sp@-
5a60e: 4e93 jsr %a3@
5a610: 508f addql #8,%sp
5a612: 4a00 tstb %d0
5a614: 6628 bnes 5a63e <rtems_rfs_buffer_sync+0x48> <== NEVER TAKEN
/*
* @todo Split in the separate files for each type.
*/
#if RTEMS_RFS_USE_LIBBLOCK
sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));
5a616: 2f2a 0010 movel %a2@(16),%sp@-
5a61a: 4eb9 0005 5340 jsr 55340 <rtems_bdbuf_syncdev>
if (sc != RTEMS_SUCCESSFUL)
5a620: 588f addql #4,%sp
/*
* @todo Split in the separate files for each type.
*/
#if RTEMS_RFS_USE_LIBBLOCK
sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));
5a622: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL)
5a624: 6636 bnes 5a65c <rtems_rfs_buffer_sync+0x66> <== NEVER TAKEN
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",
rtems_status_text (sc));
result = EIO;
}
rtems_disk_release (fs->disk);
5a626: 2f2a 0010 movel %a2@(16),%sp@-
}
int
rtems_rfs_buffer_sync (rtems_rfs_file_system* fs)
{
int result = 0;
5a62a: 4282 clrl %d2
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",
rtems_status_text (sc));
result = EIO;
}
rtems_disk_release (fs->disk);
5a62c: 4eb9 0004 3d4e jsr 43d4e <rtems_disk_release>
printf ("rtems-rfs: buffer-sync: file sync failed: %d: %s\n",
result, strerror (result));
}
#endif
return result;
}
5a632: 2002 movel %d2,%d0
5a634: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
5a63a: 4e5e unlk %fp
5a63c: 4e75 rts
#if RTEMS_RFS_USE_LIBBLOCK
rtems_status_code sc;
#endif
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-sync: syncing\n");
5a63e: 4879 0007 24d0 pea 724d0 <CSWTCH.2+0x408> <== NOT EXECUTED
5a644: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5a64a: 588f addql #4,%sp <== NOT EXECUTED
/*
* @todo Split in the separate files for each type.
*/
#if RTEMS_RFS_USE_LIBBLOCK
sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));
5a64c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
5a650: 4eb9 0005 5340 jsr 55340 <rtems_bdbuf_syncdev> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5a656: 588f addql #4,%sp <== NOT EXECUTED
/*
* @todo Split in the separate files for each type.
*/
#if RTEMS_RFS_USE_LIBBLOCK
sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));
5a658: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5a65a: 67ca beqs 5a626 <rtems_rfs_buffer_sync+0x30> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
5a65c: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
5a660: 42a7 clrl %sp@- <== NOT EXECUTED
5a662: 4e93 jsr %a3@ <== NOT EXECUTED
5a664: 508f addql #8,%sp <== NOT EXECUTED
5a666: 4a00 tstb %d0 <== NOT EXECUTED
5a668: 6618 bnes 5a682 <rtems_rfs_buffer_sync+0x8c> <== NOT EXECUTED
printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",
rtems_status_text (sc));
result = EIO;
}
rtems_disk_release (fs->disk);
5a66a: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",
rtems_status_text (sc));
result = EIO;
5a66e: 7405 moveq #5,%d2 <== NOT EXECUTED
}
rtems_disk_release (fs->disk);
5a670: 4eb9 0004 3d4e jsr 43d4e <rtems_disk_release> <== NOT EXECUTED
printf ("rtems-rfs: buffer-sync: file sync failed: %d: %s\n",
result, strerror (result));
}
#endif
return result;
}
5a676: 2002 movel %d2,%d0 <== NOT EXECUTED
5a678: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
5a67e: 4e5e unlk %fp <== NOT EXECUTED
5a680: 4e75 rts <== NOT EXECUTED
#if RTEMS_RFS_USE_LIBBLOCK
sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",
5a682: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_status_text (sc));
result = EIO;
5a684: 7405 moveq #5,%d2 <== NOT EXECUTED
#if RTEMS_RFS_USE_LIBBLOCK
sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))
printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",
5a686: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5a68c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a68e: 4879 0007 24f0 pea 724f0 <CSWTCH.2+0x428> <== NOT EXECUTED
5a694: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a69a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_status_text (sc));
result = EIO;
}
rtems_disk_release (fs->disk);
5a69e: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
5a6a2: 4eb9 0004 3d4e jsr 43d4e <rtems_disk_release> <== NOT EXECUTED
printf ("rtems-rfs: buffer-sync: file sync failed: %d: %s\n",
result, strerror (result));
}
#endif
return result;
}
5a6a8: 2002 movel %d2,%d0 <== NOT EXECUTED
5a6aa: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
5a6b0: 4e5e unlk %fp <== NOT EXECUTED
0005a6b4 <rtems_rfs_buffers_release>:
return rrc;
}
int
rtems_rfs_buffers_release (rtems_rfs_file_system* fs)
{
5a6b4: 4e56 fff4 linkw %fp,#-12
5a6b8: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
int rrc = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))
5a6bc: 4878 0040 pea 40 <DBL_MANT_DIG+0xb>
return rrc;
}
int
rtems_rfs_buffers_release (rtems_rfs_file_system* fs)
{
5a6c0: 246e 0008 moveal %fp@(8),%a2
int rrc = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))
5a6c4: 42a7 clrl %sp@-
5a6c6: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
5a6cc: 508f addql #8,%sp
5a6ce: 4a00 tstb %d0
5a6d0: 6648 bnes 5a71a <rtems_rfs_buffers_release+0x66> <== NEVER TAKEN
printf ("rtems-rfs: buffers-release: active:%" PRIu32 " "
"release:%" PRIu32 " release-modified:%" PRIu32 "\n",
fs->buffers_count, fs->release_count, fs->release_modified_count);
rc = rtems_rfs_release_chain (&fs->release,
5a6d2: 42a7 clrl %sp@-
5a6d4: 486a 0060 pea %a2@(96)
5a6d8: 47fa f732 lea %pc@(59e0c <rtems_rfs_release_chain>),%a3
5a6dc: 486a 0054 pea %a2@(84)
5a6e0: 4e93 jsr %a3@
5a6e2: 4fef 000c lea %sp@(12),%sp
5a6e6: 2200 movel %d0,%d1
&fs->release_count,
false);
if ((rc > 0) && (rrc == 0))
rrc = rc;
rc = rtems_rfs_release_chain (&fs->release_modified,
5a6e8: 4878 0001 pea 1 <ADD>
5a6ec: 4681 notl %d1
5a6ee: 486a 0070 pea %a2@(112)
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))
printf ("rtems-rfs: buffers-release: active:%" PRIu32 " "
"release:%" PRIu32 " release-modified:%" PRIu32 "\n",
fs->buffers_count, fs->release_count, fs->release_modified_count);
rc = rtems_rfs_release_chain (&fs->release,
5a6f2: 2400 movel %d0,%d2
&fs->release_count,
false);
if ((rc > 0) && (rrc == 0))
rrc = rc;
rc = rtems_rfs_release_chain (&fs->release_modified,
5a6f4: 486a 0064 pea %a2@(100)
5a6f8: d281 addl %d1,%d1
5a6fa: 9381 subxl %d1,%d1
5a6fc: c481 andl %d1,%d2
5a6fe: 4e93 jsr %a3@
&fs->release_modified_count,
true);
if ((rc > 0) && (rrc == 0))
5a700: 4fef 000c lea %sp@(12),%sp
5a704: 4a80 tstl %d0
5a706: 6f06 bles 5a70e <rtems_rfs_buffers_release+0x5a> <== ALWAYS TAKEN
5a708: 4a82 tstl %d2 <== NOT EXECUTED
5a70a: 6602 bnes 5a70e <rtems_rfs_buffers_release+0x5a> <== NOT EXECUTED
5a70c: 2400 movel %d0,%d2 <== NOT EXECUTED
rrc = rc;
return rrc;
}
5a70e: 2002 movel %d2,%d0
5a710: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
5a716: 4e5e unlk %fp
5a718: 4e75 rts
{
int rrc = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))
printf ("rtems-rfs: buffers-release: active:%" PRIu32 " "
5a71a: 2f2a 0070 movel %a2@(112),%sp@- <== NOT EXECUTED
5a71e: 2f2a 0060 movel %a2@(96),%sp@- <== NOT EXECUTED
5a722: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED
5a726: 4879 0007 2520 pea 72520 <CSWTCH.2+0x458> <== NOT EXECUTED
5a72c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5a732: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5a736: 609a bras 5a6d2 <rtems_rfs_buffers_release+0x1e> <== NOT EXECUTED
0005aeca <rtems_rfs_dir_add_entry>:
rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* dir,
const char* name,
size_t length,
rtems_rfs_ino ino)
{
5aeca: 4e56 ff6c linkw %fp,#-148
5aece: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
rtems_rfs_block_map map;
rtems_rfs_block_pos bpos;
rtems_rfs_buffer_handle buffer;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
5aed2: 2f3c 2000 0000 movel #536870912,%sp@-
rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* dir,
const char* name,
size_t length,
rtems_rfs_ino ino)
{
5aed8: 266e 0008 moveal %fp@(8),%a3
rtems_rfs_block_map map;
rtems_rfs_block_pos bpos;
rtems_rfs_buffer_handle buffer;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
5aedc: 49f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a4
5aee2: 42a7 clrl %sp@-
rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* dir,
const char* name,
size_t length,
rtems_rfs_ino ino)
{
5aee4: 2a6e 0010 moveal %fp@(16),%a5
5aee8: 2c2e 0014 movel %fp@(20),%d6
rtems_rfs_block_map map;
rtems_rfs_block_pos bpos;
rtems_rfs_buffer_handle buffer;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
5aeec: 4e94 jsr %a4@
5aeee: 508f addql #8,%sp
5aef0: 4a00 tstb %d0
5aef2: 6600 024c bnew 5b140 <rtems_rfs_dir_add_entry+0x276>
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf (", len=%zd\n", length);
}
rc = rtems_rfs_block_map_open (fs, dir, &map);
5aef6: 2e0e movel %fp,%d7
5aef8: 0687 ffff ffb6 addil #-74,%d7
5aefe: 2f07 movel %d7,%sp@-
5af00: 2f2e 000c movel %fp@(12),%sp@-
5af04: 2f0b movel %a3,%sp@-
5af06: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open>
if (rc > 0)
5af0c: 4fef 000c lea %sp@(12),%sp
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf (", len=%zd\n", length);
}
rc = rtems_rfs_block_map_open (fs, dir, &map);
5af10: 2400 movel %d0,%d2
if (rc > 0)
5af12: 6f0c bles 5af20 <rtems_rfs_dir_add_entry+0x56> <== ALWAYS TAKEN
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5af14: 2002 movel %d2,%d0 <== NOT EXECUTED
5af16: 4cee 3cfc ff6c moveml %fp@(-148),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5af1c: 4e5e unlk %fp <== NOT EXECUTED
5af1e: 4e75 rts <== NOT EXECUTED
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
{
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
5af20: 2206 movel %d6,%d1
5af22: 0681 0000 000a addil #10,%d1
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5af28: 4203 clrb %d3
handle->bnum = 0;
5af2a: 42ae ffa2 clrl %fp@(-94)
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5af2e: 1d43 ffa0 moveb %d3,%fp@(-96)
handle->bnum = 0;
handle->buffer = NULL;
5af32: 42ae ffa6 clrl %fp@(-90)
* @param bpos A pointer to the block position.
*/
static inline void
rtems_rfs_block_set_bpos_zero (rtems_rfs_block_pos* bpos)
{
bpos->bno = 0;
5af36: 42ae ffaa clrl %fp@(-86)
bpos->boff = 0;
5af3a: 42ae ffae clrl %fp@(-82)
bpos->block = 0;
5af3e: 42ae ffb2 clrl %fp@(-78)
5af42: 2d41 ff98 movel %d1,%fp@(-104)
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5af46: 2d4d ff94 movel %a5,%fp@(-108)
/*
* Locate the first block. If an error the block will be 0. If the map is
* empty which happens when creating a directory and adding the first entry
* the seek will return ENXIO. In this case we need to grow the directory.
*/
rc = rtems_rfs_block_map_find (fs, &map, &bpos, &block);
5af4a: 486e ff9c pea %fp@(-100)
5af4e: 486e ffaa pea %fp@(-86)
5af52: 2f07 movel %d7,%sp@-
5af54: 2f0b movel %a3,%sp@-
5af56: 4eb9 0005 95dc jsr 595dc <rtems_rfs_block_map_find>
if (rc > 0)
5af5c: 4fef 0010 lea %sp@(16),%sp
5af60: 4a80 tstl %d0
5af62: 6f00 02dc blew 5b240 <rtems_rfs_dir_add_entry+0x376>
{
if (rc != ENXIO)
5af66: 7806 moveq #6,%d4
5af68: b880 cmpl %d0,%d4
5af6a: 6600 0362 bnew 5b2ce <rtems_rfs_dir_add_entry+0x404>
}
/*
* We have reached the end of the directory so add a block.
*/
rc = rtems_rfs_block_map_grow (fs, &map, 1, &block);
5af6e: 486e ff9c pea %fp@(-100)
5af72: 4878 0001 pea 1 <ADD>
5af76: 2f07 movel %d7,%sp@-
5af78: 2f0b movel %a3,%sp@-
5af7a: 4eb9 0005 97a8 jsr 597a8 <rtems_rfs_block_map_grow>
if (rc > 0)
5af80: 4fef 0010 lea %sp@(16),%sp
5af84: 4a80 tstl %d0
5af86: 6e00 0394 bgtw 5b31c <rtems_rfs_dir_add_entry+0x452>
5af8a: 4280 clrl %d0
"block map grow failed for ino %" PRIu32 ": %d: %s\n",
rtems_rfs_inode_ino (dir), rc, strerror (rc));
break;
}
read = false;
5af8c: 4202 clrb %d2
}
bpos.bno++;
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);
5af8e: 2f00 movel %d0,%sp@-
5af90: 2f2e ff9c movel %fp@(-100),%sp@-
5af94: 486e ffa0 pea %fp@(-96)
}
read = false;
}
bpos.bno++;
5af98: 52ae ffaa addql #1,%fp@(-86)
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);
5af9c: 2f0b movel %a3,%sp@-
5af9e: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request>
if (rc > 0)
5afa4: 4fef 0010 lea %sp@(16),%sp
5afa8: 4a80 tstl %d0
5afaa: 6e00 029c bgtw 5b248 <rtems_rfs_dir_add_entry+0x37e>
"block buffer req failed for ino %" PRIu32 ": %d: %s\n",
rtems_rfs_inode_ino (dir), rc, strerror (rc));
break;
}
entry = rtems_rfs_buffer_data (&buffer);
5afae: 206e ffa6 moveal %fp@(-90),%a0
5afb2: 2468 001a moveal %a0@(26),%a2
if (!read)
5afb6: 4a02 tstb %d2
5afb8: 6700 023a beqw 5b1f4 <rtems_rfs_dir_add_entry+0x32a>
memset (entry, 0xff, rtems_rfs_fs_block_size (fs));
offset = 0;
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5afbc: 2a6b 0008 moveal %a3@(8),%a5
5afc0: 41ed fff6 lea %a5@(-10),%a0
5afc4: 4a88 tstl %a0
5afc6: 6782 beqs 5af4a <rtems_rfs_dir_add_entry+0x80> <== NEVER TAKEN
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
5afc8: 4282 clrl %d2
5afca: 4280 clrl %d0
5afcc: 1412 moveb %a2@,%d2
5afce: 102a 0002 moveb %a2@(2),%d0
5afd2: 7218 moveq #24,%d1
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5afd4: 4283 clrl %d3
5afd6: 162a 0008 moveb %a2@(8),%d3
eino = rtems_rfs_dir_entry_ino (entry);
5afda: 4284 clrl %d4
5afdc: 182a 0003 moveb %a2@(3),%d4
5afe0: e3aa lsll %d1,%d2
5afe2: e188 lsll #8,%d0
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5afe4: 4281 clrl %d1
5afe6: 122a 0009 moveb %a2@(9),%d1
eino = rtems_rfs_dir_entry_ino (entry);
5afea: 8480 orl %d0,%d2
5afec: 4280 clrl %d0
5afee: 102a 0001 moveb %a2@(1),%d0
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5aff2: e18b lsll #8,%d3
eino = rtems_rfs_dir_entry_ino (entry);
5aff4: 8484 orl %d4,%d2
5aff6: 4840 swap %d0
5aff8: 4240 clrw %d0
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5affa: 8681 orl %d1,%d3
eino = rtems_rfs_dir_entry_ino (entry);
5affc: 8480 orl %d0,%d2
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
5affe: 0c83 0000 ffff cmpil #65535,%d3
5b004: 6700 02b8 beqw 5b2be <rtems_rfs_dir_add_entry+0x3f4>
5b008: 4284 clrl %d4 <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return EIO;
}
entry += elength;
5b00a: d5c3 addal %d3,%a2 <== NOT EXECUTED
}
break;
}
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
5b00c: 700a moveq #10,%d0 <== NOT EXECUTED
5b00e: b083 cmpl %d3,%d0 <== NOT EXECUTED
5b010: 6c00 019c bgew 5b1ae <rtems_rfs_dir_add_entry+0x2e4> <== NOT EXECUTED
5b014: b6ab 001c cmpl %a3@(28),%d3 <== NOT EXECUTED
5b018: 6400 0194 bccw 5b1ae <rtems_rfs_dir_add_entry+0x2e4> <== NOT EXECUTED
5b01c: 4a82 tstl %d2 <== NOT EXECUTED
5b01e: 6700 018e beqw 5b1ae <rtems_rfs_dir_add_entry+0x2e4> <== NOT EXECUTED
5b022: b4ab 0014 cmpl %a3@(20),%d2 <== NOT EXECUTED
5b026: 6200 0186 bhiw 5b1ae <rtems_rfs_dir_add_entry+0x2e4> <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
return EIO;
}
entry += elength;
offset += elength;
5b02a: d883 addl %d3,%d4 <== NOT EXECUTED
if (!read)
memset (entry, 0xff, rtems_rfs_fs_block_size (fs));
offset = 0;
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5b02c: 2244 moveal %d4,%a1 <== NOT EXECUTED
5b02e: b1c4 cmpal %d4,%a0 <== NOT EXECUTED
5b030: 6300 ff18 blsw 5af4a <rtems_rfs_dir_add_entry+0x80> <== NOT EXECUTED
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
5b034: 4282 clrl %d2 <== NOT EXECUTED
5b036: 4280 clrl %d0 <== NOT EXECUTED
5b038: 1412 moveb %a2@,%d2 <== NOT EXECUTED
5b03a: 102a 0001 moveb %a2@(1),%d0 <== NOT EXECUTED
5b03e: 7618 moveq #24,%d3 <== NOT EXECUTED
5b040: 4285 clrl %d5 <== NOT EXECUTED
5b042: 1a2a 0003 moveb %a2@(3),%d5 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b046: 4281 clrl %d1 <== NOT EXECUTED
5b048: 122a 0009 moveb %a2@(9),%d1 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b04c: e7aa lsll %d3,%d2 <== NOT EXECUTED
5b04e: 4840 swap %d0 <== NOT EXECUTED
5b050: 4240 clrw %d0 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b052: 4283 clrl %d3 <== NOT EXECUTED
5b054: 162a 0008 moveb %a2@(8),%d3 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b058: 8480 orl %d0,%d2 <== NOT EXECUTED
5b05a: 4280 clrl %d0 <== NOT EXECUTED
5b05c: 102a 0002 moveb %a2@(2),%d0 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b060: e18b lsll #8,%d3 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b062: 8485 orl %d5,%d2 <== NOT EXECUTED
5b064: e188 lsll #8,%d0 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b066: 8681 orl %d1,%d3 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b068: 8480 orl %d0,%d2 <== NOT EXECUTED
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
5b06a: 0c83 0000 ffff cmpil #65535,%d3 <== NOT EXECUTED
5b070: 6698 bnes 5b00a <rtems_rfs_dir_add_entry+0x140> <== NOT EXECUTED
{
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
5b072: 9bc9 subal %a1,%a5 <== NOT EXECUTED
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
{
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
5b074: bbee ff98 cmpal %fp@(-104),%a5 <== NOT EXECUTED
5b078: 6300 fed0 blsw 5af4a <rtems_rfs_dir_add_entry+0x80> <== NOT EXECUTED
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
5b07c: 2f06 movel %d6,%sp@-
5b07e: 2a6e ff94 moveal %fp@(-108),%a5
RTEMS_RFS_DIR_ENTRY_SIZE + length);
memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length);
rtems_rfs_buffer_mark_dirty (&buffer);
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return 0;
5b082: 4282 clrl %d2
{
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
5b084: 2f0d movel %a5,%sp@-
5b086: 4eb9 0006 00e8 jsr 600e8 <rtems_rfs_dir_hash>
rtems_rfs_dir_set_entry_hash (entry, hash);
rtems_rfs_dir_set_entry_ino (entry, ino);
5b08c: 2a2e 0018 movel %fp@(24),%d5
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
rtems_rfs_dir_set_entry_hash (entry, hash);
5b090: 7218 moveq #24,%d1
5b092: 2800 movel %d0,%d4
5b094: e2ac lsrl %d1,%d4
rtems_rfs_dir_set_entry_ino (entry, ino);
5b096: e2ad lsrl %d1,%d5
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
rtems_rfs_dir_set_entry_hash (entry, hash);
5b098: 2200 movel %d0,%d1
5b09a: 2844 moveal %d4,%a4
5b09c: 2600 movel %d0,%d3
5b09e: e08b lsrl #8,%d3
5b0a0: 2043 moveal %d3,%a0
5b0a2: 4241 clrw %d1
5b0a4: 4841 swap %d1
rtems_rfs_dir_set_entry_ino (entry, ino);
rtems_rfs_dir_set_entry_length (entry,
5b0a6: 282e ff98 movel %fp@(-104),%d4
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
rtems_rfs_dir_set_entry_hash (entry, hash);
5b0aa: 2241 moveal %d1,%a1
rtems_rfs_dir_set_entry_ino (entry, ino);
rtems_rfs_dir_set_entry_length (entry,
5b0ac: e08c lsrl #8,%d4
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
rtems_rfs_dir_set_entry_hash (entry, hash);
5b0ae: 320c movew %a4,%d1
rtems_rfs_dir_set_entry_ino (entry, ino);
rtems_rfs_dir_set_entry_length (entry,
5b0b0: 2d44 ff94 movel %d4,%fp@(-108)
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
rtems_rfs_dir_set_entry_hash (entry, hash);
rtems_rfs_dir_set_entry_ino (entry, ino);
5b0b4: 282e 0018 movel %fp@(24),%d4
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
rtems_rfs_dir_set_entry_hash (entry, hash);
5b0b8: 1541 0004 moveb %d1,%a2@(4)
rtems_rfs_dir_set_entry_ino (entry, ino);
5b0bc: 262e 0018 movel %fp@(24),%d3
5b0c0: e08b lsrl #8,%d3
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
rtems_rfs_dir_set_entry_hash (entry, hash);
5b0c2: 3209 movew %a1,%d1
rtems_rfs_dir_set_entry_ino (entry, ino);
5b0c4: 4244 clrw %d4
5b0c6: 4844 swap %d4
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
rtems_rfs_dir_set_entry_hash (entry, hash);
5b0c8: 1540 0007 moveb %d0,%a2@(7)
5b0cc: 1541 0005 moveb %d1,%a2@(5)
rtems_rfs_dir_set_entry_ino (entry, ino);
5b0d0: 1544 0001 moveb %d4,%a2@(1)
5b0d4: 1543 0002 moveb %d3,%a2@(2)
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
rtems_rfs_dir_set_entry_hash (entry, hash);
5b0d8: 3208 movew %a0,%d1
rtems_rfs_dir_set_entry_ino (entry, ino);
5b0da: 162e 001b moveb %fp@(27),%d3
rtems_rfs_dir_set_entry_length (entry,
5b0de: 182e ff97 moveb %fp@(-105),%d4
5b0e2: 102e ff9b moveb %fp@(-101),%d0
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
{
uint32_t hash;
hash = rtems_rfs_dir_hash (name, length);
rtems_rfs_dir_set_entry_hash (entry, hash);
5b0e6: 1541 0006 moveb %d1,%a2@(6)
rtems_rfs_dir_set_entry_ino (entry, ino);
5b0ea: 1543 0003 moveb %d3,%a2@(3)
5b0ee: 1485 moveb %d5,%a2@
rtems_rfs_dir_set_entry_length (entry,
5b0f0: 1544 0008 moveb %d4,%a2@(8)
5b0f4: 1540 0009 moveb %d0,%a2@(9)
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5b0f8: 4203 clrb %d3
RTEMS_RFS_DIR_ENTRY_SIZE + length);
memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length);
5b0fa: 2f06 movel %d6,%sp@-
5b0fc: 2f0d movel %a5,%sp@-
5b0fe: 486a 000a pea %a2@(10)
5b102: 4eb9 0006 1438 jsr 61438 <memcpy>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b108: 486e ffa0 pea %fp@(-96)
rtems_rfs_buffer_mark_dirty (&buffer);
5b10c: 7201 moveq #1,%d1
5b10e: 2f0b movel %a3,%sp@-
5b110: 1d41 ffa0 moveb %d1,%fp@(-96)
5b114: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release>
handle->dirty = false;
5b11a: 1d43 ffa0 moveb %d3,%fp@(-96)
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
5b11e: 2f07 movel %d7,%sp@-
handle->bnum = 0;
5b120: 42ae ffa2 clrl %fp@(-94)
5b124: 2f0b movel %a3,%sp@-
handle->buffer = NULL;
5b126: 42ae ffa6 clrl %fp@(-90)
5b12a: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close>
5b130: 4fef 0024 lea %sp@(36),%sp
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5b134: 2002 movel %d2,%d0
5b136: 4cee 3cfc ff6c moveml %fp@(-148),%d2-%d7/%a2-%a5
5b13c: 4e5e unlk %fp
5b13e: 4e75 rts
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
{
int c;
printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=",
5b140: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b144: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5b148: 263c 0006 16ec movel #399084,%d3 <== NOT EXECUTED
5b14e: 4879 0007 294a pea 7294a <CSWTCH.2+0x882> <== NOT EXECUTED
5b154: 2043 moveal %d3,%a0 <== NOT EXECUTED
5b156: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_rfs_inode_ino (dir));
for (c = 0; c < length; c++)
5b158: 508f addql #8,%sp <== NOT EXECUTED
5b15a: 4a86 tstl %d6 <== NOT EXECUTED
5b15c: 671e beqs 5b17c <rtems_rfs_dir_add_entry+0x2b2> <== NOT EXECUTED
5b15e: 4281 clrl %d1 <== NOT EXECUTED
5b160: 4282 clrl %d2 <== NOT EXECUTED
5b162: 45f9 0006 187c lea 6187c <putchar>,%a2 <== NOT EXECUTED
5b168: 5282 addql #1,%d2 <== NOT EXECUTED
printf ("%c", name[c]);
5b16a: 1235 1800 moveb %a5@(00000000,%d1:l),%d1 <== NOT EXECUTED
5b16e: 49c1 extbl %d1 <== NOT EXECUTED
5b170: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5b172: 4e92 jsr %a2@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
{
int c;
printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=",
rtems_rfs_inode_ino (dir));
for (c = 0; c < length; c++)
5b174: 588f addql #4,%sp <== NOT EXECUTED
5b176: 2202 movel %d2,%d1 <== NOT EXECUTED
5b178: bc82 cmpl %d2,%d6 <== NOT EXECUTED
5b17a: 66ec bnes 5b168 <rtems_rfs_dir_add_entry+0x29e> <== NOT EXECUTED
printf ("%c", name[c]);
printf (", len=%zd\n", length);
5b17c: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5b17e: 4879 0007 2973 pea 72973 <CSWTCH.2+0x8ab> <== NOT EXECUTED
5b184: 2043 moveal %d3,%a0 <== NOT EXECUTED
}
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b186: 2e0e movel %fp,%d7 <== NOT EXECUTED
5b188: 0687 ffff ffb6 addil #-74,%d7 <== NOT EXECUTED
int c;
printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=",
rtems_rfs_inode_ino (dir));
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf (", len=%zd\n", length);
5b18e: 4e90 jsr %a0@ <== NOT EXECUTED
5b190: 508f addql #8,%sp <== NOT EXECUTED
}
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b192: 2f07 movel %d7,%sp@- <== NOT EXECUTED
5b194: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5b198: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b19a: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5b1a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf (", len=%zd\n", length);
}
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b1a4: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5b1a6: 6e00 fd6c bgtw 5af14 <rtems_rfs_dir_add_entry+0x4a> <== NOT EXECUTED
5b1aa: 6000 fd74 braw 5af20 <rtems_rfs_dir_add_entry+0x56> <== NOT EXECUTED
break;
}
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
5b1ae: 2f3c 2000 0000 movel #536870912,%sp@- <== NOT EXECUTED
5b1b4: 42a7 clrl %sp@- <== NOT EXECUTED
5b1b6: 4e94 jsr %a4@ <== NOT EXECUTED
5b1b8: 508f addql #8,%sp <== NOT EXECUTED
5b1ba: 4a00 tstb %d0 <== NOT EXECUTED
5b1bc: 664e bnes 5b20c <rtems_rfs_dir_add_entry+0x342> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b1be: 486e ffa0 pea %fp@(-96) <== NOT EXECUTED
printf ("rtems-rfs: dir-add-entry: "
"bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04x\n",
rtems_rfs_inode_ino (dir), elength, eino, offset);
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return EIO;
5b1c2: 7405 moveq #5,%d2 <== NOT EXECUTED
5b1c4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b1c6: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b1cc: 4200 clrb %d0 <== NOT EXECUTED
5b1ce: 1d40 ffa0 moveb %d0,%fp@(-96) <== NOT EXECUTED
offset += elength;
}
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
5b1d2: 2f07 movel %d7,%sp@- <== NOT EXECUTED
handle->bnum = 0;
5b1d4: 42ae ffa2 clrl %fp@(-94) <== NOT EXECUTED
5b1d8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
handle->buffer = NULL;
5b1da: 42ae ffa6 clrl %fp@(-90) <== NOT EXECUTED
5b1de: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5b1e4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return rc;
}
5b1e8: 2002 movel %d2,%d0 <== NOT EXECUTED
5b1ea: 4cee 3cfc ff6c moveml %fp@(-148),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5b1f0: 4e5e unlk %fp <== NOT EXECUTED
5b1f2: 4e75 rts <== NOT EXECUTED
}
entry = rtems_rfs_buffer_data (&buffer);
if (!read)
memset (entry, 0xff, rtems_rfs_fs_block_size (fs));
5b1f4: 2f2b 0008 movel %a3@(8),%sp@-
5b1f8: 4878 00ff pea ff <DBL_MANT_DIG+0xca>
5b1fc: 2f0a movel %a2,%sp@-
5b1fe: 4eb9 0006 159c jsr 6159c <memset>
5b204: 4fef 000c lea %sp@(12),%sp
5b208: 6000 fdb2 braw 5afbc <rtems_rfs_dir_add_entry+0xf2>
}
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
printf ("rtems-rfs: dir-add-entry: "
5b20c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5b20e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b212: 2f02 movel %d2,%sp@- <== NOT EXECUTED
"bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04x\n",
rtems_rfs_inode_ino (dir), elength, eino, offset);
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return EIO;
5b214: 7405 moveq #5,%d2 <== NOT EXECUTED
}
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
printf ("rtems-rfs: dir-add-entry: "
5b216: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5b218: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5b21c: 4879 0007 2a4f pea 72a4f <CSWTCH.2+0x987> <== NOT EXECUTED
5b222: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b228: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b22c: 486e ffa0 pea %fp@(-96) <== NOT EXECUTED
5b230: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b232: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b238: 4200 clrb %d0 <== NOT EXECUTED
5b23a: 1d40 ffa0 moveb %d0,%fp@(-96) <== NOT EXECUTED
5b23e: 6092 bras 5b1d2 <rtems_rfs_dir_add_entry+0x308> <== NOT EXECUTED
* Locate the first block. If an error the block will be 0. If the map is
* empty which happens when creating a directory and adding the first entry
* the seek will return ENXIO. In this case we need to grow the directory.
*/
rc = rtems_rfs_block_map_find (fs, &map, &bpos, &block);
if (rc > 0)
5b240: 7001 moveq #1,%d0 <== NOT EXECUTED
while (true)
{
rtems_rfs_block_no block;
uint8_t* entry;
int offset;
bool read = true;
5b242: 7401 moveq #1,%d2 <== NOT EXECUTED
5b244: 6000 fd48 braw 5af8e <rtems_rfs_dir_add_entry+0xc4> <== NOT EXECUTED
5b248: 2400 movel %d0,%d2 <== NOT EXECUTED
bpos.bno++;
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
5b24a: 2f3c 2000 0000 movel #536870912,%sp@- <== NOT EXECUTED
5b250: 42a7 clrl %sp@- <== NOT EXECUTED
5b252: 4e94 jsr %a4@ <== NOT EXECUTED
5b254: 508f addql #8,%sp <== NOT EXECUTED
5b256: 4a00 tstb %d0 <== NOT EXECUTED
5b258: 662c bnes 5b286 <rtems_rfs_dir_add_entry+0x3bc> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b25a: 486e ffa0 pea %fp@(-96) <== NOT EXECUTED
5b25e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b260: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b266: 4201 clrb %d1 <== NOT EXECUTED
5b268: 1d41 ffa0 moveb %d1,%fp@(-96) <== NOT EXECUTED
offset += elength;
}
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
5b26c: 2f07 movel %d7,%sp@- <== NOT EXECUTED
handle->bnum = 0;
5b26e: 42ae ffa2 clrl %fp@(-94) <== NOT EXECUTED
5b272: 2f0b movel %a3,%sp@- <== NOT EXECUTED
handle->buffer = NULL;
5b274: 42ae ffa6 clrl %fp@(-90) <== NOT EXECUTED
5b278: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5b27e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5b282: 6000 ff64 braw 5b1e8 <rtems_rfs_dir_add_entry+0x31e> <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
printf ("rtems-rfs: dir-add-entry: "
5b286: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b288: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5b28e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b292: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b294: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b296: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5b29a: 4879 0007 2a08 pea 72a08 <CSWTCH.2+0x940> <== NOT EXECUTED
5b2a0: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b2a6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b2aa: 486e ffa0 pea %fp@(-96) <== NOT EXECUTED
5b2ae: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b2b0: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b2b6: 4201 clrb %d1 <== NOT EXECUTED
5b2b8: 1d41 ffa0 moveb %d1,%fp@(-96) <== NOT EXECUTED
5b2bc: 60ae bras 5b26c <rtems_rfs_dir_add_entry+0x3a2> <== NOT EXECUTED
if (!read)
memset (entry, 0xff, rtems_rfs_fs_block_size (fs));
offset = 0;
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5b2be: 93c9 subal %a1,%a1
eino = rtems_rfs_dir_entry_ino (entry);
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
{
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
(rtems_rfs_fs_block_size (fs) - offset))
5b2c0: 9bc9 subal %a1,%a5
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
{
if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <
5b2c2: bbee ff98 cmpal %fp@(-104),%a5
5b2c6: 6300 fc82 blsw 5af4a <rtems_rfs_dir_add_entry+0x80>
5b2ca: 6000 fdb0 braw 5b07c <rtems_rfs_dir_add_entry+0x1b2>
5b2ce: 2400 movel %d0,%d2 <== NOT EXECUTED
rc = rtems_rfs_block_map_find (fs, &map, &bpos, &block);
if (rc > 0)
{
if (rc != ENXIO)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
5b2d0: 2f3c 2000 0000 movel #536870912,%sp@- <== NOT EXECUTED
5b2d6: 42a7 clrl %sp@- <== NOT EXECUTED
5b2d8: 4e94 jsr %a4@ <== NOT EXECUTED
5b2da: 508f addql #8,%sp <== NOT EXECUTED
5b2dc: 4a00 tstb %d0 <== NOT EXECUTED
5b2de: 6700 ff7a beqw 5b25a <rtems_rfs_dir_add_entry+0x390> <== NOT EXECUTED
printf ("rtems-rfs: dir-add-entry: "
5b2e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b2e4: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5b2ea: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b2ee: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b2f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b2f2: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5b2f6: 4879 0007 297e pea 7297e <CSWTCH.2+0x8b6> <== NOT EXECUTED
5b2fc: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b302: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b306: 486e ffa0 pea %fp@(-96) <== NOT EXECUTED
5b30a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b30c: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b312: 4201 clrb %d1 <== NOT EXECUTED
5b314: 1d41 ffa0 moveb %d1,%fp@(-96) <== NOT EXECUTED
5b318: 6000 ff52 braw 5b26c <rtems_rfs_dir_add_entry+0x3a2> <== NOT EXECUTED
5b31c: 2400 movel %d0,%d2 <== NOT EXECUTED
* We have reached the end of the directory so add a block.
*/
rc = rtems_rfs_block_map_grow (fs, &map, 1, &block);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
5b31e: 2f3c 2000 0000 movel #536870912,%sp@- <== NOT EXECUTED
5b324: 42a7 clrl %sp@- <== NOT EXECUTED
5b326: 4e94 jsr %a4@ <== NOT EXECUTED
5b328: 508f addql #8,%sp <== NOT EXECUTED
5b32a: 4a00 tstb %d0 <== NOT EXECUTED
5b32c: 6700 ff2c beqw 5b25a <rtems_rfs_dir_add_entry+0x390> <== NOT EXECUTED
printf ("rtems-rfs: dir-add-entry: "
5b330: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b332: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5b338: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b33c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b33e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b340: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5b344: 4879 0007 29c3 pea 729c3 <CSWTCH.2+0x8fb> <== NOT EXECUTED
5b34a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b350: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b354: 486e ffa0 pea %fp@(-96) <== NOT EXECUTED
5b358: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b35a: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b360: 4201 clrb %d1 <== NOT EXECUTED
5b362: 1d41 ffa0 moveb %d1,%fp@(-96) <== NOT EXECUTED
5b366: 6000 ff04 braw 5b26c <rtems_rfs_dir_add_entry+0x3a2> <== NOT EXECUTED
0005b36a <rtems_rfs_dir_del_entry>:
int
rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* dir,
rtems_rfs_ino ino,
uint32_t offset)
{
5b36a: 4e56 ff78 linkw %fp,#-136 <== NOT EXECUTED
5b36e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_rfs_block_no block;
rtems_rfs_buffer_handle buffer;
bool search;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
5b372: 2f3c 4000 0000 movel #1073741824,%sp@- <== NOT EXECUTED
int
rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* dir,
rtems_rfs_ino ino,
uint32_t offset)
{
5b378: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_rfs_block_no block;
rtems_rfs_buffer_handle buffer;
bool search;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
5b37c: 49f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a4 <== NOT EXECUTED
5b382: 42a7 clrl %sp@- <== NOT EXECUTED
5b384: 4e94 jsr %a4@ <== NOT EXECUTED
5b386: 508f addql #8,%sp <== NOT EXECUTED
5b388: 4a00 tstb %d0 <== NOT EXECUTED
5b38a: 6624 bnes 5b3b0 <rtems_rfs_dir_del_entry+0x46> <== NOT EXECUTED
printf ("rtems-rfs: dir-del-entry: dir=%" PRId32 ", entry=%" PRId32 " offset=%" PRIu32 "\n",
rtems_rfs_inode_ino (dir), ino, offset);
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b38c: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
5b390: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5b394: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b396: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5b39c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
printf ("rtems-rfs: dir-del-entry: dir=%" PRId32 ", entry=%" PRId32 " offset=%" PRIu32 "\n",
rtems_rfs_inode_ino (dir), ino, offset);
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b3a0: 2a00 movel %d0,%d5 <== NOT EXECUTED
if (rc > 0)
5b3a2: 6f44 bles 5b3e8 <rtems_rfs_dir_del_entry+0x7e> <== NOT EXECUTED
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5b3a4: 2005 movel %d5,%d0 <== NOT EXECUTED
5b3a6: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5b3ac: 4e5e unlk %fp <== NOT EXECUTED
5b3ae: 4e75 rts <== NOT EXECUTED
rtems_rfs_buffer_handle buffer;
bool search;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
printf ("rtems-rfs: dir-del-entry: dir=%" PRId32 ", entry=%" PRId32 " offset=%" PRIu32 "\n",
5b3b0: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5b3b4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b3b8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5b3bc: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5b3c0: 4879 0007 2a97 pea 72a97 <CSWTCH.2+0x9cf> <== NOT EXECUTED
5b3c6: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b3cc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_inode_ino (dir), ino, offset);
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b3d0: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
5b3d4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5b3d8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b3da: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5b3e0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
printf ("rtems-rfs: dir-del-entry: dir=%" PRId32 ", entry=%" PRId32 " offset=%" PRIu32 "\n",
rtems_rfs_inode_ino (dir), ino, offset);
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b3e4: 2a00 movel %d0,%d5 <== NOT EXECUTED
if (rc > 0)
5b3e6: 6ebc bgts 5b3a4 <rtems_rfs_dir_del_entry+0x3a> <== NOT EXECUTED
return rc;
rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);
5b3e8: 486e ffa8 pea %fp@(-88) <== NOT EXECUTED
5b3ec: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5b3f0: 42a7 clrl %sp@- <== NOT EXECUTED
5b3f2: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
5b3f6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b3f8: 4eb9 0005 96f8 jsr 596f8 <rtems_rfs_block_map_seek> <== NOT EXECUTED
if (rc > 0)
5b3fe: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, dir, &map);
if (rc > 0)
return rc;
rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);
5b402: 2a00 movel %d0,%d5 <== NOT EXECUTED
if (rc > 0)
5b404: 6f32 bles 5b438 <rtems_rfs_dir_del_entry+0xce> <== NOT EXECUTED
{
if (rc == ENXIO)
5b406: 7006 moveq #6,%d0 <== NOT EXECUTED
5b408: b085 cmpl %d5,%d0 <== NOT EXECUTED
5b40a: 671a beqs 5b426 <rtems_rfs_dir_del_entry+0xbc> <== NOT EXECUTED
rc = ENOENT;
rtems_rfs_block_map_close (fs, &map);
5b40c: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
5b410: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b412: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5b418: 508f addql #8,%sp <== NOT EXECUTED
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5b41a: 2005 movel %d5,%d0 <== NOT EXECUTED
5b41c: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5b422: 4e5e unlk %fp <== NOT EXECUTED
5b424: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);
if (rc > 0)
{
if (rc == ENXIO)
rc = ENOENT;
rtems_rfs_block_map_close (fs, &map);
5b426: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);
if (rc > 0)
{
if (rc == ENXIO)
rc = ENOENT;
5b42a: 7a02 moveq #2,%d5 <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
5b42c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b42e: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5b434: 508f addql #8,%sp <== NOT EXECUTED
5b436: 60e2 bras 5b41a <rtems_rfs_dir_del_entry+0xb0> <== NOT EXECUTED
}
/*
* Only search if the offset is 0 else we are at that position.
*/
search = offset ? false : true;
5b438: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED
5b43c: 57c7 seq %d7 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5b43e: 4201 clrb %d1 <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5b440: 2c2e 0010 movel %fp@(16),%d6 <== NOT EXECUTED
5b444: 4487 negl %d7 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5b446: 1d41 ffac moveb %d1,%fp@(-84) <== NOT EXECUTED
handle->bnum = 0;
5b44a: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
handle->buffer = NULL;
5b44e: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
while (rc == 0)
{
uint8_t* entry;
int eoffset;
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);
5b452: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5b456: 2f2e ffa8 movel %fp@(-88),%sp@- <== NOT EXECUTED
5b45a: 486e ffac pea %fp@(-84) <== NOT EXECUTED
5b45e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b460: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request> <== NOT EXECUTED
if (rc > 0)
5b466: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
while (rc == 0)
{
uint8_t* entry;
int eoffset;
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);
5b46a: 2d40 ffa0 movel %d0,%fp@(-96) <== NOT EXECUTED
if (rc > 0)
5b46e: 6e00 0346 bgtw 5b7b6 <rtems_rfs_dir_del_entry+0x44c> <== NOT EXECUTED
/*
* If we are searching start at the beginning of the block. If not searching
* skip to the offset in the block.
*/
if (search)
5b472: 4a07 tstb %d7 <== NOT EXECUTED
5b474: 6700 0164 beqw 5b5da <rtems_rfs_dir_del_entry+0x270> <== NOT EXECUTED
5b478: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
5b47c: 4281 clrl %d1 <== NOT EXECUTED
eoffset = 0;
5b47e: 4284 clrl %d4 <== NOT EXECUTED
5b480: 2d40 ffa4 movel %d0,%fp@(-92) <== NOT EXECUTED
else
eoffset = offset % rtems_rfs_fs_block_size (fs);
entry = rtems_rfs_buffer_data (&buffer) + eoffset;
5b484: 226e ffb2 moveal %fp@(-78),%a1 <== NOT EXECUTED
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5b488: 206e ffa4 moveal %fp@(-92),%a0 <== NOT EXECUTED
5b48c: 41e8 fff6 lea %a0@(-10),%a0 <== NOT EXECUTED
if (search)
eoffset = 0;
else
eoffset = offset % rtems_rfs_fs_block_size (fs);
entry = rtems_rfs_buffer_data (&buffer) + eoffset;
5b490: 2469 001a moveal %a1@(26),%a2 <== NOT EXECUTED
5b494: d5c1 addal %d1,%a2 <== NOT EXECUTED
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5b496: b288 cmpl %a0,%d1 <== NOT EXECUTED
5b498: 6400 00b6 bccw 5b550 <rtems_rfs_dir_del_entry+0x1e6> <== NOT EXECUTED
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
5b49c: 4282 clrl %d2 <== NOT EXECUTED
5b49e: 4281 clrl %d1 <== NOT EXECUTED
5b4a0: 142a 0001 moveb %a2@(1),%d2 <== NOT EXECUTED
5b4a4: 122a 0002 moveb %a2@(2),%d1 <== NOT EXECUTED
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b4a8: 4280 clrl %d0 <== NOT EXECUTED
5b4aa: 102a 0009 moveb %a2@(9),%d0 <== NOT EXECUTED
5b4ae: 4283 clrl %d3 <== NOT EXECUTED
5b4b0: 2240 moveal %d0,%a1 <== NOT EXECUTED
5b4b2: 162a 0008 moveb %a2@(8),%d3 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b4b6: e189 lsll #8,%d1 <== NOT EXECUTED
5b4b8: 4842 swap %d2 <== NOT EXECUTED
5b4ba: 4242 clrw %d2 <== NOT EXECUTED
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b4bc: e18b lsll #8,%d3 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b4be: 8481 orl %d1,%d2 <== NOT EXECUTED
5b4c0: 4281 clrl %d1 <== NOT EXECUTED
5b4c2: 122a 0003 moveb %a2@(3),%d1 <== NOT EXECUTED
5b4c6: 2a41 moveal %d1,%a5 <== NOT EXECUTED
5b4c8: 200d movel %a5,%d0 <== NOT EXECUTED
5b4ca: 1212 moveb %a2@,%d1 <== NOT EXECUTED
5b4cc: 8480 orl %d0,%d2 <== NOT EXECUTED
5b4ce: 7018 moveq #24,%d0 <== NOT EXECUTED
5b4d0: e1a9 lsll %d0,%d1 <== NOT EXECUTED
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b4d2: 2009 movel %a1,%d0 <== NOT EXECUTED
5b4d4: 8680 orl %d0,%d3 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b4d6: 8481 orl %d1,%d2 <== NOT EXECUTED
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
5b4d8: 0c83 0000 ffff cmpil #65535,%d3 <== NOT EXECUTED
5b4de: 6770 beqs 5b550 <rtems_rfs_dir_del_entry+0x1e6> <== NOT EXECUTED
break;
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
5b4e0: 700a moveq #10,%d0 <== NOT EXECUTED
5b4e2: b083 cmpl %d3,%d0 <== NOT EXECUTED
5b4e4: 6c00 00ac bgew 5b592 <rtems_rfs_dir_del_entry+0x228> <== NOT EXECUTED
5b4e8: b6ab 001c cmpl %a3@(28),%d3 <== NOT EXECUTED
5b4ec: 6400 00a4 bccw 5b592 <rtems_rfs_dir_del_entry+0x228> <== NOT EXECUTED
5b4f0: 4a82 tstl %d2 <== NOT EXECUTED
5b4f2: 6700 009e beqw 5b592 <rtems_rfs_dir_del_entry+0x228> <== NOT EXECUTED
5b4f6: b4ab 0014 cmpl %a3@(20),%d2 <== NOT EXECUTED
5b4fa: 6200 0096 bhiw 5b592 <rtems_rfs_dir_del_entry+0x228> <== NOT EXECUTED
rtems_rfs_inode_ino (dir), elength, eino, block, eoffset);
rc = EIO;
break;
}
if (ino == rtems_rfs_dir_entry_ino (entry))
5b4fe: b486 cmpl %d6,%d2 <== NOT EXECUTED
5b500: 6700 0118 beqw 5b61a <rtems_rfs_dir_del_entry+0x2b0> <== NOT EXECUTED
{
rc = EIO;
break;
}
entry += elength;
5b504: d5c3 addal %d3,%a2 <== NOT EXECUTED
eoffset += elength;
5b506: d883 addl %d3,%d4 <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return 0;
}
if (!search)
5b508: 4a07 tstb %d7 <== NOT EXECUTED
5b50a: 6700 00b8 beqw 5b5c4 <rtems_rfs_dir_del_entry+0x25a> <== NOT EXECUTED
else
eoffset = offset % rtems_rfs_fs_block_size (fs);
entry = rtems_rfs_buffer_data (&buffer) + eoffset;
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5b50e: b1c4 cmpal %d4,%a0 <== NOT EXECUTED
5b510: 633e blss 5b550 <rtems_rfs_dir_del_entry+0x1e6> <== NOT EXECUTED
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
5b512: 4282 clrl %d2 <== NOT EXECUTED
5b514: 4280 clrl %d0 <== NOT EXECUTED
5b516: 1412 moveb %a2@,%d2 <== NOT EXECUTED
5b518: 102a 0001 moveb %a2@(1),%d0 <== NOT EXECUTED
5b51c: 7218 moveq #24,%d1 <== NOT EXECUTED
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b51e: 4283 clrl %d3 <== NOT EXECUTED
5b520: 162a 0008 moveb %a2@(8),%d3 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b524: 4285 clrl %d5 <== NOT EXECUTED
5b526: 1a2a 0003 moveb %a2@(3),%d5 <== NOT EXECUTED
5b52a: e3aa lsll %d1,%d2 <== NOT EXECUTED
5b52c: 4840 swap %d0 <== NOT EXECUTED
5b52e: 4240 clrw %d0 <== NOT EXECUTED
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b530: 4281 clrl %d1 <== NOT EXECUTED
5b532: 122a 0009 moveb %a2@(9),%d1 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b536: 8480 orl %d0,%d2 <== NOT EXECUTED
5b538: 4280 clrl %d0 <== NOT EXECUTED
5b53a: 102a 0002 moveb %a2@(2),%d0 <== NOT EXECUTED
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b53e: e18b lsll #8,%d3 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b540: 8485 orl %d5,%d2 <== NOT EXECUTED
5b542: e188 lsll #8,%d0 <== NOT EXECUTED
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5b544: 8681 orl %d1,%d3 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b546: 8480 orl %d0,%d2 <== NOT EXECUTED
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
5b548: 0c83 0000 ffff cmpil #65535,%d3 <== NOT EXECUTED
5b54e: 6690 bnes 5b4e0 <rtems_rfs_dir_del_entry+0x176> <== NOT EXECUTED
entry += elength;
eoffset += elength;
}
if (rc == 0)
5b550: 4aae ffa0 tstl %fp@(-96) <== NOT EXECUTED
5b554: 6700 009c beqw 5b5f2 <rtems_rfs_dir_del_entry+0x288> <== NOT EXECUTED
5b558: 2a2e ffa0 movel %fp@(-96),%d5 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b55c: 486e ffac pea %fp@(-84) <== NOT EXECUTED
5b560: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b562: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b568: 4200 clrb %d0 <== NOT EXECUTED
5b56a: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
rc = ENOENT;
}
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
5b56e: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
handle->bnum = 0;
5b572: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
5b576: 2f0b movel %a3,%sp@- <== NOT EXECUTED
handle->buffer = NULL;
5b578: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
5b57c: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5b582: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return rc;
}
5b586: 2005 movel %d5,%d0 <== NOT EXECUTED
5b588: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5b58e: 4e5e unlk %fp <== NOT EXECUTED
5b590: 4e75 rts <== NOT EXECUTED
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
break;
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
5b592: 2f3c 4000 0000 movel #1073741824,%sp@- <== NOT EXECUTED
5b598: 42a7 clrl %sp@- <== NOT EXECUTED
5b59a: 4e94 jsr %a4@ <== NOT EXECUTED
5b59c: 508f addql #8,%sp <== NOT EXECUTED
5b59e: 4a00 tstb %d0 <== NOT EXECUTED
5b5a0: 6722 beqs 5b5c4 <rtems_rfs_dir_del_entry+0x25a> <== NOT EXECUTED
printf ("rtems-rfs: dir-del-entry: "
5b5a2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5b5a4: 2f2e ffa8 movel %fp@(-88),%sp@- <== NOT EXECUTED
5b5a8: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b5ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b5ae: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5b5b0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5b5b4: 4879 0007 2b17 pea 72b17 <CSWTCH.2+0xa4f> <== NOT EXECUTED
5b5ba: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b5c0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b5c4: 486e ffac pea %fp@(-84) <== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (&buffer);
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return 0;
5b5c8: 7a05 moveq #5,%d5 <== NOT EXECUTED
5b5ca: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b5cc: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b5d2: 4200 clrb %d0 <== NOT EXECUTED
5b5d4: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
5b5d8: 6094 bras 5b56e <rtems_rfs_dir_del_entry+0x204> <== NOT EXECUTED
* skip to the offset in the block.
*/
if (search)
eoffset = 0;
else
eoffset = offset % rtems_rfs_fs_block_size (fs);
5b5da: 222b 0008 movel %a3@(8),%d1 <== NOT EXECUTED
5b5de: 2001 movel %d1,%d0 <== NOT EXECUTED
5b5e0: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED
5b5e4: 2d41 ffa4 movel %d1,%fp@(-92) <== NOT EXECUTED
5b5e8: 4c40 2001 remul %d0,%d1,%d2 <== NOT EXECUTED
5b5ec: 2801 movel %d1,%d4 <== NOT EXECUTED
5b5ee: 6000 fe94 braw 5b484 <rtems_rfs_dir_del_entry+0x11a> <== NOT EXECUTED
eoffset += elength;
}
if (rc == 0)
{
rc = rtems_rfs_block_map_next_block (fs, &map, &block);
5b5f2: 486e ffa8 pea %fp@(-88) <== NOT EXECUTED
5b5f6: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
5b5fa: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b5fc: 4eb9 0005 9776 jsr 59776 <rtems_rfs_block_map_next_block> <== NOT EXECUTED
if (rc == ENXIO)
5b602: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5b606: 7206 moveq #6,%d1 <== NOT EXECUTED
5b608: b280 cmpl %d0,%d1 <== NOT EXECUTED
5b60a: 6700 01a4 beqw 5b7b0 <rtems_rfs_dir_del_entry+0x446> <== NOT EXECUTED
/*
* Only search if the offset is 0 else we are at that position.
*/
search = offset ? false : true;
while (rc == 0)
5b60e: 4a80 tstl %d0 <== NOT EXECUTED
5b610: 6700 fe40 beqw 5b452 <rtems_rfs_dir_del_entry+0xe8> <== NOT EXECUTED
5b614: 2a00 movel %d0,%d5 <== NOT EXECUTED
5b616: 6000 ff44 braw 5b55c <rtems_rfs_dir_del_entry+0x1f2> <== NOT EXECUTED
5b61a: 2a6e ffa4 moveal %fp@(-92),%a5 <== NOT EXECUTED
}
if (ino == rtems_rfs_dir_entry_ino (entry))
{
uint32_t remaining;
remaining = rtems_rfs_fs_block_size (fs) - (eoffset + elength);
5b61e: 2003 movel %d3,%d0 <== NOT EXECUTED
5b620: d084 addl %d4,%d0 <== NOT EXECUTED
5b622: 9bc0 subal %d0,%a5 <== NOT EXECUTED
* block and it is the last block in the map shrink the map.
*
* @note We could check again to see if the new end block in the map is
* also empty. This way we could clean up an empty directory.
*/
elength = rtems_rfs_dir_entry_length (entry);
5b624: 4282 clrl %d2 <== NOT EXECUTED
if (ino == rtems_rfs_dir_entry_ino (entry))
{
uint32_t remaining;
remaining = rtems_rfs_fs_block_size (fs) - (eoffset + elength);
memmove (entry, entry + elength, remaining);
5b626: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5b628: 4872 3800 pea %a2@(00000000,%d3:l) <== NOT EXECUTED
5b62c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5b62e: 4eb9 0006 14a8 jsr 614a8 <memmove> <== NOT EXECUTED
memset (entry + remaining, 0xff, elength);
5b634: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5b636: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
5b63a: 4872 d800 pea %a2@(00000000,%a5:l) <== NOT EXECUTED
5b63e: 4eb9 0006 159c jsr 6159c <memset> <== NOT EXECUTED
* block and it is the last block in the map shrink the map.
*
* @note We could check again to see if the new end block in the map is
* also empty. This way we could clean up an empty directory.
*/
elength = rtems_rfs_dir_entry_length (entry);
5b644: 4280 clrl %d0 <== NOT EXECUTED
5b646: 142a 0008 moveb %a2@(8),%d2 <== NOT EXECUTED
5b64a: 102a 0009 moveb %a2@(9),%d0 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
5b64e: 2f3c 4000 0000 movel #1073741824,%sp@- <== NOT EXECUTED
* block and it is the last block in the map shrink the map.
*
* @note We could check again to see if the new end block in the map is
* also empty. This way we could clean up an empty directory.
*/
elength = rtems_rfs_dir_entry_length (entry);
5b654: e18a lsll #8,%d2 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
5b656: 42a7 clrl %sp@- <== NOT EXECUTED
* block and it is the last block in the map shrink the map.
*
* @note We could check again to see if the new end block in the map is
* also empty. This way we could clean up an empty directory.
*/
elength = rtems_rfs_dir_entry_length (entry);
5b658: 8480 orl %d0,%d2 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
5b65a: 4e94 jsr %a4@ <== NOT EXECUTED
5b65c: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
5b660: 4a00 tstb %d0 <== NOT EXECUTED
5b662: 673e beqs 5b6a2 <rtems_rfs_dir_del_entry+0x338> <== NOT EXECUTED
printf ("rtems-rfs: dir-del-entry: "
"last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
" offset=%d last=%s\n",
ino, elength, block, eoffset,
rtems_rfs_block_map_last (&map) ? "yes" : "no");
5b664: 202e ffc4 movel %fp@(-60),%d0 <== NOT EXECUTED
5b668: 222e ffbc movel %fp@(-68),%d1 <== NOT EXECUTED
* also empty. This way we could clean up an empty directory.
*/
elength = rtems_rfs_dir_entry_length (entry);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
printf ("rtems-rfs: dir-del-entry: "
5b66c: 4a80 tstl %d0 <== NOT EXECUTED
5b66e: 6606 bnes 5b676 <rtems_rfs_dir_del_entry+0x30c> <== NOT EXECUTED
"last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
" offset=%d last=%s\n",
ino, elength, block, eoffset,
rtems_rfs_block_map_last (&map) ? "yes" : "no");
5b670: 4a81 tstl %d1 <== NOT EXECUTED
5b672: 6700 00ee beqw 5b762 <rtems_rfs_dir_del_entry+0x3f8> <== NOT EXECUTED
5b676: 5381 subql #1,%d1 <== NOT EXECUTED
5b678: b280 cmpl %d0,%d1 <== NOT EXECUTED
5b67a: 6700 00e6 beqw 5b762 <rtems_rfs_dir_del_entry+0x3f8> <== NOT EXECUTED
* also empty. This way we could clean up an empty directory.
*/
elength = rtems_rfs_dir_entry_length (entry);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
printf ("rtems-rfs: dir-del-entry: "
5b67e: 203c 0007 1dff movel #466431,%d0 <== NOT EXECUTED
5b684: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b686: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5b688: 2f2e ffa8 movel %fp@(-88),%sp@- <== NOT EXECUTED
5b68c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b68e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5b692: 4879 0007 2b63 pea 72b63 <CSWTCH.2+0xa9b> <== NOT EXECUTED
5b698: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b69e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
"last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
" offset=%d last=%s\n",
ino, elength, block, eoffset,
rtems_rfs_block_map_last (&map) ? "yes" : "no");
if ((elength == RTEMS_RFS_DIR_ENTRY_EMPTY) &&
5b6a2: 0c82 0000 ffff cmpil #65535,%d2 <== NOT EXECUTED
5b6a8: 6736 beqs 5b6e0 <rtems_rfs_dir_del_entry+0x376> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b6aa: 486e ffac pea %fp@(-84) <== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (&buffer);
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return 0;
5b6ae: 4285 clrl %d5 <== NOT EXECUTED
"block map shrink failed for ino %" PRIu32 ": %d: %s\n",
rtems_rfs_inode_ino (dir), rc, strerror (rc));
}
}
rtems_rfs_buffer_mark_dirty (&buffer);
5b6b0: 7001 moveq #1,%d0 <== NOT EXECUTED
5b6b2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b6b4: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
5b6b8: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b6be: 4201 clrb %d1 <== NOT EXECUTED
5b6c0: 1d41 ffac moveb %d1,%fp@(-84) <== NOT EXECUTED
rc = ENOENT;
}
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
5b6c4: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
handle->bnum = 0;
5b6c8: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
5b6cc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
handle->buffer = NULL;
5b6ce: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
5b6d2: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5b6d8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5b6dc: 6000 fea8 braw 5b586 <rtems_rfs_dir_del_entry+0x21c> <== NOT EXECUTED
"last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
" offset=%d last=%s\n",
ino, elength, block, eoffset,
rtems_rfs_block_map_last (&map) ? "yes" : "no");
if ((elength == RTEMS_RFS_DIR_ENTRY_EMPTY) &&
5b6e0: 4a84 tstl %d4 <== NOT EXECUTED
5b6e2: 66c6 bnes 5b6aa <rtems_rfs_dir_del_entry+0x340> <== NOT EXECUTED
(eoffset == 0) && rtems_rfs_block_map_last (&map))
5b6e4: 202e ffc4 movel %fp@(-60),%d0 <== NOT EXECUTED
5b6e8: 222e ffbc movel %fp@(-68),%d1 <== NOT EXECUTED
5b6ec: 4a80 tstl %d0 <== NOT EXECUTED
5b6ee: 6600 009a bnew 5b78a <rtems_rfs_dir_del_entry+0x420> <== NOT EXECUTED
5b6f2: 4a81 tstl %d1 <== NOT EXECUTED
5b6f4: 6600 0094 bnew 5b78a <rtems_rfs_dir_del_entry+0x420> <== NOT EXECUTED
{
rc = rtems_rfs_block_map_shrink (fs, &map, 1);
5b6f8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5b6fc: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
5b700: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b702: 4eb9 0005 9b44 jsr 59b44 <rtems_rfs_block_map_shrink> <== NOT EXECUTED
if (rc > 0)
5b708: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_rfs_block_map_last (&map) ? "yes" : "no");
if ((elength == RTEMS_RFS_DIR_ENTRY_EMPTY) &&
(eoffset == 0) && rtems_rfs_block_map_last (&map))
{
rc = rtems_rfs_block_map_shrink (fs, &map, 1);
5b70c: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5b70e: 6f9a bles 5b6aa <rtems_rfs_dir_del_entry+0x340> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
5b710: 2f3c 4000 0000 movel #1073741824,%sp@- <== NOT EXECUTED
5b716: 42a7 clrl %sp@- <== NOT EXECUTED
5b718: 4e94 jsr %a4@ <== NOT EXECUTED
5b71a: 508f addql #8,%sp <== NOT EXECUTED
5b71c: 4a00 tstb %d0 <== NOT EXECUTED
5b71e: 678a beqs 5b6aa <rtems_rfs_dir_del_entry+0x340> <== NOT EXECUTED
printf ("rtems-rfs: dir-del-entry: "
5b720: 2f02 movel %d2,%sp@- <== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (&buffer);
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return 0;
5b722: 4285 clrl %d5 <== NOT EXECUTED
{
rc = rtems_rfs_block_map_shrink (fs, &map, 1);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
printf ("rtems-rfs: dir-del-entry: "
5b724: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5b72a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b72e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b730: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b732: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5b736: 4879 0007 2bc2 pea 72bc2 <CSWTCH.2+0xafa> <== NOT EXECUTED
5b73c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b742: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b746: 486e ffac pea %fp@(-84) <== NOT EXECUTED
"block map shrink failed for ino %" PRIu32 ": %d: %s\n",
rtems_rfs_inode_ino (dir), rc, strerror (rc));
}
}
rtems_rfs_buffer_mark_dirty (&buffer);
5b74a: 7001 moveq #1,%d0 <== NOT EXECUTED
5b74c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b74e: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
5b752: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b758: 4201 clrb %d1 <== NOT EXECUTED
5b75a: 1d41 ffac moveb %d1,%fp@(-84) <== NOT EXECUTED
5b75e: 6000 ff64 braw 5b6c4 <rtems_rfs_dir_del_entry+0x35a> <== NOT EXECUTED
* also empty. This way we could clean up an empty directory.
*/
elength = rtems_rfs_dir_entry_length (entry);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
printf ("rtems-rfs: dir-del-entry: "
5b762: 203c 0007 19c4 movel #465348,%d0 <== NOT EXECUTED
5b768: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b76a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5b76c: 2f2e ffa8 movel %fp@(-88),%sp@- <== NOT EXECUTED
5b770: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b772: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5b776: 4879 0007 2b63 pea 72b63 <CSWTCH.2+0xa9b> <== NOT EXECUTED
5b77c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b782: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
5b786: 6000 ff1a braw 5b6a2 <rtems_rfs_dir_del_entry+0x338> <== NOT EXECUTED
" offset=%d last=%s\n",
ino, elength, block, eoffset,
rtems_rfs_block_map_last (&map) ? "yes" : "no");
if ((elength == RTEMS_RFS_DIR_ENTRY_EMPTY) &&
(eoffset == 0) && rtems_rfs_block_map_last (&map))
5b78a: 5381 subql #1,%d1 <== NOT EXECUTED
5b78c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5b78e: 6700 ff68 beqw 5b6f8 <rtems_rfs_dir_del_entry+0x38e> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b792: 486e ffac pea %fp@(-84) <== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (&buffer);
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return 0;
5b796: 4285 clrl %d5 <== NOT EXECUTED
"block map shrink failed for ino %" PRIu32 ": %d: %s\n",
rtems_rfs_inode_ino (dir), rc, strerror (rc));
}
}
rtems_rfs_buffer_mark_dirty (&buffer);
5b798: 7001 moveq #1,%d0 <== NOT EXECUTED
5b79a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b79c: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
5b7a0: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b7a6: 4201 clrb %d1 <== NOT EXECUTED
5b7a8: 1d41 ffac moveb %d1,%fp@(-84) <== NOT EXECUTED
5b7ac: 6000 ff16 braw 5b6c4 <rtems_rfs_dir_del_entry+0x35a> <== NOT EXECUTED
if (rc == 0)
{
rc = rtems_rfs_block_map_next_block (fs, &map, &block);
if (rc == ENXIO)
rc = ENOENT;
5b7b0: 7a02 moveq #2,%d5 <== NOT EXECUTED
5b7b2: 6000 fda8 braw 5b55c <rtems_rfs_dir_del_entry+0x1f2> <== NOT EXECUTED
5b7b6: 2a00 movel %d0,%d5 <== NOT EXECUTED
int eoffset;
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
5b7b8: 2f3c 4000 0000 movel #1073741824,%sp@- <== NOT EXECUTED
5b7be: 42a7 clrl %sp@- <== NOT EXECUTED
5b7c0: 4e94 jsr %a4@ <== NOT EXECUTED
5b7c2: 508f addql #8,%sp <== NOT EXECUTED
5b7c4: 4a00 tstb %d0 <== NOT EXECUTED
5b7c6: 6700 fd94 beqw 5b55c <rtems_rfs_dir_del_entry+0x1f2> <== NOT EXECUTED
printf ("rtems-rfs: dir-del-entry: "
5b7ca: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5b7cc: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5b7d2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b7d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b7d8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5b7da: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5b7de: 4879 0007 2ad0 pea 72ad0 <CSWTCH.2+0xa08> <== NOT EXECUTED
5b7e4: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b7ea: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5b7ee: 6000 fd6c braw 5b55c <rtems_rfs_dir_del_entry+0x1f2> <== NOT EXECUTED
0005bbfa <rtems_rfs_dir_empty>:
}
int
rtems_rfs_dir_empty (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* dir)
{
5bbfa: 4e56 ff80 linkw %fp,#-128 <== NOT EXECUTED
5bbfe: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_rfs_buffer_handle buffer;
rtems_rfs_block_no block;
bool empty;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
5bc02: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED
}
int
rtems_rfs_dir_empty (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* dir)
{
5bc08: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_rfs_buffer_handle buffer;
rtems_rfs_block_no block;
bool empty;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
5bc0c: 47f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a3 <== NOT EXECUTED
5bc12: 42a7 clrl %sp@- <== NOT EXECUTED
5bc14: 4e93 jsr %a3@ <== NOT EXECUTED
5bc16: 508f addql #8,%sp <== NOT EXECUTED
5bc18: 4a00 tstb %d0 <== NOT EXECUTED
5bc1a: 662c bnes 5bc48 <rtems_rfs_dir_empty+0x4e> <== NOT EXECUTED
printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir));
empty = true;
rc = rtems_rfs_block_map_open (fs, dir, &map);
5bc1c: 2a0e movel %fp,%d5 <== NOT EXECUTED
5bc1e: 0685 ffff ffb6 addil #-74,%d5 <== NOT EXECUTED
5bc24: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5bc26: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5bc2a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bc2c: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5bc32: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir));
empty = true;
rc = rtems_rfs_block_map_open (fs, dir, &map);
5bc36: 2a40 moveal %d0,%a5 <== NOT EXECUTED
if (rc > 0)
5bc38: 4a80 tstl %d0 <== NOT EXECUTED
5bc3a: 6f42 bles 5bc7e <rtems_rfs_dir_empty+0x84> <== NOT EXECUTED
rc = ENOTEMPTY;
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5bc3c: 200d movel %a5,%d0 <== NOT EXECUTED
5bc3e: 4cee 3cfc ff80 moveml %fp@(-128),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5bc44: 4e5e unlk %fp <== NOT EXECUTED
5bc46: 4e75 rts <== NOT EXECUTED
rtems_rfs_block_no block;
bool empty;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir));
5bc48: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
empty = true;
rc = rtems_rfs_block_map_open (fs, dir, &map);
5bc4c: 2a0e movel %fp,%d5 <== NOT EXECUTED
5bc4e: 0685 ffff ffb6 addil #-74,%d5 <== NOT EXECUTED
rtems_rfs_block_no block;
bool empty;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir));
5bc54: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5bc58: 4879 0007 2ce2 pea 72ce2 <CSWTCH.2+0xc1a> <== NOT EXECUTED
5bc5e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5bc64: 508f addql #8,%sp <== NOT EXECUTED
empty = true;
rc = rtems_rfs_block_map_open (fs, dir, &map);
5bc66: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5bc68: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5bc6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bc6e: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5bc74: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir));
empty = true;
rc = rtems_rfs_block_map_open (fs, dir, &map);
5bc78: 2a40 moveal %d0,%a5 <== NOT EXECUTED
if (rc > 0)
5bc7a: 4a80 tstl %d0 <== NOT EXECUTED
5bc7c: 6ebe bgts 5bc3c <rtems_rfs_dir_empty+0x42> <== NOT EXECUTED
return rc;
rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);
5bc7e: 486e ffa8 pea %fp@(-88) <== NOT EXECUTED
5bc82: 42a7 clrl %sp@- <== NOT EXECUTED
5bc84: 42a7 clrl %sp@- <== NOT EXECUTED
5bc86: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5bc88: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bc8a: 4eb9 0005 96f8 jsr 596f8 <rtems_rfs_block_map_seek> <== NOT EXECUTED
if (rc > 0)
5bc90: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, dir, &map);
if (rc > 0)
return rc;
rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);
5bc94: 2a40 moveal %d0,%a5 <== NOT EXECUTED
if (rc > 0)
5bc96: 4a80 tstl %d0 <== NOT EXECUTED
5bc98: 6e00 0202 bgtw 5be9c <rtems_rfs_dir_empty+0x2a2> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5bc9c: 2a6e 000c moveal %fp@(12),%a5 <== NOT EXECUTED
5bca0: 49f9 0005 a19a lea 5a19a <rtems_rfs_buffer_handle_request>,%a4<== NOT EXECUTED
5bca6: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5bca8: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5bcac: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5bcb0: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
while (empty)
{
uint8_t* entry;
int offset;
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);
5bcb4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5bcb8: 2f2e ffa8 movel %fp@(-88),%sp@- <== NOT EXECUTED
5bcbc: 486e ffac pea %fp@(-84) <== NOT EXECUTED
5bcc0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bcc2: 4e94 jsr %a4@ <== NOT EXECUTED
if (rc > 0)
5bcc4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5bcc8: 4a80 tstl %d0 <== NOT EXECUTED
5bcca: 6e00 01e8 bgtw 5beb4 <rtems_rfs_dir_empty+0x2ba> <== NOT EXECUTED
break;
entry = rtems_rfs_buffer_data (&buffer);
5bcce: 206e ffb2 moveal %fp@(-78),%a0 <== NOT EXECUTED
offset = 0;
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5bcd2: 226a 0008 moveal %a2@(8),%a1 <== NOT EXECUTED
5bcd6: 43e9 fff6 lea %a1@(-10),%a1 <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);
if (rc > 0)
break;
entry = rtems_rfs_buffer_data (&buffer);
5bcda: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
offset = 0;
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5bcde: 4a89 tstl %a1 <== NOT EXECUTED
5bce0: 6700 00d4 beqw 5bdb6 <rtems_rfs_dir_empty+0x1bc> <== NOT EXECUTED
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
5bce4: 4283 clrl %d3 <== NOT EXECUTED
5bce6: 4281 clrl %d1 <== NOT EXECUTED
5bce8: 1610 moveb %a0@,%d3 <== NOT EXECUTED
5bcea: 1228 0002 moveb %a0@(2),%d1 <== NOT EXECUTED
5bcee: 7418 moveq #24,%d2 <== NOT EXECUTED
5bcf0: 4286 clrl %d6 <== NOT EXECUTED
5bcf2: 1c28 0003 moveb %a0@(3),%d6 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5bcf6: 4284 clrl %d4 <== NOT EXECUTED
5bcf8: 1828 0009 moveb %a0@(9),%d4 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5bcfc: e5ab lsll %d2,%d3 <== NOT EXECUTED
5bcfe: e189 lsll #8,%d1 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5bd00: 4282 clrl %d2 <== NOT EXECUTED
5bd02: 1428 0008 moveb %a0@(8),%d2 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5bd06: 8681 orl %d1,%d3 <== NOT EXECUTED
5bd08: 4281 clrl %d1 <== NOT EXECUTED
5bd0a: 1228 0001 moveb %a0@(1),%d1 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5bd0e: e18a lsll #8,%d2 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5bd10: 8686 orl %d6,%d3 <== NOT EXECUTED
5bd12: 4841 swap %d1 <== NOT EXECUTED
5bd14: 4241 clrw %d1 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5bd16: 8484 orl %d4,%d2 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5bd18: 8681 orl %d1,%d3 <== NOT EXECUTED
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
5bd1a: 0c82 0000 ffff cmpil #65535,%d2 <== NOT EXECUTED
5bd20: 6700 0094 beqw 5bdb6 <rtems_rfs_dir_empty+0x1bc> <== NOT EXECUTED
5bd24: 4284 clrl %d4 <== NOT EXECUTED
break;
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
5bd26: 720a moveq #10,%d1 <== NOT EXECUTED
5bd28: b282 cmpl %d2,%d1 <== NOT EXECUTED
5bd2a: 6c00 012a bgew 5be56 <rtems_rfs_dir_empty+0x25c> <== NOT EXECUTED
5bd2e: b4aa 001c cmpl %a2@(28),%d2 <== NOT EXECUTED
5bd32: 6400 0122 bccw 5be56 <rtems_rfs_dir_empty+0x25c> <== NOT EXECUTED
5bd36: 4a83 tstl %d3 <== NOT EXECUTED
5bd38: 6700 011c beqw 5be56 <rtems_rfs_dir_empty+0x25c> <== NOT EXECUTED
5bd3c: b6aa 0014 cmpl %a2@(20),%d3 <== NOT EXECUTED
5bd40: 6200 0114 bhiw 5be56 <rtems_rfs_dir_empty+0x25c> <== NOT EXECUTED
/*
* Ignore the current (.) and parent (..) entries. Anything else means
* the directory is not empty.
*/
if (((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 1)) ||
5bd44: 760b moveq #11,%d3 <== NOT EXECUTED
5bd46: b682 cmpl %d2,%d3 <== NOT EXECUTED
5bd48: 6700 00c8 beqw 5be12 <rtems_rfs_dir_empty+0x218> <== NOT EXECUTED
(entry[RTEMS_RFS_DIR_ENTRY_SIZE] != '.')) &&
5bd4c: 720c moveq #12,%d1 <== NOT EXECUTED
5bd4e: b282 cmpl %d2,%d1 <== NOT EXECUTED
5bd50: 6600 00d0 bnew 5be22 <rtems_rfs_dir_empty+0x228> <== NOT EXECUTED
((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 2)) ||
5bd54: 4281 clrl %d1 <== NOT EXECUTED
5bd56: 1228 000a moveb %a0@(10),%d1 <== NOT EXECUTED
5bd5a: 762e moveq #46,%d3 <== NOT EXECUTED
5bd5c: b681 cmpl %d1,%d3 <== NOT EXECUTED
5bd5e: 6600 00c2 bnew 5be22 <rtems_rfs_dir_empty+0x228> <== NOT EXECUTED
(entry[RTEMS_RFS_DIR_ENTRY_SIZE] != '.') ||
5bd62: 4281 clrl %d1 <== NOT EXECUTED
5bd64: 1228 000b moveb %a0@(11),%d1 <== NOT EXECUTED
5bd68: b681 cmpl %d1,%d3 <== NOT EXECUTED
5bd6a: 6600 00b6 bnew 5be22 <rtems_rfs_dir_empty+0x228> <== NOT EXECUTED
{
empty = false;
break;
}
entry += elength;
5bd6e: d1c2 addal %d2,%a0 <== NOT EXECUTED
offset += elength;
5bd70: d882 addl %d2,%d4 <== NOT EXECUTED
break;
entry = rtems_rfs_buffer_data (&buffer);
offset = 0;
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5bd72: b3c4 cmpal %d4,%a1 <== NOT EXECUTED
5bd74: 6340 blss 5bdb6 <rtems_rfs_dir_empty+0x1bc> <== NOT EXECUTED
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
5bd76: 4283 clrl %d3 <== NOT EXECUTED
5bd78: 4281 clrl %d1 <== NOT EXECUTED
5bd7a: 1610 moveb %a0@,%d3 <== NOT EXECUTED
5bd7c: 1228 0001 moveb %a0@(1),%d1 <== NOT EXECUTED
5bd80: 7418 moveq #24,%d2 <== NOT EXECUTED
5bd82: 4287 clrl %d7 <== NOT EXECUTED
5bd84: 1e28 0003 moveb %a0@(3),%d7 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5bd88: 4286 clrl %d6 <== NOT EXECUTED
5bd8a: 1c28 0009 moveb %a0@(9),%d6 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5bd8e: e5ab lsll %d2,%d3 <== NOT EXECUTED
5bd90: 4841 swap %d1 <== NOT EXECUTED
5bd92: 4241 clrw %d1 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5bd94: 4282 clrl %d2 <== NOT EXECUTED
5bd96: 1428 0008 moveb %a0@(8),%d2 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5bd9a: 8681 orl %d1,%d3 <== NOT EXECUTED
5bd9c: 4281 clrl %d1 <== NOT EXECUTED
5bd9e: 1228 0002 moveb %a0@(2),%d1 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5bda2: e18a lsll #8,%d2 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5bda4: 8687 orl %d7,%d3 <== NOT EXECUTED
5bda6: e189 lsll #8,%d1 <== NOT EXECUTED
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
elength = rtems_rfs_dir_entry_length (entry);
5bda8: 8486 orl %d6,%d2 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5bdaa: 8681 orl %d1,%d3 <== NOT EXECUTED
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
5bdac: 0c82 0000 ffff cmpil #65535,%d2 <== NOT EXECUTED
5bdb2: 6600 ff72 bnew 5bd26 <rtems_rfs_dir_empty+0x12c> <== NOT EXECUTED
offset += elength;
}
if (empty)
{
rc = rtems_rfs_block_map_next_block (fs, &map, &block);
5bdb6: 486e ffa8 pea %fp@(-88) <== NOT EXECUTED
5bdba: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5bdbc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bdbe: 4eb9 0005 9776 jsr 59776 <rtems_rfs_block_map_next_block> <== NOT EXECUTED
if (rc > 0)
5bdc4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5bdc8: 4a80 tstl %d0 <== NOT EXECUTED
5bdca: 6f00 fee8 blew 5bcb4 <rtems_rfs_dir_empty+0xba> <== NOT EXECUTED
5bdce: 2a40 moveal %d0,%a5 <== NOT EXECUTED
{
if (rc == ENXIO)
5bdd0: 7006 moveq #6,%d0 <== NOT EXECUTED
5bdd2: b08d cmpl %a5,%d0 <== NOT EXECUTED
5bdd4: 56c0 sne %d0 <== NOT EXECUTED
5bdd6: 220d movel %a5,%d1 <== NOT EXECUTED
5bdd8: 49c0 extbl %d0 <== NOT EXECUTED
5bdda: c280 andl %d0,%d1 <== NOT EXECUTED
5bddc: 2a41 moveal %d1,%a5 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5bdde: 486e ffac pea %fp@(-84) <== NOT EXECUTED
handle->dirty = false;
5bde2: 4202 clrb %d2 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5bde4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bde6: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5bdec: 1d42 ffac moveb %d2,%fp@(-84) <== NOT EXECUTED
if ((rc == 0) && !empty)
rc = ENOTEMPTY;
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
5bdf0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
handle->bnum = 0;
5bdf2: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
5bdf6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
handle->buffer = NULL;
5bdf8: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
5bdfc: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5be02: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return rc;
}
5be06: 200d movel %a5,%d0 <== NOT EXECUTED
5be08: 4cee 3cfc ff80 moveml %fp@(-128),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5be0e: 4e5e unlk %fp <== NOT EXECUTED
5be10: 4e75 rts <== NOT EXECUTED
/*
* Ignore the current (.) and parent (..) entries. Anything else means
* the directory is not empty.
*/
if (((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 1)) ||
5be12: 4281 clrl %d1 <== NOT EXECUTED
5be14: 1228 000a moveb %a0@(10),%d1 <== NOT EXECUTED
5be18: 163c 002e moveb #46,%d3 <== NOT EXECUTED
5be1c: b681 cmpl %d1,%d3 <== NOT EXECUTED
5be1e: 6700 ff4e beqw 5bd6e <rtems_rfs_dir_empty+0x174> <== NOT EXECUTED
5be22: 2a40 moveal %d0,%a5 <== NOT EXECUTED
break;
}
}
}
if ((rc == 0) && !empty)
5be24: 4a80 tstl %d0 <== NOT EXECUTED
5be26: 66b6 bnes 5bdde <rtems_rfs_dir_empty+0x1e4> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5be28: 486e ffac pea %fp@(-84) <== NOT EXECUTED
rc = ENOTEMPTY;
5be2c: 3a7c 005a moveaw #90,%a5 <== NOT EXECUTED
handle->dirty = false;
5be30: 4202 clrb %d2 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5be32: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5be34: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5be3a: 1d42 ffac moveb %d2,%fp@(-84) <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
5be3e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
handle->bnum = 0;
5be40: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
5be44: 2f0a movel %a2,%sp@- <== NOT EXECUTED
handle->buffer = NULL;
5be46: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
5be4a: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5be50: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5be54: 60b0 bras 5be06 <rtems_rfs_dir_empty+0x20c> <== NOT EXECUTED
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
break;
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_EMPTY))
5be56: 42a7 clrl %sp@- <== NOT EXECUTED
5be58: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5be5c: 4e93 jsr %a3@ <== NOT EXECUTED
5be5e: 508f addql #8,%sp <== NOT EXECUTED
5be60: 4a00 tstb %d0 <== NOT EXECUTED
5be62: 6700 ff52 beqw 5bdb6 <rtems_rfs_dir_empty+0x1bc> <== NOT EXECUTED
printf ("rtems-rfs: dir-empty: "
5be66: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5be68: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5be6a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5be6c: 2f2d 0008 movel %a5@(8),%sp@- <== NOT EXECUTED
5be70: 4879 0007 2d01 pea 72d01 <CSWTCH.2+0xc39> <== NOT EXECUTED
5be76: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5be7c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
offset += elength;
}
if (empty)
{
rc = rtems_rfs_block_map_next_block (fs, &map, &block);
5be80: 486e ffa8 pea %fp@(-88) <== NOT EXECUTED
5be84: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5be86: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5be88: 4eb9 0005 9776 jsr 59776 <rtems_rfs_block_map_next_block> <== NOT EXECUTED
if (rc > 0)
5be8e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5be92: 4a80 tstl %d0 <== NOT EXECUTED
5be94: 6f00 fe1e blew 5bcb4 <rtems_rfs_dir_empty+0xba> <== NOT EXECUTED
5be98: 6000 ff34 braw 5bdce <rtems_rfs_dir_empty+0x1d4> <== NOT EXECUTED
return rc;
rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);
if (rc > 0)
{
rtems_rfs_block_map_close (fs, &map);
5be9c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5be9e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bea0: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5bea6: 508f addql #8,%sp <== NOT EXECUTED
rc = ENOTEMPTY;
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5bea8: 200d movel %a5,%d0 <== NOT EXECUTED
5beaa: 4cee 3cfc ff80 moveml %fp@(-128),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5beb0: 4e5e unlk %fp <== NOT EXECUTED
5beb2: 4e75 rts <== NOT EXECUTED
5beb4: 2a40 moveal %d0,%a5 <== NOT EXECUTED
5beb6: 6000 ff26 braw 5bdde <rtems_rfs_dir_empty+0x1e4> <== NOT EXECUTED
...
000600e8 <rtems_rfs_dir_hash>:
} else { /* need to read the key one byte at a time */
const uint8_t *k = (const uint8_t *)key;
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
600e8: 700c moveq #12,%d0
*/
#define initval (20010928)
uint32_t
rtems_rfs_dir_hash (const void *key, size_t length)
{
600ea: 4e56 ffe8 linkw %fp,#-24
600ee: 226e 000c moveal %fp@(12),%a1
600f2: 48d7 00fc moveml %d2-%d7,%sp@
uint32_t a,b,c; /* internal state */
union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */
/* Set up the internal state */
a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
600f6: 2809 movel %a1,%d4
600f8: 0684 dfdf 169f addil #-539027809,%d4
} else { /* need to read the key one byte at a time */
const uint8_t *k = (const uint8_t *)key;
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
600fe: 2204 movel %d4,%d1
60100: 2604 movel %d4,%d3
60102: 206e 0008 moveal %fp@(8),%a0
60106: b089 cmpl %a1,%d0
60108: 6400 00fc bccw 60206 <rtems_rfs_dir_hash+0x11e>
b += k[4];
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
6010c: 4280 clrl %d0 <== NOT EXECUTED
c += ((uint32_t)k[10])<<16;
6010e: 4285 clrl %d5 <== NOT EXECUTED
b += k[4];
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
60110: 1028 0009 moveb %a0@(9),%d0 <== NOT EXECUTED
c += ((uint32_t)k[10])<<16;
60114: 1a28 000a moveb %a0@(10),%d5 <== NOT EXECUTED
a += ((uint32_t)k[3])<<24;
b += k[4];
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
c += k[8];
60118: 4286 clrl %d6 <== NOT EXECUTED
6011a: 1c28 0008 moveb %a0@(8),%d6 <== NOT EXECUTED
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
6011e: 4282 clrl %d2 <== NOT EXECUTED
60120: 1428 000b moveb %a0@(11),%d2 <== NOT EXECUTED
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
{
a += k[0];
a += ((uint32_t)k[1])<<8;
60124: 4287 clrl %d7 <== NOT EXECUTED
60126: 1e28 0001 moveb %a0@(1),%d7 <== NOT EXECUTED
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
length -= 12;
6012a: 43e9 fff4 lea %a1@(-12),%a1 <== NOT EXECUTED
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
6012e: 4845 swap %d5 <== NOT EXECUTED
60130: 4245 clrw %d5 <== NOT EXECUTED
b += k[4];
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
60132: e188 lsll #8,%d0 <== NOT EXECUTED
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
{
a += k[0];
a += ((uint32_t)k[1])<<8;
60134: e18f lsll #8,%d7 <== NOT EXECUTED
a += ((uint32_t)k[3])<<24;
b += k[4];
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
c += k[8];
60136: d085 addl %d5,%d0 <== NOT EXECUTED
c += ((uint32_t)k[9])<<8;
60138: d086 addl %d6,%d0 <== NOT EXECUTED
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
{
a += k[0];
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
6013a: 1c28 0002 moveb %a0@(2),%d6 <== NOT EXECUTED
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
6013e: 7a18 moveq #24,%d5 <== NOT EXECUTED
60140: ebaa lsll %d5,%d2 <== NOT EXECUTED
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
{
a += k[0];
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
60142: 4846 swap %d6 <== NOT EXECUTED
60144: 4246 clrw %d6 <== NOT EXECUTED
a += ((uint32_t)k[3])<<24;
60146: 4285 clrl %d5 <== NOT EXECUTED
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
60148: d480 addl %d0,%d2 <== NOT EXECUTED
const uint8_t *k = (const uint8_t *)key;
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
{
a += k[0];
6014a: 2007 movel %d7,%d0 <== NOT EXECUTED
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
6014c: d882 addl %d2,%d4 <== NOT EXECUTED
const uint8_t *k = (const uint8_t *)key;
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
{
a += k[0];
6014e: d086 addl %d6,%d0 <== NOT EXECUTED
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
a += ((uint32_t)k[3])<<24;
60150: 1a28 0003 moveb %a0@(3),%d5 <== NOT EXECUTED
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
60154: 2e04 movel %d4,%d7 <== NOT EXECUTED
60156: 7c1c moveq #28,%d6 <== NOT EXECUTED
60158: ecaf lsrl %d6,%d7 <== NOT EXECUTED
while (length > 12)
{
a += k[0];
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
a += ((uint32_t)k[3])<<24;
6015a: 1c3c 0018 moveb #24,%d6 <== NOT EXECUTED
const uint8_t *k = (const uint8_t *)key;
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
{
a += k[0];
6015e: 4282 clrl %d2 <== NOT EXECUTED
60160: 1410 moveb %a0@,%d2 <== NOT EXECUTED
a += ((uint32_t)k[1])<<8;
60162: d082 addl %d2,%d0 <== NOT EXECUTED
a += ((uint32_t)k[2])<<16;
a += ((uint32_t)k[3])<<24;
b += k[4];
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
60164: 1428 0007 moveb %a0@(7),%d2 <== NOT EXECUTED
while (length > 12)
{
a += k[0];
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
a += ((uint32_t)k[3])<<24;
60168: edad lsll %d6,%d5 <== NOT EXECUTED
b += k[4];
b += ((uint32_t)k[5])<<8;
6016a: 4286 clrl %d6 <== NOT EXECUTED
6016c: 1c28 0005 moveb %a0@(5),%d6 <== NOT EXECUTED
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
{
a += k[0];
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
60170: d085 addl %d5,%d0 <== NOT EXECUTED
a += ((uint32_t)k[3])<<24;
60172: 9084 subl %d4,%d0 <== NOT EXECUTED
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
60174: d083 addl %d3,%d0 <== NOT EXECUTED
60176: 2604 movel %d4,%d3 <== NOT EXECUTED
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
a += ((uint32_t)k[3])<<24;
b += k[4];
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
60178: 4285 clrl %d5 <== NOT EXECUTED
6017a: 1a28 0006 moveb %a0@(6),%d5 <== NOT EXECUTED
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
6017e: e98b lsll #4,%d3 <== NOT EXECUTED
a += k[0];
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
a += ((uint32_t)k[3])<<24;
b += k[4];
b += ((uint32_t)k[5])<<8;
60180: e18e lsll #8,%d6 <== NOT EXECUTED
b += ((uint32_t)k[6])<<16;
60182: 4845 swap %d5 <== NOT EXECUTED
60184: 4245 clrw %d5 <== NOT EXECUTED
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
60186: 8687 orl %d7,%d3 <== NOT EXECUTED
{
a += k[0];
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
a += ((uint32_t)k[3])<<24;
b += k[4];
60188: 4287 clrl %d7 <== NOT EXECUTED
6018a: 1e28 0004 moveb %a0@(4),%d7 <== NOT EXECUTED
6018e: da86 addl %d6,%d5 <== NOT EXECUTED
b += ((uint32_t)k[5])<<8;
60190: da87 addl %d7,%d5 <== NOT EXECUTED
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
60192: 7c18 moveq #24,%d6 <== NOT EXECUTED
length -= 12;
k += 12;
60194: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
60198: b780 eorl %d3,%d0 <== NOT EXECUTED
a += ((uint32_t)k[2])<<16;
a += ((uint32_t)k[3])<<24;
b += k[4];
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
6019a: 7618 moveq #24,%d3 <== NOT EXECUTED
6019c: e7aa lsll %d3,%d2 <== NOT EXECUTED
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
6019e: 2e00 movel %d0,%d7 <== NOT EXECUTED
601a0: 2600 movel %d0,%d3 <== NOT EXECUTED
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
a += ((uint32_t)k[3])<<24;
b += k[4];
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
601a2: d485 addl %d5,%d2 <== NOT EXECUTED
b += ((uint32_t)k[7])<<24;
601a4: d282 addl %d2,%d1 <== NOT EXECUTED
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
601a6: 2401 movel %d1,%d2 <== NOT EXECUTED
601a8: 9480 subl %d0,%d2 <== NOT EXECUTED
601aa: 7a1a moveq #26,%d5 <== NOT EXECUTED
601ac: eaaf lsrl %d5,%d7 <== NOT EXECUTED
601ae: d881 addl %d1,%d4 <== NOT EXECUTED
601b0: d684 addl %d4,%d3 <== NOT EXECUTED
601b2: 1a3c 000d moveb #13,%d5 <== NOT EXECUTED
601b6: ed88 lsll #6,%d0 <== NOT EXECUTED
601b8: 8087 orl %d7,%d0 <== NOT EXECUTED
601ba: b580 eorl %d2,%d0 <== NOT EXECUTED
601bc: 2400 movel %d0,%d2 <== NOT EXECUTED
601be: 2200 movel %d0,%d1 <== NOT EXECUTED
601c0: eca9 lsrl %d6,%d1 <== NOT EXECUTED
601c2: 9880 subl %d0,%d4 <== NOT EXECUTED
601c4: d083 addl %d3,%d0 <== NOT EXECUTED
601c6: 1c3c 001c moveb #28,%d6 <== NOT EXECUTED
601ca: e18a lsll #8,%d2 <== NOT EXECUTED
601cc: 8481 orl %d1,%d2 <== NOT EXECUTED
601ce: 2203 movel %d3,%d1 <== NOT EXECUTED
601d0: b982 eorl %d4,%d2 <== NOT EXECUTED
601d2: 7813 moveq #19,%d4 <== NOT EXECUTED
601d4: 2602 movel %d2,%d3 <== NOT EXECUTED
601d6: 9282 subl %d2,%d1 <== NOT EXECUTED
601d8: 4843 swap %d3 <== NOT EXECUTED
601da: d480 addl %d0,%d2 <== NOT EXECUTED
601dc: b383 eorl %d1,%d3 <== NOT EXECUTED
601de: 2203 movel %d3,%d1 <== NOT EXECUTED
601e0: 9083 subl %d3,%d0 <== NOT EXECUTED
601e2: e9a9 lsll %d4,%d1 <== NOT EXECUTED
601e4: 2803 movel %d3,%d4 <== NOT EXECUTED
601e6: eaac lsrl %d5,%d4 <== NOT EXECUTED
601e8: d682 addl %d2,%d3 <== NOT EXECUTED
601ea: 8284 orl %d4,%d1 <== NOT EXECUTED
601ec: b181 eorl %d0,%d1 <== NOT EXECUTED
601ee: 2801 movel %d1,%d4 <== NOT EXECUTED
601f0: 2001 movel %d1,%d0 <== NOT EXECUTED
601f2: eca8 lsrl %d6,%d0 <== NOT EXECUTED
601f4: 9481 subl %d1,%d2 <== NOT EXECUTED
601f6: d283 addl %d3,%d1 <== NOT EXECUTED
601f8: e98c lsll #4,%d4 <== NOT EXECUTED
601fa: 8880 orl %d0,%d4 <== NOT EXECUTED
} else { /* need to read the key one byte at a time */
const uint8_t *k = (const uint8_t *)key;
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
601fc: 700c moveq #12,%d0 <== NOT EXECUTED
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
601fe: b584 eorl %d2,%d4 <== NOT EXECUTED
} else { /* need to read the key one byte at a time */
const uint8_t *k = (const uint8_t *)key;
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
60200: b089 cmpl %a1,%d0 <== NOT EXECUTED
60202: 6500 ff08 bcsw 6010c <rtems_rfs_dir_hash+0x24> <== NOT EXECUTED
length -= 12;
k += 12;
}
/*-------------------------------- last block: affect all 32 bits of (c) */
switch(length) /* all the case statements fall through */
60206: 740c moveq #12,%d2
60208: b489 cmpl %a1,%d2
6020a: 6500 011a bcsw 60326 <rtems_rfs_dir_hash+0x23e>
6020e: 303b 9a08 movew %pc@(60218 <rtems_rfs_dir_hash+0x130>,%a1:l:2),%d0
60212: 48c0 extl %d0
60214: 4efb 0802 jmp %pc@(60218 <rtems_rfs_dir_hash+0x130>,%d0:l)
60218: 010e .short 0x010e <== NOT EXECUTED
6021a: 0090 0086 007a oril #8781946,%d0 <== NOT EXECUTED
60220: 006e .short 0x006e <== NOT EXECUTED
60222: 0066 .short 0x0066 <== NOT EXECUTED
60224: 005c .short 0x005c <== NOT EXECUTED
60226: 0050 .short 0x0050 <== NOT EXECUTED
60228: 0044 .short 0x0044 <== NOT EXECUTED
6022a: 003c .short 0x003c <== NOT EXECUTED
6022c: 0032 .short 0x0032 <== NOT EXECUTED
6022e: 0026 .short 0x0026 <== NOT EXECUTED
60230: 001a .short 0x001a <== NOT EXECUTED
{
case 12: c+=((uint32_t)k[11])<<24;
60232: 4280 clrl %d0 <== NOT EXECUTED
60234: 1028 000b moveb %a0@(11),%d0 <== NOT EXECUTED
60238: 7a18 moveq #24,%d5 <== NOT EXECUTED
6023a: eba8 lsll %d5,%d0 <== NOT EXECUTED
6023c: d880 addl %d0,%d4 <== NOT EXECUTED
case 11: c+=((uint32_t)k[10])<<16;
6023e: 4280 clrl %d0 <== NOT EXECUTED
60240: 1028 000a moveb %a0@(10),%d0 <== NOT EXECUTED
60244: 4840 swap %d0 <== NOT EXECUTED
60246: 4240 clrw %d0 <== NOT EXECUTED
60248: d880 addl %d0,%d4 <== NOT EXECUTED
case 10: c+=((uint32_t)k[9])<<8;
6024a: 4280 clrl %d0 <== NOT EXECUTED
6024c: 1028 0009 moveb %a0@(9),%d0 <== NOT EXECUTED
60250: e188 lsll #8,%d0 <== NOT EXECUTED
60252: d880 addl %d0,%d4 <== NOT EXECUTED
case 9 : c+=k[8];
60254: 4280 clrl %d0 <== NOT EXECUTED
60256: 1028 0008 moveb %a0@(8),%d0 <== NOT EXECUTED
6025a: d880 addl %d0,%d4 <== NOT EXECUTED
case 8 : b+=((uint32_t)k[7])<<24;
6025c: 4280 clrl %d0 <== NOT EXECUTED
6025e: 1028 0007 moveb %a0@(7),%d0 <== NOT EXECUTED
60262: 7c18 moveq #24,%d6 <== NOT EXECUTED
60264: eda8 lsll %d6,%d0 <== NOT EXECUTED
60266: d280 addl %d0,%d1 <== NOT EXECUTED
case 7 : b+=((uint32_t)k[6])<<16;
60268: 4280 clrl %d0 <== NOT EXECUTED
6026a: 1028 0006 moveb %a0@(6),%d0 <== NOT EXECUTED
6026e: 4840 swap %d0 <== NOT EXECUTED
60270: 4240 clrw %d0 <== NOT EXECUTED
60272: d280 addl %d0,%d1 <== NOT EXECUTED
case 6 : b+=((uint32_t)k[5])<<8;
60274: 4280 clrl %d0 <== NOT EXECUTED
60276: 1028 0005 moveb %a0@(5),%d0 <== NOT EXECUTED
6027a: e188 lsll #8,%d0 <== NOT EXECUTED
6027c: d280 addl %d0,%d1 <== NOT EXECUTED
case 5 : b+=k[4];
6027e: 4280 clrl %d0 <== NOT EXECUTED
60280: 1028 0004 moveb %a0@(4),%d0 <== NOT EXECUTED
60284: d280 addl %d0,%d1 <== NOT EXECUTED
case 4 : a+=((uint32_t)k[3])<<24;
60286: 4280 clrl %d0 <== NOT EXECUTED
60288: 1028 0003 moveb %a0@(3),%d0 <== NOT EXECUTED
6028c: 7418 moveq #24,%d2 <== NOT EXECUTED
6028e: e5a8 lsll %d2,%d0 <== NOT EXECUTED
60290: d680 addl %d0,%d3 <== NOT EXECUTED
case 3 : a+=((uint32_t)k[2])<<16;
60292: 4280 clrl %d0 <== NOT EXECUTED
60294: 1028 0002 moveb %a0@(2),%d0 <== NOT EXECUTED
60298: 4840 swap %d0 <== NOT EXECUTED
6029a: 4240 clrw %d0 <== NOT EXECUTED
6029c: d680 addl %d0,%d3 <== NOT EXECUTED
case 2 : a+=((uint32_t)k[1])<<8;
6029e: 4280 clrl %d0 <== NOT EXECUTED
602a0: 1028 0001 moveb %a0@(1),%d0 <== NOT EXECUTED
602a4: e188 lsll #8,%d0 <== NOT EXECUTED
602a6: d680 addl %d0,%d3 <== NOT EXECUTED
break;
case 0 : return c;
}
}
final(a,b,c);
602a8: 2001 movel %d1,%d0
602aa: 7c0e moveq #14,%d6
602ac: 2401 movel %d1,%d2
602ae: 7a12 moveq #18,%d5
602b0: eaaa lsrl %d5,%d2
602b2: 2a04 movel %d4,%d5
602b4: 780b moveq #11,%d4
602b6: eda8 lsll %d6,%d0
602b8: b385 eorl %d1,%d5
602ba: 1c3c 0019 moveb #25,%d6
602be: 8480 orl %d0,%d2
case 6 : b+=((uint32_t)k[5])<<8;
case 5 : b+=k[4];
case 4 : a+=((uint32_t)k[3])<<24;
case 3 : a+=((uint32_t)k[2])<<16;
case 2 : a+=((uint32_t)k[1])<<8;
case 1 : a+=k[0];
602c0: 4280 clrl %d0
602c2: 1010 moveb %a0@,%d0
break;
case 0 : return c;
}
}
final(a,b,c);
602c4: 9a82 subl %d2,%d5
case 6 : b+=((uint32_t)k[5])<<8;
case 5 : b+=k[4];
case 4 : a+=((uint32_t)k[3])<<24;
case 3 : a+=((uint32_t)k[2])<<16;
case 2 : a+=((uint32_t)k[1])<<8;
case 1 : a+=k[0];
602c6: d680 addl %d0,%d3
break;
case 0 : return c;
}
}
final(a,b,c);
602c8: 2405 movel %d5,%d2
602ca: 7015 moveq #21,%d0
602cc: e0aa lsrl %d0,%d2
602ce: 2005 movel %d5,%d0
602d0: e9a8 lsll %d4,%d0
602d2: bb83 eorl %d5,%d3
602d4: 183c 0012 moveb #18,%d4
602d8: 8082 orl %d2,%d0
602da: 9680 subl %d0,%d3
602dc: 2003 movel %d3,%d0
602de: 2403 movel %d3,%d2
602e0: ee8a lsrl #7,%d2
602e2: eda8 lsll %d6,%d0
602e4: b781 eorl %d3,%d1
602e6: 1c3c 000e moveb #14,%d6
602ea: 8082 orl %d2,%d0
602ec: 9280 subl %d0,%d1
602ee: 2001 movel %d1,%d0
602f0: 4840 swap %d0
602f2: b385 eorl %d1,%d5
602f4: 9a80 subl %d0,%d5
602f6: 701c moveq #28,%d0
602f8: 2405 movel %d5,%d2
602fa: e0aa lsrl %d0,%d2
602fc: 2005 movel %d5,%d0
602fe: e988 lsll #4,%d0
60300: bb83 eorl %d5,%d3
60302: 8082 orl %d2,%d0
60304: 9680 subl %d0,%d3
60306: 2003 movel %d3,%d0
60308: 2403 movel %d3,%d2
6030a: e8aa lsrl %d4,%d2
6030c: 2803 movel %d3,%d4
6030e: eda8 lsll %d6,%d0
60310: b384 eorl %d1,%d4
60312: 8082 orl %d2,%d0
60314: 7418 moveq #24,%d2
60316: 9880 subl %d0,%d4
60318: 2004 movel %d4,%d0
6031a: 2204 movel %d4,%d1
6031c: e089 lsrl #8,%d1
6031e: e5a8 lsll %d2,%d0
60320: bb84 eorl %d5,%d4
60322: 8081 orl %d1,%d0
60324: 9880 subl %d0,%d4
return c;
}
60326: 2004 movel %d4,%d0
60328: 4cd7 00fc moveml %sp@,%d2-%d7
6032c: 4e5e unlk %fp <== NOT EXECUTED
0005a920 <rtems_rfs_dir_lookup_ino>:
rtems_rfs_inode_handle* inode,
const char* name,
int length,
rtems_rfs_ino* ino,
uint32_t* offset)
{
5a920: 4e56 ff74 linkw %fp,#-140 <== NOT EXECUTED
5a924: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_rfs_block_map map;
rtems_rfs_buffer_handle entries;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
5a928: 2f3c 0400 0000 movel #67108864,%sp@- <== NOT EXECUTED
rtems_rfs_inode_handle* inode,
const char* name,
int length,
rtems_rfs_ino* ino,
uint32_t* offset)
{
5a92e: 2a6e 0008 moveal %fp@(8),%a5 <== NOT EXECUTED
rtems_rfs_block_map map;
rtems_rfs_buffer_handle entries;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
5a932: 49f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a4 <== NOT EXECUTED
5a938: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_rfs_inode_handle* inode,
const char* name,
int length,
rtems_rfs_ino* ino,
uint32_t* offset)
{
5a93a: 266e 0018 moveal %fp@(24),%a3 <== NOT EXECUTED
rtems_rfs_block_map map;
rtems_rfs_buffer_handle entries;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
5a93e: 4e94 jsr %a4@ <== NOT EXECUTED
5a940: 508f addql #8,%sp <== NOT EXECUTED
5a942: 4a00 tstb %d0 <== NOT EXECUTED
5a944: 6644 bnes 5a98a <rtems_rfs_dir_lookup_ino+0x6a> <== NOT EXECUTED
}
*ino = RTEMS_RFS_EMPTY_INO;
*offset = 0;
rc = rtems_rfs_block_map_open (fs, inode, &map);
5a946: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
printf ("%c", name[c]);
printf (", len=%d\n", length);
}
*ino = RTEMS_RFS_EMPTY_INO;
*offset = 0;
5a94a: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf (", len=%d\n", length);
}
*ino = RTEMS_RFS_EMPTY_INO;
5a94e: 4293 clrl %a3@ <== NOT EXECUTED
*offset = 0;
rc = rtems_rfs_block_map_open (fs, inode, &map);
5a950: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
printf ("%c", name[c]);
printf (", len=%d\n", length);
}
*ino = RTEMS_RFS_EMPTY_INO;
*offset = 0;
5a954: 4290 clrl %a0@ <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, inode, &map);
5a956: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5a958: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5a95e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
*ino = RTEMS_RFS_EMPTY_INO;
*offset = 0;
rc = rtems_rfs_block_map_open (fs, inode, &map);
5a962: 2d40 ffa0 movel %d0,%fp@(-96) <== NOT EXECUTED
if (rc > 0)
5a966: 6f00 009e blew 5aa06 <rtems_rfs_dir_lookup_ino+0xe6> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
5a96a: 2f3c 0400 0000 movel #67108864,%sp@- <== NOT EXECUTED
5a970: 42a7 clrl %sp@- <== NOT EXECUTED
5a972: 4e94 jsr %a4@ <== NOT EXECUTED
5a974: 508f addql #8,%sp <== NOT EXECUTED
5a976: 4a00 tstb %d0 <== NOT EXECUTED
5a978: 6600 0120 bnew 5aa9a <rtems_rfs_dir_lookup_ino+0x17a> <== NOT EXECUTED
}
rtems_rfs_buffer_handle_close (fs, &entries);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5a97c: 202e ffa0 movel %fp@(-96),%d0 <== NOT EXECUTED
5a980: 4cee 3cfc ff74 moveml %fp@(-140),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5a986: 4e5e unlk %fp <== NOT EXECUTED
5a988: 4e75 rts <== NOT EXECUTED
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
{
int c;
printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=",
5a98a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5a98e: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5a992: 283c 0006 16ec movel #399084,%d4 <== NOT EXECUTED
5a998: 4879 0007 26a2 pea 726a2 <CSWTCH.2+0x5da> <== NOT EXECUTED
5a99e: 2044 moveal %d4,%a0 <== NOT EXECUTED
5a9a0: 4e90 jsr %a0@ <== NOT EXECUTED
inode->ino);
for (c = 0; c < length; c++)
5a9a2: 508f addql #8,%sp <== NOT EXECUTED
5a9a4: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED
5a9a8: 6f28 bles 5a9d2 <rtems_rfs_dir_lookup_ino+0xb2> <== NOT EXECUTED
#define rtems_rfs_dir_entry_valid(_f, _l, _i) \
(((_l) <= RTEMS_RFS_DIR_ENTRY_SIZE) || ((_l) >= rtems_rfs_fs_max_name (_f)) \
|| (_i < RTEMS_RFS_ROOT_INO) || (_i > rtems_rfs_fs_inodes (_f)))
int
rtems_rfs_dir_lookup_ino (rtems_rfs_file_system* fs,
5a9aa: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
5a9ae: 200b movel %a3,%d0 <== NOT EXECUTED
5a9b0: d4ae 0014 addl %fp@(20),%d2 <== NOT EXECUTED
5a9b4: 45f9 0006 187c lea 6187c <putchar>,%a2 <== NOT EXECUTED
5a9ba: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
5a9be: 2643 moveal %d3,%a3 <== NOT EXECUTED
5a9c0: 2600 movel %d0,%d3 <== NOT EXECUTED
{
int c;
printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=",
inode->ino);
for (c = 0; c < length; c++)
printf ("%c", name[c]);
5a9c2: 101b moveb %a3@+,%d0 <== NOT EXECUTED
5a9c4: 49c0 extbl %d0 <== NOT EXECUTED
5a9c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a9c8: 4e92 jsr %a2@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
{
int c;
printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=",
inode->ino);
for (c = 0; c < length; c++)
5a9ca: 588f addql #4,%sp <== NOT EXECUTED
5a9cc: b48b cmpl %a3,%d2 <== NOT EXECUTED
5a9ce: 66f2 bnes 5a9c2 <rtems_rfs_dir_lookup_ino+0xa2> <== NOT EXECUTED
5a9d0: 2643 moveal %d3,%a3 <== NOT EXECUTED
printf ("%c", name[c]);
printf (", len=%d\n", length);
5a9d2: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5a9d6: 2044 moveal %d4,%a0 <== NOT EXECUTED
5a9d8: 4879 0007 26d9 pea 726d9 <CSWTCH.2+0x611> <== NOT EXECUTED
5a9de: 4e90 jsr %a0@ <== NOT EXECUTED
5a9e0: 508f addql #8,%sp <== NOT EXECUTED
}
*ino = RTEMS_RFS_EMPTY_INO;
*offset = 0;
rc = rtems_rfs_block_map_open (fs, inode, &map);
5a9e2: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
printf ("%c", name[c]);
printf (", len=%d\n", length);
}
*ino = RTEMS_RFS_EMPTY_INO;
*offset = 0;
5a9e6: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf (", len=%d\n", length);
}
*ino = RTEMS_RFS_EMPTY_INO;
5a9ea: 4293 clrl %a3@ <== NOT EXECUTED
*offset = 0;
rc = rtems_rfs_block_map_open (fs, inode, &map);
5a9ec: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
printf ("%c", name[c]);
printf (", len=%d\n", length);
}
*ino = RTEMS_RFS_EMPTY_INO;
*offset = 0;
5a9f0: 4290 clrl %a0@ <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, inode, &map);
5a9f2: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5a9f4: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5a9fa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
*ino = RTEMS_RFS_EMPTY_INO;
*offset = 0;
rc = rtems_rfs_block_map_open (fs, inode, &map);
5a9fe: 2d40 ffa0 movel %d0,%fp@(-96) <== NOT EXECUTED
if (rc > 0)
5aa02: 6e00 ff66 bgtw 5a96a <rtems_rfs_dir_lookup_ino+0x4a> <== NOT EXECUTED
uint32_t hash;
/*
* Calculate the hash of the look up string.
*/
hash = rtems_rfs_dir_hash (name, length);
5aa06: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5aa0a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5aa0e: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5aa10: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5aa14: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5aa18: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
5aa1c: 4eb9 0006 00e8 jsr 600e8 <rtems_rfs_dir_hash> <== NOT EXECUTED
/*
* Locate the first block. The map points to the start after open so just
* seek 0. If an error the block will be 0.
*/
rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);
5aa22: 486e ffa8 pea %fp@(-88) <== NOT EXECUTED
5aa26: 42a7 clrl %sp@- <== NOT EXECUTED
5aa28: 42a7 clrl %sp@- <== NOT EXECUTED
5aa2a: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
uint32_t hash;
/*
* Calculate the hash of the look up string.
*/
hash = rtems_rfs_dir_hash (name, length);
5aa2e: 2d40 ffa4 movel %d0,%fp@(-92) <== NOT EXECUTED
/*
* Locate the first block. The map points to the start after open so just
* seek 0. If an error the block will be 0.
*/
rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);
5aa32: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5aa34: 4eb9 0005 96f8 jsr 596f8 <rtems_rfs_block_map_seek> <== NOT EXECUTED
if (rc > 0)
5aa3a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
/*
* Locate the first block. The map points to the start after open so just
* seek 0. If an error the block will be 0.
*/
rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);
5aa3e: 2d40 ffa0 movel %d0,%fp@(-96) <== NOT EXECUTED
if (rc > 0)
5aa42: 6f00 0140 blew 5ab84 <rtems_rfs_dir_lookup_ino+0x264> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
5aa46: 2f3c 0400 0000 movel #67108864,%sp@- <== NOT EXECUTED
5aa4c: 42a7 clrl %sp@- <== NOT EXECUTED
5aa4e: 4e94 jsr %a4@ <== NOT EXECUTED
5aa50: 508f addql #8,%sp <== NOT EXECUTED
5aa52: 4a00 tstb %d0 <== NOT EXECUTED
5aa54: 6600 0318 bnew 5ad6e <rtems_rfs_dir_lookup_ino+0x44e> <== NOT EXECUTED
printf ("rtems-rfs: dir-lookup-ino: block map find failed: %d: %s\n",
rc, strerror (rc));
if (rc == ENXIO)
5aa58: 7206 moveq #6,%d1 <== NOT EXECUTED
5aa5a: b2ae ffa0 cmpl %fp@(-96),%d1 <== NOT EXECUTED
5aa5e: 6700 0338 beqw 5ad98 <rtems_rfs_dir_lookup_ino+0x478> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5aa62: 486e ffac pea %fp@(-84) <== NOT EXECUTED
handle->dirty = false;
5aa66: 4203 clrb %d3 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5aa68: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5aa6a: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5aa70: 1d43 ffac moveb %d3,%fp@(-84) <== NOT EXECUTED
rtems_rfs_inode_ino (inode), rc, strerror (rc));
}
}
rtems_rfs_buffer_handle_close (fs, &entries);
rtems_rfs_block_map_close (fs, &map);
5aa74: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
handle->bnum = 0;
5aa78: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
5aa7c: 2f0d movel %a5,%sp@- <== NOT EXECUTED
handle->buffer = NULL;
5aa7e: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
5aa82: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5aa88: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return rc;
}
5aa8c: 202e ffa0 movel %fp@(-96),%d0 <== NOT EXECUTED
5aa90: 4cee 3cfc ff74 moveml %fp@(-140),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5aa96: 4e5e unlk %fp <== NOT EXECUTED
5aa98: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, inode, &map);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
printf ("rtems-rfs: dir-lookup-ino: map open failed for ino %" PRIu32 ": %d: %s",
5aa9a: 2f2e ffa0 movel %fp@(-96),%sp@- <== NOT EXECUTED
5aa9e: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5aaa4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5aaa8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5aaaa: 2f2e ffa0 movel %fp@(-96),%sp@- <== NOT EXECUTED
5aaae: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5aab2: 4879 0007 26e3 pea 726e3 <CSWTCH.2+0x61b> <== NOT EXECUTED
5aab8: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
}
rtems_rfs_buffer_handle_close (fs, &entries);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5aabe: 202e ffa0 movel %fp@(-96),%d0 <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, inode, &map);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
printf ("rtems-rfs: dir-lookup-ino: map open failed for ino %" PRIu32 ": %d: %s",
5aac2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
rtems_rfs_buffer_handle_close (fs, &entries);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5aac6: 4cee 3cfc ff74 moveml %fp@(-140),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5aacc: 4e5e unlk %fp <== NOT EXECUTED
5aace: 4e75 rts <== NOT EXECUTED
while ((rc == 0) && block)
{
uint8_t* entry;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n",
5aad0: 2f2e ffc4 movel %fp@(-60),%sp@- <== NOT EXECUTED
5aad4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5aad8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5aadc: 4879 0007 275c pea 7275c <CSWTCH.2+0x694> <== NOT EXECUTED
5aae2: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5aae8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_rfs_inode_ino (inode), map.bpos.bno);
rc = rtems_rfs_buffer_handle_request (fs, &entries, block, true);
5aaec: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5aaf0: 2f2e ffa8 movel %fp@(-88),%sp@- <== NOT EXECUTED
5aaf4: 486e ffac pea %fp@(-84) <== NOT EXECUTED
5aaf8: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5aafa: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request> <== NOT EXECUTED
if (rc > 0)
5ab00: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n",
rtems_rfs_inode_ino (inode), map.bpos.bno);
rc = rtems_rfs_buffer_handle_request (fs, &entries, block, true);
5ab04: 2d40 ff9c movel %d0,%fp@(-100) <== NOT EXECUTED
if (rc > 0)
5ab08: 6e00 0306 bgtw 5ae10 <rtems_rfs_dir_lookup_ino+0x4f0> <== NOT EXECUTED
/*
* Search the block to see if the name matches. A hash of 0xffff or 0x0
* means the entry is empty.
*/
entry = rtems_rfs_buffer_data (&entries);
5ab0c: 206e ffb2 moveal %fp@(-78),%a0 <== NOT EXECUTED
map.bpos.boff = 0;
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5ab10: 700a moveq #10,%d0 <== NOT EXECUTED
/*
* Search the block to see if the name matches. A hash of 0xffff or 0x0
* means the entry is empty.
*/
entry = rtems_rfs_buffer_data (&entries);
5ab12: 2468 001a moveal %a0@(26),%a2 <== NOT EXECUTED
map.bpos.boff = 0;
5ab16: 42ae ffc8 clrl %fp@(-56) <== NOT EXECUTED
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5ab1a: b0ad 0008 cmpl %a5@(8),%d0 <== NOT EXECUTED
5ab1e: 6600 011c bnew 5ac3c <rtems_rfs_dir_lookup_ino+0x31c> <== NOT EXECUTED
map.bpos.boff += elength;
entry += elength;
}
if (rc == 0)
5ab22: 4aae ff9c tstl %fp@(-100) <== NOT EXECUTED
5ab26: 6600 01d0 bnew 5acf8 <rtems_rfs_dir_lookup_ino+0x3d8> <== NOT EXECUTED
{
rc = rtems_rfs_block_map_next_block (fs, &map, &block);
5ab2a: 486e ffa8 pea %fp@(-88) <== NOT EXECUTED
5ab2e: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
5ab32: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5ab34: 4eb9 0005 9776 jsr 59776 <rtems_rfs_block_map_next_block> <== NOT EXECUTED
if ((rc > 0) && (rc != ENXIO))
5ab3a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
entry += elength;
}
if (rc == 0)
{
rc = rtems_rfs_block_map_next_block (fs, &map, &block);
5ab3e: 2d40 ffa0 movel %d0,%fp@(-96) <== NOT EXECUTED
if ((rc > 0) && (rc != ENXIO))
5ab42: 6f40 bles 5ab84 <rtems_rfs_dir_lookup_ino+0x264> <== NOT EXECUTED
5ab44: 7206 moveq #6,%d1 <== NOT EXECUTED
5ab46: b280 cmpl %d0,%d1 <== NOT EXECUTED
5ab48: 6700 020c beqw 5ad56 <rtems_rfs_dir_lookup_ino+0x436> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
5ab4c: 2f3c 0400 0000 movel #67108864,%sp@- <== NOT EXECUTED
5ab52: 42a7 clrl %sp@- <== NOT EXECUTED
5ab54: 4e94 jsr %a4@ <== NOT EXECUTED
5ab56: 508f addql #8,%sp <== NOT EXECUTED
5ab58: 4a00 tstb %d0 <== NOT EXECUTED
5ab5a: 6728 beqs 5ab84 <rtems_rfs_dir_lookup_ino+0x264> <== NOT EXECUTED
printf ("rtems-rfs: dir-lookup-ino: "
5ab5c: 2f2e ffa0 movel %fp@(-96),%sp@- <== NOT EXECUTED
5ab60: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5ab66: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5ab6a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ab6c: 2f2e ffa0 movel %fp@(-96),%sp@- <== NOT EXECUTED
5ab70: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5ab74: 4879 0007 28c5 pea 728c5 <CSWTCH.2+0x7fd> <== NOT EXECUTED
5ab7a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5ab80: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &entries);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
while ((rc == 0) && block)
5ab84: 4aae ffa0 tstl %fp@(-96) <== NOT EXECUTED
5ab88: 6600 01d2 bnew 5ad5c <rtems_rfs_dir_lookup_ino+0x43c> <== NOT EXECUTED
5ab8c: 4aae ffa8 tstl %fp@(-88) <== NOT EXECUTED
5ab90: 6700 02c8 beqw 5ae5a <rtems_rfs_dir_lookup_ino+0x53a> <== NOT EXECUTED
{
uint8_t* entry;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
5ab94: 2f3c 0400 0000 movel #67108864,%sp@- <== NOT EXECUTED
5ab9a: 42a7 clrl %sp@- <== NOT EXECUTED
5ab9c: 4e94 jsr %a4@ <== NOT EXECUTED
5ab9e: 508f addql #8,%sp <== NOT EXECUTED
5aba0: 4a00 tstb %d0 <== NOT EXECUTED
5aba2: 6700 ff48 beqw 5aaec <rtems_rfs_dir_lookup_ino+0x1cc> <== NOT EXECUTED
5aba6: 6000 ff28 braw 5aad0 <rtems_rfs_dir_lookup_ino+0x1b0> <== NOT EXECUTED
break;
}
if (ehash == hash)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK))
5abaa: 2f3c 0800 0000 movel #134217728,%sp@- <== NOT EXECUTED
5abb0: 42a7 clrl %sp@- <== NOT EXECUTED
5abb2: 4e94 jsr %a4@ <== NOT EXECUTED
5abb4: 508f addql #8,%sp <== NOT EXECUTED
5abb6: 4a00 tstb %d0 <== NOT EXECUTED
5abb8: 674a beqs 5ac04 <rtems_rfs_dir_lookup_ino+0x2e4> <== NOT EXECUTED
printf ("rtems-rfs: dir-lookup-ino: "
"checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
" length:%d ino:%" PRId32 "\n",
rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
elength, rtems_rfs_dir_entry_ino (entry));
5abba: 4280 clrl %d0 <== NOT EXECUTED
5abbc: 4282 clrl %d2 <== NOT EXECUTED
5abbe: 1012 moveb %a2@,%d0 <== NOT EXECUTED
5abc0: 142a 0001 moveb %a2@(1),%d2 <== NOT EXECUTED
5abc4: 7218 moveq #24,%d1 <== NOT EXECUTED
5abc6: 4284 clrl %d4 <== NOT EXECUTED
5abc8: 182a 0003 moveb %a2@(3),%d4 <== NOT EXECUTED
5abcc: e3a8 lsll %d1,%d0 <== NOT EXECUTED
5abce: 4842 swap %d2 <== NOT EXECUTED
5abd0: 4242 clrw %d2 <== NOT EXECUTED
5abd2: 4281 clrl %d1 <== NOT EXECUTED
5abd4: 122a 0002 moveb %a2@(2),%d1 <== NOT EXECUTED
5abd8: 8082 orl %d2,%d0 <== NOT EXECUTED
5abda: e189 lsll #8,%d1 <== NOT EXECUTED
}
if (ehash == hash)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK))
printf ("rtems-rfs: dir-lookup-ino: "
5abdc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
"checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
" length:%d ino:%" PRId32 "\n",
rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
elength, rtems_rfs_dir_entry_ino (entry));
5abe0: 8084 orl %d4,%d0 <== NOT EXECUTED
}
if (ehash == hash)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK))
printf ("rtems-rfs: dir-lookup-ino: "
5abe2: 8081 orl %d1,%d0 <== NOT EXECUTED
5abe4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5abe6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5abe8: 2f2e ffc8 movel %fp@(-56),%sp@- <== NOT EXECUTED
5abec: 2f2e ffc4 movel %fp@(-60),%sp@- <== NOT EXECUTED
5abf0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5abf4: 4879 0007 2820 pea 72820 <CSWTCH.2+0x758> <== NOT EXECUTED
5abfa: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5ac00: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
"checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
" length:%d ino:%" PRId32 "\n",
rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
elength, rtems_rfs_dir_entry_ino (entry));
if (memcmp (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length) == 0)
5ac04: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5ac08: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5ac0c: 486a 000a pea %a2@(10) <== NOT EXECUTED
5ac10: 4eb9 0006 13a8 jsr 613a8 <memcmp> <== NOT EXECUTED
5ac16: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5ac1a: 4a80 tstl %d0 <== NOT EXECUTED
5ac1c: 6700 0196 beqw 5adb4 <rtems_rfs_dir_lookup_ino+0x494> <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
return 0;
}
}
map.bpos.boff += elength;
5ac20: 2003 movel %d3,%d0 <== NOT EXECUTED
5ac22: d0ae ffc8 addl %fp@(-56),%d0 <== NOT EXECUTED
entry += elength;
5ac26: d5c3 addal %d3,%a2 <== NOT EXECUTED
entry = rtems_rfs_buffer_data (&entries);
map.bpos.boff = 0;
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5ac28: 222d 0008 movel %a5@(8),%d1 <== NOT EXECUTED
5ac2c: 0681 ffff fff6 addil #-10,%d1 <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
return 0;
}
}
map.bpos.boff += elength;
5ac32: 2d40 ffc8 movel %d0,%fp@(-56) <== NOT EXECUTED
entry = rtems_rfs_buffer_data (&entries);
map.bpos.boff = 0;
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5ac36: b081 cmpl %d1,%d0 <== NOT EXECUTED
5ac38: 6400 fee8 bccw 5ab22 <rtems_rfs_dir_lookup_ino+0x202> <== NOT EXECUTED
uint32_t ehash;
int elength;
ehash = rtems_rfs_dir_entry_hash (entry);
elength = rtems_rfs_dir_entry_length (entry);
*ino = rtems_rfs_dir_entry_ino (entry);
5ac3c: 4280 clrl %d0 <== NOT EXECUTED
5ac3e: 4282 clrl %d2 <== NOT EXECUTED
5ac40: 1012 moveb %a2@,%d0 <== NOT EXECUTED
5ac42: 142a 0001 moveb %a2@(1),%d2 <== NOT EXECUTED
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
uint32_t ehash;
int elength;
ehash = rtems_rfs_dir_entry_hash (entry);
5ac46: 4281 clrl %d1 <== NOT EXECUTED
5ac48: 4285 clrl %d5 <== NOT EXECUTED
5ac4a: 122a 0004 moveb %a2@(4),%d1 <== NOT EXECUTED
5ac4e: 1a2a 0005 moveb %a2@(5),%d5 <== NOT EXECUTED
elength = rtems_rfs_dir_entry_length (entry);
*ino = rtems_rfs_dir_entry_ino (entry);
5ac52: 7618 moveq #24,%d3 <== NOT EXECUTED
5ac54: 4286 clrl %d6 <== NOT EXECUTED
5ac56: 4284 clrl %d4 <== NOT EXECUTED
5ac58: 1c2a 0003 moveb %a2@(3),%d6 <== NOT EXECUTED
5ac5c: 182a 0002 moveb %a2@(2),%d4 <== NOT EXECUTED
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
uint32_t ehash;
int elength;
ehash = rtems_rfs_dir_entry_hash (entry);
5ac60: 4287 clrl %d7 <== NOT EXECUTED
5ac62: 1e2a 0007 moveb %a2@(7),%d7 <== NOT EXECUTED
elength = rtems_rfs_dir_entry_length (entry);
*ino = rtems_rfs_dir_entry_ino (entry);
5ac66: e7a8 lsll %d3,%d0 <== NOT EXECUTED
5ac68: 4842 swap %d2 <== NOT EXECUTED
5ac6a: 4242 clrw %d2 <== NOT EXECUTED
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
uint32_t ehash;
int elength;
ehash = rtems_rfs_dir_entry_hash (entry);
5ac6c: e7a9 lsll %d3,%d1 <== NOT EXECUTED
5ac6e: 4845 swap %d5 <== NOT EXECUTED
5ac70: 4245 clrw %d5 <== NOT EXECUTED
elength = rtems_rfs_dir_entry_length (entry);
5ac72: 4283 clrl %d3 <== NOT EXECUTED
5ac74: 162a 0008 moveb %a2@(8),%d3 <== NOT EXECUTED
*ino = rtems_rfs_dir_entry_ino (entry);
5ac78: 8082 orl %d2,%d0 <== NOT EXECUTED
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
uint32_t ehash;
int elength;
ehash = rtems_rfs_dir_entry_hash (entry);
5ac7a: 8285 orl %d5,%d1 <== NOT EXECUTED
5ac7c: 4282 clrl %d2 <== NOT EXECUTED
5ac7e: 142a 0006 moveb %a2@(6),%d2 <== NOT EXECUTED
elength = rtems_rfs_dir_entry_length (entry);
5ac82: 4285 clrl %d5 <== NOT EXECUTED
5ac84: 1a2a 0009 moveb %a2@(9),%d5 <== NOT EXECUTED
*ino = rtems_rfs_dir_entry_ino (entry);
5ac88: 8086 orl %d6,%d0 <== NOT EXECUTED
5ac8a: e18c lsll #8,%d4 <== NOT EXECUTED
{
uint32_t ehash;
int elength;
ehash = rtems_rfs_dir_entry_hash (entry);
elength = rtems_rfs_dir_entry_length (entry);
5ac8c: e18b lsll #8,%d3 <== NOT EXECUTED
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
uint32_t ehash;
int elength;
ehash = rtems_rfs_dir_entry_hash (entry);
5ac8e: 8287 orl %d7,%d1 <== NOT EXECUTED
elength = rtems_rfs_dir_entry_length (entry);
*ino = rtems_rfs_dir_entry_ino (entry);
5ac90: 8084 orl %d4,%d0 <== NOT EXECUTED
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
uint32_t ehash;
int elength;
ehash = rtems_rfs_dir_entry_hash (entry);
5ac92: e18a lsll #8,%d2 <== NOT EXECUTED
elength = rtems_rfs_dir_entry_length (entry);
5ac94: 8685 orl %d5,%d3 <== NOT EXECUTED
*ino = rtems_rfs_dir_entry_ino (entry);
5ac96: 2680 movel %d0,%a3@ <== NOT EXECUTED
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
uint32_t ehash;
int elength;
ehash = rtems_rfs_dir_entry_hash (entry);
5ac98: 8282 orl %d2,%d1 <== NOT EXECUTED
elength = rtems_rfs_dir_entry_length (entry);
*ino = rtems_rfs_dir_entry_ino (entry);
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
5ac9a: 0c83 0000 ffff cmpil #65535,%d3 <== NOT EXECUTED
5aca0: 6700 fe80 beqw 5ab22 <rtems_rfs_dir_lookup_ino+0x202> <== NOT EXECUTED
break;
if (rtems_rfs_dir_entry_valid (fs, elength, *ino))
5aca4: 740a moveq #10,%d2 <== NOT EXECUTED
5aca6: b483 cmpl %d3,%d2 <== NOT EXECUTED
5aca8: 6c38 bges 5ace2 <rtems_rfs_dir_lookup_ino+0x3c2> <== NOT EXECUTED
5acaa: b6ad 001c cmpl %a5@(28),%d3 <== NOT EXECUTED
5acae: 6432 bccs 5ace2 <rtems_rfs_dir_lookup_ino+0x3c2> <== NOT EXECUTED
5acb0: 4a80 tstl %d0 <== NOT EXECUTED
5acb2: 672e beqs 5ace2 <rtems_rfs_dir_lookup_ino+0x3c2> <== NOT EXECUTED
5acb4: b0ad 0014 cmpl %a5@(20),%d0 <== NOT EXECUTED
5acb8: 6228 bhis 5ace2 <rtems_rfs_dir_lookup_ino+0x3c2> <== NOT EXECUTED
rtems_rfs_inode_ino (inode), elength, *ino, map.bpos.boff);
rc = EIO;
break;
}
if (ehash == hash)
5acba: b2ae ffa4 cmpl %fp@(-92),%d1 <== NOT EXECUTED
5acbe: 6700 feea beqw 5abaa <rtems_rfs_dir_lookup_ino+0x28a> <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
return 0;
}
}
map.bpos.boff += elength;
5acc2: 2003 movel %d3,%d0 <== NOT EXECUTED
5acc4: d0ae ffc8 addl %fp@(-56),%d0 <== NOT EXECUTED
entry += elength;
5acc8: d5c3 addal %d3,%a2 <== NOT EXECUTED
entry = rtems_rfs_buffer_data (&entries);
map.bpos.boff = 0;
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5acca: 222d 0008 movel %a5@(8),%d1 <== NOT EXECUTED
5acce: 0681 ffff fff6 addil #-10,%d1 <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
return 0;
}
}
map.bpos.boff += elength;
5acd4: 2d40 ffc8 movel %d0,%fp@(-56) <== NOT EXECUTED
entry = rtems_rfs_buffer_data (&entries);
map.bpos.boff = 0;
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
5acd8: b081 cmpl %d1,%d0 <== NOT EXECUTED
5acda: 6500 ff60 bcsw 5ac3c <rtems_rfs_dir_lookup_ino+0x31c> <== NOT EXECUTED
5acde: 6000 fe42 braw 5ab22 <rtems_rfs_dir_lookup_ino+0x202> <== NOT EXECUTED
if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)
break;
if (rtems_rfs_dir_entry_valid (fs, elength, *ino))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
5ace2: 2f3c 0400 0000 movel #67108864,%sp@- <== NOT EXECUTED
5ace8: 42a7 clrl %sp@- <== NOT EXECUTED
5acea: 4e94 jsr %a4@ <== NOT EXECUTED
5acec: 508f addql #8,%sp <== NOT EXECUTED
5acee: 4a00 tstb %d0 <== NOT EXECUTED
5acf0: 663c bnes 5ad2e <rtems_rfs_dir_lookup_ino+0x40e> <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &entries);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
while ((rc == 0) && block)
5acf2: 7205 moveq #5,%d1 <== NOT EXECUTED
5acf4: 2d41 ff9c movel %d1,%fp@(-100) <== NOT EXECUTED
printf ("rtems-rfs: dir-lookup-ino: "
"block map next block failed in ino %" PRIu32 ": %d: %s\n",
rtems_rfs_inode_ino (inode), rc, strerror (rc));
}
if (rc == ENXIO)
rc = ENOENT;
5acf8: 262e ff9c movel %fp@(-100),%d3 <== NOT EXECUTED
5acfc: 2d43 ffa0 movel %d3,%fp@(-96) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5ad00: 486e ffac pea %fp@(-84) <== NOT EXECUTED
5ad04: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5ad06: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5ad0c: 4200 clrb %d0 <== NOT EXECUTED
5ad0e: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
rtems_rfs_inode_ino (inode), rc, strerror (rc));
}
}
rtems_rfs_buffer_handle_close (fs, &entries);
rtems_rfs_block_map_close (fs, &map);
5ad12: 486e ffb6 pea %fp@(-74) <== NOT EXECUTED
handle->bnum = 0;
5ad16: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
5ad1a: 2f0d movel %a5,%sp@- <== NOT EXECUTED
handle->buffer = NULL;
5ad1c: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
5ad20: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5ad26: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5ad2a: 6000 fd60 braw 5aa8c <rtems_rfs_dir_lookup_ino+0x16c> <== NOT EXECUTED
break;
if (rtems_rfs_dir_entry_valid (fs, elength, *ino))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
printf ("rtems-rfs: dir-lookup-ino: "
5ad2e: 2f2e ffc8 movel %fp@(-56),%sp@- <== NOT EXECUTED
5ad32: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
5ad34: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5ad38: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5ad3a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5ad3e: 4879 0007 27d6 pea 727d6 <CSWTCH.2+0x70e> <== NOT EXECUTED
5ad44: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5ad4a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &entries);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
while ((rc == 0) && block)
5ad4e: 7205 moveq #5,%d1 <== NOT EXECUTED
5ad50: 2d41 ff9c movel %d1,%fp@(-100) <== NOT EXECUTED
5ad54: 60a2 bras 5acf8 <rtems_rfs_dir_lookup_ino+0x3d8> <== NOT EXECUTED
printf ("rtems-rfs: dir-lookup-ino: "
"block map next block failed in ino %" PRIu32 ": %d: %s\n",
rtems_rfs_inode_ino (inode), rc, strerror (rc));
}
if (rc == ENXIO)
rc = ENOENT;
5ad56: 7402 moveq #2,%d2 <== NOT EXECUTED
5ad58: 2d42 ffa0 movel %d2,%fp@(-96) <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &entries);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
while ((rc == 0) && block)
5ad5c: 242e ffa0 movel %fp@(-96),%d2 <== NOT EXECUTED
5ad60: 2d42 ff9c movel %d2,%fp@(-100) <== NOT EXECUTED
printf ("rtems-rfs: dir-lookup-ino: "
"block map next block failed in ino %" PRIu32 ": %d: %s\n",
rtems_rfs_inode_ino (inode), rc, strerror (rc));
}
if (rc == ENXIO)
rc = ENOENT;
5ad64: 262e ff9c movel %fp@(-100),%d3 <== NOT EXECUTED
5ad68: 2d43 ffa0 movel %d3,%fp@(-96) <== NOT EXECUTED
5ad6c: 6092 bras 5ad00 <rtems_rfs_dir_lookup_ino+0x3e0> <== NOT EXECUTED
*/
rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
printf ("rtems-rfs: dir-lookup-ino: block map find failed: %d: %s\n",
5ad6e: 2f2e ffa0 movel %fp@(-96),%sp@- <== NOT EXECUTED
5ad72: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5ad78: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ad7a: 2f2e ffa0 movel %fp@(-96),%sp@- <== NOT EXECUTED
5ad7e: 4879 0007 2722 pea 72722 <CSWTCH.2+0x65a> <== NOT EXECUTED
5ad84: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5ad8a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
if (rc == ENXIO)
5ad8e: 7206 moveq #6,%d1 <== NOT EXECUTED
5ad90: b2ae ffa0 cmpl %fp@(-96),%d1 <== NOT EXECUTED
5ad94: 6600 fccc bnew 5aa62 <rtems_rfs_dir_lookup_ino+0x142> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5ad98: 486e ffac pea %fp@(-84) <== NOT EXECUTED
rc = ENOENT;
5ad9c: 7402 moveq #2,%d2 <== NOT EXECUTED
handle->dirty = false;
5ad9e: 4203 clrb %d3 <== NOT EXECUTED
5ada0: 2d42 ffa0 movel %d2,%fp@(-96) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5ada4: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5ada6: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5adac: 1d43 ffac moveb %d3,%fp@(-84) <== NOT EXECUTED
5adb0: 6000 fcc2 braw 5aa74 <rtems_rfs_dir_lookup_ino+0x154> <== NOT EXECUTED
rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
elength, rtems_rfs_dir_entry_ino (entry));
if (memcmp (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length) == 0)
{
*offset = rtems_rfs_block_map_pos (fs, &map);
5adb4: 486e ffc4 pea %fp@(-60) <== NOT EXECUTED
5adb8: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5adba: 4eb9 0005 90f4 jsr 590f4 <rtems_rfs_block_get_pos> <== NOT EXECUTED
5adc0: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_FOUND))
5adc4: 2f3c 1000 0000 movel #268435456,%sp@- <== NOT EXECUTED
5adca: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
elength, rtems_rfs_dir_entry_ino (entry));
if (memcmp (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length) == 0)
{
*offset = rtems_rfs_block_map_pos (fs, &map);
5adcc: 2081 movel %d1,%a0@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_FOUND))
5adce: 4e94 jsr %a4@ <== NOT EXECUTED
5add0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5add4: 4a00 tstb %d0 <== NOT EXECUTED
5add6: 6700 ff28 beqw 5ad00 <rtems_rfs_dir_lookup_ino+0x3e0> <== NOT EXECUTED
printf ("rtems-rfs: dir-lookup-ino: "
5adda: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED
5adde: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
5ade0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5ade4: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
5ade6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5adea: 4879 0007 287e pea 7287e <CSWTCH.2+0x7b6> <== NOT EXECUTED
5adf0: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5adf6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5adfa: 486e ffac pea %fp@(-84) <== NOT EXECUTED
5adfe: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5ae00: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5ae06: 4200 clrb %d0 <== NOT EXECUTED
5ae08: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
5ae0c: 6000 ff04 braw 5ad12 <rtems_rfs_dir_lookup_ino+0x3f2> <== NOT EXECUTED
rtems_rfs_inode_ino (inode), map.bpos.bno);
rc = rtems_rfs_buffer_handle_request (fs, &entries, block, true);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
5ae10: 2f3c 0400 0000 movel #67108864,%sp@- <== NOT EXECUTED
5ae16: 42a7 clrl %sp@- <== NOT EXECUTED
5ae18: 4e94 jsr %a4@ <== NOT EXECUTED
5ae1a: 508f addql #8,%sp <== NOT EXECUTED
5ae1c: 4a00 tstb %d0 <== NOT EXECUTED
5ae1e: 6700 fed8 beqw 5acf8 <rtems_rfs_dir_lookup_ino+0x3d8> <== NOT EXECUTED
printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " block=%" PRId32 ": %d: %s\n",
5ae22: 2f2e ff9c movel %fp@(-100),%sp@- <== NOT EXECUTED
5ae26: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5ae2c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5ae30: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ae32: 2f2e ff9c movel %fp@(-100),%sp@- <== NOT EXECUTED
5ae36: 2f2e ffa8 movel %fp@(-88),%sp@- <== NOT EXECUTED
5ae3a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5ae3e: 4879 0007 2794 pea 72794 <CSWTCH.2+0x6cc> <== NOT EXECUTED
5ae44: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
printf ("rtems-rfs: dir-lookup-ino: "
"block map next block failed in ino %" PRIu32 ": %d: %s\n",
rtems_rfs_inode_ino (inode), rc, strerror (rc));
}
if (rc == ENXIO)
rc = ENOENT;
5ae4a: 262e ff9c movel %fp@(-100),%d3 <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_request (fs, &entries, block, true);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " block=%" PRId32 ": %d: %s\n",
5ae4e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
printf ("rtems-rfs: dir-lookup-ino: "
"block map next block failed in ino %" PRIu32 ": %d: %s\n",
rtems_rfs_inode_ino (inode), rc, strerror (rc));
}
if (rc == ENXIO)
rc = ENOENT;
5ae52: 2d43 ffa0 movel %d3,%fp@(-96) <== NOT EXECUTED
5ae56: 6000 fea8 braw 5ad00 <rtems_rfs_dir_lookup_ino+0x3e0> <== NOT EXECUTED
}
if ((rc == 0) && (block == 0))
{
rc = EIO;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
5ae5a: 2f3c 0400 0000 movel #67108864,%sp@- <== NOT EXECUTED
5ae60: 42a7 clrl %sp@- <== NOT EXECUTED
5ae62: 4e94 jsr %a4@ <== NOT EXECUTED
5ae64: 508f addql #8,%sp <== NOT EXECUTED
5ae66: 4a00 tstb %d0 <== NOT EXECUTED
5ae68: 661c bnes 5ae86 <rtems_rfs_dir_lookup_ino+0x566> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5ae6a: 486e ffac pea %fp@(-84) <== NOT EXECUTED
}
}
if ((rc == 0) && (block == 0))
{
rc = EIO;
5ae6e: 7405 moveq #5,%d2 <== NOT EXECUTED
5ae70: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5ae72: 2d42 ffa0 movel %d2,%fp@(-96) <== NOT EXECUTED
5ae76: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5ae7c: 4200 clrb %d0 <== NOT EXECUTED
5ae7e: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
5ae82: 6000 fe8e braw 5ad12 <rtems_rfs_dir_lookup_ino+0x3f2> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
printf ("rtems-rfs: dir-lookup-ino: block is 0 in ino %" PRIu32 ": %d: %s\n",
5ae86: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
}
}
if ((rc == 0) && (block == 0))
{
rc = EIO;
5ae8a: 7605 moveq #5,%d3 <== NOT EXECUTED
5ae8c: 2d43 ffa0 movel %d3,%fp@(-96) <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
printf ("rtems-rfs: dir-lookup-ino: block is 0 in ino %" PRIu32 ": %d: %s\n",
5ae90: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5ae96: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5ae9a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ae9c: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
5aea0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5aea4: 4879 0007 2910 pea 72910 <CSWTCH.2+0x848> <== NOT EXECUTED
5aeaa: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5aeb0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5aeb4: 486e ffac pea %fp@(-84) <== NOT EXECUTED
5aeb8: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5aeba: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5aec0: 4200 clrb %d0 <== NOT EXECUTED
5aec2: 1d40 ffac moveb %d0,%fp@(-84) <== NOT EXECUTED
5aec6: 6000 fe4a braw 5ad12 <rtems_rfs_dir_lookup_ino+0x3f2> <== NOT EXECUTED
0005b7f2 <rtems_rfs_dir_read>:
rtems_rfs_dir_read (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* dir,
rtems_rfs_pos_rel offset,
struct dirent* dirent,
size_t* length)
{
5b7f2: 4e56 ff70 linkw %fp,#-144 <== NOT EXECUTED
5b7f6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_rfs_block_map map;
rtems_rfs_buffer_handle buffer;
rtems_rfs_block_no block;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
5b7fa: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED
rtems_rfs_dir_read (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* dir,
rtems_rfs_pos_rel offset,
struct dirent* dirent,
size_t* length)
{
5b800: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_rfs_block_map map;
rtems_rfs_buffer_handle buffer;
rtems_rfs_block_no block;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
5b804: 4bf9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a5 <== NOT EXECUTED
5b80a: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_rfs_dir_read (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* dir,
rtems_rfs_pos_rel offset,
struct dirent* dirent,
size_t* length)
{
5b80c: 286e 001c moveal %fp@(28),%a4 <== NOT EXECUTED
rtems_rfs_block_map map;
rtems_rfs_buffer_handle buffer;
rtems_rfs_block_no block;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
5b810: 4e95 jsr %a5@ <== NOT EXECUTED
5b812: 508f addql #8,%sp <== NOT EXECUTED
5b814: 4a00 tstb %d0 <== NOT EXECUTED
5b816: 6600 00a8 bnew 5b8c0 <rtems_rfs_dir_read+0xce> <== NOT EXECUTED
printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
rtems_rfs_inode_ino (dir), offset);
*length = 0;
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b81a: 2a0e movel %fp,%d5 <== NOT EXECUTED
5b81c: 0685 ffff ffb6 addil #-74,%d5 <== NOT EXECUTED
5b822: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5b824: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
rtems_rfs_inode_ino (dir), offset);
*length = 0;
5b828: 4294 clrl %a4@ <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b82a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b82c: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5b832: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
rtems_rfs_inode_ino (dir), offset);
*length = 0;
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b836: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
5b838: 6f0c bles 5b846 <rtems_rfs_dir_read+0x54> <== NOT EXECUTED
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5b83a: 2004 movel %d4,%d0 <== NOT EXECUTED
5b83c: 4cee 3cfc ff70 moveml %fp@(-144),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5b842: 4e5e unlk %fp <== NOT EXECUTED
5b844: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, dir, &map);
if (rc > 0)
return rc;
if (((rtems_rfs_fs_block_size (fs) -
(offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE))
5b846: 262b 0008 movel %a3@(8),%d3 <== NOT EXECUTED
5b84a: 4282 clrl %d2 <== NOT EXECUTED
5b84c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, dir, &map);
if (rc > 0)
return rc;
if (((rtems_rfs_fs_block_size (fs) -
5b84e: 2c02 movel %d2,%d6 <== NOT EXECUTED
5b850: 2e03 movel %d3,%d7 <== NOT EXECUTED
(offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE))
5b852: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b854: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5b858: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5b85c: 4eb9 0006 dbdc jsr 6dbdc <__moddi3> <== NOT EXECUTED
5b862: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, dir, &map);
if (rc > 0)
return rc;
if (((rtems_rfs_fs_block_size (fs) -
5b866: 9e81 subl %d1,%d7 <== NOT EXECUTED
5b868: 9d80 subxl %d0,%d6 <== NOT EXECUTED
5b86a: 2006 movel %d6,%d0 <== NOT EXECUTED
5b86c: 2207 movel %d7,%d1 <== NOT EXECUTED
5b86e: 4286 clrl %d6 <== NOT EXECUTED
5b870: 7e0a moveq #10,%d7 <== NOT EXECUTED
5b872: 9e81 subl %d1,%d7 <== NOT EXECUTED
5b874: 9d80 subxl %d0,%d6 <== NOT EXECUTED
5b876: 6c00 008e bgew 5b906 <rtems_rfs_dir_read+0x114> <== NOT EXECUTED
(offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE))
offset = (((offset / rtems_rfs_fs_block_size (fs)) + 1) *
rtems_rfs_fs_block_size (fs));
rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);
5b87a: 260e movel %fp,%d3 <== NOT EXECUTED
5b87c: 0683 ffff ffa8 addil #-88,%d3 <== NOT EXECUTED
5b882: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5b884: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5b888: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5b88c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5b88e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b890: 4eb9 0005 96f8 jsr 596f8 <rtems_rfs_block_map_seek> <== NOT EXECUTED
if (rc > 0)
5b896: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
if (((rtems_rfs_fs_block_size (fs) -
(offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE))
offset = (((offset / rtems_rfs_fs_block_size (fs)) + 1) *
rtems_rfs_fs_block_size (fs));
rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);
5b89a: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
5b89c: 6f00 00b4 blew 5b952 <rtems_rfs_dir_read+0x160> <== NOT EXECUTED
{
if (rc == ENXIO)
5b8a0: 7006 moveq #6,%d0 <== NOT EXECUTED
5b8a2: b084 cmpl %d4,%d0 <== NOT EXECUTED
5b8a4: 6700 009a beqw 5b940 <rtems_rfs_dir_read+0x14e> <== NOT EXECUTED
rc = ENOENT;
rtems_rfs_block_map_close (fs, &map);
5b8a8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5b8aa: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b8ac: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5b8b2: 508f addql #8,%sp <== NOT EXECUTED
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
5b8b4: 2004 movel %d4,%d0 <== NOT EXECUTED
5b8b6: 4cee 3cfc ff70 moveml %fp@(-144),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5b8bc: 4e5e unlk %fp <== NOT EXECUTED
5b8be: 4e75 rts <== NOT EXECUTED
rtems_rfs_buffer_handle buffer;
rtems_rfs_block_no block;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
5b8c0: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
rtems_rfs_inode_ino (dir), offset);
*length = 0;
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b8c4: 2a0e movel %fp,%d5 <== NOT EXECUTED
5b8c6: 0685 ffff ffb6 addil #-74,%d5 <== NOT EXECUTED
rtems_rfs_buffer_handle buffer;
rtems_rfs_block_no block;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
5b8cc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5b8d0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b8d4: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5b8d8: 4879 0007 2c09 pea 72c09 <CSWTCH.2+0xb41> <== NOT EXECUTED
5b8de: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5b8e4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_inode_ino (dir), offset);
*length = 0;
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b8e8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5b8ea: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
rtems_rfs_inode_ino (dir), offset);
*length = 0;
5b8ee: 4294 clrl %a4@ <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b8f0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b8f2: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5b8f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
rtems_rfs_inode_ino (dir), offset);
*length = 0;
rc = rtems_rfs_block_map_open (fs, dir, &map);
5b8fc: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
5b8fe: 6e00 ff3a bgtw 5b83a <rtems_rfs_dir_read+0x48> <== NOT EXECUTED
5b902: 6000 ff42 braw 5b846 <rtems_rfs_dir_read+0x54> <== NOT EXECUTED
return rc;
if (((rtems_rfs_fs_block_size (fs) -
(offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE))
offset = (((offset / rtems_rfs_fs_block_size (fs)) + 1) *
5b906: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5b908: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b90a: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5b90e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5b912: 4eb9 0006 d77c jsr 6d77c <__divdi3> <== NOT EXECUTED
5b918: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5b91c: 4287 clrl %d7 <== NOT EXECUTED
5b91e: 5281 addql #1,%d1 <== NOT EXECUTED
5b920: d187 addxl %d7,%d0 <== NOT EXECUTED
5b922: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5b924: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b926: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5b928: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b92a: 4eb9 0006 d714 jsr 6d714 <__muldi3> <== NOT EXECUTED
5b930: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5b934: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
5b938: 2d41 0014 movel %d1,%fp@(20) <== NOT EXECUTED
5b93c: 6000 ff3c braw 5b87a <rtems_rfs_dir_read+0x88> <== NOT EXECUTED
rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);
if (rc > 0)
{
if (rc == ENXIO)
rc = ENOENT;
rtems_rfs_block_map_close (fs, &map);
5b940: 2f05 movel %d5,%sp@- <== NOT EXECUTED
rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);
if (rc > 0)
{
if (rc == ENXIO)
rc = ENOENT;
5b942: 7802 moveq #2,%d4 <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
5b944: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b946: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5b94c: 508f addql #8,%sp <== NOT EXECUTED
5b94e: 6000 ff64 braw 5b8b4 <rtems_rfs_dir_read+0xc2> <== NOT EXECUTED
5b952: 2e0e movel %fp,%d7 <== NOT EXECUTED
5b954: 0687 ffff ffac addil #-84,%d7 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5b95a: 4201 clrb %d1 <== NOT EXECUTED
handle->bnum = 0;
5b95c: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5b960: 1d41 ffac moveb %d1,%fp@(-84) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5b964: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
uint8_t* entry;
rtems_rfs_ino eino;
int elength;
int remaining;
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);
5b968: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5b96c: 2f2e ffa8 movel %fp@(-88),%sp@- <== NOT EXECUTED
5b970: 2f07 movel %d7,%sp@- <== NOT EXECUTED
5b972: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b974: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request> <== NOT EXECUTED
if (rc > 0)
5b97a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5b97e: 4a80 tstl %d0 <== NOT EXECUTED
5b980: 6e6e bgts 5b9f0 <rtems_rfs_dir_read+0x1fe> <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
return rc;
}
entry = rtems_rfs_buffer_data (&buffer);
5b982: 206e ffb2 moveal %fp@(-78),%a0 <== NOT EXECUTED
entry += map.bpos.boff;
elength = rtems_rfs_dir_entry_length (entry);
5b986: 4282 clrl %d2 <== NOT EXECUTED
5b988: 4284 clrl %d4 <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
return rc;
}
entry = rtems_rfs_buffer_data (&buffer);
entry += map.bpos.boff;
5b98a: 222e ffc8 movel %fp@(-56),%d1 <== NOT EXECUTED
5b98e: 2468 001a moveal %a0@(26),%a2 <== NOT EXECUTED
5b992: d5c1 addal %d1,%a2 <== NOT EXECUTED
elength = rtems_rfs_dir_entry_length (entry);
5b994: 142a 0008 moveb %a2@(8),%d2 <== NOT EXECUTED
5b998: 182a 0009 moveb %a2@(9),%d4 <== NOT EXECUTED
5b99c: e18a lsll #8,%d2 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b99e: 1c2a 0001 moveb %a2@(1),%d6 <== NOT EXECUTED
5b9a2: 1d52 ff9b moveb %a2@,%fp@(-101) <== NOT EXECUTED
}
entry = rtems_rfs_buffer_data (&buffer);
entry += map.bpos.boff;
elength = rtems_rfs_dir_entry_length (entry);
5b9a6: 8484 orl %d4,%d2 <== NOT EXECUTED
eino = rtems_rfs_dir_entry_ino (entry);
5b9a8: 3246 moveaw %d6,%a1 <== NOT EXECUTED
5b9aa: 182a 0002 moveb %a2@(2),%d4 <== NOT EXECUTED
5b9ae: 1c2a 0003 moveb %a2@(3),%d6 <== NOT EXECUTED
if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)
5b9b2: 0c82 0000 ffff cmpil #65535,%d2 <== NOT EXECUTED
5b9b8: 6600 00c4 bnew 5ba7e <rtems_rfs_dir_read+0x28c> <== NOT EXECUTED
printf ("rtems-rfs: dir-read: found off:%" PRIooff_t " ino:%ld name=%s\n",
dirent->d_off, dirent->d_ino, dirent->d_name);
break;
}
*length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;
5b9bc: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
5b9c0: 9081 subl %d1,%d0 <== NOT EXECUTED
5b9c2: d194 addl %d0,%a4@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
5b9c4: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED
5b9ca: 42a7 clrl %sp@- <== NOT EXECUTED
5b9cc: 4e95 jsr %a5@ <== NOT EXECUTED
5b9ce: 508f addql #8,%sp <== NOT EXECUTED
5b9d0: 4a00 tstb %d0 <== NOT EXECUTED
5b9d2: 6650 bnes 5ba24 <rtems_rfs_dir_read+0x232> <== NOT EXECUTED
printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n",
offset, *length);
rc = rtems_rfs_block_map_next_block (fs, &map, &block);
5b9d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5b9d6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5b9d8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b9da: 4eb9 0005 9776 jsr 59776 <rtems_rfs_block_map_next_block> <== NOT EXECUTED
if (rc == ENXIO)
5b9e0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5b9e4: 7206 moveq #6,%d1 <== NOT EXECUTED
5b9e6: b280 cmpl %d0,%d1 <== NOT EXECUTED
5b9e8: 676a beqs 5ba54 <rtems_rfs_dir_read+0x262> <== NOT EXECUTED
/*
* Look for an empty entry and if this is the last block that is the end of
* the directory.
*/
while (rc == 0)
5b9ea: 4a80 tstl %d0 <== NOT EXECUTED
5b9ec: 6700 ff7a beqw 5b968 <rtems_rfs_dir_read+0x176> <== NOT EXECUTED
5b9f0: 2800 movel %d0,%d4 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b9f2: 2f07 movel %d7,%sp@- <== NOT EXECUTED
handle->dirty = false;
5b9f4: 4203 clrb %d3 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5b9f6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5b9f8: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5b9fe: 1d43 ffac moveb %d3,%fp@(-84) <== NOT EXECUTED
if (rc == ENXIO)
rc = ENOENT;
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
5ba02: 2f05 movel %d5,%sp@- <== NOT EXECUTED
handle->bnum = 0;
5ba04: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
5ba08: 2f0b movel %a3,%sp@- <== NOT EXECUTED
handle->buffer = NULL;
5ba0a: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
5ba0e: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5ba14: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return rc;
}
5ba18: 2004 movel %d4,%d0 <== NOT EXECUTED
5ba1a: 4cee 3cfc ff70 moveml %fp@(-144),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5ba20: 4e5e unlk %fp <== NOT EXECUTED
5ba22: 4e75 rts <== NOT EXECUTED
}
*length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n",
5ba24: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
5ba26: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5ba2a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5ba2e: 4879 0007 2cac pea 72cac <CSWTCH.2+0xbe4> <== NOT EXECUTED
5ba34: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5ba3a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
offset, *length);
rc = rtems_rfs_block_map_next_block (fs, &map, &block);
5ba3e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5ba40: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5ba42: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5ba44: 4eb9 0005 9776 jsr 59776 <rtems_rfs_block_map_next_block> <== NOT EXECUTED
if (rc == ENXIO)
5ba4a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5ba4e: 7206 moveq #6,%d1 <== NOT EXECUTED
5ba50: b280 cmpl %d0,%d1 <== NOT EXECUTED
5ba52: 6696 bnes 5b9ea <rtems_rfs_dir_read+0x1f8> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5ba54: 2f07 movel %d7,%sp@- <== NOT EXECUTED
rc = ENOENT;
5ba56: 7802 moveq #2,%d4 <== NOT EXECUTED
5ba58: 2f0b movel %a3,%sp@- <== NOT EXECUTED
handle->dirty = false;
5ba5a: 4203 clrb %d3 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5ba5c: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5ba62: 1d43 ffac moveb %d3,%fp@(-84) <== NOT EXECUTED
}
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
5ba66: 2f05 movel %d5,%sp@- <== NOT EXECUTED
handle->bnum = 0;
5ba68: 42ae ffae clrl %fp@(-82) <== NOT EXECUTED
5ba6c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
handle->buffer = NULL;
5ba6e: 42ae ffb2 clrl %fp@(-78) <== NOT EXECUTED
5ba72: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
5ba78: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5ba7c: 609a bras 5ba18 <rtems_rfs_dir_read+0x226> <== NOT EXECUTED
5ba7e: 2d41 ffa0 movel %d1,%fp@(-96) <== NOT EXECUTED
5ba82: 1606 moveb %d6,%d3 <== NOT EXECUTED
5ba84: 1c04 moveb %d4,%d6 <== NOT EXECUTED
5ba86: 2800 movel %d0,%d4 <== NOT EXECUTED
5ba88: 1003 moveb %d3,%d0 <== NOT EXECUTED
entry = rtems_rfs_buffer_data (&buffer);
entry += map.bpos.boff;
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
5ba8a: 3609 movew %a1,%d3 <== NOT EXECUTED
5ba8c: 122e ff9b moveb %fp@(-101),%d1 <== NOT EXECUTED
5ba90: 2d4a ff9c movel %a2,%fp@(-100) <== NOT EXECUTED
5ba94: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
5ba9a: 3041 moveaw %d1,%a0 <== NOT EXECUTED
5ba9c: 7218 moveq #24,%d1 <== NOT EXECUTED
5ba9e: 2243 moveal %d3,%a1 <== NOT EXECUTED
5baa0: 2608 movel %a0,%d3 <== NOT EXECUTED
5baa2: e3ab lsll %d1,%d3 <== NOT EXECUTED
5baa4: 2209 movel %a1,%d1 <== NOT EXECUTED
5baa6: 4841 swap %d1 <== NOT EXECUTED
5baa8: 4241 clrw %d1 <== NOT EXECUTED
5baaa: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
5bab0: 0286 0000 00ff andil #255,%d6 <== NOT EXECUTED
5bab6: 8681 orl %d1,%d3 <== NOT EXECUTED
5bab8: e18e lsll #8,%d6 <== NOT EXECUTED
5baba: 8680 orl %d0,%d3 <== NOT EXECUTED
5babc: 8686 orl %d6,%d3 <== NOT EXECUTED
if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)
{
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
5babe: 7c0a moveq #10,%d6 <== NOT EXECUTED
5bac0: bc82 cmpl %d2,%d6 <== NOT EXECUTED
5bac2: 6c10 bges 5bad4 <rtems_rfs_dir_read+0x2e2> <== NOT EXECUTED
5bac4: b4ab 001c cmpl %a3@(28),%d2 <== NOT EXECUTED
5bac8: 640a bccs 5bad4 <rtems_rfs_dir_read+0x2e2> <== NOT EXECUTED
5baca: 4a83 tstl %d3 <== NOT EXECUTED
5bacc: 6706 beqs 5bad4 <rtems_rfs_dir_read+0x2e2> <== NOT EXECUTED
5bace: b6ab 0014 cmpl %a3@(20),%d3 <== NOT EXECUTED
5bad2: 6318 blss 5baec <rtems_rfs_dir_read+0x2fa> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
5bad4: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED
5bada: 42a7 clrl %sp@- <== NOT EXECUTED
5badc: 4e95 jsr %a5@ <== NOT EXECUTED
5bade: 508f addql #8,%sp <== NOT EXECUTED
5bae0: 4a00 tstb %d0 <== NOT EXECUTED
5bae2: 6600 00f0 bnew 5bbd4 <rtems_rfs_dir_read+0x3e2> <== NOT EXECUTED
printf ("rtems-rfs: dir-read: "
"bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04" PRIx32 "\n",
rtems_rfs_inode_ino (dir), elength, eino, map.bpos.boff);
rc = EIO;
5bae6: 7805 moveq #5,%d4 <== NOT EXECUTED
5bae8: 6000 ff08 braw 5b9f2 <rtems_rfs_dir_read+0x200> <== NOT EXECUTED
break;
}
memset (dirent, 0, sizeof (struct dirent));
5baec: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED
*length += elength;
remaining = rtems_rfs_fs_block_size (fs) - (map.bpos.boff + elength);
if (remaining <= RTEMS_RFS_DIR_ENTRY_SIZE)
5baf0: 760a moveq #10,%d3 <== NOT EXECUTED
rtems_rfs_inode_ino (dir), elength, eino, map.bpos.boff);
rc = EIO;
break;
}
memset (dirent, 0, sizeof (struct dirent));
5baf2: 42a7 clrl %sp@- <== NOT EXECUTED
5baf4: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
5baf8: 4eb9 0006 159c jsr 6159c <memset> <== NOT EXECUTED
dirent->d_off = offset;
5bafe: 206e 0018 moveal %fp@(24),%a0 <== NOT EXECUTED
dirent->d_reclen = sizeof (struct dirent);
*length += elength;
5bb02: 2002 movel %d2,%d0 <== NOT EXECUTED
5bb04: d094 addl %a4@,%d0 <== NOT EXECUTED
remaining = rtems_rfs_fs_block_size (fs) - (map.bpos.boff + elength);
if (remaining <= RTEMS_RFS_DIR_ENTRY_SIZE)
5bb06: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rc = EIO;
break;
}
memset (dirent, 0, sizeof (struct dirent));
dirent->d_off = offset;
5bb0a: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
5bb0e: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
5bb12: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED
5bb16: 214a 0008 movel %a2,%a0@(8) <== NOT EXECUTED
dirent->d_reclen = sizeof (struct dirent);
5bb1a: 327c 0110 moveaw #272,%a1 <== NOT EXECUTED
5bb1e: 3149 000c movew %a1,%a0@(12) <== NOT EXECUTED
*length += elength;
5bb22: 2880 movel %d0,%a4@ <== NOT EXECUTED
remaining = rtems_rfs_fs_block_size (fs) - (map.bpos.boff + elength);
5bb24: 222b 0008 movel %a3@(8),%d1 <== NOT EXECUTED
5bb28: 92ae ffa0 subl %fp@(-96),%d1 <== NOT EXECUTED
5bb2c: 9282 subl %d2,%d1 <== NOT EXECUTED
if (remaining <= RTEMS_RFS_DIR_ENTRY_SIZE)
5bb2e: b681 cmpl %d1,%d3 <== NOT EXECUTED
5bb30: 6d04 blts 5bb36 <rtems_rfs_dir_read+0x344> <== NOT EXECUTED
*length += remaining;
5bb32: d280 addl %d0,%d1 <== NOT EXECUTED
5bb34: 2881 movel %d1,%a4@ <== NOT EXECUTED
elength -= RTEMS_RFS_DIR_ENTRY_SIZE;
5bb36: 0682 ffff fff6 addil #-10,%d2 <== NOT EXECUTED
5bb3c: 0c82 0000 00ff cmpil #255,%d2 <== NOT EXECUTED
5bb42: 6f06 bles 5bb4a <rtems_rfs_dir_read+0x358> <== NOT EXECUTED
5bb44: 243c 0000 00ff movel #255,%d2 <== NOT EXECUTED
if (elength > NAME_MAX)
elength = NAME_MAX;
memcpy (dirent->d_name, entry + RTEMS_RFS_DIR_ENTRY_SIZE, elength);
5bb4a: 206e ff9c moveal %fp@(-100),%a0 <== NOT EXECUTED
dirent->d_ino = rtems_rfs_dir_entry_ino (entry);
5bb4e: 4283 clrl %d3 <== NOT EXECUTED
elength -= RTEMS_RFS_DIR_ENTRY_SIZE;
if (elength > NAME_MAX)
elength = NAME_MAX;
memcpy (dirent->d_name, entry + RTEMS_RFS_DIR_ENTRY_SIZE, elength);
5bb50: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5bb52: 4868 000a pea %a0@(10) <== NOT EXECUTED
5bb56: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED
5bb5a: 0686 0000 0010 addil #16,%d6 <== NOT EXECUTED
5bb60: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5bb62: 4eb9 0006 1438 jsr 61438 <memcpy> <== NOT EXECUTED
dirent->d_ino = rtems_rfs_dir_entry_ino (entry);
5bb68: 226e ff9c moveal %fp@(-100),%a1 <== NOT EXECUTED
5bb6c: 4280 clrl %d0 <== NOT EXECUTED
5bb6e: 1011 moveb %a1@,%d0 <== NOT EXECUTED
5bb70: 7218 moveq #24,%d1 <== NOT EXECUTED
5bb72: 1629 0001 moveb %a1@(1),%d3 <== NOT EXECUTED
5bb76: e3a8 lsll %d1,%d0 <== NOT EXECUTED
5bb78: 4281 clrl %d1 <== NOT EXECUTED
5bb7a: 1229 0003 moveb %a1@(3),%d1 <== NOT EXECUTED
5bb7e: 2041 moveal %d1,%a0 <== NOT EXECUTED
5bb80: 1229 0002 moveb %a1@(2),%d1 <== NOT EXECUTED
5bb84: 4843 swap %d3 <== NOT EXECUTED
5bb86: 4243 clrw %d3 <== NOT EXECUTED
5bb88: e189 lsll #8,%d1 <== NOT EXECUTED
5bb8a: 8083 orl %d3,%d0 <== NOT EXECUTED
5bb8c: 2608 movel %a0,%d3 <== NOT EXECUTED
5bb8e: 8083 orl %d3,%d0 <== NOT EXECUTED
dirent->d_namlen = elength;
5bb90: 206e 0018 moveal %fp@(24),%a0 <== NOT EXECUTED
if (elength > NAME_MAX)
elength = NAME_MAX;
memcpy (dirent->d_name, entry + RTEMS_RFS_DIR_ENTRY_SIZE, elength);
dirent->d_ino = rtems_rfs_dir_entry_ino (entry);
5bb94: 8081 orl %d1,%d0 <== NOT EXECUTED
dirent->d_namlen = elength;
5bb96: 3142 000e movew %d2,%a0@(14) <== NOT EXECUTED
if (elength > NAME_MAX)
elength = NAME_MAX;
memcpy (dirent->d_name, entry + RTEMS_RFS_DIR_ENTRY_SIZE, elength);
dirent->d_ino = rtems_rfs_dir_entry_ino (entry);
5bb9a: 2080 movel %d0,%a0@ <== NOT EXECUTED
dirent->d_namlen = elength;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
5bb9c: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED
5bba2: 42a7 clrl %sp@- <== NOT EXECUTED
5bba4: 4e95 jsr %a5@ <== NOT EXECUTED
5bba6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5bbaa: 4a00 tstb %d0 <== NOT EXECUTED
5bbac: 6700 fe44 beqw 5b9f2 <rtems_rfs_dir_read+0x200> <== NOT EXECUTED
printf ("rtems-rfs: dir-read: found off:%" PRIooff_t " ino:%ld name=%s\n",
5bbb0: 226e 0018 moveal %fp@(24),%a1 <== NOT EXECUTED
5bbb4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5bbb6: 2f11 movel %a1@,%sp@- <== NOT EXECUTED
5bbb8: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
5bbbc: 2f29 0004 movel %a1@(4),%sp@- <== NOT EXECUTED
5bbc0: 4879 0007 2c77 pea 72c77 <CSWTCH.2+0xbaf> <== NOT EXECUTED
5bbc6: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5bbcc: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5bbd0: 6000 fe20 braw 5b9f2 <rtems_rfs_dir_read+0x200> <== NOT EXECUTED
if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)
{
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-read: "
5bbd4: 2f2e ffc8 movel %fp@(-56),%sp@- <== NOT EXECUTED
"bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04" PRIx32 "\n",
rtems_rfs_inode_ino (dir), elength, eino, map.bpos.boff);
rc = EIO;
5bbd8: 7805 moveq #5,%d4 <== NOT EXECUTED
if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)
{
if (rtems_rfs_dir_entry_valid (fs, elength, eino))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-read: "
5bbda: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5bbde: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5bbe0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5bbe2: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
5bbe6: 4879 0007 2c33 pea 72c33 <CSWTCH.2+0xb6b> <== NOT EXECUTED
5bbec: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5bbf2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5bbf6: 6000 fdfa braw 5b9f2 <rtems_rfs_dir_read+0x200> <== NOT EXECUTED
0005c2bc <rtems_rfs_file_close>:
}
int
rtems_rfs_file_close (rtems_rfs_file_system* fs,
rtems_rfs_file_handle* handle)
{
5c2bc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
5c2c0: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
int rrc;
int rc;
rrc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
5c2c4: 42a7 clrl %sp@- <== NOT EXECUTED
5c2c6: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
5c2ca: 47f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a3 <== NOT EXECUTED
}
int
rtems_rfs_file_close (rtems_rfs_file_system* fs,
rtems_rfs_file_handle* handle)
{
5c2d0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
5c2d4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int rrc;
int rc;
rrc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
5c2d8: 4e93 jsr %a3@ <== NOT EXECUTED
5c2da: 508f addql #8,%sp <== NOT EXECUTED
5c2dc: 4a00 tstb %d0 <== NOT EXECUTED
5c2de: 6600 01f4 bnew 5c4d4 <rtems_rfs_file_close+0x218> <== NOT EXECUTED
printf ("rtems-rfs: file-close: entry: ino=%" PRId32 "\n",
handle->shared->inode.ino);
if (handle->shared->references > 0)
5c2e2: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5c2e6: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
5c2ea: 6f06 bles 5c2f2 <rtems_rfs_file_close+0x36> <== NOT EXECUTED
handle->shared->references--;
5c2ec: 5381 subql #1,%d1 <== NOT EXECUTED
5c2ee: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
if (handle->shared->references == 0)
5c2f2: 4a81 tstl %d1 <== NOT EXECUTED
5c2f4: 6600 01aa bnew 5c4a0 <rtems_rfs_file_close+0x1e4> <== NOT EXECUTED
{
if (!rtems_rfs_inode_is_loaded (&handle->shared->inode))
5c2f8: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c2fc: 4a89 tstl %a1 <== NOT EXECUTED
5c2fe: 6700 029c beqw 5c59c <rtems_rfs_file_close+0x2e0> <== NOT EXECUTED
if (rrc == 0)
{
/*
* @todo This could be clever and only update if different.
*/
rtems_rfs_inode_set_atime (&handle->shared->inode,
5c302: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
5c306: 7218 moveq #24,%d1 <== NOT EXECUTED
5c308: 2400 movel %d0,%d2 <== NOT EXECUTED
5c30a: e2aa lsrl %d1,%d2 <== NOT EXECUTED
5c30c: 2200 movel %d0,%d1 <== NOT EXECUTED
5c30e: e089 lsrl #8,%d1 <== NOT EXECUTED
5c310: 1342 0010 moveb %d2,%a1@(16) <== NOT EXECUTED
5c314: 2400 movel %d0,%d2 <== NOT EXECUTED
5c316: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c31a: 4242 clrw %d2 <== NOT EXECUTED
5c31c: 4842 swap %d2 <== NOT EXECUTED
5c31e: 1342 0011 moveb %d2,%a1@(17) <== NOT EXECUTED
5c322: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c326: 1341 0012 moveb %d1,%a1@(18) <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
5c32a: 7218 moveq #24,%d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
5c32c: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c330: 1340 0013 moveb %d0,%a1@(19) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5c334: 7001 moveq #1,%d0 <== NOT EXECUTED
5c336: 1140 001c moveb %d0,%a0@(28) <== NOT EXECUTED
handle->shared->atime);
rtems_rfs_inode_set_mtime (&handle->shared->inode,
handle->shared->mtime);
5c33a: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
/*
* @todo This could be clever and only update if different.
*/
rtems_rfs_inode_set_atime (&handle->shared->inode,
handle->shared->atime);
rtems_rfs_inode_set_mtime (&handle->shared->inode,
5c33e: 2028 0088 movel %a0@(136),%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
5c342: 2400 movel %d0,%d2 <== NOT EXECUTED
5c344: e2aa lsrl %d1,%d2 <== NOT EXECUTED
5c346: 2200 movel %d0,%d1 <== NOT EXECUTED
5c348: e089 lsrl #8,%d1 <== NOT EXECUTED
5c34a: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c34e: 1342 0014 moveb %d2,%a1@(20) <== NOT EXECUTED
5c352: 2400 movel %d0,%d2 <== NOT EXECUTED
5c354: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c358: 4242 clrw %d2 <== NOT EXECUTED
5c35a: 4842 swap %d2 <== NOT EXECUTED
5c35c: 1342 0015 moveb %d2,%a1@(21) <== NOT EXECUTED
5c360: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c364: 1341 0016 moveb %d1,%a1@(22) <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,
rtems_rfs_time ctime)
{
rtems_rfs_write_u32 (&handle->node->ctime, ctime);
5c368: 7218 moveq #24,%d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
5c36a: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c36e: 1340 0017 moveb %d0,%a1@(23) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5c372: 7001 moveq #1,%d0 <== NOT EXECUTED
5c374: 1140 001c moveb %d0,%a0@(28) <== NOT EXECUTED
handle->shared->mtime);
rtems_rfs_inode_set_ctime (&handle->shared->inode,
handle->shared->ctime);
5c378: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
*/
rtems_rfs_inode_set_atime (&handle->shared->inode,
handle->shared->atime);
rtems_rfs_inode_set_mtime (&handle->shared->inode,
handle->shared->mtime);
rtems_rfs_inode_set_ctime (&handle->shared->inode,
5c37c: 2028 008c movel %a0@(140),%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,
rtems_rfs_time ctime)
{
rtems_rfs_write_u32 (&handle->node->ctime, ctime);
5c380: 2400 movel %d0,%d2 <== NOT EXECUTED
5c382: e2aa lsrl %d1,%d2 <== NOT EXECUTED
5c384: 2200 movel %d0,%d1 <== NOT EXECUTED
5c386: e089 lsrl #8,%d1 <== NOT EXECUTED
5c388: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c38c: 1342 0018 moveb %d2,%a1@(24) <== NOT EXECUTED
5c390: 2400 movel %d0,%d2 <== NOT EXECUTED
5c392: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c396: 4242 clrw %d2 <== NOT EXECUTED
5c398: 4842 swap %d2 <== NOT EXECUTED
5c39a: 1342 0019 moveb %d2,%a1@(25) <== NOT EXECUTED
5c39e: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c3a2: 1341 001a moveb %d1,%a1@(26) <== NOT EXECUTED
5c3a6: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c3aa: 1340 001b moveb %d0,%a1@(27) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5c3ae: 7001 moveq #1,%d0 <== NOT EXECUTED
5c3b0: 1140 001c moveb %d0,%a0@(28) <== NOT EXECUTED
handle->shared->ctime);
if (!rtems_rfs_block_size_equal (&handle->shared->size,
5c3b4: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5c3b8: 2028 007c movel %a0@(124),%d0 <== NOT EXECUTED
5c3bc: b0a8 0038 cmpl %a0@(56),%d0 <== NOT EXECUTED
5c3c0: 6700 01c8 beqw 5c58a <rtems_rfs_file_close+0x2ce> <== NOT EXECUTED
5c3c4: 2228 0080 movel %a0@(128),%d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_block_map_set_size (rtems_rfs_block_map* map,
rtems_rfs_block_size* size)
{
rtems_rfs_block_copy_size (&map->size, size);
5c3c8: 2141 003c movel %d1,%a0@(60) <== NOT EXECUTED
map->dirty = true;
5c3cc: 4282 clrl %d2 <== NOT EXECUTED
5c3ce: 7201 moveq #1,%d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_block_map_set_size (rtems_rfs_block_map* map,
rtems_rfs_block_size* size)
{
rtems_rfs_block_copy_size (&map->size, size);
5c3d0: 2140 0038 movel %d0,%a0@(56) <== NOT EXECUTED
map->dirty = true;
5c3d4: 1141 0032 moveb %d1,%a0@(50) <== NOT EXECUTED
&handle->shared->map.size))
rtems_rfs_block_map_set_size (&handle->shared->map,
&handle->shared->size);
}
rc = rtems_rfs_block_map_close (fs, &handle->shared->map);
5c3d8: 4868 0032 pea %a0@(50) <== NOT EXECUTED
5c3dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c3de: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
if (rc > 0)
5c3e4: 508f addql #8,%sp <== NOT EXECUTED
&handle->shared->map.size))
rtems_rfs_block_map_set_size (&handle->shared->map,
&handle->shared->size);
}
rc = rtems_rfs_block_map_close (fs, &handle->shared->map);
5c3e6: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
5c3e8: 6f16 bles 5c400 <rtems_rfs_file_close+0x144> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
5c3ea: 42a7 clrl %sp@- <== NOT EXECUTED
5c3ec: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
5c3f0: 4e93 jsr %a3@ <== NOT EXECUTED
5c3f2: 508f addql #8,%sp <== NOT EXECUTED
5c3f4: 4a00 tstb %d0 <== NOT EXECUTED
5c3f6: 6600 016a bnew 5c562 <rtems_rfs_file_close+0x2a6> <== NOT EXECUTED
printf ("rtems-rfs: file-close: map close error: ino=%" PRId32 ": %d: %s\n",
handle->shared->inode.ino, rc, strerror (rc));
if (rrc == 0)
5c3fa: 4a82 tstl %d2 <== NOT EXECUTED
5c3fc: 6602 bnes 5c400 <rtems_rfs_file_close+0x144> <== NOT EXECUTED
5c3fe: 2404 movel %d4,%d2 <== NOT EXECUTED
rrc = rc;
}
rc = rtems_rfs_inode_close (fs, &handle->shared->inode);
5c400: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5c404: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED
5c408: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5c40a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c40c: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc > 0)
5c412: 508f addql #8,%sp <== NOT EXECUTED
handle->shared->inode.ino, rc, strerror (rc));
if (rrc == 0)
rrc = rc;
}
rc = rtems_rfs_inode_close (fs, &handle->shared->inode);
5c414: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
5c416: 6f00 0100 blew 5c518 <rtems_rfs_file_close+0x25c> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
5c41a: 42a7 clrl %sp@- <== NOT EXECUTED
5c41c: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
5c420: 4e93 jsr %a3@ <== NOT EXECUTED
5c422: 508f addql #8,%sp <== NOT EXECUTED
5c424: 4a00 tstb %d0 <== NOT EXECUTED
5c426: 6600 00c6 bnew 5c4ee <rtems_rfs_file_close+0x232> <== NOT EXECUTED
printf ("rtems-rfs: file-close: inode close error: ino=%" PRId32 ": %d: %s\n",
handle->shared->inode.ino, rc, strerror (rc));
if (rrc == 0)
5c42a: 4a82 tstl %d2 <== NOT EXECUTED
5c42c: 6600 00ea bnew 5c518 <rtems_rfs_file_close+0x25c> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
5c430: 2f2a 001a movel %a2@(26),%sp@- <== NOT EXECUTED
rrc = rc;
}
rtems_chain_extract (&handle->shared->link);
free (handle->shared);
5c434: 49f9 0004 7344 lea 47344 <free>,%a4 <== NOT EXECUTED
5c43a: 2404 movel %d4,%d2 <== NOT EXECUTED
5c43c: 4eb9 0005 7274 jsr 57274 <_Chain_Extract> <== NOT EXECUTED
5c442: 2f2a 001a movel %a2@(26),%sp@- <== NOT EXECUTED
5c446: 4e94 jsr %a4@ <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5c448: 486a 0004 pea %a2@(4) <== NOT EXECUTED
5c44c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c44e: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
handle->bnum = 0;
handle->buffer = NULL;
5c454: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5c458: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5c45a: 42aa 0006 clrl %a2@(6) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5c45e: 1540 0004 moveb %d0,%a2@(4) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5c462: 42aa 000a clrl %a2@(10) <== NOT EXECUTED
if ((rrc == 0) && (rc > 0))
rrc = rc;
if (rrc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
5c466: 42a7 clrl %sp@- <== NOT EXECUTED
5c468: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
5c46c: 4e93 jsr %a3@ <== NOT EXECUTED
5c46e: 508f addql #8,%sp <== NOT EXECUTED
5c470: 4a00 tstb %d0 <== NOT EXECUTED
5c472: 671c beqs 5c490 <rtems_rfs_file_close+0x1d4> <== NOT EXECUTED
printf ("rtems-rfs: file-close: result: %d: %s\n", rrc, strerror (rrc));
5c474: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c476: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5c47c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c47e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c480: 4879 0007 2eb8 pea 72eb8 <CSWTCH.2+0xdf0> <== NOT EXECUTED
5c486: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c48c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
free (handle);
5c490: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c492: 4e94 jsr %a4@ <== NOT EXECUTED
return rrc;
}
5c494: 2002 movel %d2,%d0 <== NOT EXECUTED
5c496: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
5c49c: 4e5e unlk %fp <== NOT EXECUTED
5c49e: 4e75 rts <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5c4a0: 486a 0004 pea %a2@(4) <== NOT EXECUTED
5c4a4: 49f9 0004 7344 lea 47344 <free>,%a4 <== NOT EXECUTED
rtems_rfs_file_handle* handle)
{
int rrc;
int rc;
rrc = 0;
5c4aa: 4282 clrl %d2 <== NOT EXECUTED
5c4ac: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c4ae: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
handle->bnum = 0;
handle->buffer = NULL;
5c4b4: 508f addql #8,%sp <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5c4b6: 4201 clrb %d1 <== NOT EXECUTED
handle->bnum = 0;
5c4b8: 42aa 0006 clrl %a2@(6) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5c4bc: 1541 0004 moveb %d1,%a2@(4) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5c4c0: 42aa 000a clrl %a2@(10) <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
printf ("rtems-rfs: file-close: result: %d: %s\n", rrc, strerror (rrc));
}
free (handle);
5c4c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c4c6: 4e94 jsr %a4@ <== NOT EXECUTED
return rrc;
}
5c4c8: 2002 movel %d2,%d0 <== NOT EXECUTED
5c4ca: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
5c4d0: 4e5e unlk %fp <== NOT EXECUTED
5c4d2: 4e75 rts <== NOT EXECUTED
rrc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
printf ("rtems-rfs: file-close: entry: ino=%" PRId32 "\n",
handle->shared->inode.ino);
5c4d4: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
int rc;
rrc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
printf ("rtems-rfs: file-close: entry: ino=%" PRId32 "\n",
5c4d8: 2f28 0014 movel %a0@(20),%sp@- <== NOT EXECUTED
5c4dc: 4879 0007 2e1d pea 72e1d <CSWTCH.2+0xd55> <== NOT EXECUTED
5c4e2: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c4e8: 508f addql #8,%sp <== NOT EXECUTED
5c4ea: 6000 fdf6 braw 5c2e2 <rtems_rfs_file_close+0x26> <== NOT EXECUTED
rc = rtems_rfs_inode_close (fs, &handle->shared->inode);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
printf ("rtems-rfs: file-close: inode close error: ino=%" PRId32 ": %d: %s\n",
5c4ee: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5c4f0: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
handle->shared->inode.ino, rc, strerror (rc));
5c4f6: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
rc = rtems_rfs_inode_close (fs, &handle->shared->inode);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
printf ("rtems-rfs: file-close: inode close error: ino=%" PRId32 ": %d: %s\n",
5c4fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c4fc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5c4fe: 2f28 0014 movel %a0@(20),%sp@- <== NOT EXECUTED
5c502: 4879 0007 2e7d pea 72e7d <CSWTCH.2+0xdb5> <== NOT EXECUTED
5c508: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c50e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
handle->shared->inode.ino, rc, strerror (rc));
if (rrc == 0)
5c512: 4a82 tstl %d2 <== NOT EXECUTED
5c514: 6700 ff1a beqw 5c430 <rtems_rfs_file_close+0x174> <== NOT EXECUTED
5c518: 2f2a 001a movel %a2@(26),%sp@- <== NOT EXECUTED
rrc = rc;
}
rtems_chain_extract (&handle->shared->link);
free (handle->shared);
5c51c: 49f9 0004 7344 lea 47344 <free>,%a4 <== NOT EXECUTED
5c522: 4eb9 0005 7274 jsr 57274 <_Chain_Extract> <== NOT EXECUTED
5c528: 2f2a 001a movel %a2@(26),%sp@- <== NOT EXECUTED
5c52c: 4e94 jsr %a4@ <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5c52e: 486a 0004 pea %a2@(4) <== NOT EXECUTED
5c532: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c534: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_close (fs, &handle->buffer);
if ((rrc == 0) && (rc > 0))
rrc = rc;
if (rrc > 0)
5c53a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
handle->dirty = false;
5c53e: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5c540: 42aa 0006 clrl %a2@(6) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5c544: 1540 0004 moveb %d0,%a2@(4) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5c548: 42aa 000a clrl %a2@(10) <== NOT EXECUTED
5c54c: 4a82 tstl %d2 <== NOT EXECUTED
5c54e: 6e00 ff16 bgtw 5c466 <rtems_rfs_file_close+0x1aa> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
printf ("rtems-rfs: file-close: result: %d: %s\n", rrc, strerror (rrc));
}
free (handle);
5c552: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c554: 4e94 jsr %a4@ <== NOT EXECUTED
return rrc;
}
5c556: 2002 movel %d2,%d0 <== NOT EXECUTED
5c558: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
5c55e: 4e5e unlk %fp <== NOT EXECUTED
5c560: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_block_map_close (fs, &handle->shared->map);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
printf ("rtems-rfs: file-close: map close error: ino=%" PRId32 ": %d: %s\n",
5c562: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5c564: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
handle->shared->inode.ino, rc, strerror (rc));
5c56a: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
rc = rtems_rfs_block_map_close (fs, &handle->shared->map);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))
printf ("rtems-rfs: file-close: map close error: ino=%" PRId32 ": %d: %s\n",
5c56e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c570: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5c572: 2f28 0014 movel %a0@(20),%sp@- <== NOT EXECUTED
5c576: 4879 0007 2e44 pea 72e44 <CSWTCH.2+0xd7c> <== NOT EXECUTED
5c57c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c582: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5c586: 6000 fe72 braw 5c3fa <rtems_rfs_file_close+0x13e> <== NOT EXECUTED
handle->shared->atime);
rtems_rfs_inode_set_mtime (&handle->shared->inode,
handle->shared->mtime);
rtems_rfs_inode_set_ctime (&handle->shared->inode,
handle->shared->ctime);
if (!rtems_rfs_block_size_equal (&handle->shared->size,
5c58a: 2228 0080 movel %a0@(128),%d1 <== NOT EXECUTED
5c58e: b2a8 003c cmpl %a0@(60),%d1 <== NOT EXECUTED
5c592: 6600 fe34 bnew 5c3c8 <rtems_rfs_file_close+0x10c> <== NOT EXECUTED
5c596: 4282 clrl %d2 <== NOT EXECUTED
5c598: 6000 fe3e braw 5c3d8 <rtems_rfs_file_close+0x11c> <== NOT EXECUTED
handle->shared->references--;
if (handle->shared->references == 0)
{
if (!rtems_rfs_inode_is_loaded (&handle->shared->inode))
rrc = rtems_rfs_inode_load (fs, &handle->shared->inode);
5c59c: 4868 000c pea %a0@(12) <== NOT EXECUTED
5c5a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c5a2: 4eb9 0005 11fc jsr 511fc <rtems_rfs_inode_load> <== NOT EXECUTED
5c5a8: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5c5ac: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rrc == 0)
5c5ae: 508f addql #8,%sp <== NOT EXECUTED
5c5b0: 6600 fe26 bnew 5c3d8 <rtems_rfs_file_close+0x11c> <== NOT EXECUTED
{
/*
* @todo This could be clever and only update if different.
*/
rtems_rfs_inode_set_atime (&handle->shared->inode,
5c5b4: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
5c5b8: 7218 moveq #24,%d1 <== NOT EXECUTED
5c5ba: 2400 movel %d0,%d2 <== NOT EXECUTED
5c5bc: e2aa lsrl %d1,%d2 <== NOT EXECUTED
5c5be: 2200 movel %d0,%d1 <== NOT EXECUTED
5c5c0: e089 lsrl #8,%d1 <== NOT EXECUTED
5c5c2: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c5c6: 1342 0010 moveb %d2,%a1@(16) <== NOT EXECUTED
5c5ca: 2400 movel %d0,%d2 <== NOT EXECUTED
5c5cc: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c5d0: 4242 clrw %d2 <== NOT EXECUTED
5c5d2: 4842 swap %d2 <== NOT EXECUTED
5c5d4: 1342 0011 moveb %d2,%a1@(17) <== NOT EXECUTED
5c5d8: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c5dc: 1341 0012 moveb %d1,%a1@(18) <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
5c5e0: 7218 moveq #24,%d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
5c5e2: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c5e6: 1340 0013 moveb %d0,%a1@(19) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5c5ea: 7001 moveq #1,%d0 <== NOT EXECUTED
5c5ec: 1140 001c moveb %d0,%a0@(28) <== NOT EXECUTED
handle->shared->atime);
rtems_rfs_inode_set_mtime (&handle->shared->inode,
handle->shared->mtime);
5c5f0: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
/*
* @todo This could be clever and only update if different.
*/
rtems_rfs_inode_set_atime (&handle->shared->inode,
handle->shared->atime);
rtems_rfs_inode_set_mtime (&handle->shared->inode,
5c5f4: 2028 0088 movel %a0@(136),%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
5c5f8: 2400 movel %d0,%d2 <== NOT EXECUTED
5c5fa: e2aa lsrl %d1,%d2 <== NOT EXECUTED
5c5fc: 2200 movel %d0,%d1 <== NOT EXECUTED
5c5fe: e089 lsrl #8,%d1 <== NOT EXECUTED
5c600: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c604: 1342 0014 moveb %d2,%a1@(20) <== NOT EXECUTED
5c608: 2400 movel %d0,%d2 <== NOT EXECUTED
5c60a: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c60e: 4242 clrw %d2 <== NOT EXECUTED
5c610: 4842 swap %d2 <== NOT EXECUTED
5c612: 1342 0015 moveb %d2,%a1@(21) <== NOT EXECUTED
5c616: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c61a: 1341 0016 moveb %d1,%a1@(22) <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,
rtems_rfs_time ctime)
{
rtems_rfs_write_u32 (&handle->node->ctime, ctime);
5c61e: 7218 moveq #24,%d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
5c620: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c624: 1340 0017 moveb %d0,%a1@(23) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5c628: 7001 moveq #1,%d0 <== NOT EXECUTED
5c62a: 1140 001c moveb %d0,%a0@(28) <== NOT EXECUTED
handle->shared->mtime);
rtems_rfs_inode_set_ctime (&handle->shared->inode,
handle->shared->ctime);
5c62e: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
*/
rtems_rfs_inode_set_atime (&handle->shared->inode,
handle->shared->atime);
rtems_rfs_inode_set_mtime (&handle->shared->inode,
handle->shared->mtime);
rtems_rfs_inode_set_ctime (&handle->shared->inode,
5c632: 2028 008c movel %a0@(140),%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,
rtems_rfs_time ctime)
{
rtems_rfs_write_u32 (&handle->node->ctime, ctime);
5c636: 2400 movel %d0,%d2 <== NOT EXECUTED
5c638: e2aa lsrl %d1,%d2 <== NOT EXECUTED
5c63a: 2200 movel %d0,%d1 <== NOT EXECUTED
5c63c: e089 lsrl #8,%d1 <== NOT EXECUTED
5c63e: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c642: 1342 0018 moveb %d2,%a1@(24) <== NOT EXECUTED
5c646: 2400 movel %d0,%d2 <== NOT EXECUTED
5c648: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c64c: 4242 clrw %d2 <== NOT EXECUTED
5c64e: 4842 swap %d2 <== NOT EXECUTED
5c650: 1342 0019 moveb %d2,%a1@(25) <== NOT EXECUTED
5c654: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c658: 1341 001a moveb %d1,%a1@(26) <== NOT EXECUTED
5c65c: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
5c660: 1340 001b moveb %d0,%a1@(27) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5c664: 7001 moveq #1,%d0 <== NOT EXECUTED
5c666: 1140 001c moveb %d0,%a0@(28) <== NOT EXECUTED
handle->shared->ctime);
if (!rtems_rfs_block_size_equal (&handle->shared->size,
5c66a: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5c66e: 2028 007c movel %a0@(124),%d0 <== NOT EXECUTED
5c672: b0a8 0038 cmpl %a0@(56),%d0 <== NOT EXECUTED
5c676: 6600 fd4c bnew 5c3c4 <rtems_rfs_file_close+0x108> <== NOT EXECUTED
5c67a: 6000 ff0e braw 5c58a <rtems_rfs_file_close+0x2ce> <== NOT EXECUTED
0005cfd8 <rtems_rfs_file_get_shared>:
}
rtems_rfs_file_shared*
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,
rtems_rfs_ino ino)
{
5cfd8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5cfdc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
const Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Immutable_tail( the_chain ));
5cfe0: 2008 movel %a0,%d0 <== NOT EXECUTED
5cfe2: 0680 0000 0078 addil #120,%d0 <== NOT EXECUTED
5cfe8: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
5cfec: 2068 0074 moveal %a0@(116),%a0 <== NOT EXECUTED
rtems_chain_node* node;
node = rtems_chain_first (&fs->file_shares);
while (!rtems_chain_is_tail (&fs->file_shares, node))
5cff0: b088 cmpl %a0,%d0 <== NOT EXECUTED
5cff2: 670c beqs 5d000 <rtems_rfs_file_get_shared+0x28> <== NOT EXECUTED
{
rtems_rfs_file_shared* shared;
shared = (rtems_rfs_file_shared*) node;
if (shared->inode.ino == ino)
5cff4: b2a8 0014 cmpl %a0@(20),%d1 <== NOT EXECUTED
5cff8: 670c beqs 5d006 <rtems_rfs_file_get_shared+0x2e> <== NOT EXECUTED
return shared;
node = rtems_chain_next (node);
}
return NULL;
}
5cffa: 2050 moveal %a0@,%a0 <== NOT EXECUTED
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,
rtems_rfs_ino ino)
{
rtems_chain_node* node;
node = rtems_chain_first (&fs->file_shares);
while (!rtems_chain_is_tail (&fs->file_shares, node))
5cffc: b088 cmpl %a0,%d0 <== NOT EXECUTED
5cffe: 66f4 bnes 5cff4 <rtems_rfs_file_get_shared+0x1c> <== NOT EXECUTED
shared = (rtems_rfs_file_shared*) node;
if (shared->inode.ino == ino)
return shared;
node = rtems_chain_next (node);
}
return NULL;
5d000: 4280 clrl %d0 <== NOT EXECUTED
}
5d002: 4e5e unlk %fp <== NOT EXECUTED
5d004: 4e75 rts <== NOT EXECUTED
5d006: 2008 movel %a0,%d0 <== NOT EXECUTED
5d008: 4e5e unlk %fp <== NOT EXECUTED
0005c8dc <rtems_rfs_file_io_end>:
int
rtems_rfs_file_io_end (rtems_rfs_file_handle* handle,
size_t size,
bool read)
{
5c8dc: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5c8e0: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
bool atime;
bool mtime;
bool length;
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c8e4: 42a7 clrl %sp@- <== NOT EXECUTED
5c8e6: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
5c8ea: 47f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a3 <== NOT EXECUTED
int
rtems_rfs_file_io_end (rtems_rfs_file_handle* handle,
size_t size,
bool read)
{
5c8f0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5c8f4: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
5c8f8: 162e 0013 moveb %fp@(19),%d3 <== NOT EXECUTED
bool atime;
bool mtime;
bool length;
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c8fc: 4e93 jsr %a3@ <== NOT EXECUTED
5c8fe: 508f addql #8,%sp <== NOT EXECUTED
5c900: 4a00 tstb %d0 <== NOT EXECUTED
5c902: 6720 beqs 5c924 <rtems_rfs_file_io_end+0x48> <== NOT EXECUTED
printf ("rtems-rfs: file-io: end: %s size=%zu\n",
5c904: 4a03 tstb %d3 <== NOT EXECUTED
5c906: 6700 0160 beqw 5ca68 <rtems_rfs_file_io_end+0x18c> <== NOT EXECUTED
5c90a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5c90c: 203c 0007 1e6b movel #466539,%d0 <== NOT EXECUTED
5c912: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c914: 4879 0007 2f96 pea 72f96 <CSWTCH.2+0xece> <== NOT EXECUTED
5c91a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c920: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
read ? "read" : "write", size);
if (rtems_rfs_buffer_handle_has_block (&handle->buffer))
5c924: 4aaa 000a tstl %a2@(10) <== NOT EXECUTED
5c928: 675c beqs 5c986 <rtems_rfs_file_io_end+0xaa> <== NOT EXECUTED
{
if (!read)
5c92a: 4a03 tstb %d3 <== NOT EXECUTED
5c92c: 6606 bnes 5c934 <rtems_rfs_file_io_end+0x58> <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));
5c92e: 7001 moveq #1,%d0 <== NOT EXECUTED
5c930: 1540 0004 moveb %d0,%a2@(4) <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
5c934: 486a 0004 pea %a2@(4) <== NOT EXECUTED
5c938: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5c93c: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5c940: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
rtems_rfs_file_buffer (handle));
if (rc > 0)
5c946: 508f addql #8,%sp <== NOT EXECUTED
if (rtems_rfs_buffer_handle_has_block (&handle->buffer))
{
if (!read)
rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));
rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
5c948: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_rfs_file_buffer (handle));
if (rc > 0)
5c94a: 6f3c bles 5c988 <rtems_rfs_file_io_end+0xac> <== NOT EXECUTED
{
printf (
5c94c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c94e: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5c954: 588f addql #4,%sp <== NOT EXECUTED
5c956: 4a03 tstb %d3 <== NOT EXECUTED
5c958: 6600 0170 bnew 5caca <rtems_rfs_file_io_end+0x1ee> <== NOT EXECUTED
5c95c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c95e: 223c 0007 2edf movel #470751,%d1 <== NOT EXECUTED
5c964: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c966: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5c968: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5c96a: 4879 0007 2fbe pea 72fbe <CSWTCH.2+0xef6> <== NOT EXECUTED
5c970: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
"rtems-rfs: file-io: end: error on release: %s size=%zu: %d: %s\n",
read ? "read" : "write", size, rc, strerror (rc));
return rc;
5c976: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
handle->shared->size.offset =
rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));
}
return rc;
}
5c97a: 2002 movel %d2,%d0 <== NOT EXECUTED
5c97c: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
5c982: 4e5e unlk %fp <== NOT EXECUTED
5c984: 4e75 rts <== NOT EXECUTED
bool read)
{
bool atime;
bool mtime;
bool length;
int rc = 0;
5c986: 4282 clrl %d2 <== NOT EXECUTED
* the size with the new length. The map holds the block count.
*/
handle->bpos.boff += size;
if (handle->bpos.boff >=
rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))
5c988: 226a 001a moveal %a2@(26),%a1 <== NOT EXECUTED
* increase the block number and adjust the offset.
*
* If we are the last block and the position is past the current size update
* the size with the new length. The map holds the block count.
*/
handle->bpos.boff += size;
5c98c: d8aa 0012 addl %a2@(18),%d4 <== NOT EXECUTED
if (handle->bpos.boff >=
rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))
5c990: 2069 0090 moveal %a1@(144),%a0 <== NOT EXECUTED
5c994: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
* increase the block number and adjust the offset.
*
* If we are the last block and the position is past the current size update
* the size with the new length. The map holds the block count.
*/
handle->bpos.boff += size;
5c998: 2544 0012 movel %d4,%a2@(18) <== NOT EXECUTED
if (handle->bpos.boff >=
5c99c: b084 cmpl %d4,%d0 <== NOT EXECUTED
5c99e: 620a bhis 5c9aa <rtems_rfs_file_io_end+0xce> <== NOT EXECUTED
rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))
{
handle->bpos.bno++;
handle->bpos.boff -= rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
5c9a0: 9880 subl %d0,%d4 <== NOT EXECUTED
handle->bpos.boff += size;
if (handle->bpos.boff >=
rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))
{
handle->bpos.bno++;
5c9a2: 52aa 000e addql #1,%a2@(14) <== NOT EXECUTED
handle->bpos.boff -= rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
5c9a6: 2544 0012 movel %d4,%a2@(18) <== NOT EXECUTED
}
length = false;
mtime = false;
if (!read &&
5c9aa: 4a03 tstb %d3 <== NOT EXECUTED
5c9ac: 6600 00e4 bnew 5ca92 <rtems_rfs_file_io_end+0x1b6> <== NOT EXECUTED
rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),
5c9b0: 202a 000e movel %a2@(14),%d0 <== NOT EXECUTED
5c9b4: 2229 0038 movel %a1@(56),%d1 <== NOT EXECUTED
}
length = false;
mtime = false;
if (!read &&
5c9b8: 4a80 tstl %d0 <== NOT EXECUTED
5c9ba: 6700 00ca beqw 5ca86 <rtems_rfs_file_io_end+0x1aa> <== NOT EXECUTED
rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),
5c9be: 4a81 tstl %d1 <== NOT EXECUTED
5c9c0: 6600 00c4 bnew 5ca86 <rtems_rfs_file_io_end+0x1aa> <== NOT EXECUTED
5c9c4: 222a 0012 movel %a2@(18),%d1 <== NOT EXECUTED
handle->bpos.boff);
length = true;
mtime = true;
}
atime = rtems_rfs_file_update_atime (handle);
5c9c8: 2012 movel %a2@,%d0 <== NOT EXECUTED
mtime = rtems_rfs_file_update_mtime (handle) && mtime;
5c9ca: 2800 movel %d0,%d4 <== NOT EXECUTED
5c9cc: 7c01 moveq #1,%d6 <== NOT EXECUTED
5c9ce: e28c lsrl #1,%d4 <== NOT EXECUTED
handle->bpos.boff);
length = true;
mtime = true;
}
atime = rtems_rfs_file_update_atime (handle);
5c9d0: 2a00 movel %d0,%d5 <== NOT EXECUTED
5c9d2: 4685 notl %d5 <== NOT EXECUTED
*/
static inline void
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,
rtems_rfs_block_off offset)
{
map->size.offset = offset;
5c9d4: 2341 003c movel %d1,%a1@(60) <== NOT EXECUTED
mtime = rtems_rfs_file_update_mtime (handle) && mtime;
5c9d8: bd84 eorl %d6,%d4 <== NOT EXECUTED
map->dirty = true;
5c9da: 7201 moveq #1,%d1 <== NOT EXECUTED
handle->bpos.boff);
length = true;
mtime = true;
}
atime = rtems_rfs_file_update_atime (handle);
5c9dc: ca86 andl %d6,%d5 <== NOT EXECUTED
mtime = rtems_rfs_file_update_mtime (handle) && mtime;
5c9de: c886 andl %d6,%d4 <== NOT EXECUTED
5c9e0: 1341 0032 moveb %d1,%a1@(50) <== NOT EXECUTED
length = rtems_rfs_file_update_length (handle) && length;
5c9e4: 44c0 movew %d0,%ccr <== NOT EXECUTED
5c9e6: 6700 00b4 beqw 5ca9c <rtems_rfs_file_io_end+0x1c0> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c9ea: 42a7 clrl %sp@- <== NOT EXECUTED
5c9ec: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
5c9f0: 4e93 jsr %a3@ <== NOT EXECUTED
5c9f2: 508f addql #8,%sp <== NOT EXECUTED
5c9f4: 4a00 tstb %d0 <== NOT EXECUTED
5c9f6: 6700 014c beqw 5cb44 <rtems_rfs_file_io_end+0x268> <== NOT EXECUTED
printf ("rtems-rfs: file-io: end: pos=%" PRIu32 ":%" PRIu32 " %c %c %c\n",
5c9fa: 307c 004c moveaw #76,%a0 <== NOT EXECUTED
mtime = true;
}
atime = rtems_rfs_file_update_atime (handle);
mtime = rtems_rfs_file_update_mtime (handle) && mtime;
length = rtems_rfs_file_update_length (handle) && length;
5c9fe: 7c01 moveq #1,%d6 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-io: end: pos=%" PRIu32 ":%" PRIu32 " %c %c %c\n",
5ca00: 4a04 tstb %d4 <== NOT EXECUTED
5ca02: 6700 0114 beqw 5cb18 <rtems_rfs_file_io_end+0x23c> <== NOT EXECUTED
5ca06: 724d moveq #77,%d1 <== NOT EXECUTED
5ca08: 4a05 tstb %d5 <== NOT EXECUTED
5ca0a: 6700 0114 beqw 5cb20 <rtems_rfs_file_io_end+0x244> <== NOT EXECUTED
5ca0e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5ca10: 7041 moveq #65,%d0 <== NOT EXECUTED
5ca12: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5ca14: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ca16: 2f2a 0012 movel %a2@(18),%sp@- <== NOT EXECUTED
5ca1a: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED
5ca1e: 4879 0007 3000 pea 73000 <CSWTCH.2+0xf38> <== NOT EXECUTED
5ca24: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5ca2a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
handle->bpos.bno, handle->bpos.boff,
atime ? 'A' : '-', mtime ? 'M' : '-', length ? 'L' : '-');
if (atime || mtime)
5ca2e: 4a05 tstb %d5 <== NOT EXECUTED
5ca30: 667e bnes 5cab0 <rtems_rfs_file_io_end+0x1d4> <== NOT EXECUTED
5ca32: 4a04 tstb %d4 <== NOT EXECUTED
5ca34: 6710 beqs 5ca46 <rtems_rfs_file_io_end+0x16a> <== NOT EXECUTED
{
time_t now = time (NULL);
5ca36: 42a7 clrl %sp@- <== NOT EXECUTED
5ca38: 4eb9 0006 503c jsr 6503c <time> <== NOT EXECUTED
if (read && atime)
5ca3e: 588f addql #4,%sp <== NOT EXECUTED
5ca40: 4a03 tstb %d3 <== NOT EXECUTED
5ca42: 6700 00bc beqw 5cb00 <rtems_rfs_file_io_end+0x224> <== NOT EXECUTED
handle->shared->atime = now;
if (!read && mtime)
handle->shared->mtime = now;
}
if (length)
5ca46: 4a06 tstb %d6 <== NOT EXECUTED
5ca48: 6700 ff30 beqw 5c97a <rtems_rfs_file_io_end+0x9e> <== NOT EXECUTED
{
handle->shared->size.count =
rtems_rfs_block_map_count (rtems_rfs_file_map (handle));
5ca4c: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
handle->shared->size.offset =
rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));
}
return rc;
}
5ca50: 2002 movel %d2,%d0 <== NOT EXECUTED
5ca52: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
if (!read && mtime)
handle->shared->mtime = now;
}
if (length)
{
handle->shared->size.count =
5ca58: 2168 0038 007c movel %a0@(56),%a0@(124) <== NOT EXECUTED
handle->shared->size.offset =
rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));
}
return rc;
}
5ca5e: 4e5e unlk %fp <== NOT EXECUTED
}
if (length)
{
handle->shared->size.count =
rtems_rfs_block_map_count (rtems_rfs_file_map (handle));
handle->shared->size.offset =
5ca60: 2168 003c 0080 movel %a0@(60),%a0@(128) <== NOT EXECUTED
rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));
}
return rc;
}
5ca66: 4e75 rts <== NOT EXECUTED
bool mtime;
bool length;
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-io: end: %s size=%zu\n",
5ca68: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5ca6a: 203c 0007 2edf movel #470751,%d0 <== NOT EXECUTED
5ca70: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ca72: 4879 0007 2f96 pea 72f96 <CSWTCH.2+0xece> <== NOT EXECUTED
5ca78: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5ca7e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5ca82: 6000 fea0 braw 5c924 <rtems_rfs_file_io_end+0x48> <== NOT EXECUTED
length = false;
mtime = false;
if (!read &&
rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),
5ca86: b280 cmpl %d0,%d1 <== NOT EXECUTED
5ca88: 6300 ff3a blsw 5c9c4 <rtems_rfs_file_io_end+0xe8> <== NOT EXECUTED
5ca8c: 5381 subql #1,%d1 <== NOT EXECUTED
5ca8e: b280 cmpl %d0,%d1 <== NOT EXECUTED
5ca90: 675a beqs 5caec <rtems_rfs_file_io_end+0x210> <== NOT EXECUTED
handle->bpos.boff);
length = true;
mtime = true;
}
atime = rtems_rfs_file_update_atime (handle);
5ca92: 7a01 moveq #1,%d5 <== NOT EXECUTED
5ca94: 7001 moveq #1,%d0 <== NOT EXECUTED
5ca96: ca92 andl %a2@,%d5 <== NOT EXECUTED
mtime = rtems_rfs_file_update_mtime (handle) && mtime;
5ca98: 4204 clrb %d4 <== NOT EXECUTED
handle->bpos.boff);
length = true;
mtime = true;
}
atime = rtems_rfs_file_update_atime (handle);
5ca9a: b185 eorl %d0,%d5 <== NOT EXECUTED
mtime = rtems_rfs_file_update_mtime (handle) && mtime;
length = rtems_rfs_file_update_length (handle) && length;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5ca9c: 42a7 clrl %sp@- <== NOT EXECUTED
5ca9e: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
5caa2: 4e93 jsr %a3@ <== NOT EXECUTED
5caa4: 508f addql #8,%sp <== NOT EXECUTED
5caa6: 4a00 tstb %d0 <== NOT EXECUTED
5caa8: 6662 bnes 5cb0c <rtems_rfs_file_io_end+0x230> <== NOT EXECUTED
mtime = true;
}
atime = rtems_rfs_file_update_atime (handle);
mtime = rtems_rfs_file_update_mtime (handle) && mtime;
length = rtems_rfs_file_update_length (handle) && length;
5caaa: 4206 clrb %d6 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-io: end: pos=%" PRIu32 ":%" PRIu32 " %c %c %c\n",
handle->bpos.bno, handle->bpos.boff,
atime ? 'A' : '-', mtime ? 'M' : '-', length ? 'L' : '-');
if (atime || mtime)
5caac: 4a05 tstb %d5 <== NOT EXECUTED
5caae: 6782 beqs 5ca32 <rtems_rfs_file_io_end+0x156> <== NOT EXECUTED
{
time_t now = time (NULL);
5cab0: 42a7 clrl %sp@- <== NOT EXECUTED
5cab2: 4eb9 0006 503c jsr 6503c <time> <== NOT EXECUTED
if (read && atime)
5cab8: 588f addql #4,%sp <== NOT EXECUTED
5caba: 4a03 tstb %d3 <== NOT EXECUTED
5cabc: 673c beqs 5cafa <rtems_rfs_file_io_end+0x21e> <== NOT EXECUTED
handle->shared->atime = now;
5cabe: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5cac2: 2140 0084 movel %d0,%a0@(132) <== NOT EXECUTED
5cac6: 6000 ff7e braw 5ca46 <rtems_rfs_file_io_end+0x16a> <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));
rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
rtems_rfs_file_buffer (handle));
if (rc > 0)
{
printf (
5caca: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5cacc: 223c 0007 1e6b movel #466539,%d1 <== NOT EXECUTED
5cad2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5cad4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5cad6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5cad8: 4879 0007 2fbe pea 72fbe <CSWTCH.2+0xef6> <== NOT EXECUTED
5cade: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
"rtems-rfs: file-io: end: error on release: %s size=%zu: %d: %s\n",
read ? "read" : "write", size, rc, strerror (rc));
return rc;
5cae4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5cae8: 6000 fe90 braw 5c97a <rtems_rfs_file_io_end+0x9e> <== NOT EXECUTED
length = false;
mtime = false;
if (!read &&
rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),
5caec: 222a 0012 movel %a2@(18),%d1 <== NOT EXECUTED
5caf0: b2a9 003c cmpl %a1@(60),%d1 <== NOT EXECUTED
5caf4: 639c blss 5ca92 <rtems_rfs_file_io_end+0x1b6> <== NOT EXECUTED
5caf6: 6000 fed0 braw 5c9c8 <rtems_rfs_file_io_end+0xec> <== NOT EXECUTED
if (atime || mtime)
{
time_t now = time (NULL);
if (read && atime)
handle->shared->atime = now;
if (!read && mtime)
5cafa: 4a04 tstb %d4 <== NOT EXECUTED
5cafc: 6700 ff48 beqw 5ca46 <rtems_rfs_file_io_end+0x16a> <== NOT EXECUTED
handle->shared->mtime = now;
5cb00: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5cb04: 2140 0088 movel %d0,%a0@(136) <== NOT EXECUTED
5cb08: 6000 ff3c braw 5ca46 <rtems_rfs_file_io_end+0x16a> <== NOT EXECUTED
atime = rtems_rfs_file_update_atime (handle);
mtime = rtems_rfs_file_update_mtime (handle) && mtime;
length = rtems_rfs_file_update_length (handle) && length;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-io: end: pos=%" PRIu32 ":%" PRIu32 " %c %c %c\n",
5cb0c: 307c 002d moveaw #45,%a0 <== NOT EXECUTED
mtime = true;
}
atime = rtems_rfs_file_update_atime (handle);
mtime = rtems_rfs_file_update_mtime (handle) && mtime;
length = rtems_rfs_file_update_length (handle) && length;
5cb10: 4206 clrb %d6 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-io: end: pos=%" PRIu32 ":%" PRIu32 " %c %c %c\n",
5cb12: 4a04 tstb %d4 <== NOT EXECUTED
5cb14: 6600 fef0 bnew 5ca06 <rtems_rfs_file_io_end+0x12a> <== NOT EXECUTED
5cb18: 722d moveq #45,%d1 <== NOT EXECUTED
5cb1a: 4a05 tstb %d5 <== NOT EXECUTED
5cb1c: 6600 fef0 bnew 5ca0e <rtems_rfs_file_io_end+0x132> <== NOT EXECUTED
5cb20: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5cb22: 702d moveq #45,%d0 <== NOT EXECUTED
5cb24: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5cb26: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5cb28: 2f2a 0012 movel %a2@(18),%sp@- <== NOT EXECUTED
5cb2c: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED
5cb30: 4879 0007 3000 pea 73000 <CSWTCH.2+0xf38> <== NOT EXECUTED
5cb36: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5cb3c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
5cb40: 6000 feec braw 5ca2e <rtems_rfs_file_io_end+0x152> <== NOT EXECUTED
mtime = true;
}
atime = rtems_rfs_file_update_atime (handle);
mtime = rtems_rfs_file_update_mtime (handle) && mtime;
length = rtems_rfs_file_update_length (handle) && length;
5cb44: 7c01 moveq #1,%d6 <== NOT EXECUTED
5cb46: 6000 fee6 braw 5ca2e <rtems_rfs_file_io_end+0x152> <== NOT EXECUTED
0005cb4a <rtems_rfs_file_io_release>:
return rc;
}
int
rtems_rfs_file_io_release (rtems_rfs_file_handle* handle)
{
5cb4a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5cb4e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
int rc = 0;
if (rtems_rfs_buffer_handle_has_block (&handle->buffer))
5cb52: 4aa8 000a tstl %a0@(10) <== NOT EXECUTED
5cb56: 6718 beqs 5cb70 <rtems_rfs_file_io_release+0x26> <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
5cb58: 4868 0004 pea %a0@(4) <== NOT EXECUTED
5cb5c: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
5cb60: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5cb64: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
5cb6a: 508f addql #8,%sp <== NOT EXECUTED
rtems_rfs_file_buffer (handle));
return rc;
}
5cb6c: 4e5e unlk %fp <== NOT EXECUTED
5cb6e: 4e75 rts <== NOT EXECUTED
}
int
rtems_rfs_file_io_release (rtems_rfs_file_handle* handle)
{
int rc = 0;
5cb70: 4280 clrl %d0 <== NOT EXECUTED
if (rtems_rfs_buffer_handle_has_block (&handle->buffer))
rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
rtems_rfs_file_buffer (handle));
return rc;
}
5cb72: 4e5e unlk %fp <== NOT EXECUTED
0005c67e <rtems_rfs_file_io_start>:
int
rtems_rfs_file_io_start (rtems_rfs_file_handle* handle,
size_t* available,
bool read)
{
5c67e: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
5c682: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
size_t size;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c686: 42a7 clrl %sp@- <== NOT EXECUTED
5c688: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
5c68c: 47f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a3 <== NOT EXECUTED
int
rtems_rfs_file_io_start (rtems_rfs_file_handle* handle,
size_t* available,
bool read)
{
5c692: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5c696: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
5c69a: 142e 0013 moveb %fp@(19),%d2 <== NOT EXECUTED
size_t size;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c69e: 4e93 jsr %a3@ <== NOT EXECUTED
5c6a0: 508f addql #8,%sp <== NOT EXECUTED
5c6a2: 4a00 tstb %d0 <== NOT EXECUTED
5c6a4: 672a beqs 5c6d0 <rtems_rfs_file_io_start+0x52> <== NOT EXECUTED
printf ("rtems-rfs: file-io: start: %s pos=%" PRIu32 ":%" PRIu32 "\n",
5c6a6: 206a 0012 moveal %a2@(18),%a0 <== NOT EXECUTED
5c6aa: 222a 000e movel %a2@(14),%d1 <== NOT EXECUTED
5c6ae: 4a02 tstb %d2 <== NOT EXECUTED
5c6b0: 6700 00aa beqw 5c75c <rtems_rfs_file_io_start+0xde> <== NOT EXECUTED
5c6b4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5c6b6: 203c 0007 1e6b movel #466539,%d0 <== NOT EXECUTED
5c6bc: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5c6be: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c6c0: 4879 0007 2ee5 pea 72ee5 <CSWTCH.2+0xe1d> <== NOT EXECUTED
5c6c6: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c6cc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
read ? "read" : "write", handle->bpos.bno, handle->bpos.boff);
if (!rtems_rfs_buffer_handle_has_block (&handle->buffer))
5c6d0: 4aaa 000a tstl %a2@(10) <== NOT EXECUTED
5c6d4: 6700 00a6 beqw 5c77c <rtems_rfs_file_io_start+0xfe> <== NOT EXECUTED
if (rc > 0)
return rc;
}
if (read
&& rtems_rfs_block_map_last (rtems_rfs_file_map (handle))
5c6d8: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
block, request_read);
if (rc > 0)
return rc;
}
if (read
5c6dc: 4a02 tstb %d2 <== NOT EXECUTED
5c6de: 673e beqs 5c71e <rtems_rfs_file_io_start+0xa0> <== NOT EXECUTED
&& rtems_rfs_block_map_last (rtems_rfs_file_map (handle))
5c6e0: 2028 0040 movel %a0@(64),%d0 <== NOT EXECUTED
5c6e4: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED
5c6e8: 4a80 tstl %d0 <== NOT EXECUTED
5c6ea: 662c bnes 5c718 <rtems_rfs_file_io_start+0x9a> <== NOT EXECUTED
5c6ec: 4a81 tstl %d1 <== NOT EXECUTED
5c6ee: 6628 bnes 5c718 <rtems_rfs_file_io_start+0x9a> <== NOT EXECUTED
&& rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle)))
5c6f0: 2428 003c movel %a0@(60),%d2 <== NOT EXECUTED
5c6f4: 6728 beqs 5c71e <rtems_rfs_file_io_start+0xa0> <== NOT EXECUTED
size = rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));
else
size = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
*available = size - rtems_rfs_file_block_offset (handle);
5c6f6: 2002 movel %d2,%d0 <== NOT EXECUTED
5c6f8: 90aa 0012 subl %a2@(18),%d0 <== NOT EXECUTED
5c6fc: 2880 movel %d0,%a4@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c6fe: 42a7 clrl %sp@- <== NOT EXECUTED
5c700: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
5c704: 4e93 jsr %a3@ <== NOT EXECUTED
5c706: 508f addql #8,%sp <== NOT EXECUTED
5c708: 4a00 tstb %d0 <== NOT EXECUTED
5c70a: 6630 bnes 5c73c <rtems_rfs_file_io_start+0xbe> <== NOT EXECUTED
printf ("rtems-rfs: file-io: start: available=%zu (%zu)\n",
*available, size);
return 0;
5c70c: 4280 clrl %d0 <== NOT EXECUTED
}
5c70e: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
5c714: 4e5e unlk %fp <== NOT EXECUTED
5c716: 4e75 rts <== NOT EXECUTED
if (rc > 0)
return rc;
}
if (read
&& rtems_rfs_block_map_last (rtems_rfs_file_map (handle))
5c718: 5381 subql #1,%d1 <== NOT EXECUTED
5c71a: b280 cmpl %d0,%d1 <== NOT EXECUTED
5c71c: 67d2 beqs 5c6f0 <rtems_rfs_file_io_start+0x72> <== NOT EXECUTED
&& rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle)))
size = rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));
else
size = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
5c71e: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
5c722: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
*available = size - rtems_rfs_file_block_offset (handle);
5c726: 2002 movel %d2,%d0 <== NOT EXECUTED
5c728: 90aa 0012 subl %a2@(18),%d0 <== NOT EXECUTED
5c72c: 2880 movel %d0,%a4@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c72e: 42a7 clrl %sp@- <== NOT EXECUTED
5c730: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
5c734: 4e93 jsr %a3@ <== NOT EXECUTED
5c736: 508f addql #8,%sp <== NOT EXECUTED
5c738: 4a00 tstb %d0 <== NOT EXECUTED
5c73a: 67d0 beqs 5c70c <rtems_rfs_file_io_start+0x8e> <== NOT EXECUTED
printf ("rtems-rfs: file-io: start: available=%zu (%zu)\n",
5c73c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c73e: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
5c740: 4879 0007 2f66 pea 72f66 <CSWTCH.2+0xe9e> <== NOT EXECUTED
5c746: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c74c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*available, size);
return 0;
5c750: 4280 clrl %d0 <== NOT EXECUTED
}
5c752: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
5c758: 4e5e unlk %fp <== NOT EXECUTED
5c75a: 4e75 rts <== NOT EXECUTED
bool read)
{
size_t size;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-io: start: %s pos=%" PRIu32 ":%" PRIu32 "\n",
5c75c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5c75e: 203c 0007 2edf movel #470751,%d0 <== NOT EXECUTED
5c764: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5c766: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c768: 4879 0007 2ee5 pea 72ee5 <CSWTCH.2+0xe1d> <== NOT EXECUTED
5c76e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c774: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5c778: 6000 ff56 braw 5c6d0 <rtems_rfs_file_io_start+0x52> <== NOT EXECUTED
bool request_read;
int rc;
request_read = read;
rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),
5c77c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5c780: 486a 000e pea %a2@(14) <== NOT EXECUTED
rtems_rfs_file_map (handle),
5c784: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
bool request_read;
int rc;
request_read = read;
rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),
5c788: 4868 0032 pea %a0@(50) <== NOT EXECUTED
5c78c: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5c790: 4eb9 0005 95dc jsr 595dc <rtems_rfs_block_map_find> <== NOT EXECUTED
rtems_rfs_file_map (handle),
rtems_rfs_file_bpos (handle),
&block);
if (rc > 0)
5c796: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5c79a: 4a80 tstl %d0 <== NOT EXECUTED
5c79c: 6f1c bles 5c7ba <rtems_rfs_file_io_start+0x13c> <== NOT EXECUTED
{
/*
* Has the read reached the EOF ?
*/
if (read && (rc == ENXIO))
5c79e: 7206 moveq #6,%d1 <== NOT EXECUTED
5c7a0: 4a02 tstb %d2 <== NOT EXECUTED
5c7a2: 6700 0090 beqw 5c834 <rtems_rfs_file_io_start+0x1b6> <== NOT EXECUTED
5c7a6: b280 cmpl %d0,%d1 <== NOT EXECUTED
5c7a8: 6600 ff64 bnew 5c70e <rtems_rfs_file_io_start+0x90> <== NOT EXECUTED
{
*available = 0;
5c7ac: 4294 clrl %a4@ <== NOT EXECUTED
return 0;
5c7ae: 4280 clrl %d0 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-io: start: available=%zu (%zu)\n",
*available, size);
return 0;
}
5c7b0: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
5c7b6: 4e5e unlk %fp <== NOT EXECUTED
5c7b8: 4e75 rts <== NOT EXECUTED
/*
* If this is a write check if the write starts within a block or the
* amount of data is less than a block size. If it is read the block
* rather than getting a block to fill.
*/
if (!read &&
5c7ba: 4a02 tstb %d2 <== NOT EXECUTED
5c7bc: 6600 00f6 bnew 5c8b4 <rtems_rfs_file_io_start+0x236> <== NOT EXECUTED
5c7c0: 4aaa 0012 tstl %a2@(18) <== NOT EXECUTED
5c7c4: 6612 bnes 5c7d8 <rtems_rfs_file_io_start+0x15a> <== NOT EXECUTED
(rtems_rfs_file_block_offset (handle) ||
(*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
5c7c6: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5c7ca: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
* If this is a write check if the write starts within a block or the
* amount of data is less than a block size. If it is read the block
* rather than getting a block to fill.
*/
if (!read &&
(rtems_rfs_file_block_offset (handle) ||
5c7ce: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
5c7d2: b1d4 cmpal %a4@,%a0 <== NOT EXECUTED
5c7d4: 6300 00a4 blsw 5c87a <rtems_rfs_file_io_start+0x1fc> <== NOT EXECUTED
(*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
request_read = true;
5c7d8: 7601 moveq #1,%d3 <== NOT EXECUTED
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c7da: 42a7 clrl %sp@- <== NOT EXECUTED
5c7dc: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
5c7e0: 4e93 jsr %a3@ <== NOT EXECUTED
5c7e2: 508f addql #8,%sp <== NOT EXECUTED
5c7e4: 4a00 tstb %d0 <== NOT EXECUTED
5c7e6: 671c beqs 5c804 <rtems_rfs_file_io_start+0x186> <== NOT EXECUTED
printf ("rtems-rfs: file-io: start: block=%" PRIu32 " request-read=%s\n",
5c7e8: 203c 0007 19c4 movel #465348,%d0 <== NOT EXECUTED
5c7ee: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c7f0: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
5c7f4: 4879 0007 2f30 pea 72f30 <CSWTCH.2+0xe68> <== NOT EXECUTED
5c7fa: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c800: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
block, request_read ? "yes" : "no");
rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle),
5c804: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5c808: 4280 clrl %d0 <== NOT EXECUTED
5c80a: 1003 moveb %d3,%d0 <== NOT EXECUTED
5c80c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c80e: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
5c812: 486a 0004 pea %a2@(4) <== NOT EXECUTED
5c816: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5c81a: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request> <== NOT EXECUTED
rtems_rfs_file_buffer (handle),
block, request_read);
if (rc > 0)
5c820: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5c824: 4a80 tstl %d0 <== NOT EXECUTED
5c826: 6f00 feb0 blew 5c6d8 <rtems_rfs_file_io_start+0x5a> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-io: start: available=%zu (%zu)\n",
*available, size);
return 0;
}
5c82a: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
5c830: 4e5e unlk %fp <== NOT EXECUTED
5c832: 4e75 rts <== NOT EXECUTED
{
*available = 0;
return 0;
}
if (rc != ENXIO)
5c834: b280 cmpl %d0,%d1 <== NOT EXECUTED
5c836: 6600 fed6 bnew 5c70e <rtems_rfs_file_io_start+0x90> <== NOT EXECUTED
return rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c83a: 42a7 clrl %sp@- <== NOT EXECUTED
5c83c: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
5c840: 4e93 jsr %a3@ <== NOT EXECUTED
5c842: 508f addql #8,%sp <== NOT EXECUTED
5c844: 4a00 tstb %d0 <== NOT EXECUTED
5c846: 670e beqs 5c856 <rtems_rfs_file_io_start+0x1d8> <== NOT EXECUTED
printf ("rtems-rfs: file-io: start: grow\n");
5c848: 4879 0007 2f10 pea 72f10 <CSWTCH.2+0xe48> <== NOT EXECUTED
5c84e: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5c854: 588f addql #4,%sp <== NOT EXECUTED
rc = rtems_rfs_block_map_grow (rtems_rfs_file_fs (handle),
5c856: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5c85a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
rtems_rfs_file_map (handle),
5c85e: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
return rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-io: start: grow\n");
rc = rtems_rfs_block_map_grow (rtems_rfs_file_fs (handle),
5c862: 4868 0032 pea %a0@(50) <== NOT EXECUTED
5c866: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5c86a: 4eb9 0005 97a8 jsr 597a8 <rtems_rfs_block_map_grow> <== NOT EXECUTED
rtems_rfs_file_map (handle),
1, &block);
if (rc > 0)
5c870: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5c874: 4a80 tstl %d0 <== NOT EXECUTED
5c876: 6e00 fe96 bgtw 5c70e <rtems_rfs_file_io_start+0x90> <== NOT EXECUTED
(rtems_rfs_file_block_offset (handle) ||
(*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
request_read = true;
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c87a: 42a7 clrl %sp@- <== NOT EXECUTED
5c87c: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
5c880: 4e93 jsr %a3@ <== NOT EXECUTED
5c882: 508f addql #8,%sp <== NOT EXECUTED
5c884: 4a00 tstb %d0 <== NOT EXECUTED
5c886: 6632 bnes 5c8ba <rtems_rfs_file_io_start+0x23c> <== NOT EXECUTED
printf ("rtems-rfs: file-io: start: block=%" PRIu32 " request-read=%s\n",
block, request_read ? "yes" : "no");
rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle),
5c888: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5c88c: 4280 clrl %d0 <== NOT EXECUTED
(rtems_rfs_file_block_offset (handle) ||
(*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
request_read = true;
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c88e: 4203 clrb %d3 <== NOT EXECUTED
printf ("rtems-rfs: file-io: start: block=%" PRIu32 " request-read=%s\n",
block, request_read ? "yes" : "no");
rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle),
5c890: 1003 moveb %d3,%d0 <== NOT EXECUTED
5c892: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c894: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
5c898: 486a 0004 pea %a2@(4) <== NOT EXECUTED
5c89c: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5c8a0: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request> <== NOT EXECUTED
rtems_rfs_file_buffer (handle),
block, request_read);
if (rc > 0)
5c8a6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5c8aa: 4a80 tstl %d0 <== NOT EXECUTED
5c8ac: 6e00 ff7c bgtw 5c82a <rtems_rfs_file_io_start+0x1ac> <== NOT EXECUTED
5c8b0: 6000 fe26 braw 5c6d8 <rtems_rfs_file_io_start+0x5a> <== NOT EXECUTED
/*
* If this is a write check if the write starts within a block or the
* amount of data is less than a block size. If it is read the block
* rather than getting a block to fill.
*/
if (!read &&
5c8b4: 1602 moveb %d2,%d3 <== NOT EXECUTED
5c8b6: 6000 ff22 braw 5c7da <rtems_rfs_file_io_start+0x15c> <== NOT EXECUTED
(*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
request_read = true;
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-io: start: block=%" PRIu32 " request-read=%s\n",
5c8ba: 203c 0007 1dff movel #466431,%d0 <== NOT EXECUTED
5c8c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c8c2: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
5c8c6: 4879 0007 2f30 pea 72f30 <CSWTCH.2+0xe68> <== NOT EXECUTED
(rtems_rfs_file_block_offset (handle) ||
(*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
request_read = true;
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5c8cc: 4203 clrb %d3 <== NOT EXECUTED
printf ("rtems-rfs: file-io: start: block=%" PRIu32 " request-read=%s\n",
5c8ce: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c8d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5c8d8: 6000 ff2a braw 5c804 <rtems_rfs_file_io_start+0x186> <== NOT EXECUTED
0005bebc <rtems_rfs_file_open>:
int
rtems_rfs_file_open (rtems_rfs_file_system* fs,
rtems_rfs_ino ino,
int oflag,
rtems_rfs_file_handle** file)
{
5bebc: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
5bec0: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_rfs_file_handle* handle;
rtems_rfs_file_shared* shared;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
5bec4: 42a7 clrl %sp@- <== NOT EXECUTED
5bec6: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
5beca: 283c 0005 2ef8 movel #339704,%d4 <== NOT EXECUTED
5bed0: 2044 moveal %d4,%a0 <== NOT EXECUTED
int
rtems_rfs_file_open (rtems_rfs_file_system* fs,
rtems_rfs_ino ino,
int oflag,
rtems_rfs_file_handle** file)
{
5bed2: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
rtems_rfs_file_handle* handle;
rtems_rfs_file_shared* shared;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
5bed6: 4e90 jsr %a0@ <== NOT EXECUTED
5bed8: 508f addql #8,%sp <== NOT EXECUTED
5beda: 4a00 tstb %d0 <== NOT EXECUTED
5bedc: 6600 00ea bnew 5bfc8 <rtems_rfs_file_open+0x10c> <== NOT EXECUTED
/*
* Allocate a new handle and initialise it. Do this before we deal with the
* shared node data so we do not have to be concerned with reference
* counting.
*/
handle = malloc (sizeof (rtems_rfs_file_handle));
5bee0: 4878 001e pea 1e <OPER2+0xa> <== NOT EXECUTED
5bee4: 47f9 0004 794c lea 4794c <malloc>,%a3 <== NOT EXECUTED
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 "\n", ino);
*file = NULL;
5beea: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
5beee: 4291 clrl %a1@ <== NOT EXECUTED
/*
* Allocate a new handle and initialise it. Do this before we deal with the
* shared node data so we do not have to be concerned with reference
* counting.
*/
handle = malloc (sizeof (rtems_rfs_file_handle));
5bef0: 4e93 jsr %a3@ <== NOT EXECUTED
if (!handle)
5bef2: 588f addql #4,%sp <== NOT EXECUTED
/*
* Allocate a new handle and initialise it. Do this before we deal with the
* shared node data so we do not have to be concerned with reference
* counting.
*/
handle = malloc (sizeof (rtems_rfs_file_handle));
5bef4: 2a40 moveal %d0,%a5 <== NOT EXECUTED
if (!handle)
5bef6: 4a80 tstl %d0 <== NOT EXECUTED
5bef8: 6700 00fa beqw 5bff4 <rtems_rfs_file_open+0x138> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
const Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Immutable_tail( the_chain ));
5befc: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
return ENOMEM;
memset (handle, 0, sizeof (rtems_rfs_file_handle));
5bf00: 2840 moveal %d0,%a4 <== NOT EXECUTED
5bf02: 0681 0000 0078 addil #120,%d1 <== NOT EXECUTED
5bf08: 429c clrl %a4@+ <== NOT EXECUTED
5bf0a: 204c moveal %a4,%a0 <== NOT EXECUTED
5bf0c: 4298 clrl %a0@+ <== NOT EXECUTED
5bf0e: 5888 addql #4,%a0 <== NOT EXECUTED
5bf10: 4298 clrl %a0@+ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(
Chain_Control *the_chain
)
{
return _Chain_Head( the_chain )->next;
5bf12: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
5bf16: 2469 0074 moveal %a1@(116),%a2 <== NOT EXECUTED
5bf1a: 4298 clrl %a0@+ <== NOT EXECUTED
5bf1c: 4298 clrl %a0@+ <== NOT EXECUTED
5bf1e: 4298 clrl %a0@+ <== NOT EXECUTED
5bf20: 4250 clrw %a0@ <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
handle->bnum = 0;
5bf22: 42ad 0006 clrl %a5@(6) <== NOT EXECUTED
handle->buffer = NULL;
5bf26: 42ad 000a clrl %a5@(10) <== NOT EXECUTED
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,
rtems_rfs_ino ino)
{
rtems_chain_node* node;
node = rtems_chain_first (&fs->file_shares);
while (!rtems_chain_is_tail (&fs->file_shares, node))
5bf2a: b28a cmpl %a2,%d1 <== NOT EXECUTED
5bf2c: 670e beqs 5bf3c <rtems_rfs_file_open+0x80> <== NOT EXECUTED
{
rtems_rfs_file_shared* shared;
shared = (rtems_rfs_file_shared*) node;
if (shared->inode.ino == ino)
5bf2e: b4aa 0014 cmpl %a2@(20),%d2 <== NOT EXECUTED
5bf32: 6700 00ce beqw 5c002 <rtems_rfs_file_open+0x146> <== NOT EXECUTED
return shared;
node = rtems_chain_next (node);
}
return NULL;
}
5bf36: 2452 moveal %a2@,%a2 <== NOT EXECUTED
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,
rtems_rfs_ino ino)
{
rtems_chain_node* node;
node = rtems_chain_first (&fs->file_shares);
while (!rtems_chain_is_tail (&fs->file_shares, node))
5bf38: b28a cmpl %a2,%d1 <== NOT EXECUTED
5bf3a: 66f2 bnes 5bf2e <rtems_rfs_file_open+0x72> <== NOT EXECUTED
{
/*
* None exists so create. Copy in the shared parts of the inode we hold in
* memory.
*/
shared = malloc (sizeof (rtems_rfs_file_shared));
5bf3c: 4878 0094 pea 94 <DBL_MANT_DIG+0x5f> <== NOT EXECUTED
5bf40: 4e93 jsr %a3@ <== NOT EXECUTED
if (!shared)
5bf42: 588f addql #4,%sp <== NOT EXECUTED
{
/*
* None exists so create. Copy in the shared parts of the inode we hold in
* memory.
*/
shared = malloc (sizeof (rtems_rfs_file_shared));
5bf44: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (!shared)
5bf46: 4a80 tstl %d0 <== NOT EXECUTED
5bf48: 6700 021a beqw 5c164 <rtems_rfs_file_open+0x2a8> <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
return ENOMEM;
}
memset (shared, 0, sizeof (rtems_rfs_file_shared));
5bf4c: 4878 0094 pea 94 <DBL_MANT_DIG+0x5f> <== NOT EXECUTED
rc = rtems_rfs_inode_open (fs, ino, &shared->inode, true);
5bf50: 2c0a movel %a2,%d6 <== NOT EXECUTED
5bf52: 0686 0000 000c addil #12,%d6 <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
return ENOMEM;
}
memset (shared, 0, sizeof (rtems_rfs_file_shared));
5bf58: 42a7 clrl %sp@- <== NOT EXECUTED
5bf5a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bf5c: 4eb9 0006 159c jsr 6159c <memset> <== NOT EXECUTED
rc = rtems_rfs_inode_open (fs, ino, &shared->inode, true);
5bf62: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5bf66: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5bf68: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5bf6a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5bf6e: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc > 0)
5bf74: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
return ENOMEM;
}
memset (shared, 0, sizeof (rtems_rfs_file_shared));
rc = rtems_rfs_inode_open (fs, ino, &shared->inode, true);
5bf78: 2600 movel %d0,%d3 <== NOT EXECUTED
if (rc > 0)
5bf7a: 6f00 0124 blew 5c0a0 <rtems_rfs_file_open+0x1e4> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
5bf7e: 42a7 clrl %sp@- <== NOT EXECUTED
5bf80: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
5bf84: 2044 moveal %d4,%a0 <== NOT EXECUTED
5bf86: 4e90 jsr %a0@ <== NOT EXECUTED
5bf88: 508f addql #8,%sp <== NOT EXECUTED
5bf8a: 4a00 tstb %d0 <== NOT EXECUTED
5bf8c: 6600 00c6 bnew 5c054 <rtems_rfs_file_open+0x198> <== NOT EXECUTED
printf ("rtems-rfs: file-open: inode open failed: %d: %s\n",
rc, strerror (rc));
free (shared);
5bf90: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bf92: 45f9 0004 7344 lea 47344 <free>,%a2 <== NOT EXECUTED
5bf98: 4e92 jsr %a2@ <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5bf9a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5bf9c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5bfa0: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5bfa6: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5bfa8: 42ad 0006 clrl %a5@(6) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5bfac: 1b40 0004 moveb %d0,%a5@(4) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5bfb0: 42ad 000a clrl %a5@(10) <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
5bfb4: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5bfb6: 4e92 jsr %a2@ <== NOT EXECUTED
return rc;
5bfb8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
handle->shared = shared;
*file = handle;
return 0;
}
5bfbc: 2003 movel %d3,%d0 <== NOT EXECUTED
5bfbe: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
5bfc4: 4e5e unlk %fp <== NOT EXECUTED
5bfc6: 4e75 rts <== NOT EXECUTED
rtems_rfs_file_handle* handle;
rtems_rfs_file_shared* shared;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 "\n", ino);
5bfc8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5bfca: 4879 0007 2d45 pea 72d45 <CSWTCH.2+0xc7d> <== NOT EXECUTED
/*
* Allocate a new handle and initialise it. Do this before we deal with the
* shared node data so we do not have to be concerned with reference
* counting.
*/
handle = malloc (sizeof (rtems_rfs_file_handle));
5bfd0: 47f9 0004 794c lea 4794c <malloc>,%a3 <== NOT EXECUTED
rtems_rfs_file_handle* handle;
rtems_rfs_file_shared* shared;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 "\n", ino);
5bfd6: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5bfdc: 508f addql #8,%sp <== NOT EXECUTED
/*
* Allocate a new handle and initialise it. Do this before we deal with the
* shared node data so we do not have to be concerned with reference
* counting.
*/
handle = malloc (sizeof (rtems_rfs_file_handle));
5bfde: 4878 001e pea 1e <OPER2+0xa> <== NOT EXECUTED
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 "\n", ino);
*file = NULL;
5bfe2: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
5bfe6: 4291 clrl %a1@ <== NOT EXECUTED
/*
* Allocate a new handle and initialise it. Do this before we deal with the
* shared node data so we do not have to be concerned with reference
* counting.
*/
handle = malloc (sizeof (rtems_rfs_file_handle));
5bfe8: 4e93 jsr %a3@ <== NOT EXECUTED
if (!handle)
5bfea: 588f addql #4,%sp <== NOT EXECUTED
/*
* Allocate a new handle and initialise it. Do this before we deal with the
* shared node data so we do not have to be concerned with reference
* counting.
*/
handle = malloc (sizeof (rtems_rfs_file_handle));
5bfec: 2a40 moveal %d0,%a5 <== NOT EXECUTED
if (!handle)
5bfee: 4a80 tstl %d0 <== NOT EXECUTED
5bff0: 6600 ff0a bnew 5befc <rtems_rfs_file_open+0x40> <== NOT EXECUTED
return ENOMEM;
5bff4: 760c moveq #12,%d3 <== NOT EXECUTED
handle->shared = shared;
*file = handle;
return 0;
}
5bff6: 2003 movel %d3,%d0 <== NOT EXECUTED
5bff8: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
5bffe: 4e5e unlk %fp <== NOT EXECUTED
5c000: 4e75 rts <== NOT EXECUTED
* the reference count and return the pointer to the data.
*/
shared = rtems_rfs_file_get_shared (fs, ino);
if (shared)
{
shared->references++;
5c002: 52aa 0008 addql #1,%a2@(8) <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
5c006: 2244 moveal %d4,%a1 <== NOT EXECUTED
5c008: 42a7 clrl %sp@- <== NOT EXECUTED
5c00a: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
5c00e: 4e91 jsr %a1@ <== NOT EXECUTED
5c010: 508f addql #8,%sp <== NOT EXECUTED
5c012: 4a00 tstb %d0 <== NOT EXECUTED
5c014: 661c bnes 5c032 <rtems_rfs_file_open+0x176> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
}
handle->flags = oflag;
5c016: 2aae 0010 movel %fp@(16),%a5@ <== NOT EXECUTED
handle->shared = shared;
*file = handle;
return 0;
5c01a: 4283 clrl %d3 <== NOT EXECUTED
}
handle->flags = oflag;
handle->shared = shared;
*file = handle;
5c01c: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
}
handle->flags = oflag;
handle->shared = shared;
5c020: 2b4a 001a movel %a2,%a5@(26) <== NOT EXECUTED
*file = handle;
5c024: 208d movel %a5,%a0@ <== NOT EXECUTED
return 0;
}
5c026: 2003 movel %d3,%d0 <== NOT EXECUTED
5c028: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
5c02e: 4e5e unlk %fp <== NOT EXECUTED
5c030: 4e75 rts <== NOT EXECUTED
shared = rtems_rfs_file_get_shared (fs, ino);
if (shared)
{
shared->references++;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 " shared\n", ino);
5c032: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c034: 4879 0007 2d64 pea 72d64 <CSWTCH.2+0xc9c> <== NOT EXECUTED
handle->flags = oflag;
handle->shared = shared;
*file = handle;
return 0;
5c03a: 4283 clrl %d3 <== NOT EXECUTED
shared = rtems_rfs_file_get_shared (fs, ino);
if (shared)
{
shared->references++;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 " shared\n", ino);
5c03c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
}
handle->flags = oflag;
5c042: 2aae 0010 movel %fp@(16),%a5@ <== NOT EXECUTED
shared = rtems_rfs_file_get_shared (fs, ino);
if (shared)
{
shared->references++;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 " shared\n", ino);
5c046: 508f addql #8,%sp <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
}
handle->flags = oflag;
handle->shared = shared;
5c048: 2b4a 001a movel %a2,%a5@(26) <== NOT EXECUTED
*file = handle;
5c04c: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
5c050: 208d movel %a5,%a0@ <== NOT EXECUTED
5c052: 60d2 bras 5c026 <rtems_rfs_file_open+0x16a> <== NOT EXECUTED
rc = rtems_rfs_inode_open (fs, ino, &shared->inode, true);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: inode open failed: %d: %s\n",
5c054: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c056: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5c05c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c05e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c060: 4879 0007 2d8a pea 72d8a <CSWTCH.2+0xcc2> <== NOT EXECUTED
5c066: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c06c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
free (shared);
5c070: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c072: 45f9 0004 7344 lea 47344 <free>,%a2 <== NOT EXECUTED
5c078: 4e92 jsr %a2@ <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5c07a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5c07c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5c080: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5c086: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5c088: 42ad 0006 clrl %a5@(6) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5c08c: 1b40 0004 moveb %d0,%a5@(4) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5c090: 42ad 000a clrl %a5@(10) <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
5c094: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5c096: 4e92 jsr %a2@ <== NOT EXECUTED
return rc;
5c098: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5c09c: 6000 ff1e braw 5bfbc <rtems_rfs_file_open+0x100> <== NOT EXECUTED
}
rc = rtems_rfs_block_map_open (fs, &shared->inode, &shared->map);
5c0a0: 486a 0032 pea %a2@(50) <== NOT EXECUTED
5c0a4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5c0a6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5c0aa: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5c0b0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
return rc;
}
rc = rtems_rfs_block_map_open (fs, &shared->inode, &shared->map);
5c0b4: 2600 movel %d0,%d3 <== NOT EXECUTED
if (rc > 0)
5c0b6: 6f00 00e0 blew 5c198 <rtems_rfs_file_open+0x2dc> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
5c0ba: 42a7 clrl %sp@- <== NOT EXECUTED
5c0bc: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
5c0c0: 2044 moveal %d4,%a0 <== NOT EXECUTED
5c0c2: 4e90 jsr %a0@ <== NOT EXECUTED
5c0c4: 508f addql #8,%sp <== NOT EXECUTED
5c0c6: 4a00 tstb %d0 <== NOT EXECUTED
5c0c8: 6644 bnes 5c10e <rtems_rfs_file_open+0x252> <== NOT EXECUTED
printf ("rtems-rfs: file-open: block map open failed: %d: %s\n",
rc, strerror (rc));
rtems_rfs_inode_close (fs, &shared->inode);
5c0ca: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5c0cc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
free (shared);
5c0d0: 47f9 0004 7344 lea 47344 <free>,%a3 <== NOT EXECUTED
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: block map open failed: %d: %s\n",
rc, strerror (rc));
rtems_rfs_inode_close (fs, &shared->inode);
5c0d6: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
free (shared);
5c0dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c0de: 4e93 jsr %a3@ <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5c0e0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5c0e2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5c0e6: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5c0ec: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5c0ee: 42ad 0006 clrl %a5@(6) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5c0f2: 1b40 0004 moveb %d0,%a5@(4) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5c0f6: 42ad 000a clrl %a5@(10) <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
5c0fa: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5c0fc: 4e93 jsr %a3@ <== NOT EXECUTED
return rc;
5c0fe: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
handle->shared = shared;
*file = handle;
return 0;
}
5c102: 2003 movel %d3,%d0 <== NOT EXECUTED
5c104: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
5c10a: 4e5e unlk %fp <== NOT EXECUTED
5c10c: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, &shared->inode, &shared->map);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: block map open failed: %d: %s\n",
5c10e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_inode_close (fs, &shared->inode);
free (shared);
5c110: 47f9 0004 7344 lea 47344 <free>,%a3 <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, &shared->inode, &shared->map);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: block map open failed: %d: %s\n",
5c116: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5c11c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c11e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c120: 4879 0007 2dbb pea 72dbb <CSWTCH.2+0xcf3> <== NOT EXECUTED
5c126: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5c12c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_inode_close (fs, &shared->inode);
5c130: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5c132: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5c136: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
free (shared);
5c13c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c13e: 4e93 jsr %a3@ <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5c140: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5c142: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5c146: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5c14c: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5c14e: 42ad 0006 clrl %a5@(6) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5c152: 1b40 0004 moveb %d0,%a5@(4) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5c156: 42ad 000a clrl %a5@(10) <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
5c15a: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5c15c: 4e93 jsr %a3@ <== NOT EXECUTED
return rc;
5c15e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
5c162: 609e bras 5c102 <rtems_rfs_file_open+0x246> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5c164: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5c166: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
shared = malloc (sizeof (rtems_rfs_file_shared));
if (!shared)
{
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
return ENOMEM;
5c16a: 760c moveq #12,%d3 <== NOT EXECUTED
5c16c: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5c172: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
5c174: 42ad 0006 clrl %a5@(6) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5c178: 1b40 0004 moveb %d0,%a5@(4) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5c17c: 42ad 000a clrl %a5@(10) <== NOT EXECUTED
*/
shared = malloc (sizeof (rtems_rfs_file_shared));
if (!shared)
{
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
5c180: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5c182: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
return ENOMEM;
5c188: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
handle->shared = shared;
*file = handle;
return 0;
}
5c18c: 2003 movel %d3,%d0 <== NOT EXECUTED
5c18e: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
5c194: 4e5e unlk %fp <== NOT EXECUTED
5c196: 4e75 rts <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
return rc;
}
shared->references = 1;
5c198: 7201 moveq #1,%d1 <== NOT EXECUTED
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
5c19a: 4280 clrl %d0 <== NOT EXECUTED
5c19c: 4283 clrl %d3 <== NOT EXECUTED
5c19e: 4285 clrl %d5 <== NOT EXECUTED
if (shared->inode.ino == ino)
return shared;
node = rtems_chain_next (node);
}
return NULL;
}
5c1a0: 206a 0018 moveal %a2@(24),%a0 <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle->buffer);
free (handle);
return rc;
}
shared->references = 1;
5c1a4: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
5c1a8: 1028 000c moveb %a0@(12),%d0 <== NOT EXECUTED
5c1ac: 1628 000d moveb %a0@(13),%d3 <== NOT EXECUTED
5c1b0: 123c 0018 moveb #24,%d1 <== NOT EXECUTED
5c1b4: 1a28 000f moveb %a0@(15),%d5 <== NOT EXECUTED
5c1b8: e3a8 lsll %d1,%d0 <== NOT EXECUTED
5c1ba: 4843 swap %d3 <== NOT EXECUTED
5c1bc: 4243 clrw %d3 <== NOT EXECUTED
5c1be: 4281 clrl %d1 <== NOT EXECUTED
5c1c0: 1228 000e moveb %a0@(14),%d1 <== NOT EXECUTED
5c1c4: 8083 orl %d3,%d0 <== NOT EXECUTED
5c1c6: e189 lsll #8,%d1 <== NOT EXECUTED
* @return rtems_rfs_time The atime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->atime);
5c1c8: 4283 clrl %d3 <== NOT EXECUTED
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
5c1ca: 8085 orl %d5,%d0 <== NOT EXECUTED
5c1cc: 8081 orl %d1,%d0 <== NOT EXECUTED
* @return uint32_t The block offset.
*/
static inline uint16_t
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->block_offset);
5c1ce: 4281 clrl %d1 <== NOT EXECUTED
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
5c1d0: 2540 007c movel %d0,%a2@(124) <== NOT EXECUTED
* @return uint32_t The block offset.
*/
static inline uint16_t
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->block_offset);
5c1d4: 4280 clrl %d0 <== NOT EXECUTED
5c1d6: 1028 000a moveb %a0@(10),%d0 <== NOT EXECUTED
5c1da: 1228 000b moveb %a0@(11),%d1 <== NOT EXECUTED
5c1de: e188 lsll #8,%d0 <== NOT EXECUTED
shared->size.count = rtems_rfs_inode_get_block_count (&shared->inode);
shared->size.offset = rtems_rfs_inode_get_block_offset (&shared->inode);
5c1e0: 8081 orl %d1,%d0 <== NOT EXECUTED
* @return rtems_rfs_time The atime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->atime);
5c1e2: 7218 moveq #24,%d1 <== NOT EXECUTED
5c1e4: 2540 0080 movel %d0,%a2@(128) <== NOT EXECUTED
5c1e8: 4280 clrl %d0 <== NOT EXECUTED
5c1ea: 1028 0010 moveb %a0@(16),%d0 <== NOT EXECUTED
5c1ee: 1628 0011 moveb %a0@(17),%d3 <== NOT EXECUTED
5c1f2: 1a28 0013 moveb %a0@(19),%d5 <== NOT EXECUTED
5c1f6: e3a8 lsll %d1,%d0 <== NOT EXECUTED
5c1f8: 4843 swap %d3 <== NOT EXECUTED
5c1fa: 4243 clrw %d3 <== NOT EXECUTED
5c1fc: 4281 clrl %d1 <== NOT EXECUTED
5c1fe: 1228 0012 moveb %a0@(18),%d1 <== NOT EXECUTED
5c202: 8083 orl %d3,%d0 <== NOT EXECUTED
5c204: e189 lsll #8,%d1 <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
5c206: 4283 clrl %d3 <== NOT EXECUTED
* @return rtems_rfs_time The atime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->atime);
5c208: 8085 orl %d5,%d0 <== NOT EXECUTED
5c20a: 8081 orl %d1,%d0 <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
5c20c: 7218 moveq #24,%d1 <== NOT EXECUTED
* @return rtems_rfs_time The atime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->atime);
5c20e: 2540 0084 movel %d0,%a2@(132) <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
5c212: 4280 clrl %d0 <== NOT EXECUTED
5c214: 1028 0014 moveb %a0@(20),%d0 <== NOT EXECUTED
5c218: 1628 0015 moveb %a0@(21),%d3 <== NOT EXECUTED
5c21c: 1a28 0017 moveb %a0@(23),%d5 <== NOT EXECUTED
5c220: e3a8 lsll %d1,%d0 <== NOT EXECUTED
5c222: 4843 swap %d3 <== NOT EXECUTED
5c224: 4243 clrw %d3 <== NOT EXECUTED
5c226: 4281 clrl %d1 <== NOT EXECUTED
5c228: 1228 0016 moveb %a0@(22),%d1 <== NOT EXECUTED
5c22c: 8083 orl %d3,%d0 <== NOT EXECUTED
5c22e: e189 lsll #8,%d1 <== NOT EXECUTED
* @return rtems_rfs_time The ctime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->ctime);
5c230: 4283 clrl %d3 <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
5c232: 8085 orl %d5,%d0 <== NOT EXECUTED
5c234: 8081 orl %d1,%d0 <== NOT EXECUTED
* @return rtems_rfs_time The ctime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->ctime);
5c236: 7218 moveq #24,%d1 <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
5c238: 2540 0088 movel %d0,%a2@(136) <== NOT EXECUTED
* @return rtems_rfs_time The ctime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->ctime);
5c23c: 4280 clrl %d0 <== NOT EXECUTED
5c23e: 1028 0018 moveb %a0@(24),%d0 <== NOT EXECUTED
5c242: 1628 0019 moveb %a0@(25),%d3 <== NOT EXECUTED
5c246: 1a28 001b moveb %a0@(27),%d5 <== NOT EXECUTED
5c24a: e3a8 lsll %d1,%d0 <== NOT EXECUTED
5c24c: 4843 swap %d3 <== NOT EXECUTED
5c24e: 4243 clrw %d3 <== NOT EXECUTED
5c250: 4281 clrl %d1 <== NOT EXECUTED
5c252: 1228 001a moveb %a0@(26),%d1 <== NOT EXECUTED
5c256: 8083 orl %d3,%d0 <== NOT EXECUTED
5c258: e189 lsll #8,%d1 <== NOT EXECUTED
shared->atime = rtems_rfs_inode_get_atime (&shared->inode);
shared->mtime = rtems_rfs_inode_get_mtime (&shared->inode);
shared->ctime = rtems_rfs_inode_get_ctime (&shared->inode);
shared->fs = fs;
5c25a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
5c25e: 8085 orl %d5,%d0 <== NOT EXECUTED
5c260: 2548 0090 movel %a0,%a2@(144) <== NOT EXECUTED
5c264: 8081 orl %d1,%d0 <== NOT EXECUTED
5c266: 2540 008c movel %d0,%a2@(140) <== NOT EXECUTED
5c26a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c26c: 4868 0074 pea %a0@(116) <== NOT EXECUTED
5c270: 4eb9 0004 cce8 jsr 4cce8 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append (&fs->file_shares, &shared->link);
rtems_rfs_inode_unload (fs, &shared->inode, false);
5c276: 42a7 clrl %sp@- <== NOT EXECUTED
5c278: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5c27a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5c27e: 4eb9 0005 1384 jsr 51384 <rtems_rfs_inode_unload> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
5c284: 2244 moveal %d4,%a1 <== NOT EXECUTED
5c286: 42a7 clrl %sp@- <== NOT EXECUTED
5c288: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
5c28c: 4e91 jsr %a1@ <== NOT EXECUTED
5c28e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
5c292: 4a00 tstb %d0 <== NOT EXECUTED
5c294: 6700 fd80 beqw 5c016 <rtems_rfs_file_open+0x15a> <== NOT EXECUTED
printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
5c298: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c29a: 4879 0007 2df0 pea 72df0 <CSWTCH.2+0xd28> <== NOT EXECUTED
handle->flags = oflag;
handle->shared = shared;
*file = handle;
return 0;
5c2a0: 4283 clrl %d3 <== NOT EXECUTED
rtems_chain_append (&fs->file_shares, &shared->link);
rtems_rfs_inode_unload (fs, &shared->inode, false);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
5c2a2: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
}
handle->flags = oflag;
5c2a8: 2aae 0010 movel %fp@(16),%a5@ <== NOT EXECUTED
rtems_chain_append (&fs->file_shares, &shared->link);
rtems_rfs_inode_unload (fs, &shared->inode, false);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))
printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
5c2ac: 508f addql #8,%sp <== NOT EXECUTED
}
handle->flags = oflag;
handle->shared = shared;
5c2ae: 2b4a 001a movel %a2,%a5@(26) <== NOT EXECUTED
*file = handle;
5c2b2: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
5c2b6: 208d movel %a5,%a0@ <== NOT EXECUTED
5c2b8: 6000 fd6c braw 5c026 <rtems_rfs_file_open+0x16a> <== NOT EXECUTED
0005cb76 <rtems_rfs_file_seek>:
int
rtems_rfs_file_seek (rtems_rfs_file_handle* handle,
rtems_rfs_pos pos,
rtems_rfs_pos* new_pos)
{
5cb76: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
5cb7a: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5cb7e: 42a7 clrl %sp@- <== NOT EXECUTED
5cb80: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
int
rtems_rfs_file_seek (rtems_rfs_file_handle* handle,
rtems_rfs_pos pos,
rtems_rfs_pos* new_pos)
{
5cb84: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5cb88: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
5cb8c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5cb90: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5cb96: 508f addql #8,%sp <== NOT EXECUTED
5cb98: 4a00 tstb %d0 <== NOT EXECUTED
5cb9a: 6600 0090 bnew 5cc2c <rtems_rfs_file_seek+0xb6> <== NOT EXECUTED
* file, this function does not itself extend the size of the file."
*
* This means the file needs to set the file size to the pos only when a
* write occurs.
*/
if (pos <= rtems_rfs_file_shared_get_size (rtems_rfs_file_fs (handle),
5cb9e: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5cba2: 4868 007c pea %a0@(124) <== NOT EXECUTED
5cba6: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5cbaa: 4eb9 0005 9180 jsr 59180 <rtems_rfs_block_get_size> <== NOT EXECUTED
5cbb0: 508f addql #8,%sp <== NOT EXECUTED
5cbb2: 9283 subl %d3,%d1 <== NOT EXECUTED
5cbb4: 9182 subxl %d2,%d0 <== NOT EXECUTED
5cbb6: 6550 bcss 5cc08 <rtems_rfs_file_seek+0x92> <== NOT EXECUTED
handle->shared))
{
rtems_rfs_file_set_bpos (handle, pos);
5cbb8: 280a movel %a2,%d4 <== NOT EXECUTED
5cbba: 0684 0000 000e addil #14,%d4 <== NOT EXECUTED
5cbc0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5cbc2: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5cbc6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5cbc8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5cbca: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5cbce: 4eb9 0005 90a2 jsr 590a2 <rtems_rfs_block_get_bpos> <== NOT EXECUTED
/*
* If the file has a block check if it maps to the current position and it
* does not release it. That will force us to get the block at the new
* position when the I/O starts.
*/
if (rtems_rfs_buffer_handle_has_block (&handle->buffer))
5cbd4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5cbd8: 4aaa 000a tstl %a2@(10) <== NOT EXECUTED
5cbdc: 6738 beqs 5cc16 <rtems_rfs_file_seek+0xa0> <== NOT EXECUTED
{
rtems_rfs_buffer_block block;
int rc;
rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),
5cbde: 486e fffc pea %fp@(-4) <== NOT EXECUTED
rtems_rfs_file_map (handle),
5cbe2: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
if (rtems_rfs_buffer_handle_has_block (&handle->buffer))
{
rtems_rfs_buffer_block block;
int rc;
rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),
5cbe6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5cbe8: 4868 0032 pea %a0@(50) <== NOT EXECUTED
5cbec: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5cbf0: 4eb9 0005 95dc jsr 595dc <rtems_rfs_block_map_find> <== NOT EXECUTED
rtems_rfs_file_map (handle),
rtems_rfs_file_bpos (handle),
&block);
if (rc > 0)
5cbf6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5cbfa: 4a80 tstl %d0 <== NOT EXECUTED
5cbfc: 6f46 bles 5cc44 <rtems_rfs_file_seek+0xce> <== NOT EXECUTED
return rc;
}
*new_pos = pos;
return 0;
}
5cbfe: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
5cc04: 4e5e unlk %fp <== NOT EXECUTED
5cc06: 4e75 rts <== NOT EXECUTED
{
/*
* The seek is outside the current file so release any buffer. A write will
* extend the file.
*/
int rc = rtems_rfs_file_io_release (handle);
5cc08: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5cc0a: 4eb9 0005 cb4a jsr 5cb4a <rtems_rfs_file_io_release> <== NOT EXECUTED
if (rc > 0)
5cc10: 588f addql #4,%sp <== NOT EXECUTED
5cc12: 4a80 tstl %d0 <== NOT EXECUTED
5cc14: 6ee8 bgts 5cbfe <rtems_rfs_file_seek+0x88> <== NOT EXECUTED
return rc;
}
*new_pos = pos;
5cc16: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
return 0;
5cc1a: 4280 clrl %d0 <== NOT EXECUTED
int rc = rtems_rfs_file_io_release (handle);
if (rc > 0)
return rc;
}
*new_pos = pos;
5cc1c: 2082 movel %d2,%a0@ <== NOT EXECUTED
5cc1e: 2143 0004 movel %d3,%a0@(4) <== NOT EXECUTED
return 0;
}
5cc22: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
5cc28: 4e5e unlk %fp <== NOT EXECUTED
5cc2a: 4e75 rts <== NOT EXECUTED
rtems_rfs_file_seek (rtems_rfs_file_handle* handle,
rtems_rfs_pos pos,
rtems_rfs_pos* new_pos)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-seek: new=%" PRIu64 "\n", pos);
5cc2c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5cc2e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5cc30: 4879 0007 3031 pea 73031 <CSWTCH.2+0xf69> <== NOT EXECUTED
5cc36: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5cc3c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5cc40: 6000 ff5c braw 5cb9e <rtems_rfs_file_seek+0x28> <== NOT EXECUTED
rtems_rfs_file_map (handle),
rtems_rfs_file_bpos (handle),
&block);
if (rc > 0)
return rc;
if (rtems_rfs_buffer_bnum (&handle->buffer) != block)
5cc44: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
5cc48: b0aa 0006 cmpl %a2@(6),%d0 <== NOT EXECUTED
5cc4c: 67c8 beqs 5cc16 <rtems_rfs_file_seek+0xa0> <== NOT EXECUTED
{
rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
5cc4e: 486a 0004 pea %a2@(4) <== NOT EXECUTED
5cc52: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5cc56: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5cc5a: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
rtems_rfs_file_buffer (handle));
if (rc > 0)
5cc60: 508f addql #8,%sp <== NOT EXECUTED
5cc62: 4a80 tstl %d0 <== NOT EXECUTED
5cc64: 6fb0 bles 5cc16 <rtems_rfs_file_seek+0xa0> <== NOT EXECUTED
return rc;
}
*new_pos = pos;
return 0;
}
5cc66: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
5cc6c: 4e5e unlk %fp <== NOT EXECUTED
0005cc70 <rtems_rfs_file_set_size>:
int
rtems_rfs_file_set_size (rtems_rfs_file_handle* handle,
rtems_rfs_pos new_size)
{
5cc70: 4e56 ffa0 linkw %fp,#-96 <== NOT EXECUTED
5cc74: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_rfs_block_map* map = rtems_rfs_file_map (handle);
rtems_rfs_pos size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5cc78: 42a7 clrl %sp@- <== NOT EXECUTED
5cc7a: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
}
int
rtems_rfs_file_set_size (rtems_rfs_file_handle* handle,
rtems_rfs_pos new_size)
{
5cc7e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_rfs_block_map* map = rtems_rfs_file_map (handle);
5cc82: 266a 001a moveal %a2@(26),%a3 <== NOT EXECUTED
5cc86: 2c0b movel %a3,%d6 <== NOT EXECUTED
5cc88: 0686 0000 0032 addil #50,%d6 <== NOT EXECUTED
}
int
rtems_rfs_file_set_size (rtems_rfs_file_handle* handle,
rtems_rfs_pos new_size)
{
5cc8e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
5cc92: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
rtems_rfs_block_map* map = rtems_rfs_file_map (handle);
rtems_rfs_pos size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
5cc96: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5cc9c: 508f addql #8,%sp <== NOT EXECUTED
5cc9e: 4a00 tstb %d0 <== NOT EXECUTED
5cca0: 6600 0188 bnew 5ce2a <rtems_rfs_file_set_size+0x1ba> <== NOT EXECUTED
printf ("rtems-rfs: file-set-size: size=%" PRIu64 "\n", new_size);
size = rtems_rfs_file_size (handle);
5cca4: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5cca8: 4868 007c pea %a0@(124) <== NOT EXECUTED
5ccac: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
/*
* If the file is same size do nothing else grow or shrink it ?
*
* If the file does not change size do not update the times.
*/
if (size != new_size)
5ccb0: 2802 movel %d2,%d4 <== NOT EXECUTED
5ccb2: 2a03 movel %d3,%d5 <== NOT EXECUTED
5ccb4: 4eb9 0005 9180 jsr 59180 <rtems_rfs_block_get_size> <== NOT EXECUTED
5ccba: 508f addql #8,%sp <== NOT EXECUTED
5ccbc: 9a81 subl %d1,%d5 <== NOT EXECUTED
5ccbe: 9980 subxl %d0,%d4 <== NOT EXECUTED
5ccc0: 6700 019c beqw 5ce5e <rtems_rfs_file_set_size+0x1ee> <== NOT EXECUTED
{
/*
* Short cut for the common truncate on open call.
*/
if (new_size == 0)
5ccc4: 2a02 movel %d2,%d5 <== NOT EXECUTED
5ccc6: 8a83 orl %d3,%d5 <== NOT EXECUTED
5ccc8: 6700 0296 beqw 5cf60 <rtems_rfs_file_set_size+0x2f0> <== NOT EXECUTED
if (rc > 0)
return rc;
}
else
{
if (size < new_size)
5cccc: 2802 movel %d2,%d4 <== NOT EXECUTED
5ccce: 2a03 movel %d3,%d5 <== NOT EXECUTED
5ccd0: 9a81 subl %d1,%d5 <== NOT EXECUTED
5ccd2: 9980 subxl %d0,%d4 <== NOT EXECUTED
5ccd4: 6300 0196 blsw 5ce6c <rtems_rfs_file_set_size+0x1fc> <== NOT EXECUTED
rtems_rfs_pos count;
uint32_t length;
bool read_block;
count = new_size - size;
length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
5ccd8: 286a 001a moveal %a2@(26),%a4 <== NOT EXECUTED
5ccdc: 204c moveal %a4,%a0 <== NOT EXECUTED
*/
rtems_rfs_pos count;
uint32_t length;
bool read_block;
count = new_size - size;
5ccde: 2802 movel %d2,%d4 <== NOT EXECUTED
5cce0: 2a03 movel %d3,%d5 <== NOT EXECUTED
length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
5cce2: 226c 0090 moveal %a4@(144),%a1 <== NOT EXECUTED
*/
rtems_rfs_pos count;
uint32_t length;
bool read_block;
count = new_size - size;
5cce6: 9a81 subl %d1,%d5 <== NOT EXECUTED
5cce8: 9980 subxl %d0,%d4 <== NOT EXECUTED
length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
5ccea: 2429 0008 movel %a1@(8),%d2 <== NOT EXECUTED
read_block = false;
while (count)
5ccee: 2004 movel %d4,%d0 <== NOT EXECUTED
5ccf0: 8085 orl %d5,%d0 <== NOT EXECUTED
5ccf2: 6700 0288 beqw 5cf7c <rtems_rfs_file_set_size+0x30c> <== NOT EXECUTED
5ccf6: 2e0e movel %fp,%d7 <== NOT EXECUTED
5ccf8: 0687 ffff fff4 addil #-12,%d7 <== NOT EXECUTED
}
/*
* Only read the block if the length is not the block size.
*/
rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle),
5ccfe: 260a movel %a2,%d3 <== NOT EXECUTED
5cd00: 49f9 0005 95dc lea 595dc <rtems_rfs_block_map_find>,%a4 <== NOT EXECUTED
5cd06: 5883 addql #4,%d3 <== NOT EXECUTED
5cd08: 4bf9 0005 a19a lea 5a19a <rtems_rfs_buffer_handle_request>,%a5<== NOT EXECUTED
count = new_size - size;
length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
read_block = false;
while (count)
5cd0e: 4201 clrb %d1 <== NOT EXECUTED
5cd10: 2d46 ffe4 movel %d6,%fp@(-28) <== NOT EXECUTED
5cd14: 1d41 ffdf moveb %d1,%fp@(-33) <== NOT EXECUTED
5cd18: 2d47 ffe0 movel %d7,%fp@(-32) <== NOT EXECUTED
/*
* Get the block position for the current end of the file as seen by
* the map. If not found and the EOF grow the map then fill the block
* with 0.
*/
rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map), &bpos);
5cd1c: 222b 0038 movel %a3@(56),%d1 <== NOT EXECUTED
5cd20: 202b 003c movel %a3@(60),%d0 <== NOT EXECUTED
5cd24: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
5cd28: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
5cd2c: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
5cd30: 4a80 tstl %d0 <== NOT EXECUTED
5cd32: 6706 beqs 5cd3a <rtems_rfs_file_set_size+0xca> <== NOT EXECUTED
5cd34: 5381 subql #1,%d1 <== NOT EXECUTED
5cd36: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),
5cd3a: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
5cd3e: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED
5cd42: 2f2e ffe4 movel %fp@(-28),%sp@- <== NOT EXECUTED
5cd46: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5cd4a: 4e94 jsr %a4@ <== NOT EXECUTED
map, &bpos, &block);
if (rc > 0)
5cd4c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5cd50: 4a80 tstl %d0 <== NOT EXECUTED
5cd52: 6f2c bles 5cd80 <rtems_rfs_file_set_size+0x110> <== NOT EXECUTED
{
/*
* Have we reached the EOF ?
*/
if (rc != ENXIO)
5cd54: 7206 moveq #6,%d1 <== NOT EXECUTED
5cd56: b280 cmpl %d0,%d1 <== NOT EXECUTED
5cd58: 6600 01e4 bnew 5cf3e <rtems_rfs_file_set_size+0x2ce> <== NOT EXECUTED
return rc;
rc = rtems_rfs_block_map_grow (rtems_rfs_file_fs (handle),
5cd5c: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
5cd60: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5cd64: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5cd68: 2f2e ffe4 movel %fp@(-28),%sp@- <== NOT EXECUTED
5cd6c: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5cd70: 4eb9 0005 97a8 jsr 597a8 <rtems_rfs_block_map_grow> <== NOT EXECUTED
map, 1, &block);
if (rc > 0)
5cd76: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5cd7a: 4a80 tstl %d0 <== NOT EXECUTED
5cd7c: 6e00 01c0 bgtw 5cf3e <rtems_rfs_file_set_size+0x2ce> <== NOT EXECUTED
return rc;
}
if (count < (length - bpos.boff))
5cd80: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
5cd84: 2202 movel %d2,%d1 <== NOT EXECUTED
5cd86: 9288 subl %a0,%d1 <== NOT EXECUTED
5cd88: 2e01 movel %d1,%d7 <== NOT EXECUTED
5cd8a: 4286 clrl %d6 <== NOT EXECUTED
5cd8c: 2006 movel %d6,%d0 <== NOT EXECUTED
5cd8e: 2207 movel %d7,%d1 <== NOT EXECUTED
5cd90: 9285 subl %d5,%d1 <== NOT EXECUTED
5cd92: 9184 subxl %d4,%d0 <== NOT EXECUTED
5cd94: 6300 01b6 blsw 5cf4c <rtems_rfs_file_set_size+0x2dc> <== NOT EXECUTED
{
length = count + bpos.boff;
5cd98: 2408 movel %a0,%d2 <== NOT EXECUTED
5cd9a: d485 addl %d5,%d2 <== NOT EXECUTED
5cd9c: 7001 moveq #1,%d0 <== NOT EXECUTED
5cd9e: 7201 moveq #1,%d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,
rtems_rfs_block_off offset)
{
map->size.offset = offset;
5cda0: 2742 003c movel %d2,%a3@(60) <== NOT EXECUTED
map->dirty = true;
5cda4: 1741 0032 moveb %d1,%a3@(50) <== NOT EXECUTED
read_block = true;
5cda8: 1d41 ffdf moveb %d1,%fp@(-33) <== NOT EXECUTED
}
/*
* Only read the block if the length is not the block size.
*/
rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle),
5cdac: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5cdae: 2f2e fff0 movel %fp@(-16),%sp@- <== NOT EXECUTED
5cdb2: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5cdb6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5cdb8: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5cdbc: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_rfs_file_buffer (handle),
block, read_block);
if (rc > 0)
5cdbe: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5cdc2: 4a80 tstl %d0 <== NOT EXECUTED
5cdc4: 6e00 0178 bgtw 5cf3e <rtems_rfs_file_set_size+0x2ce> <== NOT EXECUTED
return rc;
dst = rtems_rfs_buffer_data (&handle->buffer);
memset (dst + bpos.boff, 0, length - bpos.boff);
5cdc8: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
5cdcc: 2202 movel %d2,%d1 <== NOT EXECUTED
5cdce: 9280 subl %d0,%d1 <== NOT EXECUTED
5cdd0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
rtems_rfs_file_buffer (handle),
block, read_block);
if (rc > 0)
return rc;
dst = rtems_rfs_buffer_data (&handle->buffer);
5cdd2: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED
memset (dst + bpos.boff, 0, length - bpos.boff);
5cdd6: 42a7 clrl %sp@- <== NOT EXECUTED
5cdd8: d0a8 001a addl %a0@(26),%d0 <== NOT EXECUTED
5cddc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5cdde: 4eb9 0006 159c jsr 6159c <memset> <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));
rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
5cde4: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5cde8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5cdea: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
return rc;
dst = rtems_rfs_buffer_data (&handle->buffer);
memset (dst + bpos.boff, 0, length - bpos.boff);
rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));
5cdee: 7001 moveq #1,%d0 <== NOT EXECUTED
5cdf0: 1540 0004 moveb %d0,%a2@(4) <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
5cdf4: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
rtems_rfs_file_buffer (handle));
if (rc > 0)
5cdfa: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5cdfe: 4a80 tstl %d0 <== NOT EXECUTED
5ce00: 6e00 013c bgtw 5cf3e <rtems_rfs_file_set_size+0x2ce> <== NOT EXECUTED
return rc;
count -= length - bpos.boff;
5ce04: 2002 movel %d2,%d0 <== NOT EXECUTED
5ce06: 90ae fff8 subl %fp@(-8),%d0 <== NOT EXECUTED
5ce0a: 91c8 subal %a0,%a0 <== NOT EXECUTED
5ce0c: 2d40 ffec movel %d0,%fp@(-20) <== NOT EXECUTED
5ce10: 2d48 ffe8 movel %a0,%fp@(-24) <== NOT EXECUTED
5ce14: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
5ce18: 9aae ffec subl %fp@(-20),%d5 <== NOT EXECUTED
5ce1c: 9980 subxl %d0,%d4 <== NOT EXECUTED
count = new_size - size;
length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
read_block = false;
while (count)
5ce1e: 6700 0158 beqw 5cf78 <rtems_rfs_file_set_size+0x308> <== NOT EXECUTED
5ce22: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5ce26: 6000 fef4 braw 5cd1c <rtems_rfs_file_set_size+0xac> <== NOT EXECUTED
rtems_rfs_block_map* map = rtems_rfs_file_map (handle);
rtems_rfs_pos size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-set-size: size=%" PRIu64 "\n", new_size);
5ce2a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
/*
* If the file is same size do nothing else grow or shrink it ?
*
* If the file does not change size do not update the times.
*/
if (size != new_size)
5ce2c: 2802 movel %d2,%d4 <== NOT EXECUTED
5ce2e: 2a03 movel %d3,%d5 <== NOT EXECUTED
rtems_rfs_block_map* map = rtems_rfs_file_map (handle);
rtems_rfs_pos size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-set-size: size=%" PRIu64 "\n", new_size);
5ce30: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ce32: 4879 0007 3051 pea 73051 <CSWTCH.2+0xf89> <== NOT EXECUTED
5ce38: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
size = rtems_rfs_file_size (handle);
5ce3e: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
rtems_rfs_block_map* map = rtems_rfs_file_map (handle);
rtems_rfs_pos size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))
printf ("rtems-rfs: file-set-size: size=%" PRIu64 "\n", new_size);
5ce42: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5ce46: 4868 007c pea %a0@(124) <== NOT EXECUTED
5ce4a: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5ce4e: 4eb9 0005 9180 jsr 59180 <rtems_rfs_block_get_size> <== NOT EXECUTED
/*
* If the file is same size do nothing else grow or shrink it ?
*
* If the file does not change size do not update the times.
*/
if (size != new_size)
5ce54: 508f addql #8,%sp <== NOT EXECUTED
5ce56: 9a81 subl %d1,%d5 <== NOT EXECUTED
5ce58: 9980 subxl %d0,%d4 <== NOT EXECUTED
5ce5a: 6600 fe68 bnew 5ccc4 <rtems_rfs_file_set_size+0x54> <== NOT EXECUTED
if (rtems_rfs_file_update_mtime (handle))
handle->shared->mtime = time (NULL);
}
return 0;
5ce5e: 4281 clrl %d1 <== NOT EXECUTED
}
5ce60: 2001 movel %d1,%d0 <== NOT EXECUTED
5ce62: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5ce68: 4e5e unlk %fp <== NOT EXECUTED
5ce6a: 4e75 rts <== NOT EXECUTED
uint32_t offset;
blocks =
rtems_rfs_block_map_count (map) -
(((new_size - 1) /
rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
5ce6c: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
rtems_rfs_block_no blocks;
uint32_t offset;
blocks =
rtems_rfs_block_map_count (map) -
(((new_size - 1) /
5ce70: 93c9 subal %a1,%a1 <== NOT EXECUTED
rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
5ce72: 2868 0090 moveal %a0@(144),%a4 <== NOT EXECUTED
rtems_rfs_block_no blocks;
uint32_t offset;
blocks =
rtems_rfs_block_map_count (map) -
(((new_size - 1) /
5ce76: 282c 0008 movel %a4@(8),%d4 <== NOT EXECUTED
*/
rtems_rfs_block_no blocks;
uint32_t offset;
blocks =
rtems_rfs_block_map_count (map) -
5ce7a: 2c2b 0038 movel %a3@(56),%d6 <== NOT EXECUTED
(((new_size - 1) /
5ce7e: 2d44 ffce movel %d4,%fp@(-50) <== NOT EXECUTED
5ce82: 2f2e ffce movel %fp@(-50),%sp@- <== NOT EXECUTED
5ce86: 70ff moveq #-1,%d0 <== NOT EXECUTED
5ce88: 72ff moveq #-1,%d1 <== NOT EXECUTED
5ce8a: 2d49 ffca movel %a1,%fp@(-54) <== NOT EXECUTED
5ce8e: 2f2e ffca movel %fp@(-54),%sp@- <== NOT EXECUTED
5ce92: d283 addl %d3,%d1 <== NOT EXECUTED
5ce94: d182 addxl %d2,%d0 <== NOT EXECUTED
5ce96: 2d48 ffd2 movel %a0,%fp@(-46) <== NOT EXECUTED
5ce9a: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5ce9c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ce9e: 4eb9 0006 dfc8 jsr 6dfc8 <__udivdi3> <== NOT EXECUTED
5cea4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
* Shrink
*/
rtems_rfs_block_no blocks;
uint32_t offset;
blocks =
5cea8: 4681 notl %d1 <== NOT EXECUTED
5ceaa: 2e01 movel %d1,%d7 <== NOT EXECUTED
5ceac: de86 addl %d6,%d7 <== NOT EXECUTED
rtems_rfs_block_map_count (map) -
(((new_size - 1) /
rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
offset =
new_size % rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
5ceae: 2f2e ffce movel %fp@(-50),%sp@- <== NOT EXECUTED
5ceb2: 2f2e ffca movel %fp@(-54),%sp@- <== NOT EXECUTED
5ceb6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5ceb8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ceba: 4eb9 0006 e3cc jsr 6e3cc <__umoddi3> <== NOT EXECUTED
if (blocks)
5cec0: 206e ffd2 moveal %fp@(-46),%a0 <== NOT EXECUTED
rtems_rfs_block_map_count (map) -
(((new_size - 1) /
rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
offset =
new_size % rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
5cec4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (blocks)
5cec8: 4a87 tstl %d7 <== NOT EXECUTED
5ceca: 6654 bnes 5cf20 <rtems_rfs_file_set_size+0x2b0> <== NOT EXECUTED
*/
static inline void
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,
rtems_rfs_block_off offset)
{
map->size.offset = offset;
5cecc: 2741 003c movel %d1,%a3@(60) <== NOT EXECUTED
return rc;
}
rtems_rfs_block_map_set_size_offset (map, offset);
if (rtems_rfs_block_pos_past_end (rtems_rfs_file_bpos (handle),
5ced0: 202a 000e movel %a2@(14),%d0 <== NOT EXECUTED
map->dirty = true;
5ced4: 7401 moveq #1,%d2 <== NOT EXECUTED
5ced6: 1742 0032 moveb %d2,%a3@(50) <== NOT EXECUTED
5ceda: 4a80 tstl %d0 <== NOT EXECUTED
5cedc: 6600 00aa bnew 5cf88 <rtems_rfs_file_set_size+0x318> <== NOT EXECUTED
5cee0: bc80 cmpl %d0,%d6 <== NOT EXECUTED
5cee2: 6300 00aa blsw 5cf8e <rtems_rfs_file_set_size+0x31e> <== NOT EXECUTED
5cee6: 2246 moveal %d6,%a1 <== NOT EXECUTED
5cee8: 5389 subql #1,%a1 <== NOT EXECUTED
5ceea: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
5ceec: 6700 00de beqw 5cfcc <rtems_rfs_file_set_size+0x35c> <== NOT EXECUTED
5cef0: 2848 moveal %a0,%a4 <== NOT EXECUTED
}
handle->shared->size.count = rtems_rfs_block_map_count (map);
handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
if (rtems_rfs_file_update_mtime (handle))
5cef2: 7002 moveq #2,%d0 <== NOT EXECUTED
5cef4: c092 andl %a2@,%d0 <== NOT EXECUTED
rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map),
rtems_rfs_file_bpos (handle));
}
}
handle->shared->size.count = rtems_rfs_block_map_count (map);
5cef6: 2946 007c movel %d6,%a4@(124) <== NOT EXECUTED
handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
5cefa: 2941 0080 movel %d1,%a4@(128) <== NOT EXECUTED
if (rtems_rfs_file_update_mtime (handle))
5cefe: 4a80 tstl %d0 <== NOT EXECUTED
5cf00: 6600 ff5c bnew 5ce5e <rtems_rfs_file_set_size+0x1ee> <== NOT EXECUTED
handle->shared->mtime = time (NULL);
5cf04: 42a7 clrl %sp@- <== NOT EXECUTED
5cf06: 4eb9 0006 503c jsr 6503c <time> <== NOT EXECUTED
5cf0c: 588f addql #4,%sp <== NOT EXECUTED
}
return 0;
5cf0e: 4281 clrl %d1 <== NOT EXECUTED
handle->shared->size.count = rtems_rfs_block_map_count (map);
handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
if (rtems_rfs_file_update_mtime (handle))
handle->shared->mtime = time (NULL);
5cf10: 2940 0088 movel %d0,%a4@(136) <== NOT EXECUTED
}
return 0;
}
5cf14: 2001 movel %d1,%d0 <== NOT EXECUTED
5cf16: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5cf1c: 4e5e unlk %fp <== NOT EXECUTED
5cf1e: 4e75 rts <== NOT EXECUTED
new_size % rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
if (blocks)
{
int rc;
rc = rtems_rfs_block_map_shrink (rtems_rfs_file_fs (handle),
5cf20: 2f07 movel %d7,%sp@- <== NOT EXECUTED
5cf22: 4868 0032 pea %a0@(50) <== NOT EXECUTED
5cf26: 2d41 ffd2 movel %d1,%fp@(-46) <== NOT EXECUTED
5cf2a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5cf2c: 4eb9 0005 9b44 jsr 59b44 <rtems_rfs_block_map_shrink> <== NOT EXECUTED
rtems_rfs_file_map (handle),
blocks);
if (rc > 0)
5cf32: 222e ffd2 movel %fp@(-46),%d1 <== NOT EXECUTED
5cf36: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5cf3a: 4a80 tstl %d0 <== NOT EXECUTED
5cf3c: 6f70 bles 5cfae <rtems_rfs_file_set_size+0x33e> <== NOT EXECUTED
5cf3e: 2200 movel %d0,%d1 <== NOT EXECUTED
if (rtems_rfs_file_update_mtime (handle))
handle->shared->mtime = time (NULL);
}
return 0;
}
5cf40: 2001 movel %d1,%d0 <== NOT EXECUTED
5cf42: 4cee 3cfc ffa0 moveml %fp@(-96),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5cf48: 4e5e unlk %fp <== NOT EXECUTED
5cf4a: 4e75 rts <== NOT EXECUTED
*/
static inline void
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,
rtems_rfs_block_off offset)
{
map->size.offset = offset;
5cf4c: 42ab 003c clrl %a3@(60) <== NOT EXECUTED
map->dirty = true;
5cf50: 7001 moveq #1,%d0 <== NOT EXECUTED
5cf52: 1740 0032 moveb %d0,%a3@(50) <== NOT EXECUTED
5cf56: 4280 clrl %d0 <== NOT EXECUTED
5cf58: 102e ffdf moveb %fp@(-33),%d0 <== NOT EXECUTED
5cf5c: 6000 fe4e braw 5cdac <rtems_rfs_file_set_size+0x13c> <== NOT EXECUTED
/*
* Short cut for the common truncate on open call.
*/
if (new_size == 0)
{
rc = rtems_rfs_block_map_free_all (rtems_rfs_file_fs (handle), map);
5cf60: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5cf64: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5cf66: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5cf6a: 4eb9 0005 9df0 jsr 59df0 <rtems_rfs_block_map_free_all> <== NOT EXECUTED
if (rc > 0)
5cf70: 508f addql #8,%sp <== NOT EXECUTED
/*
* Short cut for the common truncate on open call.
*/
if (new_size == 0)
{
rc = rtems_rfs_block_map_free_all (rtems_rfs_file_fs (handle), map);
5cf72: 2200 movel %d0,%d1 <== NOT EXECUTED
if (rc > 0)
5cf74: 6e00 feea bgtw 5ce60 <rtems_rfs_file_set_size+0x1f0> <== NOT EXECUTED
5cf78: 286a 001a moveal %a2@(26),%a4 <== NOT EXECUTED
5cf7c: 2c2b 0038 movel %a3@(56),%d6 <== NOT EXECUTED
5cf80: 222b 003c movel %a3@(60),%d1 <== NOT EXECUTED
5cf84: 6000 ff6c braw 5cef2 <rtems_rfs_file_set_size+0x282> <== NOT EXECUTED
return rc;
}
rtems_rfs_block_map_set_size_offset (map, offset);
if (rtems_rfs_block_pos_past_end (rtems_rfs_file_bpos (handle),
5cf88: 4a86 tstl %d6 <== NOT EXECUTED
5cf8a: 6600 ff54 bnew 5cee0 <rtems_rfs_file_set_size+0x270> <== NOT EXECUTED
rtems_rfs_block_map_size (map)))
rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map),
5cf8e: 2546 000e movel %d6,%a2@(14) <== NOT EXECUTED
5cf92: 2541 0012 movel %d1,%a2@(18) <== NOT EXECUTED
5cf96: 42aa 0016 clrl %a2@(22) <== NOT EXECUTED
5cf9a: 4a81 tstl %d1 <== NOT EXECUTED
5cf9c: 6700 ff52 beqw 5cef0 <rtems_rfs_file_set_size+0x280> <== NOT EXECUTED
5cfa0: 2806 movel %d6,%d4 <== NOT EXECUTED
5cfa2: 5384 subql #1,%d4 <== NOT EXECUTED
5cfa4: 2848 moveal %a0,%a4 <== NOT EXECUTED
5cfa6: 2544 000e movel %d4,%a2@(14) <== NOT EXECUTED
5cfaa: 6000 ff46 braw 5cef2 <rtems_rfs_file_set_size+0x282> <== NOT EXECUTED
5cfae: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,
rtems_rfs_block_off offset)
{
map->size.offset = offset;
5cfb2: 2741 003c movel %d1,%a3@(60) <== NOT EXECUTED
return rc;
}
rtems_rfs_block_map_set_size_offset (map, offset);
if (rtems_rfs_block_pos_past_end (rtems_rfs_file_bpos (handle),
5cfb6: 202a 000e movel %a2@(14),%d0 <== NOT EXECUTED
map->dirty = true;
5cfba: 7401 moveq #1,%d2 <== NOT EXECUTED
5cfbc: 2c2b 0038 movel %a3@(56),%d6 <== NOT EXECUTED
5cfc0: 1742 0032 moveb %d2,%a3@(50) <== NOT EXECUTED
5cfc4: 4a80 tstl %d0 <== NOT EXECUTED
5cfc6: 6700 ff18 beqw 5cee0 <rtems_rfs_file_set_size+0x270> <== NOT EXECUTED
5cfca: 60bc bras 5cf88 <rtems_rfs_file_set_size+0x318> <== NOT EXECUTED
5cfcc: b2aa 0012 cmpl %a2@(18),%d1 <== NOT EXECUTED
5cfd0: 65bc bcss 5cf8e <rtems_rfs_file_set_size+0x31e> <== NOT EXECUTED
5cfd2: 2848 moveal %a0,%a4 <== NOT EXECUTED
5cfd4: 6000 ff1c braw 5cef2 <rtems_rfs_file_set_size+0x282> <== NOT EXECUTED
0004fbdc <rtems_rfs_format>:
return rc;
}
int
rtems_rfs_format (const char* name, const rtems_rfs_format_config* config)
{
4fbdc: 4e56 fef4 linkw %fp,#-268
4fbe0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4fbe4: 246e 000c moveal %fp@(12),%a2
rtems_rfs_file_system fs;
int group;
int rc;
if (config->verbose)
4fbe8: 4a2a 0015 tstb %a2@(21)
4fbec: 6600 01d0 bnew 4fdbe <rtems_rfs_format+0x1e2>
printf ("rtems-rfs: format: %s\n", name);
memset (&fs, 0, sizeof (rtems_rfs_file_system));
4fbf0: 4878 0084 pea 84 <DBL_MANT_DIG+0x4f>
4fbf4: 2c0e movel %fp,%d6
4fbf6: 0686 ffff ff7c addil #-132,%d6
4fbfc: 42a7 clrl %sp@-
4fbfe: 2f06 movel %d6,%sp@-
4fc00: 4eb9 0006 159c jsr 6159c <memset>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4fc06: 41ee ffc4 lea %fp@(-60),%a0
rtems_chain_initialize_empty (&fs.buffers);
rtems_chain_initialize_empty (&fs.release);
rtems_chain_initialize_empty (&fs.release_modified);
rtems_chain_initialize_empty (&fs.file_shares);
fs.max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;
4fc0a: 7005 moveq #5,%d0
4fc0c: 2d48 ffc0 movel %a0,%fp@(-64)
head->previous = NULL;
tail->previous = head;
4fc10: 41ee ffc0 lea %fp@(-64),%a0
4fc14: 2d48 ffc8 movel %a0,%fp@(-56)
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4fc18: 41ee ffd4 lea %fp@(-44),%a0
4fc1c: 2d48 ffd0 movel %a0,%fp@(-48)
head->previous = NULL;
tail->previous = head;
4fc20: 41ee ffd0 lea %fp@(-48),%a0
4fc24: 2d48 ffd8 movel %a0,%fp@(-40)
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4fc28: 41ee ffe4 lea %fp@(-28),%a0
4fc2c: 2d48 ffe0 movel %a0,%fp@(-32)
head->previous = NULL;
tail->previous = head;
4fc30: 41ee ffe0 lea %fp@(-32),%a0
4fc34: 2d48 ffe8 movel %a0,%fp@(-24)
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4fc38: 41ee fff4 lea %fp@(-12),%a0
fs.flags = RTEMS_RFS_FS_NO_LOCAL_CACHE;
/*
* Open the buffer interface.
*/
rc = rtems_rfs_buffer_open (name, &fs);
4fc3c: 2f06 movel %d6,%sp@-
4fc3e: 2f2e 0008 movel %fp@(8),%sp@-
rtems_chain_initialize_empty (&fs.buffers);
rtems_chain_initialize_empty (&fs.release);
rtems_chain_initialize_empty (&fs.release_modified);
rtems_chain_initialize_empty (&fs.file_shares);
fs.max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;
4fc42: 2d40 ffbc movel %d0,%fp@(-68)
fs.release_count = 0;
fs.release_modified_count = 0;
fs.flags = RTEMS_RFS_FS_NO_LOCAL_CACHE;
4fc46: 103c 0002 moveb #2,%d0
4fc4a: 2d48 fff0 movel %a0,%fp@(-16)
head->previous = NULL;
tail->previous = head;
4fc4e: 41ee fff0 lea %fp@(-16),%a0
4fc52: 2d40 ff7c movel %d0,%fp@(-132)
4fc56: 2d48 fff8 movel %a0,%fp@(-8)
/*
* Open the buffer interface.
*/
rc = rtems_rfs_buffer_open (name, &fs);
4fc5a: 4eb9 0005 a454 jsr 5a454 <rtems_rfs_buffer_open>
if (rc > 0)
4fc60: 4fef 0014 lea %sp@(20),%sp
fs.flags = RTEMS_RFS_FS_NO_LOCAL_CACHE;
/*
* Open the buffer interface.
*/
rc = rtems_rfs_buffer_open (name, &fs);
4fc64: 2400 movel %d0,%d2
if (rc > 0)
4fc66: 6e00 0a0e bgtw 50676 <rtems_rfs_format+0xa9a>
}
/*
* Check the media.
*/
if (rtems_rfs_fs_media_block_size (&fs) == 0)
4fc6a: 206e ff8c moveal %fp@(-116),%a0
4fc6e: 2228 0020 movel %a0@(32),%d1
4fc72: 6700 0a2a beqw 5069e <rtems_rfs_format+0xac2>
static bool
rtems_rfs_check_config (rtems_rfs_file_system* fs,
const rtems_rfs_format_config* config)
{
fs->block_size = config->block_size;
4fc76: 2012 movel %a2@,%d0
4fc78: 2d40 ff84 movel %d0,%fp@(-124)
if (!fs->block_size)
4fc7c: 6700 0156 beqw 4fdd4 <rtems_rfs_format+0x1f8>
if (fs->block_size > (4 * 1024))
fs->block_size = (4 * 1024);
}
if ((fs->block_size % rtems_rfs_fs_media_block_size (fs)) != 0)
4fc80: 2600 movel %d0,%d3
4fc82: 4c41 3002 remul %d1,%d2,%d3
4fc86: 4a82 tstl %d2
4fc88: 6600 01be bnew 4fe48 <rtems_rfs_format+0x26c>
printf ("block size (%zd) is not a multiple of media block size (%" PRId32 ")\n",
fs->block_size, rtems_rfs_fs_media_block_size (fs));
return false;
}
fs->group_blocks = config->group_blocks;
4fc8c: 222a 0004 movel %a2@(4),%d1
{
/*
* The number of blocks per group is defined by the number of bits in a
* block.
*/
fs->group_blocks = rtems_rfs_bitmap_numof_bits (fs->block_size);
4fc90: e788 lsll #3,%d0
printf ("block size (%zd) is not a multiple of media block size (%" PRId32 ")\n",
fs->block_size, rtems_rfs_fs_media_block_size (fs));
return false;
}
fs->group_blocks = config->group_blocks;
4fc92: 2d41 ffa4 movel %d1,%fp@(-92)
if (!fs->group_blocks)
4fc96: 671e beqs 4fcb6 <rtems_rfs_format+0xda> <== ALWAYS TAKEN
* block.
*/
fs->group_blocks = rtems_rfs_bitmap_numof_bits (fs->block_size);
}
if (fs->group_blocks > rtems_rfs_bitmap_numof_bits (fs->block_size))
4fc98: b081 cmpl %d1,%d0 <== NOT EXECUTED
4fc9a: 641e bccs 4fcba <rtems_rfs_format+0xde> <== NOT EXECUTED
{
printf ("group block count is higher than bits in block\n");
4fc9c: 4879 0007 10bb pea 710bb <_CPU_m68k_BFFFO_table+0x1ac> <== NOT EXECUTED
4fca2: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
4fca8: 588f addql #4,%sp <== NOT EXECUTED
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
4fcaa: 70ff moveq #-1,%d0 <== NOT EXECUTED
rc, strerror (rc));
return -1;
}
return 0;
}
4fcac: 4cee 3cfc fef4 moveml %fp@(-268),%d2-%d7/%a2-%a5
4fcb2: 4e5e unlk %fp
4fcb4: 4e75 rts
{
/*
* The number of blocks per group is defined by the number of bits in a
* block.
*/
fs->group_blocks = rtems_rfs_bitmap_numof_bits (fs->block_size);
4fcb6: 2d40 ffa4 movel %d0,%fp@(-92)
{
printf ("group block count is higher than bits in block\n");
return false;
}
fs->blocks = rtems_rfs_fs_media_size (fs) / fs->block_size;
4fcba: 2f06 movel %d6,%sp@-
4fcbc: 49f9 0005 d03c lea 5d03c <rtems_rfs_fs_media_size>,%a4
4fcc2: 4e94 jsr %a4@
4fcc4: 242e ff84 movel %fp@(-124),%d2
* Return the number of bits that fit in the block size.
*/
static int
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)
{
return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));
4fcc8: 2602 movel %d2,%d3
{
printf ("group block count is higher than bits in block\n");
return false;
}
fs->blocks = rtems_rfs_fs_media_size (fs) / fs->block_size;
4fcca: 2f02 movel %d2,%sp@-
* Return the number of bits that fit in the block size.
*/
static int
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)
{
return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));
4fccc: e78b lsll #3,%d3
{
printf ("group block count is higher than bits in block\n");
return false;
}
fs->blocks = rtems_rfs_fs_media_size (fs) / fs->block_size;
4fcce: 42a7 clrl %sp@-
4fcd0: 2f01 movel %d1,%sp@-
4fcd2: 2f00 movel %d0,%sp@-
4fcd4: 4eb9 0006 dfc8 jsr 6dfc8 <__udivdi3>
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
4fcda: 4fef 0014 lea %sp@(20),%sp
{
printf ("group block count is higher than bits in block\n");
return false;
}
fs->blocks = rtems_rfs_fs_media_size (fs) / fs->block_size;
4fcde: 2d41 ff80 movel %d1,%fp@(-128)
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
4fce2: 6700 0456 beqw 5013a <rtems_rfs_format+0x55e>
return 1;
return ((dividend - 1) / divisor) + 1;
4fce6: 2001 movel %d1,%d0
4fce8: 5380 subql #1,%d0
4fcea: 4c43 0000 remul %d3,%d0,%d0
4fcee: 5280 addql #1,%d0
* per block.
*/
fs->group_count = rtems_rfs_rup_quotient (rtems_rfs_fs_blocks (fs),
rtems_rfs_bits_per_block (fs));
fs->group_inodes = config->group_inodes;
4fcf0: 282a 0008 movel %a2@(8),%d4
/*
* The bits per block sets the upper limit for the number of blocks in a
* group. The disk will be divided into groups which are the number of bits
* per block.
*/
fs->group_count = rtems_rfs_rup_quotient (rtems_rfs_fs_blocks (fs),
4fcf4: 2d40 ffa0 movel %d0,%fp@(-96)
rtems_rfs_bits_per_block (fs));
fs->group_inodes = config->group_inodes;
if (!fs->group_inodes)
4fcf8: 4a84 tstl %d4
4fcfa: 6700 03f2 beqw 500ee <rtems_rfs_format+0x512>
4fcfe: 2202 movel %d2,%d1 <== NOT EXECUTED
4fd00: 7a38 moveq #56,%d5 <== NOT EXECUTED
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
return 1;
return ((dividend - 1) / divisor) + 1;
4fd02: 5384 subql #1,%d4 <== NOT EXECUTED
4fd04: 4c45 1001 remul %d5,%d1,%d1 <== NOT EXECUTED
4fd08: 4c41 4004 remul %d1,%d4,%d4 <== NOT EXECUTED
}
/*
* Round up to fill a block because the minimum allocation unit is a block.
*/
fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
4fd0c: 2d41 ffac movel %d1,%fp@(-84) <== NOT EXECUTED
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
return 1;
return ((dividend - 1) / divisor) + 1;
4fd10: 2004 movel %d4,%d0 <== NOT EXECUTED
4fd12: 5280 addql #1,%d0 <== NOT EXECUTED
* Round up to fill a block because the minimum allocation unit is a block.
*/
fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
fs->group_inodes =
rtems_rfs_rup_quotient (fs->group_inodes,
fs->inodes_per_block) * fs->inodes_per_block;
4fd14: 4c00 1800 mulsl %d0,%d1
if (fs->group_inodes > rtems_rfs_bitmap_numof_bits (fs->block_size))
4fd18: b283 cmpl %d3,%d1
4fd1a: 6200 03b4 bhiw 500d0 <rtems_rfs_format+0x4f4>
fs->group_inodes = rtems_rfs_bitmap_numof_bits (fs->block_size);
fs->max_name_length = config->max_name_length;
4fd1e: 202a 0010 movel %a2@(16),%d0
/*
* Round up to fill a block because the minimum allocation unit is a block.
*/
fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
fs->group_inodes =
4fd22: 2d41 ffa8 movel %d1,%fp@(-88)
if (fs->group_inodes > rtems_rfs_bitmap_numof_bits (fs->block_size))
fs->group_inodes = rtems_rfs_bitmap_numof_bits (fs->block_size);
fs->max_name_length = config->max_name_length;
if (!fs->max_name_length)
4fd26: 4a80 tstl %d0
4fd28: 6600 03b4 bnew 500de <rtems_rfs_format+0x502>
{
fs->max_name_length = 512;
4fd2c: 307c 0200 moveaw #512,%a0
4fd30: 2d48 ff98 movel %a0,%fp@(-104)
* Check the configuration data.
*/
if (!rtems_rfs_check_config (&fs, config))
return -1;
if (config->verbose)
4fd34: 4a2a 0015 tstb %a2@(21)
4fd38: 6600 0128 bnew 4fe62 <rtems_rfs_format+0x286>
printf ("rtems-rfs: format: groups = %u\n", fs.group_count);
printf ("rtems-rfs: format: group blocks = %zu\n", fs.group_blocks);
printf ("rtems-rfs: format: group inodes = %zu\n", fs.group_inodes);
}
rc = rtems_rfs_buffer_setblksize (&fs, rtems_rfs_fs_block_size (&fs));
4fd3c: 2f02 movel %d2,%sp@-
4fd3e: 2f06 movel %d6,%sp@-
4fd40: 4eb9 0005 a738 jsr 5a738 <rtems_rfs_buffer_setblksize>
if (rc > 0)
4fd46: 508f addql #8,%sp
printf ("rtems-rfs: format: groups = %u\n", fs.group_count);
printf ("rtems-rfs: format: group blocks = %zu\n", fs.group_blocks);
printf ("rtems-rfs: format: group inodes = %zu\n", fs.group_inodes);
}
rc = rtems_rfs_buffer_setblksize (&fs, rtems_rfs_fs_block_size (&fs));
4fd48: 2400 movel %d0,%d2
if (rc > 0)
4fd4a: 6e00 0806 bgtw 50552 <rtems_rfs_format+0x976>
printf ("rtems-rfs: write-superblock: handle open failed: %d: %s\n",
rc, strerror (rc));
return false;
}
rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, false);
4fd4e: 42a7 clrl %sp@-
4fd50: 49ee ff34 lea %fp@(-204),%a4
4fd54: 42a7 clrl %sp@-
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
4fd56: 4207 clrb %d7
4fd58: 2f0c movel %a4,%sp@-
4fd5a: 1d47 ff34 moveb %d7,%fp@(-204)
4fd5e: 2f06 movel %d6,%sp@-
handle->bnum = 0;
4fd60: 42ae ff36 clrl %fp@(-202)
handle->buffer = NULL;
4fd64: 42ae ff3a clrl %fp@(-198)
4fd68: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request>
if (rc > 0)
4fd6e: 4fef 0010 lea %sp@(16),%sp
printf ("rtems-rfs: write-superblock: handle open failed: %d: %s\n",
rc, strerror (rc));
return false;
}
rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, false);
4fd72: 2400 movel %d0,%d2
if (rc > 0)
4fd74: 6f00 01f6 blew 4ff6c <rtems_rfs_format+0x390>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
4fd78: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4fd7a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4fd7c: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
4fd82: 1d47 ff34 moveb %d7,%fp@(-204) <== NOT EXECUTED
{
rtems_rfs_buffer_handle_close (fs, &handle);
printf ("rtems-rfs: write-superblock: request failed: %d: %s\n",
4fd86: 2f02 movel %d2,%sp@- <== NOT EXECUTED
handle->bnum = 0;
4fd88: 42ae ff36 clrl %fp@(-202) <== NOT EXECUTED
handle->buffer = NULL;
4fd8c: 42ae ff3a clrl %fp@(-198) <== NOT EXECUTED
4fd90: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
4fd96: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4fd98: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4fd9a: 4879 0007 12e4 pea 712e4 <_CPU_m68k_BFFFO_table+0x3d5> <== NOT EXECUTED
4fda0: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
4fda6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
return -1;
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
4fdaa: 4879 0007 17c5 pea 717c5 <_CPU_m68k_BFFFO_table+0x8b6> <== NOT EXECUTED
4fdb0: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
4fdb6: 588f addql #4,%sp <== NOT EXECUTED
return -1;
4fdb8: 70ff moveq #-1,%d0 <== NOT EXECUTED
4fdba: 6000 fef0 braw 4fcac <rtems_rfs_format+0xd0> <== NOT EXECUTED
rtems_rfs_file_system fs;
int group;
int rc;
if (config->verbose)
printf ("rtems-rfs: format: %s\n", name);
4fdbe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4fdc2: 4879 0007 100f pea 7100f <_CPU_m68k_BFFFO_table+0x100> <== NOT EXECUTED
4fdc8: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
4fdce: 508f addql #8,%sp <== NOT EXECUTED
4fdd0: 6000 fe1e braw 4fbf0 <rtems_rfs_format+0x14> <== NOT EXECUTED
const rtems_rfs_format_config* config)
{
fs->block_size = config->block_size;
if (!fs->block_size)
{
uint64_t total_size = rtems_rfs_fs_media_size (fs);
4fdd4: 2f06 movel %d6,%sp@-
if (total_size >= GIGS (1))
4fdd6: 4282 clrl %d2
4fdd8: 263c 000f ffff movel #1048575,%d3
const rtems_rfs_format_config* config)
{
fs->block_size = config->block_size;
if (!fs->block_size)
{
uint64_t total_size = rtems_rfs_fs_media_size (fs);
4fdde: 4eb9 0005 d03c jsr 5d03c <rtems_rfs_fs_media_size>
if (total_size >= GIGS (1))
4fde4: 588f addql #4,%sp
4fde6: 9681 subl %d1,%d3
4fde8: 9580 subxl %d0,%d2
4fdea: 6400 0354 bccw 50140 <rtems_rfs_format+0x564>
{
uint32_t gigs = (total_size + GIGS (1)) / GIGS (1);
4fdee: 7a0c moveq #12,%d5 <== NOT EXECUTED
4fdf0: 7e14 moveq #20,%d7 <== NOT EXECUTED
int b;
for (b = 31; b > 0; b--)
4fdf2: 741f moveq #31,%d2 <== NOT EXECUTED
if ((gigs & (1 << b)) != 0)
4fdf4: 7801 moveq #1,%d4 <== NOT EXECUTED
{
uint64_t total_size = rtems_rfs_fs_media_size (fs);
if (total_size >= GIGS (1))
{
uint32_t gigs = (total_size + GIGS (1)) / GIGS (1);
4fdf6: 4283 clrl %d3 <== NOT EXECUTED
4fdf8: 0681 0010 0000 addil #1048576,%d1 <== NOT EXECUTED
4fdfe: d183 addxl %d3,%d0 <== NOT EXECUTED
4fe00: 2600 movel %d0,%d3 <== NOT EXECUTED
4fe02: 2001 movel %d1,%d0 <== NOT EXECUTED
4fe04: eea8 lsrl %d7,%d0 <== NOT EXECUTED
4fe06: ebab lsll %d5,%d3 <== NOT EXECUTED
4fe08: 8680 orl %d0,%d3 <== NOT EXECUTED
int b;
for (b = 31; b > 0; b--)
if ((gigs & (1 << b)) != 0)
4fe0a: 2004 movel %d4,%d0 <== NOT EXECUTED
4fe0c: e5a8 lsll %d2,%d0 <== NOT EXECUTED
if (total_size >= GIGS (1))
{
uint32_t gigs = (total_size + GIGS (1)) / GIGS (1);
int b;
for (b = 31; b > 0; b--)
4fe0e: 5382 subql #1,%d2 <== NOT EXECUTED
if ((gigs & (1 << b)) != 0)
4fe10: 2200 movel %d0,%d1 <== NOT EXECUTED
4fe12: c283 andl %d3,%d1 <== NOT EXECUTED
4fe14: 6606 bnes 4fe1c <rtems_rfs_format+0x240> <== NOT EXECUTED
if (total_size >= GIGS (1))
{
uint32_t gigs = (total_size + GIGS (1)) / GIGS (1);
int b;
for (b = 31; b > 0; b--)
4fe16: 4a82 tstl %d2 <== NOT EXECUTED
4fe18: 66f0 bnes 4fe0a <rtems_rfs_format+0x22e> <== NOT EXECUTED
4fe1a: 7001 moveq #1,%d0 <== NOT EXECUTED
if ((gigs & (1 << b)) != 0)
break;
fs->block_size = 1 << b;
4fe1c: 2d40 ff84 movel %d0,%fp@(-124) <== NOT EXECUTED
}
if (fs->block_size < 512)
4fe20: 0c80 0000 01ff cmpil #511,%d0 <== NOT EXECUTED
4fe26: 6200 0326 bhiw 5014e <rtems_rfs_format+0x572> <== NOT EXECUTED
fs->block_size = 512;
4fe2a: 203c 0000 0200 movel #512,%d0
if (fs->block_size > (4 * 1024))
fs->block_size = (4 * 1024);
}
if ((fs->block_size % rtems_rfs_fs_media_block_size (fs)) != 0)
4fe30: 2600 movel %d0,%d3
4fe32: 206e ff8c moveal %fp@(-116),%a0
break;
fs->block_size = 1 << b;
}
if (fs->block_size < 512)
fs->block_size = 512;
4fe36: 2d40 ff84 movel %d0,%fp@(-124)
4fe3a: 2228 0020 movel %a0@(32),%d1
if (fs->block_size > (4 * 1024))
fs->block_size = (4 * 1024);
}
if ((fs->block_size % rtems_rfs_fs_media_block_size (fs)) != 0)
4fe3e: 4c41 3002 remul %d1,%d2,%d3
4fe42: 4a82 tstl %d2
4fe44: 6700 fe46 beqw 4fc8c <rtems_rfs_format+0xb0>
{
printf ("block size (%zd) is not a multiple of media block size (%" PRId32 ")\n",
4fe48: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4fe4a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4fe4c: 4879 0007 107d pea 7107d <_CPU_m68k_BFFFO_table+0x16e> <== NOT EXECUTED
4fe52: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
4fe58: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
4fe5c: 70ff moveq #-1,%d0 <== NOT EXECUTED
4fe5e: 6000 fe4c braw 4fcac <rtems_rfs_format+0xd0> <== NOT EXECUTED
if (!rtems_rfs_check_config (&fs, config))
return -1;
if (config->verbose)
{
printf ("rtems-rfs: format: media size = %" PRIu64 "\n",
4fe62: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4fe64: 47f9 0006 16ec lea 616ec <printf>,%a3 <== NOT EXECUTED
4fe6a: 4e94 jsr %a4@ <== NOT EXECUTED
4fe6c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4fe6e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4fe70: 4879 0007 10ea pea 710ea <_CPU_m68k_BFFFO_table+0x1db> <== NOT EXECUTED
4fe76: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_rfs_fs_media_size (&fs));
printf ("rtems-rfs: format: media blocks = %" PRIu32 "\n",
rtems_rfs_fs_media_blocks (&fs));
4fe78: 206e ff8c moveal %fp@(-116),%a0 <== NOT EXECUTED
if (config->verbose)
{
printf ("rtems-rfs: format: media size = %" PRIu64 "\n",
rtems_rfs_fs_media_size (&fs));
printf ("rtems-rfs: format: media blocks = %" PRIu32 "\n",
4fe7c: 2f28 001c movel %a0@(28),%sp@- <== NOT EXECUTED
4fe80: 4879 0007 1110 pea 71110 <_CPU_m68k_BFFFO_table+0x201> <== NOT EXECUTED
4fe86: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_rfs_fs_media_blocks (&fs));
printf ("rtems-rfs: format: media block size = %" PRIu32 "\n",
rtems_rfs_fs_media_block_size (&fs));
4fe88: 206e ff8c moveal %fp@(-116),%a0 <== NOT EXECUTED
{
printf ("rtems-rfs: format: media size = %" PRIu64 "\n",
rtems_rfs_fs_media_size (&fs));
printf ("rtems-rfs: format: media blocks = %" PRIu32 "\n",
rtems_rfs_fs_media_blocks (&fs));
printf ("rtems-rfs: format: media block size = %" PRIu32 "\n",
4fe8c: 2f28 0020 movel %a0@(32),%sp@- <== NOT EXECUTED
4fe90: 4879 0007 1137 pea 71137 <_CPU_m68k_BFFFO_table+0x228> <== NOT EXECUTED
4fe96: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_rfs_fs_media_block_size (&fs));
printf ("rtems-rfs: format: size = %" PRIu64 "\n",
4fe98: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4fe9c: 2e86 movel %d6,%sp@ <== NOT EXECUTED
4fe9e: 4eb9 0005 d00c jsr 5d00c <rtems_rfs_fs_size> <== NOT EXECUTED
4fea4: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4fea6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4fea8: 4879 0007 1162 pea 71162 <_CPU_m68k_BFFFO_table+0x253> <== NOT EXECUTED
4feae: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_rfs_fs_size (&fs));
printf ("rtems-rfs: format: blocks = %zu\n",
4feb0: 2f2e ff80 movel %fp@(-128),%sp@- <== NOT EXECUTED
4feb4: 4879 0007 1182 pea 71182 <_CPU_m68k_BFFFO_table+0x273> <== NOT EXECUTED
4feba: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_rfs_fs_blocks (&fs));
printf ("rtems-rfs: format: block size = %zu\n",
4febc: 2f2e ff84 movel %fp@(-124),%sp@- <== NOT EXECUTED
4fec0: 4879 0007 11a3 pea 711a3 <_CPU_m68k_BFFFO_table+0x294> <== NOT EXECUTED
4fec6: 4e93 jsr %a3@ <== NOT EXECUTED
* Return the number of bits that fit in the block size.
*/
static int
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)
{
return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));
4fec8: 202e ff84 movel %fp@(-124),%d0 <== NOT EXECUTED
rtems_rfs_fs_size (&fs));
printf ("rtems-rfs: format: blocks = %zu\n",
rtems_rfs_fs_blocks (&fs));
printf ("rtems-rfs: format: block size = %zu\n",
rtems_rfs_fs_block_size (&fs));
printf ("rtems-rfs: format: bits per block = %u\n",
4fecc: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
* Return the number of bits that fit in the block size.
*/
static int
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)
{
return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));
4fed0: e788 lsll #3,%d0 <== NOT EXECUTED
rtems_rfs_fs_size (&fs));
printf ("rtems-rfs: format: blocks = %zu\n",
rtems_rfs_fs_blocks (&fs));
printf ("rtems-rfs: format: block size = %zu\n",
rtems_rfs_fs_block_size (&fs));
printf ("rtems-rfs: format: bits per block = %u\n",
4fed2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4fed4: 4879 0007 11c8 pea 711c8 <_CPU_m68k_BFFFO_table+0x2b9> <== NOT EXECUTED
4feda: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_rfs_bits_per_block (&fs));
printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
4fedc: 4878 0038 pea 38 <DBL_MANT_DIG+0x3> <== NOT EXECUTED
4fee0: 4879 0007 11f0 pea 711f0 <_CPU_m68k_BFFFO_table+0x2e1> <== NOT EXECUTED
4fee6: 4e93 jsr %a3@ <== NOT EXECUTED
static int
rtems_rfs_inode_overhead (rtems_rfs_file_system* fs)
{
int blocks;
int bits_per_block;
blocks = rtems_rfs_rup_quotient(fs->group_inodes * RTEMS_RFS_INODE_SIZE,
4fee8: 242e ffa8 movel %fp@(-88),%d2 <== NOT EXECUTED
4feec: 2802 movel %d2,%d4 <== NOT EXECUTED
4feee: 2002 movel %d2,%d0 <== NOT EXECUTED
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
4fef0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4fef4: 223c 0000 07d0 movel #2000,%d1 <== NOT EXECUTED
static int
rtems_rfs_inode_overhead (rtems_rfs_file_system* fs)
{
int blocks;
int bits_per_block;
blocks = rtems_rfs_rup_quotient(fs->group_inodes * RTEMS_RFS_INODE_SIZE,
4fefa: e78c lsll #3,%d4 <== NOT EXECUTED
4fefc: ed88 lsll #6,%d0 <== NOT EXECUTED
4fefe: 262e ff84 movel %fp@(-124),%d3 <== NOT EXECUTED
4ff02: 9084 subl %d4,%d0 <== NOT EXECUTED
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
4ff04: 6600 0268 bnew 5016e <rtems_rfs_format+0x592> <== NOT EXECUTED
rtems_rfs_fs_block_size (fs));
bits_per_block = rtems_rfs_bits_per_block (fs);
/*
* There could be more bits than blocks, eg 512K disk with 512 blocks.
*/
if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
4ff08: 202e ff80 movel %fp@(-128),%d0 <== NOT EXECUTED
4ff0c: 5380 subql #1,%d0 <== NOT EXECUTED
* Return the number of bits that fit in the block size.
*/
static int
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)
{
return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));
4ff0e: e78b lsll #3,%d3 <== NOT EXECUTED
rtems_rfs_fs_block_size (fs));
bits_per_block = rtems_rfs_bits_per_block (fs);
/*
* There could be more bits than blocks, eg 512K disk with 512 blocks.
*/
if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
4ff10: b083 cmpl %d3,%d0 <== NOT EXECUTED
4ff12: 6400 036e bccw 50282 <rtems_rfs_format+0x6a6> <== NOT EXECUTED
printf ("rtems-rfs: format: block size = %zu\n",
rtems_rfs_fs_block_size (&fs));
printf ("rtems-rfs: format: bits per block = %u\n",
rtems_rfs_bits_per_block (&fs));
printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",
4ff16: 2a2e ffa0 movel %fp@(-96),%d5 <== NOT EXECUTED
4ff1a: 4c02 5800 mulsl %d2,%d5 <== NOT EXECUTED
/*
* There could be more bits than blocks, eg 512K disk with 512 blocks.
*/
if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
bits_per_block = rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE;
return ((blocks + 1) * 100 * 10) / bits_per_block;
4ff1e: 4c40 1801 remsl %d0,%d1,%d1 <== NOT EXECUTED
printf ("rtems-rfs: format: block size = %zu\n",
rtems_rfs_fs_block_size (&fs));
printf ("rtems-rfs: format: bits per block = %u\n",
rtems_rfs_bits_per_block (&fs));
printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",
4ff22: 760a moveq #10,%d3 <== NOT EXECUTED
4ff24: 4c43 1800 remsl %d3,%d0,%d1 <== NOT EXECUTED
4ff28: 4c43 1801 remsl %d3,%d1,%d1 <== NOT EXECUTED
4ff2c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4ff2e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4ff30: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4ff32: 4879 0007 1215 pea 71215 <_CPU_m68k_BFFFO_table+0x306> <== NOT EXECUTED
4ff38: 4e93 jsr %a3@ <== NOT EXECUTED
fs.group_inodes * fs.group_count,
rtems_rfs_inode_overhead (&fs) / 10,
rtems_rfs_inode_overhead (&fs) % 10);
printf ("rtems-rfs: format: groups = %u\n", fs.group_count);
4ff3a: 2f2e ffa0 movel %fp@(-96),%sp@- <== NOT EXECUTED
4ff3e: 4879 0007 1240 pea 71240 <_CPU_m68k_BFFFO_table+0x331> <== NOT EXECUTED
4ff44: 4e93 jsr %a3@ <== NOT EXECUTED
printf ("rtems-rfs: format: group blocks = %zu\n", fs.group_blocks);
4ff46: 2f2e ffa4 movel %fp@(-92),%sp@- <== NOT EXECUTED
4ff4a: 4879 0007 1260 pea 71260 <_CPU_m68k_BFFFO_table+0x351> <== NOT EXECUTED
4ff50: 4e93 jsr %a3@ <== NOT EXECUTED
printf ("rtems-rfs: format: group inodes = %zu\n", fs.group_inodes);
4ff52: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4ff56: 2eae ffa8 movel %fp@(-88),%sp@ <== NOT EXECUTED
4ff5a: 4879 0007 1287 pea 71287 <_CPU_m68k_BFFFO_table+0x378> <== NOT EXECUTED
4ff60: 4e93 jsr %a3@ <== NOT EXECUTED
4ff62: 242e ff84 movel %fp@(-124),%d2 <== NOT EXECUTED
4ff66: 508f addql #8,%sp <== NOT EXECUTED
4ff68: 6000 fdd2 braw 4fd3c <rtems_rfs_format+0x160> <== NOT EXECUTED
printf ("rtems-rfs: write-superblock: request failed: %d: %s\n",
rc, strerror (rc));
return false;
}
sb = rtems_rfs_buffer_data (&handle);
4ff6c: 206e ff3a moveal %fp@(-198),%a0
memset (sb, 0xff, rtems_rfs_fs_block_size (fs));
write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);
write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);
write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));
4ff70: 7a18 moveq #24,%d5
printf ("rtems-rfs: write-superblock: request failed: %d: %s\n",
rc, strerror (rc));
return false;
}
sb = rtems_rfs_buffer_data (&handle);
4ff72: 2668 001a moveal %a0@(26),%a3
#define write_sb(_o, _d) rtems_rfs_write_u32(sb + (_o), _d)
memset (sb, 0xff, rtems_rfs_fs_block_size (fs));
4ff76: 2f2e ff84 movel %fp@(-124),%sp@-
4ff7a: 4878 00ff pea ff <DBL_MANT_DIG+0xca>
write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);
write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);
4ff7e: 4203 clrb %d3
sb = rtems_rfs_buffer_data (&handle);
#define write_sb(_o, _d) rtems_rfs_write_u32(sb + (_o), _d)
memset (sb, 0xff, rtems_rfs_fs_block_size (fs));
4ff80: 2f0b movel %a3,%sp@-
write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);
4ff82: 7401 moveq #1,%d2
sb = rtems_rfs_buffer_data (&handle);
#define write_sb(_o, _d) rtems_rfs_write_u32(sb + (_o), _d)
memset (sb, 0xff, rtems_rfs_fs_block_size (fs));
4ff84: 4eb9 0006 159c jsr 6159c <memset>
write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);
4ff8a: 7009 moveq #9,%d0
4ff8c: 7220 moveq #32,%d1
4ff8e: 1742 0003 moveb %d2,%a3@(3)
4ff92: 16bc 0028 moveb #40,%a3@
4ff96: 1741 0002 moveb %d1,%a3@(2)
4ff9a: 1740 0001 moveb %d0,%a3@(1)
write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);
4ff9e: 1743 0004 moveb %d3,%a3@(4)
4ffa2: 1743 0005 moveb %d3,%a3@(5)
4ffa6: 1743 0006 moveb %d3,%a3@(6)
4ffaa: 1743 0007 moveb %d3,%a3@(7)
write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);
write_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH, fs->max_name_length);
write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);
write_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS, fs->group_blocks);
write_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES, fs->group_inodes);
write_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE, RTEMS_RFS_INODE_SIZE);
4ffae: 7e38 moveq #56,%d7
memset (sb, 0xff, rtems_rfs_fs_block_size (fs));
write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);
write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);
write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));
4ffb0: 202e ff80 movel %fp@(-128),%d0
4ffb4: 2200 movel %d0,%d1
4ffb6: eaa9 lsrl %d5,%d1
4ffb8: 2400 movel %d0,%d2
4ffba: e08a lsrl #8,%d2
4ffbc: 1741 000c moveb %d1,%a3@(12)
4ffc0: 2200 movel %d0,%d1
write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
4ffc2: 176e ff84 0008 moveb %fp@(-124),%a3@(8)
memset (sb, 0xff, rtems_rfs_fs_block_size (fs));
write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);
write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);
write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));
4ffc8: 4241 clrw %d1
4ffca: 4841 swap %d1
4ffcc: 1742 000e moveb %d2,%a3@(14)
write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
4ffd0: 176e ff85 0009 moveb %fp@(-123),%a3@(9)
memset (sb, 0xff, rtems_rfs_fs_block_size (fs));
write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);
write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);
write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));
4ffd6: 1741 000d moveb %d1,%a3@(13)
4ffda: 1740 000f moveb %d0,%a3@(15)
write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
4ffde: 176e ff86 000a moveb %fp@(-122),%a3@(10)
write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);
write_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS, fs->group_blocks);
write_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES, fs->group_inodes);
write_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE, RTEMS_RFS_INODE_SIZE);
rtems_rfs_buffer_mark_dirty (&handle);
4ffe4: 7001 moveq #1,%d0
memset (sb, 0xff, rtems_rfs_fs_block_size (fs));
write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);
write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);
write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));
write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
4ffe6: 176e ff87 000b moveb %fp@(-121),%a3@(11)
write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);
4ffec: 176e ff94 0010 moveb %fp@(-108),%a3@(16)
4fff2: 176e ff95 0011 moveb %fp@(-107),%a3@(17)
4fff8: 176e ff96 0012 moveb %fp@(-106),%a3@(18)
4fffe: 176e ff97 0013 moveb %fp@(-105),%a3@(19)
write_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH, fs->max_name_length);
50004: 176e ff98 0014 moveb %fp@(-104),%a3@(20)
5000a: 176e ff99 0015 moveb %fp@(-103),%a3@(21)
50010: 176e ff9a 0016 moveb %fp@(-102),%a3@(22)
50016: 176e ff9b 0017 moveb %fp@(-101),%a3@(23)
write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);
5001c: 176e ffa0 0018 moveb %fp@(-96),%a3@(24)
50022: 176e ffa1 0019 moveb %fp@(-95),%a3@(25)
50028: 176e ffa2 001a moveb %fp@(-94),%a3@(26)
5002e: 176e ffa3 001b moveb %fp@(-93),%a3@(27)
write_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS, fs->group_blocks);
50034: 176e ffa4 001c moveb %fp@(-92),%a3@(28)
5003a: 176e ffa5 001d moveb %fp@(-91),%a3@(29)
50040: 176e ffa6 001e moveb %fp@(-90),%a3@(30)
50046: 176e ffa7 001f moveb %fp@(-89),%a3@(31)
write_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES, fs->group_inodes);
5004c: 176e ffa8 0020 moveb %fp@(-88),%a3@(32)
50052: 176e ffa9 0021 moveb %fp@(-87),%a3@(33)
50058: 176e ffaa 0022 moveb %fp@(-86),%a3@(34)
5005e: 176e ffab 0023 moveb %fp@(-85),%a3@(35)
write_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE, RTEMS_RFS_INODE_SIZE);
50064: 1743 0024 moveb %d3,%a3@(36)
50068: 1743 0025 moveb %d3,%a3@(37)
5006c: 1743 0026 moveb %d3,%a3@(38)
50070: 1747 0027 moveb %d7,%a3@(39)
rtems_rfs_buffer_mark_dirty (&handle);
50074: 1d40 ff34 moveb %d0,%fp@(-204)
rc = rtems_rfs_buffer_handle_release (fs, &handle);
50078: 2f0c movel %a4,%sp@-
5007a: 2f06 movel %d6,%sp@-
5007c: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release>
if (rc > 0)
50082: 4fef 0014 lea %sp@(20),%sp
write_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES, fs->group_inodes);
write_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE, RTEMS_RFS_INODE_SIZE);
rtems_rfs_buffer_mark_dirty (&handle);
rc = rtems_rfs_buffer_handle_release (fs, &handle);
50086: 2400 movel %d0,%d2
if (rc > 0)
50088: 6f00 013a blew 501c4 <rtems_rfs_format+0x5e8>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5008c: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5008e: 2f06 movel %d6,%sp@- <== NOT EXECUTED
50090: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
50096: 1d43 ff34 moveb %d3,%fp@(-204) <== NOT EXECUTED
{
rtems_rfs_buffer_handle_close (fs, &handle);
printf ("rtems-rfs: write-superblock: buffer release failed: %d: %s\n",
5009a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
handle->bnum = 0;
5009c: 42ae ff36 clrl %fp@(-202) <== NOT EXECUTED
handle->buffer = NULL;
500a0: 42ae ff3a clrl %fp@(-198) <== NOT EXECUTED
500a4: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
500aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
500ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED
500ae: 4879 0007 1319 pea 71319 <_CPU_m68k_BFFFO_table+0x40a> <== NOT EXECUTED
500b4: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
500ba: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
return -1;
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
500be: 4879 0007 17c5 pea 717c5 <_CPU_m68k_BFFFO_table+0x8b6> <== NOT EXECUTED
500c4: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
500ca: 588f addql #4,%sp <== NOT EXECUTED
500cc: 6000 fcea braw 4fdb8 <rtems_rfs_format+0x1dc> <== NOT EXECUTED
fs->inodes_per_block) * fs->inodes_per_block;
if (fs->group_inodes > rtems_rfs_bitmap_numof_bits (fs->block_size))
fs->group_inodes = rtems_rfs_bitmap_numof_bits (fs->block_size);
fs->max_name_length = config->max_name_length;
500d0: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
fs->group_inodes =
rtems_rfs_rup_quotient (fs->group_inodes,
fs->inodes_per_block) * fs->inodes_per_block;
if (fs->group_inodes > rtems_rfs_bitmap_numof_bits (fs->block_size))
fs->group_inodes = rtems_rfs_bitmap_numof_bits (fs->block_size);
500d4: 2d43 ffa8 movel %d3,%fp@(-88) <== NOT EXECUTED
fs->max_name_length = config->max_name_length;
if (!fs->max_name_length)
500d8: 4a80 tstl %d0 <== NOT EXECUTED
500da: 6700 fc50 beqw 4fd2c <rtems_rfs_format+0x150> <== NOT EXECUTED
fs->inodes_per_block) * fs->inodes_per_block;
if (fs->group_inodes > rtems_rfs_bitmap_numof_bits (fs->block_size))
fs->group_inodes = rtems_rfs_bitmap_numof_bits (fs->block_size);
fs->max_name_length = config->max_name_length;
500de: 2d40 ff98 movel %d0,%fp@(-104) <== NOT EXECUTED
* Check the configuration data.
*/
if (!rtems_rfs_check_config (&fs, config))
return -1;
if (config->verbose)
500e2: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED
500e6: 6700 fc54 beqw 4fd3c <rtems_rfs_format+0x160> <== NOT EXECUTED
500ea: 6000 fd76 braw 4fe62 <rtems_rfs_format+0x286> <== NOT EXECUTED
int inode_overhead = RTEMS_RFS_INODE_OVERHEAD_PERCENTAGE;
/*
* The number of inodes per group is set as a percentage.
*/
if (config->inode_overhead)
500ee: 206a 000c moveal %a2@(12),%a0
500f2: 4a88 tstl %a0
500f4: 6700 009e beqw 50194 <rtems_rfs_format+0x5b8>
500f8: 2808 movel %a0,%d4 <== NOT EXECUTED
static int
rtems_rfs_inodes_from_percent (rtems_rfs_file_system* fs,
int percentage)
{
int blocks;
blocks = ((rtems_rfs_fs_blocks (fs) -
500fa: 5381 subql #1,%d1 <== NOT EXECUTED
RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;
500fc: 4c04 1800 mulsl %d4,%d1 <== NOT EXECUTED
50100: 7e64 moveq #100,%d7 <== NOT EXECUTED
50102: 4c47 1001 remul %d7,%d1,%d1 <== NOT EXECUTED
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
50106: 6700 009e beqw 501a6 <rtems_rfs_format+0x5ca> <== NOT EXECUTED
return 1;
return ((dividend - 1) / divisor) + 1;
5010a: 5381 subql #1,%d1
{
int blocks;
blocks = ((rtems_rfs_fs_blocks (fs) -
RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;
blocks = rtems_rfs_rup_quotient (blocks, fs->group_count);
return blocks * (rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE);
5010c: 7e38 moveq #56,%d7
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
return 1;
return ((dividend - 1) / divisor) + 1;
5010e: 4c40 1001 remul %d0,%d1,%d1
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
50112: 7001 moveq #1,%d0
return 1;
return ((dividend - 1) / divisor) + 1;
50114: 2801 movel %d1,%d4
{
int blocks;
blocks = ((rtems_rfs_fs_blocks (fs) -
RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;
blocks = rtems_rfs_rup_quotient (blocks, fs->group_count);
return blocks * (rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE);
50116: 2202 movel %d2,%d1
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
return 1;
return ((dividend - 1) / divisor) + 1;
50118: 5284 addql #1,%d4
{
int blocks;
blocks = ((rtems_rfs_fs_blocks (fs) -
RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;
blocks = rtems_rfs_rup_quotient (blocks, fs->group_count);
return blocks * (rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE);
5011a: 4c47 1001 remul %d7,%d1,%d1
5011e: 4c01 4800 mulsl %d1,%d4
}
/*
* Round up to fill a block because the minimum allocation unit is a block.
*/
fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
50122: 2d41 ffac movel %d1,%fp@(-84)
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
50126: 4a84 tstl %d4
50128: 6700 fbea beqw 4fd14 <rtems_rfs_format+0x138>
return 1;
return ((dividend - 1) / divisor) + 1;
5012c: 5384 subql #1,%d4
5012e: 4c41 4004 remul %d1,%d4,%d4
50132: 2004 movel %d4,%d0
50134: 5280 addql #1,%d0
50136: 6000 fbdc braw 4fd14 <rtems_rfs_format+0x138>
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
return 1;
5013a: 7001 moveq #1,%d0 <== NOT EXECUTED
5013c: 6000 fbb2 braw 4fcf0 <rtems_rfs_format+0x114> <== NOT EXECUTED
50140: 202e ff84 movel %fp@(-124),%d0
if ((gigs & (1 << b)) != 0)
break;
fs->block_size = 1 << b;
}
if (fs->block_size < 512)
50144: 0c80 0000 01ff cmpil #511,%d0
5014a: 6300 fcde blsw 4fe2a <rtems_rfs_format+0x24e>
fs->block_size = 512;
if (fs->block_size > (4 * 1024))
5014e: 0c80 0000 1000 cmpil #4096,%d0 <== NOT EXECUTED
50154: 6300 0868 blsw 509be <rtems_rfs_format+0xde2> <== NOT EXECUTED
50158: 206e ff8c moveal %fp@(-116),%a0 <== NOT EXECUTED
fs->block_size = (4 * 1024);
5015c: 203c 0000 1000 movel #4096,%d0 <== NOT EXECUTED
50162: 2228 0020 movel %a0@(32),%d1 <== NOT EXECUTED
50166: 2d40 ff84 movel %d0,%fp@(-124) <== NOT EXECUTED
5016a: 6000 fb14 braw 4fc80 <rtems_rfs_format+0xa4> <== NOT EXECUTED
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
return 1;
return ((dividend - 1) / divisor) + 1;
5016e: 5380 subql #1,%d0 <== NOT EXECUTED
50170: 4c43 0000 remul %d3,%d0,%d0 <== NOT EXECUTED
* Return the number of bits that fit in the block size.
*/
static int
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)
{
return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));
50174: e78b lsll #3,%d3 <== NOT EXECUTED
50176: 2200 movel %d0,%d1 <== NOT EXECUTED
50178: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED
5017e: 5481 addql #2,%d1 <== NOT EXECUTED
50180: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
rtems_rfs_fs_block_size (fs));
bits_per_block = rtems_rfs_bits_per_block (fs);
/*
* There could be more bits than blocks, eg 512K disk with 512 blocks.
*/
if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
50184: 202e ff80 movel %fp@(-128),%d0 <== NOT EXECUTED
50188: 5380 subql #1,%d0 <== NOT EXECUTED
5018a: b083 cmpl %d3,%d0 <== NOT EXECUTED
5018c: 6500 fd88 bcsw 4ff16 <rtems_rfs_format+0x33a> <== NOT EXECUTED
50190: 6000 00f0 braw 50282 <rtems_rfs_format+0x6a6> <== NOT EXECUTED
int inode_overhead = RTEMS_RFS_INODE_OVERHEAD_PERCENTAGE;
/*
* The number of inodes per group is set as a percentage.
*/
if (config->inode_overhead)
50194: 7801 moveq #1,%d4
static int
rtems_rfs_inodes_from_percent (rtems_rfs_file_system* fs,
int percentage)
{
int blocks;
blocks = ((rtems_rfs_fs_blocks (fs) -
50196: 5381 subql #1,%d1
RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;
50198: 4c04 1800 mulsl %d4,%d1
5019c: 7e64 moveq #100,%d7
5019e: 4c47 1001 remul %d7,%d1,%d1
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
501a2: 6600 ff66 bnew 5010a <rtems_rfs_format+0x52e>
{
int blocks;
blocks = ((rtems_rfs_fs_blocks (fs) -
RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;
blocks = rtems_rfs_rup_quotient (blocks, fs->group_count);
return blocks * (rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE);
501a6: 2202 movel %d2,%d1
501a8: 7e38 moveq #56,%d7
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
501aa: 7801 moveq #1,%d4
501ac: 7001 moveq #1,%d0
{
int blocks;
blocks = ((rtems_rfs_fs_blocks (fs) -
RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;
blocks = rtems_rfs_rup_quotient (blocks, fs->group_count);
return blocks * (rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE);
501ae: 4c47 1001 remul %d7,%d1,%d1
501b2: 4c01 4800 mulsl %d1,%d4
}
/*
* Round up to fill a block because the minimum allocation unit is a block.
*/
fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
501b6: 2d41 ffac movel %d1,%fp@(-84)
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
501ba: 4a84 tstl %d4
501bc: 6700 fb56 beqw 4fd14 <rtems_rfs_format+0x138>
501c0: 6000 ff6a braw 5012c <rtems_rfs_format+0x550>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
501c4: 2f0c movel %a4,%sp@-
501c6: 2f06 movel %d6,%sp@-
501c8: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release>
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
}
for (group = 0; group < fs.group_count; group++)
501ce: 508f addql #8,%sp
501d0: 4aae ffa0 tstl %fp@(-96)
501d4: 6f00 053a blew 50710 <rtems_rfs_format+0xb34>
size_t group_size;
int blocks;
int b;
int rc;
group_base = rtems_rfs_fs_block (fs, group, 0);
501d8: 242e ffa4 movel %fp@(-92),%d2
return -1;
}
for (group = 0; group < fs.group_count; group++)
if (!rtems_rfs_write_group (&fs, group,
config->initialise_inodes, config->verbose))
501dc: 162a 0014 moveb %a2@(20),%d3
int b;
int rc;
group_base = rtems_rfs_fs_block (fs, group, 0);
if (group_base > rtems_rfs_fs_blocks (fs))
501e0: 202e ff80 movel %fp@(-128),%d0
return -1;
}
for (group = 0; group < fs.group_count; group++)
if (!rtems_rfs_write_group (&fs, group,
config->initialise_inodes, config->verbose))
501e4: 1d43 ff2b moveb %d3,%fp@(-213)
501e8: 122a 0015 moveb %a2@(21),%d1
int b;
int rc;
group_base = rtems_rfs_fs_block (fs, group, 0);
if (group_base > rtems_rfs_fs_blocks (fs))
501ec: 4a80 tstl %d0
501ee: 6700 04ca beqw 506ba <rtems_rfs_format+0xade>
501f2: 97cb subal %a3,%a3
501f4: 4287 clrl %d7
501f6: 280e movel %fp,%d4
501f8: 7601 moveq #1,%d3
501fa: 0684 ffff ff3e addil #-194,%d4
50200: 2a47 moveal %d7,%a5
50202: 2a0b movel %a3,%d5
50204: 1d41 ff1d moveb %d1,%fp@(-227)
/*
* Be nice to strange sizes of disks. These are embedded systems after all
* and nice numbers do not always work out. Let the last block pick up the
* remainder of the blocks.
*/
if ((group_base + group_size) > rtems_rfs_fs_blocks (fs))
50208: 2202 movel %d2,%d1
5020a: d283 addl %d3,%d1
5020c: b280 cmpl %d0,%d1
5020e: 6304 blss 50214 <rtems_rfs_format+0x638> <== NEVER TAKEN
group_size = rtems_rfs_fs_blocks (fs) - group_base;
50210: 2400 movel %d0,%d2
50212: 9483 subl %d3,%d2
if (verbose)
50214: 4a2e ff1d tstb %fp@(-227)
50218: 6600 012c bnew 50346 <rtems_rfs_format+0x76a>
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
handle->bnum = 0;
5021c: 42ae ff36 clrl %fp@(-202)
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
50220: 4200 clrb %d0
handle->bnum = 0;
handle->buffer = NULL;
50222: 42ae ff3a clrl %fp@(-198)
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
50226: 1d40 ff34 moveb %d0,%fp@(-204)
printf (", blocks");
/*
* Open the block bitmap using the new buffer.
*/
rc = rtems_rfs_bitmap_open (&bitmap, fs, &handle, group_size,
5022a: 2f03 movel %d3,%sp@-
5022c: 2f02 movel %d2,%sp@-
5022e: 2f0c movel %a4,%sp@-
50230: 2f06 movel %d6,%sp@-
50232: 2f04 movel %d4,%sp@-
50234: 4eb9 0005 8cfc jsr 58cfc <rtems_rfs_bitmap_open>
group_base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
if (rc > 0)
5023a: 4fef 0014 lea %sp@(20),%sp
5023e: 4a80 tstl %d0
50240: 6f00 0098 blew 502da <rtems_rfs_format+0x6fe>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
50244: 2f0c movel %a4,%sp@- <== NOT EXECUTED
50246: 2a00 movel %d0,%d5 <== NOT EXECUTED
50248: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5024a: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
50250: 4200 clrb %d0 <== NOT EXECUTED
{
rtems_rfs_buffer_handle_close (fs, &handle);
printf ("\nrtems-rfs: write-group: group %3d: open block bitmap failed: %d: %s\n",
50252: 2f05 movel %d5,%sp@- <== NOT EXECUTED
50254: 1d40 ff34 moveb %d0,%fp@(-204) <== NOT EXECUTED
handle->bnum = 0;
50258: 42ae ff36 clrl %fp@(-202) <== NOT EXECUTED
handle->buffer = NULL;
5025c: 42ae ff3a clrl %fp@(-198) <== NOT EXECUTED
50260: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
50266: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50268: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5026a: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5026c: 4879 0007 13cd pea 713cd <_CPU_m68k_BFFFO_table+0x4be> <== NOT EXECUTED
50272: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50278: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
5027c: 70ff moveq #-1,%d0 <== NOT EXECUTED
5027e: 6000 fa2c braw 4fcac <rtems_rfs_format+0xd0> <== NOT EXECUTED
* Return the number of bits that fit in the block size.
*/
static int
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)
{
return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));
50282: 2003 movel %d3,%d0 <== NOT EXECUTED
/*
* There could be more bits than blocks, eg 512K disk with 512 blocks.
*/
if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
bits_per_block = rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE;
return ((blocks + 1) * 100 * 10) / bits_per_block;
50284: 4c40 1801 remsl %d0,%d1,%d1 <== NOT EXECUTED
printf ("rtems-rfs: format: block size = %zu\n",
rtems_rfs_fs_block_size (&fs));
printf ("rtems-rfs: format: bits per block = %u\n",
rtems_rfs_bits_per_block (&fs));
printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",
50288: 2a2e ffa0 movel %fp@(-96),%d5 <== NOT EXECUTED
5028c: 760a moveq #10,%d3 <== NOT EXECUTED
5028e: 4c02 5800 mulsl %d2,%d5 <== NOT EXECUTED
50292: 4c43 1800 remsl %d3,%d0,%d1 <== NOT EXECUTED
50296: 4c43 1801 remsl %d3,%d1,%d1 <== NOT EXECUTED
5029a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5029c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5029e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
502a0: 4879 0007 1215 pea 71215 <_CPU_m68k_BFFFO_table+0x306> <== NOT EXECUTED
502a6: 4e93 jsr %a3@ <== NOT EXECUTED
fs.group_inodes * fs.group_count,
rtems_rfs_inode_overhead (&fs) / 10,
rtems_rfs_inode_overhead (&fs) % 10);
printf ("rtems-rfs: format: groups = %u\n", fs.group_count);
502a8: 2f2e ffa0 movel %fp@(-96),%sp@- <== NOT EXECUTED
502ac: 4879 0007 1240 pea 71240 <_CPU_m68k_BFFFO_table+0x331> <== NOT EXECUTED
502b2: 4e93 jsr %a3@ <== NOT EXECUTED
printf ("rtems-rfs: format: group blocks = %zu\n", fs.group_blocks);
502b4: 2f2e ffa4 movel %fp@(-92),%sp@- <== NOT EXECUTED
502b8: 4879 0007 1260 pea 71260 <_CPU_m68k_BFFFO_table+0x351> <== NOT EXECUTED
502be: 4e93 jsr %a3@ <== NOT EXECUTED
printf ("rtems-rfs: format: group inodes = %zu\n", fs.group_inodes);
502c0: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
502c4: 2eae ffa8 movel %fp@(-88),%sp@ <== NOT EXECUTED
502c8: 4879 0007 1287 pea 71287 <_CPU_m68k_BFFFO_table+0x378> <== NOT EXECUTED
502ce: 4e93 jsr %a3@ <== NOT EXECUTED
502d0: 242e ff84 movel %fp@(-124),%d2 <== NOT EXECUTED
502d4: 508f addql #8,%sp <== NOT EXECUTED
502d6: 6000 fa64 braw 4fd3c <rtems_rfs_format+0x160> <== NOT EXECUTED
/*
* Force the whole buffer to a known state. The bit map may not occupy the
* whole block.
*/
memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
502da: 2f2e ff84 movel %fp@(-124),%sp@-
502de: 206e ff3a moveal %fp@(-198),%a0
502e2: 4878 00ff pea ff <DBL_MANT_DIG+0xca>
502e6: 2f28 001a movel %a0@(26),%sp@-
502ea: 4eb9 0006 159c jsr 6159c <memset>
/*
* Clear the bitmap.
*/
rc = rtems_rfs_bitmap_map_clear_all (&bitmap);
502f0: 2f04 movel %d4,%sp@-
502f2: 4eb9 0005 8b22 jsr 58b22 <rtems_rfs_bitmap_map_clear_all>
if (rc > 0)
502f8: 4fef 0010 lea %sp@(16),%sp
502fc: 4a80 tstl %d0
502fe: 6f7a bles 5037a <rtems_rfs_format+0x79e> <== ALWAYS TAKEN
{
rtems_rfs_bitmap_close (&bitmap);
50300: 2f04 movel %d4,%sp@- <== NOT EXECUTED
50302: 2a00 movel %d0,%d5 <== NOT EXECUTED
50304: 4eb9 0005 8d60 jsr 58d60 <rtems_rfs_bitmap_close> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5030a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5030c: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5030e: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
50314: 4201 clrb %d1 <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle);
printf ("\nrtems-rfs: write-group: group %3d: block bitmap clear all failed: %d: %s\n",
50316: 2f05 movel %d5,%sp@- <== NOT EXECUTED
50318: 1d41 ff34 moveb %d1,%fp@(-204) <== NOT EXECUTED
handle->bnum = 0;
5031c: 42ae ff36 clrl %fp@(-202) <== NOT EXECUTED
handle->buffer = NULL;
50320: 42ae ff3a clrl %fp@(-198) <== NOT EXECUTED
50324: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5032a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5032c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5032e: 2f0d movel %a5,%sp@- <== NOT EXECUTED
50330: 4879 0007 1413 pea 71413 <_CPU_m68k_BFFFO_table+0x504> <== NOT EXECUTED
50336: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5033c: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
50340: 70ff moveq #-1,%d0 <== NOT EXECUTED
50342: 6000 f968 braw 4fcac <rtems_rfs_format+0xd0> <== NOT EXECUTED
*/
if ((group_base + group_size) > rtems_rfs_fs_blocks (fs))
group_size = rtems_rfs_fs_blocks (fs) - group_base;
if (verbose)
printf ("\rrtems-rfs: format: group %3d: base = %" PRId32 ", size = %zd",
50346: 2f02 movel %d2,%sp@- <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
50348: 4207 clrb %d7 <== NOT EXECUTED
5034a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5034c: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5034e: 4879 0007 138e pea 7138e <_CPU_m68k_BFFFO_table+0x47f> <== NOT EXECUTED
50354: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
rc, strerror (rc));
return false;
}
if (verbose)
printf (", blocks");
5035a: 4879 0007 13c4 pea 713c4 <_CPU_m68k_BFFFO_table+0x4b5> <== NOT EXECUTED
handle->bnum = 0;
50360: 42ae ff36 clrl %fp@(-202) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
50364: 1d47 ff34 moveb %d7,%fp@(-204) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
50368: 42ae ff3a clrl %fp@(-198) <== NOT EXECUTED
5036c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50372: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
50376: 6000 feb2 braw 5022a <rtems_rfs_format+0x64e> <== NOT EXECUTED
}
/*
* Forced allocation of the block bitmap.
*/
rtems_rfs_bitmap_map_set (&bitmap, RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
5037a: 42a7 clrl %sp@-
5037c: 2f04 movel %d4,%sp@-
5037e: 4eb9 0005 8924 jsr 58924 <rtems_rfs_bitmap_map_set>
/*
* Forced allocation of the inode bitmap.
*/
rtems_rfs_bitmap_map_set (&bitmap, RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
50384: 4878 0001 pea 1 <ADD>
50388: 2f04 movel %d4,%sp@-
5038a: 4eb9 0005 8924 jsr 58924 <rtems_rfs_bitmap_map_set>
/*
* Determine the number of inodes blocks in the group.
*/
blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
50390: 226e ffac moveal %fp@(-84),%a1
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
50394: 4fef 0010 lea %sp@(16),%sp
rtems_rfs_bitmap_map_set (&bitmap, RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
/*
* Determine the number of inodes blocks in the group.
*/
blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
50398: 202e ffa8 movel %fp@(-88),%d0
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
5039c: 6600 0140 bnew 504de <rtems_rfs_format+0x902>
return 1;
503a0: 7e01 moveq #1,%d7 <== NOT EXECUTED
503a2: 97cb subal %a3,%a3 <== NOT EXECUTED
503a4: 2d4a ff22 movel %a2,%fp@(-222) <== NOT EXECUTED
503a8: 244b moveal %a3,%a2 <== NOT EXECUTED
503aa: 2d47 ff26 movel %d7,%fp@(-218) <== NOT EXECUTED
503ae: 266e ff26 moveal %fp@(-218),%a3 <== NOT EXECUTED
503b2: 1e2e ff1d moveb %fp@(-227),%d7 <== NOT EXECUTED
/*
* Forced allocation of the inode blocks which follow the block bitmap.
*/
for (b = 0; b < blocks; b++)
rtems_rfs_bitmap_map_set (&bitmap, b + RTEMS_RFS_GROUP_INODE_BLOCK);
503b6: 486a 0002 pea %a2@(2)
blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
/*
* Forced allocation of the inode blocks which follow the block bitmap.
*/
for (b = 0; b < blocks; b++)
503ba: 528a addql #1,%a2
rtems_rfs_bitmap_map_set (&bitmap, b + RTEMS_RFS_GROUP_INODE_BLOCK);
503bc: 2f04 movel %d4,%sp@-
503be: 4eb9 0005 8924 jsr 58924 <rtems_rfs_bitmap_map_set>
blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
/*
* Forced allocation of the inode blocks which follow the block bitmap.
*/
for (b = 0; b < blocks; b++)
503c4: 508f addql #8,%sp
503c6: b7ca cmpal %a2,%a3
503c8: 6eec bgts 503b6 <rtems_rfs_format+0x7da>
503ca: 246e ff22 moveal %fp@(-222),%a2
503ce: 1d47 ff1d moveb %d7,%fp@(-227)
rtems_rfs_bitmap_map_set (&bitmap, b + RTEMS_RFS_GROUP_INODE_BLOCK);
/*
* Close the block bitmap.
*/
rc = rtems_rfs_bitmap_close (&bitmap);
503d2: 2f04 movel %d4,%sp@-
503d4: 4eb9 0005 8d60 jsr 58d60 <rtems_rfs_bitmap_close>
if (rc > 0)
503da: 588f addql #4,%sp
503dc: 4a80 tstl %d0
503de: 6e00 012a bgtw 5050a <rtems_rfs_format+0x92e>
printf ("\nrtems-rfs: write-group: group %3d: close block bitmap failed: %d: %s\n",
group, rc, strerror (rc));
return false;
}
rtems_rfs_buffer_mark_dirty (&handle);
503e2: 7201 moveq #1,%d1
503e4: 1d41 ff34 moveb %d1,%fp@(-204)
if (verbose)
503e8: 4a2e ff1d tstb %fp@(-227)
503ec: 665a bnes 50448 <rtems_rfs_format+0x86c> <== NEVER TAKEN
printf (", inodes");
/*
* Open the inode bitmap using the old buffer. Should release any changes.
*/
rc = rtems_rfs_bitmap_open (&bitmap, fs, &handle, group_size,
503ee: 2045 moveal %d5,%a0
503f0: 4868 0002 pea %a0@(2)
503f4: 2f02 movel %d2,%sp@-
503f6: 2f0c movel %a4,%sp@-
503f8: 2f06 movel %d6,%sp@-
503fa: 2f04 movel %d4,%sp@-
503fc: 4eb9 0005 8cfc jsr 58cfc <rtems_rfs_bitmap_open>
group_base + RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
if (rc > 0)
50402: 4fef 0014 lea %sp@(20),%sp
50406: 4a80 tstl %d0
50408: 6f68 bles 50472 <rtems_rfs_format+0x896> <== ALWAYS TAKEN
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5040a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5040c: 2400 movel %d0,%d2 <== NOT EXECUTED
5040e: 2f06 movel %d6,%sp@- <== NOT EXECUTED
50410: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
50416: 4200 clrb %d0 <== NOT EXECUTED
{
rtems_rfs_buffer_handle_close (fs, &handle);
printf ("\nrtems-rfs: write-group: group %3d: open inode bitmap failed: %d: %s\n",
50418: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5041a: 1d40 ff34 moveb %d0,%fp@(-204) <== NOT EXECUTED
handle->bnum = 0;
5041e: 42ae ff36 clrl %fp@(-202) <== NOT EXECUTED
handle->buffer = NULL;
50422: 42ae ff3a clrl %fp@(-198) <== NOT EXECUTED
50426: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5042c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5042e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50430: 2f0d movel %a5,%sp@- <== NOT EXECUTED
50432: 4879 0007 14ae pea 714ae <_CPU_m68k_BFFFO_table+0x59f> <== NOT EXECUTED
50438: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5043e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
50442: 70ff moveq #-1,%d0 <== NOT EXECUTED
50444: 6000 f866 braw 4fcac <rtems_rfs_format+0xd0> <== NOT EXECUTED
}
rtems_rfs_buffer_mark_dirty (&handle);
if (verbose)
printf (", inodes");
50448: 4879 0007 14a5 pea 714a5 <_CPU_m68k_BFFFO_table+0x596> <== NOT EXECUTED
5044e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50454: 588f addql #4,%sp <== NOT EXECUTED
/*
* Open the inode bitmap using the old buffer. Should release any changes.
*/
rc = rtems_rfs_bitmap_open (&bitmap, fs, &handle, group_size,
50456: 2045 moveal %d5,%a0 <== NOT EXECUTED
50458: 4868 0002 pea %a0@(2) <== NOT EXECUTED
5045c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5045e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
50460: 2f06 movel %d6,%sp@- <== NOT EXECUTED
50462: 2f04 movel %d4,%sp@- <== NOT EXECUTED
50464: 4eb9 0005 8cfc jsr 58cfc <rtems_rfs_bitmap_open> <== NOT EXECUTED
group_base + RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
if (rc > 0)
5046a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5046e: 4a80 tstl %d0 <== NOT EXECUTED
50470: 6e98 bgts 5040a <rtems_rfs_format+0x82e> <== NOT EXECUTED
/*
* Force the whole buffer to a known state. The bit map may not occupy the
* whole block.
*/
memset (rtems_rfs_buffer_data (&handle), 0x00, rtems_rfs_fs_block_size (fs));
50472: 2f2e ff84 movel %fp@(-124),%sp@-
50476: 206e ff3a moveal %fp@(-198),%a0
5047a: 42a7 clrl %sp@-
5047c: 2f28 001a movel %a0@(26),%sp@-
50480: 4eb9 0006 159c jsr 6159c <memset>
/*
* Clear the inode bitmap.
*/
rc = rtems_rfs_bitmap_map_clear_all (&bitmap);
50486: 2f04 movel %d4,%sp@-
50488: 4eb9 0005 8b22 jsr 58b22 <rtems_rfs_bitmap_map_clear_all>
if (rc > 0)
5048e: 4fef 0010 lea %sp@(16),%sp
50492: 4a80 tstl %d0
50494: 6f00 00e4 blew 5057a <rtems_rfs_format+0x99e>
{
rtems_rfs_bitmap_close (&bitmap);
50498: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5049a: 2400 movel %d0,%d2 <== NOT EXECUTED
5049c: 4eb9 0005 8d60 jsr 58d60 <rtems_rfs_bitmap_close> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
504a2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
504a4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
504a6: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
504ac: 4201 clrb %d1 <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle);
printf ("\nrtems-rfs: write-group: group %3d: inode bitmap" \
504ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED
504b0: 1d41 ff34 moveb %d1,%fp@(-204) <== NOT EXECUTED
handle->bnum = 0;
504b4: 42ae ff36 clrl %fp@(-202) <== NOT EXECUTED
handle->buffer = NULL;
504b8: 42ae ff3a clrl %fp@(-198) <== NOT EXECUTED
504bc: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
504c2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
504c4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
504c6: 2f0d movel %a5,%sp@- <== NOT EXECUTED
504c8: 4879 0007 14f4 pea 714f4 <_CPU_m68k_BFFFO_table+0x5e5> <== NOT EXECUTED
504ce: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
504d4: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
504d8: 70ff moveq #-1,%d0 <== NOT EXECUTED
504da: 6000 f7d0 braw 4fcac <rtems_rfs_format+0xd0> <== NOT EXECUTED
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
return 1;
return ((dividend - 1) / divisor) + 1;
504de: 2640 moveal %d0,%a3
504e0: 538b subql #1,%a3
504e2: 200b movel %a3,%d0
504e4: 2209 movel %a1,%d1
504e6: 4c41 0000 remul %d1,%d0,%d0
504ea: 2640 moveal %d0,%a3
504ec: 528b addql #1,%a3
504ee: 2d4b ff26 movel %a3,%fp@(-218)
blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
/*
* Forced allocation of the inode blocks which follow the block bitmap.
*/
for (b = 0; b < blocks; b++)
504f2: 6f00 fede blew 503d2 <rtems_rfs_format+0x7f6>
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
return 1;
504f6: 97cb subal %a3,%a3
504f8: 2d4a ff22 movel %a2,%fp@(-222)
504fc: 244b moveal %a3,%a2
504fe: 266e ff26 moveal %fp@(-218),%a3
50502: 1e2e ff1d moveb %fp@(-227),%d7
50506: 6000 feae braw 503b6 <rtems_rfs_format+0x7da>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5050a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5050c: 2d40 ff1e movel %d0,%fp@(-226) <== NOT EXECUTED
50510: 2f06 movel %d6,%sp@- <== NOT EXECUTED
50512: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
*/
rc = rtems_rfs_bitmap_close (&bitmap);
if (rc > 0)
{
rtems_rfs_buffer_handle_close (fs, &handle);
printf ("\nrtems-rfs: write-group: group %3d: close block bitmap failed: %d: %s\n",
50518: 222e ff1e movel %fp@(-226),%d1 <== NOT EXECUTED
handle->dirty = false;
5051c: 4200 clrb %d0 <== NOT EXECUTED
5051e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
50520: 1d40 ff34 moveb %d0,%fp@(-204) <== NOT EXECUTED
handle->bnum = 0;
50524: 42ae ff36 clrl %fp@(-202) <== NOT EXECUTED
handle->buffer = NULL;
50528: 42ae ff3a clrl %fp@(-198) <== NOT EXECUTED
5052c: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
50532: 222e ff1e movel %fp@(-226),%d1 <== NOT EXECUTED
50536: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50538: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5053a: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5053c: 4879 0007 145e pea 7145e <_CPU_m68k_BFFFO_table+0x54f> <== NOT EXECUTED
50542: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50548: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
5054c: 70ff moveq #-1,%d0 <== NOT EXECUTED
5054e: 6000 f75c braw 4fcac <rtems_rfs_format+0xd0> <== NOT EXECUTED
}
rc = rtems_rfs_buffer_setblksize (&fs, rtems_rfs_fs_block_size (&fs));
if (rc > 0)
{
printf ("rtems-rfs: format: setting block size failed: %d: %s\n",
50552: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50554: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5055a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5055c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5055e: 4879 0007 12ae pea 712ae <_CPU_m68k_BFFFO_table+0x39f> <== NOT EXECUTED
50564: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5056a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
return -1;
5056e: 70ff moveq #-1,%d0 <== NOT EXECUTED
rc, strerror (rc));
return -1;
}
return 0;
}
50570: 4cee 3cfc fef4 moveml %fp@(-268),%d2-%d7/%a2-%a5 <== NOT EXECUTED
50576: 4e5e unlk %fp <== NOT EXECUTED
50578: 4e75 rts <== NOT EXECUTED
}
/*
* Close the inode bitmap.
*/
rc = rtems_rfs_bitmap_close (&bitmap);
5057a: 2f04 movel %d4,%sp@-
5057c: 4eb9 0005 8d60 jsr 58d60 <rtems_rfs_bitmap_close>
if (rc > 0)
50582: 588f addql #4,%sp
50584: 4a80 tstl %d0
50586: 6e00 00b0 bgtw 50638 <rtems_rfs_format+0xa5c>
printf ("\nrtems-rfs: write-group: group %3d: close inode" \
" bitmap failed: %d: %s\n", group, rc, strerror (rc));
return false;
}
rtems_rfs_buffer_mark_dirty (&handle);
5058a: 7a01 moveq #1,%d5
5058c: 1d45 ff34 moveb %d5,%fp@(-204)
/*
* Initialise the inode tables if required to do so.
*/
if (initialise_inodes)
50590: 4a2e ff2b tstb %fp@(-213)
50594: 674c beqs 505e2 <rtems_rfs_format+0xa06> <== ALWAYS TAKEN
{
for (b = 0; b < blocks; b++)
50596: 4aae ff26 tstl %fp@(-218) <== NOT EXECUTED
5059a: 6f46 bles 505e2 <rtems_rfs_format+0xa06> <== NOT EXECUTED
return rc;
}
int
rtems_rfs_format (const char* name, const rtems_rfs_format_config* config)
5059c: 266e ff26 moveal %fp@(-218),%a3 <== NOT EXECUTED
505a0: 5483 addql #2,%d3 <== NOT EXECUTED
505a2: d7c3 addal %d3,%a3 <== NOT EXECUTED
*/
if (initialise_inodes)
{
for (b = 0; b < blocks; b++)
{
rc = rtems_rfs_buffer_handle_request (fs, &handle,
505a4: 42a7 clrl %sp@- <== NOT EXECUTED
505a6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
505a8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
505aa: 2f06 movel %d6,%sp@- <== NOT EXECUTED
505ac: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request> <== NOT EXECUTED
group_base + b + RTEMS_RFS_GROUP_INODE_BLOCK,
false);
if (rc > 0)
505b2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
505b6: 4a80 tstl %d0 <== NOT EXECUTED
505b8: 6e00 0116 bgtw 506d0 <rtems_rfs_format+0xaf4> <== NOT EXECUTED
/*
* Force the whole buffer to a known state. The bit map may not occupy the
* whole block.
*/
memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
505bc: 2f2e ff84 movel %fp@(-124),%sp@- <== NOT EXECUTED
505c0: 5283 addql #1,%d3 <== NOT EXECUTED
505c2: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
505c6: 206e ff3a moveal %fp@(-198),%a0 <== NOT EXECUTED
505ca: 2f28 001a movel %a0@(26),%sp@- <== NOT EXECUTED
505ce: 4eb9 0006 159c jsr 6159c <memset> <== NOT EXECUTED
/*
* Initialise the inode tables if required to do so.
*/
if (initialise_inodes)
{
for (b = 0; b < blocks; b++)
505d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* Force the whole buffer to a known state. The bit map may not occupy the
* whole block.
*/
memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
rtems_rfs_buffer_mark_dirty (&handle);
505d8: 7201 moveq #1,%d1 <== NOT EXECUTED
505da: 1d41 ff34 moveb %d1,%fp@(-204) <== NOT EXECUTED
/*
* Initialise the inode tables if required to do so.
*/
if (initialise_inodes)
{
for (b = 0; b < blocks; b++)
505de: b7c3 cmpal %d3,%a3 <== NOT EXECUTED
505e0: 66c2 bnes 505a4 <rtems_rfs_format+0x9c8> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
505e2: 2f0c movel %a4,%sp@-
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
}
for (group = 0; group < fs.group_count; group++)
505e4: 528d addql #1,%a5
505e6: 2f06 movel %d6,%sp@-
505e8: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release>
505ee: 508f addql #8,%sp
505f0: bbee ffa0 cmpal %fp@(-96),%a5
505f4: 6c00 011a bgew 50710 <rtems_rfs_format+0xb34>
size_t group_size;
int blocks;
int b;
int rc;
group_base = rtems_rfs_fs_block (fs, group, 0);
505f8: 242e ffa4 movel %fp@(-92),%d2 <== NOT EXECUTED
505fc: 2a0d movel %a5,%d5 <== NOT EXECUTED
505fe: 4c02 5800 mulsl %d2,%d5 <== NOT EXECUTED
return -1;
}
for (group = 0; group < fs.group_count; group++)
if (!rtems_rfs_write_group (&fs, group,
config->initialise_inodes, config->verbose))
50602: 1e2a 0015 moveb %a2@(21),%d7 <== NOT EXECUTED
50606: 122a 0014 moveb %a2@(20),%d1 <== NOT EXECUTED
size_t group_size;
int blocks;
int b;
int rc;
group_base = rtems_rfs_fs_block (fs, group, 0);
5060a: 2605 movel %d5,%d3 <== NOT EXECUTED
5060c: 5283 addql #1,%d3 <== NOT EXECUTED
if (group_base > rtems_rfs_fs_blocks (fs))
5060e: 202e ff80 movel %fp@(-128),%d0 <== NOT EXECUTED
return -1;
}
for (group = 0; group < fs.group_count; group++)
if (!rtems_rfs_write_group (&fs, group,
config->initialise_inodes, config->verbose))
50612: 1d47 ff1d moveb %d7,%fp@(-227) <== NOT EXECUTED
50616: 1d41 ff2b moveb %d1,%fp@(-213) <== NOT EXECUTED
int b;
int rc;
group_base = rtems_rfs_fs_block (fs, group, 0);
if (group_base > rtems_rfs_fs_blocks (fs))
5061a: b083 cmpl %d3,%d0 <== NOT EXECUTED
5061c: 6400 fbea bccw 50208 <rtems_rfs_format+0x62c> <== NOT EXECUTED
50620: 2e0d movel %a5,%d7 <== NOT EXECUTED
{
printf ("rtems-rfs: write-group: group %d base beyond disk limit\n",
50622: 2f07 movel %d7,%sp@- <== NOT EXECUTED
50624: 4879 0007 1355 pea 71355 <_CPU_m68k_BFFFO_table+0x446> <== NOT EXECUTED
5062a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50630: 508f addql #8,%sp <== NOT EXECUTED
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
50632: 70ff moveq #-1,%d0 <== NOT EXECUTED
50634: 6000 f676 braw 4fcac <rtems_rfs_format+0xd0> <== NOT EXECUTED
50638: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5063a: 2400 movel %d0,%d2 <== NOT EXECUTED
5063c: 2f06 movel %d6,%sp@- <== NOT EXECUTED
handle->dirty = false;
5063e: 4203 clrb %d3 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
50640: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
50646: 1d43 ff34 moveb %d3,%fp@(-204) <== NOT EXECUTED
*/
rc = rtems_rfs_bitmap_close (&bitmap);
if (rc > 0)
{
rtems_rfs_buffer_handle_close (fs, &handle);
printf ("\nrtems-rfs: write-group: group %3d: close inode" \
5064a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
handle->bnum = 0;
5064c: 42ae ff36 clrl %fp@(-202) <== NOT EXECUTED
handle->buffer = NULL;
50650: 42ae ff3a clrl %fp@(-198) <== NOT EXECUTED
50654: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5065a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5065c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5065e: 2f0d movel %a5,%sp@- <== NOT EXECUTED
50660: 4879 0007 153f pea 7153f <_CPU_m68k_BFFFO_table+0x630> <== NOT EXECUTED
50666: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5066c: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
50670: 70ff moveq #-1,%d0 <== NOT EXECUTED
50672: 6000 f638 braw 4fcac <rtems_rfs_format+0xd0> <== NOT EXECUTED
* Open the buffer interface.
*/
rc = rtems_rfs_buffer_open (name, &fs);
if (rc > 0)
{
printf ("rtems-rfs: format: buffer open failed: %d: %s\n",
50676: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50678: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5067e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50680: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50682: 4879 0007 1026 pea 71026 <_CPU_m68k_BFFFO_table+0x117> <== NOT EXECUTED
50688: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5068e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
return -1;
50692: 70ff moveq #-1,%d0 <== NOT EXECUTED
rc, strerror (rc));
return -1;
}
return 0;
}
50694: 4cee 3cfc fef4 moveml %fp@(-268),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5069a: 4e5e unlk %fp <== NOT EXECUTED
5069c: 4e75 rts <== NOT EXECUTED
/*
* Check the media.
*/
if (rtems_rfs_fs_media_block_size (&fs) == 0)
{
printf ("rtems-rfs: media block is invalid: %" PRIu32 "\n",
5069e: 42a7 clrl %sp@- <== NOT EXECUTED
506a0: 4879 0007 1055 pea 71055 <_CPU_m68k_BFFFO_table+0x146> <== NOT EXECUTED
506a6: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
506ac: 508f addql #8,%sp <== NOT EXECUTED
rtems_rfs_fs_media_block_size (&fs));
return -1;
506ae: 70ff moveq #-1,%d0 <== NOT EXECUTED
rc, strerror (rc));
return -1;
}
return 0;
}
506b0: 4cee 3cfc fef4 moveml %fp@(-268),%d2-%d7/%a2-%a5 <== NOT EXECUTED
506b6: 4e5e unlk %fp <== NOT EXECUTED
506b8: 4e75 rts <== NOT EXECUTED
int b;
int rc;
group_base = rtems_rfs_fs_block (fs, group, 0);
if (group_base > rtems_rfs_fs_blocks (fs))
506ba: 4287 clrl %d7 <== NOT EXECUTED
{
printf ("rtems-rfs: write-group: group %d base beyond disk limit\n",
506bc: 2f07 movel %d7,%sp@- <== NOT EXECUTED
506be: 4879 0007 1355 pea 71355 <_CPU_m68k_BFFFO_table+0x446> <== NOT EXECUTED
506c4: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
506ca: 508f addql #8,%sp <== NOT EXECUTED
506cc: 6000 ff64 braw 50632 <rtems_rfs_format+0xa56> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
506d0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
506d2: 2400 movel %d0,%d2 <== NOT EXECUTED
506d4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
506d6: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
506dc: 4200 clrb %d0 <== NOT EXECUTED
group_base + b + RTEMS_RFS_GROUP_INODE_BLOCK,
false);
if (rc > 0)
{
rtems_rfs_buffer_handle_close (fs, &handle);
printf ("\nrtems-rfs: write-group: group %3d: block %" PRId32 " request failed: %d: %s\n",
506de: 2f02 movel %d2,%sp@- <== NOT EXECUTED
506e0: 1d40 ff34 moveb %d0,%fp@(-204) <== NOT EXECUTED
handle->bnum = 0;
506e4: 42ae ff36 clrl %fp@(-202) <== NOT EXECUTED
handle->buffer = NULL;
506e8: 42ae ff3a clrl %fp@(-198) <== NOT EXECUTED
506ec: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
506f2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
506f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
506f6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
506f8: 2f0d movel %a5,%sp@- <== NOT EXECUTED
506fa: 4879 0007 1586 pea 71586 <_CPU_m68k_BFFFO_table+0x677> <== NOT EXECUTED
50700: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50706: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
}
if (!rtems_rfs_write_superblock (&fs))
{
printf ("rtems-rfs: format: superblock write failed\n");
return -1;
5070a: 70ff moveq #-1,%d0 <== NOT EXECUTED
5070c: 6000 f59e braw 4fcac <rtems_rfs_format+0xd0> <== NOT EXECUTED
for (group = 0; group < fs.group_count; group++)
if (!rtems_rfs_write_group (&fs, group,
config->initialise_inodes, config->verbose))
return -1;
if (config->verbose)
50710: 4a2a 0015 tstb %a2@(21)
50714: 667e bnes 50794 <rtems_rfs_format+0xbb8> <== NEVER TAKEN
printf ("\n");
rc = rtems_rfs_buffer_close (&fs);
50716: 2f06 movel %d6,%sp@-
50718: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close>
if (rc > 0)
5071e: 588f addql #4,%sp
return -1;
if (config->verbose)
printf ("\n");
rc = rtems_rfs_buffer_close (&fs);
50720: 2400 movel %d0,%d2
if (rc > 0)
50722: 6e00 0144 bgtw 50868 <rtems_rfs_format+0xc8c>
int rc;
/*
* External API so returns -1.
*/
rc = rtems_rfs_fs_open (name, NULL,
50726: 486e ff2c pea %fp@(-212)
5072a: 42a7 clrl %sp@-
5072c: 4878 0006 pea 6 <EXTENDSFDF>
50730: 42a7 clrl %sp@-
50732: 2f2e 0008 movel %fp@(8),%sp@-
50736: 4eb9 0005 d070 jsr 5d070 <rtems_rfs_fs_open>
RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
0, &fs);
if (rc < 0)
5073c: 4fef 0014 lea %sp@(20),%sp
50740: 4a80 tstl %d0
50742: 6d00 0216 bltw 5095a <rtems_rfs_format+0xd7e>
printf ("rtems-rfs: format: file system open failed: %d: %s\n",
errno, strerror (errno));
return -1;
}
rc = rtems_rfs_inode_alloc (fs, RTEMS_RFS_ROOT_INO, &ino);
50746: 486e ff30 pea %fp@(-208)
5074a: 4878 0001 pea 1 <ADD>
5074e: 2f2e ff2c movel %fp@(-212),%sp@-
50752: 4eb9 0005 11bc jsr 511bc <rtems_rfs_inode_alloc>
if (rc > 0)
50758: 4fef 000c lea %sp@(12),%sp
printf ("rtems-rfs: format: file system open failed: %d: %s\n",
errno, strerror (errno));
return -1;
}
rc = rtems_rfs_inode_alloc (fs, RTEMS_RFS_ROOT_INO, &ino);
5075c: 2400 movel %d0,%d2
if (rc > 0)
5075e: 6e44 bgts 507a4 <rtems_rfs_format+0xbc8> <== NEVER TAKEN
rc, strerror (rc));
rtems_rfs_fs_close (fs);
return rc;
}
if (ino != RTEMS_RFS_ROOT_INO)
50760: 202e ff30 movel %fp@(-208),%d0
50764: 7201 moveq #1,%d1
50766: b280 cmpl %d0,%d1
50768: 6700 0084 beqw 507ee <rtems_rfs_format+0xc12>
{
printf ("rtems-rfs: format: allocated inode not root ino: %" PRId32 "\n", ino);
5076c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5076e: 4879 0007 1664 pea 71664 <_CPU_m68k_BFFFO_table+0x755> <== NOT EXECUTED
50774: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
rtems_rfs_fs_close (fs);
5077a: 2f2e ff2c movel %fp@(-212),%sp@- <== NOT EXECUTED
5077e: 4eb9 0005 da3e jsr 5da3e <rtems_rfs_fs_close> <== NOT EXECUTED
50784: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",
rc, strerror (rc));
return -1;
}
return 0;
50788: 4280 clrl %d0 <== NOT EXECUTED
}
5078a: 4cee 3cfc fef4 moveml %fp@(-268),%d2-%d7/%a2-%a5 <== NOT EXECUTED
50790: 4e5e unlk %fp <== NOT EXECUTED
50792: 4e75 rts <== NOT EXECUTED
if (!rtems_rfs_write_group (&fs, group,
config->initialise_inodes, config->verbose))
return -1;
if (config->verbose)
printf ("\n");
50794: 4878 000a pea a <LASTO> <== NOT EXECUTED
50798: 4eb9 0006 187c jsr 6187c <putchar> <== NOT EXECUTED
5079e: 588f addql #4,%sp <== NOT EXECUTED
507a0: 6000 ff74 braw 50716 <rtems_rfs_format+0xb3a> <== NOT EXECUTED
}
rc = rtems_rfs_inode_alloc (fs, RTEMS_RFS_ROOT_INO, &ino);
if (rc > 0)
{
printf ("rtems-rfs: format: inode allocation failed: %d: %s\n",
507a4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
507a6: 45f9 0006 2630 lea 62630 <strerror>,%a2 <== NOT EXECUTED
507ac: 4e92 jsr %a2@ <== NOT EXECUTED
507ae: 47f9 0006 16ec lea 616ec <printf>,%a3 <== NOT EXECUTED
507b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
507b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
507b8: 4879 0007 1630 pea 71630 <_CPU_m68k_BFFFO_table+0x721> <== NOT EXECUTED
507be: 4e93 jsr %a3@ <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_fs_close (fs);
507c0: 2f2e ff2c movel %fp@(-212),%sp@- <== NOT EXECUTED
507c4: 4eb9 0005 da3e jsr 5da3e <rtems_rfs_fs_close> <== NOT EXECUTED
507ca: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
rc = rtems_rfs_write_root_dir (name);
if (rc > 0)
{
printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",
507ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
507d0: 4e92 jsr %a2@ <== NOT EXECUTED
507d2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
507d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
507d6: 4879 0007 1791 pea 71791 <_CPU_m68k_BFFFO_table+0x882> <== NOT EXECUTED
507dc: 4e93 jsr %a3@ <== NOT EXECUTED
507de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
return -1;
507e2: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return 0;
}
507e4: 4cee 3cfc fef4 moveml %fp@(-268),%d2-%d7/%a2-%a5 <== NOT EXECUTED
507ea: 4e5e unlk %fp <== NOT EXECUTED
507ec: 4e75 rts <== NOT EXECUTED
printf ("rtems-rfs: format: allocated inode not root ino: %" PRId32 "\n", ino);
rtems_rfs_fs_close (fs);
return rc;
}
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
507ee: 4878 0001 pea 1 <ADD>
507f2: 260e movel %fp,%d3
507f4: 0683 ffff ff56 addil #-170,%d3
507fa: 2f03 movel %d3,%sp@-
507fc: 4878 0001 pea 1 <ADD>
50800: 2f2e ff2c movel %fp@(-212),%sp@-
50804: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open>
if (rc > 0)
5080a: 4fef 0010 lea %sp@(16),%sp
printf ("rtems-rfs: format: allocated inode not root ino: %" PRId32 "\n", ino);
rtems_rfs_fs_close (fs);
return rc;
}
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5080e: 2400 movel %d0,%d2
if (rc > 0)
50810: 6f7e bles 50890 <rtems_rfs_format+0xcb4> <== ALWAYS TAKEN
{
printf ("rtems-rfs: format: inode open failed: %d: %s\n",
50812: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50814: 45f9 0006 2630 lea 62630 <strerror>,%a2 <== NOT EXECUTED
5081a: 4e92 jsr %a2@ <== NOT EXECUTED
5081c: 47f9 0006 16ec lea 616ec <printf>,%a3 <== NOT EXECUTED
50822: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50824: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50826: 4879 0007 169a pea 7169a <_CPU_m68k_BFFFO_table+0x78b> <== NOT EXECUTED
5082c: 4e93 jsr %a3@ <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_group_bitmap_free (fs, true, ino);
5082e: 2f2e ff30 movel %fp@(-208),%sp@- <== NOT EXECUTED
50832: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
50836: 2f2e ff2c movel %fp@(-212),%sp@- <== NOT EXECUTED
5083a: 4eb9 0005 0f5c jsr 50f5c <rtems_rfs_group_bitmap_free> <== NOT EXECUTED
rtems_rfs_fs_close (fs);
50840: 2f2e ff2c movel %fp@(-212),%sp@- <== NOT EXECUTED
50844: 4eb9 0005 da3e jsr 5da3e <rtems_rfs_fs_close> <== NOT EXECUTED
5084a: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
}
rc = rtems_rfs_write_root_dir (name);
if (rc > 0)
{
printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",
5084e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50850: 4e92 jsr %a2@ <== NOT EXECUTED
50852: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50854: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50856: 4879 0007 1791 pea 71791 <_CPU_m68k_BFFFO_table+0x882> <== NOT EXECUTED
5085c: 4e93 jsr %a3@ <== NOT EXECUTED
5085e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
return -1;
50862: 70ff moveq #-1,%d0 <== NOT EXECUTED
50864: 6000 ff7e braw 507e4 <rtems_rfs_format+0xc08> <== NOT EXECUTED
printf ("\n");
rc = rtems_rfs_buffer_close (&fs);
if (rc > 0)
{
printf ("rtems-rfs: format: buffer close failed: %d: %s\n",
50868: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5086a: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
50870: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50872: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50874: 4879 0007 15cc pea 715cc <_CPU_m68k_BFFFO_table+0x6bd> <== NOT EXECUTED
5087a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50880: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
return -1;
50884: 70ff moveq #-1,%d0 <== NOT EXECUTED
rc, strerror (rc));
return -1;
}
return 0;
}
50886: 4cee 3cfc fef4 moveml %fp@(-268),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5088c: 4e5e unlk %fp <== NOT EXECUTED
5088e: 4e75 rts <== NOT EXECUTED
rtems_rfs_group_bitmap_free (fs, true, ino);
rtems_rfs_fs_close (fs);
return rc;
}
rc = rtems_rfs_inode_initialise (&inode, 0,
50890: 42a7 clrl %sp@-
50892: 42a7 clrl %sp@-
50894: 4878 41c9 pea 41c9 <D_MAX_EXP+0x39ca>
50898: 42a7 clrl %sp@-
5089a: 2f03 movel %d3,%sp@-
5089c: 4eb9 0005 1732 jsr 51732 <rtems_rfs_inode_initialise>
(RTEMS_RFS_S_IFDIR | RTEMS_RFS_S_IRWXU |
RTEMS_RFS_S_IXGRP | RTEMS_RFS_S_IXOTH),
0, 0);
if (rc > 0)
508a2: 4fef 0014 lea %sp@(20),%sp
rtems_rfs_group_bitmap_free (fs, true, ino);
rtems_rfs_fs_close (fs);
return rc;
}
rc = rtems_rfs_inode_initialise (&inode, 0,
508a6: 2400 movel %d0,%d2
(RTEMS_RFS_S_IFDIR | RTEMS_RFS_S_IRWXU |
RTEMS_RFS_S_IXGRP | RTEMS_RFS_S_IXOTH),
0, 0);
if (rc > 0)
508a8: 6f1c bles 508c6 <rtems_rfs_format+0xcea> <== ALWAYS TAKEN
printf ("rtems-rfs: format: inode initialise failed: %d: %s\n",
508aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
508ac: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
508b2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
508b4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
508b6: 4879 0007 16c8 pea 716c8 <_CPU_m68k_BFFFO_table+0x7b9> <== NOT EXECUTED
508bc: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
508c2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, ino);
508c6: 2f2e ff30 movel %fp@(-208),%sp@-
508ca: 4878 0001 pea 1 <ADD>
508ce: 4879 0006 f2c7 pea 6f2c7 <flashdisk_ops+0x19>
508d4: 2f03 movel %d3,%sp@-
508d6: 2f2e ff2c movel %fp@(-212),%sp@-
508da: 4eb9 0005 aeca jsr 5aeca <rtems_rfs_dir_add_entry>
if (rc > 0)
508e0: 4fef 0014 lea %sp@(20),%sp
0, 0);
if (rc > 0)
printf ("rtems-rfs: format: inode initialise failed: %d: %s\n",
rc, strerror (rc));
rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, ino);
508e4: 2400 movel %d0,%d2
if (rc > 0)
508e6: 6f1c bles 50904 <rtems_rfs_format+0xd28> <== ALWAYS TAKEN
printf ("rtems-rfs: format: directory add failed: %d: %s\n",
508e8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
508ea: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
508f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
508f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
508f4: 4879 0007 16fc pea 716fc <_CPU_m68k_BFFFO_table+0x7ed> <== NOT EXECUTED
508fa: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50900: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
rc = rtems_rfs_inode_close (fs, &inode);
50904: 2f03 movel %d3,%sp@-
50906: 2f2e ff2c movel %fp@(-212),%sp@-
5090a: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close>
if (rc > 0)
50910: 508f addql #8,%sp
rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, ino);
if (rc > 0)
printf ("rtems-rfs: format: directory add failed: %d: %s\n",
rc, strerror (rc));
rc = rtems_rfs_inode_close (fs, &inode);
50912: 2400 movel %d0,%d2
if (rc > 0)
50914: 6f1c bles 50932 <rtems_rfs_format+0xd56> <== ALWAYS TAKEN
printf ("rtems-rfs: format: inode close failed: %d: %s\n",
50916: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50918: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5091e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50920: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50922: 4879 0007 172d pea 7172d <_CPU_m68k_BFFFO_table+0x81e> <== NOT EXECUTED
50928: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5092e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
rc = rtems_rfs_fs_close (fs);
50932: 2f2e ff2c movel %fp@(-212),%sp@-
50936: 4eb9 0005 da3e jsr 5da3e <rtems_rfs_fs_close>
if (rc < 0)
5093c: 588f addql #4,%sp
rc = rtems_rfs_inode_close (fs, &inode);
if (rc > 0)
printf ("rtems-rfs: format: inode close failed: %d: %s\n",
rc, strerror (rc));
rc = rtems_rfs_fs_close (fs);
5093e: 2400 movel %d0,%d2
if (rc < 0)
50940: 6d4a blts 5098c <rtems_rfs_format+0xdb0> <== NEVER TAKEN
printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",
rc, strerror (rc));
return -1;
}
return 0;
50942: 4280 clrl %d0
rc, strerror (rc));
return -1;
}
rc = rtems_rfs_write_root_dir (name);
if (rc > 0)
50944: 4a82 tstl %d2
50946: 6700 f364 beqw 4fcac <rtems_rfs_format+0xd0>
5094a: 47f9 0006 16ec lea 616ec <printf>,%a3 <== NOT EXECUTED
50950: 45f9 0006 2630 lea 62630 <strerror>,%a2 <== NOT EXECUTED
50956: 6000 fe76 braw 507ce <rtems_rfs_format+0xbf2> <== NOT EXECUTED
RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
0, &fs);
if (rc < 0)
{
printf ("rtems-rfs: format: file system open failed: %d: %s\n",
errno, strerror (errno));
5095a: 45f9 0006 0414 lea 60414 <__errno>,%a2 <== NOT EXECUTED
50960: 4e92 jsr %a2@ <== NOT EXECUTED
rc = rtems_rfs_fs_open (name, NULL,
RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
0, &fs);
if (rc < 0)
{
printf ("rtems-rfs: format: file system open failed: %d: %s\n",
50962: 2040 moveal %d0,%a0 <== NOT EXECUTED
50964: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
50966: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5096c: 2400 movel %d0,%d2 <== NOT EXECUTED
errno, strerror (errno));
5096e: 4e92 jsr %a2@ <== NOT EXECUTED
rc = rtems_rfs_fs_open (name, NULL,
RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
0, &fs);
if (rc < 0)
{
printf ("rtems-rfs: format: file system open failed: %d: %s\n",
50970: 2040 moveal %d0,%a0 <== NOT EXECUTED
50972: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50974: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
50976: 4879 0007 15fc pea 715fc <_CPU_m68k_BFFFO_table+0x6ed> <== NOT EXECUTED
5097c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50982: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",
rc, strerror (rc));
return -1;
}
return 0;
50986: 4280 clrl %d0 <== NOT EXECUTED
50988: 6000 fe00 braw 5078a <rtems_rfs_format+0xbae> <== NOT EXECUTED
rc, strerror (rc));
rc = rtems_rfs_fs_close (fs);
if (rc < 0)
printf ("rtems-rfs: format: file system close failed: %d: %s\n",
errno, strerror (errno));
5098c: 45f9 0006 0414 lea 60414 <__errno>,%a2 <== NOT EXECUTED
50992: 4e92 jsr %a2@ <== NOT EXECUTED
printf ("rtems-rfs: format: inode close failed: %d: %s\n",
rc, strerror (rc));
rc = rtems_rfs_fs_close (fs);
if (rc < 0)
printf ("rtems-rfs: format: file system close failed: %d: %s\n",
50994: 2040 moveal %d0,%a0 <== NOT EXECUTED
50996: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
50998: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5099e: 2400 movel %d0,%d2 <== NOT EXECUTED
errno, strerror (errno));
509a0: 4e92 jsr %a2@ <== NOT EXECUTED
printf ("rtems-rfs: format: inode close failed: %d: %s\n",
rc, strerror (rc));
rc = rtems_rfs_fs_close (fs);
if (rc < 0)
printf ("rtems-rfs: format: file system close failed: %d: %s\n",
509a2: 2040 moveal %d0,%a0 <== NOT EXECUTED
509a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
509a6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
509a8: 4879 0007 175c pea 7175c <_CPU_m68k_BFFFO_table+0x84d> <== NOT EXECUTED
509ae: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
509b4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",
rc, strerror (rc));
return -1;
}
return 0;
509b8: 4280 clrl %d0 <== NOT EXECUTED
509ba: 6000 fdce braw 5078a <rtems_rfs_format+0xbae> <== NOT EXECUTED
509be: 206e ff8c moveal %fp@(-116),%a0 <== NOT EXECUTED
509c2: 2228 0020 movel %a0@(32),%d1 <== NOT EXECUTED
509c6: 6000 f2b8 braw 4fc80 <rtems_rfs_format+0xa4> <== NOT EXECUTED
...
0005da3e <rtems_rfs_fs_close>:
return 0;
}
int
rtems_rfs_fs_close (rtems_rfs_file_system* fs)
{
5da3e: 4e56 fff0 linkw %fp,#-16
5da42: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
int group;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))
5da46: 4878 0002 pea 2 <DOUBLE_FLOAT>
return 0;
}
int
rtems_rfs_fs_close (rtems_rfs_file_system* fs)
{
5da4a: 246e 0008 moveal %fp@(8),%a2
int group;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))
5da4e: 42a7 clrl %sp@-
5da50: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
5da56: 508f addql #8,%sp
5da58: 4a00 tstb %d0
5da5a: 6648 bnes 5daa4 <rtems_rfs_fs_close+0x66> <== NEVER TAKEN
printf ("rtems-rfs: close\n");
for (group = 0; group < fs->group_count; group++)
5da5c: 4aaa 0024 tstl %a2@(36)
5da60: 6f26 bles 5da88 <rtems_rfs_fs_close+0x4a> <== NEVER TAKEN
5da62: 4283 clrl %d3
5da64: 4282 clrl %d2
5da66: 47f9 0005 0c56 lea 50c56 <rtems_rfs_group_close>,%a3
rtems_rfs_group_close (fs, &fs->groups[group]);
5da6c: 202a 0020 movel %a2@(32),%d0
5da70: d083 addl %d3,%d0
int group;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))
printf ("rtems-rfs: close\n");
for (group = 0; group < fs->group_count; group++)
5da72: 5282 addql #1,%d2
5da74: 0683 0000 004c addil #76,%d3
rtems_rfs_group_close (fs, &fs->groups[group]);
5da7a: 2f00 movel %d0,%sp@-
5da7c: 2f0a movel %a2,%sp@-
5da7e: 4e93 jsr %a3@
int group;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))
printf ("rtems-rfs: close\n");
for (group = 0; group < fs->group_count; group++)
5da80: 508f addql #8,%sp
5da82: b4aa 0024 cmpl %a2@(36),%d2
5da86: 6de4 blts 5da6c <rtems_rfs_fs_close+0x2e> <== NEVER TAKEN
rtems_rfs_group_close (fs, &fs->groups[group]);
rtems_rfs_buffer_close (fs);
5da88: 2f0a movel %a2,%sp@-
5da8a: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close>
free (fs);
5da90: 2f0a movel %a2,%sp@-
5da92: 4eb9 0004 7344 jsr 47344 <free>
return 0;
}
5da98: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
5da9e: 4280 clrl %d0
5daa0: 4e5e unlk %fp
5daa2: 4e75 rts
rtems_rfs_fs_close (rtems_rfs_file_system* fs)
{
int group;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))
printf ("rtems-rfs: close\n");
5daa4: 4879 0007 337d pea 7337d <CSWTCH.2+0x12b5> <== NOT EXECUTED
5daaa: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5dab0: 588f addql #4,%sp <== NOT EXECUTED
5dab2: 60a8 bras 5da5c <rtems_rfs_fs_close+0x1e> <== NOT EXECUTED
0005d070 <rtems_rfs_fs_open>:
rtems_rfs_fs_open (const char* name,
void* user,
uint32_t flags,
uint32_t max_held_buffers,
rtems_rfs_file_system** fs)
{
5d070: 4e56 ff9c linkw %fp,#-100
5d074: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
#endif
rtems_rfs_inode_handle inode;
uint16_t mode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d078: 4878 0001 pea 1 <ADD>
5d07c: 47f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a3
rtems_rfs_fs_open (const char* name,
void* user,
uint32_t flags,
uint32_t max_held_buffers,
rtems_rfs_file_system** fs)
{
5d082: 246e 0018 moveal %fp@(24),%a2
#endif
rtems_rfs_inode_handle inode;
uint16_t mode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d086: 42a7 clrl %sp@-
5d088: 4e93 jsr %a3@
5d08a: 508f addql #8,%sp
5d08c: 4a00 tstb %d0
5d08e: 6600 01a2 bnew 5d232 <rtems_rfs_fs_open+0x1c2>
printf ("rtems-rfs: open: %s\n", name);
*fs = malloc (sizeof (rtems_rfs_file_system));
5d092: 4878 0084 pea 84 <DBL_MANT_DIG+0x4f>
5d096: 4eb9 0004 794c jsr 4794c <malloc>
if (!*fs)
5d09c: 588f addql #4,%sp
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: %s\n", name);
*fs = malloc (sizeof (rtems_rfs_file_system));
5d09e: 2480 movel %d0,%a2@
if (!*fs)
5d0a0: 6700 05fe beqw 5d6a0 <rtems_rfs_fs_open+0x630>
printf ("rtems-rfs: open: no memory for file system data\n");
errno = ENOMEM;
return -1;
}
memset (*fs, 0, sizeof (rtems_rfs_file_system));
5d0a4: 4878 0084 pea 84 <DBL_MANT_DIG+0x4f>
5d0a8: 42a7 clrl %sp@-
5d0aa: 2f00 movel %d0,%sp@-
5d0ac: 4eb9 0006 159c jsr 6159c <memset>
(*fs)->user = user;
5d0b2: 2052 moveal %a2@,%a0
5d0b4: 216e 000c 0080 movel %fp@(12),%a0@(128)
rtems_chain_initialize_empty (&(*fs)->buffers);
5d0ba: 2052 moveal %a2@,%a0
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
5d0bc: 43e8 0044 lea %a0@(68),%a1
5d0c0: 2149 004c movel %a1,%a0@(76)
Chain_Node *tail = _Chain_Tail( the_chain );
5d0c4: 43e8 0048 lea %a0@(72),%a1
head->next = tail;
head->previous = NULL;
5d0c8: 42a8 0048 clrl %a0@(72)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
5d0cc: 2149 0044 movel %a1,%a0@(68)
rtems_chain_initialize_empty (&(*fs)->release);
5d0d0: 2052 moveal %a2@,%a0
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
5d0d2: 43e8 0054 lea %a0@(84),%a1
5d0d6: 2149 005c movel %a1,%a0@(92)
Chain_Node *tail = _Chain_Tail( the_chain );
5d0da: 43e8 0058 lea %a0@(88),%a1
head->next = tail;
head->previous = NULL;
5d0de: 42a8 0058 clrl %a0@(88)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
5d0e2: 2149 0054 movel %a1,%a0@(84)
rtems_chain_initialize_empty (&(*fs)->release_modified);
5d0e6: 2052 moveal %a2@,%a0
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
5d0e8: 43e8 0064 lea %a0@(100),%a1
5d0ec: 2149 006c movel %a1,%a0@(108)
Chain_Node *tail = _Chain_Tail( the_chain );
5d0f0: 43e8 0068 lea %a0@(104),%a1
head->next = tail;
head->previous = NULL;
5d0f4: 42a8 0068 clrl %a0@(104)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
5d0f8: 2149 0064 movel %a1,%a0@(100)
rtems_chain_initialize_empty (&(*fs)->file_shares);
5d0fc: 2052 moveal %a2@,%a0
5d0fe: 43e8 0078 lea %a0@(120),%a1
5d102: 2149 0074 movel %a1,%a0@(116)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
5d106: 43e8 0074 lea %a0@(116),%a1
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
5d10a: 42a8 0078 clrl %a0@(120)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
5d10e: 2149 007c movel %a1,%a0@(124)
(*fs)->max_held_buffers = max_held_buffers;
5d112: 2052 moveal %a2@,%a0
5d114: 216e 0014 0040 movel %fp@(20),%a0@(64)
(*fs)->buffers_count = 0;
(*fs)->release_count = 0;
(*fs)->release_modified_count = 0;
(*fs)->flags = flags;
5d11a: 20ae 0010 movel %fp@(16),%a0@
rtems_chain_initialize_empty (&(*fs)->release);
rtems_chain_initialize_empty (&(*fs)->release_modified);
rtems_chain_initialize_empty (&(*fs)->file_shares);
(*fs)->max_held_buffers = max_held_buffers;
(*fs)->buffers_count = 0;
5d11e: 42a8 0050 clrl %a0@(80)
(*fs)->release_count = 0;
5d122: 42a8 0060 clrl %a0@(96)
(*fs)->release_modified_count = 0;
5d126: 42a8 0070 clrl %a0@(112)
#endif
/*
* Open the buffer interface.
*/
rc = rtems_rfs_buffer_open (name, *fs);
5d12a: 2f08 movel %a0,%sp@-
5d12c: 2f2e 0008 movel %fp@(8),%sp@-
5d130: 4eb9 0005 a454 jsr 5a454 <rtems_rfs_buffer_open>
if (rc > 0)
5d136: 4fef 0014 lea %sp@(20),%sp
#endif
/*
* Open the buffer interface.
*/
rc = rtems_rfs_buffer_open (name, *fs);
5d13a: 2800 movel %d0,%d4
if (rc > 0)
5d13c: 6e00 02a8 bgtw 5d3e6 <rtems_rfs_fs_open+0x376>
printf ("rtems-rfs: read-superblock: handle open failed: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, true);
5d140: 4878 0001 pea 1 <ADD>
rc, strerror (rc));
errno = rc;
return -1;
}
rc = rtems_rfs_fs_read_superblock (*fs);
5d144: 2a52 moveal %a2@,%a5
printf ("rtems-rfs: read-superblock: handle open failed: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, true);
5d146: 42a7 clrl %sp@-
5d148: 486e ffd0 pea %fp@(-48)
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5d14c: 4200 clrb %d0
5d14e: 2f0d movel %a5,%sp@-
5d150: 1d40 ffd0 moveb %d0,%fp@(-48)
handle->bnum = 0;
5d154: 42ae ffd2 clrl %fp@(-46)
handle->buffer = NULL;
5d158: 42ae ffd6 clrl %fp@(-42)
5d15c: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request>
if (rc > 0)
5d162: 4fef 0010 lea %sp@(16),%sp
printf ("rtems-rfs: read-superblock: handle open failed: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, true);
5d166: 2800 movel %d0,%d4
if (rc > 0)
5d168: 6f4a bles 5d1b4 <rtems_rfs_fs_open+0x144> <== ALWAYS TAKEN
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d16a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d16e: 42a7 clrl %sp@- <== NOT EXECUTED
5d170: 4e93 jsr %a3@ <== NOT EXECUTED
5d172: 508f addql #8,%sp <== NOT EXECUTED
5d174: 4a00 tstb %d0 <== NOT EXECUTED
5d176: 6600 00d0 bnew 5d248 <rtems_rfs_fs_open+0x1d8> <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d17a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d17c: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d182: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d184: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d18a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d18e: 42a7 clrl %sp@- <== NOT EXECUTED
5d190: 4e93 jsr %a3@ <== NOT EXECUTED
5d192: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d196: 4a00 tstb %d0 <== NOT EXECUTED
5d198: 6600 02ae bnew 5d448 <rtems_rfs_fs_open+0x3d8> <== NOT EXECUTED
printf ("rtems-rfs: open: reading superblock: %d: %s\n",
rc, strerror (rc));
errno = rc;
5d19c: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d1a2: 72ff moveq #-1,%d1 <== NOT EXECUTED
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: reading superblock: %d: %s\n",
rc, strerror (rc));
errno = rc;
5d1a4: 2240 moveal %d0,%a1 <== NOT EXECUTED
5d1a6: 2284 movel %d4,%a1@ <== NOT EXECUTED
return -1;
}
errno = 0;
return 0;
}
5d1a8: 2001 movel %d1,%d0 <== NOT EXECUTED
5d1aa: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5d1b0: 4e5e unlk %fp <== NOT EXECUTED
5d1b2: 4e75 rts <== NOT EXECUTED
printf ("rtems-rfs: read-superblock: request failed%d: %s\n",
rc, strerror (rc));
return rc;
}
sb = rtems_rfs_buffer_data (&handle);
5d1b4: 206e ffd6 moveal %fp@(-42),%a0
#define read_sb(_o) rtems_rfs_read_u32 (sb + (_o))
if (read_sb (RTEMS_RFS_SB_OFFSET_MAGIC) != RTEMS_RFS_SB_MAGIC)
5d1b8: 4280 clrl %d0
5d1ba: 4284 clrl %d4
5d1bc: 7218 moveq #24,%d1
5d1be: 4285 clrl %d5
printf ("rtems-rfs: read-superblock: request failed%d: %s\n",
rc, strerror (rc));
return rc;
}
sb = rtems_rfs_buffer_data (&handle);
5d1c0: 2868 001a moveal %a0@(26),%a4
#define read_sb(_o) rtems_rfs_read_u32 (sb + (_o))
if (read_sb (RTEMS_RFS_SB_OFFSET_MAGIC) != RTEMS_RFS_SB_MAGIC)
5d1c4: 1014 moveb %a4@,%d0
5d1c6: 182c 0001 moveb %a4@(1),%d4
5d1ca: 1a2c 0003 moveb %a4@(3),%d5
5d1ce: e3a8 lsll %d1,%d0
5d1d0: 4844 swap %d4
5d1d2: 4244 clrw %d4
5d1d4: 4281 clrl %d1
5d1d6: 122c 0002 moveb %a4@(2),%d1
5d1da: 8084 orl %d4,%d0
5d1dc: e189 lsll #8,%d1
5d1de: 8085 orl %d5,%d0
5d1e0: 8081 orl %d1,%d0
5d1e2: 0c80 2809 2001 cmpil #671686657,%d0
5d1e8: 6700 00c2 beqw 5d2ac <rtems_rfs_fs_open+0x23c>
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d1ec: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d1f0: 42a7 clrl %sp@- <== NOT EXECUTED
5d1f2: 4e93 jsr %a3@ <== NOT EXECUTED
5d1f4: 508f addql #8,%sp <== NOT EXECUTED
5d1f6: 4a00 tstb %d0 <== NOT EXECUTED
5d1f8: 6600 0090 bnew 5d28a <rtems_rfs_fs_open+0x21a> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5d1fc: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
5d200: 7805 moveq #5,%d4 <== NOT EXECUTED
5d202: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5d204: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
5d20a: 508f addql #8,%sp <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d20c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d20e: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d214: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d216: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d21c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d220: 42a7 clrl %sp@- <== NOT EXECUTED
5d222: 4e93 jsr %a3@ <== NOT EXECUTED
5d224: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d228: 4a00 tstb %d0 <== NOT EXECUTED
5d22a: 6700 ff70 beqw 5d19c <rtems_rfs_fs_open+0x12c> <== NOT EXECUTED
5d22e: 6000 0218 braw 5d448 <rtems_rfs_fs_open+0x3d8> <== NOT EXECUTED
rtems_rfs_inode_handle inode;
uint16_t mode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: %s\n", name);
5d232: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5d236: 4879 0007 3076 pea 73076 <CSWTCH.2+0xfae> <== NOT EXECUTED
5d23c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5d242: 508f addql #8,%sp <== NOT EXECUTED
5d244: 6000 fe4c braw 5d092 <rtems_rfs_fs_open+0x22> <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, true);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: request failed%d: %s\n",
5d248: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5d24a: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5d250: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5d252: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5d254: 4879 0007 30e8 pea 730e8 <CSWTCH.2+0x1020> <== NOT EXECUTED
5d25a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5d260: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d264: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d266: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d26c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d26e: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d274: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d278: 42a7 clrl %sp@- <== NOT EXECUTED
5d27a: 4e93 jsr %a3@ <== NOT EXECUTED
5d27c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d280: 4a00 tstb %d0 <== NOT EXECUTED
5d282: 6700 ff18 beqw 5d19c <rtems_rfs_fs_open+0x12c> <== NOT EXECUTED
5d286: 6000 01c0 braw 5d448 <rtems_rfs_fs_open+0x3d8> <== NOT EXECUTED
#define read_sb(_o) rtems_rfs_read_u32 (sb + (_o))
if (read_sb (RTEMS_RFS_SB_OFFSET_MAGIC) != RTEMS_RFS_SB_MAGIC)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: invalid superblock, bad magic\n");
5d28a: 4879 0007 311a pea 7311a <CSWTCH.2+0x1052> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
5d290: 7805 moveq #5,%d4 <== NOT EXECUTED
#define read_sb(_o) rtems_rfs_read_u32 (sb + (_o))
if (read_sb (RTEMS_RFS_SB_OFFSET_MAGIC) != RTEMS_RFS_SB_MAGIC)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: invalid superblock, bad magic\n");
5d292: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5d298: 588f addql #4,%sp <== NOT EXECUTED
5d29a: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
5d29e: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5d2a0: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
5d2a6: 508f addql #8,%sp <== NOT EXECUTED
5d2a8: 6000 ff62 braw 5d20c <rtems_rfs_fs_open+0x19c> <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->blocks = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);
5d2ac: 4281 clrl %d1
5d2ae: 4284 clrl %d4
5d2b0: 122c 000c moveb %a4@(12),%d1
5d2b4: 182c 000d moveb %a4@(13),%d4
5d2b8: 7418 moveq #24,%d2
5d2ba: 4285 clrl %d5
5d2bc: 4280 clrl %d0
5d2be: 1a2c 000f moveb %a4@(15),%d5
5d2c2: 102c 000e moveb %a4@(14),%d0
fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);
5d2c6: 4286 clrl %d6
uint64_t
rtems_rfs_fs_size (rtems_rfs_file_system* fs)
{
uint64_t blocks = rtems_rfs_fs_blocks (fs);
uint64_t block_size = rtems_rfs_fs_block_size (fs);
return blocks * block_size;
5d2c8: 2e3c 0006 d714 movel #448276,%d7
5d2ce: 2247 moveal %d7,%a1
printf ("rtems-rfs: read-superblock: invalid superblock, bad magic\n");
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->blocks = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);
5d2d0: e5a9 lsll %d2,%d1
5d2d2: 4844 swap %d4
5d2d4: 4244 clrw %d4
5d2d6: e188 lsll #8,%d0
}
uint64_t
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)
{
uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);
5d2d8: 206d 0010 moveal %a5@(16),%a0
printf ("rtems-rfs: read-superblock: invalid superblock, bad magic\n");
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->blocks = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);
5d2dc: 8284 orl %d4,%d1
fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);
5d2de: 4284 clrl %d4
printf ("rtems-rfs: read-superblock: invalid superblock, bad magic\n");
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->blocks = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);
5d2e0: 8285 orl %d5,%d1
5d2e2: 8280 orl %d0,%d1
fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);
5d2e4: 4280 clrl %d0
printf ("rtems-rfs: read-superblock: invalid superblock, bad magic\n");
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->blocks = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);
5d2e6: 2b41 0004 movel %d1,%a5@(4)
fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);
5d2ea: 1c2c 0008 moveb %a4@(8),%d6
5d2ee: 182c 0009 moveb %a4@(9),%d4
5d2f2: 1a2c 000b moveb %a4@(11),%d5
5d2f6: 102c 000a moveb %a4@(10),%d0
5d2fa: e5ae lsll %d2,%d6
5d2fc: 4844 swap %d4
5d2fe: 4244 clrw %d4
5d300: e188 lsll #8,%d0
}
uint64_t
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)
{
uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);
5d302: 4202 clrb %d2
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->blocks = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);
fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);
5d304: 8c84 orl %d4,%d6
5d306: 8c85 orl %d5,%d6
5d308: 8c80 orl %d0,%d6
5d30a: 2b46 0008 movel %d6,%a5@(8)
uint64_t
rtems_rfs_fs_size (rtems_rfs_file_system* fs)
{
uint64_t blocks = rtems_rfs_fs_blocks (fs);
uint64_t block_size = rtems_rfs_fs_block_size (fs);
return blocks * block_size;
5d30e: 2f01 movel %d1,%sp@-
5d310: 42a7 clrl %sp@-
5d312: 2f06 movel %d6,%sp@-
5d314: 2d48 ffc4 movel %a0,%fp@(-60)
5d318: 42a7 clrl %sp@-
5d31a: 4e91 jsr %a1@
}
uint64_t
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)
{
uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);
5d31c: 206e ffc4 moveal %fp@(-60),%a0
uint64_t
rtems_rfs_fs_size (rtems_rfs_file_system* fs)
{
uint64_t blocks = rtems_rfs_fs_blocks (fs);
uint64_t block_size = rtems_rfs_fs_block_size (fs);
return blocks * block_size;
5d320: 4fef 0010 lea %sp@(16),%sp
uint64_t
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)
{
uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);
uint64_t media_block_size = (uint64_t) rtems_rfs_fs_media_block_size (fs);
return media_blocks * media_block_size;
5d324: 2247 moveal %d7,%a1
}
uint64_t
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)
{
uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);
5d326: 2628 001c movel %a0@(28),%d3
uint64_t media_block_size = (uint64_t) rtems_rfs_fs_media_block_size (fs);
5d32a: 2068 0020 moveal %a0@(32),%a0
return media_blocks * media_block_size;
5d32e: 2f03 movel %d3,%sp@-
uint64_t
rtems_rfs_fs_size (rtems_rfs_file_system* fs)
{
uint64_t blocks = rtems_rfs_fs_blocks (fs);
uint64_t block_size = rtems_rfs_fs_block_size (fs);
return blocks * block_size;
5d330: 2800 movel %d0,%d4
5d332: 2a01 movel %d1,%d5
uint64_t
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)
{
uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);
uint64_t media_block_size = (uint64_t) rtems_rfs_fs_media_block_size (fs);
return media_blocks * media_block_size;
5d334: 2f02 movel %d2,%sp@-
uint64_t
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)
{
uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);
uint64_t media_block_size = (uint64_t) rtems_rfs_fs_media_block_size (fs);
5d336: 2d48 ffcc movel %a0,%fp@(-52)
return media_blocks * media_block_size;
5d33a: 2f2e ffcc movel %fp@(-52),%sp@-
uint64_t
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)
{
uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);
uint64_t media_block_size = (uint64_t) rtems_rfs_fs_media_block_size (fs);
5d33e: 91c8 subal %a0,%a0
5d340: 2d48 ffc8 movel %a0,%fp@(-56)
return media_blocks * media_block_size;
5d344: 2f2e ffc8 movel %fp@(-56),%sp@-
5d348: 4e91 jsr %a1@
5d34a: 4fef 0010 lea %sp@(16),%sp
}
fs->blocks = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);
fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);
if (rtems_rfs_fs_size(fs) > rtems_rfs_fs_media_size (fs))
5d34e: 9285 subl %d5,%d1
5d350: 9184 subxl %d4,%d0
5d352: 6500 00c2 bcsw 5d416 <rtems_rfs_fs_open+0x3a6>
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
if (read_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE) != RTEMS_RFS_INODE_SIZE)
5d356: 4280 clrl %d0
5d358: 4281 clrl %d1
5d35a: 102c 0024 moveb %a4@(36),%d0
5d35e: 122c 0025 moveb %a4@(37),%d1
5d362: 7418 moveq #24,%d2
5d364: 7638 moveq #56,%d3
5d366: e5a8 lsll %d2,%d0
5d368: 4841 swap %d1
5d36a: 4241 clrw %d1
5d36c: 4282 clrl %d2
5d36e: 142c 0027 moveb %a4@(39),%d2
5d372: 8081 orl %d1,%d0
5d374: 4281 clrl %d1
5d376: 122c 0026 moveb %a4@(38),%d1
5d37a: 8082 orl %d2,%d0
5d37c: e189 lsll #8,%d1
5d37e: 8081 orl %d1,%d0
5d380: b680 cmpl %d0,%d3
5d382: 6700 011c beqw 5d4a0 <rtems_rfs_fs_open+0x430>
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d386: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d38a: 42a7 clrl %sp@- <== NOT EXECUTED
5d38c: 4e93 jsr %a3@ <== NOT EXECUTED
5d38e: 508f addql #8,%sp <== NOT EXECUTED
5d390: 4a00 tstb %d0 <== NOT EXECUTED
5d392: 6700 fe68 beqw 5d1fc <rtems_rfs_fs_open+0x18c> <== NOT EXECUTED
printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
5d396: 42a7 clrl %sp@- <== NOT EXECUTED
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
5d398: 4280 clrl %d0 <== NOT EXECUTED
5d39a: 4282 clrl %d2 <== NOT EXECUTED
5d39c: 102c 0004 moveb %a4@(4),%d0 <== NOT EXECUTED
5d3a0: 142c 0005 moveb %a4@(5),%d2 <== NOT EXECUTED
5d3a4: 7818 moveq #24,%d4 <== NOT EXECUTED
5d3a6: 4283 clrl %d3 <== NOT EXECUTED
5d3a8: 4281 clrl %d1 <== NOT EXECUTED
5d3aa: 162c 0007 moveb %a4@(7),%d3 <== NOT EXECUTED
5d3ae: 122c 0006 moveb %a4@(6),%d1 <== NOT EXECUTED
5d3b2: e9a8 lsll %d4,%d0 <== NOT EXECUTED
5d3b4: 4842 swap %d2 <== NOT EXECUTED
5d3b6: 4242 clrw %d2 <== NOT EXECUTED
5d3b8: e189 lsll #8,%d1 <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
5d3ba: 7805 moveq #5,%d4 <== NOT EXECUTED
if (read_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE) != RTEMS_RFS_INODE_SIZE)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
5d3bc: 8082 orl %d2,%d0 <== NOT EXECUTED
5d3be: 8083 orl %d3,%d0 <== NOT EXECUTED
}
if (read_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE) != RTEMS_RFS_INODE_SIZE)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
5d3c0: 8081 orl %d1,%d0 <== NOT EXECUTED
5d3c2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5d3c4: 4879 0007 3194 pea 73194 <CSWTCH.2+0x10cc> <== NOT EXECUTED
5d3ca: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5d3d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5d3d4: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
5d3d8: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5d3da: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
5d3e0: 508f addql #8,%sp <== NOT EXECUTED
5d3e2: 6000 fe28 braw 5d20c <rtems_rfs_fs_open+0x19c> <== NOT EXECUTED
* Open the buffer interface.
*/
rc = rtems_rfs_buffer_open (name, *fs);
if (rc > 0)
{
free (*fs);
5d3e6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d3e8: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d3ee: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d3f2: 42a7 clrl %sp@- <== NOT EXECUTED
5d3f4: 4e93 jsr %a3@ <== NOT EXECUTED
5d3f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5d3fa: 4a00 tstb %d0 <== NOT EXECUTED
5d3fc: 6676 bnes 5d474 <rtems_rfs_fs_open+0x404> <== NOT EXECUTED
printf ("rtems-rfs: open: buffer open failed: %d: %s\n",
rc, strerror (rc));
errno = rc;
5d3fe: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d404: 72ff moveq #-1,%d1 <== NOT EXECUTED
{
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: buffer open failed: %d: %s\n",
rc, strerror (rc));
errno = rc;
5d406: 2040 moveal %d0,%a0 <== NOT EXECUTED
5d408: 2084 movel %d4,%a0@ <== NOT EXECUTED
return -1;
}
errno = 0;
return 0;
}
5d40a: 2001 movel %d1,%d0 <== NOT EXECUTED
5d40c: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5d412: 4e5e unlk %fp <== NOT EXECUTED
5d414: 4e75 rts <== NOT EXECUTED
fs->blocks = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);
fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);
if (rtems_rfs_fs_size(fs) > rtems_rfs_fs_media_size (fs))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d416: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d41a: 42a7 clrl %sp@- <== NOT EXECUTED
5d41c: 4e93 jsr %a3@ <== NOT EXECUTED
5d41e: 508f addql #8,%sp <== NOT EXECUTED
5d420: 4a00 tstb %d0 <== NOT EXECUTED
5d422: 6700 fdd8 beqw 5d1fc <rtems_rfs_fs_open+0x18c> <== NOT EXECUTED
printf ("rtems-rfs: read-superblock: invalid superblock block/size count\n");
5d426: 4879 0007 3154 pea 73154 <CSWTCH.2+0x108c> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
5d42c: 7805 moveq #5,%d4 <== NOT EXECUTED
fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);
if (rtems_rfs_fs_size(fs) > rtems_rfs_fs_media_size (fs))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: invalid superblock block/size count\n");
5d42e: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5d434: 588f addql #4,%sp <== NOT EXECUTED
5d436: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
5d43a: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5d43c: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
5d442: 508f addql #8,%sp <== NOT EXECUTED
5d444: 6000 fdc6 braw 5d20c <rtems_rfs_fs_open+0x19c> <== NOT EXECUTED
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: reading superblock: %d: %s\n",
5d448: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5d44a: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5d450: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5d452: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5d454: 4879 0007 32cd pea 732cd <CSWTCH.2+0x1205> <== NOT EXECUTED
5d45a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5d460: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
errno = rc;
5d464: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d46a: 72ff moveq #-1,%d1 <== NOT EXECUTED
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: reading superblock: %d: %s\n",
rc, strerror (rc));
errno = rc;
5d46c: 2240 moveal %d0,%a1 <== NOT EXECUTED
5d46e: 2284 movel %d4,%a1@ <== NOT EXECUTED
5d470: 6000 fd36 braw 5d1a8 <rtems_rfs_fs_open+0x138> <== NOT EXECUTED
rc = rtems_rfs_buffer_open (name, *fs);
if (rc > 0)
{
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: buffer open failed: %d: %s\n",
5d474: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5d476: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5d47c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5d47e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5d480: 4879 0007 30bb pea 730bb <CSWTCH.2+0xff3> <== NOT EXECUTED
5d486: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5d48c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
errno = rc;
5d490: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d496: 72ff moveq #-1,%d1 <== NOT EXECUTED
{
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: buffer open failed: %d: %s\n",
rc, strerror (rc));
errno = rc;
5d498: 2040 moveal %d0,%a0 <== NOT EXECUTED
5d49a: 2084 movel %d4,%a0@ <== NOT EXECUTED
5d49c: 6000 ff6c braw 5d40a <rtems_rfs_fs_open+0x39a> <== NOT EXECUTED
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
5d4a0: 4280 clrl %d0
5d4a2: 4282 clrl %d2
5d4a4: 102c 0010 moveb %a4@(16),%d0
5d4a8: 142c 0011 moveb %a4@(17),%d2
5d4ac: 7218 moveq #24,%d1
5d4ae: 4284 clrl %d4
5d4b0: 182c 0013 moveb %a4@(19),%d4
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
fs->group_inodes = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);
fs->blocks_per_block =
rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);
5d4b4: 2606 movel %d6,%d3
5d4b6: e48b lsrl #2,%d3
fs->block_map_singly_blocks =
fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
fs->block_map_doubly_blocks =
fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
5d4b8: 2e03 movel %d3,%d7
5d4ba: 4c03 7800 mulsl %d3,%d7
fs->inodes = fs->group_count * fs->group_inodes;
fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;
if (fs->group_blocks >
rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))
5d4be: 2a06 movel %d6,%d5
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
5d4c0: e3a8 lsll %d1,%d0
5d4c2: 4842 swap %d2
5d4c4: 4242 clrw %d2
5d4c6: 4281 clrl %d1
5d4c8: 122c 0012 moveb %a4@(18),%d1
rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);
fs->block_map_singly_blocks =
fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
fs->block_map_doubly_blocks =
fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
5d4cc: 2047 moveal %d7,%a0
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
5d4ce: 7e18 moveq #24,%d7
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
5d4d0: 8082 orl %d2,%d0
5d4d2: e189 lsll #8,%d1
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
5d4d4: 4282 clrl %d2
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
5d4d6: 8084 orl %d4,%d0
fs->blocks_per_block =
rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);
fs->block_map_singly_blocks =
fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
fs->block_map_doubly_blocks =
5d4d8: 41f0 8c00 lea %a0@(00000000,%a0:l:4),%a0
fs->inodes = fs->group_count * fs->group_inodes;
fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;
if (fs->group_blocks >
rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))
5d4dc: e78d lsll #3,%d5
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
5d4de: 8081 orl %d1,%d0
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
5d4e0: 4281 clrl %d1
read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
5d4e2: 2b40 0018 movel %d0,%a5@(24)
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
5d4e6: 4280 clrl %d0
5d4e8: 102c 0014 moveb %a4@(20),%d0
5d4ec: 142c 0015 moveb %a4@(21),%d2
5d4f0: 182c 0017 moveb %a4@(23),%d4
5d4f4: 122c 0016 moveb %a4@(22),%d1
5d4f8: efa8 lsll %d7,%d0
5d4fa: 4842 swap %d2
5d4fc: 4242 clrw %d2
5d4fe: e189 lsll #8,%d1
5d500: 8082 orl %d2,%d0
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
5d502: 4282 clrl %d2
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
5d504: 8084 orl %d4,%d0
5d506: 8081 orl %d1,%d0
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
5d508: 4281 clrl %d1
rtems_rfs_buffer_handle_close (fs, &handle);
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
5d50a: 2b40 001c movel %d0,%a5@(28)
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
5d50e: 142c 0018 moveb %a4@(24),%d2
5d512: 122c 0019 moveb %a4@(25),%d1
5d516: 4280 clrl %d0
5d518: 182c 001b moveb %a4@(27),%d4
5d51c: 102c 001a moveb %a4@(26),%d0
5d520: efaa lsll %d7,%d2
5d522: 4841 swap %d1
5d524: 4241 clrw %d1
5d526: e188 lsll #8,%d0
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
5d528: 4287 clrl %d7
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
5d52a: 8481 orl %d1,%d2
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
5d52c: 7218 moveq #24,%d1
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
5d52e: 8484 orl %d4,%d2
5d530: 8480 orl %d0,%d2
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
5d532: 4280 clrl %d0
return EIO;
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
5d534: 2b42 0024 movel %d2,%a5@(36)
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
5d538: 102c 001c moveb %a4@(28),%d0
5d53c: 182c 001d moveb %a4@(29),%d4
5d540: 1e2c 001f moveb %a4@(31),%d7
5d544: e3a8 lsll %d1,%d0
5d546: 4844 swap %d4
5d548: 4244 clrw %d4
5d54a: 4281 clrl %d1
5d54c: 122c 001e moveb %a4@(30),%d1
5d550: 8084 orl %d4,%d0
5d552: e189 lsll #8,%d1
fs->group_inodes = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);
5d554: 4284 clrl %d4
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
5d556: 8087 orl %d7,%d0
5d558: 8081 orl %d1,%d0
fs->group_inodes = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);
5d55a: 4281 clrl %d1
}
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
5d55c: 2b40 0028 movel %d0,%a5@(40)
fs->group_inodes = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);
5d560: 182c 0023 moveb %a4@(35),%d4
5d564: 122c 0020 moveb %a4@(32),%d1
5d568: 1e2c 0021 moveb %a4@(33),%d7
5d56c: 2244 moveal %d4,%a1
5d56e: 7818 moveq #24,%d4
5d570: 4847 swap %d7
5d572: 4247 clrw %d7
5d574: e9a9 lsll %d4,%d1
5d576: 4284 clrl %d4
5d578: 182c 0022 moveb %a4@(34),%d4
5d57c: 8287 orl %d7,%d1
5d57e: 2e09 movel %a1,%d7
fs->blocks_per_block =
rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);
fs->block_map_singly_blocks =
5d580: 2243 moveal %d3,%a1
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
fs->group_inodes = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);
5d582: e18c lsll #8,%d4
5d584: 8287 orl %d7,%d1
fs->blocks_per_block =
rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);
fs->block_map_singly_blocks =
5d586: 43f1 3c00 lea %a1@(00000000,%d3:l:4),%a1
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
fs->group_inodes = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);
fs->blocks_per_block =
5d58a: 2b43 0034 movel %d3,%a5@(52)
fs->block_map_doubly_blocks =
fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
fs->inodes = fs->group_count * fs->group_inodes;
fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;
5d58e: 7638 moveq #56,%d3
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
fs->group_inodes = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);
5d590: 8284 orl %d4,%d1
fs->blocks_per_block =
rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);
fs->block_map_singly_blocks =
5d592: 2b49 0038 movel %a1,%a5@(56)
fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
fs->block_map_doubly_blocks =
fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
fs->inodes = fs->group_count * fs->group_inodes;
5d596: 4c01 2800 mulsl %d1,%d2
fs->blocks_per_block =
rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);
fs->block_map_singly_blocks =
fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
fs->block_map_doubly_blocks =
5d59a: 2b48 003c movel %a0,%a5@(60)
fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
fs->inodes = fs->group_count * fs->group_inodes;
5d59e: 2b42 0014 movel %d2,%a5@(20)
fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;
5d5a2: 4c43 6006 remul %d3,%d6,%d6
fs->bad_blocks = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);
fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
fs->group_count = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);
fs->group_blocks = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);
fs->group_inodes = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);
5d5a6: 2b41 002c movel %d1,%a5@(44)
fs->block_map_doubly_blocks =
fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
fs->inodes = fs->group_count * fs->group_inodes;
fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;
5d5aa: 2b46 0030 movel %d6,%a5@(48)
if (fs->group_blocks >
5d5ae: ba80 cmpl %d0,%d5
5d5b0: 6454 bccs 5d606 <rtems_rfs_fs_open+0x596> <== ALWAYS TAKEN
5d5b2: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
handle->dirty = false;
5d5b6: 4204 clrb %d4 <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5d5b8: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5d5ba: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))
{
rtems_rfs_buffer_handle_close (fs, &handle);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d5c0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
handle->dirty = false;
handle->bnum = 0;
5d5c4: 42ae ffd2 clrl %fp@(-46) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5d5c8: 1d44 ffd0 moveb %d4,%fp@(-48) <== NOT EXECUTED
5d5cc: 42a7 clrl %sp@- <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5d5ce: 42ae ffd6 clrl %fp@(-42) <== NOT EXECUTED
5d5d2: 4e93 jsr %a3@ <== NOT EXECUTED
5d5d4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d5d8: 4a00 tstb %d0 <== NOT EXECUTED
5d5da: 6600 010a bnew 5d6e6 <rtems_rfs_fs_open+0x676> <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d5de: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))
{
rtems_rfs_buffer_handle_close (fs, &handle);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: groups blocks larger than block bits\n");
return EIO;
5d5e0: 7805 moveq #5,%d4 <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d5e2: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d5e8: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d5ea: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d5f0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d5f4: 42a7 clrl %sp@- <== NOT EXECUTED
5d5f6: 4e93 jsr %a3@ <== NOT EXECUTED
5d5f8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d5fc: 4a00 tstb %d0 <== NOT EXECUTED
5d5fe: 6700 fb9c beqw 5d19c <rtems_rfs_fs_open+0x12c> <== NOT EXECUTED
5d602: 6000 fe44 braw 5d448 <rtems_rfs_fs_open+0x3d8> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5d606: 486e ffd0 pea %fp@(-48)
5d60a: 49f9 0005 9fc0 lea 59fc0 <rtems_rfs_buffer_handle_release>,%a4
handle->dirty = false;
5d610: 4207 clrb %d7
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5d612: 2f0d movel %a5,%sp@-
5d614: 4e94 jsr %a4@
rtems_rfs_buffer_handle_close (fs, &handle);
/*
* Change the block size to the value in the superblock.
*/
rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_block_size (fs));
5d616: 2f2d 0008 movel %a5@(8),%sp@-
handle->dirty = false;
handle->bnum = 0;
5d61a: 42ae ffd2 clrl %fp@(-46)
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5d61e: 1d47 ffd0 moveb %d7,%fp@(-48)
5d622: 2f0d movel %a5,%sp@-
handle->bnum = 0;
handle->buffer = NULL;
5d624: 42ae ffd6 clrl %fp@(-42)
5d628: 4eb9 0005 a738 jsr 5a738 <rtems_rfs_buffer_setblksize>
if (rc > 0)
5d62e: 4fef 0010 lea %sp@(16),%sp
rtems_rfs_buffer_handle_close (fs, &handle);
/*
* Change the block size to the value in the superblock.
*/
rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_block_size (fs));
5d632: 2800 movel %d0,%d4
if (rc > 0)
5d634: 6f00 00e6 blew 5d71c <rtems_rfs_fs_open+0x6ac>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5d638: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
5d63c: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5d63e: 4e94 jsr %a4@ <== NOT EXECUTED
{
rtems_rfs_buffer_handle_close (fs, &handle);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d640: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
handle->dirty = false;
handle->bnum = 0;
5d644: 42ae ffd2 clrl %fp@(-46) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
5d648: 1d47 ffd0 moveb %d7,%fp@(-48) <== NOT EXECUTED
5d64c: 42a7 clrl %sp@- <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
5d64e: 42ae ffd6 clrl %fp@(-42) <== NOT EXECUTED
5d652: 4e93 jsr %a3@ <== NOT EXECUTED
5d654: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d658: 4a00 tstb %d0 <== NOT EXECUTED
5d65a: 6700 fb1e beqw 5d17a <rtems_rfs_fs_open+0x10a> <== NOT EXECUTED
printf ("rtems-rfs: read-superblock: invalid superblock block size%d: %s\n",
5d65e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5d660: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5d666: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5d668: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5d66a: 4879 0007 3219 pea 73219 <CSWTCH.2+0x1151> <== NOT EXECUTED
5d670: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5d676: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d67a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d67c: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d682: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d684: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d68a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d68e: 42a7 clrl %sp@- <== NOT EXECUTED
5d690: 4e93 jsr %a3@ <== NOT EXECUTED
5d692: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d696: 4a00 tstb %d0 <== NOT EXECUTED
5d698: 6700 fb02 beqw 5d19c <rtems_rfs_fs_open+0x12c> <== NOT EXECUTED
5d69c: 6000 fdaa braw 5d448 <rtems_rfs_fs_open+0x3d8> <== NOT EXECUTED
printf ("rtems-rfs: open: %s\n", name);
*fs = malloc (sizeof (rtems_rfs_file_system));
if (!*fs)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d6a0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d6a4: 42a7 clrl %sp@- <== NOT EXECUTED
5d6a6: 4e93 jsr %a3@ <== NOT EXECUTED
5d6a8: 508f addql #8,%sp <== NOT EXECUTED
5d6aa: 4a00 tstb %d0 <== NOT EXECUTED
5d6ac: 661a bnes 5d6c8 <rtems_rfs_fs_open+0x658> <== NOT EXECUTED
printf ("rtems-rfs: open: no memory for file system data\n");
errno = ENOMEM;
5d6ae: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5d6b4: 740c moveq #12,%d2 <== NOT EXECUTED
return -1;
5d6b6: 72ff moveq #-1,%d1 <== NOT EXECUTED
*fs = malloc (sizeof (rtems_rfs_file_system));
if (!*fs)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: no memory for file system data\n");
errno = ENOMEM;
5d6b8: 2040 moveal %d0,%a0 <== NOT EXECUTED
5d6ba: 2082 movel %d2,%a0@ <== NOT EXECUTED
return -1;
}
errno = 0;
return 0;
}
5d6bc: 2001 movel %d1,%d0 <== NOT EXECUTED
5d6be: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5d6c4: 4e5e unlk %fp <== NOT EXECUTED
5d6c6: 4e75 rts <== NOT EXECUTED
*fs = malloc (sizeof (rtems_rfs_file_system));
if (!*fs)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: no memory for file system data\n");
5d6c8: 4879 0007 308b pea 7308b <CSWTCH.2+0xfc3> <== NOT EXECUTED
errno = ENOMEM;
5d6ce: 740c moveq #12,%d2 <== NOT EXECUTED
*fs = malloc (sizeof (rtems_rfs_file_system));
if (!*fs)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: no memory for file system data\n");
5d6d0: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5d6d6: 588f addql #4,%sp <== NOT EXECUTED
errno = ENOMEM;
5d6d8: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d6de: 72ff moveq #-1,%d1 <== NOT EXECUTED
*fs = malloc (sizeof (rtems_rfs_file_system));
if (!*fs)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: no memory for file system data\n");
errno = ENOMEM;
5d6e0: 2040 moveal %d0,%a0 <== NOT EXECUTED
5d6e2: 2082 movel %d2,%a0@ <== NOT EXECUTED
5d6e4: 60d6 bras 5d6bc <rtems_rfs_fs_open+0x64c> <== NOT EXECUTED
if (fs->group_blocks >
rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))
{
rtems_rfs_buffer_handle_close (fs, &handle);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: groups blocks larger than block bits\n");
5d6e6: 4879 0007 31d8 pea 731d8 <CSWTCH.2+0x1110> <== NOT EXECUTED
return EIO;
5d6ec: 7805 moveq #5,%d4 <== NOT EXECUTED
if (fs->group_blocks >
rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))
{
rtems_rfs_buffer_handle_close (fs, &handle);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: groups blocks larger than block bits\n");
5d6ee: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5d6f4: 588f addql #4,%sp <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d6f6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d6f8: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d6fe: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d700: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d706: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d70a: 42a7 clrl %sp@- <== NOT EXECUTED
5d70c: 4e93 jsr %a3@ <== NOT EXECUTED
5d70e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d712: 4a00 tstb %d0 <== NOT EXECUTED
5d714: 6700 fa86 beqw 5d19c <rtems_rfs_fs_open+0x12c> <== NOT EXECUTED
5d718: 6000 fd2e braw 5d448 <rtems_rfs_fs_open+0x3d8> <== NOT EXECUTED
printf ("rtems-rfs: read-superblock: invalid superblock block size%d: %s\n",
rc, strerror (rc));
return rc;
}
fs->groups = calloc (fs->group_count, sizeof (rtems_rfs_group));
5d71c: 242d 0024 movel %a5@(36),%d2
5d720: 4878 004c pea 4c <DBL_MANT_DIG+0x17>
5d724: 2f02 movel %d2,%sp@-
5d726: 4eb9 0004 6f64 jsr 46f64 <calloc>
if (!fs->groups)
5d72c: 508f addql #8,%sp
printf ("rtems-rfs: read-superblock: invalid superblock block size%d: %s\n",
rc, strerror (rc));
return rc;
}
fs->groups = calloc (fs->group_count, sizeof (rtems_rfs_group));
5d72e: 2b40 0020 movel %d0,%a5@(32)
if (!fs->groups)
5d732: 6700 0286 beqw 5d9ba <rtems_rfs_fs_open+0x94a>
/*
* Perform each phase of group initialisation at the same time. This way we
* know how far the initialisation has gone if an error occurs and we need to
* close everything.
*/
for (group = 0; group < fs->group_count; group++)
5d736: 4a82 tstl %d2
5d738: 6f46 bles 5d780 <rtems_rfs_fs_open+0x710> <== NEVER TAKEN
5d73a: 4283 clrl %d3
5d73c: 4282 clrl %d2
5d73e: 2a3c 0005 09cc movel #330188,%d5
{
rc = rtems_rfs_group_open (fs,
5d744: 222d 0020 movel %a5@(32),%d1
5d748: d283 addl %d3,%d1
5d74a: 2245 moveal %d5,%a1
5d74c: 0683 0000 004c addil #76,%d3
rtems_rfs_fs_block (fs, group, 0),
5d752: 202d 0028 movel %a5@(40),%d0
* know how far the initialisation has gone if an error occurs and we need to
* close everything.
*/
for (group = 0; group < fs->group_count; group++)
{
rc = rtems_rfs_group_open (fs,
5d756: 2f01 movel %d1,%sp@-
5d758: 2f2d 002c movel %a5@(44),%sp@-
rtems_rfs_fs_block (fs, group, 0),
5d75c: 2202 movel %d2,%d1
5d75e: 4c00 1800 mulsl %d0,%d1
* know how far the initialisation has gone if an error occurs and we need to
* close everything.
*/
for (group = 0; group < fs->group_count; group++)
{
rc = rtems_rfs_group_open (fs,
5d762: 2f00 movel %d0,%sp@-
5d764: 2041 moveal %d1,%a0
5d766: 4868 0001 pea %a0@(1)
5d76a: 2f0d movel %a5,%sp@-
5d76c: 4e91 jsr %a1@
rtems_rfs_fs_block (fs, group, 0),
fs->group_blocks,
fs->group_inodes,
&fs->groups[group]);
if (rc > 0)
5d76e: 4fef 0014 lea %sp@(20),%sp
5d772: 4a80 tstl %d0
5d774: 6e00 01ae bgtw 5d924 <rtems_rfs_fs_open+0x8b4>
/*
* Perform each phase of group initialisation at the same time. This way we
* know how far the initialisation has gone if an error occurs and we need to
* close everything.
*/
for (group = 0; group < fs->group_count; group++)
5d778: 5282 addql #1,%d2
5d77a: b4ad 0024 cmpl %a5@(36),%d2
5d77e: 6dc4 blts 5d744 <rtems_rfs_fs_open+0x6d4> <== NEVER TAKEN
rc, strerror (rc));
errno = rc;
return -1;
}
rc = rtems_rfs_inode_open (*fs, RTEMS_RFS_ROOT_INO, &inode, true);
5d780: 4878 0001 pea 1 <ADD>
5d784: 240e movel %fp,%d2
5d786: 0682 ffff ffda addil #-38,%d2
5d78c: 2f02 movel %d2,%sp@-
5d78e: 4878 0001 pea 1 <ADD>
5d792: 2f12 movel %a2@,%sp@-
5d794: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open>
if (rc > 0)
5d79a: 4fef 0010 lea %sp@(16),%sp
rc, strerror (rc));
errno = rc;
return -1;
}
rc = rtems_rfs_inode_open (*fs, RTEMS_RFS_ROOT_INO, &inode, true);
5d79e: 2600 movel %d0,%d3
if (rc > 0)
5d7a0: 6e00 0120 bgtw 5d8c2 <rtems_rfs_fs_open+0x852>
rc, strerror (rc));
errno = rc;
return -1;
}
if (((*fs)->flags & RTEMS_RFS_FS_FORCE_OPEN) == 0)
5d7a4: 2052 moveal %a2@,%a0
5d7a6: 7004 moveq #4,%d0
5d7a8: c090 andl %a0@,%d0
5d7aa: 662a bnes 5d7d6 <rtems_rfs_fs_open+0x766> <== ALWAYS TAKEN
{
mode = rtems_rfs_inode_get_mode (&inode);
5d7ac: 226e ffe6 moveal %fp@(-26),%a1 <== NOT EXECUTED
* @return uint16_t The mode.
*/
static inline uint16_t
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->mode);
5d7b0: 4280 clrl %d0 <== NOT EXECUTED
5d7b2: 1029 0002 moveb %a1@(2),%d0 <== NOT EXECUTED
5d7b6: 4281 clrl %d1 <== NOT EXECUTED
5d7b8: 1229 0003 moveb %a1@(3),%d1 <== NOT EXECUTED
5d7bc: e188 lsll #8,%d0 <== NOT EXECUTED
5d7be: 8081 orl %d1,%d0 <== NOT EXECUTED
if ((mode == 0xffff) || !RTEMS_RFS_S_ISDIR (mode))
5d7c0: 0c80 0000 ffff cmpil #65535,%d0 <== NOT EXECUTED
5d7c6: 6736 beqs 5d7fe <rtems_rfs_fs_open+0x78e> <== NOT EXECUTED
5d7c8: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
5d7ce: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED
5d7d4: 6628 bnes 5d7fe <rtems_rfs_fs_open+0x78e> <== NOT EXECUTED
errno = EIO;
return -1;
}
}
rc = rtems_rfs_inode_close (*fs, &inode);
5d7d6: 2f02 movel %d2,%sp@-
5d7d8: 2f08 movel %a0,%sp@-
5d7da: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close>
if (rc > 0)
5d7e0: 508f addql #8,%sp
errno = EIO;
return -1;
}
}
rc = rtems_rfs_inode_close (*fs, &inode);
5d7e2: 2400 movel %d0,%d2
if (rc > 0)
5d7e4: 6e7a bgts 5d860 <rtems_rfs_fs_open+0x7f0> <== NEVER TAKEN
printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
errno = rc;
return -1;
}
errno = 0;
5d7e6: 4eb9 0006 0414 jsr 60414 <__errno>
return 0;
5d7ec: 4281 clrl %d1
printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
errno = rc;
return -1;
}
errno = 0;
5d7ee: 2240 moveal %d0,%a1
return 0;
}
5d7f0: 2001 movel %d1,%d0
5d7f2: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5
printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
errno = rc;
return -1;
}
errno = 0;
5d7f8: 4291 clrl %a1@
return 0;
}
5d7fa: 4e5e unlk %fp
5d7fc: 4e75 rts
{
mode = rtems_rfs_inode_get_mode (&inode);
if ((mode == 0xffff) || !RTEMS_RFS_S_ISDIR (mode))
{
rtems_rfs_inode_close (*fs, &inode);
5d7fe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5d800: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5d802: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
rtems_rfs_buffer_close (*fs);
5d808: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d80a: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d810: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d812: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d818: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d81c: 42a7 clrl %sp@- <== NOT EXECUTED
5d81e: 4e93 jsr %a3@ <== NOT EXECUTED
5d820: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
5d824: 4a00 tstb %d0 <== NOT EXECUTED
5d826: 661a bnes 5d842 <rtems_rfs_fs_open+0x7d2> <== NOT EXECUTED
printf ("rtems-rfs: open: invalid root inode mode\n");
errno = EIO;
5d828: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d82e: 72ff moveq #-1,%d1 <== NOT EXECUTED
rtems_rfs_inode_close (*fs, &inode);
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: invalid root inode mode\n");
errno = EIO;
5d830: 2240 moveal %d0,%a1 <== NOT EXECUTED
5d832: 7005 moveq #5,%d0 <== NOT EXECUTED
5d834: 2280 movel %d0,%a1@ <== NOT EXECUTED
return -1;
}
errno = 0;
return 0;
}
5d836: 2001 movel %d1,%d0 <== NOT EXECUTED
5d838: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5d83e: 4e5e unlk %fp <== NOT EXECUTED
5d840: 4e75 rts <== NOT EXECUTED
{
rtems_rfs_inode_close (*fs, &inode);
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: invalid root inode mode\n");
5d842: 4879 0007 3327 pea 73327 <CSWTCH.2+0x125f> <== NOT EXECUTED
5d848: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5d84e: 588f addql #4,%sp <== NOT EXECUTED
errno = EIO;
5d850: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d856: 72ff moveq #-1,%d1 <== NOT EXECUTED
rtems_rfs_inode_close (*fs, &inode);
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: invalid root inode mode\n");
errno = EIO;
5d858: 2240 moveal %d0,%a1 <== NOT EXECUTED
5d85a: 7005 moveq #5,%d0 <== NOT EXECUTED
5d85c: 2280 movel %d0,%a1@ <== NOT EXECUTED
5d85e: 60d6 bras 5d836 <rtems_rfs_fs_open+0x7c6> <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (*fs, &inode);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d860: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d862: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d868: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d86a: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d870: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d874: 42a7 clrl %sp@- <== NOT EXECUTED
5d876: 4e93 jsr %a3@ <== NOT EXECUTED
5d878: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d87c: 4a00 tstb %d0 <== NOT EXECUTED
5d87e: 6618 bnes 5d898 <rtems_rfs_fs_open+0x828> <== NOT EXECUTED
printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
errno = rc;
5d880: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d886: 72ff moveq #-1,%d1 <== NOT EXECUTED
{
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
errno = rc;
5d888: 2040 moveal %d0,%a0 <== NOT EXECUTED
5d88a: 2082 movel %d2,%a0@ <== NOT EXECUTED
return -1;
}
errno = 0;
return 0;
}
5d88c: 2001 movel %d1,%d0 <== NOT EXECUTED
5d88e: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5d894: 4e5e unlk %fp <== NOT EXECUTED
5d896: 4e75 rts <== NOT EXECUTED
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
5d898: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5d89a: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5d8a0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5d8a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5d8a4: 4879 0007 3350 pea 73350 <CSWTCH.2+0x1288> <== NOT EXECUTED
5d8aa: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5d8b0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
errno = rc;
5d8b4: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d8ba: 72ff moveq #-1,%d1 <== NOT EXECUTED
{
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
errno = rc;
5d8bc: 2040 moveal %d0,%a0 <== NOT EXECUTED
5d8be: 2082 movel %d2,%a0@ <== NOT EXECUTED
5d8c0: 60ca bras 5d88c <rtems_rfs_fs_open+0x81c> <== NOT EXECUTED
}
rc = rtems_rfs_inode_open (*fs, RTEMS_RFS_ROOT_INO, &inode, true);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d8c2: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d8c4: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d8ca: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d8cc: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d8d2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d8d6: 42a7 clrl %sp@- <== NOT EXECUTED
5d8d8: 4e93 jsr %a3@ <== NOT EXECUTED
5d8da: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d8de: 4a00 tstb %d0 <== NOT EXECUTED
5d8e0: 6618 bnes 5d8fa <rtems_rfs_fs_open+0x88a> <== NOT EXECUTED
printf ("rtems-rfs: open: reading root inode: %d: %s\n",
rc, strerror (rc));
errno = rc;
5d8e2: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d8e8: 72ff moveq #-1,%d1 <== NOT EXECUTED
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: reading root inode: %d: %s\n",
rc, strerror (rc));
errno = rc;
5d8ea: 2040 moveal %d0,%a0 <== NOT EXECUTED
5d8ec: 2083 movel %d3,%a0@ <== NOT EXECUTED
return -1;
}
errno = 0;
return 0;
}
5d8ee: 2001 movel %d1,%d0 <== NOT EXECUTED
5d8f0: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5d8f6: 4e5e unlk %fp <== NOT EXECUTED
5d8f8: 4e75 rts <== NOT EXECUTED
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: reading root inode: %d: %s\n",
5d8fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5d8fc: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5d902: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5d904: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5d906: 4879 0007 32fa pea 732fa <CSWTCH.2+0x1232> <== NOT EXECUTED
5d90c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5d912: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
errno = rc;
5d916: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
return -1;
5d91c: 72ff moveq #-1,%d1 <== NOT EXECUTED
rtems_rfs_buffer_close (*fs);
free (*fs);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: open: reading root inode: %d: %s\n",
rc, strerror (rc));
errno = rc;
5d91e: 2040 moveal %d0,%a0 <== NOT EXECUTED
5d920: 2083 movel %d3,%a0@ <== NOT EXECUTED
5d922: 60ca bras 5d8ee <rtems_rfs_fs_open+0x87e> <== NOT EXECUTED
5d924: 2800 movel %d0,%d4 <== NOT EXECUTED
fs->group_inodes,
&fs->groups[group]);
if (rc > 0)
{
int g;
for (g = 0; g < group; g++)
5d926: 4a82 tstl %d2 <== NOT EXECUTED
5d928: 6726 beqs 5d950 <rtems_rfs_fs_open+0x8e0> <== NOT EXECUTED
5d92a: 4285 clrl %d5 <== NOT EXECUTED
5d92c: 4283 clrl %d3 <== NOT EXECUTED
5d92e: 2c3c 0005 0c56 movel #330838,%d6 <== NOT EXECUTED
rtems_rfs_group_close (fs, &fs->groups[g]);
5d934: 222d 0020 movel %a5@(32),%d1 <== NOT EXECUTED
5d938: d285 addl %d5,%d1 <== NOT EXECUTED
5d93a: 2046 moveal %d6,%a0 <== NOT EXECUTED
fs->group_inodes,
&fs->groups[group]);
if (rc > 0)
{
int g;
for (g = 0; g < group; g++)
5d93c: 5283 addql #1,%d3 <== NOT EXECUTED
5d93e: 0685 0000 004c addil #76,%d5 <== NOT EXECUTED
rtems_rfs_group_close (fs, &fs->groups[g]);
5d944: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5d946: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5d948: 4e90 jsr %a0@ <== NOT EXECUTED
fs->group_inodes,
&fs->groups[group]);
if (rc > 0)
{
int g;
for (g = 0; g < group; g++)
5d94a: 508f addql #8,%sp <== NOT EXECUTED
5d94c: b483 cmpl %d3,%d2 <== NOT EXECUTED
5d94e: 66e4 bnes 5d934 <rtems_rfs_fs_open+0x8c4> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5d950: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
5d954: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5d956: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_rfs_group_close (fs, &fs->groups[g]);
rtems_rfs_buffer_handle_close (fs, &handle);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d958: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
handle->dirty = false;
5d95c: 4200 clrb %d0 <== NOT EXECUTED
5d95e: 42a7 clrl %sp@- <== NOT EXECUTED
5d960: 1d40 ffd0 moveb %d0,%fp@(-48) <== NOT EXECUTED
handle->bnum = 0;
5d964: 42ae ffd2 clrl %fp@(-46) <== NOT EXECUTED
handle->buffer = NULL;
5d968: 42ae ffd6 clrl %fp@(-42) <== NOT EXECUTED
5d96c: 4e93 jsr %a3@ <== NOT EXECUTED
5d96e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d972: 4a00 tstb %d0 <== NOT EXECUTED
5d974: 6700 f804 beqw 5d17a <rtems_rfs_fs_open+0x10a> <== NOT EXECUTED
printf ("rtems-rfs: read-superblock: no memory for group table%d: %s\n",
5d978: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5d97a: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5d980: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5d982: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5d984: 4879 0007 3290 pea 73290 <CSWTCH.2+0x11c8> <== NOT EXECUTED
5d98a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5d990: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d994: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d996: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d99c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d99e: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d9a4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d9a8: 42a7 clrl %sp@- <== NOT EXECUTED
5d9aa: 4e93 jsr %a3@ <== NOT EXECUTED
5d9ac: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d9b0: 4a00 tstb %d0 <== NOT EXECUTED
5d9b2: 6700 f7e8 beqw 5d19c <rtems_rfs_fs_open+0x12c> <== NOT EXECUTED
5d9b6: 6000 fa90 braw 5d448 <rtems_rfs_fs_open+0x3d8> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5d9ba: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
5d9be: 2f0d movel %a5,%sp@- <== NOT EXECUTED
5d9c0: 4e94 jsr %a4@ <== NOT EXECUTED
fs->groups = calloc (fs->group_count, sizeof (rtems_rfs_group));
if (!fs->groups)
{
rtems_rfs_buffer_handle_close (fs, &handle);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d9c2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
handle->dirty = false;
5d9c6: 4200 clrb %d0 <== NOT EXECUTED
5d9c8: 42a7 clrl %sp@- <== NOT EXECUTED
5d9ca: 1d40 ffd0 moveb %d0,%fp@(-48) <== NOT EXECUTED
handle->bnum = 0;
5d9ce: 42ae ffd2 clrl %fp@(-46) <== NOT EXECUTED
handle->buffer = NULL;
5d9d2: 42ae ffd6 clrl %fp@(-42) <== NOT EXECUTED
5d9d6: 4e93 jsr %a3@ <== NOT EXECUTED
5d9d8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d9dc: 4a00 tstb %d0 <== NOT EXECUTED
5d9de: 6628 bnes 5da08 <rtems_rfs_fs_open+0x998> <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d9e0: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
if (!fs->groups)
{
rtems_rfs_buffer_handle_close (fs, &handle);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: no memory for group table\n");
return ENOMEM;
5d9e2: 780c moveq #12,%d4 <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5d9e4: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5d9ea: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5d9ec: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5d9f2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5d9f6: 42a7 clrl %sp@- <== NOT EXECUTED
5d9f8: 4e93 jsr %a3@ <== NOT EXECUTED
5d9fa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5d9fe: 4a00 tstb %d0 <== NOT EXECUTED
5da00: 6700 f79a beqw 5d19c <rtems_rfs_fs_open+0x12c> <== NOT EXECUTED
5da04: 6000 fa42 braw 5d448 <rtems_rfs_fs_open+0x3d8> <== NOT EXECUTED
if (!fs->groups)
{
rtems_rfs_buffer_handle_close (fs, &handle);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: no memory for group table\n");
5da08: 4879 0007 325a pea 7325a <CSWTCH.2+0x1192> <== NOT EXECUTED
return ENOMEM;
5da0e: 780c moveq #12,%d4 <== NOT EXECUTED
if (!fs->groups)
{
rtems_rfs_buffer_handle_close (fs, &handle);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
printf ("rtems-rfs: read-superblock: no memory for group table\n");
5da10: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5da16: 588f addql #4,%sp <== NOT EXECUTED
}
rc = rtems_rfs_fs_read_superblock (*fs);
if (rc > 0)
{
rtems_rfs_buffer_close (*fs);
5da18: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5da1a: 4eb9 0005 a83e jsr 5a83e <rtems_rfs_buffer_close> <== NOT EXECUTED
free (*fs);
5da20: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5da22: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))
5da28: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5da2c: 42a7 clrl %sp@- <== NOT EXECUTED
5da2e: 4e93 jsr %a3@ <== NOT EXECUTED
5da30: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5da34: 4a00 tstb %d0 <== NOT EXECUTED
5da36: 6700 f764 beqw 5d19c <rtems_rfs_fs_open+0x12c> <== NOT EXECUTED
5da3a: 6000 fa0c braw 5d448 <rtems_rfs_fs_open+0x3d8> <== NOT EXECUTED
0005d00c <rtems_rfs_fs_size>:
#include <rtems/rfs/rtems-rfs-trace.h>
uint64_t
rtems_rfs_fs_size (rtems_rfs_file_system* fs)
{
uint64_t blocks = rtems_rfs_fs_blocks (fs);
5d00c: 91c8 subal %a0,%a0 <== NOT EXECUTED
uint64_t block_size = rtems_rfs_fs_block_size (fs);
5d00e: 4280 clrl %d0 <== NOT EXECUTED
#include <rtems/rfs/rtems-rfs-inode.h>
#include <rtems/rfs/rtems-rfs-trace.h>
uint64_t
rtems_rfs_fs_size (rtems_rfs_file_system* fs)
{
5d010: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5d014: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5d016: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
uint64_t blocks = rtems_rfs_fs_blocks (fs);
5d01a: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED
uint64_t block_size = rtems_rfs_fs_block_size (fs);
5d01e: 222a 0008 movel %a2@(8),%d1 <== NOT EXECUTED
return blocks * block_size;
5d022: 2f09 movel %a1,%sp@- <== NOT EXECUTED
5d024: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5d026: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5d028: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5d02a: 4eb9 0006 d714 jsr 6d714 <__muldi3> <== NOT EXECUTED
}
5d030: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
uint64_t
rtems_rfs_fs_size (rtems_rfs_file_system* fs)
{
uint64_t blocks = rtems_rfs_fs_blocks (fs);
uint64_t block_size = rtems_rfs_fs_block_size (fs);
return blocks * block_size;
5d034: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
5d038: 4e5e unlk %fp <== NOT EXECUTED
00050d4a <rtems_rfs_group_bitmap_alloc>:
int
rtems_rfs_group_bitmap_alloc (rtems_rfs_file_system* fs,
rtems_rfs_bitmap_bit goal,
bool inode,
rtems_rfs_bitmap_bit* result)
{
50d4a: 4e56 ffc8 linkw %fp,#-56
50d4e: 222e 000c movel %fp@(12),%d1
50d52: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
50d56: 162e 0013 moveb %fp@(19),%d3
50d5a: 2a6e 0008 moveal %fp@(8),%a5
50d5e: 1d43 fff7 moveb %d3,%fp@(-9)
rtems_rfs_bitmap_bit bit;
int offset;
bool updown;
int direction;
if (inode)
50d62: 6700 0112 beqw 50e76 <rtems_rfs_group_bitmap_alloc+0x12c>
{
size = fs->group_inodes;
50d66: 202d 002c movel %a5@(44),%d0
goal -= RTEMS_RFS_ROOT_INO;
50d6a: 5381 subql #1,%d1
}
else
size = fs->group_blocks;
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
50d6c: 2e01 movel %d1,%d7
* We can start at any location and we move out from that point in each
* direction. The offset grows until we find a free bit or we hit an end.
*/
group = group_start + (direction * offset);
if (offset)
bit = direction > 0 ? 0 : size - 1;
50d6e: 2040 moveal %d0,%a0
50d70: 5388 subql #1,%a0
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
offset = 0;
updown = true;
direction = 1;
50d72: 7401 moveq #1,%d2
else
size = fs->group_blocks;
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
offset = 0;
50d74: 4285 clrl %d5
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_alloc (bitmap, bit, &allocated, &bit);
50d76: 49ee fffc lea %fp@(-4),%a4
50d7a: 47f9 0005 8bae lea 58bae <rtems_rfs_bitmap_map_alloc>,%a3
}
else
size = fs->group_blocks;
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
50d80: 4c40 7003 remul %d0,%d3,%d7
50d84: 4c40 7007 remul %d0,%d7,%d7
*/
while (true)
{
rtems_rfs_bitmap_control* bitmap;
int group;
bool allocated = false;
50d88: 4200 clrb %d0
size = fs->group_blocks;
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
offset = 0;
updown = true;
50d8a: 7801 moveq #1,%d4
}
else
size = fs->group_blocks;
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
50d8c: 2d43 fffc movel %d3,%fp@(-4)
/*
* We can start at any location and we move out from that point in each
* direction. The offset grows until we find a free bit or we hit an end.
*/
group = group_start + (direction * offset);
50d90: 2607 movel %d7,%d3
*/
while (true)
{
rtems_rfs_bitmap_control* bitmap;
int group;
bool allocated = false;
50d92: 1d40 fffb moveb %d0,%fp@(-5)
* We can start at any location and we move out from that point in each
* direction. The offset grows until we find a free bit or we hit an end.
*/
group = group_start + (direction * offset);
if (offset)
bit = direction > 0 ? 0 : size - 1;
50d96: 2d48 fff2 movel %a0,%fp@(-14)
/*
* If we are still looking up and down and if the group is out of range we
* have reached one end. Stopping looking up and down and just move in the
* one direction one group at a time.
*/
if ((group < 0) || (group >= fs->group_count))
50d9a: 4a83 tstl %d3
50d9c: 6d72 blts 50e10 <rtems_rfs_group_bitmap_alloc+0xc6><== NEVER TAKEN
50d9e: b6ad 0024 cmpl %a5@(36),%d3
50da2: 6c6c bges 50e10 <rtems_rfs_group_bitmap_alloc+0xc6><== NEVER TAKEN
updown = false;
continue;
}
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
50da4: 7c4c moveq #76,%d6
50da6: 4c03 6800 mulsl %d3,%d6
50daa: 246d 0020 moveal %a5@(32),%a2
50dae: d5c6 addal %d6,%a2
direction = direction > 0 ? -1 : 1;
updown = false;
continue;
}
if (inode)
50db0: 4a2e fff7 tstb %fp@(-9)
50db4: 6700 00ba beqw 50e70 <rtems_rfs_group_bitmap_alloc+0x126>
bitmap = &fs->groups[group].inode_bitmap;
50db8: 45ea 002a lea %a2@(42),%a2
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_alloc (bitmap, bit, &allocated, &bit);
50dbc: 2f0c movel %a4,%sp@-
50dbe: 486e fffb pea %fp@(-5)
50dc2: 2f2e fffc movel %fp@(-4),%sp@-
50dc6: 2f0a movel %a2,%sp@-
50dc8: 4e93 jsr %a3@
if (rc > 0)
50dca: 4fef 0010 lea %sp@(16),%sp
50dce: 4a80 tstl %d0
50dd0: 6e00 0094 bgtw 50e66 <rtems_rfs_group_bitmap_alloc+0x11c>
return rc;
if (rtems_rfs_fs_release_bitmaps (fs))
50dd4: 7001 moveq #1,%d0
50dd6: c095 andl %a5@,%d0
50dd8: 6700 00d2 beqw 50eac <rtems_rfs_group_bitmap_alloc+0x162>
rtems_rfs_bitmap_release_buffer (fs, bitmap);
if (allocated)
50ddc: 4a2e fffb tstb %fp@(-5)
50de0: 6600 00da bnew 50ebc <rtems_rfs_group_bitmap_alloc+0x172>
printf ("rtems-rfs: group-bitmap-alloc: %s allocated: %" PRId32 "\n",
inode ? "inode" : "block", *result);
return 0;
}
if (updown)
50de4: 4a04 tstb %d4 <== NOT EXECUTED
50de6: 670a beqs 50df2 <rtems_rfs_group_bitmap_alloc+0xa8><== NOT EXECUTED
direction = direction > 0 ? -1 : 1;
50de8: 4a82 tstl %d2 <== NOT EXECUTED
50dea: 5ec2 sgt %d2 <== NOT EXECUTED
50dec: 7001 moveq #1,%d0 <== NOT EXECUTED
50dee: 49c2 extbl %d2 <== NOT EXECUTED
50df0: 8480 orl %d0,%d2 <== NOT EXECUTED
offset++;
50df2: 5285 addql #1,%d5 <== NOT EXECUTED
/*
* We can start at any location and we move out from that point in each
* direction. The offset grows until we find a free bit or we hit an end.
*/
group = group_start + (direction * offset);
50df4: 2602 movel %d2,%d3 <== NOT EXECUTED
50df6: 4c05 3800 mulsl %d5,%d3 <== NOT EXECUTED
*/
while (true)
{
rtems_rfs_bitmap_control* bitmap;
int group;
bool allocated = false;
50dfa: 4200 clrb %d0 <== NOT EXECUTED
/*
* We can start at any location and we move out from that point in each
* direction. The offset grows until we find a free bit or we hit an end.
*/
group = group_start + (direction * offset);
50dfc: d687 addl %d7,%d3 <== NOT EXECUTED
*/
while (true)
{
rtems_rfs_bitmap_control* bitmap;
int group;
bool allocated = false;
50dfe: 1d40 fffb moveb %d0,%fp@(-5) <== NOT EXECUTED
* We can start at any location and we move out from that point in each
* direction. The offset grows until we find a free bit or we hit an end.
*/
group = group_start + (direction * offset);
if (offset)
bit = direction > 0 ? 0 : size - 1;
50e02: 4a82 tstl %d2 <== NOT EXECUTED
50e04: 6f32 bles 50e38 <rtems_rfs_group_bitmap_alloc+0xee><== NOT EXECUTED
50e06: 4280 clrl %d0 <== NOT EXECUTED
50e08: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
/*
* If we are still looking up and down and if the group is out of range we
* have reached one end. Stopping looking up and down and just move in the
* one direction one group at a time.
*/
if ((group < 0) || (group >= fs->group_count))
50e0c: 4a83 tstl %d3 <== NOT EXECUTED
50e0e: 6c8e bges 50d9e <rtems_rfs_group_bitmap_alloc+0x54><== NOT EXECUTED
{
if (!updown)
50e10: 4a04 tstb %d4 <== NOT EXECUTED
50e12: 672e beqs 50e42 <rtems_rfs_group_bitmap_alloc+0xf8><== NOT EXECUTED
break;
direction = direction > 0 ? -1 : 1;
50e14: 4a82 tstl %d2 <== NOT EXECUTED
50e16: 5ec2 sgt %d2 <== NOT EXECUTED
50e18: 7001 moveq #1,%d0 <== NOT EXECUTED
50e1a: 49c2 extbl %d2 <== NOT EXECUTED
*/
while (true)
{
rtems_rfs_bitmap_control* bitmap;
int group;
bool allocated = false;
50e1c: 4203 clrb %d3 <== NOT EXECUTED
*/
if ((group < 0) || (group >= fs->group_count))
{
if (!updown)
break;
direction = direction > 0 ? -1 : 1;
50e1e: 8480 orl %d0,%d2 <== NOT EXECUTED
updown = false;
50e20: 4204 clrb %d4 <== NOT EXECUTED
*/
while (true)
{
rtems_rfs_bitmap_control* bitmap;
int group;
bool allocated = false;
50e22: 1d43 fffb moveb %d3,%fp@(-5) <== NOT EXECUTED
/*
* We can start at any location and we move out from that point in each
* direction. The offset grows until we find a free bit or we hit an end.
*/
group = group_start + (direction * offset);
50e26: 2602 movel %d2,%d3 <== NOT EXECUTED
50e28: 4c05 3800 mulsl %d5,%d3 <== NOT EXECUTED
50e2c: d687 addl %d7,%d3 <== NOT EXECUTED
if (offset)
50e2e: 4a85 tstl %d5 <== NOT EXECUTED
50e30: 6700 ff68 beqw 50d9a <rtems_rfs_group_bitmap_alloc+0x50><== NOT EXECUTED
bit = direction > 0 ? 0 : size - 1;
50e34: 4a82 tstl %d2 <== NOT EXECUTED
50e36: 6ece bgts 50e06 <rtems_rfs_group_bitmap_alloc+0xbc><== NOT EXECUTED
50e38: 202e fff2 movel %fp@(-14),%d0 <== NOT EXECUTED
50e3c: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
50e40: 60ca bras 50e0c <rtems_rfs_group_bitmap_alloc+0xc2><== NOT EXECUTED
direction = direction > 0 ? -1 : 1;
offset++;
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
50e42: 2f3c 0002 0000 movel #131072,%sp@- <== NOT EXECUTED
50e48: 42a7 clrl %sp@- <== NOT EXECUTED
50e4a: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
50e50: 508f addql #8,%sp <== NOT EXECUTED
50e52: 4a00 tstb %d0 <== NOT EXECUTED
50e54: 670e beqs 50e64 <rtems_rfs_group_bitmap_alloc+0x11a><== NOT EXECUTED
printf ("rtems-rfs: group-bitmap-alloc: no blocks available\n");
50e56: 4879 0007 1939 pea 71939 <_CPU_m68k_BFFFO_table+0xa2a> <== NOT EXECUTED
50e5c: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
50e62: 588f addql #4,%sp <== NOT EXECUTED
return ENOSPC;
50e64: 701c moveq #28,%d0 <== NOT EXECUTED
}
50e66: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
50e6c: 4e5e unlk %fp <== NOT EXECUTED
50e6e: 4e75 rts <== NOT EXECUTED
}
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
50e70: 508a addql #8,%a2
50e72: 6000 ff48 braw 50dbc <rtems_rfs_group_bitmap_alloc+0x72>
{
size = fs->group_inodes;
goal -= RTEMS_RFS_ROOT_INO;
}
else
size = fs->group_blocks;
50e76: 202d 0028 movel %a5@(40),%d0
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
50e7a: 2e01 movel %d1,%d7
* We can start at any location and we move out from that point in each
* direction. The offset grows until we find a free bit or we hit an end.
*/
group = group_start + (direction * offset);
if (offset)
bit = direction > 0 ? 0 : size - 1;
50e7c: 2040 moveal %d0,%a0
50e7e: 5388 subql #1,%a0
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
offset = 0;
updown = true;
direction = 1;
50e80: 7401 moveq #1,%d2
else
size = fs->group_blocks;
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
offset = 0;
50e82: 4285 clrl %d5
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_alloc (bitmap, bit, &allocated, &bit);
50e84: 49ee fffc lea %fp@(-4),%a4
50e88: 47f9 0005 8bae lea 58bae <rtems_rfs_bitmap_map_alloc>,%a3
}
else
size = fs->group_blocks;
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
50e8e: 4c40 7003 remul %d0,%d3,%d7
50e92: 4c40 7007 remul %d0,%d7,%d7
*/
while (true)
{
rtems_rfs_bitmap_control* bitmap;
int group;
bool allocated = false;
50e96: 4200 clrb %d0
* We can start at any location and we move out from that point in each
* direction. The offset grows until we find a free bit or we hit an end.
*/
group = group_start + (direction * offset);
if (offset)
bit = direction > 0 ? 0 : size - 1;
50e98: 2d48 fff2 movel %a0,%fp@(-14)
*/
while (true)
{
rtems_rfs_bitmap_control* bitmap;
int group;
bool allocated = false;
50e9c: 1d40 fffb moveb %d0,%fp@(-5)
}
else
size = fs->group_blocks;
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
50ea0: 2d43 fffc movel %d3,%fp@(-4)
/*
* We can start at any location and we move out from that point in each
* direction. The offset grows until we find a free bit or we hit an end.
*/
group = group_start + (direction * offset);
50ea4: 2607 movel %d7,%d3
size = fs->group_blocks;
group_start = goal / size;
bit = (rtems_rfs_bitmap_bit) (goal % size);
offset = 0;
updown = true;
50ea6: 7801 moveq #1,%d4
50ea8: 6000 fef0 braw 50d9a <rtems_rfs_group_bitmap_alloc+0x50>
rc = rtems_rfs_bitmap_map_alloc (bitmap, bit, &allocated, &bit);
if (rc > 0)
return rc;
if (rtems_rfs_fs_release_bitmaps (fs))
rtems_rfs_bitmap_release_buffer (fs, bitmap);
50eac: 2f12 movel %a2@,%sp@-
50eae: 2f0d movel %a5,%sp@-
50eb0: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release>
50eb6: 508f addql #8,%sp
50eb8: 6000 ff22 braw 50ddc <rtems_rfs_group_bitmap_alloc+0x92>
if (allocated)
{
if (inode)
50ebc: 4a2e fff7 tstb %fp@(-9)
50ec0: 675c beqs 50f1e <rtems_rfs_group_bitmap_alloc+0x1d4>
*result = rtems_rfs_group_inode (fs, group, bit);
50ec2: 4bed 002c lea %a5@(44),%a5
50ec6: 4c15 3800 mulsl %a5@,%d3
50eca: 202e fffc movel %fp@(-4),%d0
50ece: 5280 addql #1,%d0
50ed0: d083 addl %d3,%d0
50ed2: 206e 0014 moveal %fp@(20),%a0
50ed6: 2080 movel %d0,%a0@
else
*result = rtems_rfs_group_block (&fs->groups[group], bit);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
50ed8: 2f3c 0002 0000 movel #131072,%sp@-
50ede: 42a7 clrl %sp@-
50ee0: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
50ee6: 508f addql #8,%sp
50ee8: 4a00 tstb %d0
50eea: 6746 beqs 50f32 <rtems_rfs_group_bitmap_alloc+0x1e8><== ALWAYS TAKEN
printf ("rtems-rfs: group-bitmap-alloc: %s allocated: %" PRId32 "\n",
50eec: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
50ef0: 2210 movel %a0@,%d1 <== NOT EXECUTED
50ef2: 4a2e fff7 tstb %fp@(-9) <== NOT EXECUTED
50ef6: 6746 beqs 50f3e <rtems_rfs_group_bitmap_alloc+0x1f4><== NOT EXECUTED
50ef8: 2f01 movel %d1,%sp@- <== NOT EXECUTED
50efa: 203c 0007 1901 movel #465153,%d0 <== NOT EXECUTED
50f00: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50f02: 4879 0007 1907 pea 71907 <_CPU_m68k_BFFFO_table+0x9f8> <== NOT EXECUTED
50f08: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50f0e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
inode ? "inode" : "block", *result);
return 0;
50f12: 4280 clrl %d0 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
printf ("rtems-rfs: group-bitmap-alloc: no blocks available\n");
return ENOSPC;
}
50f14: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
50f1a: 4e5e unlk %fp <== NOT EXECUTED
50f1c: 4e75 rts <== NOT EXECUTED
if (allocated)
{
if (inode)
*result = rtems_rfs_group_inode (fs, group, bit);
else
*result = rtems_rfs_group_block (&fs->groups[group], bit);
50f1e: 206d 0020 moveal %a5@(32),%a0
50f22: 202e fffc movel %fp@(-4),%d0
50f26: d0b0 6800 addl %a0@(00000000,%d6:l),%d0
50f2a: 226e 0014 moveal %fp@(20),%a1
50f2e: 2280 movel %d0,%a1@
50f30: 60a6 bras 50ed8 <rtems_rfs_group_bitmap_alloc+0x18e>
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
printf ("rtems-rfs: group-bitmap-alloc: %s allocated: %" PRId32 "\n",
inode ? "inode" : "block", *result);
return 0;
50f32: 4280 clrl %d0
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
printf ("rtems-rfs: group-bitmap-alloc: no blocks available\n");
return ENOSPC;
}
50f34: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
50f3a: 4e5e unlk %fp
50f3c: 4e75 rts
if (inode)
*result = rtems_rfs_group_inode (fs, group, bit);
else
*result = rtems_rfs_group_block (&fs->groups[group], bit);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
printf ("rtems-rfs: group-bitmap-alloc: %s allocated: %" PRId32 "\n",
50f3e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
50f40: 203c 0007 10e4 movel #463076,%d0 <== NOT EXECUTED
50f46: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50f48: 4879 0007 1907 pea 71907 <_CPU_m68k_BFFFO_table+0x9f8> <== NOT EXECUTED
50f4e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50f54: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
inode ? "inode" : "block", *result);
return 0;
50f58: 4280 clrl %d0 <== NOT EXECUTED
50f5a: 60b8 bras 50f14 <rtems_rfs_group_bitmap_alloc+0x1ca><== NOT EXECUTED
00050f5c <rtems_rfs_group_bitmap_free>:
int
rtems_rfs_group_bitmap_free (rtems_rfs_file_system* fs,
bool inode,
rtems_rfs_bitmap_bit no)
{
50f5c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
50f60: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
unsigned int group;
rtems_rfs_bitmap_bit bit;
size_t size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
50f64: 2f3c 0002 0000 movel #131072,%sp@- <== NOT EXECUTED
int
rtems_rfs_group_bitmap_free (rtems_rfs_file_system* fs,
bool inode,
rtems_rfs_bitmap_bit no)
{
50f6a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
unsigned int group;
rtems_rfs_bitmap_bit bit;
size_t size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
50f6e: 42a7 clrl %sp@- <== NOT EXECUTED
int
rtems_rfs_group_bitmap_free (rtems_rfs_file_system* fs,
bool inode,
rtems_rfs_bitmap_bit no)
{
50f70: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
50f74: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED
unsigned int group;
rtems_rfs_bitmap_bit bit;
size_t size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
50f78: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
50f7e: 508f addql #8,%sp <== NOT EXECUTED
50f80: 4a00 tstb %d0 <== NOT EXECUTED
50f82: 6720 beqs 50fa4 <rtems_rfs_group_bitmap_free+0x48><== NOT EXECUTED
printf ("rtems-rfs: group-bitmap-free: %s free: %" PRId32 "\n",
50f84: 4a02 tstb %d2 <== NOT EXECUTED
50f86: 6700 009e beqw 51026 <rtems_rfs_group_bitmap_free+0xca><== NOT EXECUTED
50f8a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
50f8c: 203c 0007 1901 movel #465153,%d0 <== NOT EXECUTED
50f92: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50f94: 4879 0007 196c pea 7196c <_CPU_m68k_BFFFO_table+0xa5d> <== NOT EXECUTED
50f9a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50fa0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
inode ? "inode" : "block", no);
if (inode)
{
no -= RTEMS_RFS_ROOT_INO;
50fa4: 220b movel %a3,%d1 <== NOT EXECUTED
50fa6: 5381 subql #1,%d1 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
printf ("rtems-rfs: group-bitmap-free: %s free: %" PRId32 "\n",
inode ? "inode" : "block", no);
if (inode)
50fa8: 4a02 tstb %d2 <== NOT EXECUTED
50faa: 673e beqs 50fea <rtems_rfs_group_bitmap_free+0x8e><== NOT EXECUTED
group = no / size;
bit = (rtems_rfs_bitmap_bit) (no % size);
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
50fac: 744c moveq #76,%d2 <== NOT EXECUTED
no -= RTEMS_RFS_SUPERBLOCK_SIZE;
size = fs->group_blocks;
}
group = no / size;
bit = (rtems_rfs_bitmap_bit) (no % size);
50fae: 4c6a 1000 002c remul %a2@(44),%d0,%d1 <== NOT EXECUTED
50fb4: 4c6a 1001 002c remul %a2@(44),%d1,%d1 <== NOT EXECUTED
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
50fba: 266a 0020 moveal %a2@(32),%a3 <== NOT EXECUTED
50fbe: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_clear (bitmap, bit);
50fc2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
group = no / size;
bit = (rtems_rfs_bitmap_bit) (no % size);
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
50fc4: d7c1 addal %d1,%a3 <== NOT EXECUTED
50fc6: 47eb 002a lea %a3@(42),%a3 <== NOT EXECUTED
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_clear (bitmap, bit);
50fca: 2f0b movel %a3,%sp@- <== NOT EXECUTED
50fcc: 4eb9 0005 89be jsr 589be <rtems_rfs_bitmap_map_clear> <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, bitmap);
50fd2: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_clear (bitmap, bit);
50fd4: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, bitmap);
50fd6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
50fd8: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
return rc;
}
50fde: 2002 movel %d2,%d0 <== NOT EXECUTED
50fe0: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
50fe6: 4e5e unlk %fp <== NOT EXECUTED
50fe8: 4e75 rts <== NOT EXECUTED
bit = (rtems_rfs_bitmap_bit) (no % size);
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
50fea: 744c moveq #76,%d2 <== NOT EXECUTED
no -= RTEMS_RFS_SUPERBLOCK_SIZE;
size = fs->group_blocks;
}
group = no / size;
bit = (rtems_rfs_bitmap_bit) (no % size);
50fec: 4c6a 1000 0028 remul %a2@(40),%d0,%d1 <== NOT EXECUTED
50ff2: 4c6a 1001 0028 remul %a2@(40),%d1,%d1 <== NOT EXECUTED
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
50ff8: 266a 0020 moveal %a2@(32),%a3 <== NOT EXECUTED
50ffc: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED
rc = rtems_rfs_bitmap_map_clear (bitmap, bit);
51000: 2f00 movel %d0,%sp@- <== NOT EXECUTED
bit = (rtems_rfs_bitmap_bit) (no % size);
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
51002: d7c1 addal %d1,%a3 <== NOT EXECUTED
51004: 508b addql #8,%a3 <== NOT EXECUTED
rc = rtems_rfs_bitmap_map_clear (bitmap, bit);
51006: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51008: 4eb9 0005 89be jsr 589be <rtems_rfs_bitmap_map_clear> <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, bitmap);
5100e: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_clear (bitmap, bit);
51010: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, bitmap);
51012: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51014: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
return rc;
}
5101a: 2002 movel %d2,%d0 <== NOT EXECUTED
5101c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
51022: 4e5e unlk %fp <== NOT EXECUTED
51024: 4e75 rts <== NOT EXECUTED
rtems_rfs_bitmap_bit bit;
size_t size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
printf ("rtems-rfs: group-bitmap-free: %s free: %" PRId32 "\n",
51026: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51028: 203c 0007 10e4 movel #463076,%d0 <== NOT EXECUTED
5102e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
51030: 4879 0007 196c pea 7196c <_CPU_m68k_BFFFO_table+0xa5d> <== NOT EXECUTED
51036: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5103c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51040: 6000 ff62 braw 50fa4 <rtems_rfs_group_bitmap_free+0x48><== NOT EXECUTED
00051044 <rtems_rfs_group_bitmap_test>:
int
rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs,
bool inode,
rtems_rfs_bitmap_bit no,
bool* state)
{
51044: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
51048: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
unsigned int group;
rtems_rfs_bitmap_bit bit;
size_t size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
5104c: 2f3c 0002 0000 movel #131072,%sp@- <== NOT EXECUTED
int
rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs,
bool inode,
rtems_rfs_bitmap_bit no,
bool* state)
{
51052: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
unsigned int group;
rtems_rfs_bitmap_bit bit;
size_t size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
51056: 42a7 clrl %sp@- <== NOT EXECUTED
int
rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs,
bool inode,
rtems_rfs_bitmap_bit no,
bool* state)
{
51058: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
5105c: 162e 000f moveb %fp@(15),%d3 <== NOT EXECUTED
unsigned int group;
rtems_rfs_bitmap_bit bit;
size_t size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
51060: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
51066: 508f addql #8,%sp <== NOT EXECUTED
51068: 4a00 tstb %d0 <== NOT EXECUTED
5106a: 6720 beqs 5108c <rtems_rfs_group_bitmap_test+0x48><== NOT EXECUTED
printf ("rtems-rfs: group-bitmap-test: %s test: %" PRId32 "\n",
5106c: 4a03 tstb %d3 <== NOT EXECUTED
5106e: 6700 0082 beqw 510f2 <rtems_rfs_group_bitmap_test+0xae><== NOT EXECUTED
51072: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51074: 203c 0007 1901 movel #465153,%d0 <== NOT EXECUTED
5107a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5107c: 4879 0007 1998 pea 71998 <_CPU_m68k_BFFFO_table+0xa89> <== NOT EXECUTED
51082: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
51088: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
inode ? "inode" : "block", no);
if (inode)
5108c: 4a03 tstb %d3 <== NOT EXECUTED
5108e: 6718 beqs 510a8 <rtems_rfs_group_bitmap_test+0x64><== NOT EXECUTED
{
if ((no < RTEMS_RFS_ROOT_INO) || (no > rtems_rfs_fs_inodes (fs)))
51090: 4a82 tstl %d2 <== NOT EXECUTED
51092: 6f06 bles 5109a <rtems_rfs_group_bitmap_test+0x56><== NOT EXECUTED
51094: b4aa 0014 cmpl %a2@(20),%d2 <== NOT EXECUTED
51098: 6376 blss 51110 <rtems_rfs_group_bitmap_test+0xcc><== NOT EXECUTED
return EINVAL;
5109a: 7416 moveq #22,%d2 <== NOT EXECUTED
rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);
rtems_rfs_bitmap_release_buffer (fs, bitmap);
return rc;
}
5109c: 2002 movel %d2,%d0 <== NOT EXECUTED
5109e: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
510a4: 4e5e unlk %fp <== NOT EXECUTED
510a6: 4e75 rts <== NOT EXECUTED
no -= RTEMS_RFS_ROOT_INO;
size = fs->group_inodes;
}
else
{
if (no >= rtems_rfs_fs_blocks (fs))
510a8: b4aa 0004 cmpl %a2@(4),%d2 <== NOT EXECUTED
510ac: 64ec bccs 5109a <rtems_rfs_group_bitmap_test+0x56><== NOT EXECUTED
bit = (rtems_rfs_bitmap_bit) (no % size);
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
510ae: 266a 0020 moveal %a2@(32),%a3 <== NOT EXECUTED
510b2: 724c moveq #76,%d1 <== NOT EXECUTED
return EINVAL;
size = fs->group_blocks;
}
group = no / size;
bit = (rtems_rfs_bitmap_bit) (no % size);
510b4: 4c6a 2000 0028 remul %a2@(40),%d0,%d2 <== NOT EXECUTED
510ba: 4c6a 2002 0028 remul %a2@(40),%d2,%d2 <== NOT EXECUTED
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);
510c0: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
bit = (rtems_rfs_bitmap_bit) (no % size);
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
510c4: 4c01 2800 mulsl %d1,%d2 <== NOT EXECUTED
rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);
510c8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
bit = (rtems_rfs_bitmap_bit) (no % size);
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
510ca: d7c2 addal %d2,%a3 <== NOT EXECUTED
510cc: 508b addql #8,%a3 <== NOT EXECUTED
rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);
510ce: 2f0b movel %a3,%sp@- <== NOT EXECUTED
510d0: 4eb9 0005 8a42 jsr 58a42 <rtems_rfs_bitmap_map_test> <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, bitmap);
510d6: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);
510d8: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, bitmap);
510da: 2f0a movel %a2,%sp@- <== NOT EXECUTED
510dc: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
return rc;
510e2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
510e6: 2002 movel %d2,%d0 <== NOT EXECUTED
510e8: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
510ee: 4e5e unlk %fp <== NOT EXECUTED
510f0: 4e75 rts <== NOT EXECUTED
rtems_rfs_bitmap_bit bit;
size_t size;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))
printf ("rtems-rfs: group-bitmap-test: %s test: %" PRId32 "\n",
510f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
510f4: 203c 0007 10e4 movel #463076,%d0 <== NOT EXECUTED
510fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
510fc: 4879 0007 1998 pea 71998 <_CPU_m68k_BFFFO_table+0xa89> <== NOT EXECUTED
51102: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
51108: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5110c: 6000 ff7e braw 5108c <rtems_rfs_group_bitmap_test+0x48><== NOT EXECUTED
if (inode)
{
if ((no < RTEMS_RFS_ROOT_INO) || (no > rtems_rfs_fs_inodes (fs)))
return EINVAL;
no -= RTEMS_RFS_ROOT_INO;
51110: 5382 subql #1,%d2 <== NOT EXECUTED
group = no / size;
bit = (rtems_rfs_bitmap_bit) (no % size);
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
51112: 724c moveq #76,%d1 <== NOT EXECUTED
51114: 266a 0020 moveal %a2@(32),%a3 <== NOT EXECUTED
return EINVAL;
size = fs->group_blocks;
}
group = no / size;
bit = (rtems_rfs_bitmap_bit) (no % size);
51118: 4c6a 2000 002c remul %a2@(44),%d0,%d2 <== NOT EXECUTED
5111e: 4c6a 2002 002c remul %a2@(44),%d2,%d2 <== NOT EXECUTED
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);
51124: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
group = no / size;
bit = (rtems_rfs_bitmap_bit) (no % size);
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
51128: 4c01 2800 mulsl %d1,%d2 <== NOT EXECUTED
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);
5112c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
group = no / size;
bit = (rtems_rfs_bitmap_bit) (no % size);
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
5112e: d7c2 addal %d2,%a3 <== NOT EXECUTED
51130: 47eb 002a lea %a3@(42),%a3 <== NOT EXECUTED
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);
51134: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51136: 4eb9 0005 8a42 jsr 58a42 <rtems_rfs_bitmap_map_test> <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, bitmap);
5113c: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
if (inode)
bitmap = &fs->groups[group].inode_bitmap;
else
bitmap = &fs->groups[group].block_bitmap;
rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);
5113e: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, bitmap);
51140: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51142: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
return rc;
51148: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5114c: 6098 bras 510e6 <rtems_rfs_group_bitmap_test+0xa2><== NOT EXECUTED
00050c56 <rtems_rfs_group_close>:
int
rtems_rfs_group_close (rtems_rfs_file_system* fs, rtems_rfs_group* group)
{
50c56: 4e56 ffec linkw %fp,#-20
50c5a: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
int result = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_CLOSE))
50c5e: 2f3c 0001 0000 movel #65536,%sp@-
return 0;
}
int
rtems_rfs_group_close (rtems_rfs_file_system* fs, rtems_rfs_group* group)
{
50c64: 242e 0008 movel %fp@(8),%d2
int result = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_CLOSE))
50c68: 42a7 clrl %sp@-
return 0;
}
int
rtems_rfs_group_close (rtems_rfs_file_system* fs, rtems_rfs_group* group)
{
50c6a: 246e 000c moveal %fp@(12),%a2
int result = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_CLOSE))
50c6e: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
50c74: 508f addql #8,%sp
50c76: 4a00 tstb %d0
50c78: 665c bnes 50cd6 <rtems_rfs_group_close+0x80> <== NEVER TAKEN
/*
* We need to close as much as possible and also return any error if one
* occurs but this may result in one even more important error being lost but
* we cannot OR the errors together so this is a reasonable compromise.
*/
rc = rtems_rfs_bitmap_close (&group->inode_bitmap);
50c7a: 486a 002a pea %a2@(42)
50c7e: 49f9 0005 8d60 lea 58d60 <rtems_rfs_bitmap_close>,%a4
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
50c84: 47f9 0005 9fc0 lea 59fc0 <rtems_rfs_buffer_handle_release>,%a3
50c8a: 4e94 jsr %a4@
50c8c: 486a 0042 pea %a2@(66)
50c90: 2600 movel %d0,%d3
50c92: 2f02 movel %d2,%sp@-
50c94: 4e93 jsr %a3@
if (rc > 0)
result = rc;
rc = rtems_rfs_buffer_handle_close (fs, &group->inode_bitmap_buffer);
if (rc > 0)
result = rc;
rc = rtems_rfs_bitmap_close (&group->block_bitmap);
50c96: 486a 0008 pea %a2@(8)
handle->dirty = false;
50c9a: 4200 clrb %d0
handle->bnum = 0;
50c9c: 42aa 0044 clrl %a2@(68)
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
50ca0: 1540 0042 moveb %d0,%a2@(66)
handle->bnum = 0;
handle->buffer = NULL;
50ca4: 42aa 0048 clrl %a2@(72)
50ca8: 4e94 jsr %a4@
if (rc > 0)
50caa: 4fef 0010 lea %sp@(16),%sp
50cae: 4a80 tstl %d0
50cb0: 6f6c bles 50d1e <rtems_rfs_group_close+0xc8> <== ALWAYS TAKEN
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
50cb2: 486a 0020 pea %a2@(32) <== NOT EXECUTED
50cb6: 2600 movel %d0,%d3 <== NOT EXECUTED
50cb8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50cba: 4e93 jsr %a3@ <== NOT EXECUTED
handle->dirty = false;
50cbc: 4200 clrb %d0 <== NOT EXECUTED
50cbe: 1540 0020 moveb %d0,%a2@(32) <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);
if (rc > 0)
result = rc;
return result;
}
50cc2: 2003 movel %d3,%d0 <== NOT EXECUTED
handle->bnum = 0;
50cc4: 42aa 0022 clrl %a2@(34) <== NOT EXECUTED
handle->buffer = NULL;
50cc8: 42aa 0026 clrl %a2@(38) <== NOT EXECUTED
50ccc: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
50cd2: 4e5e unlk %fp <== NOT EXECUTED
50cd4: 4e75 rts <== NOT EXECUTED
{
int result = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_CLOSE))
printf ("rtems-rfs: group-close: base=%" PRId32 "\n", group->base);
50cd6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
/*
* We need to close as much as possible and also return any error if one
* occurs but this may result in one even more important error being lost but
* we cannot OR the errors together so this is a reasonable compromise.
*/
rc = rtems_rfs_bitmap_close (&group->inode_bitmap);
50cd8: 49f9 0005 8d60 lea 58d60 <rtems_rfs_bitmap_close>,%a4 <== NOT EXECUTED
{
int result = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_CLOSE))
printf ("rtems-rfs: group-close: base=%" PRId32 "\n", group->base);
50cde: 4879 0007 18df pea 718df <_CPU_m68k_BFFFO_table+0x9d0> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
50ce4: 47f9 0005 9fc0 lea 59fc0 <rtems_rfs_buffer_handle_release>,%a3<== NOT EXECUTED
50cea: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50cf0: 508f addql #8,%sp <== NOT EXECUTED
/*
* We need to close as much as possible and also return any error if one
* occurs but this may result in one even more important error being lost but
* we cannot OR the errors together so this is a reasonable compromise.
*/
rc = rtems_rfs_bitmap_close (&group->inode_bitmap);
50cf2: 486a 002a pea %a2@(42) <== NOT EXECUTED
50cf6: 4e94 jsr %a4@ <== NOT EXECUTED
50cf8: 486a 0042 pea %a2@(66) <== NOT EXECUTED
50cfc: 2600 movel %d0,%d3 <== NOT EXECUTED
50cfe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50d00: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc > 0)
result = rc;
rc = rtems_rfs_buffer_handle_close (fs, &group->inode_bitmap_buffer);
if (rc > 0)
result = rc;
rc = rtems_rfs_bitmap_close (&group->block_bitmap);
50d02: 486a 0008 pea %a2@(8) <== NOT EXECUTED
handle->dirty = false;
50d06: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
50d08: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
50d0c: 1540 0042 moveb %d0,%a2@(66) <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
50d10: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
50d14: 4e94 jsr %a4@ <== NOT EXECUTED
if (rc > 0)
50d16: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
50d1a: 4a80 tstl %d0 <== NOT EXECUTED
50d1c: 6e94 bgts 50cb2 <rtems_rfs_group_close+0x5c> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
50d1e: 486a 0020 pea %a2@(32)
50d22: 2003 movel %d3,%d0
50d24: 4680 notl %d0
50d26: d080 addl %d0,%d0
50d28: 9180 subxl %d0,%d0
50d2a: 2f02 movel %d2,%sp@-
50d2c: c680 andl %d0,%d3
50d2e: 4e93 jsr %a3@
handle->dirty = false;
50d30: 4200 clrb %d0
50d32: 1540 0020 moveb %d0,%a2@(32)
rc = rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);
if (rc > 0)
result = rc;
return result;
}
50d36: 2003 movel %d3,%d0
handle->bnum = 0;
50d38: 42aa 0022 clrl %a2@(34)
handle->buffer = NULL;
50d3c: 42aa 0026 clrl %a2@(38)
50d40: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
50d46: 4e5e unlk %fp <== NOT EXECUTED
000509cc <rtems_rfs_group_open>:
rtems_rfs_group_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_block base,
size_t size,
size_t inodes,
rtems_rfs_group* group)
{
509cc: 4e56 ffdc linkw %fp,#-36
509d0: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
509d4: 266e 0008 moveal %fp@(8),%a3
509d8: 262e 000c movel %fp@(12),%d3
509dc: 242e 0010 movel %fp@(16),%d2
509e0: 246e 0018 moveal %fp@(24),%a2
int rc;
if (base >= rtems_rfs_fs_blocks (fs))
509e4: 202b 0004 movel %a3@(4),%d0
509e8: b680 cmpl %d0,%d3
509ea: 6400 01de bccw 50bca <rtems_rfs_group_open+0x1fe>
printf ("rtems-rfs: group-open: base outside file system range: %d: %s\n",
EIO, strerror (EIO));
return EIO;
}
if ((base + size) >= rtems_rfs_fs_blocks (fs))
509ee: 2202 movel %d2,%d1
509f0: d283 addl %d3,%d1
509f2: b280 cmpl %d0,%d1
509f4: 6504 bcss 509fa <rtems_rfs_group_open+0x2e> <== NEVER TAKEN
size = rtems_rfs_fs_blocks (fs) - base;
509f6: 2400 movel %d0,%d2
509f8: 9483 subl %d3,%d2
509fa: 2c02 movel %d2,%d6
509fc: b4ae 0014 cmpl %fp@(20),%d2
50a00: 6200 008e bhiw 50a90 <rtems_rfs_group_open+0xc4>
* the format configuration needs reviewing.
*/
if (inodes > size)
inodes = size;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
50a04: 49f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a4 <== NOT EXECUTED
50a0a: 2f3c 0000 8000 movel #32768,%sp@- <== NOT EXECUTED
50a10: 42a7 clrl %sp@- <== NOT EXECUTED
50a12: 4e94 jsr %a4@ <== NOT EXECUTED
50a14: 508f addql #8,%sp <== NOT EXECUTED
50a16: 4a00 tstb %d0 <== NOT EXECUTED
50a18: 6600 0092 bnew 50aac <rtems_rfs_group_open+0xe0> <== NOT EXECUTED
printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,
50a1c: 2f03 movel %d3,%sp@-
50a1e: 280a movel %a2,%d4
50a20: 0684 0000 0020 addil #32,%d4
50a26: 2a0a movel %a2,%d5
50a28: 5085 addql #8,%d5
50a2a: 4bf9 0005 8cfc lea 58cfc <rtems_rfs_bitmap_open>,%a5
50a30: 2f02 movel %d2,%sp@-
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
50a32: 4200 clrb %d0
50a34: 2f04 movel %d4,%sp@-
50a36: 1540 0020 moveb %d0,%a2@(32)
50a3a: 2f0b movel %a3,%sp@-
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
base, size, inodes);
group->base = base;
group->size = size;
50a3c: 2542 0004 movel %d2,%a2@(4)
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
base, size, inodes);
group->base = base;
50a40: 2483 movel %d3,%a2@
handle->bnum = 0;
50a42: 42aa 0022 clrl %a2@(34)
handle->buffer = NULL;
50a46: 42aa 0026 clrl %a2@(38)
printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,
50a4a: 2f05 movel %d5,%sp@-
50a4c: 4e95 jsr %a5@
&group->block_bitmap_buffer, size,
group->base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
if (rc > 0)
50a4e: 4fef 0014 lea %sp@(20),%sp
printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,
50a52: 2400 movel %d0,%d2
&group->block_bitmap_buffer, size,
group->base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
if (rc > 0)
50a54: 6f00 00a8 blew 50afe <rtems_rfs_group_open+0x132>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
50a58: 2f04 movel %d4,%sp@- <== NOT EXECUTED
50a5a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
50a5c: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
50a62: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
50a64: 42aa 0022 clrl %a2@(34) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
50a68: 1540 0020 moveb %d0,%a2@(32) <== NOT EXECUTED
{
rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
50a6c: 2f3c 0000 8000 movel #32768,%sp@- <== NOT EXECUTED
50a72: 42a7 clrl %sp@- <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
50a74: 42aa 0026 clrl %a2@(38) <== NOT EXECUTED
50a78: 4e94 jsr %a4@ <== NOT EXECUTED
50a7a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
50a7e: 4a00 tstb %d0 <== NOT EXECUTED
50a80: 6600 0120 bnew 50ba2 <rtems_rfs_group_open+0x1d6> <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);
rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);
}
return 0;
}
50a84: 2002 movel %d2,%d0 <== NOT EXECUTED
50a86: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
50a8c: 4e5e unlk %fp <== NOT EXECUTED
50a8e: 4e75 rts <== NOT EXECUTED
50a90: 2c2e 0014 movel %fp@(20),%d6
* the format configuration needs reviewing.
*/
if (inodes > size)
inodes = size;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
50a94: 49f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a4
50a9a: 2f3c 0000 8000 movel #32768,%sp@-
50aa0: 42a7 clrl %sp@-
50aa2: 4e94 jsr %a4@
50aa4: 508f addql #8,%sp
50aa6: 4a00 tstb %d0
50aa8: 6700 ff72 beqw 50a1c <rtems_rfs_group_open+0x50>
printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
50aac: 2f06 movel %d6,%sp@- <== NOT EXECUTED
printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,
50aae: 280a movel %a2,%d4 <== NOT EXECUTED
50ab0: 0684 0000 0020 addil #32,%d4 <== NOT EXECUTED
50ab6: 2a0a movel %a2,%d5 <== NOT EXECUTED
50ab8: 5085 addql #8,%d5 <== NOT EXECUTED
50aba: 4bf9 0005 8cfc lea 58cfc <rtems_rfs_bitmap_open>,%a5 <== NOT EXECUTED
*/
if (inodes > size)
inodes = size;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
50ac0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50ac2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
50ac4: 4879 0007 182f pea 7182f <_CPU_m68k_BFFFO_table+0x920> <== NOT EXECUTED
50aca: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50ad0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,
50ad4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
50ad6: 4200 clrb %d0 <== NOT EXECUTED
50ad8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50ada: 2f04 movel %d4,%sp@- <== NOT EXECUTED
50adc: 1540 0020 moveb %d0,%a2@(32) <== NOT EXECUTED
50ae0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
base, size, inodes);
group->base = base;
group->size = size;
50ae2: 2542 0004 movel %d2,%a2@(4) <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
base, size, inodes);
group->base = base;
50ae6: 2483 movel %d3,%a2@ <== NOT EXECUTED
handle->bnum = 0;
50ae8: 42aa 0022 clrl %a2@(34) <== NOT EXECUTED
handle->buffer = NULL;
50aec: 42aa 0026 clrl %a2@(38) <== NOT EXECUTED
printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,
50af0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
50af2: 4e95 jsr %a5@ <== NOT EXECUTED
&group->block_bitmap_buffer, size,
group->base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
if (rc > 0)
50af4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,
50af8: 2400 movel %d0,%d2 <== NOT EXECUTED
&group->block_bitmap_buffer, size,
group->base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
if (rc > 0)
50afa: 6e00 ff5c bgtw 50a58 <rtems_rfs_group_open+0x8c> <== NOT EXECUTED
printf ("rtems-rfs: group-open: could not open inode bitmap handle: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_bitmap_open (&group->inode_bitmap, fs,
50afe: 2012 movel %a2@,%d0
50b00: 5280 addql #1,%d0
50b02: 260a movel %a2,%d3
50b04: 0683 0000 0042 addil #66,%d3
50b0a: 2f00 movel %d0,%sp@-
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
50b0c: 4200 clrb %d0
50b0e: 1540 0042 moveb %d0,%a2@(66)
50b12: 2f06 movel %d6,%sp@-
50b14: 2f03 movel %d3,%sp@-
50b16: 2f0b movel %a3,%sp@-
50b18: 486a 002a pea %a2@(42)
handle->bnum = 0;
50b1c: 42aa 0044 clrl %a2@(68)
handle->buffer = NULL;
50b20: 42aa 0048 clrl %a2@(72)
50b24: 4e95 jsr %a5@
&group->inode_bitmap_buffer, inodes,
group->base + RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
if (rc > 0)
50b26: 4fef 0014 lea %sp@(20),%sp
printf ("rtems-rfs: group-open: could not open inode bitmap handle: %d: %s\n",
rc, strerror (rc));
return rc;
}
rc = rtems_rfs_bitmap_open (&group->inode_bitmap, fs,
50b2a: 2400 movel %d0,%d2
&group->inode_bitmap_buffer, inodes,
group->base + RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
if (rc > 0)
50b2c: 6f00 00be blew 50bec <rtems_rfs_group_open+0x220>
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
50b30: 2f03 movel %d3,%sp@- <== NOT EXECUTED
50b32: 4bf9 0005 9fc0 lea 59fc0 <rtems_rfs_buffer_handle_release>,%a5<== NOT EXECUTED
50b38: 2f0b movel %a3,%sp@- <== NOT EXECUTED
50b3a: 4e95 jsr %a5@ <== NOT EXECUTED
handle->dirty = false;
50b3c: 4200 clrb %d0 <== NOT EXECUTED
50b3e: 1540 0042 moveb %d0,%a2@(66) <== NOT EXECUTED
{
rtems_rfs_buffer_handle_close (fs, &group->inode_bitmap_buffer);
rtems_rfs_bitmap_close (&group->block_bitmap);
50b42: 2f05 movel %d5,%sp@- <== NOT EXECUTED
handle->bnum = 0;
50b44: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
handle->buffer = NULL;
50b48: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
50b4c: 4eb9 0005 8d60 jsr 58d60 <rtems_rfs_bitmap_close> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
50b52: 2f04 movel %d4,%sp@- <== NOT EXECUTED
50b54: 2f0b movel %a3,%sp@- <== NOT EXECUTED
50b56: 4e95 jsr %a5@ <== NOT EXECUTED
handle->dirty = false;
50b58: 4200 clrb %d0 <== NOT EXECUTED
handle->bnum = 0;
50b5a: 42aa 0022 clrl %a2@(34) <== NOT EXECUTED
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
handle->dirty = false;
50b5e: 1540 0020 moveb %d0,%a2@(32) <== NOT EXECUTED
rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
50b62: 2f3c 0000 8000 movel #32768,%sp@- <== NOT EXECUTED
50b68: 42a7 clrl %sp@- <== NOT EXECUTED
handle->bnum = 0;
handle->buffer = NULL;
50b6a: 42aa 0026 clrl %a2@(38) <== NOT EXECUTED
50b6e: 4e94 jsr %a4@ <== NOT EXECUTED
50b70: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
50b74: 4a00 tstb %d0 <== NOT EXECUTED
50b76: 6700 ff0c beqw 50a84 <rtems_rfs_group_open+0xb8> <== NOT EXECUTED
printf ("rtems-rfs: group-open: could not open inode bitmap: %d: %s\n",
50b7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50b7c: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
50b82: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50b84: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50b86: 4879 0007 18a3 pea 718a3 <_CPU_m68k_BFFFO_table+0x994> <== NOT EXECUTED
50b8c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50b92: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);
rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);
}
return 0;
}
50b96: 2002 movel %d2,%d0 <== NOT EXECUTED
50b98: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
50b9e: 4e5e unlk %fp <== NOT EXECUTED
50ba0: 4e75 rts <== NOT EXECUTED
group->base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
if (rc > 0)
{
rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
printf ("rtems-rfs: group-open: could not open block bitmap: %d: %s\n",
50ba2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50ba4: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
50baa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50bac: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50bae: 4879 0007 1867 pea 71867 <_CPU_m68k_BFFFO_table+0x958> <== NOT EXECUTED
50bb4: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50bba: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);
rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);
}
return 0;
}
50bbe: 2002 movel %d2,%d0 <== NOT EXECUTED
50bc0: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
50bc6: 4e5e unlk %fp <== NOT EXECUTED
50bc8: 4e75 rts <== NOT EXECUTED
{
int rc;
if (base >= rtems_rfs_fs_blocks (fs))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
50bca: 2f3c 0000 8000 movel #32768,%sp@- <== NOT EXECUTED
50bd0: 42a7 clrl %sp@- <== NOT EXECUTED
50bd2: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
50bd8: 508f addql #8,%sp <== NOT EXECUTED
50bda: 4a00 tstb %d0 <== NOT EXECUTED
50bdc: 6622 bnes 50c00 <rtems_rfs_group_open+0x234> <== NOT EXECUTED
printf ("rtems-rfs: group-open: base outside file system range: %d: %s\n",
EIO, strerror (EIO));
return EIO;
50bde: 7405 moveq #5,%d2 <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);
rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);
}
return 0;
}
50be0: 2002 movel %d2,%d0 <== NOT EXECUTED
50be2: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
50be8: 4e5e unlk %fp <== NOT EXECUTED
50bea: 4e75 rts <== NOT EXECUTED
printf ("rtems-rfs: group-open: could not open inode bitmap: %d: %s\n",
rc, strerror (rc));
return rc;
}
if (rtems_rfs_fs_release_bitmaps (fs))
50bec: 7001 moveq #1,%d0
50bee: c093 andl %a3@,%d0
50bf0: 673c beqs 50c2e <rtems_rfs_group_open+0x262> <== ALWAYS TAKEN
{
rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);
rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);
}
return 0;
50bf2: 4282 clrl %d2 <== NOT EXECUTED
}
50bf4: 2002 movel %d2,%d0 <== NOT EXECUTED
50bf6: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
50bfc: 4e5e unlk %fp <== NOT EXECUTED
50bfe: 4e75 rts <== NOT EXECUTED
int rc;
if (base >= rtems_rfs_fs_blocks (fs))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
printf ("rtems-rfs: group-open: base outside file system range: %d: %s\n",
50c00: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
EIO, strerror (EIO));
return EIO;
50c04: 7405 moveq #5,%d2 <== NOT EXECUTED
int rc;
if (base >= rtems_rfs_fs_blocks (fs))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
printf ("rtems-rfs: group-open: base outside file system range: %d: %s\n",
50c06: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
50c0c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50c0e: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
50c12: 4879 0007 17f0 pea 717f0 <_CPU_m68k_BFFFO_table+0x8e1> <== NOT EXECUTED
50c18: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
50c1e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);
rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);
}
return 0;
}
50c22: 2002 movel %d2,%d0 <== NOT EXECUTED
50c24: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
50c2a: 4e5e unlk %fp <== NOT EXECUTED
50c2c: 4e75 rts <== NOT EXECUTED
return rc;
}
if (rtems_rfs_fs_release_bitmaps (fs))
{
rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);
50c2e: 2f2a 0008 movel %a2@(8),%sp@-
50c32: 49f9 0005 9fc0 lea 59fc0 <rtems_rfs_buffer_handle_release>,%a4
rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);
}
return 0;
50c38: 4282 clrl %d2
return rc;
}
if (rtems_rfs_fs_release_bitmaps (fs))
{
rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);
50c3a: 2f0b movel %a3,%sp@-
50c3c: 4e94 jsr %a4@
rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);
50c3e: 2f2a 002a movel %a2@(42),%sp@-
50c42: 2f0b movel %a3,%sp@-
50c44: 4e94 jsr %a4@
50c46: 4fef 0010 lea %sp@(16),%sp
}
return 0;
}
50c4a: 2002 movel %d2,%d0
50c4c: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
50c52: 4e5e unlk %fp <== NOT EXECUTED
0005114e <rtems_rfs_group_usage>:
int
rtems_rfs_group_usage (rtems_rfs_file_system* fs,
size_t* blocks,
size_t* inodes)
{
5114e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
51152: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
51156: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51158: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
5115c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5115e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int g;
*blocks = 0;
*inodes = 0;
for (g = 0; g < fs->group_count; g++)
51162: 222b 0024 movel %a3@(36),%d1 <== NOT EXECUTED
size_t* blocks,
size_t* inodes)
{
int g;
*blocks = 0;
51166: 4292 clrl %a2@ <== NOT EXECUTED
*inodes = 0;
51168: 4291 clrl %a1@ <== NOT EXECUTED
for (g = 0; g < fs->group_count; g++)
5116a: 4a81 tstl %d1 <== NOT EXECUTED
5116c: 6f2e bles 5119c <rtems_rfs_group_usage+0x4e> <== NOT EXECUTED
return rc;
}
int
rtems_rfs_group_usage (rtems_rfs_file_system* fs,
5116e: 704c moveq #76,%d0 <== NOT EXECUTED
51170: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
51174: 206b 0020 moveal %a3@(32),%a0 <== NOT EXECUTED
51178: 41e8 0014 lea %a0@(20),%a0 <== NOT EXECUTED
5117c: d288 addl %a0,%d1 <== NOT EXECUTED
for (g = 0; g < fs->group_count; g++)
{
rtems_rfs_group* group = &fs->groups[g];
*blocks +=
rtems_rfs_bitmap_map_size(&group->block_bitmap) -
5117e: 2010 movel %a0@,%d0 <== NOT EXECUTED
51180: d092 addl %a2@,%d0 <== NOT EXECUTED
*inodes = 0;
for (g = 0; g < fs->group_count; g++)
{
rtems_rfs_group* group = &fs->groups[g];
*blocks +=
51182: 90a8 0004 subl %a0@(4),%d0 <== NOT EXECUTED
51186: 2480 movel %d0,%a2@ <== NOT EXECUTED
rtems_rfs_bitmap_map_size(&group->block_bitmap) -
rtems_rfs_bitmap_map_free (&group->block_bitmap);
*inodes +=
rtems_rfs_bitmap_map_size (&group->inode_bitmap) -
51188: 2028 0022 movel %a0@(34),%d0 <== NOT EXECUTED
5118c: d091 addl %a1@,%d0 <== NOT EXECUTED
{
rtems_rfs_group* group = &fs->groups[g];
*blocks +=
rtems_rfs_bitmap_map_size(&group->block_bitmap) -
rtems_rfs_bitmap_map_free (&group->block_bitmap);
*inodes +=
5118e: 90a8 0026 subl %a0@(38),%d0 <== NOT EXECUTED
51192: 41e8 004c lea %a0@(76),%a0 <== NOT EXECUTED
51196: 2280 movel %d0,%a1@ <== NOT EXECUTED
int g;
*blocks = 0;
*inodes = 0;
for (g = 0; g < fs->group_count; g++)
51198: b288 cmpl %a0,%d1 <== NOT EXECUTED
5119a: 66e2 bnes 5117e <rtems_rfs_group_usage+0x30> <== NOT EXECUTED
*inodes +=
rtems_rfs_bitmap_map_size (&group->inode_bitmap) -
rtems_rfs_bitmap_map_free (&group->inode_bitmap);
}
if (*blocks > rtems_rfs_fs_blocks (fs))
5119c: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED
511a0: b092 cmpl %a2@,%d0 <== NOT EXECUTED
511a2: 6402 bccs 511a6 <rtems_rfs_group_usage+0x58> <== NOT EXECUTED
*blocks = rtems_rfs_fs_blocks (fs);
511a4: 2480 movel %d0,%a2@ <== NOT EXECUTED
if (*inodes > rtems_rfs_fs_inodes (fs))
511a6: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED
511aa: b091 cmpl %a1@,%d0 <== NOT EXECUTED
511ac: 6402 bccs 511b0 <rtems_rfs_group_usage+0x62> <== NOT EXECUTED
*inodes = rtems_rfs_fs_inodes (fs);
511ae: 2280 movel %d0,%a1@ <== NOT EXECUTED
return 0;
}
511b0: 245f moveal %sp@+,%a2 <== NOT EXECUTED
511b2: 4280 clrl %d0 <== NOT EXECUTED
511b4: 265f moveal %sp@+,%a3 <== NOT EXECUTED
511b6: 4e5e unlk %fp <== NOT EXECUTED
...
000514a2 <rtems_rfs_inode_close>:
}
int
rtems_rfs_inode_close (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* handle)
{
514a2: 4e56 0000 linkw %fp,#0
514a6: 2f0b movel %a3,%sp@-
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))
514a8: 47f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a3
}
int
rtems_rfs_inode_close (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* handle)
{
514ae: 2f0a movel %a2,%sp@-
514b0: 246e 000c moveal %fp@(12),%a2
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))
514b4: 2f3c 0008 0000 movel #524288,%sp@-
514ba: 42a7 clrl %sp@-
514bc: 4e93 jsr %a3@
514be: 508f addql #8,%sp
514c0: 4a00 tstb %d0
514c2: 6640 bnes 51504 <rtems_rfs_inode_close+0x62> <== NEVER TAKEN
printf ("rtems-rfs: inode-close: ino: %" PRIu32 "\n", handle->ino);
rc = rtems_rfs_inode_unload (fs, handle, true);
514c4: 4878 0001 pea 1 <ADD>
514c8: 2f0a movel %a2,%sp@-
514ca: 2f2e 0008 movel %fp@(8),%sp@-
514ce: 4eb9 0005 1384 jsr 51384 <rtems_rfs_inode_unload>
if ((rc == 0) && (handle->loads > 0))
514d4: 4fef 000c lea %sp@(12),%sp
514d8: 4a80 tstl %d0
514da: 6618 bnes 514f4 <rtems_rfs_inode_close+0x52> <== NEVER TAKEN
514dc: 4aaa 0022 tstl %a2@(34)
514e0: 6f12 bles 514f4 <rtems_rfs_inode_close+0x52> <== ALWAYS TAKEN
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))
514e2: 2f3c 0008 0000 movel #524288,%sp@- <== NOT EXECUTED
514e8: 42a7 clrl %sp@- <== NOT EXECUTED
514ea: 4e93 jsr %a3@ <== NOT EXECUTED
514ec: 508f addql #8,%sp <== NOT EXECUTED
514ee: 4a00 tstb %d0 <== NOT EXECUTED
514f0: 6626 bnes 51518 <rtems_rfs_inode_close+0x76> <== NOT EXECUTED
printf ("rtems-rfs: inode-close: bad loads number: %d\n",
handle->loads);
rc = EIO;
514f2: 7005 moveq #5,%d0 <== NOT EXECUTED
}
handle->ino = 0;
514f4: 42aa 0008 clrl %a2@(8)
return rc;
}
514f8: 246e fff8 moveal %fp@(-8),%a2
514fc: 266e fffc moveal %fp@(-4),%a3
51500: 4e5e unlk %fp
51502: 4e75 rts
rtems_rfs_inode_handle* handle)
{
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))
printf ("rtems-rfs: inode-close: ino: %" PRIu32 "\n", handle->ino);
51504: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
51508: 4879 0007 1a51 pea 71a51 <_CPU_m68k_BFFFO_table+0xb42> <== NOT EXECUTED
5150e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
51514: 508f addql #8,%sp <== NOT EXECUTED
51516: 60ac bras 514c4 <rtems_rfs_inode_close+0x22> <== NOT EXECUTED
rc = rtems_rfs_inode_unload (fs, handle, true);
if ((rc == 0) && (handle->loads > 0))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))
printf ("rtems-rfs: inode-close: bad loads number: %d\n",
51518: 2f2a 0022 movel %a2@(34),%sp@- <== NOT EXECUTED
5151c: 4879 0007 1a73 pea 71a73 <_CPU_m68k_BFFFO_table+0xb64> <== NOT EXECUTED
51522: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
rc = EIO;
}
handle->ino = 0;
return rc;
}
51528: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
rc = rtems_rfs_inode_unload (fs, handle, true);
if ((rc == 0) && (handle->loads > 0))
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))
printf ("rtems-rfs: inode-close: bad loads number: %d\n",
5152c: 508f addql #8,%sp <== NOT EXECUTED
handle->loads);
rc = EIO;
5152e: 7005 moveq #5,%d0 <== NOT EXECUTED
}
handle->ino = 0;
51530: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
return rc;
}
51534: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
51538: 4e5e unlk %fp <== NOT EXECUTED
0005188e <rtems_rfs_inode_create>:
uint16_t mode,
uint16_t links,
uid_t uid,
gid_t gid,
rtems_rfs_ino* ino)
{
5188e: 4e56 ff88 linkw %fp,#-120 <== NOT EXECUTED
51892: 306e 001e moveaw %fp@(30),%a0 <== NOT EXECUTED
51896: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_rfs_inode_handle parent_inode;
rtems_rfs_inode_handle inode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))
5189a: 2f3c 0040 0000 movel #4194304,%sp@- <== NOT EXECUTED
uint16_t mode,
uint16_t links,
uid_t uid,
gid_t gid,
rtems_rfs_ino* ino)
{
518a0: 282e 0018 movel %fp@(24),%d4 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))
{
const char* type = "unknown";
int c;
if (RTEMS_RFS_S_ISDIR (mode))
518a4: 2604 movel %d4,%d3 <== NOT EXECUTED
uint16_t mode,
uint16_t links,
uid_t uid,
gid_t gid,
rtems_rfs_ino* ino)
{
518a6: 3d48 ffb2 movew %a0,%fp@(-78) <== NOT EXECUTED
518aa: 306e 0022 moveaw %fp@(34),%a0 <== NOT EXECUTED
rtems_rfs_inode_handle parent_inode;
rtems_rfs_inode_handle inode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))
518ae: 42a7 clrl %sp@- <== NOT EXECUTED
uint16_t mode,
uint16_t links,
uid_t uid,
gid_t gid,
rtems_rfs_ino* ino)
{
518b0: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
518b4: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED
518b8: 3d48 ffb0 movew %a0,%fp@(-80) <== NOT EXECUTED
518bc: 3a6e 0026 moveaw %fp@(38),%a5 <== NOT EXECUTED
rtems_rfs_inode_handle parent_inode;
rtems_rfs_inode_handle inode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))
518c0: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
518c6: 508f addql #8,%sp <== NOT EXECUTED
uint16_t mode,
uint16_t links,
uid_t uid,
gid_t gid,
rtems_rfs_ino* ino)
{
518c8: 3a04 movew %d4,%d5 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))
{
const char* type = "unknown";
int c;
if (RTEMS_RFS_S_ISDIR (mode))
518ca: 0283 0000 f000 andil #61440,%d3 <== NOT EXECUTED
{
rtems_rfs_inode_handle parent_inode;
rtems_rfs_inode_handle inode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))
518d0: 4a00 tstb %d0 <== NOT EXECUTED
518d2: 6700 008a beqw 5195e <rtems_rfs_inode_create+0xd0> <== NOT EXECUTED
{
const char* type = "unknown";
int c;
if (RTEMS_RFS_S_ISDIR (mode))
518d6: 0c83 0000 4000 cmpil #16384,%d3 <== NOT EXECUTED
518dc: 6700 0118 beqw 519f6 <rtems_rfs_inode_create+0x168> <== NOT EXECUTED
type = "dir";
else if (RTEMS_RFS_S_ISCHR (mode))
518e0: 0c83 0000 2000 cmpil #8192,%d3 <== NOT EXECUTED
518e6: 6700 0122 beqw 51a0a <rtems_rfs_inode_create+0x17c> <== NOT EXECUTED
type = "char";
else if (RTEMS_RFS_S_ISBLK (mode))
518ea: 0c83 0000 6000 cmpil #24576,%d3 <== NOT EXECUTED
518f0: 6700 010e beqw 51a00 <rtems_rfs_inode_create+0x172> <== NOT EXECUTED
type = "block";
else if (RTEMS_RFS_S_ISREG (mode))
518f4: 0c83 0000 8000 cmpil #32768,%d3 <== NOT EXECUTED
518fa: 6700 0118 beqw 51a14 <rtems_rfs_inode_create+0x186> <== NOT EXECUTED
rtems_rfs_inode_handle inode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))
{
const char* type = "unknown";
518fe: 2c3c 0007 1ad6 movel #465622,%d6 <== NOT EXECUTED
type = "char";
else if (RTEMS_RFS_S_ISBLK (mode))
type = "block";
else if (RTEMS_RFS_S_ISREG (mode))
type = "file";
else if (RTEMS_RFS_S_ISLNK (mode))
51904: 0c83 0000 a000 cmpil #40960,%d3 <== NOT EXECUTED
5190a: 6700 0112 beqw 51a1e <rtems_rfs_inode_create+0x190> <== NOT EXECUTED
type = "link";
printf("rtems-rfs: inode-create: parent:%" PRIu32 " name:", parent);
5190e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
51912: 49f9 0006 16ec lea 616ec <printf>,%a4 <== NOT EXECUTED
51918: 4879 0007 1ade pea 71ade <_CPU_m68k_BFFFO_table+0xbcf> <== NOT EXECUTED
5191e: 4e94 jsr %a4@ <== NOT EXECUTED
for (c = 0; c < length; c++)
51920: 508f addql #8,%sp <== NOT EXECUTED
51922: 4a82 tstl %d2 <== NOT EXECUTED
51924: 671e beqs 51944 <rtems_rfs_inode_create+0xb6> <== NOT EXECUTED
51926: 4280 clrl %d0 <== NOT EXECUTED
51928: 4287 clrl %d7 <== NOT EXECUTED
5192a: 47f9 0006 187c lea 6187c <putchar>,%a3 <== NOT EXECUTED
51930: 5287 addql #1,%d7 <== NOT EXECUTED
printf ("%c", name[c]);
51932: 1032 0800 moveb %a2@(00000000,%d0:l),%d0 <== NOT EXECUTED
51936: 49c0 extbl %d0 <== NOT EXECUTED
51938: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5193a: 4e93 jsr %a3@ <== NOT EXECUTED
else if (RTEMS_RFS_S_ISREG (mode))
type = "file";
else if (RTEMS_RFS_S_ISLNK (mode))
type = "link";
printf("rtems-rfs: inode-create: parent:%" PRIu32 " name:", parent);
for (c = 0; c < length; c++)
5193c: 588f addql #4,%sp <== NOT EXECUTED
5193e: 2007 movel %d7,%d0 <== NOT EXECUTED
51940: b487 cmpl %d7,%d2 <== NOT EXECUTED
51942: 66ec bnes 51930 <rtems_rfs_inode_create+0xa2> <== NOT EXECUTED
printf ("%c", name[c]);
printf (" type:%s mode:%04x (%03o)\n", type, mode, mode & ((1 << 10) - 1));
51944: 0284 0000 03ff andil #1023,%d4 <== NOT EXECUTED
5194a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5194c: 3f05 movew %d5,%sp@- <== NOT EXECUTED
5194e: 4267 clrw %sp@- <== NOT EXECUTED
51950: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51952: 4879 0007 1b08 pea 71b08 <_CPU_m68k_BFFFO_table+0xbf9> <== NOT EXECUTED
51958: 4e94 jsr %a4@ <== NOT EXECUTED
5195a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
/*
* The file type is field within the mode. Check we have a sane mode set.
*/
switch (mode & RTEMS_RFS_S_IFMT)
5195e: 0c83 0000 6000 cmpil #24576,%d3 <== NOT EXECUTED
51964: 6730 beqs 51996 <rtems_rfs_inode_create+0x108> <== NOT EXECUTED
51966: 631e blss 51986 <rtems_rfs_inode_create+0xf8> <== NOT EXECUTED
51968: 0c83 0000 8000 cmpil #32768,%d3 <== NOT EXECUTED
5196e: 6726 beqs 51996 <rtems_rfs_inode_create+0x108> <== NOT EXECUTED
51970: 0c83 0000 a000 cmpil #40960,%d3 <== NOT EXECUTED
51976: 671e beqs 51996 <rtems_rfs_inode_create+0x108> <== NOT EXECUTED
case RTEMS_RFS_S_IFBLK:
case RTEMS_RFS_S_IFREG:
case RTEMS_RFS_S_IFLNK:
break;
default:
return EINVAL;
51978: 7816 moveq #22,%d4 <== NOT EXECUTED
rtems_rfs_inode_free (fs, *ino);
return rc;
}
return 0;
}
5197a: 2004 movel %d4,%d0 <== NOT EXECUTED
5197c: 4cee 3cfc ff88 moveml %fp@(-120),%d2-%d7/%a2-%a5 <== NOT EXECUTED
51982: 4e5e unlk %fp <== NOT EXECUTED
51984: 4e75 rts <== NOT EXECUTED
}
/*
* The file type is field within the mode. Check we have a sane mode set.
*/
switch (mode & RTEMS_RFS_S_IFMT)
51986: 0c83 0000 2000 cmpil #8192,%d3 <== NOT EXECUTED
5198c: 6708 beqs 51996 <rtems_rfs_inode_create+0x108> <== NOT EXECUTED
5198e: 0c83 0000 4000 cmpil #16384,%d3 <== NOT EXECUTED
51994: 66e2 bnes 51978 <rtems_rfs_inode_create+0xea> <== NOT EXECUTED
break;
default:
return EINVAL;
}
rc = rtems_rfs_inode_alloc (fs, parent, ino);
51996: 2f2e 0028 movel %fp@(40),%sp@- <== NOT EXECUTED
5199a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5199e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
519a2: 4eb9 0005 11bc jsr 511bc <rtems_rfs_inode_alloc> <== NOT EXECUTED
if (rc > 0)
519a8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
break;
default:
return EINVAL;
}
rc = rtems_rfs_inode_alloc (fs, parent, ino);
519ac: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
519ae: 6eca bgts 5197a <rtems_rfs_inode_create+0xec> <== NOT EXECUTED
return rc;
rc = rtems_rfs_inode_open (fs, *ino, &inode, true);
519b0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
519b4: 2c0e movel %fp,%d6 <== NOT EXECUTED
519b6: 0686 ffff ffda addil #-38,%d6 <== NOT EXECUTED
519bc: 47f9 0005 12b4 lea 512b4 <rtems_rfs_inode_open>,%a3 <== NOT EXECUTED
519c2: 206e 0028 moveal %fp@(40),%a0 <== NOT EXECUTED
519c6: 2f06 movel %d6,%sp@- <== NOT EXECUTED
519c8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
519ca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
519ce: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc > 0)
519d0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc = rtems_rfs_inode_alloc (fs, parent, ino);
if (rc > 0)
return rc;
rc = rtems_rfs_inode_open (fs, *ino, &inode, true);
519d4: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
519d6: 6f50 bles 51a28 <rtems_rfs_inode_create+0x19a> <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (fs, &inode);
if (rc > 0)
{
rtems_rfs_inode_free (fs, *ino);
519d8: 206e 0028 moveal %fp@(40),%a0 <== NOT EXECUTED
519dc: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
519de: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
519e2: 4eb9 0005 11e2 jsr 511e2 <rtems_rfs_inode_free> <== NOT EXECUTED
519e8: 508f addql #8,%sp <== NOT EXECUTED
return rc;
}
return 0;
}
519ea: 2004 movel %d4,%d0 <== NOT EXECUTED
519ec: 4cee 3cfc ff88 moveml %fp@(-120),%d2-%d7/%a2-%a5 <== NOT EXECUTED
519f2: 4e5e unlk %fp <== NOT EXECUTED
519f4: 4e75 rts <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))
{
const char* type = "unknown";
int c;
if (RTEMS_RFS_S_ISDIR (mode))
type = "dir";
519f6: 2c3c 0007 1acd movel #465613,%d6 <== NOT EXECUTED
519fc: 6000 ff10 braw 5190e <rtems_rfs_inode_create+0x80> <== NOT EXECUTED
else if (RTEMS_RFS_S_ISCHR (mode))
type = "char";
else if (RTEMS_RFS_S_ISBLK (mode))
type = "block";
51a00: 2c3c 0007 10e4 movel #463076,%d6 <== NOT EXECUTED
51a06: 6000 ff06 braw 5190e <rtems_rfs_inode_create+0x80> <== NOT EXECUTED
const char* type = "unknown";
int c;
if (RTEMS_RFS_S_ISDIR (mode))
type = "dir";
else if (RTEMS_RFS_S_ISCHR (mode))
type = "char";
51a0a: 2c3c 0007 1ad1 movel #465617,%d6 <== NOT EXECUTED
51a10: 6000 fefc braw 5190e <rtems_rfs_inode_create+0x80> <== NOT EXECUTED
else if (RTEMS_RFS_S_ISBLK (mode))
type = "block";
else if (RTEMS_RFS_S_ISREG (mode))
type = "file";
51a14: 2c3c 0007 240a movel #467978,%d6 <== NOT EXECUTED
51a1a: 6000 fef2 braw 5190e <rtems_rfs_inode_create+0x80> <== NOT EXECUTED
else if (RTEMS_RFS_S_ISLNK (mode))
type = "link";
51a1e: 2c3c 0007 3990 movel #473488,%d6 <== NOT EXECUTED
51a24: 6000 fee8 braw 5190e <rtems_rfs_inode_create+0x80> <== NOT EXECUTED
{
rtems_rfs_inode_free (fs, *ino);
return rc;
}
rc = rtems_rfs_inode_initialise (&inode, links, mode, uid, gid);
51a28: 3f0d movew %a5,%sp@- <== NOT EXECUTED
51a2a: 4267 clrw %sp@- <== NOT EXECUTED
51a2c: 3f2e ffb0 movew %fp@(-80),%sp@- <== NOT EXECUTED
51a30: 4267 clrw %sp@- <== NOT EXECUTED
51a32: 3f05 movew %d5,%sp@- <== NOT EXECUTED
51a34: 4267 clrw %sp@- <== NOT EXECUTED
51a36: 3f2e ffb2 movew %fp@(-78),%sp@- <== NOT EXECUTED
51a3a: 4267 clrw %sp@- <== NOT EXECUTED
51a3c: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51a3e: 4eb9 0005 1732 jsr 51732 <rtems_rfs_inode_initialise> <== NOT EXECUTED
if (rc > 0)
51a44: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
{
rtems_rfs_inode_free (fs, *ino);
return rc;
}
rc = rtems_rfs_inode_initialise (&inode, links, mode, uid, gid);
51a48: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
51a4a: 6e00 0164 bgtw 51bb0 <rtems_rfs_inode_create+0x322> <== NOT EXECUTED
/*
* Only handle the specifics of a directory. Let caller handle the others.
*
* The inode delete will free the inode.
*/
if (RTEMS_RFS_S_ISDIR (mode))
51a4e: 0c83 0000 4000 cmpil #16384,%d3 <== NOT EXECUTED
51a54: 6700 00ae beqw 51b04 <rtems_rfs_inode_create+0x276> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
return rc;
}
}
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
51a58: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
51a5c: 2a0e movel %fp,%d5 <== NOT EXECUTED
51a5e: 0685 ffff ffb4 addil #-76,%d5 <== NOT EXECUTED
51a64: 2f05 movel %d5,%sp@- <== NOT EXECUTED
51a66: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
51a6a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51a6e: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc > 0)
51a70: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
return rc;
}
}
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
51a74: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
51a76: 6f28 bles 51aa0 <rtems_rfs_inode_create+0x212> <== NOT EXECUTED
{
rtems_rfs_inode_delete (fs, &inode);
51a78: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51a7a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51a7e: 4eb9 0005 153c jsr 5153c <rtems_rfs_inode_delete> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
51a84: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51a86: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51a8a: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
51a90: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_inode_free (fs, *ino);
return rc;
}
return 0;
}
51a94: 2004 movel %d4,%d0 <== NOT EXECUTED
51a96: 4cee 3cfc ff88 moveml %fp@(-120),%d2-%d7/%a2-%a5 <== NOT EXECUTED
51a9c: 4e5e unlk %fp <== NOT EXECUTED
51a9e: 4e75 rts <== NOT EXECUTED
rtems_rfs_inode_delete (fs, &inode);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, *ino);
51aa0: 206e 0028 moveal %fp@(40),%a0 <== NOT EXECUTED
51aa4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
51aa6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51aa8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51aaa: 2f05 movel %d5,%sp@- <== NOT EXECUTED
51aac: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51ab0: 4eb9 0005 aeca jsr 5aeca <rtems_rfs_dir_add_entry> <== NOT EXECUTED
if (rc > 0)
51ab6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
rtems_rfs_inode_delete (fs, &inode);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, *ino);
51aba: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
51abc: 6e00 011e bgtw 51bdc <rtems_rfs_inode_create+0x34e> <== NOT EXECUTED
/*
* If the node is a directory update the parent link count as the
* new directory has the '..' link that points to the parent.
*/
if (RTEMS_RFS_S_ISDIR (mode))
51ac0: 0c83 0000 4000 cmpil #16384,%d3 <== NOT EXECUTED
51ac6: 6700 00ae beqw 51b76 <rtems_rfs_inode_create+0x2e8> <== NOT EXECUTED
rtems_rfs_inode_set_links (&parent_inode,
rtems_rfs_inode_get_links (&parent_inode) + 1);
rc = rtems_rfs_inode_close (fs, &parent_inode);
51aca: 2f05 movel %d5,%sp@- <== NOT EXECUTED
51acc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51ad0: 45f9 0005 14a2 lea 514a2 <rtems_rfs_inode_close>,%a2 <== NOT EXECUTED
51ad6: 4e92 jsr %a2@ <== NOT EXECUTED
if (rc > 0)
51ad8: 508f addql #8,%sp <== NOT EXECUTED
*/
if (RTEMS_RFS_S_ISDIR (mode))
rtems_rfs_inode_set_links (&parent_inode,
rtems_rfs_inode_get_links (&parent_inode) + 1);
rc = rtems_rfs_inode_close (fs, &parent_inode);
51ada: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
51adc: 6f00 0130 blew 51c0e <rtems_rfs_inode_create+0x380> <== NOT EXECUTED
{
rtems_rfs_inode_delete (fs, &inode);
51ae0: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51ae2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51ae6: 4eb9 0005 153c jsr 5153c <rtems_rfs_inode_delete> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
51aec: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51aee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51af2: 4e92 jsr %a2@ <== NOT EXECUTED
51af4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_inode_free (fs, *ino);
return rc;
}
return 0;
}
51af8: 2004 movel %d4,%d0 <== NOT EXECUTED
51afa: 4cee 3cfc ff88 moveml %fp@(-120),%d2-%d7/%a2-%a5 <== NOT EXECUTED
51b00: 4e5e unlk %fp <== NOT EXECUTED
51b02: 4e75 rts <== NOT EXECUTED
*
* The inode delete will free the inode.
*/
if (RTEMS_RFS_S_ISDIR (mode))
{
rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, *ino);
51b04: 206e 0028 moveal %fp@(40),%a0 <== NOT EXECUTED
51b08: 49f9 0005 aeca lea 5aeca <rtems_rfs_dir_add_entry>,%a4 <== NOT EXECUTED
51b0e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
51b10: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
51b14: 4879 0006 f2c7 pea 6f2c7 <flashdisk_ops+0x19> <== NOT EXECUTED
51b1a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51b1c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51b20: 4e94 jsr %a4@ <== NOT EXECUTED
if (rc == 0)
51b22: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
*
* The inode delete will free the inode.
*/
if (RTEMS_RFS_S_ISDIR (mode))
{
rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, *ino);
51b26: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc == 0)
51b28: 672a beqs 51b54 <rtems_rfs_inode_create+0x2c6> <== NOT EXECUTED
rc = rtems_rfs_dir_add_entry (fs, &inode, "..", 2, parent);
if (rc > 0)
51b2a: 6e00 ff4c bgtw 51a78 <rtems_rfs_inode_create+0x1ea> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
return rc;
}
}
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
51b2e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
51b32: 2a0e movel %fp,%d5 <== NOT EXECUTED
51b34: 0685 ffff ffb4 addil #-76,%d5 <== NOT EXECUTED
51b3a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
51b3c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
51b40: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51b44: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc > 0)
51b46: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
return rc;
}
}
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
51b4a: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
51b4c: 6e00 ff2a bgtw 51a78 <rtems_rfs_inode_create+0x1ea> <== NOT EXECUTED
51b50: 6000 ff4e braw 51aa0 <rtems_rfs_inode_create+0x212> <== NOT EXECUTED
*/
if (RTEMS_RFS_S_ISDIR (mode))
{
rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, *ino);
if (rc == 0)
rc = rtems_rfs_dir_add_entry (fs, &inode, "..", 2, parent);
51b54: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
51b58: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
51b5c: 4879 0006 f2c6 pea 6f2c6 <flashdisk_ops+0x18> <== NOT EXECUTED
51b62: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51b64: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51b68: 4e94 jsr %a4@ <== NOT EXECUTED
51b6a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
51b6e: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
51b70: 6fbc bles 51b2e <rtems_rfs_inode_create+0x2a0> <== NOT EXECUTED
51b72: 6000 ff04 braw 51a78 <rtems_rfs_inode_create+0x1ea> <== NOT EXECUTED
* If the node is a directory update the parent link count as the
* new directory has the '..' link that points to the parent.
*/
if (RTEMS_RFS_S_ISDIR (mode))
rtems_rfs_inode_set_links (&parent_inode,
rtems_rfs_inode_get_links (&parent_inode) + 1);
51b76: 206e ffc0 moveal %fp@(-64),%a0 <== NOT EXECUTED
*/
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
51b7a: 4280 clrl %d0 <== NOT EXECUTED
51b7c: 1010 moveb %a0@,%d0 <== NOT EXECUTED
51b7e: 4281 clrl %d1 <== NOT EXECUTED
51b80: 1228 0001 moveb %a0@(1),%d1 <== NOT EXECUTED
51b84: e188 lsll #8,%d0 <== NOT EXECUTED
51b86: 8081 orl %d1,%d0 <== NOT EXECUTED
if (links == 0xffff)
51b88: 3200 movew %d0,%d1 <== NOT EXECUTED
links = 0;
51b8a: 0c81 0000 ffff cmpil #65535,%d1 <== NOT EXECUTED
51b90: 56c1 sne %d1 <== NOT EXECUTED
51b92: 4881 extw %d1 <== NOT EXECUTED
51b94: c081 andl %d1,%d0 <== NOT EXECUTED
/*
* If the node is a directory update the parent link count as the
* new directory has the '..' link that points to the parent.
*/
if (RTEMS_RFS_S_ISDIR (mode))
rtems_rfs_inode_set_links (&parent_inode,
51b96: 5280 addql #1,%d0 <== NOT EXECUTED
* @prarm links The links.
*/
static inline void
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{
rtems_rfs_write_u16 (&handle->node->links, links);
51b98: 2200 movel %d0,%d1 <== NOT EXECUTED
51b9a: e089 lsrl #8,%d1 <== NOT EXECUTED
51b9c: 1081 moveb %d1,%a0@ <== NOT EXECUTED
51b9e: 206e ffc0 moveal %fp@(-64),%a0 <== NOT EXECUTED
51ba2: 1140 0001 moveb %d0,%a0@(1) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
51ba6: 7001 moveq #1,%d0 <== NOT EXECUTED
51ba8: 1d40 ffc4 moveb %d0,%fp@(-60) <== NOT EXECUTED
51bac: 6000 ff1c braw 51aca <rtems_rfs_inode_create+0x23c> <== NOT EXECUTED
}
rc = rtems_rfs_inode_initialise (&inode, links, mode, uid, gid);
if (rc > 0)
{
rtems_rfs_inode_close (fs, &inode);
51bb0: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51bb2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51bb6: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
rtems_rfs_inode_free (fs, *ino);
51bbc: 206e 0028 moveal %fp@(40),%a0 <== NOT EXECUTED
51bc0: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
51bc2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51bc6: 4eb9 0005 11e2 jsr 511e2 <rtems_rfs_inode_free> <== NOT EXECUTED
51bcc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_inode_free (fs, *ino);
return rc;
}
return 0;
}
51bd0: 2004 movel %d4,%d0 <== NOT EXECUTED
51bd2: 4cee 3cfc ff88 moveml %fp@(-120),%d2-%d7/%a2-%a5 <== NOT EXECUTED
51bd8: 4e5e unlk %fp <== NOT EXECUTED
51bda: 4e75 rts <== NOT EXECUTED
}
rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, *ino);
if (rc > 0)
{
rtems_rfs_inode_delete (fs, &inode);
51bdc: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51bde: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
51be2: 45f9 0005 14a2 lea 514a2 <rtems_rfs_inode_close>,%a2 <== NOT EXECUTED
}
rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, *ino);
if (rc > 0)
{
rtems_rfs_inode_delete (fs, &inode);
51be8: 4eb9 0005 153c jsr 5153c <rtems_rfs_inode_delete> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
51bee: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51bf0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51bf4: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_rfs_inode_close (fs, &parent_inode);
51bf6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
51bf8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51bfc: 4e92 jsr %a2@ <== NOT EXECUTED
51bfe: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
rtems_rfs_inode_free (fs, *ino);
return rc;
}
return 0;
}
51c02: 2004 movel %d4,%d0 <== NOT EXECUTED
51c04: 4cee 3cfc ff88 moveml %fp@(-120),%d2-%d7/%a2-%a5 <== NOT EXECUTED
51c0a: 4e5e unlk %fp <== NOT EXECUTED
51c0c: 4e75 rts <== NOT EXECUTED
rtems_rfs_inode_delete (fs, &inode);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_inode_close (fs, &inode);
51c0e: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51c10: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51c14: 4e92 jsr %a2@ <== NOT EXECUTED
if (rc > 0)
51c16: 508f addql #8,%sp <== NOT EXECUTED
rtems_rfs_inode_delete (fs, &inode);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_inode_close (fs, &inode);
51c18: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc > 0)
51c1a: 6e00 fdbc bgtw 519d8 <rtems_rfs_inode_create+0x14a> <== NOT EXECUTED
{
rtems_rfs_inode_free (fs, *ino);
return rc;
}
return 0;
51c1e: 4284 clrl %d4 <== NOT EXECUTED
}
51c20: 2004 movel %d4,%d0 <== NOT EXECUTED
51c22: 4cee 3cfc ff88 moveml %fp@(-120),%d2-%d7/%a2-%a5 <== NOT EXECUTED
51c28: 4e5e unlk %fp <== NOT EXECUTED
0005153c <rtems_rfs_inode_delete>:
}
int
rtems_rfs_inode_delete (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* handle)
{
5153c: 4e56 ffb4 linkw %fp,#-76 <== NOT EXECUTED
51540: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51542: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
51546: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_DELETE))
51548: 2f3c 0080 0000 movel #8388608,%sp@- <== NOT EXECUTED
5154e: 42a7 clrl %sp@- <== NOT EXECUTED
51550: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
51556: 508f addql #8,%sp <== NOT EXECUTED
51558: 4a00 tstb %d0 <== NOT EXECUTED
5155a: 6724 beqs 51580 <rtems_rfs_inode_delete+0x44> <== NOT EXECUTED
printf("rtems-rfs: inode-delete: ino:%" PRIu32 " loaded:%s\n",
5155c: 4aaa 000c tstl %a2@(12) <== NOT EXECUTED
51560: 6700 00f0 beqw 51652 <rtems_rfs_inode_delete+0x116> <== NOT EXECUTED
51564: 203c 0007 19c4 movel #465348,%d0 <== NOT EXECUTED
5156a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5156c: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
51570: 4879 0007 1aa1 pea 71aa1 <_CPU_m68k_BFFFO_table+0xb92> <== NOT EXECUTED
51576: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5157c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_rfs_inode_ino (handle),
rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");
if (rtems_rfs_inode_is_loaded (handle))
51580: 4aaa 000c tstl %a2@(12) <== NOT EXECUTED
51584: 6720 beqs 515a6 <rtems_rfs_inode_delete+0x6a> <== NOT EXECUTED
rtems_rfs_block_map map;
/*
* Free the ino number.
*/
rc = rtems_rfs_inode_free (fs, handle->ino);
51586: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
5158a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5158e: 4eb9 0005 11e2 jsr 511e2 <rtems_rfs_inode_free> <== NOT EXECUTED
if (rc > 0)
51594: 508f addql #8,%sp <== NOT EXECUTED
51596: 4a80 tstl %d0 <== NOT EXECUTED
51598: 6f1a bles 515b4 <rtems_rfs_inode_delete+0x78> <== NOT EXECUTED
handle->loads = 0;
handle->node = NULL;
}
}
return rc;
}
5159a: 242e ffac movel %fp@(-84),%d2 <== NOT EXECUTED
5159e: 246e ffb0 moveal %fp@(-80),%a2 <== NOT EXECUTED
515a2: 4e5e unlk %fp <== NOT EXECUTED
515a4: 4e75 rts <== NOT EXECUTED
515a6: 242e ffac movel %fp@(-84),%d2 <== NOT EXECUTED
int
rtems_rfs_inode_delete (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* handle)
{
int rc = 0;
515aa: 4280 clrl %d0 <== NOT EXECUTED
handle->loads = 0;
handle->node = NULL;
}
}
return rc;
}
515ac: 246e ffb0 moveal %fp@(-80),%a2 <== NOT EXECUTED
515b0: 4e5e unlk %fp <== NOT EXECUTED
515b2: 4e75 rts <== NOT EXECUTED
return rc;
/*
* Free the blocks the inode may have attached.
*/
rc = rtems_rfs_block_map_open (fs, handle, &map);
515b4: 240e movel %fp,%d2 <== NOT EXECUTED
515b6: 0682 ffff ffb6 addil #-74,%d2 <== NOT EXECUTED
515bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
515be: 2f0a movel %a2,%sp@- <== NOT EXECUTED
515c0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
515c4: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc == 0)
515ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
515ce: 4a80 tstl %d0 <== NOT EXECUTED
515d0: 66c8 bnes 5159a <rtems_rfs_inode_delete+0x5e> <== NOT EXECUTED
{
int rrc;
rrc = rtems_rfs_block_map_free_all (fs, &map);
515d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
515d4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
515d8: 4eb9 0005 9df0 jsr 59df0 <rtems_rfs_block_map_free_all> <== NOT EXECUTED
rc = rtems_rfs_block_map_close (fs, &map);
515de: 2f02 movel %d2,%sp@- <== NOT EXECUTED
515e0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
if (rc > 0)
rrc = rc;
memset (handle->node, 0xff, RTEMS_RFS_INODE_SIZE);
515e4: 74ff moveq #-1,%d2 <== NOT EXECUTED
rc = rtems_rfs_block_map_open (fs, handle, &map);
if (rc == 0)
{
int rrc;
rrc = rtems_rfs_block_map_free_all (fs, &map);
rc = rtems_rfs_block_map_close (fs, &map);
515e6: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
if (rc > 0)
rrc = rc;
memset (handle->node, 0xff, RTEMS_RFS_INODE_SIZE);
515ec: 206a 000c moveal %a2@(12),%a0 <== NOT EXECUTED
515f0: 70ff moveq #-1,%d0 <== NOT EXECUTED
515f2: 72ff moveq #-1,%d1 <== NOT EXECUTED
515f4: 20c0 movel %d0,%a0@+ <== NOT EXECUTED
515f6: 70ff moveq #-1,%d0 <== NOT EXECUTED
515f8: 20c1 movel %d1,%a0@+ <== NOT EXECUTED
515fa: 72ff moveq #-1,%d1 <== NOT EXECUTED
515fc: 20c2 movel %d2,%a0@+ <== NOT EXECUTED
515fe: 74ff moveq #-1,%d2 <== NOT EXECUTED
51600: 20c0 movel %d0,%a0@+ <== NOT EXECUTED
51602: 70ff moveq #-1,%d0 <== NOT EXECUTED
51604: 20c1 movel %d1,%a0@+ <== NOT EXECUTED
51606: 72ff moveq #-1,%d1 <== NOT EXECUTED
51608: 20c2 movel %d2,%a0@+ <== NOT EXECUTED
5160a: 74ff moveq #-1,%d2 <== NOT EXECUTED
5160c: 20c0 movel %d0,%a0@+ <== NOT EXECUTED
5160e: 70ff moveq #-1,%d0 <== NOT EXECUTED
51610: 20c1 movel %d1,%a0@+ <== NOT EXECUTED
51612: 72ff moveq #-1,%d1 <== NOT EXECUTED
51614: 20c2 movel %d2,%a0@+ <== NOT EXECUTED
51616: 74ff moveq #-1,%d2 <== NOT EXECUTED
51618: 20c0 movel %d0,%a0@+ <== NOT EXECUTED
5161a: 70ff moveq #-1,%d0 <== NOT EXECUTED
5161c: 20c1 movel %d1,%a0@+ <== NOT EXECUTED
5161e: 72ff moveq #-1,%d1 <== NOT EXECUTED
51620: 20c2 movel %d2,%a0@+ <== NOT EXECUTED
51622: 20c0 movel %d0,%a0@+ <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
51624: 7001 moveq #1,%d0 <== NOT EXECUTED
int rrc;
rrc = rtems_rfs_block_map_free_all (fs, &map);
rc = rtems_rfs_block_map_close (fs, &map);
if (rc > 0)
rrc = rc;
memset (handle->node, 0xff, RTEMS_RFS_INODE_SIZE);
51626: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* Do the release here to avoid the ctime field being set on a
* close. Also if there loads is greater then one then other loads
* active. Forcing the loads count to 0.
*/
rc = rtems_rfs_buffer_handle_release (fs, &handle->buffer);
51628: 486a 0010 pea %a2@(16) <== NOT EXECUTED
rrc = rtems_rfs_block_map_free_all (fs, &map);
rc = rtems_rfs_block_map_close (fs, &map);
if (rc > 0)
rrc = rc;
memset (handle->node, 0xff, RTEMS_RFS_INODE_SIZE);
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5162c: 1540 0010 moveb %d0,%a2@(16) <== NOT EXECUTED
/*
* Do the release here to avoid the ctime field being set on a
* close. Also if there loads is greater then one then other loads
* active. Forcing the loads count to 0.
*/
rc = rtems_rfs_buffer_handle_release (fs, &handle->buffer);
51630: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51634: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->loads = 0;
handle->node = NULL;
}
}
return rc;
}
5163a: 242e ffac movel %fp@(-84),%d2 <== NOT EXECUTED
* close. Also if there loads is greater then one then other loads
* active. Forcing the loads count to 0.
*/
rc = rtems_rfs_buffer_handle_release (fs, &handle->buffer);
handle->loads = 0;
handle->node = NULL;
5163e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
* Do the release here to avoid the ctime field being set on a
* close. Also if there loads is greater then one then other loads
* active. Forcing the loads count to 0.
*/
rc = rtems_rfs_buffer_handle_release (fs, &handle->buffer);
handle->loads = 0;
51642: 42aa 0022 clrl %a2@(34) <== NOT EXECUTED
handle->node = NULL;
51646: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
}
}
return rc;
}
5164a: 246e ffb0 moveal %fp@(-80),%a2 <== NOT EXECUTED
5164e: 4e5e unlk %fp <== NOT EXECUTED
51650: 4e75 rts <== NOT EXECUTED
rtems_rfs_inode_handle* handle)
{
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_DELETE))
printf("rtems-rfs: inode-delete: ino:%" PRIu32 " loaded:%s\n",
51652: 203c 0007 1dff movel #466431,%d0 <== NOT EXECUTED
51658: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5165a: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
5165e: 4879 0007 1aa1 pea 71aa1 <_CPU_m68k_BFFFO_table+0xb92> <== NOT EXECUTED
51664: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5166a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5166e: 6000 ff10 braw 51580 <rtems_rfs_inode_delete+0x44> <== NOT EXECUTED
000511e2 <rtems_rfs_inode_free>:
int
rtems_rfs_inode_free (rtems_rfs_file_system* fs,
rtems_rfs_ino ino)
{
511e2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_rfs_bitmap_bit bit;
bit = ino;
return rtems_rfs_group_bitmap_free (fs, true, bit);
511e6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
511ea: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
511ee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
511f2: 4eb9 0005 0f5c jsr 50f5c <rtems_rfs_group_bitmap_free> <== NOT EXECUTED
}
511f8: 4e5e unlk %fp <== NOT EXECUTED
00051c2c <rtems_rfs_inode_get_size>:
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
51c2c: 4280 clrl %d0 <== NOT EXECUTED
51c2e: 7218 moveq #24,%d1 <== NOT EXECUTED
}
rtems_rfs_pos
rtems_rfs_inode_get_size (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* handle)
{
51c30: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
51c34: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
51c38: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
rtems_rfs_block_size size;
size.count = rtems_rfs_inode_get_block_count (handle);
size.offset = rtems_rfs_inode_get_block_offset (handle);
return rtems_rfs_block_get_size (fs, &size);
}
51c3c: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED
51c40: 4283 clrl %d3 <== NOT EXECUTED
51c42: 1028 000c moveb %a0@(12),%d0 <== NOT EXECUTED
51c46: 1628 000d moveb %a0@(13),%d3 <== NOT EXECUTED
51c4a: 4285 clrl %d5 <== NOT EXECUTED
* @return uint32_t The block offset.
*/
static inline uint16_t
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->block_offset);
51c4c: 4282 clrl %d2 <== NOT EXECUTED
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
51c4e: 1a28 000f moveb %a0@(15),%d5 <== NOT EXECUTED
* @return uint32_t The block offset.
*/
static inline uint16_t
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->block_offset);
51c52: 1428 000a moveb %a0@(10),%d2 <== NOT EXECUTED
51c56: 4284 clrl %d4 <== NOT EXECUTED
51c58: 1828 000b moveb %a0@(11),%d4 <== NOT EXECUTED
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
51c5c: e3a8 lsll %d1,%d0 <== NOT EXECUTED
51c5e: 4843 swap %d3 <== NOT EXECUTED
51c60: 4243 clrw %d3 <== NOT EXECUTED
51c62: 4281 clrl %d1 <== NOT EXECUTED
51c64: 1228 000e moveb %a0@(14),%d1 <== NOT EXECUTED
rtems_rfs_inode_handle* handle)
{
rtems_rfs_block_size size;
size.count = rtems_rfs_inode_get_block_count (handle);
size.offset = rtems_rfs_inode_get_block_offset (handle);
return rtems_rfs_block_get_size (fs, &size);
51c68: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
51c6c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51c70: 8083 orl %d3,%d0 <== NOT EXECUTED
51c72: e189 lsll #8,%d1 <== NOT EXECUTED
* @return uint32_t The block offset.
*/
static inline uint16_t
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->block_offset);
51c74: e18a lsll #8,%d2 <== NOT EXECUTED
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
51c76: 8085 orl %d5,%d0 <== NOT EXECUTED
rtems_rfs_inode_get_size (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* handle)
{
rtems_rfs_block_size size;
size.count = rtems_rfs_inode_get_block_count (handle);
size.offset = rtems_rfs_inode_get_block_offset (handle);
51c78: 8484 orl %d4,%d2 <== NOT EXECUTED
51c7a: 8081 orl %d1,%d0 <== NOT EXECUTED
51c7c: 2d42 fffc movel %d2,%fp@(-4) <== NOT EXECUTED
51c80: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
return rtems_rfs_block_get_size (fs, &size);
51c84: 4eb9 0005 9180 jsr 59180 <rtems_rfs_block_get_size> <== NOT EXECUTED
}
51c8a: 4cee 003c ffe8 moveml %fp@(-24),%d2-%d5 <== NOT EXECUTED
51c90: 4e5e unlk %fp <== NOT EXECUTED
000511fc <rtems_rfs_inode_load>:
}
int
rtems_rfs_inode_load (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* handle)
{
511fc: 4e56 0000 linkw %fp,#0
51200: 2f0a movel %a2,%sp@-
51202: 246e 000c moveal %fp@(12),%a2
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_LOAD))
51206: 2f3c 0010 0000 movel #1048576,%sp@-
5120c: 42a7 clrl %sp@-
5120e: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
51214: 508f addql #8,%sp
51216: 4a00 tstb %d0
51218: 6726 beqs 51240 <rtems_rfs_inode_load+0x44> <== ALWAYS TAKEN
printf ("rtems-rfs: inode-load: ino=%" PRIu32 " loads=%i loaded=%s\n",
5121a: 4aaa 000c tstl %a2@(12) <== NOT EXECUTED
5121e: 6734 beqs 51254 <rtems_rfs_inode_load+0x58> <== NOT EXECUTED
51220: 203c 0007 19c4 movel #465348,%d0 <== NOT EXECUTED
51226: 2f00 movel %d0,%sp@- <== NOT EXECUTED
51228: 2f2a 0022 movel %a2@(34),%sp@- <== NOT EXECUTED
5122c: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
51230: 4879 0007 19c8 pea 719c8 <_CPU_m68k_BFFFO_table+0xab9> <== NOT EXECUTED
51236: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5123c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
/*
* An inode does not move so once loaded no need to do again.
*/
if (!rtems_rfs_inode_is_loaded (handle))
51240: 4aaa 000c tstl %a2@(12)
51244: 6730 beqs 51276 <rtems_rfs_inode_load+0x7a>
handle->node = rtems_rfs_buffer_data (&handle->buffer);
handle->node += handle->offset;
}
handle->loads++;
51246: 52aa 0022 addql #1,%a2@(34)
return 0;
5124a: 4280 clrl %d0
}
5124c: 246e fffc moveal %fp@(-4),%a2
51250: 4e5e unlk %fp
51252: 4e75 rts
int
rtems_rfs_inode_load (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* handle)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_LOAD))
printf ("rtems-rfs: inode-load: ino=%" PRIu32 " loads=%i loaded=%s\n",
51254: 203c 0007 1dff movel #466431,%d0 <== NOT EXECUTED
5125a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5125c: 2f2a 0022 movel %a2@(34),%sp@- <== NOT EXECUTED
51260: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
51264: 4879 0007 19c8 pea 719c8 <_CPU_m68k_BFFFO_table+0xab9> <== NOT EXECUTED
5126a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
51270: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
51274: 60ca bras 51240 <rtems_rfs_inode_load+0x44> <== NOT EXECUTED
if (!rtems_rfs_inode_is_loaded (handle))
{
int rc;
rc = rtems_rfs_buffer_handle_request (fs,&handle->buffer,
51276: 4878 0001 pea 1 <ADD>
5127a: 2f2a 001a movel %a2@(26),%sp@-
5127e: 486a 0010 pea %a2@(16)
51282: 2f2e 0008 movel %fp@(8),%sp@-
51286: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request>
handle->block, true);
if (rc > 0)
5128c: 4fef 0010 lea %sp@(16),%sp
51290: 4a80 tstl %d0
51292: 6eb8 bgts 5124c <rtems_rfs_inode_load+0x50> <== NEVER TAKEN
return rc;
handle->node = rtems_rfs_buffer_data (&handle->buffer);
handle->node += handle->offset;
51294: 202a 001e movel %a2@(30),%d0
51298: 2200 movel %d0,%d1
5129a: ed88 lsll #6,%d0
5129c: e789 lsll #3,%d1
rc = rtems_rfs_buffer_handle_request (fs,&handle->buffer,
handle->block, true);
if (rc > 0)
return rc;
handle->node = rtems_rfs_buffer_data (&handle->buffer);
5129e: 206a 0016 moveal %a2@(22),%a0
handle->node += handle->offset;
512a2: 9081 subl %d1,%d0
512a4: d0a8 001a addl %a0@(26),%d0
}
handle->loads++;
512a8: 52aa 0022 addql #1,%a2@(34)
handle->block, true);
if (rc > 0)
return rc;
handle->node = rtems_rfs_buffer_data (&handle->buffer);
handle->node += handle->offset;
512ac: 2540 000c movel %d0,%a2@(12)
}
handle->loads++;
return 0;
512b0: 4280 clrl %d0
512b2: 6098 bras 5124c <rtems_rfs_inode_load+0x50>
000512b4 <rtems_rfs_inode_open>:
int
rtems_rfs_inode_open (rtems_rfs_file_system* fs,
rtems_rfs_ino ino,
rtems_rfs_inode_handle* handle,
bool load)
{
512b4: 4e56 fff0 linkw %fp,#-16
512b8: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
int group;
int gino;
int index;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))
512bc: 2f3c 0004 0000 movel #262144,%sp@-
int
rtems_rfs_inode_open (rtems_rfs_file_system* fs,
rtems_rfs_ino ino,
rtems_rfs_inode_handle* handle,
bool load)
{
512c2: 246e 0008 moveal %fp@(8),%a2
int group;
int gino;
int index;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))
512c6: 42a7 clrl %sp@-
int
rtems_rfs_inode_open (rtems_rfs_file_system* fs,
rtems_rfs_ino ino,
rtems_rfs_inode_handle* handle,
bool load)
{
512c8: 242e 000c movel %fp@(12),%d2
512cc: 266e 0010 moveal %fp@(16),%a3
512d0: 162e 0017 moveb %fp@(23),%d3
int group;
int gino;
int index;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))
512d4: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
512da: 508f addql #8,%sp
512dc: 4a00 tstb %d0
512de: 6676 bnes 51356 <rtems_rfs_inode_open+0xa2> <== NEVER TAKEN
printf ("rtems-rfs: inode-open: ino: %" PRIu32 "\n", ino);
if (ino == RTEMS_RFS_EMPTY_INO)
512e0: 4a82 tstl %d2
512e2: 660c bnes 512f0 <rtems_rfs_inode_open+0x3c> <== ALWAYS TAKEN
return EINVAL;
512e4: 7016 moveq #22,%d0 <== NOT EXECUTED
rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);
if ((rc == 0) && load)
rc = rtems_rfs_inode_load (fs, handle);
return rc;
}
512e6: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
512ec: 4e5e unlk %fp <== NOT EXECUTED
512ee: 4e75 rts <== NOT EXECUTED
printf ("rtems-rfs: inode-open: ino: %" PRIu32 "\n", ino);
if (ino == RTEMS_RFS_EMPTY_INO)
return EINVAL;
if ((ino - RTEMS_RFS_ROOT_INO) > rtems_rfs_fs_inodes (fs))
512f0: 2002 movel %d2,%d0
512f2: 5380 subql #1,%d0
512f4: b0aa 0014 cmpl %a2@(20),%d0
512f8: 62ea bhis 512e4 <rtems_rfs_inode_open+0x30> <== NEVER TAKEN
group = gino / fs->group_inodes;
gino = gino % fs->group_inodes;
index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
handle->offset = gino % fs->inodes_per_block;
handle->block = rtems_rfs_group_block (&fs->groups[group], index);
512fa: 206a 0020 moveal %a2@(32),%a0
handle->node = NULL;
handle->loads = 0;
gino = ino - RTEMS_RFS_ROOT_INO;
group = gino / fs->group_inodes;
gino = gino % fs->group_inodes;
512fe: 4c6a 0001 002c remul %a2@(44),%d1,%d0
51304: 4c6a 0000 002c remul %a2@(44),%d0,%d0
return EINVAL;
if ((ino - RTEMS_RFS_ROOT_INO) > rtems_rfs_fs_inodes (fs))
return EINVAL;
handle->ino = ino;
5130a: 2742 0008 movel %d2,%a3@(8)
group = gino / fs->group_inodes;
gino = gino % fs->group_inodes;
index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
handle->offset = gino % fs->inodes_per_block;
handle->block = rtems_rfs_group_block (&fs->groups[group], index);
5130e: 744c moveq #76,%d2
51310: 4c02 0800 mulsl %d2,%d0
gino = ino - RTEMS_RFS_ROOT_INO;
group = gino / fs->group_inodes;
gino = gino % fs->group_inodes;
index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
handle->offset = gino % fs->inodes_per_block;
51314: 4c6a 1002 0030 remul %a2@(48),%d2,%d1
5131a: 4c6a 1001 0030 remul %a2@(48),%d1,%d1
if ((ino - RTEMS_RFS_ROOT_INO) > rtems_rfs_fs_inodes (fs))
return EINVAL;
handle->ino = ino;
handle->node = NULL;
51320: 42ab 000c clrl %a3@(12)
handle->loads = 0;
gino = ino - RTEMS_RFS_ROOT_INO;
group = gino / fs->group_inodes;
gino = gino % fs->group_inodes;
index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
51324: 2030 0800 movel %a0@(00000000,%d0:l),%d0
51328: 5480 addql #2,%d0
handle->offset = gino % fs->inodes_per_block;
handle->block = rtems_rfs_group_block (&fs->groups[group], index);
5132a: d081 addl %d1,%d0
5132c: 2740 001a movel %d0,%a3@(26)
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
51330: 4200 clrb %d0
gino = ino - RTEMS_RFS_ROOT_INO;
group = gino / fs->group_inodes;
gino = gino % fs->group_inodes;
index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
handle->offset = gino % fs->inodes_per_block;
51332: 2742 001e movel %d2,%a3@(30)
51336: 1740 0010 moveb %d0,%a3@(16)
if ((ino - RTEMS_RFS_ROOT_INO) > rtems_rfs_fs_inodes (fs))
return EINVAL;
handle->ino = ino;
handle->node = NULL;
handle->loads = 0;
5133a: 42ab 0022 clrl %a3@(34)
handle->bnum = 0;
5133e: 42ab 0012 clrl %a3@(18)
handle->buffer = NULL;
51342: 42ab 0016 clrl %a3@(22)
handle->offset = gino % fs->inodes_per_block;
handle->block = rtems_rfs_group_block (&fs->groups[group], index);
rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);
if ((rc == 0) && load)
51346: 4a03 tstb %d3
51348: 6624 bnes 5136e <rtems_rfs_inode_open+0xba> <== ALWAYS TAKEN
index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
handle->offset = gino % fs->inodes_per_block;
handle->block = rtems_rfs_group_block (&fs->groups[group], index);
rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);
5134a: 4280 clrl %d0 <== NOT EXECUTED
if ((rc == 0) && load)
rc = rtems_rfs_inode_load (fs, handle);
return rc;
}
5134c: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
51352: 4e5e unlk %fp <== NOT EXECUTED
51354: 4e75 rts <== NOT EXECUTED
int gino;
int index;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))
printf ("rtems-rfs: inode-open: ino: %" PRIu32 "\n", ino);
51356: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51358: 4879 0007 19fb pea 719fb <_CPU_m68k_BFFFO_table+0xaec> <== NOT EXECUTED
5135e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
51364: 508f addql #8,%sp <== NOT EXECUTED
if (ino == RTEMS_RFS_EMPTY_INO)
51366: 4a82 tstl %d2 <== NOT EXECUTED
51368: 6700 ff7a beqw 512e4 <rtems_rfs_inode_open+0x30> <== NOT EXECUTED
5136c: 6082 bras 512f0 <rtems_rfs_inode_open+0x3c> <== NOT EXECUTED
handle->offset = gino % fs->inodes_per_block;
handle->block = rtems_rfs_group_block (&fs->groups[group], index);
rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);
if ((rc == 0) && load)
rc = rtems_rfs_inode_load (fs, handle);
5136e: 2d4b 000c movel %a3,%fp@(12)
51372: 2d4a 0008 movel %a2,%fp@(8)
return rc;
}
51376: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
5137c: 4e5e unlk %fp
handle->offset = gino % fs->inodes_per_block;
handle->block = rtems_rfs_group_block (&fs->groups[group], index);
rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);
if ((rc == 0) && load)
rc = rtems_rfs_inode_load (fs, handle);
5137e: 4ef9 0005 11fc jmp 511fc <rtems_rfs_inode_load>
00051672 <rtems_rfs_inode_time_stamp_now>:
int
rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle* handle,
bool atime,
bool mtime)
{
51672: 4e56 fff4 linkw %fp,#-12
51676: 48d7 040c moveml %d2-%d3/%a2,%sp@
5167a: 246e 0008 moveal %fp@(8),%a2
5167e: 162e 000f moveb %fp@(15),%d3
51682: 142e 0013 moveb %fp@(19),%d2
time_t now;
if (!rtems_rfs_inode_is_loaded (handle))
51686: 4aaa 000c tstl %a2@(12)
5168a: 6700 009a beqw 51726 <rtems_rfs_inode_time_stamp_now+0xb4>
return ENXIO;
now = time (NULL);
5168e: 42a7 clrl %sp@-
51690: 4eb9 0006 503c jsr 6503c <time>
if (atime)
51696: 588f addql #4,%sp
bool mtime)
{
time_t now;
if (!rtems_rfs_inode_is_loaded (handle))
return ENXIO;
now = time (NULL);
51698: 2200 movel %d0,%d1
if (atime)
5169a: 4a03 tstb %d3
5169c: 6736 beqs 516d4 <rtems_rfs_inode_time_stamp_now+0x62><== NEVER TAKEN
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
5169e: 2600 movel %d0,%d3
516a0: 7018 moveq #24,%d0
516a2: e0ab lsrl %d0,%d3
516a4: 2001 movel %d1,%d0
516a6: e088 lsrl #8,%d0
516a8: 206a 000c moveal %a2@(12),%a0
516ac: 1143 0010 moveb %d3,%a0@(16)
516b0: 2601 movel %d1,%d3
516b2: 206a 000c moveal %a2@(12),%a0
516b6: 4243 clrw %d3
516b8: 4843 swap %d3
516ba: 1143 0011 moveb %d3,%a0@(17)
516be: 206a 000c moveal %a2@(12),%a0
516c2: 1140 0012 moveb %d0,%a0@(18)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
516c6: 7001 moveq #1,%d0
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
516c8: 206a 000c moveal %a2@(12),%a0
516cc: 1141 0013 moveb %d1,%a0@(19)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
516d0: 1540 0010 moveb %d0,%a2@(16)
rtems_rfs_inode_set_atime (handle, now);
if (mtime)
516d4: 4a02 tstb %d2
516d6: 6742 beqs 5171a <rtems_rfs_inode_time_stamp_now+0xa8><== NEVER TAKEN
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
516d8: 206a 000c moveal %a2@(12),%a0
516dc: 2601 movel %d1,%d3
516de: 7018 moveq #24,%d0
516e0: e0ab lsrl %d0,%d3
516e2: 2401 movel %d1,%d2
516e4: e08a lsrl #8,%d2
rtems_rfs_inode_set_mtime (handle, now);
return 0;
516e6: 4200 clrb %d0
516e8: 1143 0014 moveb %d3,%a0@(20)
516ec: 2601 movel %d1,%d3
516ee: 206a 000c moveal %a2@(12),%a0
516f2: 4243 clrw %d3
516f4: 4843 swap %d3
516f6: 1143 0015 moveb %d3,%a0@(21)
516fa: 206a 000c moveal %a2@(12),%a0
516fe: 1142 0016 moveb %d2,%a0@(22)
51702: 206a 000c moveal %a2@(12),%a0
51706: 1141 0017 moveb %d1,%a0@(23)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5170a: 7201 moveq #1,%d1
5170c: 1541 0010 moveb %d1,%a2@(16)
}
51710: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
51716: 4e5e unlk %fp
51718: 4e75 rts
now = time (NULL);
if (atime)
rtems_rfs_inode_set_atime (handle, now);
if (mtime)
rtems_rfs_inode_set_mtime (handle, now);
return 0;
5171a: 4280 clrl %d0 <== NOT EXECUTED
}
5171c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
51722: 4e5e unlk %fp <== NOT EXECUTED
51724: 4e75 rts <== NOT EXECUTED
bool atime,
bool mtime)
{
time_t now;
if (!rtems_rfs_inode_is_loaded (handle))
return ENXIO;
51726: 7006 moveq #6,%d0 <== NOT EXECUTED
if (atime)
rtems_rfs_inode_set_atime (handle, now);
if (mtime)
rtems_rfs_inode_set_mtime (handle, now);
return 0;
}
51728: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5172e: 4e5e unlk %fp <== NOT EXECUTED
00051384 <rtems_rfs_inode_unload>:
int
rtems_rfs_inode_unload (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* handle,
bool update_ctime)
{
51384: 4e56 0000 linkw %fp,#0
51388: 2f0a movel %a2,%sp@-
5138a: 246e 000c moveal %fp@(12),%a2
5138e: 2f02 movel %d2,%sp@-
51390: 142e 0013 moveb %fp@(19),%d2
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_UNLOAD))
51394: 2f3c 0020 0000 movel #2097152,%sp@-
5139a: 42a7 clrl %sp@-
5139c: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
513a2: 508f addql #8,%sp
513a4: 4a00 tstb %d0
513a6: 6726 beqs 513ce <rtems_rfs_inode_unload+0x4a> <== ALWAYS TAKEN
printf ("rtems-rfs: inode-unload: ino=%" PRIu32 " loads=%i loaded=%s\n",
513a8: 4aaa 000c tstl %a2@(12) <== NOT EXECUTED
513ac: 677a beqs 51428 <rtems_rfs_inode_unload+0xa4> <== NOT EXECUTED
513ae: 203c 0007 19c4 movel #465348,%d0 <== NOT EXECUTED
513b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
513b6: 2f2a 0022 movel %a2@(34),%sp@- <== NOT EXECUTED
513ba: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
513be: 4879 0007 1a1c pea 71a1c <_CPU_m68k_BFFFO_table+0xb0d> <== NOT EXECUTED
513c4: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
513ca: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
handle->ino, handle->loads,
rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");
if (rtems_rfs_inode_is_loaded (handle))
513ce: 4aaa 000c tstl %a2@(12)
513d2: 671c beqs 513f0 <rtems_rfs_inode_unload+0x6c> <== NEVER TAKEN
{
if (handle->loads == 0)
513d4: 202a 0022 movel %a2@(34),%d0
513d8: 660e bnes 513e8 <rtems_rfs_inode_unload+0x64> <== ALWAYS TAKEN
handle->node = NULL;
}
}
return rc;
}
513da: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");
if (rtems_rfs_inode_is_loaded (handle))
{
if (handle->loads == 0)
return EIO;
513de: 7005 moveq #5,%d0 <== NOT EXECUTED
handle->node = NULL;
}
}
return rc;
}
513e0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
513e4: 4e5e unlk %fp <== NOT EXECUTED
513e6: 4e75 rts <== NOT EXECUTED
if (rtems_rfs_inode_is_loaded (handle))
{
if (handle->loads == 0)
return EIO;
handle->loads--;
513e8: 5380 subql #1,%d0
513ea: 2540 0022 movel %d0,%a2@(34)
if (handle->loads == 0)
513ee: 670e beqs 513fe <rtems_rfs_inode_unload+0x7a>
handle->node = NULL;
}
}
return rc;
}
513f0: 242e fff8 movel %fp@(-8),%d2
int
rtems_rfs_inode_unload (rtems_rfs_file_system* fs,
rtems_rfs_inode_handle* handle,
bool update_ctime)
{
int rc = 0;
513f4: 4280 clrl %d0
handle->node = NULL;
}
}
return rc;
}
513f6: 246e fffc moveal %fp@(-4),%a2
513fa: 4e5e unlk %fp
513fc: 4e75 rts
if (handle->loads == 0)
{
/*
* If the buffer is dirty it will be release. Also set the ctime.
*/
if (rtems_rfs_buffer_dirty (&handle->buffer) && update_ctime)
513fe: 4a2a 0010 tstb %a2@(16)
51402: 6704 beqs 51408 <rtems_rfs_inode_unload+0x84>
51404: 4a02 tstb %d2
51406: 6642 bnes 5144a <rtems_rfs_inode_unload+0xc6> <== ALWAYS TAKEN
rtems_rfs_inode_set_ctime (handle, time (NULL));
rc = rtems_rfs_buffer_handle_release (fs, &handle->buffer);
51408: 486a 0010 pea %a2@(16)
5140c: 2f2e 0008 movel %fp@(8),%sp@-
51410: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release>
handle->node = NULL;
51416: 508f addql #8,%sp
51418: 42aa 000c clrl %a2@(12)
}
}
return rc;
}
5141c: 242e fff8 movel %fp@(-8),%d2
51420: 246e fffc moveal %fp@(-4),%a2
51424: 4e5e unlk %fp
51426: 4e75 rts
bool update_ctime)
{
int rc = 0;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_UNLOAD))
printf ("rtems-rfs: inode-unload: ino=%" PRIu32 " loads=%i loaded=%s\n",
51428: 203c 0007 1dff movel #466431,%d0 <== NOT EXECUTED
5142e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
51430: 2f2a 0022 movel %a2@(34),%sp@- <== NOT EXECUTED
51434: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
51438: 4879 0007 1a1c pea 71a1c <_CPU_m68k_BFFFO_table+0xb0d> <== NOT EXECUTED
5143e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
51444: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
51448: 6084 bras 513ce <rtems_rfs_inode_unload+0x4a> <== NOT EXECUTED
{
/*
* If the buffer is dirty it will be release. Also set the ctime.
*/
if (rtems_rfs_buffer_dirty (&handle->buffer) && update_ctime)
rtems_rfs_inode_set_ctime (handle, time (NULL));
5144a: 42a7 clrl %sp@-
5144c: 4eb9 0006 503c jsr 6503c <time>
*/
static inline void
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,
rtems_rfs_time ctime)
{
rtems_rfs_write_u32 (&handle->node->ctime, ctime);
51452: 206a 000c moveal %a2@(12),%a0
51456: 2400 movel %d0,%d2
51458: 7218 moveq #24,%d1
5145a: e2aa lsrl %d1,%d2
5145c: 2200 movel %d0,%d1
5145e: e089 lsrl #8,%d1
rtems_rfs_buffer_mark_dirty (&handle->buffer);
51460: 588f addql #4,%sp
*/
static inline void
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,
rtems_rfs_time ctime)
{
rtems_rfs_write_u32 (&handle->node->ctime, ctime);
51462: 1142 0018 moveb %d2,%a0@(24)
51466: 2400 movel %d0,%d2
51468: 206a 000c moveal %a2@(12),%a0
5146c: 4242 clrw %d2
5146e: 4842 swap %d2
51470: 1142 0019 moveb %d2,%a0@(25)
51474: 206a 000c moveal %a2@(12),%a0
51478: 1141 001a moveb %d1,%a0@(26)
5147c: 206a 000c moveal %a2@(12),%a0
51480: 1140 001b moveb %d0,%a0@(27)
rtems_rfs_buffer_mark_dirty (&handle->buffer);
51484: 7001 moveq #1,%d0
51486: 1540 0010 moveb %d0,%a2@(16)
rc = rtems_rfs_buffer_handle_release (fs, &handle->buffer);
5148a: 486a 0010 pea %a2@(16)
5148e: 2f2e 0008 movel %fp@(8),%sp@-
51492: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release>
handle->node = NULL;
51498: 508f addql #8,%sp
5149a: 42aa 000c clrl %a2@(12)
5149e: 6000 ff7c braw 5141c <rtems_rfs_inode_unload+0x98>
0005dab4 <rtems_rfs_link>:
const char* name,
int length,
rtems_rfs_ino parent,
rtems_rfs_ino target,
bool link_dir)
{
5dab4: 4e56 ff98 linkw %fp,#-104 <== NOT EXECUTED
5dab8: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
rtems_rfs_inode_handle parent_inode;
rtems_rfs_inode_handle target_inode;
uint16_t links;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))
5dabc: 2f3c 0100 0000 movel #16777216,%sp@- <== NOT EXECUTED
const char* name,
int length,
rtems_rfs_ino parent,
rtems_rfs_ino target,
bool link_dir)
{
5dac2: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_rfs_inode_handle parent_inode;
rtems_rfs_inode_handle target_inode;
uint16_t links;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))
5dac6: 42a7 clrl %sp@- <== NOT EXECUTED
const char* name,
int length,
rtems_rfs_ino parent,
rtems_rfs_ino target,
bool link_dir)
{
5dac8: 282e 0018 movel %fp@(24),%d4 <== NOT EXECUTED
5dacc: 1a2e 001f moveb %fp@(31),%d5 <== NOT EXECUTED
rtems_rfs_inode_handle parent_inode;
rtems_rfs_inode_handle target_inode;
uint16_t links;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))
5dad0: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5dad6: 508f addql #8,%sp <== NOT EXECUTED
5dad8: 4a00 tstb %d0 <== NOT EXECUTED
5dada: 6600 0102 bnew 5dbde <rtems_rfs_link+0x12a> <== NOT EXECUTED
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf ("(%" PRIu32 ")\n", target);
}
rc = rtems_rfs_inode_open (fs, target, &target_inode, true);
5dade: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5dae2: 260e movel %fp,%d3 <== NOT EXECUTED
5dae4: 0683 ffff ffda addil #-38,%d3 <== NOT EXECUTED
5daea: 47f9 0005 12b4 lea 512b4 <rtems_rfs_inode_open>,%a3 <== NOT EXECUTED
5daf0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5daf2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5daf4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5daf6: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc)
5daf8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf ("(%" PRIu32 ")\n", target);
}
rc = rtems_rfs_inode_open (fs, target, &target_inode, true);
5dafc: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (rc)
5dafe: 4a80 tstl %d0 <== NOT EXECUTED
5db00: 6600 00d0 bnew 5dbd2 <rtems_rfs_link+0x11e> <== NOT EXECUTED
/*
* If the target inode is a directory and we cannot link directories
* return a not supported error code.
*/
if (!link_dir && S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)))
5db04: 4a05 tstb %d5 <== NOT EXECUTED
5db06: 661c bnes 5db24 <rtems_rfs_link+0x70> <== NOT EXECUTED
5db08: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
5db0c: 4281 clrl %d1 <== NOT EXECUTED
5db0e: 1228 0002 moveb %a0@(2),%d1 <== NOT EXECUTED
5db12: e189 lsll #8,%d1 <== NOT EXECUTED
5db14: 0281 0000 f000 andil #61440,%d1 <== NOT EXECUTED
5db1a: 0c81 0000 4000 cmpil #16384,%d1 <== NOT EXECUTED
5db20: 6700 0140 beqw 5dc62 <rtems_rfs_link+0x1ae> <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &target_inode);
return ENOTSUP;
}
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
5db24: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5db28: 2a0e movel %fp,%d5 <== NOT EXECUTED
5db2a: 0685 ffff ffb4 addil #-76,%d5 <== NOT EXECUTED
5db30: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5db32: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5db36: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5db38: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc)
5db3a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &target_inode);
return ENOTSUP;
}
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
5db3e: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (rc)
5db40: 4a80 tstl %d0 <== NOT EXECUTED
5db42: 6600 0106 bnew 5dc4a <rtems_rfs_link+0x196> <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, target);
5db46: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5db48: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5db4c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5db50: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5db52: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5db54: 4eb9 0005 aeca jsr 5aeca <rtems_rfs_dir_add_entry> <== NOT EXECUTED
if (rc > 0)
5db5a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, target);
5db5e: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (rc > 0)
5db60: 4a80 tstl %d0 <== NOT EXECUTED
5db62: 6e00 00c4 bgtw 5dc28 <rtems_rfs_link+0x174> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &parent_inode);
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
links = rtems_rfs_inode_get_links (&target_inode) + 1;
5db66: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
*/
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
5db6a: 4280 clrl %d0 <== NOT EXECUTED
5db6c: 1010 moveb %a0@,%d0 <== NOT EXECUTED
5db6e: 4281 clrl %d1 <== NOT EXECUTED
5db70: 1228 0001 moveb %a0@(1),%d1 <== NOT EXECUTED
5db74: e188 lsll #8,%d0 <== NOT EXECUTED
5db76: 8081 orl %d1,%d0 <== NOT EXECUTED
if (links == 0xffff)
5db78: 0c80 0000 ffff cmpil #65535,%d0 <== NOT EXECUTED
5db7e: 6700 00fe beqw 5dc7e <rtems_rfs_link+0x1ca> <== NOT EXECUTED
5db82: 5280 addql #1,%d0 <== NOT EXECUTED
5db84: 4281 clrl %d1 <== NOT EXECUTED
5db86: 3200 movew %d0,%d1 <== NOT EXECUTED
5db88: e089 lsrl #8,%d1 <== NOT EXECUTED
* @prarm links The links.
*/
static inline void
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{
rtems_rfs_write_u16 (&handle->node->links, links);
5db8a: 1081 moveb %d1,%a0@ <== NOT EXECUTED
5db8c: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
5db90: 1140 0001 moveb %d0,%a0@(1) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5db94: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_rfs_inode_set_links (&target_inode, links);
rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);
5db96: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5db9a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5db9e: 1d40 ffea moveb %d0,%fp@(-22) <== NOT EXECUTED
5dba2: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5dba4: 4eb9 0005 1672 jsr 51672 <rtems_rfs_inode_time_stamp_now> <== NOT EXECUTED
if (rc > 0)
5dbaa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
links = rtems_rfs_inode_get_links (&target_inode) + 1;
rtems_rfs_inode_set_links (&target_inode, links);
rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);
5dbae: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (rc > 0)
5dbb0: 4a80 tstl %d0 <== NOT EXECUTED
5dbb2: 6e74 bgts 5dc28 <rtems_rfs_link+0x174> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &parent_inode);
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_inode_close (fs, &parent_inode);
5dbb4: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5dbb6: 47f9 0005 14a2 lea 514a2 <rtems_rfs_inode_close>,%a3 <== NOT EXECUTED
5dbbc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5dbbe: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc > 0)
5dbc0: 508f addql #8,%sp <== NOT EXECUTED
rtems_rfs_inode_close (fs, &parent_inode);
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_inode_close (fs, &parent_inode);
5dbc2: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (rc > 0)
5dbc4: 4a80 tstl %d0 <== NOT EXECUTED
5dbc6: 6f00 00be blew 5dc86 <rtems_rfs_link+0x1d2> <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &target_inode);
5dbca: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dbcc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5dbce: 4e93 jsr %a3@ <== NOT EXECUTED
5dbd0: 508f addql #8,%sp <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
5dbd2: 200a movel %a2,%d0 <== NOT EXECUTED
5dbd4: 4cee 1c3c ff98 moveml %fp@(-104),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5dbda: 4e5e unlk %fp <== NOT EXECUTED
5dbdc: 4e75 rts <== NOT EXECUTED
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))
{
int c;
printf ("rtems-rfs: link: parent(%" PRIu32 ") -> ", parent);
5dbde: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5dbe2: 49f9 0006 16ec lea 616ec <printf>,%a4 <== NOT EXECUTED
5dbe8: 4879 0007 338e pea 7338e <CSWTCH.2+0x12c6> <== NOT EXECUTED
5dbee: 4e94 jsr %a4@ <== NOT EXECUTED
for (c = 0; c < length; c++)
5dbf0: 508f addql #8,%sp <== NOT EXECUTED
5dbf2: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
5dbf6: 6f20 bles 5dc18 <rtems_rfs_link+0x164> <== NOT EXECUTED
#include <rtems/rfs/rtems-rfs-dir.h>
#include <rtems/rfs/rtems-rfs-dir-hash.h>
#include <rtems/rfs/rtems-rfs-link.h>
int
rtems_rfs_link (rtems_rfs_file_system* fs,
5dbf8: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
5dbfc: d6ae 0010 addl %fp@(16),%d3 <== NOT EXECUTED
5dc00: 47f9 0006 187c lea 6187c <putchar>,%a3 <== NOT EXECUTED
5dc06: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))
{
int c;
printf ("rtems-rfs: link: parent(%" PRIu32 ") -> ", parent);
for (c = 0; c < length; c++)
printf ("%c", name[c]);
5dc0a: 101a moveb %a2@+,%d0 <== NOT EXECUTED
5dc0c: 49c0 extbl %d0 <== NOT EXECUTED
5dc0e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5dc10: 4e93 jsr %a3@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))
{
int c;
printf ("rtems-rfs: link: parent(%" PRIu32 ") -> ", parent);
for (c = 0; c < length; c++)
5dc12: 588f addql #4,%sp <== NOT EXECUTED
5dc14: b68a cmpl %a2,%d3 <== NOT EXECUTED
5dc16: 66f2 bnes 5dc0a <rtems_rfs_link+0x156> <== NOT EXECUTED
printf ("%c", name[c]);
printf ("(%" PRIu32 ")\n", target);
5dc18: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5dc1a: 4879 0007 33d3 pea 733d3 <CSWTCH.2+0x130b> <== NOT EXECUTED
5dc20: 4e94 jsr %a4@ <== NOT EXECUTED
5dc22: 508f addql #8,%sp <== NOT EXECUTED
5dc24: 6000 feb8 braw 5dade <rtems_rfs_link+0x2a> <== NOT EXECUTED
rtems_rfs_inode_set_links (&target_inode, links);
rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);
if (rc > 0)
{
rtems_rfs_inode_close (fs, &parent_inode);
5dc28: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5dc2a: 47f9 0005 14a2 lea 514a2 <rtems_rfs_inode_close>,%a3 <== NOT EXECUTED
5dc30: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5dc32: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_rfs_inode_close (fs, &target_inode);
5dc34: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dc36: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5dc38: 4e93 jsr %a3@ <== NOT EXECUTED
5dc3a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
5dc3e: 200a movel %a2,%d0 <== NOT EXECUTED
5dc40: 4cee 1c3c ff98 moveml %fp@(-104),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5dc46: 4e5e unlk %fp <== NOT EXECUTED
5dc48: 4e75 rts <== NOT EXECUTED
}
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
if (rc)
{
rtems_rfs_inode_close (fs, &target_inode);
5dc4a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dc4c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5dc4e: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5dc54: 508f addql #8,%sp <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
5dc56: 200a movel %a2,%d0 <== NOT EXECUTED
5dc58: 4cee 1c3c ff98 moveml %fp@(-104),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5dc5e: 4e5e unlk %fp <== NOT EXECUTED
5dc60: 4e75 rts <== NOT EXECUTED
* If the target inode is a directory and we cannot link directories
* return a not supported error code.
*/
if (!link_dir && S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)))
{
rtems_rfs_inode_close (fs, &target_inode);
5dc62: 2f03 movel %d3,%sp@- <== NOT EXECUTED
return ENOTSUP;
5dc64: 347c 0086 moveaw #134,%a2 <== NOT EXECUTED
* If the target inode is a directory and we cannot link directories
* return a not supported error code.
*/
if (!link_dir && S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)))
{
rtems_rfs_inode_close (fs, &target_inode);
5dc68: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5dc6a: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5dc70: 508f addql #8,%sp <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
5dc72: 200a movel %a2,%d0 <== NOT EXECUTED
5dc74: 4cee 1c3c ff98 moveml %fp@(-104),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5dc7a: 4e5e unlk %fp <== NOT EXECUTED
5dc7c: 4e75 rts <== NOT EXECUTED
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
if (links == 0xffff)
5dc7e: 7001 moveq #1,%d0 <== NOT EXECUTED
5dc80: 4201 clrb %d1 <== NOT EXECUTED
5dc82: 6000 ff06 braw 5db8a <rtems_rfs_link+0xd6> <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_inode_close (fs, &target_inode);
5dc86: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dc88: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5dc8a: 4e93 jsr %a3@ <== NOT EXECUTED
5dc8c: 508f addql #8,%sp <== NOT EXECUTED
5dc8e: 2440 moveal %d0,%a2 <== NOT EXECUTED
return rc;
}
5dc90: 200a movel %a2,%d0 <== NOT EXECUTED
5dc92: 4cee 1c3c ff98 moveml %fp@(-104),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5dc98: 4e5e unlk %fp <== NOT EXECUTED
0005e5ac <rtems_rfs_mutex_create>:
RTEMS_INHERIT_PRIORITY | RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL)
#endif
int
rtems_rfs_mutex_create (rtems_rfs_mutex* mutex)
{
5e5ac: 4e56 0000 linkw %fp,#0
5e5b0: 2f02 movel %d2,%sp@-
#if __rtems__
rtems_status_code sc;
sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'),
5e5b2: 2f2e 0008 movel %fp@(8),%sp@-
5e5b6: 42a7 clrl %sp@-
5e5b8: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
5e5bc: 4878 0001 pea 1 <ADD>
5e5c0: 2f3c 5246 536d movel #1380340589,%sp@-
5e5c6: 4eb9 0004 befc jsr 4befc <rtems_semaphore_create>
1, RTEMS_RFS_MUTEX_ATTRIBS, 0,
mutex);
if (sc != RTEMS_SUCCESSFUL)
5e5cc: 4fef 0014 lea %sp@(20),%sp
int
rtems_rfs_mutex_create (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc;
sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'),
5e5d0: 2400 movel %d0,%d2
1, RTEMS_RFS_MUTEX_ATTRIBS, 0,
mutex);
if (sc != RTEMS_SUCCESSFUL)
5e5d2: 660a bnes 5e5de <rtems_rfs_mutex_create+0x32> <== ALWAYS TAKEN
rtems_status_text (sc));
return EIO;
}
#endif
return 0;
}
5e5d4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
printf ("rtems-rfs: mutex: open failed: %s\n",
rtems_status_text (sc));
return EIO;
}
#endif
return 0;
5e5d8: 4280 clrl %d0 <== NOT EXECUTED
}
5e5da: 4e5e unlk %fp <== NOT EXECUTED
5e5dc: 4e75 rts <== NOT EXECUTED
sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'),
1, RTEMS_RFS_MUTEX_ATTRIBS, 0,
mutex);
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5e5de: 4878 0004 pea 4 <CONTEXT_ARG>
5e5e2: 42a7 clrl %sp@-
5e5e4: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
5e5ea: 508f addql #8,%sp
5e5ec: 4a00 tstb %d0
5e5ee: 660a bnes 5e5fa <rtems_rfs_mutex_create+0x4e> <== NEVER TAKEN
rtems_status_text (sc));
return EIO;
}
#endif
return 0;
}
5e5f0: 242e fffc movel %fp@(-4),%d2
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
printf ("rtems-rfs: mutex: open failed: %s\n",
rtems_status_text (sc));
return EIO;
5e5f4: 7005 moveq #5,%d0
}
#endif
return 0;
}
5e5f6: 4e5e unlk %fp
5e5f8: 4e75 rts
1, RTEMS_RFS_MUTEX_ATTRIBS, 0,
mutex);
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
printf ("rtems-rfs: mutex: open failed: %s\n",
5e5fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5e5fc: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5e602: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e604: 4879 0007 35ac pea 735ac <CSWTCH.2+0x14e4> <== NOT EXECUTED
5e60a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
rtems_status_text (sc));
return EIO;
}
#endif
return 0;
}
5e610: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
1, RTEMS_RFS_MUTEX_ATTRIBS, 0,
mutex);
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
printf ("rtems-rfs: mutex: open failed: %s\n",
5e614: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_status_text (sc));
return EIO;
5e618: 7005 moveq #5,%d0 <== NOT EXECUTED
}
#endif
return 0;
}
5e61a: 4e5e unlk %fp <== NOT EXECUTED
0005e61e <rtems_rfs_mutex_destroy>:
int
rtems_rfs_mutex_destroy (rtems_rfs_mutex* mutex)
{
5e61e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5e622: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
5e626: 2f02 movel %d2,%sp@- <== NOT EXECUTED
#if __rtems__
rtems_status_code sc;
sc = rtems_semaphore_delete (*mutex);
5e628: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
5e62a: 4eb9 0004 c0e8 jsr 4c0e8 <rtems_semaphore_delete> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5e630: 588f addql #4,%sp <== NOT EXECUTED
int
rtems_rfs_mutex_destroy (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc;
sc = rtems_semaphore_delete (*mutex);
5e632: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5e634: 660a bnes 5e640 <rtems_rfs_mutex_destroy+0x22> <== NOT EXECUTED
rtems_status_text (sc));
return EIO;
}
#endif
return 0;
}
5e636: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
printf ("rtems-rfs: mutex: close failed: %s\n",
rtems_status_text (sc));
return EIO;
}
#endif
return 0;
5e63a: 4280 clrl %d0 <== NOT EXECUTED
}
5e63c: 4e5e unlk %fp <== NOT EXECUTED
5e63e: 4e75 rts <== NOT EXECUTED
#if __rtems__
rtems_status_code sc;
sc = rtems_semaphore_delete (*mutex);
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5e640: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5e644: 42a7 clrl %sp@- <== NOT EXECUTED
5e646: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5e64c: 508f addql #8,%sp <== NOT EXECUTED
5e64e: 4a00 tstb %d0 <== NOT EXECUTED
5e650: 660a bnes 5e65c <rtems_rfs_mutex_destroy+0x3e> <== NOT EXECUTED
rtems_status_text (sc));
return EIO;
}
#endif
return 0;
}
5e652: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
printf ("rtems-rfs: mutex: close failed: %s\n",
rtems_status_text (sc));
return EIO;
5e656: 7005 moveq #5,%d0 <== NOT EXECUTED
}
#endif
return 0;
}
5e658: 4e5e unlk %fp <== NOT EXECUTED
5e65a: 4e75 rts <== NOT EXECUTED
rtems_status_code sc;
sc = rtems_semaphore_delete (*mutex);
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
printf ("rtems-rfs: mutex: close failed: %s\n",
5e65c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5e65e: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5e664: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e666: 4879 0007 35cf pea 735cf <CSWTCH.2+0x1507> <== NOT EXECUTED
5e66c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
rtems_status_text (sc));
return EIO;
}
#endif
return 0;
}
5e672: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
rtems_status_code sc;
sc = rtems_semaphore_delete (*mutex);
if (sc != RTEMS_SUCCESSFUL)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
printf ("rtems-rfs: mutex: close failed: %s\n",
5e676: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_status_text (sc));
return EIO;
5e67a: 7005 moveq #5,%d0 <== NOT EXECUTED
}
#endif
return 0;
}
5e67c: 4e5e unlk %fp <== NOT EXECUTED
00059e0c <rtems_rfs_release_chain>:
static int
rtems_rfs_release_chain (rtems_chain_control* chain,
uint32_t* count,
bool modified)
{
59e0c: 4e56 ffe4 linkw %fp,#-28
59e10: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
rtems_rfs_buffer* buffer;
int rrc = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
59e14: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b>
static int
rtems_rfs_release_chain (rtems_chain_control* chain,
uint32_t* count,
bool modified)
{
59e18: 246e 0008 moveal %fp@(8),%a2
rtems_rfs_buffer* buffer;
int rrc = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
59e1c: 42a7 clrl %sp@-
static int
rtems_rfs_release_chain (rtems_chain_control* chain,
uint32_t* count,
bool modified)
{
59e1e: 266e 000c moveal %fp@(12),%a3
59e22: 182e 0013 moveb %fp@(19),%d4
rtems_rfs_buffer* buffer;
int rrc = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
59e26: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace>
59e2c: 508f addql #8,%sp
59e2e: 4a00 tstb %d0
59e30: 664c bnes 59e7e <rtems_rfs_release_chain+0x72> <== NEVER TAKEN
59e32: 260a movel %a2,%d3
(*count)--;
buffer->user = (void*) 0;
rc = rtems_rfs_buffer_io_release (buffer, modified);
if ((rc > 0) && (rrc == 0))
59e34: 4282 clrl %d2
59e36: 5883 addql #4,%d3
*/
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(
rtems_chain_control *the_chain
)
{
return _Chain_Get( the_chain );
59e38: 4bf9 0004 cd20 lea 4cd20 <_Chain_Get>,%a5
buffer = (rtems_rfs_buffer*) rtems_chain_get (chain);
(*count)--;
buffer->user = (void*) 0;
rc = rtems_rfs_buffer_io_release (buffer, modified);
59e3e: 49f9 0006 0052 lea 60052 <rtems_rfs_buffer_bdbuf_release>,%a4
59e44: 0284 0000 00ff andil #255,%d4
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count);
while (!rtems_chain_is_empty (chain))
59e4a: b692 cmpl %a2@,%d3
59e4c: 6724 beqs 59e72 <rtems_rfs_release_chain+0x66> <== ALWAYS TAKEN
59e4e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59e50: 4e95 jsr %a5@ <== NOT EXECUTED
{
buffer = (rtems_rfs_buffer*) rtems_chain_get (chain);
(*count)--;
59e52: 5393 subql #1,%a3@ <== NOT EXECUTED
buffer->user = (void*) 0;
59e54: 2040 moveal %d0,%a0 <== NOT EXECUTED
59e56: 42a8 0032 clrl %a0@(50) <== NOT EXECUTED
rc = rtems_rfs_buffer_io_release (buffer, modified);
59e5a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
59e5c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
59e5e: 4e94 jsr %a4@ <== NOT EXECUTED
if ((rc > 0) && (rrc == 0))
59e60: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59e64: 4a80 tstl %d0 <== NOT EXECUTED
59e66: 6fe2 bles 59e4a <rtems_rfs_release_chain+0x3e> <== NOT EXECUTED
59e68: 4a82 tstl %d2 <== NOT EXECUTED
59e6a: 66de bnes 59e4a <rtems_rfs_release_chain+0x3e> <== NOT EXECUTED
59e6c: 2400 movel %d0,%d2 <== NOT EXECUTED
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count);
while (!rtems_chain_is_empty (chain))
59e6e: b692 cmpl %a2@,%d3 <== NOT EXECUTED
59e70: 66dc bnes 59e4e <rtems_rfs_release_chain+0x42> <== NOT EXECUTED
rc = rtems_rfs_buffer_io_release (buffer, modified);
if ((rc > 0) && (rrc == 0))
rrc = rc;
}
return rrc;
}
59e72: 2002 movel %d2,%d0
59e74: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
59e7a: 4e5e unlk %fp
59e7c: 4e75 rts
rtems_rfs_buffer* buffer;
int rrc = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count);
59e7e: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
59e80: 260a movel %a2,%d3 <== NOT EXECUTED
59e82: 4879 0007 21c5 pea 721c5 <CSWTCH.2+0xfd> <== NOT EXECUTED
(*count)--;
buffer->user = (void*) 0;
rc = rtems_rfs_buffer_io_release (buffer, modified);
if ((rc > 0) && (rrc == 0))
59e88: 4282 clrl %d2 <== NOT EXECUTED
59e8a: 5883 addql #4,%d3 <== NOT EXECUTED
59e8c: 4bf9 0004 cd20 lea 4cd20 <_Chain_Get>,%a5 <== NOT EXECUTED
buffer = (rtems_rfs_buffer*) rtems_chain_get (chain);
(*count)--;
buffer->user = (void*) 0;
rc = rtems_rfs_buffer_io_release (buffer, modified);
59e92: 49f9 0006 0052 lea 60052 <rtems_rfs_buffer_bdbuf_release>,%a4<== NOT EXECUTED
rtems_rfs_buffer* buffer;
int rrc = 0;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count);
59e98: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
59e9e: 508f addql #8,%sp <== NOT EXECUTED
buffer = (rtems_rfs_buffer*) rtems_chain_get (chain);
(*count)--;
buffer->user = (void*) 0;
rc = rtems_rfs_buffer_io_release (buffer, modified);
59ea0: 0284 0000 00ff andil #255,%d4 <== NOT EXECUTED
59ea6: 60a2 bras 59e4a <rtems_rfs_release_chain+0x3e> <== NOT EXECUTED
00052040 <rtems_rfs_rtems_chown>:
static int
rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc,
uid_t owner,
gid_t group)
{
52040: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
52044: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
52048: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
static int
rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc,
uid_t owner,
gid_t group)
{
5204c: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
52050: 2629 0008 movel %a1@(8),%d3 <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_CHOWN))
printf ("rtems-rfs-rtems: chown: in: ino:%" PRId32 " uid:%d gid:%d\n",
ino, owner, group);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
52054: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
52058: 486e ffda pea %fp@(-38) <== NOT EXECUTED
5205c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
static int
rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc,
uid_t owner,
gid_t group)
{
52060: 382e 000e movew %fp@(14),%d4 <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_CHOWN))
printf ("rtems-rfs-rtems: chown: in: ino:%" PRId32 " uid:%d gid:%d\n",
ino, owner, group);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
52064: 2f03 movel %d3,%sp@- <== NOT EXECUTED
static int
rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc,
uid_t owner,
gid_t group)
{
52066: 3a2e 0012 movew %fp@(18),%d5 <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_CHOWN))
printf ("rtems-rfs-rtems: chown: in: ino:%" PRId32 " uid:%d gid:%d\n",
ino, owner, group);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5206a: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc > 0)
52070: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_CHOWN))
printf ("rtems-rfs-rtems: chown: in: ino:%" PRId32 " uid:%d gid:%d\n",
ino, owner, group);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
52074: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
52076: 6f18 bles 52090 <rtems_rfs_rtems_chown+0x50> <== NOT EXECUTED
rtems_rfs_inode_set_uid_gid (&inode, owner, group);
rc = rtems_rfs_inode_close (fs, &inode);
if (rc)
{
return rtems_rfs_rtems_error ("chown: closing inode", rc);
52078: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5207e: 72ff moveq #-1,%d1 <== NOT EXECUTED
52080: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
return 0;
}
52082: 2001 movel %d1,%d0 <== NOT EXECUTED
rtems_rfs_inode_set_uid_gid (&inode, owner, group);
rc = rtems_rfs_inode_close (fs, &inode);
if (rc)
{
return rtems_rfs_rtems_error ("chown: closing inode", rc);
52084: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return 0;
}
52086: 4cee 003c ffc8 moveml %fp@(-56),%d2-%d5 <== NOT EXECUTED
5208c: 4e5e unlk %fp <== NOT EXECUTED
5208e: 4e75 rts <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_uid_gid (rtems_rfs_inode_handle* handle,
uint16_t uid, uint16_t gid)
{
rtems_rfs_write_u32 (&handle->node->owner, (((uint32_t) gid) << 16) | uid);
52090: 2005 movel %d5,%d0 <== NOT EXECUTED
52092: 4281 clrl %d1 <== NOT EXECUTED
52094: 4840 swap %d0 <== NOT EXECUTED
52096: 4240 clrw %d0 <== NOT EXECUTED
52098: 3204 movew %d4,%d1 <== NOT EXECUTED
5209a: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
5209e: 8081 orl %d1,%d0 <== NOT EXECUTED
520a0: 7218 moveq #24,%d1 <== NOT EXECUTED
520a2: 2400 movel %d0,%d2 <== NOT EXECUTED
520a4: e2aa lsrl %d1,%d2 <== NOT EXECUTED
520a6: 2200 movel %d0,%d1 <== NOT EXECUTED
520a8: e089 lsrl #8,%d1 <== NOT EXECUTED
520aa: 1142 0004 moveb %d2,%a0@(4) <== NOT EXECUTED
520ae: 4240 clrw %d0 <== NOT EXECUTED
520b0: 4840 swap %d0 <== NOT EXECUTED
520b2: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
520b6: 1140 0005 moveb %d0,%a0@(5) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
520ba: 7001 moveq #1,%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_uid_gid (rtems_rfs_inode_handle* handle,
uint16_t uid, uint16_t gid)
{
rtems_rfs_write_u32 (&handle->node->owner, (((uint32_t) gid) << 16) | uid);
520bc: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
520c0: 1141 0006 moveb %d1,%a0@(6) <== NOT EXECUTED
520c4: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
520c8: 1144 0007 moveb %d4,%a0@(7) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
520cc: 1d40 ffea moveb %d0,%fp@(-22) <== NOT EXECUTED
}
#endif
rtems_rfs_inode_set_uid_gid (&inode, owner, group);
rc = rtems_rfs_inode_close (fs, &inode);
520d0: 486e ffda pea %fp@(-38) <== NOT EXECUTED
520d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
520d6: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc)
520dc: 508f addql #8,%sp <== NOT EXECUTED
}
#endif
rtems_rfs_inode_set_uid_gid (&inode, owner, group);
rc = rtems_rfs_inode_close (fs, &inode);
520de: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
520e0: 6696 bnes 52078 <rtems_rfs_rtems_chown+0x38> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("chown: closing inode", rc);
}
return 0;
520e2: 4281 clrl %d1 <== NOT EXECUTED
}
520e4: 2001 movel %d1,%d0 <== NOT EXECUTED
520e6: 4cee 003c ffc8 moveml %fp@(-56),%d2-%d5 <== NOT EXECUTED
520ec: 4e5e unlk %fp <== NOT EXECUTED
0005e6f6 <rtems_rfs_rtems_device_close>:
* @return int
*/
static int
rtems_rfs_rtems_device_close (rtems_libio_t* iop)
{
5e6f6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5e6fa: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_device_major_number major;
rtems_device_minor_number minor;
rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);
return rtems_deviceio_close (iop, major, minor);
5e6fe: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED
5e702: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED
5e706: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5e708: 4eb9 0005 fbce jsr 5fbce <rtems_deviceio_close> <== NOT EXECUTED
}
5e70e: 4e5e unlk %fp <== NOT EXECUTED
0005e680 <rtems_rfs_rtems_device_ftruncate>:
static int
rtems_rfs_rtems_device_ftruncate (rtems_libio_t* iop, off_t length)
{
return 0;
}
5e680: 4280 clrl %d0 <== NOT EXECUTED
* @return int
*/
static int
rtems_rfs_rtems_device_ftruncate (rtems_libio_t* iop, off_t length)
{
5e682: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
5e686: 4e5e unlk %fp <== NOT EXECUTED
0005e68a <rtems_rfs_rtems_device_ioctl>:
static int
rtems_rfs_rtems_device_ioctl (rtems_libio_t* iop,
ioctl_command_t command,
void* buffer)
{
5e68a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5e68e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_device_major_number major;
rtems_device_minor_number minor;
rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);
return rtems_deviceio_control (iop, command, buffer, major, minor);
5e692: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED
5e696: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED
5e69a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5e69e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5e6a2: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5e6a4: 4eb9 0005 fd06 jsr 5fd06 <rtems_deviceio_control> <== NOT EXECUTED
}
5e6aa: 4e5e unlk %fp <== NOT EXECUTED
0005e712 <rtems_rfs_rtems_device_open>:
static int
rtems_rfs_rtems_device_open ( rtems_libio_t *iop,
const char *pathname,
int oflag,
mode_t mode)
{
5e712: 4e56 ffac linkw %fp,#-84 <== NOT EXECUTED
5e716: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
5e71a: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
5e71e: 206b 0024 moveal %a3@(36),%a0 <== NOT EXECUTED
5e722: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5e726: 42a7 clrl %sp@- <== NOT EXECUTED
5e728: 42a7 clrl %sp@- <== NOT EXECUTED
.fstat_h = rtems_rfs_rtems_fstat,
.ftruncate_h = rtems_rfs_rtems_device_ftruncate,
.fsync_h = rtems_filesystem_default_fsync_or_fdatasync,
.fdatasync_h = rtems_filesystem_default_fsync_or_fdatasync,
.fcntl_h = rtems_filesystem_default_fcntl
};
5e72a: 206a 0080 moveal %a2@(128),%a0 <== NOT EXECUTED
5e72e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
const char *pathname,
int oflag,
mode_t mode)
{
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
rtems_rfs_ino ino = rtems_rfs_rtems_get_iop_ino (iop);
5e730: 262b 0018 movel %a3@(24),%d3 <== NOT EXECUTED
5e734: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5e73a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5e73e: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5e740: 664c bnes 5e78e <rtems_rfs_rtems_device_open+0x7c><== NOT EXECUTED
rtems_device_minor_number minor;
int rc;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5e742: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5e746: 486e ffda pea %fp@(-38) <== NOT EXECUTED
5e74a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e74c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5e74e: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc > 0)
5e754: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_device_minor_number minor;
int rc;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5e758: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e75a: 6f00 00b6 blew 5e812 <rtems_rfs_rtems_device_open+0x100><== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5e75e: 266a 0080 moveal %a2@(128),%a3 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5e762: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5e764: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5e76a: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
5e76c: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5e772: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5e774: 2600 movel %d0,%d3 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5e776: 665e bnes 5e7d6 <rtems_rfs_rtems_device_open+0xc4><== NOT EXECUTED
rc = rtems_rfs_inode_close (fs, &inode);
if (rc > 0)
{
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("device_open: closing inode", rc);
5e778: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5e77e: 2040 moveal %d0,%a0 <== NOT EXECUTED
5e780: 70ff moveq #-1,%d0 <== NOT EXECUTED
5e782: 2082 movel %d2,%a0@ <== NOT EXECUTED
iop->data0 = major;
iop->data1 = (void *) minor;
return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
}
5e784: 4cee 3cfc ffac moveml %fp@(-84),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5e78a: 4e5e unlk %fp <== NOT EXECUTED
5e78c: 4e75 rts <== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5e78e: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5e792: 42a7 clrl %sp@- <== NOT EXECUTED
5e794: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5e79a: 508f addql #8,%sp <== NOT EXECUTED
5e79c: 4a00 tstb %d0 <== NOT EXECUTED
5e79e: 67a2 beqs 5e742 <rtems_rfs_rtems_device_open+0x30><== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
5e7a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5e7a2: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5e7a8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e7aa: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
5e7b0: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5e7b6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_device_minor_number minor;
int rc;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5e7ba: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5e7be: 486e ffda pea %fp@(-38) <== NOT EXECUTED
5e7c2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e7c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5e7c6: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc > 0)
5e7cc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_device_minor_number minor;
int rc;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5e7d0: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e7d2: 6e8a bgts 5e75e <rtems_rfs_rtems_device_open+0x4c><== NOT EXECUTED
5e7d4: 603c bras 5e812 <rtems_rfs_rtems_device_open+0x100><== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5e7d6: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5e7da: 42a7 clrl %sp@- <== NOT EXECUTED
5e7dc: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5e7e2: 508f addql #8,%sp <== NOT EXECUTED
5e7e4: 4a00 tstb %d0 <== NOT EXECUTED
5e7e6: 6790 beqs 5e778 <rtems_rfs_rtems_device_open+0x66><== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5e7e8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e7ea: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5e7f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e7f2: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5e7f8: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5e7fe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rc = rtems_rfs_inode_close (fs, &inode);
if (rc > 0)
{
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("device_open: closing inode", rc);
5e802: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5e808: 2040 moveal %d0,%a0 <== NOT EXECUTED
5e80a: 70ff moveq #-1,%d0 <== NOT EXECUTED
5e80c: 2082 movel %d2,%a0@ <== NOT EXECUTED
5e80e: 6000 ff74 braw 5e784 <rtems_rfs_rtems_device_open+0x72><== NOT EXECUTED
{
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("device_open: opening inode", rc);
}
major = rtems_rfs_inode_get_block (&inode, 0);
5e812: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
* @return uint32_t The block number.
*/
static inline uint32_t
rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block)
{
return rtems_rfs_read_u32 (&handle->node->data.blocks[block]);
5e816: 1428 0022 moveb %a0@(34),%d2 <== NOT EXECUTED
5e81a: 1028 001c moveb %a0@(28),%d0 <== NOT EXECUTED
5e81e: 1228 001d moveb %a0@(29),%d1 <== NOT EXECUTED
5e822: 1a28 001e moveb %a0@(30),%d5 <== NOT EXECUTED
5e826: 1c28 001f moveb %a0@(31),%d6 <== NOT EXECUTED
5e82a: 1828 0020 moveb %a0@(32),%d4 <== NOT EXECUTED
5e82e: 1e28 0021 moveb %a0@(33),%d7 <== NOT EXECUTED
5e832: 1628 0023 moveb %a0@(35),%d3 <== NOT EXECUTED
minor = rtems_rfs_inode_get_block (&inode, 1);
rc = rtems_rfs_inode_close (fs, &inode);
5e836: 486e ffda pea %fp@(-38) <== NOT EXECUTED
5e83a: 1d42 ffd7 moveb %d2,%fp@(-41) <== NOT EXECUTED
5e83e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5e840: 3840 moveaw %d0,%a4 <== NOT EXECUTED
5e842: 3a41 moveaw %d1,%a5 <== NOT EXECUTED
5e844: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc > 0)
5e84a: 508f addql #8,%sp <== NOT EXECUTED
}
major = rtems_rfs_inode_get_block (&inode, 0);
minor = rtems_rfs_inode_get_block (&inode, 1);
rc = rtems_rfs_inode_close (fs, &inode);
5e84c: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e84e: 6e00 ff0e bgtw 5e75e <rtems_rfs_rtems_device_open+0x4c><== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5e852: 242a 0080 movel %a2@(128),%d2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5e856: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5e858: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5e85e: 2042 moveal %d2,%a0 <== NOT EXECUTED
5e860: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
5e862: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5e868: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5e86a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5e86c: 6672 bnes 5e8e0 <rtems_rfs_rtems_device_open+0x1ce><== NOT EXECUTED
5e86e: 4281 clrl %d1 <== NOT EXECUTED
5e870: 7418 moveq #24,%d2 <== NOT EXECUTED
5e872: 300d movew %a5,%d0 <== NOT EXECUTED
5e874: 0287 0000 00ff andil #255,%d7 <== NOT EXECUTED
5e87a: 0286 0000 00ff andil #255,%d6 <== NOT EXECUTED
5e880: 1200 moveb %d0,%d1 <== NOT EXECUTED
5e882: 200c movel %a4,%d0 <== NOT EXECUTED
5e884: 4841 swap %d1 <== NOT EXECUTED
5e886: 4241 clrw %d1 <== NOT EXECUTED
5e888: e5a8 lsll %d2,%d0 <== NOT EXECUTED
5e88a: 0285 0000 00ff andil #255,%d5 <== NOT EXECUTED
5e890: 4847 swap %d7 <== NOT EXECUTED
5e892: 4247 clrw %d7 <== NOT EXECUTED
5e894: 8081 orl %d1,%d0 <== NOT EXECUTED
5e896: e5ac lsll %d2,%d4 <== NOT EXECUTED
5e898: 4281 clrl %d1 <== NOT EXECUTED
5e89a: 122e ffd7 moveb %fp@(-41),%d1 <== NOT EXECUTED
5e89e: 8086 orl %d6,%d0 <== NOT EXECUTED
5e8a0: e18d lsll #8,%d5 <== NOT EXECUTED
5e8a2: 8887 orl %d7,%d4 <== NOT EXECUTED
5e8a4: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
5e8aa: 8085 orl %d5,%d0 <== NOT EXECUTED
5e8ac: e189 lsll #8,%d1 <== NOT EXECUTED
rtems_rfs_rtems_unlock (fs);
iop->data0 = major;
iop->data1 = (void *) minor;
return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
5e8ae: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e8b0: 8883 orl %d3,%d4 <== NOT EXECUTED
return rtems_rfs_rtems_error ("device_open: closing inode", rc);
}
rtems_rfs_rtems_unlock (fs);
iop->data0 = major;
5e8b2: 2740 0028 movel %d0,%a3@(40) <== NOT EXECUTED
5e8b6: 8881 orl %d1,%d4 <== NOT EXECUTED
iop->data1 = (void *) minor;
return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
5e8b8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e8ba: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5e8be: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5e8c2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
}
rtems_rfs_rtems_unlock (fs);
iop->data0 = major;
iop->data1 = (void *) minor;
5e8c6: 2744 002c movel %d4,%a3@(44) <== NOT EXECUTED
return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
5e8ca: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5e8cc: 4eb9 0005 fb98 jsr 5fb98 <rtems_deviceio_open> <== NOT EXECUTED
5e8d2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
5e8d6: 4cee 3cfc ffac moveml %fp@(-84),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5e8dc: 4e5e unlk %fp <== NOT EXECUTED
5e8de: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5e8e0: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5e8e4: 42a7 clrl %sp@- <== NOT EXECUTED
5e8e6: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5e8ec: 508f addql #8,%sp <== NOT EXECUTED
5e8ee: 4a00 tstb %d0 <== NOT EXECUTED
5e8f0: 6700 ff7c beqw 5e86e <rtems_rfs_rtems_device_open+0x15c><== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5e8f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5e8f6: 7418 moveq #24,%d2 <== NOT EXECUTED
5e8f8: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5e8fe: 0287 0000 00ff andil #255,%d7 <== NOT EXECUTED
5e904: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e906: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5e90c: 0286 0000 00ff andil #255,%d6 <== NOT EXECUTED
5e912: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5e918: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5e91c: 4281 clrl %d1 <== NOT EXECUTED
5e91e: 300d movew %a5,%d0 <== NOT EXECUTED
5e920: 0285 0000 00ff andil #255,%d5 <== NOT EXECUTED
5e926: 4847 swap %d7 <== NOT EXECUTED
5e928: 4247 clrw %d7 <== NOT EXECUTED
5e92a: 1200 moveb %d0,%d1 <== NOT EXECUTED
5e92c: 200c movel %a4,%d0 <== NOT EXECUTED
5e92e: 4841 swap %d1 <== NOT EXECUTED
5e930: 4241 clrw %d1 <== NOT EXECUTED
5e932: e5a8 lsll %d2,%d0 <== NOT EXECUTED
5e934: e5ac lsll %d2,%d4 <== NOT EXECUTED
5e936: e18d lsll #8,%d5 <== NOT EXECUTED
5e938: 8081 orl %d1,%d0 <== NOT EXECUTED
5e93a: 4281 clrl %d1 <== NOT EXECUTED
5e93c: 122e ffd7 moveb %fp@(-41),%d1 <== NOT EXECUTED
5e940: 8086 orl %d6,%d0 <== NOT EXECUTED
5e942: 8887 orl %d7,%d4 <== NOT EXECUTED
5e944: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
5e94a: 8085 orl %d5,%d0 <== NOT EXECUTED
5e94c: e189 lsll #8,%d1 <== NOT EXECUTED
rtems_rfs_rtems_unlock (fs);
iop->data0 = major;
iop->data1 = (void *) minor;
return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
5e94e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e950: 8883 orl %d3,%d4 <== NOT EXECUTED
return rtems_rfs_rtems_error ("device_open: closing inode", rc);
}
rtems_rfs_rtems_unlock (fs);
iop->data0 = major;
5e952: 2740 0028 movel %d0,%a3@(40) <== NOT EXECUTED
5e956: 8881 orl %d1,%d4 <== NOT EXECUTED
iop->data1 = (void *) minor;
return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
5e958: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e95a: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5e95e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5e962: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
}
rtems_rfs_rtems_unlock (fs);
iop->data0 = major;
iop->data1 = (void *) minor;
5e966: 2744 002c movel %d4,%a3@(44) <== NOT EXECUTED
return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
5e96a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5e96c: 4eb9 0005 fb98 jsr 5fb98 <rtems_deviceio_open> <== NOT EXECUTED
5e972: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
5e976: 6000 ff5e braw 5e8d6 <rtems_rfs_rtems_device_open+0x1c4><== NOT EXECUTED
...
0005e6d2 <rtems_rfs_rtems_device_read>:
* @return ssize_t
*/
static ssize_t
rtems_rfs_rtems_device_read (rtems_libio_t* iop, void* buffer, size_t count)
{
5e6d2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5e6d6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_device_major_number major;
rtems_device_minor_number minor;
rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);
return rtems_deviceio_read (iop, buffer, count, major, minor);
5e6da: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED
5e6de: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED
5e6e2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5e6e6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5e6ea: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5e6ec: 4eb9 0005 fbfe jsr 5fbfe <rtems_deviceio_read> <== NOT EXECUTED
}
5e6f2: 4e5e unlk %fp <== NOT EXECUTED
0005e6ae <rtems_rfs_rtems_device_write>:
static ssize_t
rtems_rfs_rtems_device_write (rtems_libio_t* iop,
const void* buffer,
size_t count)
{
5e6ae: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5e6b2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_device_major_number major;
rtems_device_minor_number minor;
rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);
return rtems_deviceio_write (iop, buffer, count, major, minor);
5e6b6: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED
5e6ba: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED
5e6be: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5e6c2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5e6c6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5e6c8: 4eb9 0005 fc82 jsr 5fc82 <rtems_deviceio_write> <== NOT EXECUTED
}
5e6ce: 4e5e unlk %fp <== NOT EXECUTED
0005e97c <rtems_rfs_rtems_dir_close>:
{
/*
* The RFS does not hold any resources. Nothing to do.
*/
return 0;
}
5e97c: 4280 clrl %d0 <== NOT EXECUTED
* @param iop
* @retval 0 Always no error.
*/
static int
rtems_rfs_rtems_dir_close (rtems_libio_t* iop)
{
5e97e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* The RFS does not hold any resources. Nothing to do.
*/
return 0;
}
5e982: 4e5e unlk %fp <== NOT EXECUTED
0005ebb8 <rtems_rfs_rtems_dir_open>:
static int
rtems_rfs_rtems_dir_open (rtems_libio_t* iop,
const char* pathname,
int oflag,
mode_t mode)
{
5ebb8: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
5ebbc: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
5ebc0: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
5ebc4: 206b 0024 moveal %a3@(36),%a0 <== NOT EXECUTED
5ebc8: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5ebcc: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_rfs_ino ino = rtems_rfs_rtems_get_iop_ino (iop);
5ebce: 262b 0018 movel %a3@(24),%d3 <== NOT EXECUTED
5ebd2: 42a7 clrl %sp@- <== NOT EXECUTED
.fstat_h = rtems_rfs_rtems_fstat,
.ftruncate_h = rtems_filesystem_default_ftruncate_directory,
.fsync_h = rtems_filesystem_default_fsync_or_fdatasync,
.fdatasync_h = rtems_rfs_rtems_fdatasync,
.fcntl_h = rtems_filesystem_default_fcntl
};
5ebd4: 206a 0080 moveal %a2@(128),%a0 <== NOT EXECUTED
5ebd8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
5ebda: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ebe0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5ebe4: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ebe6: 667e bnes 5ec66 <rtems_rfs_rtems_dir_open+0xae> <== NOT EXECUTED
rtems_rfs_inode_handle inode;
int rc;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5ebe8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5ebec: 240e movel %fp,%d2 <== NOT EXECUTED
5ebee: 0682 ffff ffda addil #-38,%d2 <== NOT EXECUTED
5ebf4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ebf6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5ebf8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5ebfa: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc)
5ec00: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_inode_handle inode;
int rc;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5ec04: 2600 movel %d0,%d3 <== NOT EXECUTED
if (rc)
5ec06: 6600 00ae bnew 5ecb6 <rtems_rfs_rtems_dir_open+0xfe> <== NOT EXECUTED
{
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("dir_open: opening inode", rc);
}
if (!RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&inode)))
5ec0a: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
* @return uint16_t The mode.
*/
static inline uint16_t
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->mode);
5ec0e: 4280 clrl %d0 <== NOT EXECUTED
5ec10: 1028 0002 moveb %a0@(2),%d0 <== NOT EXECUTED
5ec14: e188 lsll #8,%d0 <== NOT EXECUTED
5ec16: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
5ec1c: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED
5ec22: 6600 0130 bnew 5ed54 <rtems_rfs_rtems_dir_open+0x19c> <== NOT EXECUTED
return rtems_rfs_rtems_error ("dir_open: not dir", ENOTDIR);
}
iop->offset = 0;
rtems_rfs_inode_close (fs, &inode);
5ec26: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("dir_open: not dir", ENOTDIR);
}
iop->offset = 0;
5ec28: 4280 clrl %d0 <== NOT EXECUTED
5ec2a: 4281 clrl %d1 <== NOT EXECUTED
5ec2c: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
5ec30: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
5ec34: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5ec36: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5ec3c: 266a 0080 moveal %a2@(128),%a3 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5ec40: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5ec42: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ec48: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
5ec4a: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ec50: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ec54: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ec56: 6600 008e bnew 5ece6 <rtems_rfs_rtems_dir_open+0x12e> <== NOT EXECUTED
rtems_rfs_rtems_unlock (fs);
return 0;
5ec5a: 4280 clrl %d0 <== NOT EXECUTED
}
5ec5c: 4cee 0c0c ffc8 moveml %fp@(-56),%d2-%d3/%a2-%a3 <== NOT EXECUTED
5ec62: 4e5e unlk %fp <== NOT EXECUTED
5ec64: 4e75 rts <== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5ec66: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5ec6a: 42a7 clrl %sp@- <== NOT EXECUTED
5ec6c: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5ec72: 508f addql #8,%sp <== NOT EXECUTED
5ec74: 4a00 tstb %d0 <== NOT EXECUTED
5ec76: 6700 ff70 beqw 5ebe8 <rtems_rfs_rtems_dir_open+0x30> <== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
5ec7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_rfs_inode_handle inode;
int rc;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5ec7c: 240e movel %fp,%d2 <== NOT EXECUTED
5ec7e: 0682 ffff ffda addil #-38,%d2 <== NOT EXECUTED
5ec84: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5ec8a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ec8c: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
5ec92: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5ec98: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5ec9c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5eca0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5eca2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5eca4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5eca6: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc)
5ecac: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_inode_handle inode;
int rc;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5ecb0: 2600 movel %d0,%d3 <== NOT EXECUTED
if (rc)
5ecb2: 6700 ff56 beqw 5ec0a <rtems_rfs_rtems_dir_open+0x52> <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5ecb6: 266a 0080 moveal %a2@(128),%a3 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5ecba: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5ecbc: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ecc2: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
5ecc4: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ecca: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5eccc: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ecce: 664a bnes 5ed1a <rtems_rfs_rtems_dir_open+0x162> <== NOT EXECUTED
{
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("dir_open: opening inode", rc);
5ecd0: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5ecd6: 2040 moveal %d0,%a0 <== NOT EXECUTED
5ecd8: 70ff moveq #-1,%d0 <== NOT EXECUTED
5ecda: 2083 movel %d3,%a0@ <== NOT EXECUTED
iop->offset = 0;
rtems_rfs_inode_close (fs, &inode);
rtems_rfs_rtems_unlock (fs);
return 0;
}
5ecdc: 4cee 0c0c ffc8 moveml %fp@(-56),%d2-%d3/%a2-%a3 <== NOT EXECUTED
5ece2: 4e5e unlk %fp <== NOT EXECUTED
5ece4: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5ece6: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5ecea: 42a7 clrl %sp@- <== NOT EXECUTED
5ecec: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5ecf2: 508f addql #8,%sp <== NOT EXECUTED
5ecf4: 4a00 tstb %d0 <== NOT EXECUTED
5ecf6: 6700 ff62 beqw 5ec5a <rtems_rfs_rtems_dir_open+0xa2> <== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5ecfa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ecfc: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5ed02: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ed04: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5ed0a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5ed10: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
iop->offset = 0;
rtems_rfs_inode_close (fs, &inode);
rtems_rfs_rtems_unlock (fs);
return 0;
5ed14: 4280 clrl %d0 <== NOT EXECUTED
5ed16: 6000 ff44 braw 5ec5c <rtems_rfs_rtems_dir_open+0xa4> <== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5ed1a: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5ed1e: 42a7 clrl %sp@- <== NOT EXECUTED
5ed20: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5ed26: 508f addql #8,%sp <== NOT EXECUTED
5ed28: 4a00 tstb %d0 <== NOT EXECUTED
5ed2a: 67a4 beqs 5ecd0 <rtems_rfs_rtems_dir_open+0x118> <== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5ed2c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ed2e: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5ed34: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ed36: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5ed3c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5ed42: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
if (rc)
{
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("dir_open: opening inode", rc);
5ed46: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5ed4c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5ed4e: 70ff moveq #-1,%d0 <== NOT EXECUTED
5ed50: 2083 movel %d3,%a0@ <== NOT EXECUTED
5ed52: 6088 bras 5ecdc <rtems_rfs_rtems_dir_open+0x124> <== NOT EXECUTED
}
if (!RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&inode)))
{
rtems_rfs_inode_close (fs, &inode);
5ed54: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ed56: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5ed58: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5ed5e: 266a 0080 moveal %a2@(128),%a3 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5ed62: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5ed64: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ed6a: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
5ed6c: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ed72: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ed76: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ed78: 6618 bnes 5ed92 <rtems_rfs_rtems_dir_open+0x1da> <== NOT EXECUTED
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("dir_open: not dir", ENOTDIR);
5ed7a: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5ed80: 7214 moveq #20,%d1 <== NOT EXECUTED
5ed82: 2040 moveal %d0,%a0 <== NOT EXECUTED
5ed84: 70ff moveq #-1,%d0 <== NOT EXECUTED
5ed86: 2081 movel %d1,%a0@ <== NOT EXECUTED
iop->offset = 0;
rtems_rfs_inode_close (fs, &inode);
rtems_rfs_rtems_unlock (fs);
return 0;
}
5ed88: 4cee 0c0c ffc8 moveml %fp@(-56),%d2-%d3/%a2-%a3 <== NOT EXECUTED
5ed8e: 4e5e unlk %fp <== NOT EXECUTED
5ed90: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5ed92: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5ed96: 42a7 clrl %sp@- <== NOT EXECUTED
5ed98: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5ed9e: 508f addql #8,%sp <== NOT EXECUTED
5eda0: 4a00 tstb %d0 <== NOT EXECUTED
5eda2: 67d6 beqs 5ed7a <rtems_rfs_rtems_dir_open+0x1c2> <== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5eda4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5eda6: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5edac: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5edae: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5edb4: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5edba: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (!RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&inode)))
{
rtems_rfs_inode_close (fs, &inode);
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("dir_open: not dir", ENOTDIR);
5edbe: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5edc4: 7214 moveq #20,%d1 <== NOT EXECUTED
5edc6: 2040 moveal %d0,%a0 <== NOT EXECUTED
5edc8: 70ff moveq #-1,%d0 <== NOT EXECUTED
5edca: 2081 movel %d1,%a0@ <== NOT EXECUTED
5edcc: 60ba bras 5ed88 <rtems_rfs_rtems_dir_open+0x1d0> <== NOT EXECUTED
...
0005e986 <rtems_rfs_rtems_dir_read>:
*/
static ssize_t
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,
void* buffer,
size_t count)
{
5e986: 4e56 ffa8 linkw %fp,#-88 <== NOT EXECUTED
5e98a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
5e98e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
5e992: 206a 0024 moveal %a2@(36),%a0 <== NOT EXECUTED
5e996: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5e99a: 42a7 clrl %sp@- <== NOT EXECUTED
*/
static ssize_t
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,
void* buffer,
size_t count)
{
5e99c: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
5e9a0: 42a7 clrl %sp@- <== NOT EXECUTED
.fstat_h = rtems_rfs_rtems_fstat,
.ftruncate_h = rtems_filesystem_default_ftruncate_directory,
.fsync_h = rtems_filesystem_default_fsync_or_fdatasync,
.fdatasync_h = rtems_rfs_rtems_fdatasync,
.fcntl_h = rtems_filesystem_default_fcntl
};
5e9a2: 206b 0080 moveal %a3@(128),%a0 <== NOT EXECUTED
5e9a6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,
void* buffer,
size_t count)
{
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
rtems_rfs_ino ino = rtems_rfs_rtems_get_iop_ino (iop);
5e9a8: 262a 0018 movel %a2@(24),%d3 <== NOT EXECUTED
5e9ac: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5e9b2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5e9b6: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5e9b8: 6600 00c4 bnew 5ea7e <rtems_rfs_rtems_dir_read+0xf8> <== NOT EXECUTED
count = count / sizeof (struct dirent);
dirent = buffer;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5e9bc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5e9c0: 2a0e movel %fp,%d5 <== NOT EXECUTED
5e9c2: 0685 ffff ffda addil #-38,%d5 <== NOT EXECUTED
5e9c8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5e9ca: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e9cc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5e9ce: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc)
5e9d4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
count = count / sizeof (struct dirent);
dirent = buffer;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5e9d8: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
5e9da: 6600 00f2 bnew 5eace <rtems_rfs_rtems_dir_read+0x148> <== NOT EXECUTED
struct dirent* dirent;
ssize_t bytes_transferred;
int d;
int rc;
count = count / sizeof (struct dirent);
5e9de: 2c2e 0010 movel %fp@(16),%d6 <== NOT EXECUTED
5e9e2: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
return rtems_rfs_rtems_error ("dir_read: read inode", rc);
}
bytes_transferred = 0;
for (d = 0; d < count; d++, dirent++)
5e9e8: 4284 clrl %d4 <== NOT EXECUTED
struct dirent* dirent;
ssize_t bytes_transferred;
int d;
int rc;
count = count / sizeof (struct dirent);
5e9ea: 4c41 6006 remul %d1,%d6,%d6 <== NOT EXECUTED
return rtems_rfs_rtems_error ("dir_read: read inode", rc);
}
bytes_transferred = 0;
for (d = 0; d < count; d++, dirent++)
5e9ee: 675a beqs 5ea4a <rtems_rfs_rtems_dir_read+0xc4> <== NOT EXECUTED
* exisiting file, the remaining entries will be placed in the buffer and the
* returned value will be equal to -m actual- times the size of a directory
* entry.
*/
static ssize_t
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,
5e9f0: 4287 clrl %d7 <== NOT EXECUTED
5e9f2: 4284 clrl %d4 <== NOT EXECUTED
5e9f4: 4bf9 0005 b7f2 lea 5b7f2 <rtems_rfs_dir_read>,%a5 <== NOT EXECUTED
5e9fa: 242a 0004 movel %a2@(4),%d2 <== NOT EXECUTED
5e9fe: 262a 0008 movel %a2@(8),%d3 <== NOT EXECUTED
bytes_transferred = 0;
for (d = 0; d < count; d++, dirent++)
{
size_t size;
rc = rtems_rfs_dir_read (fs, &inode, iop->offset, dirent, &size);
5ea02: 486e ffd6 pea %fp@(-42) <== NOT EXECUTED
5ea06: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED
return rtems_rfs_rtems_error ("dir_read: read inode", rc);
}
bytes_transferred = 0;
for (d = 0; d < count; d++, dirent++)
5ea0a: 5287 addql #1,%d7 <== NOT EXECUTED
{
size_t size;
rc = rtems_rfs_dir_read (fs, &inode, iop->offset, dirent, &size);
5ea0c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5ea0e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ea10: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5ea12: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5ea14: 4e95 jsr %a5@ <== NOT EXECUTED
if (rc == ENOENT)
5ea16: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
bytes_transferred = 0;
for (d = 0; d < count; d++, dirent++)
{
size_t size;
rc = rtems_rfs_dir_read (fs, &inode, iop->offset, dirent, &size);
5ea1a: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (rc == ENOENT)
5ea1c: 7002 moveq #2,%d0 <== NOT EXECUTED
5ea1e: b088 cmpl %a0,%d0 <== NOT EXECUTED
5ea20: 6728 beqs 5ea4a <rtems_rfs_rtems_dir_read+0xc4> <== NOT EXECUTED
* exisiting file, the remaining entries will be placed in the buffer and the
* returned value will be equal to -m actual- times the size of a directory
* entry.
*/
static ssize_t
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,
5ea22: 0684 0000 0110 addil #272,%d4 <== NOT EXECUTED
if (rc == ENOENT)
{
rc = 0;
break;
}
if (rc > 0)
5ea28: 4a88 tstl %a0 <== NOT EXECUTED
5ea2a: 6e00 0110 bgtw 5eb3c <rtems_rfs_rtems_dir_read+0x1b6> <== NOT EXECUTED
{
bytes_transferred = rtems_rfs_rtems_error ("dir_read: dir read", rc);
break;
}
iop->offset += size;
5ea2e: 262e ffd6 movel %fp@(-42),%d3 <== NOT EXECUTED
5ea32: 4282 clrl %d2 <== NOT EXECUTED
5ea34: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
5ea38: d6aa 0008 addl %a2@(8),%d3 <== NOT EXECUTED
5ea3c: d580 addxl %d0,%d2 <== NOT EXECUTED
5ea3e: 2542 0004 movel %d2,%a2@(4) <== NOT EXECUTED
5ea42: 2543 0008 movel %d3,%a2@(8) <== NOT EXECUTED
return rtems_rfs_rtems_error ("dir_read: read inode", rc);
}
bytes_transferred = 0;
for (d = 0; d < count; d++, dirent++)
5ea46: bc87 cmpl %d7,%d6 <== NOT EXECUTED
5ea48: 66b8 bnes 5ea02 <rtems_rfs_rtems_dir_read+0x7c> <== NOT EXECUTED
}
iop->offset += size;
bytes_transferred += sizeof (struct dirent);
}
rtems_rfs_inode_close (fs, &inode);
5ea4a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5ea4c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5ea4e: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5ea54: 246b 0080 moveal %a3@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5ea58: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5ea5a: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ea60: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5ea62: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ea68: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ea6c: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ea6e: 6600 0092 bnew 5eb02 <rtems_rfs_rtems_dir_read+0x17c> <== NOT EXECUTED
rtems_rfs_rtems_unlock (fs);
return bytes_transferred;
}
5ea72: 2004 movel %d4,%d0 <== NOT EXECUTED
5ea74: 4cee 3cfc ffa8 moveml %fp@(-88),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5ea7a: 4e5e unlk %fp <== NOT EXECUTED
5ea7c: 4e75 rts <== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5ea7e: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5ea82: 42a7 clrl %sp@- <== NOT EXECUTED
5ea84: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5ea8a: 508f addql #8,%sp <== NOT EXECUTED
5ea8c: 4a00 tstb %d0 <== NOT EXECUTED
5ea8e: 6700 ff2c beqw 5e9bc <rtems_rfs_rtems_dir_read+0x36> <== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
5ea92: 2f02 movel %d2,%sp@- <== NOT EXECUTED
count = count / sizeof (struct dirent);
dirent = buffer;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5ea94: 2a0e movel %fp,%d5 <== NOT EXECUTED
5ea96: 0685 ffff ffda addil #-38,%d5 <== NOT EXECUTED
5ea9c: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5eaa2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5eaa4: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
5eaaa: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5eab0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5eab4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5eab8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5eaba: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5eabc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5eabe: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc)
5eac4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
count = count / sizeof (struct dirent);
dirent = buffer;
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5eac8: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
5eaca: 6700 ff12 beqw 5e9de <rtems_rfs_rtems_dir_read+0x58> <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5eace: 246b 0080 moveal %a3@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5ead2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5ead4: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5eada: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5eadc: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5eae2: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5eae4: 2600 movel %d0,%d3 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5eae6: 6600 0092 bnew 5eb7a <rtems_rfs_rtems_dir_read+0x1f4> <== NOT EXECUTED
{
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("dir_read: read inode", rc);
5eaea: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5eaf0: 78ff moveq #-1,%d4 <== NOT EXECUTED
5eaf2: 2040 moveal %d0,%a0 <== NOT EXECUTED
5eaf4: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
rtems_rfs_rtems_unlock (fs);
return bytes_transferred;
}
5eaf6: 2004 movel %d4,%d0 <== NOT EXECUTED
5eaf8: 4cee 3cfc ffa8 moveml %fp@(-88),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5eafe: 4e5e unlk %fp <== NOT EXECUTED
5eb00: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5eb02: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5eb06: 42a7 clrl %sp@- <== NOT EXECUTED
5eb08: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5eb0e: 508f addql #8,%sp <== NOT EXECUTED
5eb10: 4a00 tstb %d0 <== NOT EXECUTED
5eb12: 6700 ff5e beqw 5ea72 <rtems_rfs_rtems_dir_read+0xec> <== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5eb16: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5eb18: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5eb1e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5eb20: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5eb26: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5eb2c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5eb30: 2004 movel %d4,%d0 <== NOT EXECUTED
5eb32: 4cee 3cfc ffa8 moveml %fp@(-88),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5eb38: 4e5e unlk %fp <== NOT EXECUTED
5eb3a: 4e75 rts <== NOT EXECUTED
rc = 0;
break;
}
if (rc > 0)
{
bytes_transferred = rtems_rfs_rtems_error ("dir_read: dir read", rc);
5eb3c: 2d48 ffd0 movel %a0,%fp@(-48) <== NOT EXECUTED
5eb40: 78ff moveq #-1,%d4 <== NOT EXECUTED
5eb42: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5eb48: 206e ffd0 moveal %fp@(-48),%a0 <== NOT EXECUTED
5eb4c: 2240 moveal %d0,%a1 <== NOT EXECUTED
5eb4e: 2288 movel %a0,%a1@ <== NOT EXECUTED
}
iop->offset += size;
bytes_transferred += sizeof (struct dirent);
}
rtems_rfs_inode_close (fs, &inode);
5eb50: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5eb52: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5eb54: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5eb5a: 246b 0080 moveal %a3@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5eb5e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5eb60: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5eb66: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5eb68: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5eb6e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5eb72: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5eb74: 6700 fefc beqw 5ea72 <rtems_rfs_rtems_dir_read+0xec> <== NOT EXECUTED
5eb78: 6088 bras 5eb02 <rtems_rfs_rtems_dir_read+0x17c> <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5eb7a: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5eb7e: 42a7 clrl %sp@- <== NOT EXECUTED
5eb80: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5eb86: 508f addql #8,%sp <== NOT EXECUTED
5eb88: 4a00 tstb %d0 <== NOT EXECUTED
5eb8a: 6700 ff5e beqw 5eaea <rtems_rfs_rtems_dir_read+0x164> <== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5eb8e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
if (rc)
{
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("dir_read: read inode", rc);
5eb90: 78ff moveq #-1,%d4 <== NOT EXECUTED
5eb92: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5eb98: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5eb9a: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5eba0: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5eba6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5ebaa: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5ebb0: 2040 moveal %d0,%a0 <== NOT EXECUTED
5ebb2: 2082 movel %d2,%a0@ <== NOT EXECUTED
5ebb4: 6000 ff40 braw 5eaf6 <rtems_rfs_rtems_dir_read+0x170> <== NOT EXECUTED
000523d6 <rtems_rfs_rtems_eval_path>:
.eval_token = rtems_rfs_rtems_eval_token
};
static void
rtems_rfs_rtems_eval_path (rtems_filesystem_eval_path_context_t *ctx)
{
523d6: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
523da: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
523de: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (currentloc);
rtems_rfs_inode_handle inode;
int rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
523e2: 240e movel %fp,%d2 <== NOT EXECUTED
523e4: 0682 ffff ffda addil #-38,%d2 <== NOT EXECUTED
static void
rtems_rfs_rtems_eval_path (rtems_filesystem_eval_path_context_t *ctx)
{
rtems_filesystem_location_info_t *currentloc =
rtems_filesystem_eval_path_get_currentloc (ctx);
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
523ea: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED
523ee: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED
rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (currentloc);
rtems_rfs_inode_handle inode;
int rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
523f2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
523f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
523f8: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED
523fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
523fe: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc == 0) {
52404: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (currentloc);
rtems_rfs_inode_handle inode;
int rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
52408: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc == 0) {
5240a: 662c bnes 52438 <rtems_rfs_rtems_eval_path+0x62> <== NOT EXECUTED
rtems_filesystem_eval_path_generic (
5240c: 4879 0007 1c24 pea 71c24 <rtems_rfs_rtems_eval_config> <== NOT EXECUTED
52412: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52414: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52416: 4eb9 0005 695c jsr 5695c <rtems_filesystem_eval_path_generic><== NOT EXECUTED
ctx,
&inode,
&rtems_rfs_rtems_eval_config
);
rc = rtems_rfs_inode_close (fs, &inode);
5241c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5241e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52420: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc != 0) {
52426: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
rtems_filesystem_eval_path_generic (
ctx,
&inode,
&rtems_rfs_rtems_eval_config
);
rc = rtems_rfs_inode_close (fs, &inode);
5242a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc != 0) {
5242c: 662c bnes 5245a <rtems_rfs_rtems_eval_path+0x84> <== NOT EXECUTED
rtems_filesystem_eval_path_error (
ctx,
rtems_rfs_rtems_error ("eval_path: opening inode", rc)
);
}
}
5242e: 4cee 041c ffc8 moveml %fp@(-56),%d2-%d4/%a2 <== NOT EXECUTED
52434: 4e5e unlk %fp <== NOT EXECUTED
52436: 4e75 rts <== NOT EXECUTED
);
}
} else {
rtems_filesystem_eval_path_error (
ctx,
rtems_rfs_rtems_error ("eval_path: opening inode", rc)
52438: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5243e: 2040 moveal %d0,%a0 <== NOT EXECUTED
52440: 2084 movel %d4,%a0@ <== NOT EXECUTED
ctx,
rtems_rfs_rtems_error ("eval_path: closing inode", rc)
);
}
} else {
rtems_filesystem_eval_path_error (
52442: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
52446: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52448: 4eb9 0004 8aa6 jsr 48aa6 <rtems_filesystem_eval_path_error><== NOT EXECUTED
5244e: 508f addql #8,%sp <== NOT EXECUTED
ctx,
rtems_rfs_rtems_error ("eval_path: opening inode", rc)
);
}
}
52450: 4cee 041c ffc8 moveml %fp@(-56),%d2-%d4/%a2 <== NOT EXECUTED
52456: 4e5e unlk %fp <== NOT EXECUTED
52458: 4e75 rts <== NOT EXECUTED
);
rc = rtems_rfs_inode_close (fs, &inode);
if (rc != 0) {
rtems_filesystem_eval_path_error (
ctx,
rtems_rfs_rtems_error ("eval_path: closing inode", rc)
5245a: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
52460: 2040 moveal %d0,%a0 <== NOT EXECUTED
52462: 2082 movel %d2,%a0@ <== NOT EXECUTED
&inode,
&rtems_rfs_rtems_eval_config
);
rc = rtems_rfs_inode_close (fs, &inode);
if (rc != 0) {
rtems_filesystem_eval_path_error (
52464: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
52468: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5246a: 4eb9 0004 8aa6 jsr 48aa6 <rtems_filesystem_eval_path_error><== NOT EXECUTED
52470: 508f addql #8,%sp <== NOT EXECUTED
rtems_filesystem_eval_path_error (
ctx,
rtems_rfs_rtems_error ("eval_path: opening inode", rc)
);
}
}
52472: 4cee 041c ffc8 moveml %fp@(-56),%d2-%d4/%a2 <== NOT EXECUTED
52478: 4e5e unlk %fp <== NOT EXECUTED
0005283c <rtems_rfs_rtems_eval_token>:
* @return uint16_t The group id (gid).
*/
static inline uint16_t
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)
{
return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;
5283c: 4280 clrl %d0 <== NOT EXECUTED
5283e: 4281 clrl %d1 <== NOT EXECUTED
rtems_filesystem_eval_path_context_t *ctx,
void *arg,
const char *token,
size_t tokenlen
)
{
52840: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
52844: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
52848: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
5284c: 4282 clrl %d2 <== NOT EXECUTED
5284e: 7618 moveq #24,%d3 <== NOT EXECUTED
/* FIXME: Return value? */
rtems_rfs_fs_close(fs);
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
}
52850: 206b 000c moveal %a3@(12),%a0 <== NOT EXECUTED
52854: 1028 0004 moveb %a0@(4),%d0 <== NOT EXECUTED
52858: 1428 0005 moveb %a0@(5),%d2 <== NOT EXECUTED
5285c: 1228 0006 moveb %a0@(6),%d1 <== NOT EXECUTED
52860: e7a8 lsll %d3,%d0 <== NOT EXECUTED
52862: 4842 swap %d2 <== NOT EXECUTED
52864: 4242 clrw %d2 <== NOT EXECUTED
52866: 4283 clrl %d3 <== NOT EXECUTED
52868: 1628 0007 moveb %a0@(7),%d3 <== NOT EXECUTED
5286c: 8082 orl %d2,%d0 <== NOT EXECUTED
5286e: e189 lsll #8,%d1 <== NOT EXECUTED
rtems_filesystem_eval_path_context_t *ctx,
void *arg,
const char *token,
size_t tokenlen
)
{
52870: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
52874: 4240 clrw %d0 <== NOT EXECUTED
52876: 4840 swap %d0 <== NOT EXECUTED
static bool
rtems_rfs_rtems_eval_perms (rtems_filesystem_eval_path_context_t *ctx,
int eval_flags,
rtems_rfs_inode_handle* inode)
{
return rtems_filesystem_eval_path_check_access(
52878: 8283 orl %d3,%d1 <== NOT EXECUTED
5287a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
* @return uint16_t The mode.
*/
static inline uint16_t
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->mode);
5287c: 4280 clrl %d0 <== NOT EXECUTED
5287e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
52880: 1028 0002 moveb %a0@(2),%d0 <== NOT EXECUTED
52884: 4281 clrl %d1 <== NOT EXECUTED
52886: 1228 0003 moveb %a0@(3),%d1 <== NOT EXECUTED
5288a: e188 lsll #8,%d0 <== NOT EXECUTED
5288c: 8081 orl %d1,%d0 <== NOT EXECUTED
5288e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52890: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
52894: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52896: 4eb9 0005 6910 jsr 56910 <rtems_filesystem_eval_path_check_access><== NOT EXECUTED
rtems_filesystem_eval_path_generic_status status =
RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
rtems_rfs_inode_handle* inode = arg;
bool access_ok = rtems_rfs_rtems_eval_perms (ctx, RTEMS_FS_PERMS_EXEC, inode);
if (access_ok) {
5289c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
528a0: 4a00 tstb %d0 <== NOT EXECUTED
528a2: 6758 beqs 528fc <rtems_rfs_rtems_eval_token+0xc0><== NOT EXECUTED
static inline bool rtems_filesystem_is_current_directory(
const char *token,
size_t tokenlen
)
{
return tokenlen == 1 && token [0] == '.';
528a4: 7001 moveq #1,%d0 <== NOT EXECUTED
528a6: b0ae 0014 cmpl %fp@(20),%d0 <== NOT EXECUTED
528aa: 675c beqs 52908 <rtems_rfs_rtems_eval_token+0xcc><== NOT EXECUTED
if (rtems_filesystem_is_current_directory (token, tokenlen)) {
rtems_filesystem_eval_path_clear_token (ctx);
} else {
rtems_filesystem_location_info_t *currentloc =
rtems_filesystem_eval_path_get_currentloc( ctx );
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
528ac: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED
528b0: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
rtems_rfs_ino entry_ino;
uint32_t entry_doff;
int rc = rtems_rfs_dir_lookup_ino (
528b4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
528b8: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
528bc: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
528c0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
528c4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
528c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
528c8: 4eb9 0005 a920 jsr 5a920 <rtems_rfs_dir_lookup_ino> <== NOT EXECUTED
tokenlen,
&entry_ino,
&entry_doff
);
if (rc == 0) {
528ce: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
528d2: 4a80 tstl %d0 <== NOT EXECUTED
528d4: 6750 beqs 52926 <rtems_rfs_rtems_eval_token+0xea><== NOT EXECUTED
* rtems_rfs_rtems_eval_path().
*/
memset (inode, 0, sizeof(*inode));
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;
528d6: 7002 moveq #2,%d0 <== NOT EXECUTED
}
}
}
return status;
}
528d8: 4cee 0c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a3 <== NOT EXECUTED
528de: 4e5e unlk %fp <== NOT EXECUTED
528e0: 4e75 rts <== NOT EXECUTED
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;
}
} else {
rtems_filesystem_eval_path_error (
ctx,
rtems_rfs_rtems_error ("eval_path: set handlers", rc)
528e2: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
528e8: 7205 moveq #5,%d1 <== NOT EXECUTED
528ea: 2040 moveal %d0,%a0 <== NOT EXECUTED
528ec: 2081 movel %d1,%a0@ <== NOT EXECUTED
if (!terminal) {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;
}
} else {
rtems_filesystem_eval_path_error (
528ee: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
528f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
528f4: 4eb9 0004 8aa6 jsr 48aa6 <rtems_filesystem_eval_path_error><== NOT EXECUTED
528fa: 508f addql #8,%sp <== NOT EXECUTED
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
528fc: 7001 moveq #1,%d0 <== NOT EXECUTED
}
}
}
return status;
}
528fe: 4cee 0c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a3 <== NOT EXECUTED
52904: 4e5e unlk %fp <== NOT EXECUTED
52906: 4e75 rts <== NOT EXECUTED
52908: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
5290c: 722e moveq #46,%d1 <== NOT EXECUTED
5290e: 1010 moveb %a0@,%d0 <== NOT EXECUTED
52910: 49c0 extbl %d0 <== NOT EXECUTED
52912: b280 cmpl %d0,%d1 <== NOT EXECUTED
52914: 6696 bnes 528ac <rtems_rfs_rtems_eval_token+0x70><== NOT EXECUTED
static inline void rtems_filesystem_eval_path_clear_token(
rtems_filesystem_eval_path_context_t *ctx
)
{
ctx->tokenlen = 0;
52916: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
5291a: 7001 moveq #1,%d0 <== NOT EXECUTED
}
}
}
return status;
}
5291c: 4cee 0c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a3 <== NOT EXECUTED
52922: 4e5e unlk %fp <== NOT EXECUTED
52924: 4e75 rts <== NOT EXECUTED
&entry_ino,
&entry_doff
);
if (rc == 0) {
rc = rtems_rfs_inode_close (fs, inode);
52926: 2f0b movel %a3,%sp@- <== NOT EXECUTED
52928: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5292a: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc == 0) {
52930: 508f addql #8,%sp <== NOT EXECUTED
52932: 4a80 tstl %d0 <== NOT EXECUTED
52934: 6720 beqs 52956 <rtems_rfs_rtems_eval_token+0x11a><== NOT EXECUTED
if (rc != 0) {
/*
* This prevents the rtems_rfs_inode_close() from doing something in
* rtems_rfs_rtems_eval_path().
*/
memset (inode, 0, sizeof(*inode));
52936: 429b clrl %a3@+ <== NOT EXECUTED
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
52938: 7001 moveq #1,%d0 <== NOT EXECUTED
if (rc != 0) {
/*
* This prevents the rtems_rfs_inode_close() from doing something in
* rtems_rfs_rtems_eval_path().
*/
memset (inode, 0, sizeof(*inode));
5293a: 429b clrl %a3@+ <== NOT EXECUTED
5293c: 429b clrl %a3@+ <== NOT EXECUTED
5293e: 429b clrl %a3@+ <== NOT EXECUTED
52940: 429b clrl %a3@+ <== NOT EXECUTED
52942: 429b clrl %a3@+ <== NOT EXECUTED
52944: 429b clrl %a3@+ <== NOT EXECUTED
52946: 429b clrl %a3@+ <== NOT EXECUTED
52948: 429b clrl %a3@+ <== NOT EXECUTED
5294a: 4253 clrw %a3@ <== NOT EXECUTED
}
}
}
return status;
}
5294c: 4cee 0c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a3 <== NOT EXECUTED
52952: 4e5e unlk %fp <== NOT EXECUTED
52954: 4e75 rts <== NOT EXECUTED
);
if (rc == 0) {
rc = rtems_rfs_inode_close (fs, inode);
if (rc == 0) {
rc = rtems_rfs_inode_open (fs, entry_ino, inode, true);
52956: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5295a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5295c: 2f2e fff4 movel %fp@(-12),%sp@- <== NOT EXECUTED
52960: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52962: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
}
if (rc != 0) {
52968: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5296c: 4a80 tstl %d0 <== NOT EXECUTED
5296e: 66c6 bnes 52936 <rtems_rfs_rtems_eval_token+0xfa><== NOT EXECUTED
/* FIXME: Return value? */
rtems_rfs_fs_close(fs);
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
}
52970: 206b 000c moveal %a3@(12),%a0 <== NOT EXECUTED
52974: 4280 clrl %d0 <== NOT EXECUTED
52976: 1028 0002 moveb %a0@(2),%d0 <== NOT EXECUTED
5297a: e188 lsll #8,%d0 <== NOT EXECUTED
* link is actually the normal path to a regular file, directory, device
* etc's inode. Links to inodes can be considered "the real" one, yet they
* are all links.
*/
uint16_t mode = rtems_rfs_inode_get_mode (inode);
if (RTEMS_RFS_S_ISDIR (mode))
5297c: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
52982: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED
52988: 6708 beqs 52992 <rtems_rfs_rtems_eval_token+0x156><== NOT EXECUTED
return RTEMS_FILESYSTEM_DIRECTORY;
else if (RTEMS_RFS_S_ISLNK (mode))
5298a: 0c80 0000 a000 cmpil #40960,%d0 <== NOT EXECUTED
52990: 673c beqs 529ce <rtems_rfs_rtems_eval_token+0x192><== NOT EXECUTED
if (rc == 0) {
bool is_sym_link = rtems_rfs_rtems_node_type_by_inode (inode)
== RTEMS_FILESYSTEM_SYM_LINK;
int eval_flags = rtems_filesystem_eval_path_get_flags (ctx);
bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
bool terminal = !rtems_filesystem_eval_path_has_path (ctx);
52992: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
52996: 57c0 seq %d0 <== NOT EXECUTED
52998: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
5299c: 2400 movel %d0,%d2 <== NOT EXECUTED
5299e: 4482 negl %d2 <== NOT EXECUTED
rtems_filesystem_eval_path_clear_token (ctx);
if (is_sym_link && (follow_sym_link || !terminal)) {
rtems_rfs_rtems_follow_link (ctx, fs, entry_ino);
} else {
rc = rtems_rfs_rtems_set_handlers (currentloc, inode) ? 0 : EIO;
529a0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
529a2: 486a 0018 pea %a2@(24) <== NOT EXECUTED
529a6: 4eb9 0005 2e34 jsr 52e34 <rtems_rfs_rtems_set_handlers> <== NOT EXECUTED
529ac: 508f addql #8,%sp <== NOT EXECUTED
529ae: 4a00 tstb %d0 <== NOT EXECUTED
529b0: 6700 ff30 beqw 528e2 <rtems_rfs_rtems_eval_token+0xa6><== NOT EXECUTED
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
529b4: 4280 clrl %d0 <== NOT EXECUTED
529b6: 1002 moveb %d2,%d0 <== NOT EXECUTED
if (is_sym_link && (follow_sym_link || !terminal)) {
rtems_rfs_rtems_follow_link (ctx, fs, entry_ino);
} else {
rc = rtems_rfs_rtems_set_handlers (currentloc, inode) ? 0 : EIO;
if (rc == 0) {
rtems_rfs_rtems_set_pathloc_ino (currentloc, entry_ino);
529b8: 256e fff4 0020 movel %fp@(-12),%a2@(32) <== NOT EXECUTED
rtems_rfs_rtems_set_pathloc_doff (currentloc, entry_doff);
529be: 256e fff8 0024 movel %fp@(-8),%a2@(36) <== NOT EXECUTED
}
}
}
return status;
}
529c4: 4cee 0c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a3 <== NOT EXECUTED
529ca: 4e5e unlk %fp <== NOT EXECUTED
529cc: 4e75 rts <== NOT EXECUTED
if (rc == 0) {
bool is_sym_link = rtems_rfs_rtems_node_type_by_inode (inode)
== RTEMS_FILESYSTEM_SYM_LINK;
int eval_flags = rtems_filesystem_eval_path_get_flags (ctx);
bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
529ce: 7210 moveq #16,%d1 <== NOT EXECUTED
529d0: c2aa 0010 andl %a2@(16),%d1 <== NOT EXECUTED
/* FIXME: Return value? */
rtems_rfs_fs_close(fs);
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
}
529d4: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
529d8: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
bool terminal = !rtems_filesystem_eval_path_has_path (ctx);
rtems_filesystem_eval_path_clear_token (ctx);
if (is_sym_link && (follow_sym_link || !terminal)) {
529dc: 4a81 tstl %d1 <== NOT EXECUTED
529de: 6608 bnes 529e8 <rtems_rfs_rtems_eval_token+0x1ac><== NOT EXECUTED
529e0: 4a80 tstl %d0 <== NOT EXECUTED
529e2: 6604 bnes 529e8 <rtems_rfs_rtems_eval_token+0x1ac><== NOT EXECUTED
529e4: 7401 moveq #1,%d2 <== NOT EXECUTED
529e6: 60b8 bras 529a0 <rtems_rfs_rtems_eval_token+0x164><== NOT EXECUTED
rtems_rfs_file_system* fs,
rtems_rfs_ino ino
)
{
size_t len = MAXPATHLEN;
char *link = malloc(len + 1);
529e8: 4878 0401 pea 401 <DBL_MAX_EXP> <== NOT EXECUTED
rtems_filesystem_eval_path_context_t* ctx,
rtems_rfs_file_system* fs,
rtems_rfs_ino ino
)
{
size_t len = MAXPATHLEN;
529ec: 263c 0000 0400 movel #1024,%d3 <== NOT EXECUTED
bool terminal = !rtems_filesystem_eval_path_has_path (ctx);
rtems_filesystem_eval_path_clear_token (ctx);
if (is_sym_link && (follow_sym_link || !terminal)) {
rtems_rfs_rtems_follow_link (ctx, fs, entry_ino);
529f2: 266e fff4 moveal %fp@(-12),%a3 <== NOT EXECUTED
rtems_filesystem_eval_path_context_t* ctx,
rtems_rfs_file_system* fs,
rtems_rfs_ino ino
)
{
size_t len = MAXPATHLEN;
529f6: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED
char *link = malloc(len + 1);
529fa: 4eb9 0004 794c jsr 4794c <malloc> <== NOT EXECUTED
if (link != NULL) {
52a00: 588f addql #4,%sp <== NOT EXECUTED
rtems_rfs_file_system* fs,
rtems_rfs_ino ino
)
{
size_t len = MAXPATHLEN;
char *link = malloc(len + 1);
52a02: 2600 movel %d0,%d3 <== NOT EXECUTED
if (link != NULL) {
52a04: 6756 beqs 52a5c <rtems_rfs_rtems_eval_token+0x220><== NOT EXECUTED
int rc = rtems_rfs_symlink_read (fs, ino, link, len, &len);
52a06: 486e fffc pea %fp@(-4) <== NOT EXECUTED
52a0a: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED
52a0e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52a10: 2f0b movel %a3,%sp@- <== NOT EXECUTED
52a12: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52a14: 4eb9 0005 e3b0 jsr 5e3b0 <rtems_rfs_symlink_read> <== NOT EXECUTED
if (rc == 0) {
52a1a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
52a1e: 4a80 tstl %d0 <== NOT EXECUTED
52a20: 6622 bnes 52a44 <rtems_rfs_rtems_eval_token+0x208><== NOT EXECUTED
rtems_filesystem_eval_path_recursive (ctx, link, len);
52a22: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
52a26: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52a28: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52a2a: 4eb9 0004 9030 jsr 49030 <rtems_filesystem_eval_path_recursive><== NOT EXECUTED
52a30: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
} else {
rtems_filesystem_eval_path_error (ctx, 0);
}
free(link);
52a34: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52a36: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
52a3c: 588f addql #4,%sp <== NOT EXECUTED
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
52a3e: 7001 moveq #1,%d0 <== NOT EXECUTED
52a40: 6000 febc braw 528fe <rtems_rfs_rtems_eval_token+0xc2><== NOT EXECUTED
int rc = rtems_rfs_symlink_read (fs, ino, link, len, &len);
if (rc == 0) {
rtems_filesystem_eval_path_recursive (ctx, link, len);
} else {
rtems_filesystem_eval_path_error (ctx, 0);
52a44: 42a7 clrl %sp@- <== NOT EXECUTED
52a46: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52a48: 4eb9 0004 8aa6 jsr 48aa6 <rtems_filesystem_eval_path_error><== NOT EXECUTED
52a4e: 508f addql #8,%sp <== NOT EXECUTED
}
free(link);
52a50: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52a52: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
52a58: 588f addql #4,%sp <== NOT EXECUTED
52a5a: 60e2 bras 52a3e <rtems_rfs_rtems_eval_token+0x202><== NOT EXECUTED
} else {
rtems_filesystem_eval_path_error (ctx, ENOMEM);
52a5c: 4878 000c pea c <OPER1> <== NOT EXECUTED
52a60: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52a62: 4eb9 0004 8aa6 jsr 48aa6 <rtems_filesystem_eval_path_error><== NOT EXECUTED
52a68: 508f addql #8,%sp <== NOT EXECUTED
void *arg,
const char *token,
size_t tokenlen
)
{
rtems_filesystem_eval_path_generic_status status =
52a6a: 7001 moveq #1,%d0 <== NOT EXECUTED
52a6c: 6000 fe90 braw 528fe <rtems_rfs_rtems_eval_token+0xc2><== NOT EXECUTED
000520f0 <rtems_rfs_rtems_fchmod>:
}
static int
rtems_rfs_rtems_fchmod (const rtems_filesystem_location_info_t* pathloc,
mode_t mode)
{
520f0: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
520f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
520f8: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
}
static int
rtems_rfs_rtems_fchmod (const rtems_filesystem_location_info_t* pathloc,
mode_t mode)
{
520fc: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
52100: 2429 0008 movel %a1@(8),%d2 <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FCHMOD))
printf ("rtems-rfs-rtems: fchmod: in: ino:%" PRId32 " mode:%06" PRIomode_t "\n",
ino, mode);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
52104: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
52108: 260e movel %fp,%d3 <== NOT EXECUTED
5210a: 0683 ffff ffda addil #-38,%d3 <== NOT EXECUTED
52110: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52112: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
52116: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52118: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc)
5211e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FCHMOD))
printf ("rtems-rfs-rtems: fchmod: in: ino:%" PRId32 " mode:%06" PRIomode_t "\n",
ino, mode);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
52122: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc)
52124: 6718 beqs 5213e <rtems_rfs_rtems_fchmod+0x4e> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("fchmod: opening inode", rc);
52126: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5212c: 72ff moveq #-1,%d1 <== NOT EXECUTED
5212e: 2040 moveal %d0,%a0 <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("fchmod: closing inode", rc);
}
return 0;
}
52130: 2001 movel %d1,%d0 <== NOT EXECUTED
ino, mode);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
if (rc)
{
return rtems_rfs_rtems_error ("fchmod: opening inode", rc);
52132: 2084 movel %d4,%a0@ <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("fchmod: closing inode", rc);
}
return 0;
}
52134: 4cee 001c ffcc moveml %fp@(-52),%d2-%d4 <== NOT EXECUTED
5213a: 4e5e unlk %fp <== NOT EXECUTED
5213c: 4e75 rts <== NOT EXECUTED
if (rc)
{
return rtems_rfs_rtems_error ("fchmod: opening inode", rc);
}
imode = rtems_rfs_inode_get_mode (&inode);
5213e: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
* @return uint16_t The mode.
*/
static inline uint16_t
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->mode);
52142: 4280 clrl %d0 <== NOT EXECUTED
52144: 1028 0002 moveb %a0@(2),%d0 <== NOT EXECUTED
return rtems_rfs_rtems_error ("fchmod: checking uid", EPERM);
}
#endif
imode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
imode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
52148: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
5214c: e188 lsll #8,%d0 <== NOT EXECUTED
5214e: 0281 0000 0fff andil #4095,%d1 <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
return rtems_rfs_rtems_error ("fchmod: checking uid", EPERM);
}
#endif
imode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
52154: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
imode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
5215a: 8081 orl %d1,%d0 <== NOT EXECUTED
* @prarm mode The mode.
*/
static inline void
rtems_rfs_inode_set_mode (rtems_rfs_inode_handle* handle, uint16_t mode)
{
rtems_rfs_write_u16 (&handle->node->mode, mode);
5215c: 2200 movel %d0,%d1 <== NOT EXECUTED
5215e: e089 lsrl #8,%d1 <== NOT EXECUTED
52160: 1141 0002 moveb %d1,%a0@(2) <== NOT EXECUTED
52164: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
52168: 1140 0003 moveb %d0,%a0@(3) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5216c: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_rfs_inode_set_mode (&inode, imode);
rc = rtems_rfs_inode_close (fs, &inode);
5216e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52170: 1d40 ffea moveb %d0,%fp@(-22) <== NOT EXECUTED
52174: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52176: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc > 0)
5217c: 508f addql #8,%sp <== NOT EXECUTED
imode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
imode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
rtems_rfs_inode_set_mode (&inode, imode);
rc = rtems_rfs_inode_close (fs, &inode);
5217e: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
52180: 6f18 bles 5219a <rtems_rfs_rtems_fchmod+0xaa> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("fchmod: closing inode", rc);
52182: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
52188: 72ff moveq #-1,%d1 <== NOT EXECUTED
5218a: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
return 0;
}
5218c: 2001 movel %d1,%d0 <== NOT EXECUTED
rtems_rfs_inode_set_mode (&inode, imode);
rc = rtems_rfs_inode_close (fs, &inode);
if (rc > 0)
{
return rtems_rfs_rtems_error ("fchmod: closing inode", rc);
5218e: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return 0;
}
52190: 4cee 001c ffcc moveml %fp@(-52),%d2-%d4 <== NOT EXECUTED
52196: 4e5e unlk %fp <== NOT EXECUTED
52198: 4e75 rts <== NOT EXECUTED
if (rc > 0)
{
return rtems_rfs_rtems_error ("fchmod: closing inode", rc);
}
return 0;
5219a: 4281 clrl %d1 <== NOT EXECUTED
}
5219c: 2001 movel %d1,%d0 <== NOT EXECUTED
5219e: 4cee 001c ffcc moveml %fp@(-52),%d2-%d4 <== NOT EXECUTED
521a4: 4e5e unlk %fp <== NOT EXECUTED
00052df6 <rtems_rfs_rtems_fdatasync>:
* @param iop
* @return int
*/
int
rtems_rfs_rtems_fdatasync (rtems_libio_t* iop)
{
52df6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
52dfa: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
int rc;
rc = rtems_rfs_buffer_sync (rtems_rfs_rtems_pathloc_dev (&iop->pathinfo));
52dfe: 2068 0024 moveal %a0@(36),%a0 <== NOT EXECUTED
* @param iop
* @return int
*/
int
rtems_rfs_rtems_fdatasync (rtems_libio_t* iop)
{
52e02: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int rc;
rc = rtems_rfs_buffer_sync (rtems_rfs_rtems_pathloc_dev (&iop->pathinfo));
52e04: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
52e08: 4eb9 0005 a5f6 jsr 5a5f6 <rtems_rfs_buffer_sync> <== NOT EXECUTED
if (rc)
52e0e: 588f addql #4,%sp <== NOT EXECUTED
int
rtems_rfs_rtems_fdatasync (rtems_libio_t* iop)
{
int rc;
rc = rtems_rfs_buffer_sync (rtems_rfs_rtems_pathloc_dev (&iop->pathinfo));
52e10: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
52e12: 660a bnes 52e1e <rtems_rfs_rtems_fdatasync+0x28> <== NOT EXECUTED
return rtems_rfs_rtems_error ("fdatasync: sync", rc);
return 0;
}
52e14: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
rc = rtems_rfs_buffer_sync (rtems_rfs_rtems_pathloc_dev (&iop->pathinfo));
if (rc)
return rtems_rfs_rtems_error ("fdatasync: sync", rc);
return 0;
52e18: 4280 clrl %d0 <== NOT EXECUTED
}
52e1a: 4e5e unlk %fp <== NOT EXECUTED
52e1c: 4e75 rts <== NOT EXECUTED
{
int rc;
rc = rtems_rfs_buffer_sync (rtems_rfs_rtems_pathloc_dev (&iop->pathinfo));
if (rc)
return rtems_rfs_rtems_error ("fdatasync: sync", rc);
52e1e: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
52e24: 2040 moveal %d0,%a0 <== NOT EXECUTED
52e26: 70ff moveq #-1,%d0 <== NOT EXECUTED
52e28: 2082 movel %d2,%a0@ <== NOT EXECUTED
return 0;
}
52e2a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
52e2e: 4e5e unlk %fp <== NOT EXECUTED
...
0005f154 <rtems_rfs_rtems_file_close>:
* @param iop
* @return int
*/
static int
rtems_rfs_rtems_file_close (rtems_libio_t* iop)
{
5f154: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
5f158: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
5f15c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
5f160: 2668 001c moveal %a0@(28),%a3 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_file_fs (file);
5f164: 206b 001a moveal %a3@(26),%a0 <== NOT EXECUTED
5f168: 2468 0090 moveal %a0@(144),%a2 <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5f16c: 42a7 clrl %sp@- <== NOT EXECUTED
5f16e: 42a7 clrl %sp@- <== NOT EXECUTED
.fstat_h = rtems_rfs_rtems_fstat,
.ftruncate_h = rtems_rfs_rtems_file_ftruncate,
.fsync_h = rtems_rfs_rtems_fdatasync,
.fdatasync_h = rtems_rfs_rtems_fdatasync,
.fcntl_h = rtems_filesystem_default_fcntl
};
5f170: 206a 0080 moveal %a2@(128),%a0 <== NOT EXECUTED
5f174: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
5f176: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f17c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5f180: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f182: 667c bnes 5f200 <rtems_rfs_rtems_file_close+0xac><== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_CLOSE))
printf("rtems-rfs: file-close: handle:%p\n", file);
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_file_close (fs, file);
5f184: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5f186: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f188: 4eb9 0005 c2bc jsr 5c2bc <rtems_rfs_file_close> <== NOT EXECUTED
if (rc > 0)
5f18e: 508f addql #8,%sp <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_CLOSE))
printf("rtems-rfs: file-close: handle:%p\n", file);
rtems_rfs_rtems_lock (fs);
rc = rtems_rfs_file_close (fs, file);
5f190: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5f192: 6f0c bles 5f1a0 <rtems_rfs_rtems_file_close+0x4c><== NOT EXECUTED
rc = rtems_rfs_rtems_error ("file-close: file close", rc);
5f194: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5f19a: 2040 moveal %d0,%a0 <== NOT EXECUTED
5f19c: 2082 movel %d2,%a0@ <== NOT EXECUTED
5f19e: 74ff moveq #-1,%d2 <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f1a0: 266a 0080 moveal %a2@(128),%a3 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f1a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f1a6: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f1ac: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
5f1ae: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f1b4: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f1b6: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f1b8: 4a80 tstl %d0 <== NOT EXECUTED
5f1ba: 660c bnes 5f1c8 <rtems_rfs_rtems_file_close+0x74><== NOT EXECUTED
rtems_rfs_rtems_unlock (fs);
return rc;
}
5f1bc: 2002 movel %d2,%d0 <== NOT EXECUTED
5f1be: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
5f1c4: 4e5e unlk %fp <== NOT EXECUTED
5f1c6: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f1c8: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f1cc: 42a7 clrl %sp@- <== NOT EXECUTED
5f1ce: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f1d4: 508f addql #8,%sp <== NOT EXECUTED
5f1d6: 4a00 tstb %d0 <== NOT EXECUTED
5f1d8: 67e2 beqs 5f1bc <rtems_rfs_rtems_file_close+0x68><== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5f1da: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f1dc: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f1e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f1e4: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5f1ea: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f1f0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5f1f4: 2002 movel %d2,%d0 <== NOT EXECUTED
5f1f6: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
5f1fc: 4e5e unlk %fp <== NOT EXECUTED
5f1fe: 4e75 rts <== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f200: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f204: 42a7 clrl %sp@- <== NOT EXECUTED
5f206: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f20c: 508f addql #8,%sp <== NOT EXECUTED
5f20e: 4a00 tstb %d0 <== NOT EXECUTED
5f210: 6700 ff72 beqw 5f184 <rtems_rfs_rtems_file_close+0x30><== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
5f214: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f216: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f21c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f21e: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
5f224: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f22a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5f22e: 6000 ff54 braw 5f184 <rtems_rfs_rtems_file_close+0x30><== NOT EXECUTED
0005f232 <rtems_rfs_rtems_file_ftruncate>:
* @return int
*/
static int
rtems_rfs_rtems_file_ftruncate (rtems_libio_t* iop,
off_t length)
{
5f232: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
5f236: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
* @return int
*/
static int
rtems_rfs_rtems_file_ftruncate (rtems_libio_t* iop,
off_t length)
{
5f23a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f23c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5f23e: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
5f240: 2468 001c moveal %a0@(28),%a2 <== NOT EXECUTED
5f244: 42a7 clrl %sp@- <== NOT EXECUTED
int rc;
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_FTRUNC))
printf("rtems-rfs: file-ftrunc: handle:%p length:%" PRIdoff_t "\n", file, length);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
5f246: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
.fstat_h = rtems_rfs_rtems_fstat,
.ftruncate_h = rtems_rfs_rtems_file_ftruncate,
.fsync_h = rtems_rfs_rtems_fdatasync,
.fdatasync_h = rtems_rfs_rtems_fdatasync,
.fcntl_h = rtems_filesystem_default_fcntl
};
5f24a: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
5f24e: 2068 0080 moveal %a0@(128),%a0 <== NOT EXECUTED
5f252: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
5f254: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f25a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5f25e: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f260: 6600 00b8 bnew 5f31a <rtems_rfs_rtems_file_ftruncate+0xe8><== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_FTRUNC))
printf("rtems-rfs: file-ftrunc: handle:%p length:%" PRIdoff_t "\n", file, length);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
rc = rtems_rfs_file_set_size (file, length);
5f264: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5f268: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5f26c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f26e: 4eb9 0005 cc70 jsr 5cc70 <rtems_rfs_file_set_size> <== NOT EXECUTED
if (rc)
5f274: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_FTRUNC))
printf("rtems-rfs: file-ftrunc: handle:%p length:%" PRIdoff_t "\n", file, length);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
rc = rtems_rfs_file_set_size (file, length);
5f278: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
5f27a: 666c bnes 5f2e8 <rtems_rfs_rtems_file_ftruncate+0xb6><== NOT EXECUTED
rc = rtems_rfs_rtems_error ("file_ftruncate: set size", rc);
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5f27c: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5f280: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f284: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f288: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5f28a: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f290: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5f292: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f298: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f29a: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f29c: 4a80 tstl %d0 <== NOT EXECUTED
5f29e: 660e bnes 5f2ae <rtems_rfs_rtems_file_ftruncate+0x7c><== NOT EXECUTED
return rc;
}
5f2a0: 2002 movel %d2,%d0 <== NOT EXECUTED
5f2a2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5f2a6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5f2aa: 4e5e unlk %fp <== NOT EXECUTED
5f2ac: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f2ae: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f2b2: 42a7 clrl %sp@- <== NOT EXECUTED
5f2b4: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f2ba: 508f addql #8,%sp <== NOT EXECUTED
5f2bc: 4a00 tstb %d0 <== NOT EXECUTED
5f2be: 67e0 beqs 5f2a0 <rtems_rfs_rtems_file_ftruncate+0x6e><== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5f2c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f2c2: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f2c8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f2ca: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5f2d0: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f2d6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5f2da: 2002 movel %d2,%d0 <== NOT EXECUTED
5f2dc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5f2e0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5f2e4: 4e5e unlk %fp <== NOT EXECUTED
5f2e6: 4e75 rts <== NOT EXECUTED
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
rc = rtems_rfs_file_set_size (file, length);
if (rc)
rc = rtems_rfs_rtems_error ("file_ftruncate: set size", rc);
5f2e8: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5f2ee: 2040 moveal %d0,%a0 <== NOT EXECUTED
5f2f0: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5f2f2: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
rc = rtems_rfs_file_set_size (file, length);
if (rc)
rc = rtems_rfs_rtems_error ("file_ftruncate: set size", rc);
5f2f6: 74ff moveq #-1,%d2 <== NOT EXECUTED
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5f2f8: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f2fc: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f300: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5f302: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f308: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5f30a: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f310: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f312: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f314: 4a80 tstl %d0 <== NOT EXECUTED
5f316: 6788 beqs 5f2a0 <rtems_rfs_rtems_file_ftruncate+0x6e><== NOT EXECUTED
5f318: 6094 bras 5f2ae <rtems_rfs_rtems_file_ftruncate+0x7c><== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f31a: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f31e: 42a7 clrl %sp@- <== NOT EXECUTED
5f320: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f326: 508f addql #8,%sp <== NOT EXECUTED
5f328: 4a00 tstb %d0 <== NOT EXECUTED
5f32a: 6700 ff38 beqw 5f264 <rtems_rfs_rtems_file_ftruncate+0x32><== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
5f32e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f330: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f336: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f338: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
5f33e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f344: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_FTRUNC))
printf("rtems-rfs: file-ftrunc: handle:%p length:%" PRIdoff_t "\n", file, length);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
rc = rtems_rfs_file_set_size (file, length);
5f348: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5f34c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5f350: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f352: 4eb9 0005 cc70 jsr 5cc70 <rtems_rfs_file_set_size> <== NOT EXECUTED
if (rc)
5f358: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_FTRUNC))
printf("rtems-rfs: file-ftrunc: handle:%p length:%" PRIdoff_t "\n", file, length);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
rc = rtems_rfs_file_set_size (file, length);
5f35c: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
5f35e: 6700 ff1c beqw 5f27c <rtems_rfs_rtems_file_ftruncate+0x4a><== NOT EXECUTED
5f362: 6084 bras 5f2e8 <rtems_rfs_rtems_file_ftruncate+0xb6><== NOT EXECUTED
0005edd0 <rtems_rfs_rtems_file_lseek>:
*/
static off_t
rtems_rfs_rtems_file_lseek (rtems_libio_t* iop,
off_t offset,
int whence)
{
5edd0: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
5edd4: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
5edd8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5eddc: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
5edde: 266a 001c moveal %a2@(28),%a3 <== NOT EXECUTED
5ede2: 42a7 clrl %sp@- <== NOT EXECUTED
off_t new_offset;
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_LSEEK))
printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
5ede4: 206b 001a moveal %a3@(26),%a0 <== NOT EXECUTED
.fstat_h = rtems_rfs_rtems_fstat,
.ftruncate_h = rtems_rfs_rtems_file_ftruncate,
.fsync_h = rtems_rfs_rtems_fdatasync,
.fdatasync_h = rtems_rfs_rtems_fdatasync,
.fcntl_h = rtems_filesystem_default_fcntl
};
5ede8: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
5edec: 2068 0080 moveal %a0@(128),%a0 <== NOT EXECUTED
5edf0: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
5edf2: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5edf8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5edfc: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5edfe: 6600 00c0 bnew 5eec0 <rtems_rfs_rtems_file_lseek+0xf0><== NOT EXECUTED
printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
old_offset = iop->offset;
new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
5ee02: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5ee06: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5ee0a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_LSEEK))
printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
old_offset = iop->offset;
5ee0e: 282a 0004 movel %a2@(4),%d4 <== NOT EXECUTED
5ee12: 2a2a 0008 movel %a2@(8),%d5 <== NOT EXECUTED
new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
5ee16: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5ee18: 4eb9 0005 f89c jsr 5f89c <rtems_filesystem_default_lseek_file><== NOT EXECUTED
if (new_offset != -1)
5ee1e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
old_offset = iop->offset;
new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
5ee22: 2400 movel %d0,%d2 <== NOT EXECUTED
5ee24: 2601 movel %d1,%d3 <== NOT EXECUTED
if (new_offset != -1)
5ee26: 70ff moveq #-1,%d0 <== NOT EXECUTED
5ee28: 72ff moveq #-1,%d1 <== NOT EXECUTED
5ee2a: 9283 subl %d3,%d1 <== NOT EXECUTED
5ee2c: 9182 subxl %d2,%d0 <== NOT EXECUTED
5ee2e: 6726 beqs 5ee56 <rtems_rfs_rtems_file_lseek+0x86><== NOT EXECUTED
{
rtems_rfs_pos pos = iop->offset;
5ee30: 204e moveal %fp,%a0 <== NOT EXECUTED
5ee32: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
5ee36: 222a 0008 movel %a2@(8),%d1 <== NOT EXECUTED
5ee3a: 2101 movel %d1,%a0@- <== NOT EXECUTED
5ee3c: 2100 movel %d0,%a0@- <== NOT EXECUTED
int rc = rtems_rfs_file_seek (file, pos, &pos);
5ee3e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5ee40: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5ee42: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ee44: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5ee46: 4eb9 0005 cb76 jsr 5cb76 <rtems_rfs_file_seek> <== NOT EXECUTED
if (rc)
5ee4c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
old_offset = iop->offset;
new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
if (new_offset != -1)
{
rtems_rfs_pos pos = iop->offset;
int rc = rtems_rfs_file_seek (file, pos, &pos);
5ee50: 2c00 movel %d0,%d6 <== NOT EXECUTED
if (rc)
5ee52: 6600 009e bnew 5eef2 <rtems_rfs_rtems_file_lseek+0x122><== NOT EXECUTED
iop->offset = old_offset;
new_offset = -1;
}
}
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5ee56: 206b 001a moveal %a3@(26),%a0 <== NOT EXECUTED
5ee5a: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5ee5e: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5ee62: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5ee64: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ee6a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5ee6c: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ee72: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ee74: 2800 movel %d0,%d4 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ee76: 660e bnes 5ee86 <rtems_rfs_rtems_file_lseek+0xb6><== NOT EXECUTED
return new_offset;
}
5ee78: 2002 movel %d2,%d0 <== NOT EXECUTED
5ee7a: 2203 movel %d3,%d1 <== NOT EXECUTED
5ee7c: 4cee 0c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a3 <== NOT EXECUTED
5ee82: 4e5e unlk %fp <== NOT EXECUTED
5ee84: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5ee86: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5ee8a: 42a7 clrl %sp@- <== NOT EXECUTED
5ee8c: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5ee92: 508f addql #8,%sp <== NOT EXECUTED
5ee94: 4a00 tstb %d0 <== NOT EXECUTED
5ee96: 67e0 beqs 5ee78 <rtems_rfs_rtems_file_lseek+0xa8><== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5ee98: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5ee9a: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5eea0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5eea2: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5eea8: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5eeae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5eeb2: 2002 movel %d2,%d0 <== NOT EXECUTED
5eeb4: 2203 movel %d3,%d1 <== NOT EXECUTED
5eeb6: 4cee 0c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a3 <== NOT EXECUTED
5eebc: 4e5e unlk %fp <== NOT EXECUTED
5eebe: 4e75 rts <== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5eec0: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5eec4: 42a7 clrl %sp@- <== NOT EXECUTED
5eec6: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5eecc: 508f addql #8,%sp <== NOT EXECUTED
5eece: 4a00 tstb %d0 <== NOT EXECUTED
5eed0: 6700 ff30 beqw 5ee02 <rtems_rfs_rtems_file_lseek+0x32><== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
5eed4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5eed6: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5eedc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5eede: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
5eee4: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5eeea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5eeee: 6000 ff12 braw 5ee02 <rtems_rfs_rtems_file_lseek+0x32><== NOT EXECUTED
rtems_rfs_pos pos = iop->offset;
int rc = rtems_rfs_file_seek (file, pos, &pos);
if (rc)
{
rtems_rfs_rtems_error ("file_lseek: lseek", rc);
5eef2: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5eef8: 2040 moveal %d0,%a0 <== NOT EXECUTED
5eefa: 2086 movel %d6,%a0@ <== NOT EXECUTED
iop->offset = old_offset;
new_offset = -1;
}
}
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5eefc: 206b 001a moveal %a3@(26),%a0 <== NOT EXECUTED
5ef00: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
int rc = rtems_rfs_file_seek (file, pos, &pos);
if (rc)
{
rtems_rfs_rtems_error ("file_lseek: lseek", rc);
iop->offset = old_offset;
5ef04: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
5ef08: 2545 0008 movel %d5,%a2@(8) <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5ef0c: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5ef10: 2f08 movel %a0,%sp@- <== NOT EXECUTED
new_offset = -1;
5ef12: 74ff moveq #-1,%d2 <== NOT EXECUTED
5ef14: 76ff moveq #-1,%d3 <== NOT EXECUTED
5ef16: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ef1c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5ef1e: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ef24: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5ef26: 2800 movel %d0,%d4 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ef28: 6700 ff4e beqw 5ee78 <rtems_rfs_rtems_file_lseek+0xa8><== NOT EXECUTED
5ef2c: 6000 ff58 braw 5ee86 <rtems_rfs_rtems_file_lseek+0xb6><== NOT EXECUTED
0005f364 <rtems_rfs_rtems_file_open>:
static int
rtems_rfs_rtems_file_open (rtems_libio_t* iop,
const char* pathname,
int oflag,
mode_t mode)
{
5f364: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
5f368: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
5f36c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
5f370: 206b 0024 moveal %a3@(36),%a0 <== NOT EXECUTED
5f374: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5f378: 42a7 clrl %sp@- <== NOT EXECUTED
5f37a: 42a7 clrl %sp@- <== NOT EXECUTED
.fstat_h = rtems_rfs_rtems_fstat,
.ftruncate_h = rtems_rfs_rtems_file_ftruncate,
.fsync_h = rtems_rfs_rtems_fdatasync,
.fdatasync_h = rtems_rfs_rtems_fdatasync,
.fcntl_h = rtems_filesystem_default_fcntl
};
5f37c: 206a 0080 moveal %a2@(128),%a0 <== NOT EXECUTED
5f380: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
5f382: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f388: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5f38c: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f38e: 664e bnes 5f3de <rtems_rfs_rtems_file_open+0x7a> <== NOT EXECUTED
rtems_rfs_rtems_lock (fs);
ino = rtems_rfs_rtems_get_iop_ino (iop);
rc = rtems_rfs_file_open (fs, ino, flags, &file);
5f390: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5f394: 42a7 clrl %sp@- <== NOT EXECUTED
5f396: 2f2b 0018 movel %a3@(24),%sp@- <== NOT EXECUTED
5f39a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f39c: 4eb9 0005 bebc jsr 5bebc <rtems_rfs_file_open> <== NOT EXECUTED
if (rc > 0)
5f3a2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_rtems_lock (fs);
ino = rtems_rfs_rtems_get_iop_ino (iop);
rc = rtems_rfs_file_open (fs, ino, flags, &file);
5f3a6: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5f3a8: 6f7a bles 5f424 <rtems_rfs_rtems_file_open+0xc0> <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f3aa: 266a 0080 moveal %a2@(128),%a3 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f3ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f3b0: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f3b6: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
5f3b8: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f3be: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f3c0: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f3c2: 4a80 tstl %d0 <== NOT EXECUTED
5f3c4: 6600 008a bnew 5f450 <rtems_rfs_rtems_file_open+0xec> <== NOT EXECUTED
{
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("file-open: open", rc);
5f3c8: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5f3ce: 2040 moveal %d0,%a0 <== NOT EXECUTED
5f3d0: 70ff moveq #-1,%d0 <== NOT EXECUTED
5f3d2: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_rfs_rtems_set_iop_file_handle (iop, file);
rtems_rfs_rtems_unlock (fs);
return 0;
}
5f3d4: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED
5f3da: 4e5e unlk %fp <== NOT EXECUTED
5f3dc: 4e75 rts <== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f3de: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f3e2: 42a7 clrl %sp@- <== NOT EXECUTED
5f3e4: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f3ea: 508f addql #8,%sp <== NOT EXECUTED
5f3ec: 4a00 tstb %d0 <== NOT EXECUTED
5f3ee: 67a0 beqs 5f390 <rtems_rfs_rtems_file_open+0x2c> <== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
5f3f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f3f2: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f3f8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f3fa: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
5f400: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f406: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_rfs_rtems_lock (fs);
ino = rtems_rfs_rtems_get_iop_ino (iop);
rc = rtems_rfs_file_open (fs, ino, flags, &file);
5f40a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5f40e: 42a7 clrl %sp@- <== NOT EXECUTED
5f410: 2f2b 0018 movel %a3@(24),%sp@- <== NOT EXECUTED
5f414: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f416: 4eb9 0005 bebc jsr 5bebc <rtems_rfs_file_open> <== NOT EXECUTED
if (rc > 0)
5f41c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_rtems_lock (fs);
ino = rtems_rfs_rtems_get_iop_ino (iop);
rc = rtems_rfs_file_open (fs, ino, flags, &file);
5f420: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5f422: 6e86 bgts 5f3aa <rtems_rfs_rtems_file_open+0x46> <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f424: 286a 0080 moveal %a2@(128),%a4 <== NOT EXECUTED
}
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_OPEN))
printf("rtems-rfs: file-open: handle:%p\n", file);
rtems_rfs_rtems_set_iop_file_handle (iop, file);
5f428: 276e fffc 001c movel %fp@(-4),%a3@(28) <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f42e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f430: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f436: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
5f438: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f43e: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f440: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f442: 664a bnes 5f48e <rtems_rfs_rtems_file_open+0x12a><== NOT EXECUTED
rtems_rfs_rtems_unlock (fs);
return 0;
5f444: 4280 clrl %d0 <== NOT EXECUTED
}
5f446: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED
5f44c: 4e5e unlk %fp <== NOT EXECUTED
5f44e: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f450: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f454: 42a7 clrl %sp@- <== NOT EXECUTED
5f456: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f45c: 508f addql #8,%sp <== NOT EXECUTED
5f45e: 4a00 tstb %d0 <== NOT EXECUTED
5f460: 6700 ff66 beqw 5f3c8 <rtems_rfs_rtems_file_open+0x64> <== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5f464: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f466: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f46c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f46e: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5f474: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f47a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rc = rtems_rfs_file_open (fs, ino, flags, &file);
if (rc > 0)
{
rtems_rfs_rtems_unlock (fs);
return rtems_rfs_rtems_error ("file-open: open", rc);
5f47e: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5f484: 2040 moveal %d0,%a0 <== NOT EXECUTED
5f486: 70ff moveq #-1,%d0 <== NOT EXECUTED
5f488: 2082 movel %d2,%a0@ <== NOT EXECUTED
5f48a: 6000 ff48 braw 5f3d4 <rtems_rfs_rtems_file_open+0x70> <== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f48e: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f492: 42a7 clrl %sp@- <== NOT EXECUTED
5f494: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f49a: 508f addql #8,%sp <== NOT EXECUTED
5f49c: 4a00 tstb %d0 <== NOT EXECUTED
5f49e: 67a4 beqs 5f444 <rtems_rfs_rtems_file_open+0xe0> <== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5f4a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f4a2: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f4a8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f4aa: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5f4b0: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f4b6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
printf("rtems-rfs: file-open: handle:%p\n", file);
rtems_rfs_rtems_set_iop_file_handle (iop, file);
rtems_rfs_rtems_unlock (fs);
return 0;
5f4ba: 4280 clrl %d0 <== NOT EXECUTED
5f4bc: 6088 bras 5f446 <rtems_rfs_rtems_file_open+0xe2> <== NOT EXECUTED
0005ef30 <rtems_rfs_rtems_file_read>:
*/
static ssize_t
rtems_rfs_rtems_file_read (rtems_libio_t* iop,
void* buffer,
size_t count)
{
5ef30: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
5ef34: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
*/
static ssize_t
rtems_rfs_rtems_file_read (rtems_libio_t* iop,
void* buffer,
size_t count)
{
5ef38: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5ef3c: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
5ef3e: 2468 001c moveal %a0@(28),%a2 <== NOT EXECUTED
5ef42: 42a7 clrl %sp@- <== NOT EXECUTED
int rc;
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_READ))
printf("rtems-rfs: file-read: handle:%p count:%zd\n", file, count);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
5ef44: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
.fstat_h = rtems_rfs_rtems_fstat,
.ftruncate_h = rtems_rfs_rtems_file_ftruncate,
.fsync_h = rtems_rfs_rtems_fdatasync,
.fdatasync_h = rtems_rfs_rtems_fdatasync,
.fcntl_h = rtems_filesystem_default_fcntl
};
5ef48: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
5ef4c: 2068 0080 moveal %a0@(128),%a0 <== NOT EXECUTED
5ef50: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
*/
static ssize_t
rtems_rfs_rtems_file_read (rtems_libio_t* iop,
void* buffer,
size_t count)
{
5ef52: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
5ef56: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ef5c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5ef60: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5ef62: 6600 0116 bnew 5f07a <rtems_rfs_rtems_file_read+0x14a><== NOT EXECUTED
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
pos = iop->offset;
if (pos < rtems_rfs_file_size (file))
5ef66: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5ef6a: 4868 007c pea %a0@(124) <== NOT EXECUTED
5ef6e: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_READ))
printf("rtems-rfs: file-read: handle:%p count:%zd\n", file, count);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
pos = iop->offset;
5ef72: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
5ef76: 2428 0004 movel %a0@(4),%d2 <== NOT EXECUTED
5ef7a: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED
5ef7e: 2d42 fff4 movel %d2,%fp@(-12) <== NOT EXECUTED
5ef82: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
5ef86: 4eb9 0005 9180 jsr 59180 <rtems_rfs_block_get_size> <== NOT EXECUTED
if (pos < rtems_rfs_file_size (file))
5ef8c: 508f addql #8,%sp <== NOT EXECUTED
5ef8e: 9681 subl %d1,%d3 <== NOT EXECUTED
5ef90: 9580 subxl %d0,%d2 <== NOT EXECUTED
5ef92: 6400 00c6 bccw 5f05a <rtems_rfs_rtems_file_read+0x12a><== NOT EXECUTED
{
while (count)
5ef96: 4a84 tstl %d4 <== NOT EXECUTED
5ef98: 6700 00c0 beqw 5f05a <rtems_rfs_rtems_file_read+0x12a><== NOT EXECUTED
5ef9c: 2e0e movel %fp,%d7 <== NOT EXECUTED
5ef9e: 4286 clrl %d6 <== NOT EXECUTED
5efa0: 5987 subql #4,%d7 <== NOT EXECUTED
5efa2: 47f9 0005 c67e lea 5c67e <rtems_rfs_file_io_start>,%a3 <== NOT EXECUTED
break;
if (size > count)
size = count;
memcpy (data, rtems_rfs_file_data (file), size);
5efa8: 4bf9 0006 1438 lea 61438 <memcpy>,%a5 <== NOT EXECUTED
data += size;
count -= size;
read += size;
rc = rtems_rfs_file_io_end (file, size, true);
5efae: 49f9 0005 c8dc lea 5c8dc <rtems_rfs_file_io_end>,%a4 <== NOT EXECUTED
pos = iop->offset;
if (pos < rtems_rfs_file_size (file))
{
while (count)
5efb4: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
{
size_t size;
rc = rtems_rfs_file_io_start (file, &size, true);
5efb8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5efbc: 2f07 movel %d7,%sp@- <== NOT EXECUTED
5efbe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5efc0: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc > 0)
5efc2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
{
while (count)
{
size_t size;
rc = rtems_rfs_file_io_start (file, &size, true);
5efc6: 2200 movel %d0,%d1 <== NOT EXECUTED
if (rc > 0)
5efc8: 6e00 014e bgtw 5f118 <rtems_rfs_rtems_file_read+0x1e8><== NOT EXECUTED
{
read = rtems_rfs_rtems_error ("file-read: read: io-start", rc);
break;
}
if (size == 0)
5efcc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
5efd0: 6738 beqs 5f00a <rtems_rfs_rtems_file_read+0xda> <== NOT EXECUTED
break;
if (size > count)
5efd2: b882 cmpl %d2,%d4 <== NOT EXECUTED
5efd4: 6500 010e bcsw 5f0e4 <rtems_rfs_rtems_file_read+0x1b4><== NOT EXECUTED
size = count;
memcpy (data, rtems_rfs_file_data (file), size);
5efd8: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED
5efdc: 9882 subl %d2,%d4 <== NOT EXECUTED
data += size;
count -= size;
read += size;
5efde: dc82 addl %d2,%d6 <== NOT EXECUTED
break;
if (size > count)
size = count;
memcpy (data, rtems_rfs_file_data (file), size);
5efe0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5efe2: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
5efe6: d1ea 0012 addal %a2@(18),%a0 <== NOT EXECUTED
5efea: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5efec: 2f05 movel %d5,%sp@- <== NOT EXECUTED
data += size;
5efee: da82 addl %d2,%d5 <== NOT EXECUTED
break;
if (size > count)
size = count;
memcpy (data, rtems_rfs_file_data (file), size);
5eff0: 4e95 jsr %a5@ <== NOT EXECUTED
data += size;
count -= size;
read += size;
rc = rtems_rfs_file_io_end (file, size, true);
5eff2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5eff6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5eff8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5effa: 4e94 jsr %a4@ <== NOT EXECUTED
if (rc > 0)
5effc: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
data += size;
count -= size;
read += size;
rc = rtems_rfs_file_io_end (file, size, true);
5f000: 2200 movel %d0,%d1 <== NOT EXECUTED
if (rc > 0)
5f002: 6e00 0114 bgtw 5f118 <rtems_rfs_rtems_file_read+0x1e8><== NOT EXECUTED
pos = iop->offset;
if (pos < rtems_rfs_file_size (file))
{
while (count)
5f006: 4a84 tstl %d4 <== NOT EXECUTED
5f008: 66ae bnes 5efb8 <rtems_rfs_rtems_file_read+0x88> <== NOT EXECUTED
break;
}
}
}
if (read >= 0)
5f00a: 4a86 tstl %d6 <== NOT EXECUTED
5f00c: 6d1e blts 5f02c <rtems_rfs_rtems_file_read+0xfc> <== NOT EXECUTED
iop->offset = pos + read;
5f00e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
5f012: 2206 movel %d6,%d1 <== NOT EXECUTED
5f014: 5bc0 smi %d0 <== NOT EXECUTED
5f016: 49c0 extbl %d0 <== NOT EXECUTED
5f018: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5f01c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
5f020: d681 addl %d1,%d3 <== NOT EXECUTED
5f022: d580 addxl %d0,%d2 <== NOT EXECUTED
5f024: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
5f028: 2143 0008 movel %d3,%a0@(8) <== NOT EXECUTED
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5f02c: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5f030: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f034: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f038: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5f03a: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f040: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5f042: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f048: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f04a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f04c: 665e bnes 5f0ac <rtems_rfs_rtems_file_read+0x17c><== NOT EXECUTED
return read;
}
5f04e: 2006 movel %d6,%d0 <== NOT EXECUTED
5f050: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5f056: 4e5e unlk %fp <== NOT EXECUTED
5f058: 4e75 rts <== NOT EXECUTED
}
}
}
if (read >= 0)
iop->offset = pos + read;
5f05a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
size_t count)
{
rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
rtems_rfs_pos pos;
uint8_t* data = buffer;
ssize_t read = 0;
5f05e: 4286 clrl %d6 <== NOT EXECUTED
pos = iop->offset;
if (pos < rtems_rfs_file_size (file))
{
while (count)
5f060: 4280 clrl %d0 <== NOT EXECUTED
5f062: 4281 clrl %d1 <== NOT EXECUTED
}
}
}
if (read >= 0)
iop->offset = pos + read;
5f064: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5f068: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
5f06c: d681 addl %d1,%d3 <== NOT EXECUTED
5f06e: d580 addxl %d0,%d2 <== NOT EXECUTED
5f070: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
5f074: 2143 0008 movel %d3,%a0@(8) <== NOT EXECUTED
5f078: 60b2 bras 5f02c <rtems_rfs_rtems_file_read+0xfc> <== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f07a: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f07e: 42a7 clrl %sp@- <== NOT EXECUTED
5f080: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f086: 508f addql #8,%sp <== NOT EXECUTED
5f088: 4a00 tstb %d0 <== NOT EXECUTED
5f08a: 6700 feda beqw 5ef66 <rtems_rfs_rtems_file_read+0x36> <== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
5f08e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f090: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f096: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f098: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
5f09e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f0a4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5f0a8: 6000 febc braw 5ef66 <rtems_rfs_rtems_file_read+0x36> <== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f0ac: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f0b0: 42a7 clrl %sp@- <== NOT EXECUTED
5f0b2: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f0b8: 508f addql #8,%sp <== NOT EXECUTED
5f0ba: 4a00 tstb %d0 <== NOT EXECUTED
5f0bc: 6790 beqs 5f04e <rtems_rfs_rtems_file_read+0x11e><== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5f0be: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f0c0: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f0c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f0c8: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5f0ce: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f0d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
return read;
}
5f0d8: 2006 movel %d6,%d0 <== NOT EXECUTED
5f0da: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5f0e0: 4e5e unlk %fp <== NOT EXECUTED
5f0e2: 4e75 rts <== NOT EXECUTED
break;
if (size > count)
size = count;
memcpy (data, rtems_rfs_file_data (file), size);
5f0e4: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED
if (size == 0)
break;
if (size > count)
size = count;
5f0e8: 2404 movel %d4,%d2 <== NOT EXECUTED
memcpy (data, rtems_rfs_file_data (file), size);
data += size;
count -= size;
read += size;
5f0ea: dc82 addl %d2,%d6 <== NOT EXECUTED
break;
if (size > count)
size = count;
memcpy (data, rtems_rfs_file_data (file), size);
5f0ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f0ee: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
5f0f2: d1ea 0012 addal %a2@(18),%a0 <== NOT EXECUTED
5f0f6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
if (size == 0)
break;
if (size > count)
size = count;
5f0f8: 2d44 fffc movel %d4,%fp@(-4) <== NOT EXECUTED
5f0fc: 4284 clrl %d4 <== NOT EXECUTED
memcpy (data, rtems_rfs_file_data (file), size);
5f0fe: 2f05 movel %d5,%sp@- <== NOT EXECUTED
data += size;
5f100: da82 addl %d2,%d5 <== NOT EXECUTED
break;
if (size > count)
size = count;
memcpy (data, rtems_rfs_file_data (file), size);
5f102: 4e95 jsr %a5@ <== NOT EXECUTED
data += size;
count -= size;
read += size;
rc = rtems_rfs_file_io_end (file, size, true);
5f104: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5f108: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f10a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f10c: 4e94 jsr %a4@ <== NOT EXECUTED
if (rc > 0)
5f10e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
data += size;
count -= size;
read += size;
rc = rtems_rfs_file_io_end (file, size, true);
5f112: 2200 movel %d0,%d1 <== NOT EXECUTED
if (rc > 0)
5f114: 6f00 fef0 blew 5f006 <rtems_rfs_rtems_file_read+0xd6> <== NOT EXECUTED
{
read = rtems_rfs_rtems_error ("file-read: read: io-end", rc);
5f118: 2d41 fff0 movel %d1,%fp@(-16) <== NOT EXECUTED
5f11c: 7cff moveq #-1,%d6 <== NOT EXECUTED
5f11e: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5f124: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED
5f128: 2040 moveal %d0,%a0 <== NOT EXECUTED
5f12a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
if (read >= 0)
iop->offset = pos + read;
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5f12c: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5f130: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f134: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f138: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5f13a: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f140: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5f142: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f148: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f14a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f14c: 6700 ff00 beqw 5f04e <rtems_rfs_rtems_file_read+0x11e><== NOT EXECUTED
5f150: 6000 ff5a braw 5f0ac <rtems_rfs_rtems_file_read+0x17c><== NOT EXECUTED
0005f4be <rtems_rfs_rtems_file_write>:
*/
static ssize_t
rtems_rfs_rtems_file_write (rtems_libio_t* iop,
const void* buffer,
size_t count)
{
5f4be: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
5f4c2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
*/
static ssize_t
rtems_rfs_rtems_file_write (rtems_libio_t* iop,
const void* buffer,
size_t count)
{
5f4c6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5f4ca: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
5f4cc: 2468 001c moveal %a0@(28),%a2 <== NOT EXECUTED
5f4d0: 42a7 clrl %sp@- <== NOT EXECUTED
int rc;
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_WRITE))
printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
5f4d2: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
.fstat_h = rtems_rfs_rtems_fstat,
.ftruncate_h = rtems_rfs_rtems_file_ftruncate,
.fsync_h = rtems_rfs_rtems_fdatasync,
.fdatasync_h = rtems_rfs_rtems_fdatasync,
.fcntl_h = rtems_filesystem_default_fcntl
};
5f4d6: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
5f4da: 2068 0080 moveal %a0@(128),%a0 <== NOT EXECUTED
5f4de: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
*/
static ssize_t
rtems_rfs_rtems_file_write (rtems_libio_t* iop,
const void* buffer,
size_t count)
{
5f4e0: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
5f4e4: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f4ea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
5f4ee: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f4f0: 6600 014a bnew 5f63c <rtems_rfs_rtems_file_write+0x17e><== NOT EXECUTED
printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
pos = iop->offset;
file_size = rtems_rfs_file_size (file);
5f4f4: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5f4f8: 4868 007c pea %a0@(124) <== NOT EXECUTED
5f4fc: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_WRITE))
printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
pos = iop->offset;
5f500: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
5f504: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
5f508: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
5f50c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
5f510: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED
5f514: 4eb9 0005 9180 jsr 59180 <rtems_rfs_block_get_size> <== NOT EXECUTED
file_size = rtems_rfs_file_size (file);
if (pos > file_size)
5f51a: 508f addql #8,%sp <== NOT EXECUTED
5f51c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5f520: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
5f524: 2a02 movel %d2,%d5 <== NOT EXECUTED
5f526: 2c03 movel %d3,%d6 <== NOT EXECUTED
5f528: 9c81 subl %d1,%d6 <== NOT EXECUTED
5f52a: 9b80 subxl %d0,%d5 <== NOT EXECUTED
5f52c: 6200 0178 bhiw 5f6a6 <rtems_rfs_rtems_file_write+0x1e8><== NOT EXECUTED
return rtems_rfs_rtems_error ("file-write: write extend", rc);
}
rtems_rfs_file_set_bpos (file, pos);
}
else if (pos < file_size && (iop->flags & LIBIO_FLAGS_APPEND) != 0)
5f530: 2a02 movel %d2,%d5 <== NOT EXECUTED
5f532: 2c03 movel %d3,%d6 <== NOT EXECUTED
5f534: 9c81 subl %d1,%d6 <== NOT EXECUTED
5f536: 9b80 subxl %d0,%d5 <== NOT EXECUTED
5f538: 6500 01be bcsw 5f6f8 <rtems_rfs_rtems_file_write+0x23a><== NOT EXECUTED
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
return rtems_rfs_rtems_error ("file-write: write append seek", rc);
}
}
while (count)
5f53c: 4a84 tstl %d4 <== NOT EXECUTED
5f53e: 6700 02a6 beqw 5f7e6 <rtems_rfs_rtems_file_write+0x328><== NOT EXECUTED
5f542: 260e movel %fp,%d3 <== NOT EXECUTED
5f544: 4285 clrl %d5 <== NOT EXECUTED
5f546: 0683 ffff fff4 addil #-12,%d3 <== NOT EXECUTED
5f54c: 49f9 0005 c67e lea 5c67e <rtems_rfs_file_io_start>,%a4 <== NOT EXECUTED
}
if (size > count)
size = count;
memcpy (rtems_rfs_file_data (file), data, size);
5f552: 47f9 0006 1438 lea 61438 <memcpy>,%a3 <== NOT EXECUTED
data += size;
count -= size;
write += size;
rc = rtems_rfs_file_io_end (file, size, false);
5f558: 4bf9 0005 c8dc lea 5c8dc <rtems_rfs_file_io_end>,%a5 <== NOT EXECUTED
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
return rtems_rfs_rtems_error ("file-write: write append seek", rc);
}
}
while (count)
5f55e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
{
size_t size = count;
rc = rtems_rfs_file_io_start (file, &size, false);
5f562: 42a7 clrl %sp@- <== NOT EXECUTED
5f564: 2f03 movel %d3,%sp@- <== NOT EXECUTED
}
}
while (count)
{
size_t size = count;
5f566: 2d44 fff4 movel %d4,%fp@(-12) <== NOT EXECUTED
rc = rtems_rfs_file_io_start (file, &size, false);
5f56a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f56c: 4e94 jsr %a4@ <== NOT EXECUTED
if (rc)
5f56e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
while (count)
{
size_t size = count;
rc = rtems_rfs_file_io_start (file, &size, false);
5f572: 2e00 movel %d0,%d7 <== NOT EXECUTED
if (rc)
5f574: 6600 0094 bnew 5f60a <rtems_rfs_rtems_file_write+0x14c><== NOT EXECUTED
{
write = rtems_rfs_rtems_error ("file-write: write open", rc);
break;
}
if (size > count)
5f578: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
5f57c: b880 cmpl %d0,%d4 <== NOT EXECUTED
5f57e: 6406 bccs 5f586 <rtems_rfs_rtems_file_write+0xc8><== NOT EXECUTED
size = count;
5f580: 2d44 fff4 movel %d4,%fp@(-12) <== NOT EXECUTED
5f584: 2004 movel %d4,%d0 <== NOT EXECUTED
memcpy (rtems_rfs_file_data (file), data, size);
5f586: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED
5f58a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f58c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f58e: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED
5f592: d1ea 0012 addal %a2@(18),%a0 <== NOT EXECUTED
5f596: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5f598: 4e93 jsr %a3@ <== NOT EXECUTED
data += size;
5f59a: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
count -= size;
5f59e: 9881 subl %d1,%d4 <== NOT EXECUTED
if (size > count)
size = count;
memcpy (rtems_rfs_file_data (file), data, size);
data += size;
5f5a0: d481 addl %d1,%d2 <== NOT EXECUTED
count -= size;
write += size;
5f5a2: da81 addl %d1,%d5 <== NOT EXECUTED
rc = rtems_rfs_file_io_end (file, size, false);
5f5a4: 42a7 clrl %sp@- <== NOT EXECUTED
5f5a6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5f5a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f5aa: 4e95 jsr %a5@ <== NOT EXECUTED
if (rc)
5f5ac: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
data += size;
count -= size;
write += size;
rc = rtems_rfs_file_io_end (file, size, false);
5f5b0: 2e00 movel %d0,%d7 <== NOT EXECUTED
if (rc)
5f5b2: 6656 bnes 5f60a <rtems_rfs_rtems_file_write+0x14c><== NOT EXECUTED
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
return rtems_rfs_rtems_error ("file-write: write append seek", rc);
}
}
while (count)
5f5b4: 4a84 tstl %d4 <== NOT EXECUTED
5f5b6: 66aa bnes 5f562 <rtems_rfs_rtems_file_write+0xa4><== NOT EXECUTED
5f5b8: 2605 movel %d5,%d3 <== NOT EXECUTED
5f5ba: 5bc2 smi %d2 <== NOT EXECUTED
5f5bc: 49c2 extbl %d2 <== NOT EXECUTED
write = rtems_rfs_rtems_error ("file-write: write close", rc);
break;
}
}
if (write >= 0)
5f5be: 4a85 tstl %d5 <== NOT EXECUTED
5f5c0: 6d18 blts 5f5da <rtems_rfs_rtems_file_write+0x11c><== NOT EXECUTED
iop->offset = pos + write;
5f5c2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
5f5c6: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
5f5ca: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
5f5ce: d283 addl %d3,%d1 <== NOT EXECUTED
5f5d0: d182 addxl %d2,%d0 <== NOT EXECUTED
5f5d2: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
5f5d6: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5f5da: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5f5de: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f5e2: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f5e6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5f5e8: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f5ee: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5f5f0: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f5f6: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f5f8: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f5fa: 6600 0150 bnew 5f74c <rtems_rfs_rtems_file_write+0x28e><== NOT EXECUTED
return write;
}
5f5fe: 2005 movel %d5,%d0 <== NOT EXECUTED
5f600: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5f606: 4e5e unlk %fp <== NOT EXECUTED
5f608: 4e75 rts <== NOT EXECUTED
write += size;
rc = rtems_rfs_file_io_end (file, size, false);
if (rc)
{
write = rtems_rfs_rtems_error ("file-write: write close", rc);
5f60a: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5f610: 7aff moveq #-1,%d5 <== NOT EXECUTED
5f612: 2040 moveal %d0,%a0 <== NOT EXECUTED
5f614: 2087 movel %d7,%a0@ <== NOT EXECUTED
}
if (write >= 0)
iop->offset = pos + write;
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5f616: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5f61a: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f61e: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f622: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5f624: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f62a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5f62c: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f632: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f634: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f636: 67c6 beqs 5f5fe <rtems_rfs_rtems_file_write+0x140><== NOT EXECUTED
5f638: 6000 0112 braw 5f74c <rtems_rfs_rtems_file_write+0x28e><== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f63c: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f640: 42a7 clrl %sp@- <== NOT EXECUTED
5f642: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f648: 508f addql #8,%sp <== NOT EXECUTED
5f64a: 4a00 tstb %d0 <== NOT EXECUTED
5f64c: 6700 fea6 beqw 5f4f4 <rtems_rfs_rtems_file_write+0x36><== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
5f650: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f652: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f658: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f65a: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
5f660: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
pos = iop->offset;
file_size = rtems_rfs_file_size (file);
5f666: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5f66a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5f66e: 4868 007c pea %a0@(124) <== NOT EXECUTED
5f672: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_WRITE))
printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));
pos = iop->offset;
5f676: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
5f67a: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
5f67e: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
5f682: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
5f686: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED
5f68a: 4eb9 0005 9180 jsr 59180 <rtems_rfs_block_get_size> <== NOT EXECUTED
file_size = rtems_rfs_file_size (file);
if (pos > file_size)
5f690: 508f addql #8,%sp <== NOT EXECUTED
5f692: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5f696: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
5f69a: 2a02 movel %d2,%d5 <== NOT EXECUTED
5f69c: 2c03 movel %d3,%d6 <== NOT EXECUTED
5f69e: 9c81 subl %d1,%d6 <== NOT EXECUTED
5f6a0: 9b80 subxl %d0,%d5 <== NOT EXECUTED
5f6a2: 6300 fe8c blsw 5f530 <rtems_rfs_rtems_file_write+0x72><== NOT EXECUTED
/*
* If the iop position is past the physical end of the file we need to set
* the file size to the new length before writing. The
* rtems_rfs_file_io_end() will grow the file subsequently.
*/
rc = rtems_rfs_file_set_size (file, pos);
5f6a6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5f6a8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f6aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f6ac: 4eb9 0005 cc70 jsr 5cc70 <rtems_rfs_file_set_size> <== NOT EXECUTED
if (rc)
5f6b2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/*
* If the iop position is past the physical end of the file we need to set
* the file size to the new length before writing. The
* rtems_rfs_file_io_end() will grow the file subsequently.
*/
rc = rtems_rfs_file_set_size (file, pos);
5f6b6: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
5f6b8: 6700 00cc beqw 5f786 <rtems_rfs_rtems_file_write+0x2c8><== NOT EXECUTED
{
pos = file_size;
rc = rtems_rfs_file_seek (file, pos, &pos);
if (rc)
{
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5f6bc: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5f6c0: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f6c4: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f6c8: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5f6ca: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f6d0: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5f6d2: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f6d8: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f6da: 2600 movel %d0,%d3 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f6dc: 6600 00ca bnew 5f7a8 <rtems_rfs_rtems_file_write+0x2ea><== NOT EXECUTED
return rtems_rfs_rtems_error ("file-write: write append seek", rc);
5f6e0: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5f6e6: 7aff moveq #-1,%d5 <== NOT EXECUTED
5f6e8: 2040 moveal %d0,%a0 <== NOT EXECUTED
5f6ea: 2082 movel %d2,%a0@ <== NOT EXECUTED
iop->offset = pos + write;
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
return write;
}
5f6ec: 2005 movel %d5,%d0 <== NOT EXECUTED
5f6ee: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5f6f4: 4e5e unlk %fp <== NOT EXECUTED
5f6f6: 4e75 rts <== NOT EXECUTED
return rtems_rfs_rtems_error ("file-write: write extend", rc);
}
rtems_rfs_file_set_bpos (file, pos);
}
else if (pos < file_size && (iop->flags & LIBIO_FLAGS_APPEND) != 0)
5f6f8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
5f6fc: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED
5f700: 0282 0000 0200 andil #512,%d2 <== NOT EXECUTED
5f706: 6700 fe34 beqw 5f53c <rtems_rfs_rtems_file_write+0x7e><== NOT EXECUTED
{
pos = file_size;
5f70a: 204e moveal %fp,%a0 <== NOT EXECUTED
5f70c: 2101 movel %d1,%a0@- <== NOT EXECUTED
5f70e: 2100 movel %d0,%a0@- <== NOT EXECUTED
rc = rtems_rfs_file_seek (file, pos, &pos);
5f710: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5f712: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5f714: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f716: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f718: 4eb9 0005 cb76 jsr 5cb76 <rtems_rfs_file_seek> <== NOT EXECUTED
if (rc)
5f71e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_file_set_bpos (file, pos);
}
else if (pos < file_size && (iop->flags & LIBIO_FLAGS_APPEND) != 0)
{
pos = file_size;
rc = rtems_rfs_file_seek (file, pos, &pos);
5f722: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
5f724: 6700 fe16 beqw 5f53c <rtems_rfs_rtems_file_write+0x7e><== NOT EXECUTED
{
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
5f728: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5f72c: 2068 0090 moveal %a0@(144),%a0 <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
5f730: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
5f734: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5f736: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f73c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5f73e: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f744: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
5f746: 2600 movel %d0,%d3 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
5f748: 6796 beqs 5f6e0 <rtems_rfs_rtems_file_write+0x222><== NOT EXECUTED
5f74a: 605c bras 5f7a8 <rtems_rfs_rtems_file_write+0x2ea><== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f74c: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f750: 42a7 clrl %sp@- <== NOT EXECUTED
5f752: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f758: 508f addql #8,%sp <== NOT EXECUTED
5f75a: 4a00 tstb %d0 <== NOT EXECUTED
5f75c: 6700 fea0 beqw 5f5fe <rtems_rfs_rtems_file_write+0x140><== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5f760: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f762: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f768: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f76a: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5f770: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f776: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
iop->offset = pos + write;
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
return write;
}
5f77a: 2005 movel %d5,%d0 <== NOT EXECUTED
5f77c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5f782: 4e5e unlk %fp <== NOT EXECUTED
5f784: 4e75 rts <== NOT EXECUTED
{
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
return rtems_rfs_rtems_error ("file-write: write extend", rc);
}
rtems_rfs_file_set_bpos (file, pos);
5f786: 486a 000e pea %a2@(14) <== NOT EXECUTED
5f78a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
5f78e: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
5f792: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED
5f796: 2f28 0090 movel %a0@(144),%sp@- <== NOT EXECUTED
5f79a: 4eb9 0005 90a2 jsr 590a2 <rtems_rfs_block_get_bpos> <== NOT EXECUTED
5f7a0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5f7a4: 6000 fd96 braw 5f53c <rtems_rfs_rtems_file_write+0x7e><== NOT EXECUTED
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
if (sc != RTEMS_SUCCESSFUL)
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
5f7a8: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
5f7ac: 42a7 clrl %sp@- <== NOT EXECUTED
5f7ae: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5f7b4: 508f addql #8,%sp <== NOT EXECUTED
5f7b6: 4a00 tstb %d0 <== NOT EXECUTED
5f7b8: 6700 ff26 beqw 5f6e0 <rtems_rfs_rtems_file_write+0x222><== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
5f7bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
pos = file_size;
rc = rtems_rfs_file_seek (file, pos, &pos);
if (rc)
{
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
return rtems_rfs_rtems_error ("file-write: write append seek", rc);
5f7be: 7aff moveq #-1,%d5 <== NOT EXECUTED
5f7c0: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
5f7c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5f7c8: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
5f7ce: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5f7d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5f7d8: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5f7de: 2040 moveal %d0,%a0 <== NOT EXECUTED
5f7e0: 2082 movel %d2,%a0@ <== NOT EXECUTED
5f7e2: 6000 ff08 braw 5f6ec <rtems_rfs_rtems_file_write+0x22e><== NOT EXECUTED
break;
}
}
if (write >= 0)
iop->offset = pos + write;
5f7e6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));
return rtems_rfs_rtems_error ("file-write: write append seek", rc);
}
}
while (count)
5f7ea: 4285 clrl %d5 <== NOT EXECUTED
5f7ec: 4282 clrl %d2 <== NOT EXECUTED
5f7ee: 4283 clrl %d3 <== NOT EXECUTED
break;
}
}
if (write >= 0)
iop->offset = pos + write;
5f7f0: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
5f7f4: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
5f7f8: d283 addl %d3,%d1 <== NOT EXECUTED
5f7fa: d182 addxl %d2,%d0 <== NOT EXECUTED
5f7fc: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
5f800: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
5f804: 6000 fdd4 braw 5f5da <rtems_rfs_rtems_file_write+0x11c><== NOT EXECUTED
000524b0 <rtems_rfs_rtems_fstat>:
}
int
rtems_rfs_rtems_fstat (const rtems_filesystem_location_info_t* pathloc,
struct stat* buf)
{
524b0: 4e56 ffb4 linkw %fp,#-76 <== NOT EXECUTED
524b4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
524b8: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
}
int
rtems_rfs_rtems_fstat (const rtems_filesystem_location_info_t* pathloc,
struct stat* buf)
{
524bc: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
524c0: 2669 0008 moveal %a1@(8),%a3 <== NOT EXECUTED
int rc;
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_STAT))
printf ("rtems-rfs-rtems: stat: in: ino:%" PRId32 "\n", ino);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
524c4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
524c8: 240e movel %fp,%d2 <== NOT EXECUTED
524ca: 0682 ffff ffda addil #-38,%d2 <== NOT EXECUTED
524d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
524d2: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
}
int
rtems_rfs_rtems_fstat (const rtems_filesystem_location_info_t* pathloc,
struct stat* buf)
{
524d6: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int rc;
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_STAT))
printf ("rtems-rfs-rtems: stat: in: ino:%" PRId32 "\n", ino);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
524da: 2f0b movel %a3,%sp@- <== NOT EXECUTED
524dc: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc)
524e2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
int rc;
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_STAT))
printf ("rtems-rfs-rtems: stat: in: ino:%" PRId32 "\n", ino);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
524e6: 2600 movel %d0,%d3 <== NOT EXECUTED
if (rc)
524e8: 6600 0322 bnew 5280c <rtems_rfs_rtems_fstat+0x35c> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("stat: opening inode", rc);
}
mode = rtems_rfs_inode_get_mode (&inode);
524ec: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
* @return uint16_t The mode.
*/
static inline uint16_t
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->mode);
524f0: 4280 clrl %d0 <== NOT EXECUTED
524f2: 1028 0002 moveb %a0@(2),%d0 <== NOT EXECUTED
524f6: 4281 clrl %d1 <== NOT EXECUTED
524f8: 1228 0003 moveb %a0@(3),%d1 <== NOT EXECUTED
524fc: e188 lsll #8,%d0 <== NOT EXECUTED
524fe: 8081 orl %d1,%d0 <== NOT EXECUTED
if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK (mode))
52500: 2200 movel %d0,%d1 <== NOT EXECUTED
52502: 0281 0000 f000 andil #61440,%d1 <== NOT EXECUTED
52508: 0c81 0000 2000 cmpil #8192,%d1 <== NOT EXECUTED
5250e: 6700 0138 beqw 52648 <rtems_rfs_rtems_fstat+0x198> <== NOT EXECUTED
52512: 0c81 0000 6000 cmpil #24576,%d1 <== NOT EXECUTED
52518: 6700 012e beqw 52648 <rtems_rfs_rtems_fstat+0x198> <== NOT EXECUTED
buf->st_rdev =
rtems_filesystem_make_dev_t (rtems_rfs_inode_get_block (&inode, 0),
rtems_rfs_inode_get_block (&inode, 1));
}
buf->st_dev = rtems_rfs_fs_device (fs);
5251c: 282b 0010 movel %a3@(16),%d4 <== NOT EXECUTED
52520: 5bc3 smi %d3 <== NOT EXECUTED
52522: 49c3 extbl %d3 <== NOT EXECUTED
52524: 2483 movel %d3,%a2@ <== NOT EXECUTED
52526: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
buf->st_ino = rtems_rfs_inode_ino (&inode);
buf->st_mode = rtems_rfs_rtems_mode (mode);
5252a: 3f00 movew %d0,%sp@- <== NOT EXECUTED
* @return uint16_t The group id (gid).
*/
static inline uint16_t
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)
{
return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;
5252c: 7818 moveq #24,%d4 <== NOT EXECUTED
rtems_filesystem_make_dev_t (rtems_rfs_inode_get_block (&inode, 0),
rtems_rfs_inode_get_block (&inode, 1));
}
buf->st_dev = rtems_rfs_fs_device (fs);
buf->st_ino = rtems_rfs_inode_ino (&inode);
5252e: 256e ffe2 0008 movel %fp@(-30),%a2@(8) <== NOT EXECUTED
buf->st_mode = rtems_rfs_rtems_mode (mode);
52534: 4267 clrw %sp@- <== NOT EXECUTED
52536: 4eb9 0005 2eec jsr 52eec <rtems_rfs_rtems_mode> <== NOT EXECUTED
buf->st_nlink = rtems_rfs_inode_get_links (&inode);
5253c: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
*/
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
52540: 4281 clrl %d1 <== NOT EXECUTED
rtems_rfs_inode_get_block (&inode, 1));
}
buf->st_dev = rtems_rfs_fs_device (fs);
buf->st_ino = rtems_rfs_inode_ino (&inode);
buf->st_mode = rtems_rfs_rtems_mode (mode);
52542: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
52546: 4280 clrl %d0 <== NOT EXECUTED
52548: 1010 moveb %a0@,%d0 <== NOT EXECUTED
5254a: 1228 0001 moveb %a0@(1),%d1 <== NOT EXECUTED
5254e: e188 lsll #8,%d0 <== NOT EXECUTED
52550: 8081 orl %d1,%d0 <== NOT EXECUTED
if (links == 0xffff)
52552: 3200 movew %d0,%d1 <== NOT EXECUTED
links = 0;
52554: 0c81 0000 ffff cmpil #65535,%d1 <== NOT EXECUTED
5255a: 56c1 sne %d1 <== NOT EXECUTED
5255c: 4881 extw %d1 <== NOT EXECUTED
5255e: c081 andl %d1,%d0 <== NOT EXECUTED
* @return uint16_t The user id (uid).
*/
static inline uint16_t
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;
52560: 4281 clrl %d1 <== NOT EXECUTED
buf->st_nlink = rtems_rfs_inode_get_links (&inode);
52562: 3540 0010 movew %d0,%a2@(16) <== NOT EXECUTED
52566: 4280 clrl %d0 <== NOT EXECUTED
52568: 1028 0006 moveb %a0@(6),%d0 <== NOT EXECUTED
5256c: 1228 0007 moveb %a0@(7),%d1 <== NOT EXECUTED
52570: e188 lsll #8,%d0 <== NOT EXECUTED
52572: 8081 orl %d1,%d0 <== NOT EXECUTED
buf->st_uid = rtems_rfs_inode_get_uid (&inode);
52574: 3540 0012 movew %d0,%a2@(18) <== NOT EXECUTED
* @return uint16_t The group id (gid).
*/
static inline uint16_t
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)
{
return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;
52578: 4280 clrl %d0 <== NOT EXECUTED
5257a: 1028 0004 moveb %a0@(4),%d0 <== NOT EXECUTED
5257e: 1228 0005 moveb %a0@(5),%d1 <== NOT EXECUTED
52582: e9a8 lsll %d4,%d0 <== NOT EXECUTED
52584: 4841 swap %d1 <== NOT EXECUTED
52586: 4241 clrw %d1 <== NOT EXECUTED
/*
* Need to check is the ino is an open file. If so we take the values from
* the open file rather than the inode.
*/
shared = rtems_rfs_file_get_shared (fs, rtems_rfs_inode_ino (&inode));
52588: 2eae ffe2 movel %fp@(-30),%sp@ <== NOT EXECUTED
5258c: 8081 orl %d1,%d0 <== NOT EXECUTED
5258e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
52590: 4240 clrw %d0 <== NOT EXECUTED
52592: 4840 swap %d0 <== NOT EXECUTED
52594: 3540 0014 movew %d0,%a2@(20) <== NOT EXECUTED
52598: 4eb9 0005 cfd8 jsr 5cfd8 <rtems_rfs_file_get_shared> <== NOT EXECUTED
if (shared)
5259e: 508f addql #8,%sp <== NOT EXECUTED
/*
* Need to check is the ino is an open file. If so we take the values from
* the open file rather than the inode.
*/
shared = rtems_rfs_file_get_shared (fs, rtems_rfs_inode_ino (&inode));
525a0: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (shared)
525a2: 4a80 tstl %d0 <== NOT EXECUTED
525a4: 6700 0188 beqw 5272e <rtems_rfs_rtems_fstat+0x27e> <== NOT EXECUTED
buf->st_atime = rtems_rfs_file_shared_get_atime (shared);
buf->st_mtime = rtems_rfs_file_shared_get_mtime (shared);
buf->st_ctime = rtems_rfs_file_shared_get_ctime (shared);
buf->st_blocks = rtems_rfs_file_shared_get_block_count (shared);
if (S_ISLNK (buf->st_mode))
525a8: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
*/
shared = rtems_rfs_file_get_shared (fs, rtems_rfs_inode_ino (&inode));
if (shared)
{
buf->st_atime = rtems_rfs_file_shared_get_atime (shared);
525ac: 2568 0084 0026 movel %a0@(132),%a2@(38) <== NOT EXECUTED
buf->st_mtime = rtems_rfs_file_shared_get_mtime (shared);
525b2: 2568 0088 002e movel %a0@(136),%a2@(46) <== NOT EXECUTED
buf->st_ctime = rtems_rfs_file_shared_get_ctime (shared);
525b8: 2568 008c 0036 movel %a0@(140),%a2@(54) <== NOT EXECUTED
buf->st_blocks = rtems_rfs_file_shared_get_block_count (shared);
525be: 2568 007c 0042 movel %a0@(124),%a2@(66) <== NOT EXECUTED
if (S_ISLNK (buf->st_mode))
525c4: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
525ca: 0c80 0000 a000 cmpil #40960,%d0 <== NOT EXECUTED
525d0: 6744 beqs 52616 <rtems_rfs_rtems_fstat+0x166> <== NOT EXECUTED
*/
static inline rtems_rfs_pos
rtems_rfs_file_shared_get_size (rtems_rfs_file_system* fs,
rtems_rfs_file_shared* shared)
{
return rtems_rfs_block_get_size (fs, &shared->size);
525d2: 4868 007c pea %a0@(124) <== NOT EXECUTED
525d6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
525d8: 4eb9 0005 9180 jsr 59180 <rtems_rfs_block_get_size> <== NOT EXECUTED
buf->st_size = rtems_rfs_file_shared_get_block_offset (shared);
else
buf->st_size = rtems_rfs_file_shared_get_size (fs, shared);
525de: 508f addql #8,%sp <== NOT EXECUTED
525e0: 2540 001e movel %d0,%a2@(30) <== NOT EXECUTED
525e4: 2541 0022 movel %d1,%a2@(34) <== NOT EXECUTED
buf->st_size = rtems_rfs_inode_get_block_offset (&inode);
else
buf->st_size = rtems_rfs_inode_get_size (fs, &inode);
}
buf->st_blksize = rtems_rfs_fs_block_size (fs);
525e8: 256b 0008 003e movel %a3@(8),%a2@(62) <== NOT EXECUTED
rc = rtems_rfs_inode_close (fs, &inode);
525ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
525f0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
525f2: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc > 0)
525f8: 508f addql #8,%sp <== NOT EXECUTED
buf->st_size = rtems_rfs_inode_get_size (fs, &inode);
}
buf->st_blksize = rtems_rfs_fs_block_size (fs);
rc = rtems_rfs_inode_close (fs, &inode);
525fa: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
525fc: 6f3c bles 5263a <rtems_rfs_rtems_fstat+0x18a> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("stat: closing inode", rc);
525fe: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
52604: 72ff moveq #-1,%d1 <== NOT EXECUTED
52606: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
return 0;
}
52608: 2001 movel %d1,%d0 <== NOT EXECUTED
buf->st_blksize = rtems_rfs_fs_block_size (fs);
rc = rtems_rfs_inode_close (fs, &inode);
if (rc > 0)
{
return rtems_rfs_rtems_error ("stat: closing inode", rc);
5260a: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return 0;
}
5260c: 4cee 1cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a4 <== NOT EXECUTED
52612: 4e5e unlk %fp <== NOT EXECUTED
52614: 4e75 rts <== NOT EXECUTED
buf->st_mtime = rtems_rfs_file_shared_get_mtime (shared);
buf->st_ctime = rtems_rfs_file_shared_get_ctime (shared);
buf->st_blocks = rtems_rfs_file_shared_get_block_count (shared);
if (S_ISLNK (buf->st_mode))
buf->st_size = rtems_rfs_file_shared_get_block_offset (shared);
52616: 4280 clrl %d0 <== NOT EXECUTED
52618: 3028 0082 movew %a0@(130),%d0 <== NOT EXECUTED
buf->st_size = rtems_rfs_inode_get_block_offset (&inode);
else
buf->st_size = rtems_rfs_inode_get_size (fs, &inode);
}
buf->st_blksize = rtems_rfs_fs_block_size (fs);
5261c: 256b 0008 003e movel %a3@(8),%a2@(62) <== NOT EXECUTED
buf->st_mtime = rtems_rfs_file_shared_get_mtime (shared);
buf->st_ctime = rtems_rfs_file_shared_get_ctime (shared);
buf->st_blocks = rtems_rfs_file_shared_get_block_count (shared);
if (S_ISLNK (buf->st_mode))
buf->st_size = rtems_rfs_file_shared_get_block_offset (shared);
52622: 42aa 001e clrl %a2@(30) <== NOT EXECUTED
52626: 2540 0022 movel %d0,%a2@(34) <== NOT EXECUTED
buf->st_size = rtems_rfs_inode_get_size (fs, &inode);
}
buf->st_blksize = rtems_rfs_fs_block_size (fs);
rc = rtems_rfs_inode_close (fs, &inode);
5262a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5262c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5262e: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc > 0)
52634: 508f addql #8,%sp <== NOT EXECUTED
buf->st_size = rtems_rfs_inode_get_size (fs, &inode);
}
buf->st_blksize = rtems_rfs_fs_block_size (fs);
rc = rtems_rfs_inode_close (fs, &inode);
52636: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
52638: 6ec4 bgts 525fe <rtems_rfs_rtems_fstat+0x14e> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("stat: closing inode", rc);
}
return 0;
5263a: 4281 clrl %d1 <== NOT EXECUTED
}
5263c: 2001 movel %d1,%d0 <== NOT EXECUTED
5263e: 4cee 1cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a4 <== NOT EXECUTED
52644: 4e5e unlk %fp <== NOT EXECUTED
52646: 4e75 rts <== NOT EXECUTED
* @return uint32_t The block number.
*/
static inline uint32_t
rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block)
{
return rtems_rfs_read_u32 (&handle->node->data.blocks[block]);
52648: 4283 clrl %d3 <== NOT EXECUTED
5264a: 4281 clrl %d1 <== NOT EXECUTED
5264c: 1628 0020 moveb %a0@(32),%d3 <== NOT EXECUTED
52650: 1228 001c moveb %a0@(28),%d1 <== NOT EXECUTED
52654: 7818 moveq #24,%d4 <== NOT EXECUTED
52656: 4287 clrl %d7 <== NOT EXECUTED
52658: 4286 clrl %d6 <== NOT EXECUTED
5265a: 1e28 0021 moveb %a0@(33),%d7 <== NOT EXECUTED
5265e: 1c28 001d moveb %a0@(29),%d6 <== NOT EXECUTED
52662: 4285 clrl %d5 <== NOT EXECUTED
52664: 1a28 0022 moveb %a0@(34),%d5 <== NOT EXECUTED
52668: e9ab lsll %d4,%d3 <== NOT EXECUTED
5266a: e9a9 lsll %d4,%d1 <== NOT EXECUTED
5266c: 4284 clrl %d4 <== NOT EXECUTED
5266e: 1828 0023 moveb %a0@(35),%d4 <== NOT EXECUTED
52672: 2844 moveal %d4,%a4 <== NOT EXECUTED
52674: 1828 001f moveb %a0@(31),%d4 <== NOT EXECUTED
52678: 2244 moveal %d4,%a1 <== NOT EXECUTED
5267a: 1828 001e moveb %a0@(30),%d4 <== NOT EXECUTED
5267e: 4846 swap %d6 <== NOT EXECUTED
52680: 4246 clrw %d6 <== NOT EXECUTED
52682: 4847 swap %d7 <== NOT EXECUTED
52684: 4247 clrw %d7 <== NOT EXECUTED
52686: e18d lsll #8,%d5 <== NOT EXECUTED
52688: 8286 orl %d6,%d1 <== NOT EXECUTED
5268a: 2c0c movel %a4,%d6 <== NOT EXECUTED
5268c: 8687 orl %d7,%d3 <== NOT EXECUTED
5268e: e18c lsll #8,%d4 <== NOT EXECUTED
52690: 8686 orl %d6,%d3 <== NOT EXECUTED
52692: 2c09 movel %a1,%d6 <== NOT EXECUTED
mode = rtems_rfs_inode_get_mode (&inode);
if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK (mode))
{
buf->st_rdev =
52694: 8685 orl %d5,%d3 <== NOT EXECUTED
52696: 8286 orl %d6,%d1 <== NOT EXECUTED
52698: 2543 001a movel %d3,%a2@(26) <== NOT EXECUTED
5269c: 8284 orl %d4,%d1 <== NOT EXECUTED
rtems_filesystem_make_dev_t (rtems_rfs_inode_get_block (&inode, 0),
rtems_rfs_inode_get_block (&inode, 1));
}
buf->st_dev = rtems_rfs_fs_device (fs);
5269e: 282b 0010 movel %a3@(16),%d4 <== NOT EXECUTED
526a2: 5bc3 smi %d3 <== NOT EXECUTED
526a4: 49c3 extbl %d3 <== NOT EXECUTED
mode = rtems_rfs_inode_get_mode (&inode);
if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK (mode))
{
buf->st_rdev =
526a6: 2541 0016 movel %d1,%a2@(22) <== NOT EXECUTED
rtems_filesystem_make_dev_t (rtems_rfs_inode_get_block (&inode, 0),
rtems_rfs_inode_get_block (&inode, 1));
}
buf->st_dev = rtems_rfs_fs_device (fs);
526aa: 2483 movel %d3,%a2@ <== NOT EXECUTED
526ac: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
buf->st_ino = rtems_rfs_inode_ino (&inode);
buf->st_mode = rtems_rfs_rtems_mode (mode);
526b0: 3f00 movew %d0,%sp@- <== NOT EXECUTED
* @return uint16_t The group id (gid).
*/
static inline uint16_t
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)
{
return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;
526b2: 7818 moveq #24,%d4 <== NOT EXECUTED
rtems_filesystem_make_dev_t (rtems_rfs_inode_get_block (&inode, 0),
rtems_rfs_inode_get_block (&inode, 1));
}
buf->st_dev = rtems_rfs_fs_device (fs);
buf->st_ino = rtems_rfs_inode_ino (&inode);
526b4: 256e ffe2 0008 movel %fp@(-30),%a2@(8) <== NOT EXECUTED
buf->st_mode = rtems_rfs_rtems_mode (mode);
526ba: 4267 clrw %sp@- <== NOT EXECUTED
526bc: 4eb9 0005 2eec jsr 52eec <rtems_rfs_rtems_mode> <== NOT EXECUTED
buf->st_nlink = rtems_rfs_inode_get_links (&inode);
526c2: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
*/
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
526c6: 4281 clrl %d1 <== NOT EXECUTED
rtems_rfs_inode_get_block (&inode, 1));
}
buf->st_dev = rtems_rfs_fs_device (fs);
buf->st_ino = rtems_rfs_inode_ino (&inode);
buf->st_mode = rtems_rfs_rtems_mode (mode);
526c8: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
526cc: 4280 clrl %d0 <== NOT EXECUTED
526ce: 1010 moveb %a0@,%d0 <== NOT EXECUTED
526d0: 1228 0001 moveb %a0@(1),%d1 <== NOT EXECUTED
526d4: e188 lsll #8,%d0 <== NOT EXECUTED
526d6: 8081 orl %d1,%d0 <== NOT EXECUTED
if (links == 0xffff)
526d8: 3200 movew %d0,%d1 <== NOT EXECUTED
links = 0;
526da: 0c81 0000 ffff cmpil #65535,%d1 <== NOT EXECUTED
526e0: 56c1 sne %d1 <== NOT EXECUTED
526e2: 4881 extw %d1 <== NOT EXECUTED
526e4: c081 andl %d1,%d0 <== NOT EXECUTED
* @return uint16_t The user id (uid).
*/
static inline uint16_t
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;
526e6: 4281 clrl %d1 <== NOT EXECUTED
buf->st_nlink = rtems_rfs_inode_get_links (&inode);
526e8: 3540 0010 movew %d0,%a2@(16) <== NOT EXECUTED
526ec: 4280 clrl %d0 <== NOT EXECUTED
526ee: 1028 0006 moveb %a0@(6),%d0 <== NOT EXECUTED
526f2: 1228 0007 moveb %a0@(7),%d1 <== NOT EXECUTED
526f6: e188 lsll #8,%d0 <== NOT EXECUTED
526f8: 8081 orl %d1,%d0 <== NOT EXECUTED
buf->st_uid = rtems_rfs_inode_get_uid (&inode);
526fa: 3540 0012 movew %d0,%a2@(18) <== NOT EXECUTED
* @return uint16_t The group id (gid).
*/
static inline uint16_t
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)
{
return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;
526fe: 4280 clrl %d0 <== NOT EXECUTED
52700: 1028 0004 moveb %a0@(4),%d0 <== NOT EXECUTED
52704: 1228 0005 moveb %a0@(5),%d1 <== NOT EXECUTED
52708: e9a8 lsll %d4,%d0 <== NOT EXECUTED
5270a: 4841 swap %d1 <== NOT EXECUTED
5270c: 4241 clrw %d1 <== NOT EXECUTED
/*
* Need to check is the ino is an open file. If so we take the values from
* the open file rather than the inode.
*/
shared = rtems_rfs_file_get_shared (fs, rtems_rfs_inode_ino (&inode));
5270e: 2eae ffe2 movel %fp@(-30),%sp@ <== NOT EXECUTED
52712: 8081 orl %d1,%d0 <== NOT EXECUTED
52714: 2f0b movel %a3,%sp@- <== NOT EXECUTED
52716: 4240 clrw %d0 <== NOT EXECUTED
52718: 4840 swap %d0 <== NOT EXECUTED
5271a: 3540 0014 movew %d0,%a2@(20) <== NOT EXECUTED
5271e: 4eb9 0005 cfd8 jsr 5cfd8 <rtems_rfs_file_get_shared> <== NOT EXECUTED
if (shared)
52724: 508f addql #8,%sp <== NOT EXECUTED
/*
* Need to check is the ino is an open file. If so we take the values from
* the open file rather than the inode.
*/
shared = rtems_rfs_file_get_shared (fs, rtems_rfs_inode_ino (&inode));
52726: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (shared)
52728: 4a80 tstl %d0 <== NOT EXECUTED
5272a: 6600 fe7c bnew 525a8 <rtems_rfs_rtems_fstat+0xf8> <== NOT EXECUTED
else
buf->st_size = rtems_rfs_file_shared_get_size (fs, shared);
}
else
{
buf->st_atime = rtems_rfs_inode_get_atime (&inode);
5272e: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
* @return rtems_rfs_time The atime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->atime);
52732: 4280 clrl %d0 <== NOT EXECUTED
52734: 4283 clrl %d3 <== NOT EXECUTED
52736: 1028 0010 moveb %a0@(16),%d0 <== NOT EXECUTED
5273a: 1628 0011 moveb %a0@(17),%d3 <== NOT EXECUTED
5273e: 7c18 moveq #24,%d6 <== NOT EXECUTED
52740: 4284 clrl %d4 <== NOT EXECUTED
52742: 4281 clrl %d1 <== NOT EXECUTED
52744: 1828 0013 moveb %a0@(19),%d4 <== NOT EXECUTED
52748: 1228 0012 moveb %a0@(18),%d1 <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
5274c: 4285 clrl %d5 <== NOT EXECUTED
* @return rtems_rfs_time The atime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->atime);
5274e: 4843 swap %d3 <== NOT EXECUTED
52750: 4243 clrw %d3 <== NOT EXECUTED
52752: eda8 lsll %d6,%d0 <== NOT EXECUTED
52754: e189 lsll #8,%d1 <== NOT EXECUTED
52756: 8083 orl %d3,%d0 <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
52758: 4283 clrl %d3 <== NOT EXECUTED
* @return rtems_rfs_time The atime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->atime);
5275a: 8084 orl %d4,%d0 <== NOT EXECUTED
buf->st_mtime = rtems_rfs_inode_get_mtime (&inode);
buf->st_ctime = rtems_rfs_inode_get_ctime (&inode);
buf->st_blocks = rtems_rfs_inode_get_block_count (&inode);
if (S_ISLNK (buf->st_mode))
5275c: 282a 000c movel %a2@(12),%d4 <== NOT EXECUTED
52760: 8081 orl %d1,%d0 <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
52762: 4281 clrl %d1 <== NOT EXECUTED
* @return rtems_rfs_time The atime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->atime);
52764: 2540 0026 movel %d0,%a2@(38) <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
52768: 4280 clrl %d0 <== NOT EXECUTED
5276a: 1028 0014 moveb %a0@(20),%d0 <== NOT EXECUTED
5276e: 1628 0015 moveb %a0@(21),%d3 <== NOT EXECUTED
52772: 1a28 0017 moveb %a0@(23),%d5 <== NOT EXECUTED
52776: 1228 0016 moveb %a0@(22),%d1 <== NOT EXECUTED
5277a: 4843 swap %d3 <== NOT EXECUTED
5277c: 4243 clrw %d3 <== NOT EXECUTED
5277e: eda8 lsll %d6,%d0 <== NOT EXECUTED
52780: e189 lsll #8,%d1 <== NOT EXECUTED
52782: 0284 0000 f000 andil #61440,%d4 <== NOT EXECUTED
52788: 8083 orl %d3,%d0 <== NOT EXECUTED
* @return rtems_rfs_time The ctime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->ctime);
5278a: 4283 clrl %d3 <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
5278c: 8085 orl %d5,%d0 <== NOT EXECUTED
5278e: 8081 orl %d1,%d0 <== NOT EXECUTED
* @return rtems_rfs_time The ctime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->ctime);
52790: 4281 clrl %d1 <== NOT EXECUTED
* @return rtems_rfs_time The mtime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->mtime);
52792: 2540 002e movel %d0,%a2@(46) <== NOT EXECUTED
* @return rtems_rfs_time The ctime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->ctime);
52796: 4280 clrl %d0 <== NOT EXECUTED
52798: 1028 0018 moveb %a0@(24),%d0 <== NOT EXECUTED
5279c: 1628 0019 moveb %a0@(25),%d3 <== NOT EXECUTED
527a0: 1a28 001b moveb %a0@(27),%d5 <== NOT EXECUTED
527a4: 1228 001a moveb %a0@(26),%d1 <== NOT EXECUTED
527a8: 4843 swap %d3 <== NOT EXECUTED
527aa: 4243 clrw %d3 <== NOT EXECUTED
527ac: eda8 lsll %d6,%d0 <== NOT EXECUTED
527ae: e189 lsll #8,%d1 <== NOT EXECUTED
527b0: 8083 orl %d3,%d0 <== NOT EXECUTED
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
527b2: 4283 clrl %d3 <== NOT EXECUTED
* @return rtems_rfs_time The ctime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->ctime);
527b4: 8085 orl %d5,%d0 <== NOT EXECUTED
527b6: 8081 orl %d1,%d0 <== NOT EXECUTED
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
527b8: 4281 clrl %d1 <== NOT EXECUTED
* @return rtems_rfs_time The ctime.
*/
static inline rtems_rfs_time
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->ctime);
527ba: 2540 0036 movel %d0,%a2@(54) <== NOT EXECUTED
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
527be: 4280 clrl %d0 <== NOT EXECUTED
527c0: 1028 000c moveb %a0@(12),%d0 <== NOT EXECUTED
527c4: 1628 000d moveb %a0@(13),%d3 <== NOT EXECUTED
527c8: 1a28 000f moveb %a0@(15),%d5 <== NOT EXECUTED
527cc: 1228 000e moveb %a0@(14),%d1 <== NOT EXECUTED
527d0: eda8 lsll %d6,%d0 <== NOT EXECUTED
527d2: 4843 swap %d3 <== NOT EXECUTED
527d4: 4243 clrw %d3 <== NOT EXECUTED
527d6: e189 lsll #8,%d1 <== NOT EXECUTED
527d8: 8083 orl %d3,%d0 <== NOT EXECUTED
527da: 8085 orl %d5,%d0 <== NOT EXECUTED
527dc: 8081 orl %d1,%d0 <== NOT EXECUTED
527de: 2540 0042 movel %d0,%a2@(66) <== NOT EXECUTED
527e2: 0c84 0000 a000 cmpil #40960,%d4 <== NOT EXECUTED
527e8: 663a bnes 52824 <rtems_rfs_rtems_fstat+0x374> <== NOT EXECUTED
* @return uint32_t The block offset.
*/
static inline uint16_t
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->block_offset);
527ea: 4280 clrl %d0 <== NOT EXECUTED
527ec: 1028 000a moveb %a0@(10),%d0 <== NOT EXECUTED
527f0: 4281 clrl %d1 <== NOT EXECUTED
527f2: 1228 000b moveb %a0@(11),%d1 <== NOT EXECUTED
527f6: e188 lsll #8,%d0 <== NOT EXECUTED
buf->st_size = rtems_rfs_inode_get_block_offset (&inode);
527f8: 42aa 001e clrl %a2@(30) <== NOT EXECUTED
527fc: 8081 orl %d1,%d0 <== NOT EXECUTED
527fe: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
52804: 2540 0022 movel %d0,%a2@(34) <== NOT EXECUTED
52808: 6000 fdde braw 525e8 <rtems_rfs_rtems_fstat+0x138> <== NOT EXECUTED
printf ("rtems-rfs-rtems: stat: in: ino:%" PRId32 "\n", ino);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
if (rc)
{
return rtems_rfs_rtems_error ("stat: opening inode", rc);
5280c: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
52812: 72ff moveq #-1,%d1 <== NOT EXECUTED
52814: 2040 moveal %d0,%a0 <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("stat: closing inode", rc);
}
return 0;
}
52816: 2001 movel %d1,%d0 <== NOT EXECUTED
printf ("rtems-rfs-rtems: stat: in: ino:%" PRId32 "\n", ino);
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
if (rc)
{
return rtems_rfs_rtems_error ("stat: opening inode", rc);
52818: 2083 movel %d3,%a0@ <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("stat: closing inode", rc);
}
return 0;
}
5281a: 4cee 1cfc ffb4 moveml %fp@(-76),%d2-%d7/%a2-%a4 <== NOT EXECUTED
52820: 4e5e unlk %fp <== NOT EXECUTED
52822: 4e75 rts <== NOT EXECUTED
buf->st_blocks = rtems_rfs_inode_get_block_count (&inode);
if (S_ISLNK (buf->st_mode))
buf->st_size = rtems_rfs_inode_get_block_offset (&inode);
else
buf->st_size = rtems_rfs_inode_get_size (fs, &inode);
52824: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52826: 2f0b movel %a3,%sp@- <== NOT EXECUTED
52828: 4eb9 0005 1c2c jsr 51c2c <rtems_rfs_inode_get_size> <== NOT EXECUTED
5282e: 508f addql #8,%sp <== NOT EXECUTED
52830: 2540 001e movel %d0,%a2@(30) <== NOT EXECUTED
52834: 2541 0022 movel %d1,%a2@(34) <== NOT EXECUTED
52838: 6000 fdae braw 525e8 <rtems_rfs_rtems_fstat+0x138> <== NOT EXECUTED
00052ee0 <rtems_rfs_rtems_imode>:
uint16_t
rtems_rfs_rtems_imode (mode_t mode)
{
52ee0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* Mapping matches RTEMS so no need to change.
*/
return mode;
}
52ee4: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
52ee8: 4e5e unlk %fp <== NOT EXECUTED
00052ade <rtems_rfs_rtems_initialise>:
*/
int
rtems_rfs_rtems_initialise (rtems_filesystem_mount_table_entry_t* mt_entry,
const void* data)
{
52ade: 4e56 ffdc linkw %fp,#-36
52ae2: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
52ae6: 246e 000c moveal %fp@(12),%a2
int rc;
/*
* Parse the options the user specifiies.
*/
while (options)
52aea: 4a8a tstl %a2
52aec: 6700 0206 beqw 52cf4 <rtems_rfs_rtems_initialise+0x216>
{
printf ("options=%s\n", options);
52af0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52af2: 4879 0007 1b49 pea 71b49 <_CPU_m68k_BFFFO_table+0xc3a> <== NOT EXECUTED
52af8: 49f9 0006 16ec lea 616ec <printf>,%a4 <== NOT EXECUTED
52afe: 47f9 0006 26d0 lea 626d0 <strncmp>,%a3 <== NOT EXECUTED
int rc;
/*
* Parse the options the user specifiies.
*/
while (options)
52b04: 7805 moveq #5,%d4 <== NOT EXECUTED
52b06: 4282 clrl %d2 <== NOT EXECUTED
{
printf ("options=%s\n", options);
if (strncmp (options, "hold-bitmaps",
52b08: 260b movel %a3,%d3 <== NOT EXECUTED
sizeof ("no-local-cache") - 1) == 0)
flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;
else if (strncmp (options, "max-held-bufs",
sizeof ("max-held-bufs") - 1) == 0)
{
max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
52b0a: 2a3c 0006 2972 movel #403826,%d5 <== NOT EXECUTED
}
else
return rtems_rfs_rtems_error ("initialise: invalid option", EINVAL);
options = strchr (options, ',');
52b10: 4bf9 0006 1f14 lea 61f14 <strchr>,%a5 <== NOT EXECUTED
/*
* Parse the options the user specifiies.
*/
while (options)
{
printf ("options=%s\n", options);
52b16: 4e94 jsr %a4@ <== NOT EXECUTED
if (strncmp (options, "hold-bitmaps",
52b18: 4878 000c pea c <OPER1> <== NOT EXECUTED
52b1c: 4879 0007 1b55 pea 71b55 <_CPU_m68k_BFFFO_table+0xc46> <== NOT EXECUTED
52b22: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52b24: 4e93 jsr %a3@ <== NOT EXECUTED
52b26: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
52b2a: 4a80 tstl %d0 <== NOT EXECUTED
52b2c: 6600 008e bnew 52bbc <rtems_rfs_rtems_initialise+0xde><== NOT EXECUTED
sizeof ("hold-bitmaps") - 1) == 0)
flags |= RTEMS_RFS_FS_BITMAPS_HOLD;
52b30: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
52b34: 8480 orl %d0,%d2 <== NOT EXECUTED
max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
}
else
return rtems_rfs_rtems_error ("initialise: invalid option", EINVAL);
options = strchr (options, ',');
52b36: 4878 002c pea 2c <OPER2+0x18> <== NOT EXECUTED
52b3a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52b3c: 4e95 jsr %a5@ <== NOT EXECUTED
52b3e: 508f addql #8,%sp <== NOT EXECUTED
if (options)
{
++options;
52b40: 2440 moveal %d0,%a2 <== NOT EXECUTED
52b42: 528a addql #1,%a2 <== NOT EXECUTED
}
else
return rtems_rfs_rtems_error ("initialise: invalid option", EINVAL);
options = strchr (options, ',');
if (options)
52b44: 4a80 tstl %d0 <== NOT EXECUTED
52b46: 6708 beqs 52b50 <rtems_rfs_rtems_initialise+0x72><== NOT EXECUTED
{
++options;
if (*options == '\0')
52b48: 2040 moveal %d0,%a0 <== NOT EXECUTED
52b4a: 4a28 0001 tstb %a0@(1) <== NOT EXECUTED
52b4e: 6646 bnes 52b96 <rtems_rfs_rtems_initialise+0xb8><== NOT EXECUTED
options = NULL;
}
}
rtems = malloc (sizeof (rtems_rfs_rtems_private));
52b50: 4878 0004 pea 4 <CONTEXT_ARG>
52b54: 4eb9 0004 794c jsr 4794c <malloc>
if (!rtems)
52b5a: 588f addql #4,%sp
if (*options == '\0')
options = NULL;
}
}
rtems = malloc (sizeof (rtems_rfs_rtems_private));
52b5c: 2440 moveal %d0,%a2
if (!rtems)
52b5e: 4a80 tstl %d0
52b60: 6700 021a beqw 52d7c <rtems_rfs_rtems_initialise+0x29e>
return rtems_rfs_rtems_error ("initialise: local data", ENOMEM);
memset (rtems, 0, sizeof (rtems_rfs_rtems_private));
52b64: 4292 clrl %a2@
rc = rtems_rfs_mutex_create (&rtems->access);
52b66: 2f00 movel %d0,%sp@-
52b68: 4eb9 0005 e5ac jsr 5e5ac <rtems_rfs_mutex_create>
if (rc > 0)
52b6e: 588f addql #4,%sp
if (!rtems)
return rtems_rfs_rtems_error ("initialise: local data", ENOMEM);
memset (rtems, 0, sizeof (rtems_rfs_rtems_private));
rc = rtems_rfs_mutex_create (&rtems->access);
52b70: 2600 movel %d0,%d3
if (rc > 0)
52b72: 6f00 009a blew 52c0e <rtems_rfs_rtems_initialise+0x130>
{
free (rtems);
52b76: 2f0a movel %a2,%sp@-
52b78: 4eb9 0004 7344 jsr 47344 <free>
return rtems_rfs_rtems_error ("initialise: cannot create mutex", rc);
52b7e: 4eb9 0006 0414 jsr 60414 <__errno>
52b84: 588f addql #4,%sp
52b86: 2040 moveal %d0,%a0
52b88: 70ff moveq #-1,%d0
52b8a: 2083 movel %d3,%a0@
mt_entry->mt_fs_root->location.handlers = &rtems_rfs_rtems_dir_handlers;
rtems_rfs_rtems_unlock (fs);
return 0;
}
52b8c: 4cee 3c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a5
52b92: 4e5e unlk %fp
52b94: 4e75 rts
int rc;
/*
* Parse the options the user specifiies.
*/
while (options)
52b96: 4a8a tstl %a2 <== NOT EXECUTED
52b98: 67b6 beqs 52b50 <rtems_rfs_rtems_initialise+0x72><== NOT EXECUTED
{
printf ("options=%s\n", options);
52b9a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52b9c: 4879 0007 1b49 pea 71b49 <_CPU_m68k_BFFFO_table+0xc3a> <== NOT EXECUTED
52ba2: 4e94 jsr %a4@ <== NOT EXECUTED
if (strncmp (options, "hold-bitmaps",
52ba4: 4878 000c pea c <OPER1> <== NOT EXECUTED
52ba8: 4879 0007 1b55 pea 71b55 <_CPU_m68k_BFFFO_table+0xc46> <== NOT EXECUTED
52bae: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52bb0: 4e93 jsr %a3@ <== NOT EXECUTED
52bb2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
52bb6: 4a80 tstl %d0 <== NOT EXECUTED
52bb8: 6700 ff76 beqw 52b30 <rtems_rfs_rtems_initialise+0x52><== NOT EXECUTED
sizeof ("hold-bitmaps") - 1) == 0)
flags |= RTEMS_RFS_FS_BITMAPS_HOLD;
else if (strncmp (options, "no-local-cache",
52bbc: 4878 000e pea e <OPER1+0x2> <== NOT EXECUTED
52bc0: 2043 moveal %d3,%a0 <== NOT EXECUTED
52bc2: 4879 0007 1b62 pea 71b62 <_CPU_m68k_BFFFO_table+0xc53> <== NOT EXECUTED
52bc8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52bca: 4e90 jsr %a0@ <== NOT EXECUTED
52bcc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
52bd0: 4a80 tstl %d0 <== NOT EXECUTED
52bd2: 660a bnes 52bde <rtems_rfs_rtems_initialise+0x100><== NOT EXECUTED
sizeof ("no-local-cache") - 1) == 0)
flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;
52bd4: 103c 0002 moveb #2,%d0 <== NOT EXECUTED
52bd8: 8480 orl %d0,%d2 <== NOT EXECUTED
52bda: 6000 ff5a braw 52b36 <rtems_rfs_rtems_initialise+0x58><== NOT EXECUTED
else if (strncmp (options, "max-held-bufs",
52bde: 4878 000d pea d <OPER1+0x1> <== NOT EXECUTED
52be2: 2043 moveal %d3,%a0 <== NOT EXECUTED
52be4: 4879 0007 1b71 pea 71b71 <_CPU_m68k_BFFFO_table+0xc62> <== NOT EXECUTED
52bea: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52bec: 4e90 jsr %a0@ <== NOT EXECUTED
52bee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
52bf2: 4a80 tstl %d0 <== NOT EXECUTED
52bf4: 6600 00aa bnew 52ca0 <rtems_rfs_rtems_initialise+0x1c2><== NOT EXECUTED
sizeof ("max-held-bufs") - 1) == 0)
{
max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
52bf8: 42a7 clrl %sp@- <== NOT EXECUTED
52bfa: 2045 moveal %d5,%a0 <== NOT EXECUTED
52bfc: 42a7 clrl %sp@- <== NOT EXECUTED
52bfe: 486a 000e pea %a2@(14) <== NOT EXECUTED
52c02: 4e90 jsr %a0@ <== NOT EXECUTED
52c04: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
52c08: 2800 movel %d0,%d4 <== NOT EXECUTED
52c0a: 6000 ff2a braw 52b36 <rtems_rfs_rtems_initialise+0x58><== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
52c0e: 42a7 clrl %sp@- <== NOT EXECUTED
52c10: 42a7 clrl %sp@- <== NOT EXECUTED
52c12: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
52c14: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
52c1a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
52c1e: 2600 movel %d0,%d3 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
52c20: 6642 bnes 52c64 <rtems_rfs_rtems_initialise+0x186><== NOT EXECUTED
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
return rtems_rfs_rtems_error ("initialise: cannot lock access mutex", rc);
}
rc = rtems_rfs_fs_open (mt_entry->dev, rtems, flags, max_held_buffers, &fs);
52c22: 486e fffc pea %fp@(-4) <== NOT EXECUTED
52c26: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
52c2a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
52c2c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52c2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52c30: 2f28 0036 movel %a0@(54),%sp@- <== NOT EXECUTED
52c34: 4eb9 0005 d070 jsr 5d070 <rtems_rfs_fs_open> <== NOT EXECUTED
if (rc)
52c3a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
return rtems_rfs_rtems_error ("initialise: cannot lock access mutex", rc);
}
rc = rtems_rfs_fs_open (mt_entry->dev, rtems, flags, max_held_buffers, &fs);
52c3e: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
52c40: 6700 00ba beqw 52cfc <rtems_rfs_rtems_initialise+0x21e><== NOT EXECUTED
{
free (rtems);
52c44: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52c46: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
return rtems_rfs_rtems_error ("initialise: open", rc);
52c4c: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
52c52: 588f addql #4,%sp <== NOT EXECUTED
52c54: 2040 moveal %d0,%a0 <== NOT EXECUTED
52c56: 70ff moveq #-1,%d0 <== NOT EXECUTED
52c58: 2082 movel %d2,%a0@ <== NOT EXECUTED
mt_entry->mt_fs_root->location.handlers = &rtems_rfs_rtems_dir_handlers;
rtems_rfs_rtems_unlock (fs);
return 0;
}
52c5a: 4cee 3c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a5 <== NOT EXECUTED
52c60: 4e5e unlk %fp <== NOT EXECUTED
52c62: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
52c64: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
52c68: 42a7 clrl %sp@- <== NOT EXECUTED
52c6a: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
52c70: 508f addql #8,%sp <== NOT EXECUTED
52c72: 4a00 tstb %d0 <== NOT EXECUTED
52c74: 6642 bnes 52cb8 <rtems_rfs_rtems_initialise+0x1da><== NOT EXECUTED
}
rc = rtems_rfs_mutex_lock (&rtems->access);
if (rc > 0)
{
rtems_rfs_mutex_destroy (&rtems->access);
52c76: 2f0a movel %a2,%sp@- <== NOT EXECUTED
free (rtems);
return rtems_rfs_rtems_error ("initialise: cannot lock access mutex", rc);
52c78: 7405 moveq #5,%d2 <== NOT EXECUTED
}
rc = rtems_rfs_mutex_lock (&rtems->access);
if (rc > 0)
{
rtems_rfs_mutex_destroy (&rtems->access);
52c7a: 4eb9 0005 e61e jsr 5e61e <rtems_rfs_mutex_destroy> <== NOT EXECUTED
free (rtems);
52c80: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52c82: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
return rtems_rfs_rtems_error ("initialise: cannot lock access mutex", rc);
52c88: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
52c8e: 508f addql #8,%sp <== NOT EXECUTED
52c90: 2040 moveal %d0,%a0 <== NOT EXECUTED
52c92: 70ff moveq #-1,%d0 <== NOT EXECUTED
52c94: 2082 movel %d2,%a0@ <== NOT EXECUTED
mt_entry->mt_fs_root->location.handlers = &rtems_rfs_rtems_dir_handlers;
rtems_rfs_rtems_unlock (fs);
return 0;
}
52c96: 4cee 3c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a5 <== NOT EXECUTED
52c9c: 4e5e unlk %fp <== NOT EXECUTED
52c9e: 4e75 rts <== NOT EXECUTED
sizeof ("max-held-bufs") - 1) == 0)
{
max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
}
else
return rtems_rfs_rtems_error ("initialise: invalid option", EINVAL);
52ca0: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
52ca6: 7816 moveq #22,%d4 <== NOT EXECUTED
52ca8: 2040 moveal %d0,%a0 <== NOT EXECUTED
52caa: 70ff moveq #-1,%d0 <== NOT EXECUTED
52cac: 2084 movel %d4,%a0@ <== NOT EXECUTED
mt_entry->mt_fs_root->location.handlers = &rtems_rfs_rtems_dir_handlers;
rtems_rfs_rtems_unlock (fs);
return 0;
}
52cae: 4cee 3c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a5 <== NOT EXECUTED
52cb4: 4e5e unlk %fp <== NOT EXECUTED
52cb6: 4e75 rts <== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
52cb8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
rc = rtems_rfs_mutex_lock (&rtems->access);
if (rc > 0)
{
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
return rtems_rfs_rtems_error ("initialise: cannot lock access mutex", rc);
52cba: 7405 moveq #5,%d2 <== NOT EXECUTED
52cbc: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
52cc2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52cc4: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
52cca: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
52cd0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
rc = rtems_rfs_mutex_lock (&rtems->access);
if (rc > 0)
{
rtems_rfs_mutex_destroy (&rtems->access);
52cd4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52cd6: 4eb9 0005 e61e jsr 5e61e <rtems_rfs_mutex_destroy> <== NOT EXECUTED
free (rtems);
52cdc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52cde: 4eb9 0004 7344 jsr 47344 <free> <== NOT EXECUTED
return rtems_rfs_rtems_error ("initialise: cannot lock access mutex", rc);
52ce4: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
52cea: 508f addql #8,%sp <== NOT EXECUTED
52cec: 2040 moveal %d0,%a0 <== NOT EXECUTED
52cee: 70ff moveq #-1,%d0 <== NOT EXECUTED
52cf0: 2082 movel %d2,%a0@ <== NOT EXECUTED
52cf2: 60a2 bras 52c96 <rtems_rfs_rtems_initialise+0x1b8><== NOT EXECUTED
const void* data)
{
rtems_rfs_rtems_private* rtems;
rtems_rfs_file_system* fs;
uint32_t flags = 0;
uint32_t max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;
52cf4: 7805 moveq #5,%d4
rtems_rfs_rtems_initialise (rtems_filesystem_mount_table_entry_t* mt_entry,
const void* data)
{
rtems_rfs_rtems_private* rtems;
rtems_rfs_file_system* fs;
uint32_t flags = 0;
52cf6: 4282 clrl %d2
52cf8: 6000 fe56 braw 52b50 <rtems_rfs_rtems_initialise+0x72>
return rtems_rfs_rtems_error ("initialise: open", rc);
}
mt_entry->fs_info = fs;
mt_entry->ops = &rtems_rfs_ops;
mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
52cfc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
{
free (rtems);
return rtems_rfs_rtems_error ("initialise: open", rc);
}
mt_entry->fs_info = fs;
52d00: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
mt_entry->ops = &rtems_rfs_ops;
52d04: 203c 0007 1ba4 movel #465828,%d0 <== NOT EXECUTED
mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
52d0a: 226a 0024 moveal %a2@(36),%a1 <== NOT EXECUTED
free (rtems);
return rtems_rfs_rtems_error ("initialise: open", rc);
}
mt_entry->fs_info = fs;
mt_entry->ops = &rtems_rfs_ops;
52d0e: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
mt_entry->mt_fs_root->location.handlers = &rtems_rfs_rtems_dir_handlers;
52d12: 203c 0007 3620 movel #472608,%d0 <== NOT EXECUTED
{
free (rtems);
return rtems_rfs_rtems_error ("initialise: open", rc);
}
mt_entry->fs_info = fs;
52d18: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
52d1c: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
mt_entry->ops = &rtems_rfs_ops;
mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
mt_entry->mt_fs_root->location.handlers = &rtems_rfs_rtems_dir_handlers;
52d20: 2340 0010 movel %d0,%a1@(16) <== NOT EXECUTED
return rtems_rfs_rtems_error ("initialise: open", rc);
}
mt_entry->fs_info = fs;
mt_entry->ops = &rtems_rfs_ops;
mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
52d24: 7001 moveq #1,%d0 <== NOT EXECUTED
52d26: 2340 0008 movel %d0,%a1@(8) <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
52d2a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
52d2c: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
52d32: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
52d34: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
52d3a: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
52d3c: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
52d3e: 660c bnes 52d4c <rtems_rfs_rtems_initialise+0x26e><== NOT EXECUTED
mt_entry->mt_fs_root->location.handlers = &rtems_rfs_rtems_dir_handlers;
rtems_rfs_rtems_unlock (fs);
return 0;
52d40: 4280 clrl %d0 <== NOT EXECUTED
}
52d42: 4cee 3c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a5 <== NOT EXECUTED
52d48: 4e5e unlk %fp <== NOT EXECUTED
52d4a: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
52d4c: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
52d50: 42a7 clrl %sp@- <== NOT EXECUTED
52d52: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
52d58: 508f addql #8,%sp <== NOT EXECUTED
52d5a: 4a00 tstb %d0 <== NOT EXECUTED
52d5c: 67e2 beqs 52d40 <rtems_rfs_rtems_initialise+0x262><== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
52d5e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52d60: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
52d66: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52d68: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
52d6e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
52d74: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
mt_entry->mt_fs_root->location.handlers = &rtems_rfs_rtems_dir_handlers;
rtems_rfs_rtems_unlock (fs);
return 0;
52d78: 4280 clrl %d0 <== NOT EXECUTED
52d7a: 60c6 bras 52d42 <rtems_rfs_rtems_initialise+0x264><== NOT EXECUTED
}
}
rtems = malloc (sizeof (rtems_rfs_rtems_private));
if (!rtems)
return rtems_rfs_rtems_error ("initialise: local data", ENOMEM);
52d7c: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
52d82: 760c moveq #12,%d3 <== NOT EXECUTED
52d84: 2040 moveal %d0,%a0 <== NOT EXECUTED
52d86: 70ff moveq #-1,%d0 <== NOT EXECUTED
52d88: 2083 movel %d3,%a0@ <== NOT EXECUTED
mt_entry->mt_fs_root->location.handlers = &rtems_rfs_rtems_dir_handlers;
rtems_rfs_rtems_unlock (fs);
return 0;
}
52d8a: 4cee 3c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a5 <== NOT EXECUTED
52d90: 4e5e unlk %fp <== NOT EXECUTED
00051c94 <rtems_rfs_rtems_is_directory>:
* @return uint16_t The mode.
*/
static inline uint16_t
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->mode);
51c94: 4280 clrl %d0 <== NOT EXECUTED
static bool
rtems_rfs_rtems_is_directory(
rtems_filesystem_eval_path_context_t *ctx,
void *arg
)
{
51c96: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
51c9a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
rtems_rfs_inode_handle* inode = arg;
return rtems_rfs_rtems_node_type_by_inode (inode)
== RTEMS_FILESYSTEM_DIRECTORY;
}
51c9e: 4e5e unlk %fp <== NOT EXECUTED
/* FIXME: Return value? */
rtems_rfs_fs_close(fs);
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
}
51ca0: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED
51ca4: 1028 0002 moveb %a0@(2),%d0 <== NOT EXECUTED
51ca8: e188 lsll #8,%d0 <== NOT EXECUTED
* link is actually the normal path to a regular file, directory, device
* etc's inode. Links to inodes can be considered "the real" one, yet they
* are all links.
*/
uint16_t mode = rtems_rfs_inode_get_mode (inode);
if (RTEMS_RFS_S_ISDIR (mode))
51caa: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
51cb0: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED
51cb6: 57c0 seq %d0 <== NOT EXECUTED
{
rtems_rfs_inode_handle* inode = arg;
return rtems_rfs_rtems_node_type_by_inode (inode)
== RTEMS_FILESYSTEM_DIRECTORY;
}
51cb8: 4480 negl %d0 <== NOT EXECUTED
00051d4c <rtems_rfs_rtems_link>:
static int
rtems_rfs_rtems_link (const rtems_filesystem_location_info_t *parentloc,
const rtems_filesystem_location_info_t *targetloc,
const char *name,
size_t namelen)
{
51d4c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
51d50: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
51d54: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51d56: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_LINK))
printf ("rtems-rfs-rtems: link: in: parent:%" PRId32 " target:%" PRId32 "\n",
parent, target);
rc = rtems_rfs_link (fs, name, namelen, parent, target, false);
51d5a: 42a7 clrl %sp@- <== NOT EXECUTED
51d5c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
51d60: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
51d64: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
rtems_rfs_rtems_link (const rtems_filesystem_location_info_t *parentloc,
const rtems_filesystem_location_info_t *targetloc,
const char *name,
size_t namelen)
{
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (targetloc);
51d68: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_LINK))
printf ("rtems-rfs-rtems: link: in: parent:%" PRId32 " target:%" PRId32 "\n",
parent, target);
rc = rtems_rfs_link (fs, name, namelen, parent, target, false);
51d6c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
51d70: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
51d74: 4eb9 0005 dab4 jsr 5dab4 <rtems_rfs_link> <== NOT EXECUTED
if (rc)
51d7a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_LINK))
printf ("rtems-rfs-rtems: link: in: parent:%" PRId32 " target:%" PRId32 "\n",
parent, target);
rc = rtems_rfs_link (fs, name, namelen, parent, target, false);
51d7e: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
51d80: 660a bnes 51d8c <rtems_rfs_rtems_link+0x40> <== NOT EXECUTED
return rtems_rfs_rtems_error ("link: linking", rc);
}
return 0;
}
51d82: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("link: linking", rc);
}
return 0;
51d86: 4280 clrl %d0 <== NOT EXECUTED
}
51d88: 4e5e unlk %fp <== NOT EXECUTED
51d8a: 4e75 rts <== NOT EXECUTED
parent, target);
rc = rtems_rfs_link (fs, name, namelen, parent, target, false);
if (rc)
{
return rtems_rfs_rtems_error ("link: linking", rc);
51d8c: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
51d92: 2040 moveal %d0,%a0 <== NOT EXECUTED
51d94: 70ff moveq #-1,%d0 <== NOT EXECUTED
51d96: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return 0;
}
51d98: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
51d9c: 4e5e unlk %fp <== NOT EXECUTED
00052d94 <rtems_rfs_rtems_lock_by_mt_entry>:
static void
rtems_rfs_rtems_lock_by_mt_entry (
const rtems_filesystem_mount_table_entry_t *mt_entry
)
{
52d94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* FIXME: Return value? */
rtems_rfs_fs_close(fs);
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
}
52d98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
static void
rtems_rfs_rtems_lock_by_mt_entry (
const rtems_filesystem_mount_table_entry_t *mt_entry
)
{
52d9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
52d9e: 42a7 clrl %sp@- <== NOT EXECUTED
/* FIXME: Return value? */
rtems_rfs_fs_close(fs);
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
}
52da0: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
52da4: 42a7 clrl %sp@- <== NOT EXECUTED
52da6: 2068 0080 moveal %a0@(128),%a0 <== NOT EXECUTED
52daa: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
52dac: 4eb9 0004 c1c0 jsr 4c1c0 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
52db2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
52db6: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
52db8: 6608 bnes 52dc2 <rtems_rfs_rtems_lock_by_mt_entry+0x2e><== NOT EXECUTED
)
{
rtems_rfs_file_system* fs = mt_entry->fs_info;
rtems_rfs_rtems_lock (fs);
}
52dba: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
52dbe: 4e5e unlk %fp <== NOT EXECUTED
52dc0: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
52dc2: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
52dc6: 42a7 clrl %sp@- <== NOT EXECUTED
52dc8: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
52dce: 508f addql #8,%sp <== NOT EXECUTED
52dd0: 4a00 tstb %d0 <== NOT EXECUTED
52dd2: 67e6 beqs 52dba <rtems_rfs_rtems_lock_by_mt_entry+0x26><== NOT EXECUTED
printf ("rtems-rfs: mutex: obtain failed: %s\n",
52dd4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52dd6: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
52ddc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52dde: 4879 0007 1b7f pea 71b7f <_CPU_m68k_BFFFO_table+0xc70> <== NOT EXECUTED
52de4: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
52dea: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
52dee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
52df2: 4e5e unlk %fp <== NOT EXECUTED
0005228a <rtems_rfs_rtems_mknod>:
rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc,
const char *name,
size_t namelen,
mode_t mode,
dev_t dev)
{
5228a: 4e56 ffb8 linkw %fp,#-72 <== NOT EXECUTED
5228e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parentloc);
52292: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc,
const char *name,
size_t namelen,
mode_t mode,
dev_t dev)
{
52296: 48d7 04fc moveml %d2-%d7/%a2,%sp@ <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parentloc);
5229a: 2629 0008 movel %a1@(8),%d3 <== NOT EXECUTED
uid = 0;
gid = 0;
#endif
rc = rtems_rfs_inode_create (fs, parent, name, namelen,
rtems_rfs_rtems_imode (mode),
5229e: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc,
const char *name,
size_t namelen,
mode_t mode,
dev_t dev)
{
522a2: 2a2e 0018 movel %fp@(24),%d5 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parentloc);
rtems_rfs_ino parent = rtems_rfs_rtems_get_pathloc_ino (parentloc);
522a6: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc,
const char *name,
size_t namelen,
mode_t mode,
dev_t dev)
{
522aa: 282e 001c movel %fp@(28),%d4 <== NOT EXECUTED
uid = 0;
gid = 0;
#endif
rc = rtems_rfs_inode_create (fs, parent, name, namelen,
rtems_rfs_rtems_imode (mode),
522ae: 4eb9 0005 2ee0 jsr 52ee0 <rtems_rfs_rtems_imode> <== NOT EXECUTED
#else
uid = 0;
gid = 0;
#endif
rc = rtems_rfs_inode_create (fs, parent, name, namelen,
522b4: 486e ffd6 pea %fp@(-42) <== NOT EXECUTED
522b8: 42a7 clrl %sp@- <== NOT EXECUTED
522ba: 42a7 clrl %sp@- <== NOT EXECUTED
522bc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
522c0: 3f00 movew %d0,%sp@- <== NOT EXECUTED
522c2: 4267 clrw %sp@- <== NOT EXECUTED
522c4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
522c8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
522cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
522ce: 2f03 movel %d3,%sp@- <== NOT EXECUTED
522d0: 4eb9 0005 188e jsr 5188e <rtems_rfs_inode_create> <== NOT EXECUTED
rtems_rfs_rtems_imode (mode),
1, uid, gid, &ino);
if (rc > 0)
522d6: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
#else
uid = 0;
gid = 0;
#endif
rc = rtems_rfs_inode_create (fs, parent, name, namelen,
522da: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_rfs_rtems_imode (mode),
1, uid, gid, &ino);
if (rc > 0)
522dc: 6f18 bles 522f6 <rtems_rfs_rtems_mknod+0x6c> <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (fs, &inode);
if (rc > 0)
{
return rtems_rfs_rtems_error ("mknod: closing inode", rc);
522de: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
522e4: 72ff moveq #-1,%d1 <== NOT EXECUTED
522e6: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
return 0;
}
522e8: 2001 movel %d1,%d0 <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (fs, &inode);
if (rc > 0)
{
return rtems_rfs_rtems_error ("mknod: closing inode", rc);
522ea: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return 0;
}
522ec: 4cee 04fc ffb8 moveml %fp@(-72),%d2-%d7/%a2 <== NOT EXECUTED
522f2: 4e5e unlk %fp <== NOT EXECUTED
522f4: 4e75 rts <== NOT EXECUTED
if (rc > 0)
{
return rtems_rfs_rtems_error ("mknod: inode create", rc);
}
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
522f6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
522fa: 486e ffda pea %fp@(-38) <== NOT EXECUTED
522fe: 2f2e ffd6 movel %fp@(-42),%sp@- <== NOT EXECUTED
52302: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52304: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc > 0)
5230a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (rc > 0)
{
return rtems_rfs_rtems_error ("mknod: inode create", rc);
}
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5230e: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
52310: 6ecc bgts 522de <rtems_rfs_rtems_mknod+0x54> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("mknod: inode open", rc);
}
if (S_ISDIR(mode) || S_ISREG(mode))
52312: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED
52316: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
5231c: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED
52322: 6768 beqs 5238c <rtems_rfs_rtems_mknod+0x102> <== NOT EXECUTED
52324: 0c80 0000 8000 cmpil #32768,%d0 <== NOT EXECUTED
5232a: 6760 beqs 5238c <rtems_rfs_rtems_mknod+0x102> <== NOT EXECUTED
{
}
else if (S_ISCHR (mode) || S_ISBLK (mode))
5232c: 0c80 0000 2000 cmpil #8192,%d0 <== NOT EXECUTED
52332: 6708 beqs 5233c <rtems_rfs_rtems_mknod+0xb2> <== NOT EXECUTED
52334: 0c80 0000 6000 cmpil #24576,%d0 <== NOT EXECUTED
5233a: 6672 bnes 523ae <rtems_rfs_rtems_mknod+0x124> <== NOT EXECUTED
* @param bno The block number.
*/
static inline void
rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
{
rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);
5233c: 7218 moveq #24,%d1 <== NOT EXECUTED
5233e: 2005 movel %d5,%d0 <== NOT EXECUTED
52340: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
52342: 2240 moveal %d0,%a1 <== NOT EXECUTED
52344: 2404 movel %d4,%d2 <== NOT EXECUTED
52346: 2004 movel %d4,%d0 <== NOT EXECUTED
52348: e2aa lsrl %d1,%d2 <== NOT EXECUTED
5234a: e088 lsrl #8,%d0 <== NOT EXECUTED
5234c: 2440 moveal %d0,%a2 <== NOT EXECUTED
5234e: 2204 movel %d4,%d1 <== NOT EXECUTED
52350: 2e05 movel %d5,%d7 <== NOT EXECUTED
52352: 2c05 movel %d5,%d6 <== NOT EXECUTED
52354: e08e lsrl #8,%d6 <== NOT EXECUTED
52356: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
5235a: 4241 clrw %d1 <== NOT EXECUTED
5235c: 4841 swap %d1 <== NOT EXECUTED
5235e: 3009 movew %a1,%d0 <== NOT EXECUTED
52360: 4247 clrw %d7 <== NOT EXECUTED
52362: 4847 swap %d7 <== NOT EXECUTED
52364: 1141 0021 moveb %d1,%a0@(33) <== NOT EXECUTED
52368: 1140 001c moveb %d0,%a0@(28) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5236c: 7001 moveq #1,%d0 <== NOT EXECUTED
* @param bno The block number.
*/
static inline void
rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
{
rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);
5236e: 320a movew %a2,%d1 <== NOT EXECUTED
52370: 1147 001d moveb %d7,%a0@(29) <== NOT EXECUTED
52374: 1146 001e moveb %d6,%a0@(30) <== NOT EXECUTED
52378: 1145 001f moveb %d5,%a0@(31) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5237c: 1d40 ffea moveb %d0,%fp@(-22) <== NOT EXECUTED
* @param bno The block number.
*/
static inline void
rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
{
rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);
52380: 1142 0020 moveb %d2,%a0@(32) <== NOT EXECUTED
52384: 1141 0022 moveb %d1,%a0@(34) <== NOT EXECUTED
52388: 1144 0023 moveb %d4,%a0@(35) <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
return rtems_rfs_rtems_error ("mknod: bad mode", EINVAL);
}
rc = rtems_rfs_inode_close (fs, &inode);
5238c: 486e ffda pea %fp@(-38) <== NOT EXECUTED
52390: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52392: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc > 0)
52398: 508f addql #8,%sp <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
return rtems_rfs_rtems_error ("mknod: bad mode", EINVAL);
}
rc = rtems_rfs_inode_close (fs, &inode);
5239a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5239c: 6e00 ff40 bgtw 522de <rtems_rfs_rtems_mknod+0x54> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("mknod: closing inode", rc);
}
return 0;
523a0: 4281 clrl %d1 <== NOT EXECUTED
}
523a2: 2001 movel %d1,%d0 <== NOT EXECUTED
523a4: 4cee 04fc ffb8 moveml %fp@(-72),%d2-%d7/%a2 <== NOT EXECUTED
523aa: 4e5e unlk %fp <== NOT EXECUTED
523ac: 4e75 rts <== NOT EXECUTED
rtems_rfs_inode_set_block (&inode, 0, major);
rtems_rfs_inode_set_block (&inode, 1, minor);
}
else
{
rtems_rfs_inode_close (fs, &inode);
523ae: 486e ffda pea %fp@(-38) <== NOT EXECUTED
523b2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
523b4: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
return rtems_rfs_rtems_error ("mknod: bad mode", EINVAL);
523ba: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
523c0: 508f addql #8,%sp <== NOT EXECUTED
523c2: 72ff moveq #-1,%d1 <== NOT EXECUTED
523c4: 2040 moveal %d0,%a0 <== NOT EXECUTED
523c6: 7016 moveq #22,%d0 <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("mknod: closing inode", rc);
}
return 0;
}
523c8: 4cee 04fc ffb8 moveml %fp@(-72),%d2-%d7/%a2 <== NOT EXECUTED
rtems_rfs_inode_set_block (&inode, 1, minor);
}
else
{
rtems_rfs_inode_close (fs, &inode);
return rtems_rfs_rtems_error ("mknod: bad mode", EINVAL);
523ce: 2080 movel %d0,%a0@ <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("mknod: closing inode", rc);
}
return 0;
}
523d0: 2001 movel %d1,%d0 <== NOT EXECUTED
523d2: 4e5e unlk %fp <== NOT EXECUTED
00052eec <rtems_rfs_rtems_mode>:
mode_t
rtems_rfs_rtems_mode (int imode)
{
52eec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* Mapping matches RTEMS so no need to change.
*/
return imode;
}
52ef0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
52ef4: 4e5e unlk %fp <== NOT EXECUTED
000521a8 <rtems_rfs_rtems_node_type>:
* @return rtems_filesystem_node_types_t
*/
static rtems_filesystem_node_types_t
rtems_rfs_rtems_node_type (const rtems_filesystem_location_info_t* pathloc)
{
521a8: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
521ac: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
521b0: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
* @return rtems_filesystem_node_types_t
*/
static rtems_filesystem_node_types_t
rtems_rfs_rtems_node_type (const rtems_filesystem_location_info_t* pathloc)
{
521b4: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
521b8: 2629 0008 movel %a1@(8),%d3 <== NOT EXECUTED
rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
rtems_filesystem_node_types_t type;
rtems_rfs_inode_handle inode;
int rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
521bc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
521c0: 486e ffda pea %fp@(-38) <== NOT EXECUTED
521c4: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
521c8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
521ca: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc > 0)
521d0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
rtems_filesystem_node_types_t type;
rtems_rfs_inode_handle inode;
int rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
521d4: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
521d6: 6f18 bles 521f0 <rtems_rfs_rtems_node_type+0x48> <== NOT EXECUTED
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
if (rc > 0)
{
return rtems_rfs_rtems_error ("node_type: closing inode", rc);
521d8: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
521de: 78ff moveq #-1,%d4 <== NOT EXECUTED
521e0: 2040 moveal %d0,%a0 <== NOT EXECUTED
521e2: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return type;
}
521e4: 2004 movel %d4,%d0 <== NOT EXECUTED
521e6: 4cee 001c ffcc moveml %fp@(-52),%d2-%d4 <== NOT EXECUTED
521ec: 4e5e unlk %fp <== NOT EXECUTED
521ee: 4e75 rts <== NOT EXECUTED
/* FIXME: Return value? */
rtems_rfs_fs_close(fs);
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
}
521f0: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
* @return uint16_t The mode.
*/
static inline uint16_t
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->mode);
521f4: 4280 clrl %d0 <== NOT EXECUTED
521f6: 1028 0002 moveb %a0@(2),%d0 <== NOT EXECUTED
521fa: e188 lsll #8,%d0 <== NOT EXECUTED
* link is actually the normal path to a regular file, directory, device
* etc's inode. Links to inodes can be considered "the real" one, yet they
* are all links.
*/
uint16_t mode = rtems_rfs_inode_get_mode (inode);
if (RTEMS_RFS_S_ISDIR (mode))
521fc: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
52202: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED
52208: 6750 beqs 5225a <rtems_rfs_rtems_node_type+0xb2> <== NOT EXECUTED
return RTEMS_FILESYSTEM_DIRECTORY;
else if (RTEMS_RFS_S_ISLNK (mode))
5220a: 0c80 0000 a000 cmpil #40960,%d0 <== NOT EXECUTED
52210: 6760 beqs 52272 <rtems_rfs_rtems_node_type+0xca> <== NOT EXECUTED
return RTEMS_FILESYSTEM_SYM_LINK;
else if (RTEMS_RFS_S_ISBLK (mode) || RTEMS_RFS_S_ISCHR (mode))
52212: 0c80 0000 6000 cmpil #24576,%d0 <== NOT EXECUTED
52218: 672a beqs 52244 <rtems_rfs_rtems_node_type+0x9c> <== NOT EXECUTED
5221a: 0c80 0000 2000 cmpil #8192,%d0 <== NOT EXECUTED
52220: 6722 beqs 52244 <rtems_rfs_rtems_node_type+0x9c> <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
52222: 486e ffda pea %fp@(-38) <== NOT EXECUTED
else if (RTEMS_RFS_S_ISLNK (mode))
return RTEMS_FILESYSTEM_SYM_LINK;
else if (RTEMS_RFS_S_ISBLK (mode) || RTEMS_RFS_S_ISCHR (mode))
return RTEMS_FILESYSTEM_DEVICE;
else
return RTEMS_FILESYSTEM_MEMORY_FILE;
52226: 7804 moveq #4,%d4 <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
52228: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5222a: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc > 0)
52230: 508f addql #8,%sp <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
52232: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
52234: 6fae bles 521e4 <rtems_rfs_rtems_node_type+0x3c> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("node_type: closing inode", rc);
52236: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5223c: 78ff moveq #-1,%d4 <== NOT EXECUTED
5223e: 2040 moveal %d0,%a0 <== NOT EXECUTED
52240: 2082 movel %d2,%a0@ <== NOT EXECUTED
52242: 60a0 bras 521e4 <rtems_rfs_rtems_node_type+0x3c> <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
52244: 486e ffda pea %fp@(-38) <== NOT EXECUTED
if (RTEMS_RFS_S_ISDIR (mode))
return RTEMS_FILESYSTEM_DIRECTORY;
else if (RTEMS_RFS_S_ISLNK (mode))
return RTEMS_FILESYSTEM_SYM_LINK;
else if (RTEMS_RFS_S_ISBLK (mode) || RTEMS_RFS_S_ISCHR (mode))
return RTEMS_FILESYSTEM_DEVICE;
52248: 7801 moveq #1,%d4 <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
5224a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5224c: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc > 0)
52252: 508f addql #8,%sp <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
52254: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
52256: 6ede bgts 52236 <rtems_rfs_rtems_node_type+0x8e> <== NOT EXECUTED
52258: 608a bras 521e4 <rtems_rfs_rtems_node_type+0x3c> <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
5225a: 486e ffda pea %fp@(-38) <== NOT EXECUTED
* etc's inode. Links to inodes can be considered "the real" one, yet they
* are all links.
*/
uint16_t mode = rtems_rfs_inode_get_mode (inode);
if (RTEMS_RFS_S_ISDIR (mode))
return RTEMS_FILESYSTEM_DIRECTORY;
5225e: 4284 clrl %d4 <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
52260: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52262: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc > 0)
52268: 508f addql #8,%sp <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
5226a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5226c: 6ec8 bgts 52236 <rtems_rfs_rtems_node_type+0x8e> <== NOT EXECUTED
5226e: 6000 ff74 braw 521e4 <rtems_rfs_rtems_node_type+0x3c> <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
52272: 486e ffda pea %fp@(-38) <== NOT EXECUTED
*/
uint16_t mode = rtems_rfs_inode_get_mode (inode);
if (RTEMS_RFS_S_ISDIR (mode))
return RTEMS_FILESYSTEM_DIRECTORY;
else if (RTEMS_RFS_S_ISLNK (mode))
return RTEMS_FILESYSTEM_SYM_LINK;
52276: 7803 moveq #3,%d4 <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
52278: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5227a: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc > 0)
52280: 508f addql #8,%sp <== NOT EXECUTED
return rtems_rfs_rtems_error ("node_type: opening inode", rc);
}
type = rtems_rfs_rtems_node_type_by_inode (&inode);
rc = rtems_rfs_inode_close (fs, &inode);
52282: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
52284: 6eb0 bgts 52236 <rtems_rfs_rtems_node_type+0x8e> <== NOT EXECUTED
52286: 6000 ff5c braw 521e4 <rtems_rfs_rtems_node_type+0x3c> <== NOT EXECUTED
00051e94 <rtems_rfs_rtems_readlink>:
static ssize_t
rtems_rfs_rtems_readlink (const rtems_filesystem_location_info_t* pathloc,
char* buf,
size_t bufsize)
{
51e94: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
51e98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
51e9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int rc;
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_READLINK))
printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino);
rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);
51e9e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
51ea2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
51ea6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
static ssize_t
rtems_rfs_rtems_readlink (const rtems_filesystem_location_info_t* pathloc,
char* buf,
size_t bufsize)
{
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
51eaa: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
int rc;
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_READLINK))
printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino);
rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);
51eae: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
51eb2: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
51eb6: 4eb9 0005 e3b0 jsr 5e3b0 <rtems_rfs_symlink_read> <== NOT EXECUTED
if (rc)
51ebc: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
int rc;
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_READLINK))
printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino);
rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);
51ec0: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
51ec2: 660c bnes 51ed0 <rtems_rfs_rtems_readlink+0x3c> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("readlink: reading link", rc);
}
return (ssize_t) length;
51ec4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
51ec8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
51ecc: 4e5e unlk %fp <== NOT EXECUTED
51ece: 4e75 rts <== NOT EXECUTED
printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino);
rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);
if (rc)
{
return rtems_rfs_rtems_error ("readlink: reading link", rc);
51ed0: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
51ed6: 2040 moveal %d0,%a0 <== NOT EXECUTED
51ed8: 70ff moveq #-1,%d0 <== NOT EXECUTED
51eda: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return (ssize_t) length;
}
51edc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
51ee0: 4e5e unlk %fp <== NOT EXECUTED
00051da0 <rtems_rfs_rtems_rename>:
rtems_rfs_rtems_rename(const rtems_filesystem_location_info_t* old_parent_loc,
const rtems_filesystem_location_info_t* old_loc,
const rtems_filesystem_location_info_t* new_parent_loc,
const char* new_name,
size_t new_name_len)
{
51da0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
51da4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (old_loc);
51da8: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
rtems_rfs_rtems_rename(const rtems_filesystem_location_info_t* old_parent_loc,
const rtems_filesystem_location_info_t* old_loc,
const rtems_filesystem_location_info_t* new_parent_loc,
const char* new_name,
size_t new_name_len)
{
51dac: 48d7 007c moveml %d2-%d6,%sp@ <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (old_loc);
51db0: 2429 0008 movel %a1@(8),%d2 <== NOT EXECUTED
/*
* Link to the inode before unlinking so the inode is not erased when
* unlinked.
*/
rc = rtems_rfs_link (fs, new_name, new_name_len, new_parent, ino, true);
51db4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
int rc;
old_parent = rtems_rfs_rtems_get_pathloc_ino (old_parent_loc);
new_parent = rtems_rfs_rtems_get_pathloc_ino (new_parent_loc);
ino = rtems_rfs_rtems_get_pathloc_ino (old_loc);
51db8: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED
/*
* Link to the inode before unlinking so the inode is not erased when
* unlinked.
*/
rc = rtems_rfs_link (fs, new_name, new_name_len, new_parent, ino, true);
51dbc: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
51dc0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
51dc2: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
51dc6: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
51dca: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
old_parent = rtems_rfs_rtems_get_pathloc_ino (old_parent_loc);
new_parent = rtems_rfs_rtems_get_pathloc_ino (new_parent_loc);
ino = rtems_rfs_rtems_get_pathloc_ino (old_loc);
doff = rtems_rfs_rtems_get_pathloc_doff (old_loc);
51dce: 2c28 000c movel %a0@(12),%d6 <== NOT EXECUTED
rtems_rfs_ino new_parent;
rtems_rfs_ino ino;
uint32_t doff;
int rc;
old_parent = rtems_rfs_rtems_get_pathloc_ino (old_parent_loc);
51dd2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
51dd6: 2a28 0008 movel %a0@(8),%d5 <== NOT EXECUTED
/*
* Link to the inode before unlinking so the inode is not erased when
* unlinked.
*/
rc = rtems_rfs_link (fs, new_name, new_name_len, new_parent, ino, true);
51dda: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51ddc: 4eb9 0005 dab4 jsr 5dab4 <rtems_rfs_link> <== NOT EXECUTED
if (rc)
51de2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
/*
* Link to the inode before unlinking so the inode is not erased when
* unlinked.
*/
rc = rtems_rfs_link (fs, new_name, new_name_len, new_parent, ino, true);
51de6: 2800 movel %d0,%d4 <== NOT EXECUTED
if (rc)
51de8: 6718 beqs 51e02 <rtems_rfs_rtems_rename+0x62> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("rename: linking", rc);
51dea: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
51df0: 72ff moveq #-1,%d1 <== NOT EXECUTED
51df2: 2040 moveal %d0,%a0 <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("rename: unlinking", rc);
}
return 0;
}
51df4: 2001 movel %d1,%d0 <== NOT EXECUTED
* unlinked.
*/
rc = rtems_rfs_link (fs, new_name, new_name_len, new_parent, ino, true);
if (rc)
{
return rtems_rfs_rtems_error ("rename: linking", rc);
51df6: 2084 movel %d4,%a0@ <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("rename: unlinking", rc);
}
return 0;
}
51df8: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED
51dfe: 4e5e unlk %fp <== NOT EXECUTED
51e00: 4e75 rts <== NOT EXECUTED
/*
* Unlink all inodes even directories with the dir option as false because a
* directory may not be empty.
*/
rc = rtems_rfs_unlink (fs, old_parent, ino, doff,
51e02: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
51e06: 2f06 movel %d6,%sp@- <== NOT EXECUTED
51e08: 2f03 movel %d3,%sp@- <== NOT EXECUTED
51e0a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
51e0c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51e0e: 4eb9 0005 dc9c jsr 5dc9c <rtems_rfs_unlink> <== NOT EXECUTED
rtems_rfs_unlink_dir_allowed);
if (rc)
51e14: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
/*
* Unlink all inodes even directories with the dir option as false because a
* directory may not be empty.
*/
rc = rtems_rfs_unlink (fs, old_parent, ino, doff,
51e18: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_rfs_unlink_dir_allowed);
if (rc)
51e1a: 660e bnes 51e2a <rtems_rfs_rtems_rename+0x8a> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("rename: unlinking", rc);
}
return 0;
51e1c: 4281 clrl %d1 <== NOT EXECUTED
}
51e1e: 2001 movel %d1,%d0 <== NOT EXECUTED
51e20: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED
51e26: 4e5e unlk %fp <== NOT EXECUTED
51e28: 4e75 rts <== NOT EXECUTED
*/
rc = rtems_rfs_unlink (fs, old_parent, ino, doff,
rtems_rfs_unlink_dir_allowed);
if (rc)
{
return rtems_rfs_rtems_error ("rename: unlinking", rc);
51e2a: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
51e30: 72ff moveq #-1,%d1 <== NOT EXECUTED
51e32: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
return 0;
}
51e34: 2001 movel %d1,%d0 <== NOT EXECUTED
*/
rc = rtems_rfs_unlink (fs, old_parent, ino, doff,
rtems_rfs_unlink_dir_allowed);
if (rc)
{
return rtems_rfs_rtems_error ("rename: unlinking", rc);
51e36: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return 0;
}
51e38: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED
51e3e: 4e5e unlk %fp <== NOT EXECUTED
00051e42 <rtems_rfs_rtems_rmnod>:
* @return int
*/
int
rtems_rfs_rtems_rmnod (const rtems_filesystem_location_info_t* parent_pathloc,
const rtems_filesystem_location_info_t* pathloc)
{
51e42: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
51e46: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
51e4a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_RMNOD))
printf ("rtems-rfs: rmnod: parent:%" PRId32 " doff:%" PRIu32 ", ino:%" PRId32 "\n",
parent, doff, ino);
rc = rtems_rfs_unlink (fs, parent, ino, doff, rtems_rfs_unlink_dir_if_empty);
51e4c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
51e50: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
51e54: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
*/
int
rtems_rfs_rtems_rmnod (const rtems_filesystem_location_info_t* parent_pathloc,
const rtems_filesystem_location_info_t* pathloc)
{
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
51e58: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_RMNOD))
printf ("rtems-rfs: rmnod: parent:%" PRId32 " doff:%" PRIu32 ", ino:%" PRId32 "\n",
parent, doff, ino);
rc = rtems_rfs_unlink (fs, parent, ino, doff, rtems_rfs_unlink_dir_if_empty);
51e5c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
51e60: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
51e64: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
51e68: 4eb9 0005 dc9c jsr 5dc9c <rtems_rfs_unlink> <== NOT EXECUTED
if (rc)
51e6e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_RMNOD))
printf ("rtems-rfs: rmnod: parent:%" PRId32 " doff:%" PRIu32 ", ino:%" PRId32 "\n",
parent, doff, ino);
rc = rtems_rfs_unlink (fs, parent, ino, doff, rtems_rfs_unlink_dir_if_empty);
51e72: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
51e74: 660a bnes 51e80 <rtems_rfs_rtems_rmnod+0x3e> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("rmnod: unlinking", rc);
}
return 0;
}
51e76: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
if (rc)
{
return rtems_rfs_rtems_error ("rmnod: unlinking", rc);
}
return 0;
51e7a: 4280 clrl %d0 <== NOT EXECUTED
}
51e7c: 4e5e unlk %fp <== NOT EXECUTED
51e7e: 4e75 rts <== NOT EXECUTED
parent, doff, ino);
rc = rtems_rfs_unlink (fs, parent, ino, doff, rtems_rfs_unlink_dir_if_empty);
if (rc)
{
return rtems_rfs_rtems_error ("rmnod: unlinking", rc);
51e80: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
51e86: 2040 moveal %d0,%a0 <== NOT EXECUTED
51e88: 70ff moveq #-1,%d0 <== NOT EXECUTED
51e8a: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return 0;
}
51e8c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
51e90: 4e5e unlk %fp <== NOT EXECUTED
00052e34 <rtems_rfs_rtems_set_handlers>:
52e34: 4280 clrl %d0 <== NOT EXECUTED
52e36: 4281 clrl %d1 <== NOT EXECUTED
*/
bool
rtems_rfs_rtems_set_handlers (rtems_filesystem_location_info_t* loc,
rtems_rfs_inode_handle* inode)
{
52e38: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
52e3c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
{
/*
* Mapping matches RTEMS so no need to change.
*/
return imode;
}
52e40: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED
52e44: 1028 0002 moveb %a0@(2),%d0 <== NOT EXECUTED
52e48: 1228 0003 moveb %a0@(3),%d1 <== NOT EXECUTED
52e4c: e188 lsll #8,%d0 <== NOT EXECUTED
*/
bool
rtems_rfs_rtems_set_handlers (rtems_filesystem_location_info_t* loc,
rtems_rfs_inode_handle* inode)
{
52e4e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
52e52: 8081 orl %d1,%d0 <== NOT EXECUTED
uint16_t mode = rtems_rfs_inode_get_mode (inode);
loc->handlers = NULL;
52e54: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED
if (RTEMS_RFS_S_ISDIR (mode))
52e58: 2200 movel %d0,%d1 <== NOT EXECUTED
52e5a: 0281 0000 f000 andil #61440,%d1 <== NOT EXECUTED
52e60: 0c81 0000 4000 cmpil #16384,%d1 <== NOT EXECUTED
52e66: 6758 beqs 52ec0 <rtems_rfs_rtems_set_handlers+0x8c><== NOT EXECUTED
loc->handlers = rtems_rfs_rtems_handlers (dir);
else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))
52e68: 0c81 0000 2000 cmpil #8192,%d1 <== NOT EXECUTED
52e6e: 6730 beqs 52ea0 <rtems_rfs_rtems_set_handlers+0x6c><== NOT EXECUTED
52e70: 0c81 0000 6000 cmpil #24576,%d1 <== NOT EXECUTED
52e76: 6728 beqs 52ea0 <rtems_rfs_rtems_set_handlers+0x6c><== NOT EXECUTED
loc->handlers = rtems_rfs_rtems_handlers (device);
else if (RTEMS_RFS_S_ISLNK (mode))
52e78: 0c81 0000 a000 cmpil #40960,%d1 <== NOT EXECUTED
52e7e: 6730 beqs 52eb0 <rtems_rfs_rtems_set_handlers+0x7c><== NOT EXECUTED
loc->handlers = rtems_rfs_rtems_handlers (link);
else if (RTEMS_RFS_S_ISREG (mode))
52e80: 0c81 0000 8000 cmpil #32768,%d1 <== NOT EXECUTED
52e86: 6748 beqs 52ed0 <rtems_rfs_rtems_set_handlers+0x9c><== NOT EXECUTED
loc->handlers = rtems_rfs_rtems_handlers (file);
else
{
printf ("rtems-rfs: mode type unknown: %04x\n", mode);
52e88: 3f00 movew %d0,%sp@- <== NOT EXECUTED
52e8a: 4267 clrw %sp@- <== NOT EXECUTED
52e8c: 4879 0007 1c2c pea 71c2c <rtems_rfs_rtems_eval_config+0x8> <== NOT EXECUTED
52e92: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
return false;
52e98: 508f addql #8,%sp <== NOT EXECUTED
}
return true;
}
52e9a: 4e5e unlk %fp <== NOT EXECUTED
else if (RTEMS_RFS_S_ISREG (mode))
loc->handlers = rtems_rfs_rtems_handlers (file);
else
{
printf ("rtems-rfs: mode type unknown: %04x\n", mode);
return false;
52e9c: 4200 clrb %d0 <== NOT EXECUTED
}
return true;
}
52e9e: 4e75 rts <== NOT EXECUTED
52ea0: 4e5e unlk %fp <== NOT EXECUTED
uint16_t mode = rtems_rfs_inode_get_mode (inode);
loc->handlers = NULL;
if (RTEMS_RFS_S_ISDIR (mode))
loc->handlers = rtems_rfs_rtems_handlers (dir);
else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))
loc->handlers = rtems_rfs_rtems_handlers (device);
52ea2: 203c 0007 35f4 movel #472564,%d0 <== NOT EXECUTED
52ea8: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
else
{
printf ("rtems-rfs: mode type unknown: %04x\n", mode);
return false;
}
return true;
52eac: 7001 moveq #1,%d0 <== NOT EXECUTED
}
52eae: 4e75 rts <== NOT EXECUTED
52eb0: 4e5e unlk %fp <== NOT EXECUTED
if (RTEMS_RFS_S_ISDIR (mode))
loc->handlers = rtems_rfs_rtems_handlers (dir);
else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))
loc->handlers = rtems_rfs_rtems_handlers (device);
else if (RTEMS_RFS_S_ISLNK (mode))
loc->handlers = rtems_rfs_rtems_handlers (link);
52eb2: 203c 0007 1bf8 movel #465912,%d0 <== NOT EXECUTED
52eb8: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
else
{
printf ("rtems-rfs: mode type unknown: %04x\n", mode);
return false;
}
return true;
52ebc: 7001 moveq #1,%d0 <== NOT EXECUTED
}
52ebe: 4e75 rts <== NOT EXECUTED
52ec0: 4e5e unlk %fp <== NOT EXECUTED
rtems_rfs_inode_handle* inode)
{
uint16_t mode = rtems_rfs_inode_get_mode (inode);
loc->handlers = NULL;
if (RTEMS_RFS_S_ISDIR (mode))
loc->handlers = rtems_rfs_rtems_handlers (dir);
52ec2: 203c 0007 3620 movel #472608,%d0 <== NOT EXECUTED
52ec8: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
else
{
printf ("rtems-rfs: mode type unknown: %04x\n", mode);
return false;
}
return true;
52ecc: 7001 moveq #1,%d0 <== NOT EXECUTED
}
52ece: 4e75 rts <== NOT EXECUTED
52ed0: 4e5e unlk %fp <== NOT EXECUTED
else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))
loc->handlers = rtems_rfs_rtems_handlers (device);
else if (RTEMS_RFS_S_ISLNK (mode))
loc->handlers = rtems_rfs_rtems_handlers (link);
else if (RTEMS_RFS_S_ISREG (mode))
loc->handlers = rtems_rfs_rtems_handlers (file);
52ed2: 203c 0007 364c movel #472652,%d0 <== NOT EXECUTED
52ed8: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
else
{
printf ("rtems-rfs: mode type unknown: %04x\n", mode);
return false;
}
return true;
52edc: 7001 moveq #1,%d0 <== NOT EXECUTED
}
0005247c <rtems_rfs_rtems_shutdown>:
/**
* Shutdown the file system.
*/
void
rtems_rfs_rtems_shutdown (rtems_filesystem_mount_table_entry_t* mt_entry)
{
5247c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
52480: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_rfs_file_system* fs = mt_entry->fs_info;
52484: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
/**
* Shutdown the file system.
*/
void
rtems_rfs_rtems_shutdown (rtems_filesystem_mount_table_entry_t* mt_entry)
{
52488: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_rfs_file_system* fs = mt_entry->fs_info;
rtems_rfs_rtems_private* rtems;
rtems = rtems_rfs_fs_user (fs);
5248a: 2428 0080 movel %a0@(128),%d2 <== NOT EXECUTED
/* FIXME: Return value? */
rtems_rfs_fs_close(fs);
5248e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
52490: 4eb9 0005 da3e jsr 5da3e <rtems_rfs_fs_close> <== NOT EXECUTED
rtems_rfs_mutex_destroy (&rtems->access);
52496: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52498: 4eb9 0005 e61e jsr 5e61e <rtems_rfs_mutex_destroy> <== NOT EXECUTED
free (rtems);
5249e: 508f addql #8,%sp <== NOT EXECUTED
524a0: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
524a4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
524a8: 4e5e unlk %fp <== NOT EXECUTED
/* FIXME: Return value? */
rtems_rfs_fs_close(fs);
rtems_rfs_mutex_destroy (&rtems->access);
free (rtems);
524aa: 4ef9 0004 7344 jmp 47344 <free> <== NOT EXECUTED
00051cbc <rtems_rfs_rtems_statvfs>:
* @return int
*/
static int
rtems_rfs_rtems_statvfs (const rtems_filesystem_location_info_t* pathloc,
struct statvfs* sb)
{
51cbc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
51cc0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
51cc4: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED
* @return int
*/
static int
rtems_rfs_rtems_statvfs (const rtems_filesystem_location_info_t* pathloc,
struct statvfs* sb)
{
51cc8: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
51ccc: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED
size_t blocks;
size_t inodes;
rtems_rfs_group_usage (fs, &blocks, &inodes);
51cd0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
sb->f_bfree = rtems_rfs_fs_blocks (fs) - blocks;
sb->f_bavail = sb->f_bfree;
sb->f_files = rtems_rfs_fs_inodes (fs);
sb->f_ffree = rtems_rfs_fs_inodes (fs) - inodes;
sb->f_favail = sb->f_ffree;
sb->f_fsid = RTEMS_RFS_SB_MAGIC;
51cd4: 243c 2809 2001 movel #671686657,%d2 <== NOT EXECUTED
{
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
size_t blocks;
size_t inodes;
rtems_rfs_group_usage (fs, &blocks, &inodes);
51cda: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
* @return int
*/
static int
rtems_rfs_rtems_statvfs (const rtems_filesystem_location_info_t* pathloc,
struct statvfs* sb)
{
51cde: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
size_t blocks;
size_t inodes;
rtems_rfs_group_usage (fs, &blocks, &inodes);
51ce2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51ce4: 4eb9 0005 114e jsr 5114e <rtems_rfs_group_usage> <== NOT EXECUTED
sb->f_bsize = rtems_rfs_fs_block_size (fs);
sb->f_frsize = rtems_rfs_fs_media_block_size (fs);
51cea: 206b 0010 moveal %a3@(16),%a0 <== NOT EXECUTED
sb->f_fsid = RTEMS_RFS_SB_MAGIC;
sb->f_flag = rtems_rfs_fs_flags (fs);
sb->f_namemax = rtems_rfs_fs_max_name (fs);
return 0;
}
51cee: 4280 clrl %d0 <== NOT EXECUTED
rtems_rfs_group_usage (fs, &blocks, &inodes);
sb->f_bsize = rtems_rfs_fs_block_size (fs);
sb->f_frsize = rtems_rfs_fs_media_block_size (fs);
sb->f_blocks = rtems_rfs_fs_media_blocks (fs);
sb->f_bfree = rtems_rfs_fs_blocks (fs) - blocks;
51cf0: 226b 0004 moveal %a3@(4),%a1 <== NOT EXECUTED
51cf4: 93ee fff8 subal %fp@(-8),%a1 <== NOT EXECUTED
rtems_rfs_group_usage (fs, &blocks, &inodes);
sb->f_bsize = rtems_rfs_fs_block_size (fs);
sb->f_frsize = rtems_rfs_fs_media_block_size (fs);
sb->f_blocks = rtems_rfs_fs_media_blocks (fs);
51cf8: 2228 001c movel %a0@(28),%d1 <== NOT EXECUTED
size_t blocks;
size_t inodes;
rtems_rfs_group_usage (fs, &blocks, &inodes);
sb->f_bsize = rtems_rfs_fs_block_size (fs);
51cfc: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED
sb->f_frsize = rtems_rfs_fs_media_block_size (fs);
51d00: 2568 0020 0004 movel %a0@(32),%a2@(4) <== NOT EXECUTED
sb->f_blocks = rtems_rfs_fs_media_blocks (fs);
sb->f_bfree = rtems_rfs_fs_blocks (fs) - blocks;
sb->f_bavail = sb->f_bfree;
sb->f_files = rtems_rfs_fs_inodes (fs);
51d06: 206b 0014 moveal %a3@(20),%a0 <== NOT EXECUTED
sb->f_ffree = rtems_rfs_fs_inodes (fs) - inodes;
sb->f_favail = sb->f_ffree;
sb->f_fsid = RTEMS_RFS_SB_MAGIC;
sb->f_flag = rtems_rfs_fs_flags (fs);
51d0a: 2553 0030 movel %a3@,%a2@(48) <== NOT EXECUTED
sb->f_namemax = rtems_rfs_fs_max_name (fs);
51d0e: 256b 001c 0034 movel %a3@(28),%a2@(52) <== NOT EXECUTED
rtems_rfs_group_usage (fs, &blocks, &inodes);
sb->f_bsize = rtems_rfs_fs_block_size (fs);
sb->f_frsize = rtems_rfs_fs_media_block_size (fs);
sb->f_blocks = rtems_rfs_fs_media_blocks (fs);
51d14: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
sb->f_bfree = rtems_rfs_fs_blocks (fs) - blocks;
sb->f_bavail = sb->f_bfree;
sb->f_files = rtems_rfs_fs_inodes (fs);
sb->f_ffree = rtems_rfs_fs_inodes (fs) - inodes;
51d18: 2208 movel %a0,%d1 <== NOT EXECUTED
51d1a: 92ae fffc subl %fp@(-4),%d1 <== NOT EXECUTED
rtems_rfs_group_usage (fs, &blocks, &inodes);
sb->f_bsize = rtems_rfs_fs_block_size (fs);
sb->f_frsize = rtems_rfs_fs_media_block_size (fs);
sb->f_blocks = rtems_rfs_fs_media_blocks (fs);
51d1e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
sb->f_bfree = rtems_rfs_fs_blocks (fs) - blocks;
51d22: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
51d26: 2549 0014 movel %a1,%a2@(20) <== NOT EXECUTED
sb->f_bavail = sb->f_bfree;
51d2a: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
51d2e: 2549 001c movel %a1,%a2@(28) <== NOT EXECUTED
sb->f_files = rtems_rfs_fs_inodes (fs);
51d32: 2548 0020 movel %a0,%a2@(32) <== NOT EXECUTED
sb->f_ffree = rtems_rfs_fs_inodes (fs) - inodes;
51d36: 2541 0024 movel %d1,%a2@(36) <== NOT EXECUTED
sb->f_favail = sb->f_ffree;
51d3a: 2541 0028 movel %d1,%a2@(40) <== NOT EXECUTED
sb->f_fsid = RTEMS_RFS_SB_MAGIC;
51d3e: 2542 002c movel %d2,%a2@(44) <== NOT EXECUTED
sb->f_flag = rtems_rfs_fs_flags (fs);
sb->f_namemax = rtems_rfs_fs_max_name (fs);
return 0;
}
51d42: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED
51d48: 4e5e unlk %fp <== NOT EXECUTED
00051ee4 <rtems_rfs_rtems_symlink>:
static int
rtems_rfs_rtems_symlink (const rtems_filesystem_location_info_t* parent_loc,
const char* node_name,
size_t node_name_len,
const char* target)
{
51ee4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
51ee8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
51eec: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
static int
rtems_rfs_rtems_symlink (const rtems_filesystem_location_info_t* parent_loc,
const char* node_name,
size_t node_name_len,
const char* target)
{
51ef0: 48d7 007c moveml %d2-%d6,%sp@ <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
51ef4: 2629 0008 movel %a1@(8),%d3 <== NOT EXECUTED
rtems_rfs_ino parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
51ef8: 2c28 0008 movel %a0@(8),%d6 <== NOT EXECUTED
static int
rtems_rfs_rtems_symlink (const rtems_filesystem_location_info_t* parent_loc,
const char* node_name,
size_t node_name_len,
const char* target)
{
51efc: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED
rtems_rfs_ino parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
int rc;
rc = rtems_rfs_symlink (fs, node_name, node_name_len,
target, strlen (target),
geteuid(), getegid(), parent);
51f00: 4eb9 0005 6510 jsr 56510 <getegid> <== NOT EXECUTED
51f06: 3a00 movew %d0,%d5 <== NOT EXECUTED
51f08: 4eb9 0005 6524 jsr 56524 <geteuid> <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
rtems_rfs_ino parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
int rc;
rc = rtems_rfs_symlink (fs, node_name, node_name_len,
target, strlen (target),
51f0e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
geteuid(), getegid(), parent);
51f10: 3800 movew %d0,%d4 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
rtems_rfs_ino parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
int rc;
rc = rtems_rfs_symlink (fs, node_name, node_name_len,
target, strlen (target),
51f12: 4eb9 0006 26b4 jsr 626b4 <strlen> <== NOT EXECUTED
{
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
rtems_rfs_ino parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
int rc;
rc = rtems_rfs_symlink (fs, node_name, node_name_len,
51f18: 2e86 movel %d6,%sp@ <== NOT EXECUTED
51f1a: 3f05 movew %d5,%sp@- <== NOT EXECUTED
51f1c: 4267 clrw %sp@- <== NOT EXECUTED
51f1e: 3f04 movew %d4,%sp@- <== NOT EXECUTED
51f20: 4267 clrw %sp@- <== NOT EXECUTED
51f22: 2f00 movel %d0,%sp@- <== NOT EXECUTED
51f24: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51f26: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
51f2a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
51f2e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
51f30: 4eb9 0005 e10a jsr 5e10a <rtems_rfs_symlink> <== NOT EXECUTED
target, strlen (target),
geteuid(), getegid(), parent);
if (rc)
51f36: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
{
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
rtems_rfs_ino parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
int rc;
rc = rtems_rfs_symlink (fs, node_name, node_name_len,
51f3a: 2400 movel %d0,%d2 <== NOT EXECUTED
target, strlen (target),
geteuid(), getegid(), parent);
if (rc)
51f3c: 660c bnes 51f4a <rtems_rfs_rtems_symlink+0x66> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("symlink: linking", rc);
}
return 0;
51f3e: 4280 clrl %d0 <== NOT EXECUTED
}
51f40: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED
51f46: 4e5e unlk %fp <== NOT EXECUTED
51f48: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_symlink (fs, node_name, node_name_len,
target, strlen (target),
geteuid(), getegid(), parent);
if (rc)
{
return rtems_rfs_rtems_error ("symlink: linking", rc);
51f4a: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
51f50: 2040 moveal %d0,%a0 <== NOT EXECUTED
51f52: 70ff moveq #-1,%d0 <== NOT EXECUTED
51f54: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return 0;
}
51f56: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED
51f5c: 4e5e unlk %fp <== NOT EXECUTED
00052a70 <rtems_rfs_rtems_unlock_by_mt_entry>:
static void
rtems_rfs_rtems_unlock_by_mt_entry (
const rtems_filesystem_mount_table_entry_t *mt_entry
)
{
52a70: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
52a74: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
52a78: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_rfs_file_system* fs = mt_entry->fs_info;
52a7a: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
static void
rtems_rfs_rtems_unlock_by_mt_entry (
const rtems_filesystem_mount_table_entry_t *mt_entry
)
{
52a7e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* Unlock the RFS file system.
*/
static inline void
rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)
{
rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
52a80: 2468 0080 moveal %a0@(128),%a2 <== NOT EXECUTED
rtems_rfs_buffers_release (fs);
52a84: 2f08 movel %a0,%sp@- <== NOT EXECUTED
52a86: 4eb9 0005 a6b4 jsr 5a6b4 <rtems_rfs_buffers_release> <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
52a8c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
52a8e: 4eb9 0004 c318 jsr 4c318 <rtems_semaphore_release> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
52a94: 508f addql #8,%sp <== NOT EXECUTED
*/
static inline int
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
{
#if __rtems__
rtems_status_code sc = rtems_semaphore_release (*mutex);
52a96: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
52a98: 660c bnes 52aa6 <rtems_rfs_rtems_unlock_by_mt_entry+0x36><== NOT EXECUTED
rtems_rfs_file_system* fs = mt_entry->fs_info;
rtems_rfs_rtems_unlock (fs);
}
52a9a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
52a9e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
52aa2: 4e5e unlk %fp <== NOT EXECUTED
52aa4: 4e75 rts <== NOT EXECUTED
{
#if RTEMS_RFS_TRACE
if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
52aa6: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
52aaa: 42a7 clrl %sp@- <== NOT EXECUTED
52aac: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
52ab2: 508f addql #8,%sp <== NOT EXECUTED
52ab4: 4a00 tstb %d0 <== NOT EXECUTED
52ab6: 67e2 beqs 52a9a <rtems_rfs_rtems_unlock_by_mt_entry+0x2a><== NOT EXECUTED
printf ("rtems-rfs: mutex: release failed: %s\n",
52ab8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52aba: 4eb9 0004 70ec jsr 470ec <rtems_status_text> <== NOT EXECUTED
52ac0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52ac2: 4879 0007 1b23 pea 71b23 <_CPU_m68k_BFFFO_table+0xc14> <== NOT EXECUTED
52ac8: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
52ace: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
52ad2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
52ad6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
52ada: 4e5e unlk %fp <== NOT EXECUTED
00051f60 <rtems_rfs_rtems_utime>:
static int
rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc,
time_t atime,
time_t mtime)
{
51f60: 4e56 ffb8 linkw %fp,#-72 <== NOT EXECUTED
51f64: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
51f68: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
static int
rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc,
time_t atime,
time_t mtime)
{
51f6c: 48d7 0cfc moveml %d2-%d7/%a2-%a3,%sp@ <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
51f70: 2829 0008 movel %a1@(8),%d4 <== NOT EXECUTED
rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
rtems_rfs_inode_handle inode;
int rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
51f74: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
51f78: 2a0e movel %fp,%d5 <== NOT EXECUTED
51f7a: 0685 ffff ffda addil #-38,%d5 <== NOT EXECUTED
51f80: 2f05 movel %d5,%sp@- <== NOT EXECUTED
51f82: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
static int
rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc,
time_t atime,
time_t mtime)
{
51f86: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
rtems_rfs_inode_handle inode;
int rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
51f8a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
static int
rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc,
time_t atime,
time_t mtime)
{
51f8c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
rtems_rfs_inode_handle inode;
int rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
51f90: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc)
51f96: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
rtems_rfs_inode_handle inode;
int rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
51f9a: 2c00 movel %d0,%d6 <== NOT EXECUTED
if (rc)
51f9c: 6718 beqs 51fb6 <rtems_rfs_rtems_utime+0x56> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("utime: read inode", rc);
51f9e: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
51fa4: 72ff moveq #-1,%d1 <== NOT EXECUTED
51fa6: 2040 moveal %d0,%a0 <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("utime: closing inode", rc);
}
return 0;
}
51fa8: 2001 movel %d1,%d0 <== NOT EXECUTED
int rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
if (rc)
{
return rtems_rfs_rtems_error ("utime: read inode", rc);
51faa: 2086 movel %d6,%a0@ <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("utime: closing inode", rc);
}
return 0;
}
51fac: 4cee 0cfc ffb8 moveml %fp@(-72),%d2-%d7/%a2-%a3 <== NOT EXECUTED
51fb2: 4e5e unlk %fp <== NOT EXECUTED
51fb4: 4e75 rts <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
51fb6: 7218 moveq #24,%d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
51fb8: 2c02 movel %d2,%d6 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
51fba: 2003 movel %d3,%d0 <== NOT EXECUTED
51fbc: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
51fbe: e2ae lsrl %d1,%d6 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
51fc0: 2203 movel %d3,%d1 <== NOT EXECUTED
51fc2: 2440 moveal %d0,%a2 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
51fc4: 2002 movel %d2,%d0 <== NOT EXECUTED
51fc6: e088 lsrl #8,%d0 <== NOT EXECUTED
51fc8: 2640 moveal %d0,%a3 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
51fca: 2e03 movel %d3,%d7 <== NOT EXECUTED
51fcc: e08f lsrl #8,%d7 <== NOT EXECUTED
51fce: 4241 clrw %d1 <== NOT EXECUTED
51fd0: 4841 swap %d1 <== NOT EXECUTED
51fd2: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
51fd6: 2241 moveal %d1,%a1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
51fd8: 2202 movel %d2,%d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
51fda: 300a movew %a2,%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
51fdc: 4241 clrw %d1 <== NOT EXECUTED
51fde: 4841 swap %d1 <== NOT EXECUTED
51fe0: 1142 0017 moveb %d2,%a0@(23) <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
51fe4: 1140 0010 moveb %d0,%a0@(16) <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
51fe8: 1141 0015 moveb %d1,%a0@(21) <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
51fec: 3009 movew %a1,%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
51fee: 320b movew %a3,%d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
51ff0: 1140 0011 moveb %d0,%a0@(17) <== NOT EXECUTED
51ff4: 1147 0012 moveb %d7,%a0@(18) <== NOT EXECUTED
51ff8: 1143 0013 moveb %d3,%a0@(19) <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
rtems_rfs_time mtime)
{
rtems_rfs_write_u32 (&handle->node->mtime, mtime);
51ffc: 1146 0014 moveb %d6,%a0@(20) <== NOT EXECUTED
52000: 1141 0016 moveb %d1,%a0@(22) <== NOT EXECUTED
}
rtems_rfs_inode_set_atime (&inode, atime);
rtems_rfs_inode_set_mtime (&inode, mtime);
rc = rtems_rfs_inode_close (fs, &inode);
52004: 2f05 movel %d5,%sp@- <== NOT EXECUTED
static inline void
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
rtems_rfs_time atime)
{
rtems_rfs_write_u32 (&handle->node->atime, atime);
rtems_rfs_buffer_mark_dirty (&handle->buffer);
52006: 7001 moveq #1,%d0 <== NOT EXECUTED
52008: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5200a: 1d40 ffea moveb %d0,%fp@(-22) <== NOT EXECUTED
5200e: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
if (rc)
52014: 508f addql #8,%sp <== NOT EXECUTED
}
rtems_rfs_inode_set_atime (&inode, atime);
rtems_rfs_inode_set_mtime (&inode, mtime);
rc = rtems_rfs_inode_close (fs, &inode);
52016: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
52018: 660e bnes 52028 <rtems_rfs_rtems_utime+0xc8> <== NOT EXECUTED
{
return rtems_rfs_rtems_error ("utime: closing inode", rc);
}
return 0;
5201a: 4281 clrl %d1 <== NOT EXECUTED
}
5201c: 2001 movel %d1,%d0 <== NOT EXECUTED
5201e: 4cee 0cfc ffb8 moveml %fp@(-72),%d2-%d7/%a2-%a3 <== NOT EXECUTED
52024: 4e5e unlk %fp <== NOT EXECUTED
52026: 4e75 rts <== NOT EXECUTED
rtems_rfs_inode_set_mtime (&inode, mtime);
rc = rtems_rfs_inode_close (fs, &inode);
if (rc)
{
return rtems_rfs_rtems_error ("utime: closing inode", rc);
52028: 4eb9 0006 0414 jsr 60414 <__errno> <== NOT EXECUTED
5202e: 72ff moveq #-1,%d1 <== NOT EXECUTED
52030: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
return 0;
}
52032: 2001 movel %d1,%d0 <== NOT EXECUTED
rtems_rfs_inode_set_mtime (&inode, mtime);
rc = rtems_rfs_inode_close (fs, &inode);
if (rc)
{
return rtems_rfs_rtems_error ("utime: closing inode", rc);
52034: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
return 0;
}
52036: 4cee 0cfc ffb8 moveml %fp@(-72),%d2-%d7/%a2-%a3 <== NOT EXECUTED
5203c: 4e5e unlk %fp <== NOT EXECUTED
0004fbb4 <rtems_rfs_rup_quotient>:
* Return a rounded up integer quotient given a dividend and divisor. That is:
* "quotient = dividend / divisor"
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
4fbb4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4fbb8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4fbbc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if (dividend == 0)
4fbbe: 4a80 tstl %d0 <== NOT EXECUTED
4fbc0: 6712 beqs 4fbd4 <rtems_rfs_rup_quotient+0x20> <== NOT EXECUTED
return 1;
return ((dividend - 1) / divisor) + 1;
4fbc2: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4fbc6: 5380 subql #1,%d0 <== NOT EXECUTED
4fbc8: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
}
4fbcc: 241f movel %sp@+,%d2 <== NOT EXECUTED
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
return 1;
return ((dividend - 1) / divisor) + 1;
4fbce: 5280 addql #1,%d0 <== NOT EXECUTED
}
4fbd0: 4e5e unlk %fp <== NOT EXECUTED
4fbd2: 4e75 rts <== NOT EXECUTED
4fbd4: 241f movel %sp@+,%d2 <== NOT EXECUTED
*/
int
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)
{
if (dividend == 0)
return 1;
4fbd6: 7001 moveq #1,%d0 <== NOT EXECUTED
return ((dividend - 1) / divisor) + 1;
}
4fbd8: 4e5e unlk %fp <== NOT EXECUTED
00059ea8 <rtems_rfs_scan_chain>:
*/
static rtems_rfs_buffer*
rtems_rfs_scan_chain (rtems_chain_control* chain,
uint32_t* count,
rtems_rfs_buffer_block block)
{
59ea8: 4e56 ffec linkw %fp,#-20
59eac: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
59eb0: 286e 0008 moveal %fp@(8),%a4
rtems_rfs_buffer* buffer;
rtems_chain_node* node;
node = rtems_chain_last (chain);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
59eb4: 47f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a3
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Last(
Chain_Control *the_chain
)
{
return _Chain_Tail( the_chain )->previous;
59eba: 246c 0008 moveal %a4@(8),%a2
59ebe: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b>
*/
static rtems_rfs_buffer*
rtems_rfs_scan_chain (rtems_chain_control* chain,
uint32_t* count,
rtems_rfs_buffer_block block)
{
59ec2: 242e 0010 movel %fp@(16),%d2
rtems_rfs_buffer* buffer;
rtems_chain_node* node;
node = rtems_chain_last (chain);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
59ec6: 42a7 clrl %sp@-
59ec8: 4e93 jsr %a3@
59eca: 508f addql #8,%sp
59ecc: 4a00 tstb %d0
59ece: 6600 0088 bnew 59f58 <rtems_rfs_scan_chain+0xb0>
while (!rtems_chain_is_head (chain, node))
{
buffer = (rtems_rfs_buffer*) node;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("%" PRIuPTR " ", ((intptr_t) buffer->user));
59ed2: 4bf9 0006 16ec lea 616ec <printf>,%a5
node = rtems_chain_last (chain);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
while (!rtems_chain_is_head (chain, node))
59ed8: b9ca cmpal %a2,%a4
59eda: 671c beqs 59ef8 <rtems_rfs_scan_chain+0x50> <== NEVER TAKEN
{
buffer = (rtems_rfs_buffer*) node;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
59edc: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b>
59ee0: 42a7 clrl %sp@-
59ee2: 4e93 jsr %a3@
59ee4: 508f addql #8,%sp
59ee6: 4a00 tstb %d0
59ee8: 662a bnes 59f14 <rtems_rfs_scan_chain+0x6c> <== NEVER TAKEN
printf ("%" PRIuPTR " ", ((intptr_t) buffer->user));
if (((rtems_rfs_buffer_block) ((intptr_t)(buffer->user))) == block)
59eea: b4aa 0032 cmpl %a2@(50),%d2
59eee: 6738 beqs 59f28 <rtems_rfs_scan_chain+0x80> <== NEVER TAKEN
true);
if ((rc > 0) && (rrc == 0))
rrc = rc;
return rrc;
}
59ef0: 246a 0004 moveal %a2@(4),%a2
node = rtems_chain_last (chain);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
while (!rtems_chain_is_head (chain, node))
59ef4: b9ca cmpal %a2,%a4
59ef6: 66e4 bnes 59edc <rtems_rfs_scan_chain+0x34> <== NEVER TAKEN
return buffer;
}
node = rtems_chain_previous (node);
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
59ef8: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b>
59efc: 42a7 clrl %sp@-
59efe: 4e93 jsr %a3@
59f00: 508f addql #8,%sp
59f02: 4a00 tstb %d0
59f04: 6600 00a6 bnew 59fac <rtems_rfs_scan_chain+0x104>
printf (": not found\n");
return NULL;
59f08: 4280 clrl %d0
}
59f0a: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
59f10: 4e5e unlk %fp
59f12: 4e75 rts
while (!rtems_chain_is_head (chain, node))
{
buffer = (rtems_rfs_buffer*) node;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("%" PRIuPTR " ", ((intptr_t) buffer->user));
59f14: 2f2a 0032 movel %a2@(50),%sp@- <== NOT EXECUTED
59f18: 4879 0007 2219 pea 72219 <CSWTCH.2+0x151> <== NOT EXECUTED
59f1e: 4e95 jsr %a5@ <== NOT EXECUTED
59f20: 508f addql #8,%sp <== NOT EXECUTED
if (((rtems_rfs_buffer_block) ((intptr_t)(buffer->user))) == block)
59f22: b4aa 0032 cmpl %a2@(50),%d2 <== NOT EXECUTED
59f26: 66c8 bnes 59ef0 <rtems_rfs_scan_chain+0x48> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
59f28: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b> <== NOT EXECUTED
59f2c: 42a7 clrl %sp@- <== NOT EXECUTED
59f2e: 4e93 jsr %a3@ <== NOT EXECUTED
59f30: 508f addql #8,%sp <== NOT EXECUTED
59f32: 4a00 tstb %d0 <== NOT EXECUTED
59f34: 664a bnes 59f80 <rtems_rfs_scan_chain+0xd8> <== NOT EXECUTED
printf (": found block=%" PRIuPTR "\n",
((intptr_t)(buffer->user)));
(*count)--;
59f36: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
59f3a: 5390 subql #1,%a0@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
59f3c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59f3e: 4eb9 0005 7274 jsr 57274 <_Chain_Extract> <== NOT EXECUTED
rtems_chain_extract (node);
rtems_chain_set_off_chain (node);
return buffer;
59f44: 588f addql #4,%sp <== NOT EXECUTED
59f46: 200a movel %a2,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(
Chain_Node *node
)
{
node->next = node->previous = NULL;
59f48: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
59f4c: 4292 clrl %a2@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf (": not found\n");
return NULL;
}
59f4e: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
59f54: 4e5e unlk %fp <== NOT EXECUTED
59f56: 4e75 rts <== NOT EXECUTED
rtems_chain_node* node;
node = rtems_chain_last (chain);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
59f58: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
while (!rtems_chain_is_head (chain, node))
{
buffer = (rtems_rfs_buffer*) node;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("%" PRIuPTR " ", ((intptr_t) buffer->user));
59f5c: 4bf9 0006 16ec lea 616ec <printf>,%a5 <== NOT EXECUTED
rtems_chain_node* node;
node = rtems_chain_last (chain);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
59f62: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59f64: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
59f66: 4879 0007 21ea pea 721ea <CSWTCH.2+0x122> <== NOT EXECUTED
59f6c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
59f72: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
while (!rtems_chain_is_head (chain, node))
59f76: b9ca cmpal %a2,%a4 <== NOT EXECUTED
59f78: 6600 ff62 bnew 59edc <rtems_rfs_scan_chain+0x34> <== NOT EXECUTED
59f7c: 6000 ff7a braw 59ef8 <rtems_rfs_scan_chain+0x50> <== NOT EXECUTED
printf ("%" PRIuPTR " ", ((intptr_t) buffer->user));
if (((rtems_rfs_buffer_block) ((intptr_t)(buffer->user))) == block)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf (": found block=%" PRIuPTR "\n",
59f80: 2f2a 0032 movel %a2@(50),%sp@- <== NOT EXECUTED
59f84: 4879 0007 221e pea 7221e <CSWTCH.2+0x156> <== NOT EXECUTED
59f8a: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
((intptr_t)(buffer->user)));
(*count)--;
59f90: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
59f94: 5390 subql #1,%a0@ <== NOT EXECUTED
printf ("%" PRIuPTR " ", ((intptr_t) buffer->user));
if (((rtems_rfs_buffer_block) ((intptr_t)(buffer->user))) == block)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf (": found block=%" PRIuPTR "\n",
59f96: 508f addql #8,%sp <== NOT EXECUTED
59f98: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59f9a: 4eb9 0005 7274 jsr 57274 <_Chain_Extract> <== NOT EXECUTED
((intptr_t)(buffer->user)));
(*count)--;
rtems_chain_extract (node);
rtems_chain_set_off_chain (node);
return buffer;
59fa0: 588f addql #4,%sp <== NOT EXECUTED
59fa2: 200a movel %a2,%d0 <== NOT EXECUTED
59fa4: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
59fa8: 4292 clrl %a2@ <== NOT EXECUTED
59faa: 60a2 bras 59f4e <rtems_rfs_scan_chain+0xa6> <== NOT EXECUTED
}
node = rtems_chain_previous (node);
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))
printf (": not found\n");
59fac: 4879 0007 2231 pea 72231 <CSWTCH.2+0x169> <== NOT EXECUTED
59fb2: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
59fb8: 588f addql #4,%sp <== NOT EXECUTED
return NULL;
59fba: 4280 clrl %d0 <== NOT EXECUTED
59fbc: 6000 ff4c braw 59f0a <rtems_rfs_scan_chain+0x62> <== NOT EXECUTED
000586d8 <rtems_rfs_search_map_for_clear_bit.constprop.1>:
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
586d8: 4e56 ffc8 linkw %fp,#-56
rtems_rfs_bitmap_element* map_bits;
int map_index;
int map_offset;
int rc;
*found = false;
586dc: 206e 0010 moveal %fp@(16),%a0
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
586e0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
*found = false;
/*
* Load the bitmap.
*/
rc = rtems_rfs_bitmap_load_map (control, &map);
586e4: 486e fffc pea %fp@(-4)
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
586e8: 242e 0014 movel %fp@(20),%d2
rtems_rfs_bitmap_element* map_bits;
int map_index;
int map_offset;
int rc;
*found = false;
586ec: 4210 clrb %a0@
/*
* Load the bitmap.
*/
rc = rtems_rfs_bitmap_load_map (control, &map);
586ee: 2f2e 0008 movel %fp@(8),%sp@-
586f2: 4eba ff94 jsr %pc@(58688 <rtems_rfs_bitmap_load_map>)
if (rc > 0)
586f6: 508f addql #8,%sp
586f8: 4a80 tstl %d0
586fa: 6f0a bles 58706 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x2e><== ALWAYS TAKEN
}
while (((direction < 0) && (test_bit >= end_bit))
|| ((direction > 0) && (test_bit <= end_bit)));
return 0;
}
586fc: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
58702: 4e5e unlk %fp <== NOT EXECUTED
58704: 4e75 rts <== NOT EXECUTED
/*
* Calculate the bit we are testing plus the end point we search over.
*/
test_bit = *bit;
end_bit = test_bit + (window * direction);
58706: 2002 movel %d2,%d0
58708: 760b moveq #11,%d3
return rc;
/*
* Calculate the bit we are testing plus the end point we search over.
*/
test_bit = *bit;
5870a: 226e 000c moveal %fp@(12),%a1
end_bit = test_bit + (window * direction);
5870e: e7a8 lsll %d3,%d0
return rc;
/*
* Calculate the bit we are testing plus the end point we search over.
*/
test_bit = *bit;
58710: 2211 movel %a1@,%d1
end_bit = test_bit + (window * direction);
58712: 2040 moveal %d0,%a0
58714: d1c1 addal %d1,%a0
if (end_bit < 0)
58716: 4a88 tstl %a0
58718: 6d00 016e bltw 58888 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x1b0>
end_bit = 0;
else if (end_bit >= control->size)
5871c: 226e 0008 moveal %fp@(8),%a1
58720: 2029 000c movel %a1@(12),%d0
58724: b088 cmpl %a0,%d0
58726: 6204 bhis 5872c <rtems_rfs_search_map_for_clear_bit.constprop.1+0x54><== NEVER TAKEN
end_bit = control->size - 1;
58728: 2040 moveal %d0,%a0
5872a: 5388 subql #1,%a0
map_index = rtems_rfs_bitmap_map_index (test_bit);
5872c: 2001 movel %d1,%d0
5872e: ea80 asrl #5,%d0
58730: 2640 moveal %d0,%a3
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
search_index = rtems_rfs_bitmap_map_index (map_index);
58732: 700a moveq #10,%d0
58734: 2601 movel %d1,%d3
58736: e0a3 asrl %d0,%d3
search_offset = rtems_rfs_bitmap_map_offset (map_index);
58738: 2e0b movel %a3,%d7
search_bits = &control->search_bits[search_index];
map_bits = &map[map_index];
5873a: 280b movel %a3,%d4
end_bit = 0;
else if (end_bit >= control->size)
end_bit = control->size - 1;
map_index = rtems_rfs_bitmap_map_index (test_bit);
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
5873c: 103c 001f moveb #31,%d0
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
58740: 7a01 moveq #1,%d5
map_index = rtems_rfs_bitmap_map_index (test_bit);
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
search_index = rtems_rfs_bitmap_map_index (map_index);
search_offset = rtems_rfs_bitmap_map_offset (map_index);
search_bits = &control->search_bits[search_index];
58742: 226e 0008 moveal %fp@(8),%a1
58746: e58b lsll #2,%d3
58748: 2869 0014 moveal %a1@(20),%a4
5874c: d9c3 addal %d3,%a4
end_bit = control->size - 1;
map_index = rtems_rfs_bitmap_map_index (test_bit);
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
search_index = rtems_rfs_bitmap_map_index (map_index);
search_offset = rtems_rfs_bitmap_map_offset (map_index);
5874e: 761f moveq #31,%d3
58750: ce83 andl %d3,%d7
map_offset += direction;
test_bit += direction;
}
}
map_bits += direction;
58752: 2602 movel %d2,%d3
58754: e58b lsll #2,%d3
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
search_index = rtems_rfs_bitmap_map_index (map_index);
search_offset = rtems_rfs_bitmap_map_offset (map_index);
search_bits = &control->search_bits[search_index];
map_bits = &map[map_index];
58756: e58c lsll #2,%d4
58758: 246e fffc moveal %fp@(-4),%a2
map_offset += direction;
test_bit += direction;
}
}
map_bits += direction;
5875c: 2a43 moveal %d3,%a5
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
5875e: 2602 movel %d2,%d3
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
search_index = rtems_rfs_bitmap_map_index (map_index);
search_offset = rtems_rfs_bitmap_map_offset (map_index);
search_bits = &control->search_bits[search_index];
map_bits = &map[map_index];
58760: d5c4 addal %d4,%a2
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
58762: eb8b lsll #5,%d3
end_bit = 0;
else if (end_bit >= control->size)
end_bit = control->size - 1;
map_index = rtems_rfs_bitmap_map_index (test_bit);
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
58764: c081 andl %d1,%d0
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
58766: 2d43 fff0 movel %d3,%fp@(-16)
/*
* If any bit is clear find that bit and then search the map element. If
* all bits are set there are no map bits so move to the next search
* element.
*/
if (!rtems_rfs_bitmap_match (*search_bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
5876a: 2d54 fff4 movel %a4@,%fp@(-12)
5876e: 6700 00a0 beqw 58810 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x138>
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
58772: 43f3 2800 lea %a3@(00000000,%d2:l),%a1
58776: 2609 movel %a1,%d3
58778: eb8b lsll #5,%d3
5877a: 2243 moveal %d3,%a1
* all bits are set there are no map bits so move to the next search
* element.
*/
if (!rtems_rfs_bitmap_match (*search_bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
{
while ((search_offset >= 0)
5877c: 761f moveq #31,%d3
5877e: b687 cmpl %d7,%d3
58780: 6500 00ac bcsw 5882e <rtems_rfs_search_map_for_clear_bit.constprop.1+0x156>
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
58784: 2605 movel %d5,%d3
58786: efab lsll %d7,%d3
58788: 2d43 fff8 movel %d3,%fp@(-8)
5878c: c6ae fff4 andl %fp@(-12),%d3
if (!rtems_rfs_bitmap_match (*search_bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
{
while ((search_offset >= 0)
&& (search_offset < rtems_rfs_bitmap_element_bits ()))
{
if (!rtems_rfs_bitmap_test (*search_bits, search_offset))
58790: 6762 beqs 587f4 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x11c><== NEVER TAKEN
{
/*
* Find the clear bit in the map. Update the search map and map if
* found. We may find none are spare if searching up from the seed.
*/
while ((map_offset >= 0)
58792: 761f moveq #31,%d3
58794: b680 cmpl %d0,%d3
58796: 655c bcss 587f4 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x11c><== NEVER TAKEN
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
58798: 2605 movel %d5,%d3
5879a: e1ab lsll %d0,%d3
* found. We may find none are spare if searching up from the seed.
*/
while ((map_offset >= 0)
&& (map_offset < rtems_rfs_bitmap_element_bits ()))
{
if (!rtems_rfs_bitmap_test (*map_bits, map_offset))
5879c: 2c12 movel %a2@,%d6
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
5879e: 2803 movel %d3,%d4
587a0: c886 andl %d6,%d4
* found. We may find none are spare if searching up from the seed.
*/
while ((map_offset >= 0)
&& (map_offset < rtems_rfs_bitmap_element_bits ()))
{
if (!rtems_rfs_bitmap_test (*map_bits, map_offset))
587a2: 6618 bnes 587bc <rtems_rfs_search_map_for_clear_bit.constprop.1+0xe4>
*found = true;
rtems_rfs_buffer_mark_dirty (control->buffer);
return 0;
}
if (test_bit == end_bit)
587a4: b288 cmpl %a0,%d1
587a6: 674c beqs 587f4 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x11c><== NEVER TAKEN
break;
map_offset += direction;
587a8: d082 addl %d2,%d0
test_bit += direction;
587aa: d282 addl %d2,%d1
{
/*
* Find the clear bit in the map. Update the search map and map if
* found. We may find none are spare if searching up from the seed.
*/
while ((map_offset >= 0)
587ac: 761f moveq #31,%d3
587ae: b680 cmpl %d0,%d3
587b0: 6542 bcss 587f4 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x11c><== NEVER TAKEN
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
587b2: 2605 movel %d5,%d3
587b4: 2806 movel %d6,%d4
587b6: e1ab lsll %d0,%d3
587b8: c883 andl %d3,%d4
* found. We may find none are spare if searching up from the seed.
*/
while ((map_offset >= 0)
&& (map_offset < rtems_rfs_bitmap_element_bits ()))
{
if (!rtems_rfs_bitmap_test (*map_bits, map_offset))
587ba: 67e8 beqs 587a4 <rtems_rfs_search_map_for_clear_bit.constprop.1+0xcc>
*/
static rtems_rfs_bitmap_element
rtems_rfs_bitmap_set (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_element bits)
{
return RTEMS_RFS_BITMAP_SET_BITS (target, bits);
587bc: 4683 notl %d3
587be: c686 andl %d6,%d3
while ((map_offset >= 0)
&& (map_offset < rtems_rfs_bitmap_element_bits ()))
{
if (!rtems_rfs_bitmap_test (*map_bits, map_offset))
{
*map_bits = rtems_rfs_bitmap_set (*map_bits, 1 << map_offset);
587c0: 2483 movel %d3,%a2@
if (rtems_rfs_bitmap_match(*map_bits,
587c2: 6608 bnes 587cc <rtems_rfs_search_map_for_clear_bit.constprop.1+0xf4><== ALWAYS TAKEN
*/
static rtems_rfs_bitmap_element
rtems_rfs_bitmap_set (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_element bits)
{
return RTEMS_RFS_BITMAP_SET_BITS (target, bits);
587c4: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
587c8: 4680 notl %d0 <== NOT EXECUTED
587ca: c194 andl %d0,%a4@ <== NOT EXECUTED
*map_bits = rtems_rfs_bitmap_set (*map_bits, 1 << map_offset);
if (rtems_rfs_bitmap_match(*map_bits,
RTEMS_RFS_BITMAP_ELEMENT_SET))
*search_bits = rtems_rfs_bitmap_set (*search_bits,
1 << search_offset);
control->free--;
587cc: 206e 0008 moveal %fp@(8),%a0
587d0: 53a8 0010 subql #1,%a0@(16)
*bit = test_bit;
*found = true;
rtems_rfs_buffer_mark_dirty (control->buffer);
return 0;
587d4: 4280 clrl %d0
*search_bits = rtems_rfs_bitmap_set (*search_bits,
1 << search_offset);
control->free--;
*bit = test_bit;
*found = true;
rtems_rfs_buffer_mark_dirty (control->buffer);
587d6: 2050 moveal %a0@,%a0
if (rtems_rfs_bitmap_match(*map_bits,
RTEMS_RFS_BITMAP_ELEMENT_SET))
*search_bits = rtems_rfs_bitmap_set (*search_bits,
1 << search_offset);
control->free--;
*bit = test_bit;
587d8: 226e 000c moveal %fp@(12),%a1
587dc: 2281 movel %d1,%a1@
*found = true;
587de: 226e 0010 moveal %fp@(16),%a1
}
while (((direction < 0) && (test_bit >= end_bit))
|| ((direction > 0) && (test_bit <= end_bit)));
return 0;
}
587e2: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
RTEMS_RFS_BITMAP_ELEMENT_SET))
*search_bits = rtems_rfs_bitmap_set (*search_bits,
1 << search_offset);
control->free--;
*bit = test_bit;
*found = true;
587e8: 12bc 0001 moveb #1,%a1@
rtems_rfs_buffer_mark_dirty (control->buffer);
587ec: 10bc 0001 moveb #1,%a0@
}
while (((direction < 0) && (test_bit >= end_bit))
|| ((direction > 0) && (test_bit <= end_bit)));
return 0;
}
587f0: 4e5e unlk %fp
587f2: 4e75 rts
map_offset += direction;
test_bit += direction;
}
}
map_bits += direction;
587f4: d5cd addal %a5,%a2 <== NOT EXECUTED
map_index += direction;
587f6: d7c2 addal %d2,%a3 <== NOT EXECUTED
map_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
587f8: 2209 movel %a1,%d1 <== NOT EXECUTED
}
}
map_bits += direction;
map_index += direction;
map_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
587fa: 4a82 tstl %d2 <== NOT EXECUTED
587fc: 6f48 bles 58846 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x16e><== NOT EXECUTED
test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
search_offset += direction;
if (((direction < 0) && (test_bit <= end_bit))
|| ((direction > 0) && (test_bit >= end_bit)))
587fe: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
58800: 6c00 00dc bgew 588de <rtems_rfs_search_map_for_clear_bit.constprop.1+0x206><== NOT EXECUTED
58804: d3ee fff0 addal %fp@(-16),%a1 <== NOT EXECUTED
}
}
map_bits += direction;
map_index += direction;
map_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
58808: 4280 clrl %d0 <== NOT EXECUTED
5880a: de82 addl %d2,%d7 <== NOT EXECUTED
5880c: 6000 ff6e braw 5877c <rtems_rfs_search_map_for_clear_bit.constprop.1+0xa4><== NOT EXECUTED
*
* Align test_bit either up or down depending on the direction to next 32
* bit boundary.
*/
rtems_rfs_bitmap_bit bits_skipped;
test_bit &= ~((1 << RTEMS_RFS_ELEMENT_BITS_POWER_2) - 1);
58810: 70e0 moveq #-32,%d0 <== NOT EXECUTED
58812: c280 andl %d0,%d1 <== NOT EXECUTED
if (direction > 0)
58814: 4a82 tstl %d2 <== NOT EXECUTED
58816: 6f58 bles 58870 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x198><== NOT EXECUTED
{
bits_skipped = rtems_rfs_bitmap_element_bits () - search_offset;
58818: 7620 moveq #32,%d3 <== NOT EXECUTED
5881a: 9687 subl %d7,%d3 <== NOT EXECUTED
test_bit += bits_skipped * rtems_rfs_bitmap_element_bits ();
5881c: 2803 movel %d3,%d4 <== NOT EXECUTED
* adds 1. Remember the logic is for subtraction.
*/
test_bit -= ((bits_skipped - 1) * rtems_rfs_bitmap_element_bits ()) + 1;
map_offset = rtems_rfs_bitmap_element_bits () - 1;
}
map_bits += direction * bits_skipped;
5881e: 4c02 3800 mulsl %d2,%d3 <== NOT EXECUTED
test_bit &= ~((1 << RTEMS_RFS_ELEMENT_BITS_POWER_2) - 1);
if (direction > 0)
{
bits_skipped = rtems_rfs_bitmap_element_bits () - search_offset;
test_bit += bits_skipped * rtems_rfs_bitmap_element_bits ();
map_offset = 0;
58822: 4280 clrl %d0 <== NOT EXECUTED
rtems_rfs_bitmap_bit bits_skipped;
test_bit &= ~((1 << RTEMS_RFS_ELEMENT_BITS_POWER_2) - 1);
if (direction > 0)
{
bits_skipped = rtems_rfs_bitmap_element_bits () - search_offset;
test_bit += bits_skipped * rtems_rfs_bitmap_element_bits ();
58824: eb8c lsll #5,%d4 <== NOT EXECUTED
* adds 1. Remember the logic is for subtraction.
*/
test_bit -= ((bits_skipped - 1) * rtems_rfs_bitmap_element_bits ()) + 1;
map_offset = rtems_rfs_bitmap_element_bits () - 1;
}
map_bits += direction * bits_skipped;
58826: 45f2 3c00 lea %a2@(00000000,%d3:l:4),%a2 <== NOT EXECUTED
map_index += direction * bits_skipped;
5882a: d7c3 addal %d3,%a3 <== NOT EXECUTED
rtems_rfs_bitmap_bit bits_skipped;
test_bit &= ~((1 << RTEMS_RFS_ELEMENT_BITS_POWER_2) - 1);
if (direction > 0)
{
bits_skipped = rtems_rfs_bitmap_element_bits () - search_offset;
test_bit += bits_skipped * rtems_rfs_bitmap_element_bits ();
5882c: d284 addl %d4,%d1 <== NOT EXECUTED
}
map_bits += direction * bits_skipped;
map_index += direction * bits_skipped;
}
search_bits += direction;
5882e: d9cd addal %a5,%a4 <== NOT EXECUTED
search_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
58830: 4a82 tstl %d2 <== NOT EXECUTED
58832: 6f2e bles 58862 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x18a><== NOT EXECUTED
}
while (((direction < 0) && (test_bit >= end_bit))
|| ((direction > 0) && (test_bit <= end_bit)));
58834: 4a82 tstl %d2 <== NOT EXECUTED
58836: 6f00 0094 blew 588cc <rtems_rfs_search_map_for_clear_bit.constprop.1+0x1f4><== NOT EXECUTED
5883a: b288 cmpl %a0,%d1 <== NOT EXECUTED
5883c: 6e00 008e bgtw 588cc <rtems_rfs_search_map_for_clear_bit.constprop.1+0x1f4><== NOT EXECUTED
58840: 4287 clrl %d7 <== NOT EXECUTED
58842: 6000 ff26 braw 5876a <rtems_rfs_search_map_for_clear_bit.constprop.1+0x92><== NOT EXECUTED
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
58846: 0681 0000 001f addil #31,%d1 <== NOT EXECUTED
test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
search_offset += direction;
if (((direction < 0) && (test_bit <= end_bit))
5884c: 4a82 tstl %d2 <== NOT EXECUTED
5884e: 6706 beqs 58856 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x17e><== NOT EXECUTED
58850: b288 cmpl %a0,%d1 <== NOT EXECUTED
58852: 6f00 0084 blew 588d8 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x200><== NOT EXECUTED
58856: d3ee fff0 addal %fp@(-16),%a1 <== NOT EXECUTED
}
}
map_bits += direction;
map_index += direction;
map_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
5885a: 701f moveq #31,%d0 <== NOT EXECUTED
5885c: de82 addl %d2,%d7 <== NOT EXECUTED
5885e: 6000 ff1c braw 5877c <rtems_rfs_search_map_for_clear_bit.constprop.1+0xa4><== NOT EXECUTED
search_bits += direction;
search_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
}
while (((direction < 0) && (test_bit >= end_bit))
|| ((direction > 0) && (test_bit <= end_bit)));
58862: 4a82 tstl %d2 <== NOT EXECUTED
58864: 6766 beqs 588cc <rtems_rfs_search_map_for_clear_bit.constprop.1+0x1f4><== NOT EXECUTED
}
search_bits += direction;
search_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
}
while (((direction < 0) && (test_bit >= end_bit))
58866: b288 cmpl %a0,%d1 <== NOT EXECUTED
58868: 6d62 blts 588cc <rtems_rfs_search_map_for_clear_bit.constprop.1+0x1f4><== NOT EXECUTED
5886a: 7e1f moveq #31,%d7 <== NOT EXECUTED
5886c: 6000 fefc braw 5876a <rtems_rfs_search_map_for_clear_bit.constprop.1+0x92><== NOT EXECUTED
test_bit += bits_skipped * rtems_rfs_bitmap_element_bits ();
map_offset = 0;
}
else
{
bits_skipped = search_offset + 1;
58870: 2607 movel %d7,%d3 <== NOT EXECUTED
58872: 5283 addql #1,%d3 <== NOT EXECUTED
* adds 1. Remember the logic is for subtraction.
*/
test_bit -= ((bits_skipped - 1) * rtems_rfs_bitmap_element_bits ()) + 1;
map_offset = rtems_rfs_bitmap_element_bits () - 1;
}
map_bits += direction * bits_skipped;
58874: 4c02 3800 mulsl %d2,%d3 <== NOT EXECUTED
/*
* Need to remove 1 for the rounding up. The above rounds down and
* adds 1. Remember the logic is for subtraction.
*/
test_bit -= ((bits_skipped - 1) * rtems_rfs_bitmap_element_bits ()) + 1;
map_offset = rtems_rfs_bitmap_element_bits () - 1;
58878: 701f moveq #31,%d0 <== NOT EXECUTED
bits_skipped = search_offset + 1;
/*
* Need to remove 1 for the rounding up. The above rounds down and
* adds 1. Remember the logic is for subtraction.
*/
test_bit -= ((bits_skipped - 1) * rtems_rfs_bitmap_element_bits ()) + 1;
5887a: eb8f lsll #5,%d7 <== NOT EXECUTED
map_offset = rtems_rfs_bitmap_element_bits () - 1;
}
map_bits += direction * bits_skipped;
map_index += direction * bits_skipped;
5887c: d7c3 addal %d3,%a3 <== NOT EXECUTED
bits_skipped = search_offset + 1;
/*
* Need to remove 1 for the rounding up. The above rounds down and
* adds 1. Remember the logic is for subtraction.
*/
test_bit -= ((bits_skipped - 1) * rtems_rfs_bitmap_element_bits ()) + 1;
5887e: 4687 notl %d7 <== NOT EXECUTED
58880: d287 addl %d7,%d1 <== NOT EXECUTED
map_offset = rtems_rfs_bitmap_element_bits () - 1;
}
map_bits += direction * bits_skipped;
58882: 45f2 3c00 lea %a2@(00000000,%d3:l:4),%a2 <== NOT EXECUTED
58886: 60a6 bras 5882e <rtems_rfs_search_map_for_clear_bit.constprop.1+0x156><== NOT EXECUTED
if (end_bit < 0)
end_bit = 0;
else if (end_bit >= control->size)
end_bit = control->size - 1;
map_index = rtems_rfs_bitmap_map_index (test_bit);
58888: 2001 movel %d1,%d0 <== NOT EXECUTED
5888a: ea80 asrl #5,%d0 <== NOT EXECUTED
5888c: 2640 moveal %d0,%a3 <== NOT EXECUTED
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
search_index = rtems_rfs_bitmap_map_index (map_index);
5888e: 700a moveq #10,%d0 <== NOT EXECUTED
58890: 2601 movel %d1,%d3 <== NOT EXECUTED
58892: e0a3 asrl %d0,%d3 <== NOT EXECUTED
search_offset = rtems_rfs_bitmap_map_offset (map_index);
58894: 2e0b movel %a3,%d7 <== NOT EXECUTED
search_bits = &control->search_bits[search_index];
map_bits = &map[map_index];
58896: 280b movel %a3,%d4 <== NOT EXECUTED
end_bit = 0;
else if (end_bit >= control->size)
end_bit = control->size - 1;
map_index = rtems_rfs_bitmap_map_index (test_bit);
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
58898: 103c 001f moveb #31,%d0 <== NOT EXECUTED
*/
test_bit = *bit;
end_bit = test_bit + (window * direction);
if (end_bit < 0)
end_bit = 0;
5889c: 91c8 subal %a0,%a0 <== NOT EXECUTED
*/
static bool
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,
rtems_rfs_bitmap_bit bit)
{
return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);
5889e: 7a01 moveq #1,%d5 <== NOT EXECUTED
map_index = rtems_rfs_bitmap_map_index (test_bit);
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
search_index = rtems_rfs_bitmap_map_index (map_index);
search_offset = rtems_rfs_bitmap_map_offset (map_index);
search_bits = &control->search_bits[search_index];
588a0: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
588a4: e58b lsll #2,%d3 <== NOT EXECUTED
588a6: 2869 0014 moveal %a1@(20),%a4 <== NOT EXECUTED
588aa: d9c3 addal %d3,%a4 <== NOT EXECUTED
end_bit = control->size - 1;
map_index = rtems_rfs_bitmap_map_index (test_bit);
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
search_index = rtems_rfs_bitmap_map_index (map_index);
search_offset = rtems_rfs_bitmap_map_offset (map_index);
588ac: 761f moveq #31,%d3 <== NOT EXECUTED
588ae: ce83 andl %d3,%d7 <== NOT EXECUTED
map_offset += direction;
test_bit += direction;
}
}
map_bits += direction;
588b0: 2602 movel %d2,%d3 <== NOT EXECUTED
588b2: e58b lsll #2,%d3 <== NOT EXECUTED
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
search_index = rtems_rfs_bitmap_map_index (map_index);
search_offset = rtems_rfs_bitmap_map_offset (map_index);
search_bits = &control->search_bits[search_index];
map_bits = &map[map_index];
588b4: e58c lsll #2,%d4 <== NOT EXECUTED
588b6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
map_offset += direction;
test_bit += direction;
}
}
map_bits += direction;
588ba: 2a43 moveal %d3,%a5 <== NOT EXECUTED
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
588bc: 2602 movel %d2,%d3 <== NOT EXECUTED
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
search_index = rtems_rfs_bitmap_map_index (map_index);
search_offset = rtems_rfs_bitmap_map_offset (map_index);
search_bits = &control->search_bits[search_index];
map_bits = &map[map_index];
588be: d5c4 addal %d4,%a2 <== NOT EXECUTED
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
588c0: eb8b lsll #5,%d3 <== NOT EXECUTED
end_bit = 0;
else if (end_bit >= control->size)
end_bit = control->size - 1;
map_index = rtems_rfs_bitmap_map_index (test_bit);
map_offset = rtems_rfs_bitmap_map_offset (test_bit);
588c2: c081 andl %d1,%d0 <== NOT EXECUTED
return 0;
}
static int
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
588c4: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED
588c8: 6000 fea0 braw 5876a <rtems_rfs_search_map_for_clear_bit.constprop.1+0x92><== NOT EXECUTED
search_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
}
while (((direction < 0) && (test_bit >= end_bit))
|| ((direction > 0) && (test_bit <= end_bit)));
return 0;
588cc: 4280 clrl %d0 <== NOT EXECUTED
}
588ce: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
588d4: 4e5e unlk %fp <== NOT EXECUTED
588d6: 4e75 rts <== NOT EXECUTED
}
map_bits += direction * bits_skipped;
map_index += direction * bits_skipped;
}
search_bits += direction;
588d8: d9cd addal %a5,%a4 <== NOT EXECUTED
}
}
map_bits += direction;
map_index += direction;
map_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
588da: 701f moveq #31,%d0 <== NOT EXECUTED
588dc: 6088 bras 58866 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x18e><== NOT EXECUTED
}
map_bits += direction * bits_skipped;
map_index += direction * bits_skipped;
}
search_bits += direction;
588de: d9cd addal %a5,%a4 <== NOT EXECUTED
}
}
map_bits += direction;
map_index += direction;
map_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
588e0: 4280 clrl %d0 <== NOT EXECUTED
588e2: 6000 ff50 braw 58834 <rtems_rfs_search_map_for_clear_bit.constprop.1+0x15c><== NOT EXECUTED
0005e10a <rtems_rfs_symlink>:
const char* link,
int link_length,
uid_t uid,
gid_t gid,
rtems_rfs_ino parent)
{
5e10a: 4e56 ff5c linkw %fp,#-164 <== NOT EXECUTED
5e10e: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_rfs_inode_handle inode;
rtems_rfs_ino ino;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))
5e112: 42a7 clrl %sp@- <== NOT EXECUTED
5e114: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
const char* link,
int link_length,
uid_t uid,
gid_t gid,
rtems_rfs_ino parent)
{
5e118: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
5e11c: 262e 0018 movel %fp@(24),%d3 <== NOT EXECUTED
5e120: 382e 001e movew %fp@(30),%d4 <== NOT EXECUTED
5e124: 3a2e 0022 movew %fp@(34),%d5 <== NOT EXECUTED
rtems_rfs_inode_handle inode;
rtems_rfs_ino ino;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))
5e128: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5e12e: 508f addql #8,%sp <== NOT EXECUTED
5e130: 4a00 tstb %d0 <== NOT EXECUTED
5e132: 6616 bnes 5e14a <rtems_rfs_symlink+0x40> <== NOT EXECUTED
printf (" link:");
for (c = 0; c < link_length; c++)
printf ("%c", link[c]);
}
if (link_length >= rtems_rfs_fs_block_size (fs))
5e134: b6ac 0008 cmpl %a4@(8),%d3 <== NOT EXECUTED
5e138: 6500 0088 bcsw 5e1c2 <rtems_rfs_symlink+0xb8> <== NOT EXECUTED
return ENAMETOOLONG;
5e13c: 745b moveq #91,%d2 <== NOT EXECUTED
rtems_rfs_inode_set_block_offset (&inode, link_length);
rc = rtems_rfs_inode_close (fs, &inode);
return rc;
}
5e13e: 2002 movel %d2,%d0 <== NOT EXECUTED
5e140: 4cee 3c3c ff5c moveml %fp@(-164),%d2-%d5/%a2-%a5 <== NOT EXECUTED
5e146: 4e5e unlk %fp <== NOT EXECUTED
5e148: 4e75 rts <== NOT EXECUTED
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))
{
int c;
printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);
5e14a: 2f2e 0024 movel %fp@(36),%sp@- <== NOT EXECUTED
5e14e: 4bf9 0006 16ec lea 616ec <printf>,%a5 <== NOT EXECUTED
5e154: 4879 0007 355d pea 7355d <CSWTCH.2+0x1495> <== NOT EXECUTED
5e15a: 4e95 jsr %a5@ <== NOT EXECUTED
for (c = 0; c < length; c++)
5e15c: 508f addql #8,%sp <== NOT EXECUTED
5e15e: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
5e162: 6f20 bles 5e184 <rtems_rfs_symlink+0x7a> <== NOT EXECUTED
return rc;
}
int
rtems_rfs_symlink (rtems_rfs_file_system* fs,
5e164: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
5e168: d4ae 0010 addl %fp@(16),%d2 <== NOT EXECUTED
5e16c: 47f9 0006 187c lea 6187c <putchar>,%a3 <== NOT EXECUTED
5e172: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))
{
int c;
printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);
for (c = 0; c < length; c++)
printf ("%c", name[c]);
5e176: 101a moveb %a2@+,%d0 <== NOT EXECUTED
5e178: 49c0 extbl %d0 <== NOT EXECUTED
5e17a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e17c: 4e93 jsr %a3@ <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))
{
int c;
printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);
for (c = 0; c < length; c++)
5e17e: 588f addql #4,%sp <== NOT EXECUTED
5e180: b48a cmpl %a2,%d2 <== NOT EXECUTED
5e182: 66f2 bnes 5e176 <rtems_rfs_symlink+0x6c> <== NOT EXECUTED
printf ("%c", name[c]);
printf (" link:");
5e184: 4879 0007 3582 pea 73582 <CSWTCH.2+0x14ba> <== NOT EXECUTED
5e18a: 4e95 jsr %a5@ <== NOT EXECUTED
for (c = 0; c < link_length; c++)
5e18c: 588f addql #4,%sp <== NOT EXECUTED
5e18e: 4a83 tstl %d3 <== NOT EXECUTED
5e190: 6fa2 bles 5e134 <rtems_rfs_symlink+0x2a> <== NOT EXECUTED
return rc;
}
int
rtems_rfs_symlink (rtems_rfs_file_system* fs,
5e192: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED
5e196: 47f9 0006 187c lea 6187c <putchar>,%a3 <== NOT EXECUTED
5e19c: d483 addl %d3,%d2 <== NOT EXECUTED
5e19e: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf (" link:");
for (c = 0; c < link_length; c++)
printf ("%c", link[c]);
5e1a2: 101a moveb %a2@+,%d0 <== NOT EXECUTED
5e1a4: 49c0 extbl %d0 <== NOT EXECUTED
5e1a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e1a8: 4e93 jsr %a3@ <== NOT EXECUTED
int c;
printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf (" link:");
for (c = 0; c < link_length; c++)
5e1aa: 588f addql #4,%sp <== NOT EXECUTED
5e1ac: b48a cmpl %a2,%d2 <== NOT EXECUTED
5e1ae: 6784 beqs 5e134 <rtems_rfs_symlink+0x2a> <== NOT EXECUTED
printf ("%c", link[c]);
5e1b0: 101a moveb %a2@+,%d0 <== NOT EXECUTED
5e1b2: 49c0 extbl %d0 <== NOT EXECUTED
5e1b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e1b6: 4e93 jsr %a3@ <== NOT EXECUTED
int c;
printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);
for (c = 0; c < length; c++)
printf ("%c", name[c]);
printf (" link:");
for (c = 0; c < link_length; c++)
5e1b8: 588f addql #4,%sp <== NOT EXECUTED
5e1ba: b48a cmpl %a2,%d2 <== NOT EXECUTED
5e1bc: 66e4 bnes 5e1a2 <rtems_rfs_symlink+0x98> <== NOT EXECUTED
5e1be: 6000 ff74 braw 5e134 <rtems_rfs_symlink+0x2a> <== NOT EXECUTED
}
if (link_length >= rtems_rfs_fs_block_size (fs))
return ENAMETOOLONG;
rc = rtems_rfs_inode_create (fs, parent, name, strlen (name),
5e1c2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5e1c6: 4eb9 0006 26b4 jsr 626b4 <strlen> <== NOT EXECUTED
5e1cc: 588f addql #4,%sp <== NOT EXECUTED
5e1ce: 486e ff7e pea %fp@(-130) <== NOT EXECUTED
5e1d2: 3f05 movew %d5,%sp@- <== NOT EXECUTED
5e1d4: 4267 clrw %sp@- <== NOT EXECUTED
5e1d6: 3f04 movew %d4,%sp@- <== NOT EXECUTED
5e1d8: 4267 clrw %sp@- <== NOT EXECUTED
5e1da: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5e1de: 2f3c 0000 a1ff movel #41471,%sp@- <== NOT EXECUTED
5e1e4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e1e6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5e1ea: 2f2e 0024 movel %fp@(36),%sp@- <== NOT EXECUTED
5e1ee: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e1f0: 4eb9 0005 188e jsr 5188e <rtems_rfs_inode_create> <== NOT EXECUTED
RTEMS_RFS_S_SYMLINK,
1, uid, gid, &ino);
if (rc > 0)
5e1f6: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
}
if (link_length >= rtems_rfs_fs_block_size (fs))
return ENAMETOOLONG;
rc = rtems_rfs_inode_create (fs, parent, name, strlen (name),
5e1fa: 2400 movel %d0,%d2 <== NOT EXECUTED
RTEMS_RFS_S_SYMLINK,
1, uid, gid, &ino);
if (rc > 0)
5e1fc: 6e00 ff40 bgtw 5e13e <rtems_rfs_symlink+0x34> <== NOT EXECUTED
return rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5e200: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5e204: 280e movel %fp,%d4 <== NOT EXECUTED
5e206: 0684 ffff ff90 addil #-112,%d4 <== NOT EXECUTED
5e20c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e20e: 2f2e ff7e movel %fp@(-130),%sp@- <== NOT EXECUTED
5e212: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e214: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc > 0)
5e21a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
RTEMS_RFS_S_SYMLINK,
1, uid, gid, &ino);
if (rc > 0)
return rc;
rc = rtems_rfs_inode_open (fs, ino, &inode, true);
5e21e: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e220: 6e00 ff1c bgtw 5e13e <rtems_rfs_symlink+0x34> <== NOT EXECUTED
/*
* If the link length is less than the length of data union in the inode
* place the link into the data area else allocate a block and write the link
* to that.
*/
if (link_length < RTEMS_RFS_INODE_DATA_NAME_SIZE)
5e224: 7013 moveq #19,%d0 <== NOT EXECUTED
5e226: b083 cmpl %d3,%d0 <== NOT EXECUTED
5e228: 6500 0086 bcsw 5e2b0 <rtems_rfs_symlink+0x1a6> <== NOT EXECUTED
{
memset (inode.node->data.name, 0, RTEMS_RFS_INODE_DATA_NAME_SIZE);
5e22c: 202e ff9c movel %fp@(-100),%d0 <== NOT EXECUTED
5e230: 0680 0000 001c addil #28,%d0 <== NOT EXECUTED
5e236: 2040 moveal %d0,%a0 <== NOT EXECUTED
5e238: 4298 clrl %a0@+ <== NOT EXECUTED
5e23a: 4298 clrl %a0@+ <== NOT EXECUTED
5e23c: 4298 clrl %a0@+ <== NOT EXECUTED
5e23e: 4298 clrl %a0@+ <== NOT EXECUTED
5e240: 4290 clrl %a0@ <== NOT EXECUTED
memcpy (inode.node->data.name, link, link_length);
5e242: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e244: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5e248: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e24a: 4eb9 0006 1438 jsr 61438 <memcpy> <== NOT EXECUTED
* @param block_count The block count.
*/
static inline void
rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_count)
{
rtems_rfs_write_u32 (&handle->node->block_count, block_count);
5e250: 206e ff9c moveal %fp@(-100),%a0 <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5e254: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* @param block_count The block count.
*/
static inline void
rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_count)
{
rtems_rfs_write_u32 (&handle->node->block_count, block_count);
5e258: 4200 clrb %d0 <== NOT EXECUTED
5e25a: 1140 000c moveb %d0,%a0@(12) <== NOT EXECUTED
5e25e: 206e ff9c moveal %fp@(-100),%a0 <== NOT EXECUTED
5e262: 1140 000d moveb %d0,%a0@(13) <== NOT EXECUTED
5e266: 206e ff9c moveal %fp@(-100),%a0 <== NOT EXECUTED
5e26a: 1140 000e moveb %d0,%a0@(14) <== NOT EXECUTED
5e26e: 206e ff9c moveal %fp@(-100),%a0 <== NOT EXECUTED
5e272: 1140 000f moveb %d0,%a0@(15) <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_block_offset (rtems_rfs_inode_handle* handle,
uint16_t block_offset)
{
rtems_rfs_write_u16 (&handle->node->block_offset, block_offset);
5e276: 206e ff9c moveal %fp@(-100),%a0 <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
return rc;
}
}
rtems_rfs_inode_set_block_offset (&inode, link_length);
5e27a: 0283 0000 ffff andil #65535,%d3 <== NOT EXECUTED
5e280: 2003 movel %d3,%d0 <== NOT EXECUTED
5e282: e088 lsrl #8,%d0 <== NOT EXECUTED
5e284: 1140 000a moveb %d0,%a0@(10) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5e288: 7001 moveq #1,%d0 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_block_offset (rtems_rfs_inode_handle* handle,
uint16_t block_offset)
{
rtems_rfs_write_u16 (&handle->node->block_offset, block_offset);
5e28a: 206e ff9c moveal %fp@(-100),%a0 <== NOT EXECUTED
5e28e: 1143 000b moveb %d3,%a0@(11) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5e292: 1d40 ffa0 moveb %d0,%fp@(-96) <== NOT EXECUTED
rc = rtems_rfs_inode_close (fs, &inode);
5e296: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e298: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e29a: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5e2a0: 508f addql #8,%sp <== NOT EXECUTED
5e2a2: 2400 movel %d0,%d2 <== NOT EXECUTED
return rc;
}
5e2a4: 2002 movel %d2,%d0 <== NOT EXECUTED
5e2a6: 4cee 3c3c ff5c moveml %fp@(-164),%d2-%d5/%a2-%a5 <== NOT EXECUTED
5e2ac: 4e5e unlk %fp <== NOT EXECUTED
5e2ae: 4e75 rts <== NOT EXECUTED
rtems_rfs_block_map map;
rtems_rfs_block_no block;
rtems_rfs_buffer_handle buffer;
uint8_t* data;
rc = rtems_rfs_block_map_open (fs, &inode, &map);
5e2b0: 2a0e movel %fp,%d5 <== NOT EXECUTED
5e2b2: 0685 ffff ffb6 addil #-74,%d5 <== NOT EXECUTED
5e2b8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5e2ba: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e2bc: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e2be: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5e2c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_rfs_block_map map;
rtems_rfs_block_no block;
rtems_rfs_buffer_handle buffer;
uint8_t* data;
rc = rtems_rfs_block_map_open (fs, &inode, &map);
5e2c8: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e2ca: 6f18 bles 5e2e4 <rtems_rfs_symlink+0x1da> <== NOT EXECUTED
}
rc = rtems_rfs_block_map_close (fs, &map);
if (rc > 0)
{
rtems_rfs_inode_close (fs, &inode);
5e2cc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e2ce: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e2d0: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5e2d6: 508f addql #8,%sp <== NOT EXECUTED
rtems_rfs_inode_set_block_offset (&inode, link_length);
rc = rtems_rfs_inode_close (fs, &inode);
return rc;
}
5e2d8: 2002 movel %d2,%d0 <== NOT EXECUTED
5e2da: 4cee 3c3c ff5c moveml %fp@(-164),%d2-%d5/%a2-%a5 <== NOT EXECUTED
5e2e0: 4e5e unlk %fp <== NOT EXECUTED
5e2e2: 4e75 rts <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_block_map_grow (fs, &map, 1, &block);
5e2e4: 486e ff82 pea %fp@(-126) <== NOT EXECUTED
5e2e8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5e2ec: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5e2ee: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e2f0: 4eb9 0005 97a8 jsr 597a8 <rtems_rfs_block_map_grow> <== NOT EXECUTED
if (rc > 0)
5e2f6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_block_map_grow (fs, &map, 1, &block);
5e2fa: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e2fc: 6f24 bles 5e322 <rtems_rfs_symlink+0x218> <== NOT EXECUTED
}
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false);
if (rc > 0)
{
rtems_rfs_block_map_close (fs, &map);
5e2fe: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5e300: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e302: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
5e308: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e30a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e30c: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5e312: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_inode_set_block_offset (&inode, link_length);
rc = rtems_rfs_inode_close (fs, &inode);
return rc;
}
5e316: 2002 movel %d2,%d0 <== NOT EXECUTED
5e318: 4cee 3c3c ff5c moveml %fp@(-164),%d2-%d5/%a2-%a5 <== NOT EXECUTED
5e31e: 4e5e unlk %fp <== NOT EXECUTED
5e320: 4e75 rts <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false);
5e322: 42a7 clrl %sp@- <== NOT EXECUTED
5e324: 2f2e ff82 movel %fp@(-126),%sp@- <== NOT EXECUTED
5e328: 45ee ff86 lea %fp@(-122),%a2 <== NOT EXECUTED
5e32c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5e32e: 4200 clrb %d0 <== NOT EXECUTED
5e330: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e332: 1d40 ff86 moveb %d0,%fp@(-122) <== NOT EXECUTED
handle->bnum = 0;
5e336: 42ae ff88 clrl %fp@(-120) <== NOT EXECUTED
handle->buffer = NULL;
5e33a: 42ae ff8c clrl %fp@(-116) <== NOT EXECUTED
5e33e: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request> <== NOT EXECUTED
if (rc > 0)
5e344: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false);
5e348: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e34a: 6eb2 bgts 5e2fe <rtems_rfs_symlink+0x1f4> <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
data = rtems_rfs_buffer_data (&buffer);
5e34c: 206e ff8c moveal %fp@(-116),%a0 <== NOT EXECUTED
5e350: 2428 001a movel %a0@(26),%d2 <== NOT EXECUTED
memset (data, 0xff, rtems_rfs_fs_block_size (fs));
5e354: 2f2c 0008 movel %a4@(8),%sp@- <== NOT EXECUTED
5e358: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
5e35c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5e35e: 4eb9 0006 159c jsr 6159c <memset> <== NOT EXECUTED
memcpy (data, link, link_length);
5e364: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e366: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5e36a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5e36c: 4eb9 0006 1438 jsr 61438 <memcpy> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5e372: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5e374: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e376: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_block_map_close (fs, &map);
5e37c: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
5e380: 2e85 movel %d5,%sp@ <== NOT EXECUTED
handle->dirty = false;
5e382: 4200 clrb %d0 <== NOT EXECUTED
5e384: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e386: 1d40 ff86 moveb %d0,%fp@(-122) <== NOT EXECUTED
handle->bnum = 0;
5e38a: 42ae ff88 clrl %fp@(-120) <== NOT EXECUTED
handle->buffer = NULL;
5e38e: 42ae ff8c clrl %fp@(-116) <== NOT EXECUTED
5e392: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
if (rc > 0)
5e398: 508f addql #8,%sp <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_block_map_close (fs, &map);
5e39a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e39c: 6f00 fed8 blew 5e276 <rtems_rfs_symlink+0x16c> <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
5e3a0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e3a2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
5e3a4: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5e3aa: 508f addql #8,%sp <== NOT EXECUTED
5e3ac: 6000 ff2a braw 5e2d8 <rtems_rfs_symlink+0x1ce> <== NOT EXECUTED
0005e3b0 <rtems_rfs_symlink_read>:
rtems_rfs_symlink_read (rtems_rfs_file_system* fs,
rtems_rfs_ino link,
char* path,
size_t size,
size_t* length)
{
5e3b0: 4e56 ff70 linkw %fp,#-144 <== NOT EXECUTED
5e3b4: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
rtems_rfs_inode_handle inode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK_READ))
5e3b8: 42a7 clrl %sp@- <== NOT EXECUTED
5e3ba: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
rtems_rfs_symlink_read (rtems_rfs_file_system* fs,
rtems_rfs_ino link,
char* path,
size_t size,
size_t* length)
{
5e3be: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
rtems_rfs_inode_handle inode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK_READ))
5e3c2: 4eb9 0005 2ef8 jsr 52ef8 <rtems_rfs_trace> <== NOT EXECUTED
5e3c8: 508f addql #8,%sp <== NOT EXECUTED
5e3ca: 4a00 tstb %d0 <== NOT EXECUTED
5e3cc: 6658 bnes 5e426 <rtems_rfs_symlink_read+0x76> <== NOT EXECUTED
printf ("rtems-rfs: symlink-read: link:%" PRIu32 "\n", link);
rc = rtems_rfs_inode_open (fs, link, &inode, true);
5e3ce: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5e3d2: 280e movel %fp,%d4 <== NOT EXECUTED
5e3d4: 0684 ffff ff90 addil #-112,%d4 <== NOT EXECUTED
5e3da: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e3dc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5e3e0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e3e2: 4eb9 0005 12b4 jsr 512b4 <rtems_rfs_inode_open> <== NOT EXECUTED
if (rc)
5e3e8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK_READ))
printf ("rtems-rfs: symlink-read: link:%" PRIu32 "\n", link);
rc = rtems_rfs_inode_open (fs, link, &inode, true);
5e3ec: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
5e3ee: 662a bnes 5e41a <rtems_rfs_symlink_read+0x6a> <== NOT EXECUTED
return rc;
if (!RTEMS_RFS_S_ISLNK (rtems_rfs_inode_get_mode (&inode)))
5e3f0: 206e ff9c moveal %fp@(-100),%a0 <== NOT EXECUTED
* @return uint16_t The mode.
*/
static inline uint16_t
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->mode);
5e3f4: 4280 clrl %d0 <== NOT EXECUTED
5e3f6: 1028 0002 moveb %a0@(2),%d0 <== NOT EXECUTED
5e3fa: e188 lsll #8,%d0 <== NOT EXECUTED
5e3fc: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
5e402: 0c80 0000 a000 cmpil #40960,%d0 <== NOT EXECUTED
5e408: 6730 beqs 5e43a <rtems_rfs_symlink_read+0x8a> <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
5e40a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
return EINVAL;
5e40c: 143c 0016 moveb #22,%d2 <== NOT EXECUTED
if (rc)
return rc;
if (!RTEMS_RFS_S_ISLNK (rtems_rfs_inode_get_mode (&inode)))
{
rtems_rfs_inode_close (fs, &inode);
5e410: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e412: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5e418: 508f addql #8,%sp <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (fs, &inode);
return rc;
}
5e41a: 2002 movel %d2,%d0 <== NOT EXECUTED
5e41c: 4cee 003c ff70 moveml %fp@(-144),%d2-%d5 <== NOT EXECUTED
5e422: 4e5e unlk %fp <== NOT EXECUTED
5e424: 4e75 rts <== NOT EXECUTED
{
rtems_rfs_inode_handle inode;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK_READ))
printf ("rtems-rfs: symlink-read: link:%" PRIu32 "\n", link);
5e426: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5e42a: 4879 0007 3589 pea 73589 <CSWTCH.2+0x14c1> <== NOT EXECUTED
5e430: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5e436: 508f addql #8,%sp <== NOT EXECUTED
5e438: 6094 bras 5e3ce <rtems_rfs_symlink_read+0x1e> <== NOT EXECUTED
* @return uint32_t The block offset.
*/
static inline uint16_t
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->block_offset);
5e43a: 4280 clrl %d0 <== NOT EXECUTED
5e43c: 1028 000a moveb %a0@(10),%d0 <== NOT EXECUTED
5e440: 4281 clrl %d1 <== NOT EXECUTED
5e442: 1228 000b moveb %a0@(11),%d1 <== NOT EXECUTED
5e446: e188 lsll #8,%d0 <== NOT EXECUTED
*length = rtems_rfs_inode_get_block_offset (&inode);
if (size < *length)
{
*length = size;
5e448: 226e 0018 moveal %fp@(24),%a1 <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
return EINVAL;
}
*length = rtems_rfs_inode_get_block_offset (&inode);
5e44c: 8081 orl %d1,%d0 <== NOT EXECUTED
if (size < *length)
5e44e: b0ae 0014 cmpl %fp@(20),%d0 <== NOT EXECUTED
5e452: 6200 0094 bhiw 5e4e8 <rtems_rfs_symlink_read+0x138> <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
return EINVAL;
}
*length = rtems_rfs_inode_get_block_offset (&inode);
5e456: 2280 movel %d0,%a1@ <== NOT EXECUTED
* @return uint32_t The block count.
*/
static inline uint32_t
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u32 (&handle->node->block_count);
5e458: 4280 clrl %d0 <== NOT EXECUTED
5e45a: 4281 clrl %d1 <== NOT EXECUTED
5e45c: 1028 000c moveb %a0@(12),%d0 <== NOT EXECUTED
5e460: 1228 000d moveb %a0@(13),%d1 <== NOT EXECUTED
5e464: 7418 moveq #24,%d2 <== NOT EXECUTED
5e466: 4841 swap %d1 <== NOT EXECUTED
5e468: 4241 clrw %d1 <== NOT EXECUTED
5e46a: e5a8 lsll %d2,%d0 <== NOT EXECUTED
5e46c: 4282 clrl %d2 <== NOT EXECUTED
5e46e: 1428 000f moveb %a0@(15),%d2 <== NOT EXECUTED
5e472: 8081 orl %d1,%d0 <== NOT EXECUTED
5e474: 4281 clrl %d1 <== NOT EXECUTED
5e476: 1228 000e moveb %a0@(14),%d1 <== NOT EXECUTED
5e47a: 8082 orl %d2,%d0 <== NOT EXECUTED
5e47c: e189 lsll #8,%d1 <== NOT EXECUTED
5e47e: 8081 orl %d1,%d0 <== NOT EXECUTED
if (size < *length)
{
*length = size;
}
if (rtems_rfs_inode_get_block_count (&inode) == 0)
5e480: 6632 bnes 5e4b4 <rtems_rfs_symlink_read+0x104> <== NOT EXECUTED
{
memcpy (path, inode.node->data.name, *length);
5e482: 226e 0018 moveal %fp@(24),%a1 <== NOT EXECUTED
5e486: 2f11 movel %a1@,%sp@- <== NOT EXECUTED
5e488: 4868 001c pea %a0@(28) <== NOT EXECUTED
5e48c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5e490: 4eb9 0006 1438 jsr 61438 <memcpy> <== NOT EXECUTED
5e496: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
return rc;
}
}
rc = rtems_rfs_inode_close (fs, &inode);
5e49a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e49c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e49e: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5e4a4: 508f addql #8,%sp <== NOT EXECUTED
5e4a6: 2400 movel %d0,%d2 <== NOT EXECUTED
return rc;
}
5e4a8: 2002 movel %d2,%d0 <== NOT EXECUTED
5e4aa: 4cee 003c ff70 moveml %fp@(-144),%d2-%d5 <== NOT EXECUTED
5e4b0: 4e5e unlk %fp <== NOT EXECUTED
5e4b2: 4e75 rts <== NOT EXECUTED
rtems_rfs_block_map map;
rtems_rfs_block_no block;
rtems_rfs_buffer_handle buffer;
char* data;
rc = rtems_rfs_block_map_open (fs, &inode, &map);
5e4b4: 2a0e movel %fp,%d5 <== NOT EXECUTED
5e4b6: 0685 ffff ffb6 addil #-74,%d5 <== NOT EXECUTED
5e4bc: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5e4be: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e4c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e4c2: 4eb9 0005 9208 jsr 59208 <rtems_rfs_block_map_open> <== NOT EXECUTED
if (rc > 0)
5e4c8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_rfs_block_map map;
rtems_rfs_block_no block;
rtems_rfs_buffer_handle buffer;
char* data;
rc = rtems_rfs_block_map_open (fs, &inode, &map);
5e4cc: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e4ce: 6f20 bles 5e4f0 <rtems_rfs_symlink_read+0x140> <== NOT EXECUTED
}
rc = rtems_rfs_block_map_close (fs, &map);
if (rc > 0)
{
rtems_rfs_inode_close (fs, &inode);
5e4d0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e4d2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e4d4: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5e4da: 508f addql #8,%sp <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (fs, &inode);
return rc;
}
5e4dc: 2002 movel %d2,%d0 <== NOT EXECUTED
5e4de: 4cee 003c ff70 moveml %fp@(-144),%d2-%d5 <== NOT EXECUTED
5e4e4: 4e5e unlk %fp <== NOT EXECUTED
5e4e6: 4e75 rts <== NOT EXECUTED
*length = rtems_rfs_inode_get_block_offset (&inode);
if (size < *length)
{
*length = size;
5e4e8: 22ae 0014 movel %fp@(20),%a1@ <== NOT EXECUTED
5e4ec: 6000 ff6a braw 5e458 <rtems_rfs_symlink_read+0xa8> <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);
5e4f0: 486e ff82 pea %fp@(-126) <== NOT EXECUTED
5e4f4: 42a7 clrl %sp@- <== NOT EXECUTED
5e4f6: 42a7 clrl %sp@- <== NOT EXECUTED
5e4f8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5e4fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e4fc: 4eb9 0005 96f8 jsr 596f8 <rtems_rfs_block_map_seek> <== NOT EXECUTED
if (rc > 0)
5e502: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);
5e506: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e508: 6f24 bles 5e52e <rtems_rfs_symlink_read+0x17e> <== NOT EXECUTED
}
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false);
if (rc > 0)
{
rtems_rfs_block_map_close (fs, &map);
5e50a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5e50c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e50e: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
5e514: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e516: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e518: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5e51e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
rc = rtems_rfs_inode_close (fs, &inode);
return rc;
}
5e522: 2002 movel %d2,%d0 <== NOT EXECUTED
5e524: 4cee 003c ff70 moveml %fp@(-144),%d2-%d5 <== NOT EXECUTED
5e52a: 4e5e unlk %fp <== NOT EXECUTED
5e52c: 4e75 rts <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false);
5e52e: 42a7 clrl %sp@- <== NOT EXECUTED
5e530: 2f2e ff82 movel %fp@(-126),%sp@- <== NOT EXECUTED
5e534: 486e ff86 pea %fp@(-122) <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
handle->dirty = false;
5e538: 4200 clrb %d0 <== NOT EXECUTED
5e53a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e53c: 1d40 ff86 moveb %d0,%fp@(-122) <== NOT EXECUTED
handle->bnum = 0;
5e540: 42ae ff88 clrl %fp@(-120) <== NOT EXECUTED
handle->buffer = NULL;
5e544: 42ae ff8c clrl %fp@(-116) <== NOT EXECUTED
5e548: 4eb9 0005 a19a jsr 5a19a <rtems_rfs_buffer_handle_request> <== NOT EXECUTED
if (rc > 0)
5e54e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false);
5e552: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e554: 6eb4 bgts 5e50a <rtems_rfs_symlink_read+0x15a> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &inode);
return rc;
}
data = rtems_rfs_buffer_data (&buffer);
memcpy (path, data, *length);
5e556: 206e 0018 moveal %fp@(24),%a0 <== NOT EXECUTED
5e55a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
data = rtems_rfs_buffer_data (&buffer);
5e55c: 206e ff8c moveal %fp@(-116),%a0 <== NOT EXECUTED
memcpy (path, data, *length);
5e560: 2f28 001a movel %a0@(26),%sp@- <== NOT EXECUTED
5e564: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5e568: 4eb9 0006 1438 jsr 61438 <memcpy> <== NOT EXECUTED
*/
static inline int
rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
rtems_rfs_buffer_handle* handle)
{
rtems_rfs_buffer_handle_release (fs, handle);
5e56e: 486e ff86 pea %fp@(-122) <== NOT EXECUTED
5e572: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e574: 4eb9 0005 9fc0 jsr 59fc0 <rtems_rfs_buffer_handle_release> <== NOT EXECUTED
handle->dirty = false;
5e57a: 4200 clrb %d0 <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_block_map_close (fs, &map);
5e57c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5e57e: 1d40 ff86 moveb %d0,%fp@(-122) <== NOT EXECUTED
5e582: 2f03 movel %d3,%sp@- <== NOT EXECUTED
handle->bnum = 0;
5e584: 42ae ff88 clrl %fp@(-120) <== NOT EXECUTED
handle->buffer = NULL;
5e588: 42ae ff8c clrl %fp@(-116) <== NOT EXECUTED
5e58c: 4eb9 0005 9394 jsr 59394 <rtems_rfs_block_map_close> <== NOT EXECUTED
if (rc > 0)
5e592: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
rtems_rfs_block_map_close (fs, &map);
rtems_rfs_inode_close (fs, &inode);
return rc;
}
rc = rtems_rfs_block_map_close (fs, &map);
5e596: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e598: 6f00 ff00 blew 5e49a <rtems_rfs_symlink_read+0xea> <== NOT EXECUTED
{
rtems_rfs_inode_close (fs, &inode);
5e59c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e59e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e5a0: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5e5a6: 508f addql #8,%sp <== NOT EXECUTED
5e5a8: 6000 ff32 braw 5e4dc <rtems_rfs_symlink_read+0x12c> <== NOT EXECUTED
00052f4e <rtems_rfs_trace_clear_mask>:
rtems_rfs_trace_mask
rtems_rfs_trace_clear_mask (rtems_rfs_trace_mask mask)
{
52f4e: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
52f52: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
rtems_rfs_trace_flags &= ~mask;
52f56: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED
52f5a: 4685 notl %d5 <== NOT EXECUTED
52f5c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
52f60: 4684 notl %d4 <== NOT EXECUTED
}
rtems_rfs_trace_mask
rtems_rfs_trace_clear_mask (rtems_rfs_trace_mask mask)
{
rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
52f62: 2639 0008 50b8 movel 850b8 <rtems_rfs_trace_flags>,%d3 <== NOT EXECUTED
rtems_rfs_trace_flags &= ~mask;
return state;
}
52f68: 2003 movel %d3,%d0 <== NOT EXECUTED
}
rtems_rfs_trace_mask
rtems_rfs_trace_clear_mask (rtems_rfs_trace_mask mask)
{
rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
52f6a: 2439 0008 50bc movel 850bc <rtems_rfs_trace_flags+0x4>,%d2 <== NOT EXECUTED
rtems_rfs_trace_flags &= ~mask;
return state;
}
52f70: 2202 movel %d2,%d1 <== NOT EXECUTED
rtems_rfs_trace_mask
rtems_rfs_trace_clear_mask (rtems_rfs_trace_mask mask)
{
rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
rtems_rfs_trace_flags &= ~mask;
52f72: ca83 andl %d3,%d5 <== NOT EXECUTED
52f74: c882 andl %d2,%d4 <== NOT EXECUTED
52f76: 23c5 0008 50b8 movel %d5,850b8 <rtems_rfs_trace_flags> <== NOT EXECUTED
52f7c: 23c4 0008 50bc movel %d4,850bc <rtems_rfs_trace_flags+0x4> <== NOT EXECUTED
return state;
}
52f82: 4cd7 003c moveml %sp@,%d2-%d5 <== NOT EXECUTED
52f86: 4e5e unlk %fp <== NOT EXECUTED
00052f1a <rtems_rfs_trace_set_mask>:
rtems_rfs_trace_mask
rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask)
{
52f1a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
52f1e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
52f20: 2639 0008 50b8 movel 850b8 <rtems_rfs_trace_flags>,%d3 <== NOT EXECUTED
rtems_rfs_trace_flags |= mask;
return state;
}
52f26: 2003 movel %d3,%d0 <== NOT EXECUTED
return result;
}
rtems_rfs_trace_mask
rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask)
{
52f28: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
52f2a: 2439 0008 50bc movel 850bc <rtems_rfs_trace_flags+0x4>,%d2 <== NOT EXECUTED
rtems_rfs_trace_flags |= mask;
return state;
}
52f30: 2202 movel %d2,%d1 <== NOT EXECUTED
rtems_rfs_trace_mask
rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask)
{
rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
rtems_rfs_trace_flags |= mask;
52f32: 84ae 000c orl %fp@(12),%d2 <== NOT EXECUTED
52f36: 86ae 0008 orl %fp@(8),%d3 <== NOT EXECUTED
52f3a: 23c2 0008 50bc movel %d2,850bc <rtems_rfs_trace_flags+0x4> <== NOT EXECUTED
return state;
}
52f40: 241f movel %sp@+,%d2 <== NOT EXECUTED
rtems_rfs_trace_mask
rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask)
{
rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
rtems_rfs_trace_flags |= mask;
52f42: 23c3 0008 50b8 movel %d3,850b8 <rtems_rfs_trace_flags> <== NOT EXECUTED
return state;
}
52f48: 261f movel %sp@+,%d3 <== NOT EXECUTED
52f4a: 4e5e unlk %fp <== NOT EXECUTED
00052f8a <rtems_rfs_trace_shell_command>:
int
rtems_rfs_trace_shell_command (int argc, char *argv[])
{
52f8a: 4e56 ff30 linkw %fp,#-208 <== NOT EXECUTED
52f8e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
const char* table[] =
52f92: 4878 009c pea 9c <DBL_MANT_DIG+0x67> <== NOT EXECUTED
52f96: 4879 0007 1e96 pea 71e96 <rtems_rfs_rtems_eval_config+0x272><== NOT EXECUTED
52f9c: 486e ff64 pea %fp@(-156) <== NOT EXECUTED
52fa0: 4eb9 0006 1438 jsr 61438 <memcpy> <== NOT EXECUTED
rtems_rfs_trace_mask clear_value = 0;
bool set = true;
int arg;
int t;
for (arg = 1; arg < argc; arg++)
52fa6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
52faa: 7001 moveq #1,%d0 <== NOT EXECUTED
52fac: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
52fb0: 6c00 012a bgew 530dc <rtems_rfs_trace_shell_command+0x152><== NOT EXECUTED
{
if (argv[arg][0] == '-')
52fb4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
52fb8: 722d moveq #45,%d1 <== NOT EXECUTED
52fba: 2468 0004 moveal %a0@(4),%a2 <== NOT EXECUTED
52fbe: 1012 moveb %a2@,%d0 <== NOT EXECUTED
52fc0: 49c0 extbl %d0 <== NOT EXECUTED
52fc2: b280 cmpl %d0,%d1 <== NOT EXECUTED
52fc4: 6700 00a0 beqw 53066 <rtems_rfs_trace_shell_command+0xdc><== NOT EXECUTED
rtems_rfs_trace_flags &= ~mask;
return state;
}
int
rtems_rfs_trace_shell_command (int argc, char *argv[])
52fc8: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
52fcc: 5081 addql #8,%d1 <== NOT EXECUTED
52fce: 47f9 0006 20b4 lea 620b4 <strcmp>,%a3 <== NOT EXECUTED
rtems_rfs_trace_mask clear_value = 0;
bool set = true;
int arg;
int t;
for (arg = 1; arg < argc; arg++)
52fd4: 7801 moveq #1,%d4 <== NOT EXECUTED
rtems_rfs_trace_flags &= ~mask;
return state;
}
int
rtems_rfs_trace_shell_command (int argc, char *argv[])
52fd6: 2d41 ff60 movel %d1,%fp@(-160) <== NOT EXECUTED
"file-close",
"file-io",
"file-set"
};
rtems_rfs_trace_mask set_value = 0;
52fda: 4280 clrl %d0 <== NOT EXECUTED
52fdc: 4281 clrl %d1 <== NOT EXECUTED
52fde: 2439 0008 50b8 movel 850b8 <rtems_rfs_trace_flags>,%d2 <== NOT EXECUTED
52fe4: 2639 0008 50bc movel 850bc <rtems_rfs_trace_flags+0x4>,%d3 <== NOT EXECUTED
rtems_rfs_trace_mask clear_value = 0;
bool set = true;
52fea: 7a01 moveq #1,%d5 <== NOT EXECUTED
"file-io",
"file-set"
};
rtems_rfs_trace_mask set_value = 0;
rtems_rfs_trace_mask clear_value = 0;
52fec: 4286 clrl %d6 <== NOT EXECUTED
52fee: 4287 clrl %d7 <== NOT EXECUTED
"file-close",
"file-io",
"file-set"
};
rtems_rfs_trace_mask set_value = 0;
52ff0: 2d40 ff58 movel %d0,%fp@(-168) <== NOT EXECUTED
52ff4: 2d41 ff5c movel %d1,%fp@(-164) <== NOT EXECUTED
return 1;
}
}
else
{
if (strcmp (argv[arg], "set") == 0)
52ff8: 4879 0007 1e92 pea 71e92 <rtems_rfs_rtems_eval_config+0x26e><== NOT EXECUTED
52ffe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
53000: 4e93 jsr %a3@ <== NOT EXECUTED
53002: 508f addql #8,%sp <== NOT EXECUTED
53004: 4a80 tstl %d0 <== NOT EXECUTED
53006: 6602 bnes 5300a <rtems_rfs_trace_shell_command+0x80><== NOT EXECUTED
set = true;
53008: 7a01 moveq #1,%d5 <== NOT EXECUTED
if (strcmp (argv[arg], "clear") == 0)
5300a: 4879 0007 1cb7 pea 71cb7 <rtems_rfs_rtems_eval_config+0x93><== NOT EXECUTED
53010: 2f0a movel %a2,%sp@- <== NOT EXECUTED
53012: 4e93 jsr %a3@ <== NOT EXECUTED
53014: 508f addql #8,%sp <== NOT EXECUTED
53016: 4a80 tstl %d0 <== NOT EXECUTED
53018: 667e bnes 53098 <rtems_rfs_trace_shell_command+0x10e><== NOT EXECUTED
5301a: 2206 movel %d6,%d1 <== NOT EXECUTED
5301c: 2007 movel %d7,%d0 <== NOT EXECUTED
5301e: 4681 notl %d1 <== NOT EXECUTED
53020: 4680 notl %d0 <== NOT EXECUTED
53022: 2241 moveal %d1,%a1 <== NOT EXECUTED
53024: 2440 moveal %d0,%a2 <== NOT EXECUTED
53026: 222e ff58 movel %fp@(-168),%d1 <== NOT EXECUTED
5302a: 202e ff5c movel %fp@(-164),%d0 <== NOT EXECUTED
5302e: 8282 orl %d2,%d1 <== NOT EXECUTED
53030: 8083 orl %d3,%d0 <== NOT EXECUTED
53032: 2409 movel %a1,%d2 <== NOT EXECUTED
53034: 260a movel %a2,%d3 <== NOT EXECUTED
set = false;
53036: 4205 clrb %d5 <== NOT EXECUTED
53038: c481 andl %d1,%d2 <== NOT EXECUTED
5303a: c680 andl %d0,%d3 <== NOT EXECUTED
rtems_rfs_trace_mask clear_value = 0;
bool set = true;
int arg;
int t;
for (arg = 1; arg < argc; arg++)
5303c: 5284 addql #1,%d4 <== NOT EXECUTED
}
}
}
rtems_rfs_trace_flags |= set_value;
rtems_rfs_trace_flags &= ~clear_value;
5303e: 23c2 0008 50b8 movel %d2,850b8 <rtems_rfs_trace_flags> <== NOT EXECUTED
53044: 23c3 0008 50bc movel %d3,850bc <rtems_rfs_trace_flags+0x4> <== NOT EXECUTED
rtems_rfs_trace_mask clear_value = 0;
bool set = true;
int arg;
int t;
for (arg = 1; arg < argc; arg++)
5304a: b8ae 0008 cmpl %fp@(8),%d4 <== NOT EXECUTED
5304e: 6700 008c beqw 530dc <rtems_rfs_trace_shell_command+0x152><== NOT EXECUTED
{
if (argv[arg][0] == '-')
53052: 206e ff60 moveal %fp@(-160),%a0 <== NOT EXECUTED
53056: 722d moveq #45,%d1 <== NOT EXECUTED
53058: 58ae ff60 addql #4,%fp@(-160) <== NOT EXECUTED
5305c: 2458 moveal %a0@+,%a2 <== NOT EXECUTED
5305e: 1012 moveb %a2@,%d0 <== NOT EXECUTED
53060: 49c0 extbl %d0 <== NOT EXECUTED
53062: b280 cmpl %d0,%d1 <== NOT EXECUTED
53064: 6692 bnes 52ff8 <rtems_rfs_trace_shell_command+0x6e><== NOT EXECUTED
{
switch (argv[arg][1])
53066: 7268 moveq #104,%d1 <== NOT EXECUTED
53068: 102a 0001 moveb %a2@(1),%d0 <== NOT EXECUTED
5306c: 49c0 extbl %d0 <== NOT EXECUTED
5306e: b280 cmpl %d0,%d1 <== NOT EXECUTED
53070: 6700 01e0 beqw 53252 <rtems_rfs_trace_shell_command+0x2c8><== NOT EXECUTED
53074: 123c 006c moveb #108,%d1 <== NOT EXECUTED
53078: b280 cmpl %d0,%d1 <== NOT EXECUTED
5307a: 6700 0194 beqw 53210 <rtems_rfs_trace_shell_command+0x286><== NOT EXECUTED
printf ("%s: valid flags to set or clear are:\n", argv[0]);
for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
printf (" %s\n", table[t]);
return 0;
default:
printf ("error: unknown option\n");
5307e: 4879 0007 1ca1 pea 71ca1 <rtems_rfs_rtems_eval_config+0x7d><== NOT EXECUTED
53084: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5308a: 588f addql #4,%sp <== NOT EXECUTED
return 1;
5308c: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_rfs_trace_flags &= ~clear_value;
}
}
return 0;
}
5308e: 4cee 3cfc ff30 moveml %fp@(-208),%d2-%d7/%a2-%a5 <== NOT EXECUTED
53094: 4e5e unlk %fp <== NOT EXECUTED
53096: 4e75 rts <== NOT EXECUTED
{
if (strcmp (argv[arg], "set") == 0)
set = true;
if (strcmp (argv[arg], "clear") == 0)
set = false;
else if (strcmp (argv[arg], "all") == 0)
53098: 4879 0007 3880 pea 73880 <_global_impure_ptr+0x54> <== NOT EXECUTED
5309e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
530a0: 4eb9 0006 20b4 jsr 620b4 <strcmp> <== NOT EXECUTED
530a6: 508f addql #8,%sp <== NOT EXECUTED
530a8: 4a80 tstl %d0 <== NOT EXECUTED
530aa: 663c bnes 530e8 <rtems_rfs_trace_shell_command+0x15e><== NOT EXECUTED
{
if (set)
530ac: 4a05 tstb %d5 <== NOT EXECUTED
530ae: 6700 00bc beqw 5316c <rtems_rfs_trace_shell_command+0x1e2><== NOT EXECUTED
530b2: 2406 movel %d6,%d2 <== NOT EXECUTED
530b4: 2607 movel %d7,%d3 <== NOT EXECUTED
530b6: 4682 notl %d2 <== NOT EXECUTED
530b8: 4683 notl %d3 <== NOT EXECUTED
rtems_rfs_trace_mask clear_value = 0;
bool set = true;
int arg;
int t;
for (arg = 1; arg < argc; arg++)
530ba: 5284 addql #1,%d4 <== NOT EXECUTED
if (strcmp (argv[arg], "clear") == 0)
set = false;
else if (strcmp (argv[arg], "all") == 0)
{
if (set)
set_value = RTEMS_RFS_TRACE_ALL;
530bc: 70ff moveq #-1,%d0 <== NOT EXECUTED
530be: 72ff moveq #-1,%d1 <== NOT EXECUTED
}
}
}
rtems_rfs_trace_flags |= set_value;
rtems_rfs_trace_flags &= ~clear_value;
530c0: 23c2 0008 50b8 movel %d2,850b8 <rtems_rfs_trace_flags> <== NOT EXECUTED
530c6: 23c3 0008 50bc movel %d3,850bc <rtems_rfs_trace_flags+0x4> <== NOT EXECUTED
if (strcmp (argv[arg], "clear") == 0)
set = false;
else if (strcmp (argv[arg], "all") == 0)
{
if (set)
set_value = RTEMS_RFS_TRACE_ALL;
530cc: 2d40 ff58 movel %d0,%fp@(-168) <== NOT EXECUTED
530d0: 2d41 ff5c movel %d1,%fp@(-164) <== NOT EXECUTED
rtems_rfs_trace_mask clear_value = 0;
bool set = true;
int arg;
int t;
for (arg = 1; arg < argc; arg++)
530d4: b8ae 0008 cmpl %fp@(8),%d4 <== NOT EXECUTED
530d8: 6600 ff78 bnew 53052 <rtems_rfs_trace_shell_command+0xc8><== NOT EXECUTED
{
switch (argv[arg][1])
{
case 'h':
printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);
return 0;
530dc: 4280 clrl %d0 <== NOT EXECUTED
rtems_rfs_trace_flags &= ~clear_value;
}
}
return 0;
}
530de: 4cee 3cfc ff30 moveml %fp@(-208),%d2-%d7/%a2-%a5 <== NOT EXECUTED
530e4: 4e5e unlk %fp <== NOT EXECUTED
530e6: 4e75 rts <== NOT EXECUTED
530e8: 49ee ff64 lea %fp@(-156),%a4 <== NOT EXECUTED
{
if (strcmp (argv[arg], "set") == 0)
set = true;
if (strcmp (argv[arg], "clear") == 0)
set = false;
else if (strcmp (argv[arg], "all") == 0)
530ec: 9bcd subal %a5,%a5 <== NOT EXECUTED
}
else
{
for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
{
if (strcmp (argv[arg], table[t]) == 0)
530ee: 2f1c movel %a4@+,%sp@- <== NOT EXECUTED
530f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
530f2: 4e93 jsr %a3@ <== NOT EXECUTED
530f4: 508f addql #8,%sp <== NOT EXECUTED
530f6: 4a80 tstl %d0 <== NOT EXECUTED
530f8: 672c beqs 53126 <rtems_rfs_trace_shell_command+0x19c><== NOT EXECUTED
else
clear_value = RTEMS_RFS_TRACE_ALL;
}
else
{
for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
530fa: 528d addql #1,%a5 <== NOT EXECUTED
530fc: 7027 moveq #39,%d0 <== NOT EXECUTED
530fe: b08d cmpl %a5,%d0 <== NOT EXECUTED
53100: 66ec bnes 530ee <rtems_rfs_trace_shell_command+0x164><== NOT EXECUTED
53102: 2206 movel %d6,%d1 <== NOT EXECUTED
53104: 2007 movel %d7,%d0 <== NOT EXECUTED
53106: 4681 notl %d1 <== NOT EXECUTED
53108: 4680 notl %d0 <== NOT EXECUTED
5310a: 2241 moveal %d1,%a1 <== NOT EXECUTED
5310c: 2440 moveal %d0,%a2 <== NOT EXECUTED
5310e: 222e ff58 movel %fp@(-168),%d1 <== NOT EXECUTED
53112: 202e ff5c movel %fp@(-164),%d0 <== NOT EXECUTED
53116: 8282 orl %d2,%d1 <== NOT EXECUTED
53118: 8083 orl %d3,%d0 <== NOT EXECUTED
5311a: 2409 movel %a1,%d2 <== NOT EXECUTED
5311c: 260a movel %a2,%d3 <== NOT EXECUTED
5311e: c481 andl %d1,%d2 <== NOT EXECUTED
53120: c680 andl %d0,%d3 <== NOT EXECUTED
53122: 6000 ff18 braw 5303c <rtems_rfs_trace_shell_command+0xb2><== NOT EXECUTED
{
if (strcmp (argv[arg], table[t]) == 0)
{
if (set)
set_value = 1ULL << t;
53126: 200d movel %a5,%d0 <== NOT EXECUTED
53128: 0680 ffff ffe0 addil #-32,%d0 <== NOT EXECUTED
{
for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
{
if (strcmp (argv[arg], table[t]) == 0)
{
if (set)
5312e: 4a05 tstb %d5 <== NOT EXECUTED
53130: 6746 beqs 53178 <rtems_rfs_trace_shell_command+0x1ee><== NOT EXECUTED
set_value = 1ULL << t;
53132: 4a80 tstl %d0 <== NOT EXECUTED
53134: 6d00 00a4 bltw 531da <rtems_rfs_trace_shell_command+0x250><== NOT EXECUTED
53138: 7201 moveq #1,%d1 <== NOT EXECUTED
5313a: 91c8 subal %a0,%a0 <== NOT EXECUTED
5313c: e1a9 lsll %d0,%d1 <== NOT EXECUTED
5313e: 2006 movel %d6,%d0 <== NOT EXECUTED
53140: 4680 notl %d0 <== NOT EXECUTED
53142: 2d48 ff5c movel %a0,%fp@(-164) <== NOT EXECUTED
53146: 2040 moveal %d0,%a0 <== NOT EXECUTED
53148: 2d41 ff58 movel %d1,%fp@(-168) <== NOT EXECUTED
5314c: 2207 movel %d7,%d1 <== NOT EXECUTED
5314e: 4681 notl %d1 <== NOT EXECUTED
53150: 2441 moveal %d1,%a2 <== NOT EXECUTED
53152: 202e ff58 movel %fp@(-168),%d0 <== NOT EXECUTED
53156: 222e ff5c movel %fp@(-164),%d1 <== NOT EXECUTED
5315a: 8082 orl %d2,%d0 <== NOT EXECUTED
5315c: 8283 orl %d3,%d1 <== NOT EXECUTED
5315e: 260a movel %a2,%d3 <== NOT EXECUTED
53160: 2400 movel %d0,%d2 <== NOT EXECUTED
53162: 2008 movel %a0,%d0 <== NOT EXECUTED
53164: c681 andl %d1,%d3 <== NOT EXECUTED
53166: c480 andl %d0,%d2 <== NOT EXECUTED
53168: 6000 fed2 braw 5303c <rtems_rfs_trace_shell_command+0xb2><== NOT EXECUTED
set = true;
if (strcmp (argv[arg], "clear") == 0)
set = false;
else if (strcmp (argv[arg], "all") == 0)
{
if (set)
5316c: 4282 clrl %d2 <== NOT EXECUTED
5316e: 4283 clrl %d3 <== NOT EXECUTED
set_value = RTEMS_RFS_TRACE_ALL;
else
clear_value = RTEMS_RFS_TRACE_ALL;
53170: 7cff moveq #-1,%d6 <== NOT EXECUTED
53172: 7eff moveq #-1,%d7 <== NOT EXECUTED
53174: 6000 fec6 braw 5303c <rtems_rfs_trace_shell_command+0xb2><== NOT EXECUTED
if (strcmp (argv[arg], table[t]) == 0)
{
if (set)
set_value = 1ULL << t;
else
clear_value = 1ULL << t;
53178: 4a80 tstl %d0 <== NOT EXECUTED
5317a: 6d2e blts 531aa <rtems_rfs_trace_shell_command+0x220><== NOT EXECUTED
5317c: 7c01 moveq #1,%d6 <== NOT EXECUTED
5317e: 4287 clrl %d7 <== NOT EXECUTED
53180: 2207 movel %d7,%d1 <== NOT EXECUTED
53182: 4681 notl %d1 <== NOT EXECUTED
53184: 2441 moveal %d1,%a2 <== NOT EXECUTED
53186: e1ae lsll %d0,%d6 <== NOT EXECUTED
53188: 2006 movel %d6,%d0 <== NOT EXECUTED
5318a: 4680 notl %d0 <== NOT EXECUTED
5318c: 2240 moveal %d0,%a1 <== NOT EXECUTED
5318e: 202e ff58 movel %fp@(-168),%d0 <== NOT EXECUTED
53192: 8082 orl %d2,%d0 <== NOT EXECUTED
53194: 2409 movel %a1,%d2 <== NOT EXECUTED
53196: 2040 moveal %d0,%a0 <== NOT EXECUTED
53198: 2208 movel %a0,%d1 <== NOT EXECUTED
5319a: 202e ff5c movel %fp@(-164),%d0 <== NOT EXECUTED
5319e: 8083 orl %d3,%d0 <== NOT EXECUTED
531a0: 260a movel %a2,%d3 <== NOT EXECUTED
531a2: c481 andl %d1,%d2 <== NOT EXECUTED
531a4: c680 andl %d0,%d3 <== NOT EXECUTED
531a6: 6000 fe94 braw 5303c <rtems_rfs_trace_shell_command+0xb2><== NOT EXECUTED
531aa: 4286 clrl %d6 <== NOT EXECUTED
531ac: 2006 movel %d6,%d0 <== NOT EXECUTED
531ae: 4680 notl %d0 <== NOT EXECUTED
531b0: 2240 moveal %d0,%a1 <== NOT EXECUTED
531b2: 220d movel %a5,%d1 <== NOT EXECUTED
531b4: 7e01 moveq #1,%d7 <== NOT EXECUTED
531b6: 202e ff58 movel %fp@(-168),%d0 <== NOT EXECUTED
531ba: 8082 orl %d2,%d0 <== NOT EXECUTED
531bc: e3af lsll %d1,%d7 <== NOT EXECUTED
531be: 2409 movel %a1,%d2 <== NOT EXECUTED
531c0: 2040 moveal %d0,%a0 <== NOT EXECUTED
531c2: 2207 movel %d7,%d1 <== NOT EXECUTED
531c4: 4681 notl %d1 <== NOT EXECUTED
531c6: 2441 moveal %d1,%a2 <== NOT EXECUTED
531c8: 2208 movel %a0,%d1 <== NOT EXECUTED
531ca: 202e ff5c movel %fp@(-164),%d0 <== NOT EXECUTED
531ce: 8083 orl %d3,%d0 <== NOT EXECUTED
531d0: 260a movel %a2,%d3 <== NOT EXECUTED
531d2: c481 andl %d1,%d2 <== NOT EXECUTED
531d4: c680 andl %d0,%d3 <== NOT EXECUTED
531d6: 6000 fe64 braw 5303c <rtems_rfs_trace_shell_command+0xb2><== NOT EXECUTED
for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
{
if (strcmp (argv[arg], table[t]) == 0)
{
if (set)
set_value = 1ULL << t;
531da: 220d movel %a5,%d1 <== NOT EXECUTED
531dc: 7001 moveq #1,%d0 <== NOT EXECUTED
531de: 91c8 subal %a0,%a0 <== NOT EXECUTED
531e0: e3a8 lsll %d1,%d0 <== NOT EXECUTED
531e2: 2d48 ff58 movel %a0,%fp@(-168) <== NOT EXECUTED
531e6: 2207 movel %d7,%d1 <== NOT EXECUTED
531e8: 4681 notl %d1 <== NOT EXECUTED
531ea: 2441 moveal %d1,%a2 <== NOT EXECUTED
531ec: 2d40 ff5c movel %d0,%fp@(-164) <== NOT EXECUTED
531f0: 2006 movel %d6,%d0 <== NOT EXECUTED
531f2: 4680 notl %d0 <== NOT EXECUTED
531f4: 2040 moveal %d0,%a0 <== NOT EXECUTED
531f6: 202e ff58 movel %fp@(-168),%d0 <== NOT EXECUTED
531fa: 222e ff5c movel %fp@(-164),%d1 <== NOT EXECUTED
531fe: 8082 orl %d2,%d0 <== NOT EXECUTED
53200: 8283 orl %d3,%d1 <== NOT EXECUTED
53202: 260a movel %a2,%d3 <== NOT EXECUTED
53204: 2400 movel %d0,%d2 <== NOT EXECUTED
53206: 2008 movel %a0,%d0 <== NOT EXECUTED
53208: c681 andl %d1,%d3 <== NOT EXECUTED
5320a: c480 andl %d0,%d2 <== NOT EXECUTED
5320c: 6000 fe2e braw 5303c <rtems_rfs_trace_shell_command+0xb2><== NOT EXECUTED
{
case 'h':
printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);
return 0;
case 'l':
printf ("%s: valid flags to set or clear are:\n", argv[0]);
53210: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
53214: 47f9 0006 16ec lea 616ec <printf>,%a3 <== NOT EXECUTED
5321a: 45ee ff64 lea %fp@(-156),%a2 <== NOT EXECUTED
rtems_rfs_trace_flags &= ~mask;
return state;
}
int
rtems_rfs_trace_shell_command (int argc, char *argv[])
5321e: 240e movel %fp,%d2 <== NOT EXECUTED
{
case 'h':
printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);
return 0;
case 'l':
printf ("%s: valid flags to set or clear are:\n", argv[0]);
53220: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
53222: 4879 0007 1c75 pea 71c75 <rtems_rfs_rtems_eval_config+0x51><== NOT EXECUTED
53228: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_rfs_trace_flags &= ~mask;
return state;
}
int
rtems_rfs_trace_shell_command (int argc, char *argv[])
5322a: 508f addql #8,%sp <== NOT EXECUTED
printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);
return 0;
case 'l':
printf ("%s: valid flags to set or clear are:\n", argv[0]);
for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
printf (" %s\n", table[t]);
5322c: 2f1a movel %a2@+,%sp@- <== NOT EXECUTED
5322e: 4879 0007 1c9b pea 71c9b <rtems_rfs_rtems_eval_config+0x77><== NOT EXECUTED
53234: 4e93 jsr %a3@ <== NOT EXECUTED
case 'h':
printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);
return 0;
case 'l':
printf ("%s: valid flags to set or clear are:\n", argv[0]);
for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
53236: 508f addql #8,%sp <== NOT EXECUTED
53238: b48a cmpl %a2,%d2 <== NOT EXECUTED
5323a: 6700 fea0 beqw 530dc <rtems_rfs_trace_shell_command+0x152><== NOT EXECUTED
printf (" %s\n", table[t]);
5323e: 2f1a movel %a2@+,%sp@- <== NOT EXECUTED
53240: 4879 0007 1c9b pea 71c9b <rtems_rfs_rtems_eval_config+0x77><== NOT EXECUTED
53246: 4e93 jsr %a3@ <== NOT EXECUTED
case 'h':
printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);
return 0;
case 'l':
printf ("%s: valid flags to set or clear are:\n", argv[0]);
for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
53248: 508f addql #8,%sp <== NOT EXECUTED
5324a: b48a cmpl %a2,%d2 <== NOT EXECUTED
5324c: 66de bnes 5322c <rtems_rfs_trace_shell_command+0x2a2><== NOT EXECUTED
5324e: 6000 fe8c braw 530dc <rtems_rfs_trace_shell_command+0x152><== NOT EXECUTED
if (argv[arg][0] == '-')
{
switch (argv[arg][1])
{
case 'h':
printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);
53252: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
53256: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
53258: 4879 0007 1c50 pea 71c50 <rtems_rfs_rtems_eval_config+0x2c><== NOT EXECUTED
5325e: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
53264: 508f addql #8,%sp <== NOT EXECUTED
return 0;
53266: 4280 clrl %d0 <== NOT EXECUTED
53268: 6000 fe74 braw 530de <rtems_rfs_trace_shell_command+0x154><== NOT EXECUTED
0005dc9c <rtems_rfs_unlink>:
rtems_rfs_unlink (rtems_rfs_file_system* fs,
rtems_rfs_ino parent,
rtems_rfs_ino target,
uint32_t doff,
rtems_rfs_unlink_dir dir_mode)
{
5dc9c: 4e56 ff94 linkw %fp,#-108 <== NOT EXECUTED
5dca0: 48d7 0cfc moveml %d2-%d7/%a2-%a3,%sp@ <== NOT EXECUTED
rtems_rfs_inode_handle target_inode;
uint16_t links;
bool dir;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5dca4: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
rtems_rfs_unlink (rtems_rfs_file_system* fs,
rtems_rfs_ino parent,
rtems_rfs_ino target,
uint32_t doff,
rtems_rfs_unlink_dir dir_mode)
{
5dcaa: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
rtems_rfs_inode_handle target_inode;
uint16_t links;
bool dir;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5dcae: 45f9 0005 2ef8 lea 52ef8 <rtems_rfs_trace>,%a2 <== NOT EXECUTED
5dcb4: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_rfs_unlink (rtems_rfs_file_system* fs,
rtems_rfs_ino parent,
rtems_rfs_ino target,
uint32_t doff,
rtems_rfs_unlink_dir dir_mode)
{
5dcb6: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
rtems_rfs_inode_handle target_inode;
uint16_t links;
bool dir;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5dcba: 4e92 jsr %a2@ <== NOT EXECUTED
5dcbc: 508f addql #8,%sp <== NOT EXECUTED
5dcbe: 4a00 tstb %d0 <== NOT EXECUTED
5dcc0: 6674 bnes 5dd36 <rtems_rfs_unlink+0x9a> <== NOT EXECUTED
printf ("rtems-rfs: unlink: parent(%" PRIu32 ") -X-> (%" PRIu32 ")\n", parent, target);
rc = rtems_rfs_inode_open (fs, target, &target_inode, true);
5dcc2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5dcc6: 280e movel %fp,%d4 <== NOT EXECUTED
5dcc8: 0684 ffff ffda addil #-38,%d4 <== NOT EXECUTED
5dcce: 47f9 0005 12b4 lea 512b4 <rtems_rfs_inode_open>,%a3 <== NOT EXECUTED
5dcd4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5dcd6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5dcd8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dcda: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc)
5dcdc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: unlink: parent(%" PRIu32 ") -X-> (%" PRIu32 ")\n", parent, target);
rc = rtems_rfs_inode_open (fs, target, &target_inode, true);
5dce0: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
5dce2: 6646 bnes 5dd2a <rtems_rfs_unlink+0x8e> <== NOT EXECUTED
/*
* If a directory process the unlink mode.
*/
dir = RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&target_inode));
5dce4: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
* @return uint16_t The mode.
*/
static inline uint16_t
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)
{
return rtems_rfs_read_u16 (&handle->node->mode);
5dce8: 4281 clrl %d1 <== NOT EXECUTED
5dcea: 1228 0002 moveb %a0@(2),%d1 <== NOT EXECUTED
5dcee: e189 lsll #8,%d1 <== NOT EXECUTED
5dcf0: 0281 0000 f000 andil #61440,%d1 <== NOT EXECUTED
5dcf6: 0c81 0000 4000 cmpil #16384,%d1 <== NOT EXECUTED
5dcfc: 57c7 seq %d7 <== NOT EXECUTED
5dcfe: 4487 negl %d7 <== NOT EXECUTED
if (dir)
5dd00: 4a07 tstb %d7 <== NOT EXECUTED
5dd02: 6756 beqs 5dd5a <rtems_rfs_unlink+0xbe> <== NOT EXECUTED
{
switch (dir_mode)
5dd04: 4aae 0018 tstl %fp@(24) <== NOT EXECUTED
5dd08: 6646 bnes 5dd50 <rtems_rfs_unlink+0xb4> <== NOT EXECUTED
{
case rtems_rfs_unlink_dir_denied:
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5dd0a: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
5dd10: 42a7 clrl %sp@- <== NOT EXECUTED
5dd12: 4e92 jsr %a2@ <== NOT EXECUTED
5dd14: 508f addql #8,%sp <== NOT EXECUTED
5dd16: 4a00 tstb %d0 <== NOT EXECUTED
5dd18: 6600 014c bnew 5de66 <rtems_rfs_unlink+0x1ca> <== NOT EXECUTED
printf ("rtems-rfs: link is a directory\n");
rtems_rfs_inode_close (fs, &target_inode);
5dd1c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
return EISDIR;
5dd1e: 7415 moveq #21,%d2 <== NOT EXECUTED
switch (dir_mode)
{
case rtems_rfs_unlink_dir_denied:
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link is a directory\n");
rtems_rfs_inode_close (fs, &target_inode);
5dd20: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dd22: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5dd28: 508f addql #8,%sp <== NOT EXECUTED
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: target inode-close failed: %d: %s\n",
rc, strerror (rc));
return rc;
}
5dd2a: 2002 movel %d2,%d0 <== NOT EXECUTED
5dd2c: 4cee 0cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a3 <== NOT EXECUTED
5dd32: 4e5e unlk %fp <== NOT EXECUTED
5dd34: 4e75 rts <== NOT EXECUTED
uint16_t links;
bool dir;
int rc;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: unlink: parent(%" PRIu32 ") -X-> (%" PRIu32 ")\n", parent, target);
5dd36: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5dd38: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5dd3c: 4879 0007 33af pea 733af <CSWTCH.2+0x12e7> <== NOT EXECUTED
5dd42: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5dd48: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5dd4c: 6000 ff74 braw 5dcc2 <rtems_rfs_unlink+0x26> <== NOT EXECUTED
*/
dir = RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&target_inode));
if (dir)
{
switch (dir_mode)
5dd50: 7001 moveq #1,%d0 <== NOT EXECUTED
5dd52: b0ae 0018 cmpl %fp@(24),%d0 <== NOT EXECUTED
5dd56: 6700 00c0 beqw 5de18 <rtems_rfs_unlink+0x17c> <== NOT EXECUTED
default:
break;
}
}
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
5dd5a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5dd5e: 2c0e movel %fp,%d6 <== NOT EXECUTED
5dd60: 0686 ffff ffb4 addil #-76,%d6 <== NOT EXECUTED
5dd66: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5dd68: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5dd6c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dd6e: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc)
5dd70: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
default:
break;
}
}
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
5dd74: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc)
5dd76: 664e bnes 5ddc6 <rtems_rfs_unlink+0x12a> <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_dir_del_entry (fs, &parent_inode, target, doff);
5dd78: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
5dd7c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5dd7e: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5dd80: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dd82: 4eb9 0005 b36a jsr 5b36a <rtems_rfs_dir_del_entry> <== NOT EXECUTED
if (rc > 0)
5dd88: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_dir_del_entry (fs, &parent_inode, target, doff);
5dd8c: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5dd8e: 6f00 00f6 blew 5de86 <rtems_rfs_unlink+0x1ea> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5dd92: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
5dd98: 42a7 clrl %sp@- <== NOT EXECUTED
5dd9a: 4e92 jsr %a2@ <== NOT EXECUTED
5dd9c: 508f addql #8,%sp <== NOT EXECUTED
5dd9e: 4a00 tstb %d0 <== NOT EXECUTED
5dda0: 6600 019e bnew 5df40 <rtems_rfs_unlink+0x2a4> <== NOT EXECUTED
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",
rc, strerror (rc));
rtems_rfs_inode_close (fs, &parent_inode);
5dda4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5dda6: 45f9 0005 14a2 lea 514a2 <rtems_rfs_inode_close>,%a2 <== NOT EXECUTED
5ddac: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5ddae: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_rfs_inode_close (fs, &target_inode);
5ddb0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5ddb2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5ddb4: 4e92 jsr %a2@ <== NOT EXECUTED
5ddb6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: target inode-close failed: %d: %s\n",
rc, strerror (rc));
return rc;
}
5ddba: 2002 movel %d2,%d0 <== NOT EXECUTED
5ddbc: 4cee 0cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a3 <== NOT EXECUTED
5ddc2: 4e5e unlk %fp <== NOT EXECUTED
5ddc4: 4e75 rts <== NOT EXECUTED
}
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
if (rc)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5ddc6: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
5ddcc: 42a7 clrl %sp@- <== NOT EXECUTED
5ddce: 4e92 jsr %a2@ <== NOT EXECUTED
5ddd0: 508f addql #8,%sp <== NOT EXECUTED
5ddd2: 4a00 tstb %d0 <== NOT EXECUTED
5ddd4: 6618 bnes 5ddee <rtems_rfs_unlink+0x152> <== NOT EXECUTED
printf ("rtems-rfs: link: inode-open failed: %d: %s\n",
rc, strerror (rc));
rtems_rfs_inode_close (fs, &target_inode);
5ddd6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5ddd8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5ddda: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5dde0: 508f addql #8,%sp <== NOT EXECUTED
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: target inode-close failed: %d: %s\n",
rc, strerror (rc));
return rc;
}
5dde2: 2002 movel %d2,%d0 <== NOT EXECUTED
5dde4: 4cee 0cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a3 <== NOT EXECUTED
5ddea: 4e5e unlk %fp <== NOT EXECUTED
5ddec: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);
if (rc)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: inode-open failed: %d: %s\n",
5ddee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ddf0: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5ddf6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5ddf8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ddfa: 4879 0007 3417 pea 73417 <CSWTCH.2+0x134f> <== NOT EXECUTED
5de00: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5de06: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_inode_close (fs, &target_inode);
5de0a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5de0c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5de0e: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5de14: 508f addql #8,%sp <== NOT EXECUTED
5de16: 60ca bras 5dde2 <rtems_rfs_unlink+0x146> <== NOT EXECUTED
printf ("rtems-rfs: link is a directory\n");
rtems_rfs_inode_close (fs, &target_inode);
return EISDIR;
case rtems_rfs_unlink_dir_if_empty:
rc = rtems_rfs_dir_empty (fs, &target_inode);
5de18: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5de1a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5de1c: 4eb9 0005 bbfa jsr 5bbfa <rtems_rfs_dir_empty> <== NOT EXECUTED
if (rc > 0)
5de22: 508f addql #8,%sp <== NOT EXECUTED
printf ("rtems-rfs: link is a directory\n");
rtems_rfs_inode_close (fs, &target_inode);
return EISDIR;
case rtems_rfs_unlink_dir_if_empty:
rc = rtems_rfs_dir_empty (fs, &target_inode);
5de24: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5de26: 6f00 ff32 blew 5dd5a <rtems_rfs_unlink+0xbe> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5de2a: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
5de30: 42a7 clrl %sp@- <== NOT EXECUTED
5de32: 4e92 jsr %a2@ <== NOT EXECUTED
5de34: 508f addql #8,%sp <== NOT EXECUTED
5de36: 4a00 tstb %d0 <== NOT EXECUTED
5de38: 679c beqs 5ddd6 <rtems_rfs_unlink+0x13a> <== NOT EXECUTED
printf ("rtems-rfs: dir-empty: %d: %s\n", rc, strerror (rc));
5de3a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5de3c: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5de42: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5de44: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5de46: 4879 0007 33f9 pea 733f9 <CSWTCH.2+0x1331> <== NOT EXECUTED
5de4c: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5de52: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (rc)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: inode-open failed: %d: %s\n",
rc, strerror (rc));
rtems_rfs_inode_close (fs, &target_inode);
5de56: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5de58: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5de5a: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5de60: 508f addql #8,%sp <== NOT EXECUTED
5de62: 6000 ff7e braw 5dde2 <rtems_rfs_unlink+0x146> <== NOT EXECUTED
{
switch (dir_mode)
{
case rtems_rfs_unlink_dir_denied:
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link is a directory\n");
5de66: 4879 0007 33da pea 733da <CSWTCH.2+0x1312> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &target_inode);
return EISDIR;
5de6c: 7415 moveq #21,%d2 <== NOT EXECUTED
{
switch (dir_mode)
{
case rtems_rfs_unlink_dir_denied:
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link is a directory\n");
5de6e: 4eb9 0006 193c jsr 6193c <puts> <== NOT EXECUTED
5de74: 588f addql #4,%sp <== NOT EXECUTED
rtems_rfs_inode_close (fs, &target_inode);
5de76: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5de78: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5de7a: 4eb9 0005 14a2 jsr 514a2 <rtems_rfs_inode_close> <== NOT EXECUTED
5de80: 508f addql #8,%sp <== NOT EXECUTED
5de82: 6000 fea6 braw 5dd2a <rtems_rfs_unlink+0x8e> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &parent_inode);
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
links = rtems_rfs_inode_get_links (&target_inode);
5de86: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
*/
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
5de8a: 4280 clrl %d0 <== NOT EXECUTED
5de8c: 1010 moveb %a0@,%d0 <== NOT EXECUTED
5de8e: 4281 clrl %d1 <== NOT EXECUTED
5de90: 1228 0001 moveb %a0@(1),%d1 <== NOT EXECUTED
if (links == 0xffff)
5de94: 4282 clrl %d2 <== NOT EXECUTED
*/
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
5de96: e188 lsll #8,%d0 <== NOT EXECUTED
5de98: 8081 orl %d1,%d0 <== NOT EXECUTED
if (links == 0xffff)
5de9a: 3400 movew %d0,%d2 <== NOT EXECUTED
*/
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
5de9c: 2640 moveal %d0,%a3 <== NOT EXECUTED
if (links == 0xffff)
5de9e: 0c82 0000 ffff cmpil #65535,%d2 <== NOT EXECUTED
5dea4: 6700 00e8 beqw 5df8e <rtems_rfs_unlink+0x2f2> <== NOT EXECUTED
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5dea8: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
5deae: 42a7 clrl %sp@- <== NOT EXECUTED
5deb0: 4e92 jsr %a2@ <== NOT EXECUTED
5deb2: 508f addql #8,%sp <== NOT EXECUTED
5deb4: 4a00 tstb %d0 <== NOT EXECUTED
5deb6: 6600 00be bnew 5df76 <rtems_rfs_unlink+0x2da> <== NOT EXECUTED
printf ("rtems-rfs: unlink: target:%" PRIu32 " links:%u\n", target, links);
if (links > 1)
5deba: 7a01 moveq #1,%d5 <== NOT EXECUTED
5debc: ba82 cmpl %d2,%d5 <== NOT EXECUTED
5debe: 6400 0144 bccw 5e004 <rtems_rfs_unlink+0x368> <== NOT EXECUTED
{
links--;
5dec2: 200b movel %a3,%d0 <== NOT EXECUTED
5dec4: 5380 subql #1,%d0 <== NOT EXECUTED
* @prarm links The links.
*/
static inline void
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{
rtems_rfs_write_u16 (&handle->node->links, links);
5dec6: 2200 movel %d0,%d1 <== NOT EXECUTED
5dec8: e089 lsrl #8,%d1 <== NOT EXECUTED
5deca: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
5dece: 1081 moveb %d1,%a0@ <== NOT EXECUTED
5ded0: 206e ffe6 moveal %fp@(-26),%a0 <== NOT EXECUTED
5ded4: 1140 0001 moveb %d0,%a0@(1) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5ded8: 7001 moveq #1,%d0 <== NOT EXECUTED
5deda: 1d40 ffea moveb %d0,%fp@(-22) <== NOT EXECUTED
links--;
rtems_rfs_inode_set_links (&parent_inode, links);
}
}
rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);
5dede: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5dee2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
5dee6: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5dee8: 4eb9 0005 1672 jsr 51672 <rtems_rfs_inode_time_stamp_now> <== NOT EXECUTED
if (rc > 0)
5deee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
links--;
rtems_rfs_inode_set_links (&parent_inode, links);
}
}
rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);
5def2: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5def4: 6f00 00b0 blew 5dfa6 <rtems_rfs_unlink+0x30a> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5def8: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
5defe: 42a7 clrl %sp@- <== NOT EXECUTED
5df00: 4e92 jsr %a2@ <== NOT EXECUTED
5df02: 508f addql #8,%sp <== NOT EXECUTED
5df04: 4a00 tstb %d0 <== NOT EXECUTED
5df06: 6700 fe9c beqw 5dda4 <rtems_rfs_unlink+0x108> <== NOT EXECUTED
printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",
5df0a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_inode_close (fs, &parent_inode);
5df0c: 45f9 0005 14a2 lea 514a2 <rtems_rfs_inode_close>,%a2 <== NOT EXECUTED
rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",
5df12: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5df18: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5df1a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5df1c: 4879 0007 34c3 pea 734c3 <CSWTCH.2+0x13fb> <== NOT EXECUTED
5df22: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5df28: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_inode_close (fs, &parent_inode);
5df2c: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5df2e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5df30: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_rfs_inode_close (fs, &target_inode);
5df32: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5df34: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5df36: 4e92 jsr %a2@ <== NOT EXECUTED
5df38: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5df3c: 6000 fe7c braw 5ddba <rtems_rfs_unlink+0x11e> <== NOT EXECUTED
rc = rtems_rfs_dir_del_entry (fs, &parent_inode, target, doff);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: unlink: dir-del failed: %d: %s\n",
5df40: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",
rc, strerror (rc));
rtems_rfs_inode_close (fs, &parent_inode);
5df42: 45f9 0005 14a2 lea 514a2 <rtems_rfs_inode_close>,%a2 <== NOT EXECUTED
rc = rtems_rfs_dir_del_entry (fs, &parent_inode, target, doff);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: unlink: dir-del failed: %d: %s\n",
5df48: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5df4e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5df50: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5df52: 4879 0007 3443 pea 73443 <CSWTCH.2+0x137b> <== NOT EXECUTED
5df58: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5df5e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",
rc, strerror (rc));
rtems_rfs_inode_close (fs, &parent_inode);
5df62: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5df64: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5df66: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_rfs_inode_close (fs, &target_inode);
5df68: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5df6a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5df6c: 4e92 jsr %a2@ <== NOT EXECUTED
5df6e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5df72: 6000 fe46 braw 5ddba <rtems_rfs_unlink+0x11e> <== NOT EXECUTED
}
links = rtems_rfs_inode_get_links (&target_inode);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: unlink: target:%" PRIu32 " links:%u\n", target, links);
5df76: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5df78: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5df7a: 4879 0007 346e pea 7346e <CSWTCH.2+0x13a6> <== NOT EXECUTED
5df80: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5df86: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5df8a: 6000 ff2e braw 5deba <rtems_rfs_unlink+0x21e> <== NOT EXECUTED
return rc;
}
links = rtems_rfs_inode_get_links (&target_inode);
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5df8e: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
5df94: 4242 clrw %d2 <== NOT EXECUTED
5df96: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
if (links == 0xffff)
links = 0;
5df98: 97cb subal %a3,%a3 <== NOT EXECUTED
5df9a: 4e92 jsr %a2@ <== NOT EXECUTED
5df9c: 508f addql #8,%sp <== NOT EXECUTED
5df9e: 4a00 tstb %d0 <== NOT EXECUTED
5dfa0: 6700 ff18 beqw 5deba <rtems_rfs_unlink+0x21e> <== NOT EXECUTED
5dfa4: 60d0 bras 5df76 <rtems_rfs_unlink+0x2da> <== NOT EXECUTED
rtems_rfs_inode_close (fs, &parent_inode);
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_inode_close (fs, &parent_inode);
5dfa6: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5dfa8: 47f9 0005 14a2 lea 514a2 <rtems_rfs_inode_close>,%a3 <== NOT EXECUTED
5dfae: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dfb0: 4e93 jsr %a3@ <== NOT EXECUTED
if (rc > 0)
5dfb2: 508f addql #8,%sp <== NOT EXECUTED
rtems_rfs_inode_close (fs, &parent_inode);
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_inode_close (fs, &parent_inode);
5dfb4: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5dfb6: 6f00 00a6 blew 5e05e <rtems_rfs_unlink+0x3c2> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5dfba: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
5dfc0: 42a7 clrl %sp@- <== NOT EXECUTED
5dfc2: 4e92 jsr %a2@ <== NOT EXECUTED
5dfc4: 508f addql #8,%sp <== NOT EXECUTED
5dfc6: 4a00 tstb %d0 <== NOT EXECUTED
5dfc8: 6614 bnes 5dfde <rtems_rfs_unlink+0x342> <== NOT EXECUTED
printf ("rtems-rfs: link: parent inode-close failed: %d: %s\n",
rc, strerror (rc));
rtems_rfs_inode_close (fs, &target_inode);
5dfca: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5dfcc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dfce: 4e93 jsr %a3@ <== NOT EXECUTED
5dfd0: 508f addql #8,%sp <== NOT EXECUTED
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: target inode-close failed: %d: %s\n",
rc, strerror (rc));
return rc;
}
5dfd2: 2002 movel %d2,%d0 <== NOT EXECUTED
5dfd4: 4cee 0cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a3 <== NOT EXECUTED
5dfda: 4e5e unlk %fp <== NOT EXECUTED
5dfdc: 4e75 rts <== NOT EXECUTED
rc = rtems_rfs_inode_close (fs, &parent_inode);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: parent inode-close failed: %d: %s\n",
5dfde: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5dfe0: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5dfe6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5dfe8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5dfea: 4879 0007 34f5 pea 734f5 <CSWTCH.2+0x142d> <== NOT EXECUTED
5dff0: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5dff6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_inode_close (fs, &target_inode);
5dffa: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5dffc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5dffe: 4e93 jsr %a3@ <== NOT EXECUTED
5e000: 508f addql #8,%sp <== NOT EXECUTED
5e002: 60ce bras 5dfd2 <rtems_rfs_unlink+0x336> <== NOT EXECUTED
else
{
/*
* Erasing the inode releases all blocks attached to it.
*/
rc = rtems_rfs_inode_delete (fs, &target_inode);
5e004: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e006: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e008: 4eb9 0005 153c jsr 5153c <rtems_rfs_inode_delete> <== NOT EXECUTED
if (rc > 0)
5e00e: 508f addql #8,%sp <== NOT EXECUTED
else
{
/*
* Erasing the inode releases all blocks attached to it.
*/
rc = rtems_rfs_inode_delete (fs, &target_inode);
5e010: 2400 movel %d0,%d2 <== NOT EXECUTED
if (rc > 0)
5e012: 6f00 0092 blew 5e0a6 <rtems_rfs_unlink+0x40a> <== NOT EXECUTED
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5e016: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
5e01c: 42a7 clrl %sp@- <== NOT EXECUTED
5e01e: 4e92 jsr %a2@ <== NOT EXECUTED
5e020: 508f addql #8,%sp <== NOT EXECUTED
5e022: 4a00 tstb %d0 <== NOT EXECUTED
5e024: 6700 fd7e beqw 5dda4 <rtems_rfs_unlink+0x108> <== NOT EXECUTED
printf ("rtems-rfs: unlink: inode-del failed: %d: %s\n",
5e028: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",
rc, strerror (rc));
rtems_rfs_inode_close (fs, &parent_inode);
5e02a: 45f9 0005 14a2 lea 514a2 <rtems_rfs_inode_close>,%a2 <== NOT EXECUTED
*/
rc = rtems_rfs_inode_delete (fs, &target_inode);
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: unlink: inode-del failed: %d: %s\n",
5e030: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5e036: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e038: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5e03a: 4879 0007 3496 pea 73496 <CSWTCH.2+0x13ce> <== NOT EXECUTED
5e040: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5e046: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (rc > 0)
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",
rc, strerror (rc));
rtems_rfs_inode_close (fs, &parent_inode);
5e04a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5e04c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e04e: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_rfs_inode_close (fs, &target_inode);
5e050: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e052: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e054: 4e92 jsr %a2@ <== NOT EXECUTED
5e056: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5e05a: 6000 fd5e braw 5ddba <rtems_rfs_unlink+0x11e> <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_inode_close (fs, &target_inode);
5e05e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5e060: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5e062: 4e93 jsr %a3@ <== NOT EXECUTED
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5e064: 508f addql #8,%sp <== NOT EXECUTED
rc, strerror (rc));
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
rc = rtems_rfs_inode_close (fs, &target_inode);
5e066: 2400 movel %d0,%d2 <== NOT EXECUTED
if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))
5e068: 6f00 fcc0 blew 5dd2a <rtems_rfs_unlink+0x8e> <== NOT EXECUTED
5e06c: 2f3c 0200 0000 movel #33554432,%sp@- <== NOT EXECUTED
5e072: 42a7 clrl %sp@- <== NOT EXECUTED
5e074: 4e92 jsr %a2@ <== NOT EXECUTED
5e076: 508f addql #8,%sp <== NOT EXECUTED
5e078: 4a00 tstb %d0 <== NOT EXECUTED
5e07a: 6700 fcae beqw 5dd2a <rtems_rfs_unlink+0x8e> <== NOT EXECUTED
printf ("rtems-rfs: link: target inode-close failed: %d: %s\n",
5e07e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5e080: 4eb9 0006 2630 jsr 62630 <strerror> <== NOT EXECUTED
5e086: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5e088: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5e08a: 4879 0007 3529 pea 73529 <CSWTCH.2+0x1461> <== NOT EXECUTED
5e090: 4eb9 0006 16ec jsr 616ec <printf> <== NOT EXECUTED
5e096: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rc, strerror (rc));
return rc;
}
5e09a: 2002 movel %d2,%d0 <== NOT EXECUTED
5e09c: 4cee 0cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a3 <== NOT EXECUTED
5e0a2: 4e5e unlk %fp <== NOT EXECUTED
5e0a4: 4e75 rts <== NOT EXECUTED
rtems_rfs_inode_close (fs, &parent_inode);
rtems_rfs_inode_close (fs, &target_inode);
return rc;
}
if (dir)
5e0a6: 4a07 tstb %d7 <== NOT EXECUTED
5e0a8: 6700 fe34 beqw 5dede <rtems_rfs_unlink+0x242> <== NOT EXECUTED
{
links = rtems_rfs_inode_get_links (&parent_inode);
5e0ac: 206e ffc0 moveal %fp@(-64),%a0 <== NOT EXECUTED
*/
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
5e0b0: 4280 clrl %d0 <== NOT EXECUTED
5e0b2: 1010 moveb %a0@,%d0 <== NOT EXECUTED
5e0b4: 4281 clrl %d1 <== NOT EXECUTED
5e0b6: 1228 0001 moveb %a0@(1),%d1 <== NOT EXECUTED
if (links == 0xffff)
5e0ba: 4282 clrl %d2 <== NOT EXECUTED
*/
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
5e0bc: e188 lsll #8,%d0 <== NOT EXECUTED
5e0be: 8081 orl %d1,%d0 <== NOT EXECUTED
if (links == 0xffff)
5e0c0: 3400 movew %d0,%d2 <== NOT EXECUTED
*/
static inline uint16_t
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
5e0c2: 3200 movew %d0,%d1 <== NOT EXECUTED
if (links == 0xffff)
5e0c4: 0c82 0000 ffff cmpil #65535,%d2 <== NOT EXECUTED
5e0ca: 6724 beqs 5e0f0 <rtems_rfs_unlink+0x454> <== NOT EXECUTED
if (links > 1)
5e0cc: 7a01 moveq #1,%d5 <== NOT EXECUTED
5e0ce: ba82 cmpl %d2,%d5 <== NOT EXECUTED
5e0d0: 6408 bccs 5e0da <rtems_rfs_unlink+0x43e> <== NOT EXECUTED
links--;
5e0d2: 2200 movel %d0,%d1 <== NOT EXECUTED
5e0d4: 5381 subql #1,%d1 <== NOT EXECUTED
5e0d6: 4282 clrl %d2 <== NOT EXECUTED
5e0d8: 3401 movew %d1,%d2 <== NOT EXECUTED
* @prarm links The links.
*/
static inline void
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{
rtems_rfs_write_u16 (&handle->node->links, links);
5e0da: e08a lsrl #8,%d2 <== NOT EXECUTED
5e0dc: 1082 moveb %d2,%a0@ <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5e0de: 7001 moveq #1,%d0 <== NOT EXECUTED
* @prarm links The links.
*/
static inline void
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{
rtems_rfs_write_u16 (&handle->node->links, links);
5e0e0: 206e ffc0 moveal %fp@(-64),%a0 <== NOT EXECUTED
5e0e4: 1141 0001 moveb %d1,%a0@(1) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5e0e8: 1d40 ffc4 moveb %d0,%fp@(-60) <== NOT EXECUTED
5e0ec: 6000 fdf0 braw 5dede <rtems_rfs_unlink+0x242> <== NOT EXECUTED
5e0f0: 4282 clrl %d2 <== NOT EXECUTED
* @prarm links The links.
*/
static inline void
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{
rtems_rfs_write_u16 (&handle->node->links, links);
5e0f2: e08a lsrl #8,%d2 <== NOT EXECUTED
5e0f4: 1082 moveb %d2,%a0@ <== NOT EXECUTED
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
{
uint16_t links;
links = rtems_rfs_read_u16 (&handle->node->links);
if (links == 0xffff)
links = 0;
5e0f6: 4241 clrw %d1 <== NOT EXECUTED
*/
static inline void
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{
rtems_rfs_write_u16 (&handle->node->links, links);
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5e0f8: 7001 moveq #1,%d0 <== NOT EXECUTED
* @prarm links The links.
*/
static inline void
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{
rtems_rfs_write_u16 (&handle->node->links, links);
5e0fa: 206e ffc0 moveal %fp@(-64),%a0 <== NOT EXECUTED
5e0fe: 1141 0001 moveb %d1,%a0@(1) <== NOT EXECUTED
rtems_rfs_buffer_mark_dirty (&handle->buffer);
5e102: 1d40 ffc4 moveb %d0,%fp@(-60) <== NOT EXECUTED
5e106: 6000 fdd6 braw 5dede <rtems_rfs_unlink+0x242> <== NOT EXECUTED
00047194 <rtems_semaphore_create>:
uint32_t count,
rtems_attribute attribute_set,
rtems_task_priority priority_ceiling,
rtems_id *id
)
{
47194: 4e56 ffe8 linkw %fp,#-24
47198: 2f0a movel %a2,%sp@-
4719a: 2f02 movel %d2,%sp@-
register Semaphore_Control *the_semaphore;
CORE_mutex_Attributes the_mutex_attr;
CORE_semaphore_Attributes the_semaphore_attr;
CORE_mutex_Status mutex_status;
if ( !rtems_is_name_valid( name ) )
4719c: 4aae 0008 tstl %fp@(8)
471a0: 660e bnes 471b0 <rtems_semaphore_create+0x1c>
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
471a2: 242e ffe0 movel %fp@(-32),%d2
CORE_mutex_Attributes the_mutex_attr;
CORE_semaphore_Attributes the_semaphore_attr;
CORE_mutex_Status mutex_status;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
471a6: 7003 moveq #3,%d0
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
471a8: 246e ffe4 moveal %fp@(-28),%a2
471ac: 4e5e unlk %fp
471ae: 4e75 rts
CORE_mutex_Status mutex_status;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
471b0: 4aae 0018 tstl %fp@(24)
471b4: 6726 beqs 471dc <rtems_semaphore_create+0x48>
* id - semaphore id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_semaphore_create(
471b6: 202e 0010 movel %fp@(16),%d0
471ba: 0280 0000 00c0 andil #192,%d0
return RTEMS_NOT_DEFINED;
} else
#endif
if ( _Attributes_Is_inherit_priority( attribute_set ) ||
471c0: 6728 beqs 471ea <rtems_semaphore_create+0x56>
*/
RTEMS_INLINE_ROUTINE bool _Attributes_Is_binary_semaphore(
rtems_attribute attribute_set
)
{
return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE);
471c2: 7230 moveq #48,%d1
_Attributes_Is_priority_ceiling( attribute_set ) ) {
if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&
471c4: 7410 moveq #16,%d2
471c6: c2ae 0010 andl %fp@(16),%d1
471ca: b481 cmpl %d1,%d2
471cc: 673a beqs 47208 <rtems_semaphore_create+0x74>
_Attributes_Is_priority( attribute_set ) ) )
return RTEMS_NOT_DEFINED;
471ce: 700b moveq #11,%d0
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
471d0: 242e ffe0 movel %fp@(-32),%d2
471d4: 246e ffe4 moveal %fp@(-28),%a2
471d8: 4e5e unlk %fp
471da: 4e75 rts
471dc: 242e ffe0 movel %fp@(-32),%d2
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
471e0: 7009 moveq #9,%d0
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
471e2: 246e ffe4 moveal %fp@(-28),%a2
471e6: 4e5e unlk %fp
471e8: 4e75 rts
*/
RTEMS_INLINE_ROUTINE bool _Attributes_Is_counting_semaphore(
rtems_attribute attribute_set
)
{
return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE);
471ea: 7430 moveq #48,%d2
471ec: c4ae 0010 andl %fp@(16),%d2
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
_Attributes_Is_priority_ceiling( attribute_set ) )
return RTEMS_NOT_DEFINED;
if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) )
471f0: 672a beqs 4721c <rtems_semaphore_create+0x88>
471f2: 7001 moveq #1,%d0
471f4: b0ae 000c cmpl %fp@(12),%d0
471f8: 6422 bccs 4721c <rtems_semaphore_create+0x88>
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
471fa: 242e ffe0 movel %fp@(-32),%d2
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
_Attributes_Is_priority_ceiling( attribute_set ) )
return RTEMS_NOT_DEFINED;
if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) )
return RTEMS_INVALID_NUMBER;
471fe: 700a moveq #10,%d0
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47200: 246e ffe4 moveal %fp@(-28),%a2
47204: 4e5e unlk %fp
47206: 4e75 rts
#endif
if ( _Attributes_Is_inherit_priority( attribute_set ) ||
_Attributes_Is_priority_ceiling( attribute_set ) ) {
if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&
47208: 222e 0010 movel %fp@(16),%d1
4720c: 44c1 movew %d1,%ccr
4720e: 66be bnes 471ce <rtems_semaphore_create+0x3a>
_Attributes_Is_priority( attribute_set ) ) )
return RTEMS_NOT_DEFINED;
}
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
47210: 0c80 0000 00c0 cmpil #192,%d0
47216: 66da bnes 471f2 <rtems_semaphore_create+0x5e>
if ( _Attributes_Is_inherit_priority( attribute_set ) ||
_Attributes_Is_priority_ceiling( attribute_set ) ) {
if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&
_Attributes_Is_priority( attribute_set ) ) )
return RTEMS_NOT_DEFINED;
47218: 700b moveq #11,%d0
4721a: 60b4 bras 471d0 <rtems_semaphore_create+0x3c>
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
4721c: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0
++level;
47222: 5280 addql #1,%d0
_Thread_Dispatch_disable_level = level;
47224: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level>
* This function allocates a semaphore control block from
* the inactive chain of free semaphore control blocks.
*/
RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Allocate( void )
{
return (Semaphore_Control *) _Objects_Allocate( &_Semaphore_Information );
4722a: 4879 0005 f938 pea 5f938 <_Semaphore_Information>
47230: 4eb9 0004 89e4 jsr 489e4 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_semaphore = _Semaphore_Allocate();
if ( !the_semaphore ) {
47236: 588f addql #4,%sp
47238: 2440 moveal %d0,%a2
4723a: 4a80 tstl %d0
4723c: 6700 00e2 beqw 47320 <rtems_semaphore_create+0x18c>
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_semaphore->attribute_set = attribute_set;
47240: 222e 0010 movel %fp@(16),%d1
47244: 2541 0010 movel %d1,%a2@(16)
/*
* Initialize it as a counting semaphore.
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
47248: 4a82 tstl %d2
4724a: 6668 bnes 472b4 <rtems_semaphore_create+0x120>
* The following are just to make Purify happy.
*/
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM;
_CORE_semaphore_Initialize(
4724c: 2f2e 000c movel %fp@(12),%sp@-
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
/*
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
47250: 74ff moveq #-1,%d2
* The following are just to make Purify happy.
*/
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM;
_CORE_semaphore_Initialize(
47252: 486e ffea pea %fp@(-22)
47256: 486a 0014 pea %a2@(20)
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
if ( _Attributes_Is_priority( attribute_set ) )
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
4725a: 44c1 movew %d1,%ccr
4725c: 56c0 sne %d0
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
/*
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
4725e: 2d42 ffea movel %d2,%fp@(-22)
if ( _Attributes_Is_priority( attribute_set ) )
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
47262: 49c0 extbl %d0
47264: 5280 addql #1,%d0
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
/*
* The following are just to make Purify happy.
*/
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
47266: 42ae fff2 clrl %fp@(-14)
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
if ( _Attributes_Is_priority( attribute_set ) )
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
4726a: 2d40 ffee movel %d0,%fp@(-18)
/*
* The following are just to make Purify happy.
*/
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM;
4726e: 42ae fffc clrl %fp@(-4)
_CORE_semaphore_Initialize(
47272: 4eb9 0004 83a4 jsr 483a4 <_CORE_semaphore_Initialize>
47278: 4fef 000c lea %sp@(12),%sp
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4727c: 202a 0008 movel %a2@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
47280: 2200 movel %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47282: 2079 0005 f950 moveal 5f950 <_Semaphore_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
47288: 0281 0000 ffff andil #65535,%d1
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4728e: 242e 0008 movel %fp@(8),%d2
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47292: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4)
&_Semaphore_Information,
&the_semaphore->Object,
(Objects_Name) name
);
*id = the_semaphore->Object.id;
47296: 206e 0018 moveal %fp@(24),%a0
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4729a: 2542 000c movel %d2,%a2@(12)
4729e: 2080 movel %d0,%a0@
the_semaphore->Object.id,
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
472a0: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
}
472a6: 242e ffe0 movel %fp@(-32),%d2
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
472aa: 4280 clrl %d0
}
472ac: 246e ffe4 moveal %fp@(-28),%a2
472b0: 4e5e unlk %fp
472b2: 4e75 rts
/*
* It is either simple binary semaphore or a more powerful mutex
* style binary semaphore. This is the mutex style.
*/
if ( _Attributes_Is_priority( attribute_set ) )
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY;
472b4: 202e 0010 movel %fp@(16),%d0
else
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
472b8: 7210 moveq #16,%d1
/*
* It is either simple binary semaphore or a more powerful mutex
* style binary semaphore. This is the mutex style.
*/
if ( _Attributes_Is_priority( attribute_set ) )
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY;
472ba: 44c0 movew %d0,%ccr
472bc: 56c0 sne %d0
472be: 49c0 extbl %d0
472c0: 5280 addql #1,%d0
472c2: 2d40 fff8 movel %d0,%fp@(-8)
else
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
472c6: b282 cmpl %d2,%d1
472c8: 676a beqs 47334 <rtems_semaphore_create+0x1a0>
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
the_mutex_attr.only_owner_release = true;
}
}
} else /* must be simple binary semaphore */ {
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS;
472ca: 7201 moveq #1,%d1
the_mutex_attr.only_owner_release = false;
472cc: 4202 clrb %d2
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
the_mutex_attr.only_owner_release = true;
}
}
} else /* must be simple binary semaphore */ {
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS;
472ce: 2d41 fff2 movel %d1,%fp@(-14)
the_mutex_attr.only_owner_release = false;
472d2: 1d42 fff6 moveb %d2,%fp@(-10)
}
mutex_status = _CORE_mutex_Initialize(
472d6: 7001 moveq #1,%d0
472d8: b0ae 000c cmpl %fp@(12),%d0
472dc: 57c0 seq %d0
472de: 49c0 extbl %d0
472e0: 4480 negl %d0
472e2: 2f00 movel %d0,%sp@-
472e4: 486e fff2 pea %fp@(-14)
472e8: 486a 0014 pea %a2@(20)
472ec: 4eb9 0004 8024 jsr 48024 <_CORE_mutex_Initialize>
&the_semaphore->Core_control.mutex,
&the_mutex_attr,
(count == 1) ? CORE_MUTEX_UNLOCKED : CORE_MUTEX_LOCKED
);
if ( mutex_status == CORE_MUTEX_STATUS_CEILING_VIOLATED ) {
472f2: 4fef 000c lea %sp@(12),%sp
472f6: 7205 moveq #5,%d1
472f8: b280 cmpl %d0,%d1
472fa: 6680 bnes 4727c <rtems_semaphore_create+0xe8>
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
472fc: 2f0a movel %a2,%sp@-
472fe: 4879 0005 f938 pea 5f938 <_Semaphore_Information>
47304: 4eb9 0004 8d5c jsr 48d5c <_Objects_Free>
_Semaphore_Free( the_semaphore );
_Thread_Enable_dispatch();
4730a: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47310: 242e ffe0 movel %fp@(-32),%d2
(count == 1) ? CORE_MUTEX_UNLOCKED : CORE_MUTEX_LOCKED
);
if ( mutex_status == CORE_MUTEX_STATUS_CEILING_VIOLATED ) {
_Semaphore_Free( the_semaphore );
_Thread_Enable_dispatch();
47314: 508f addql #8,%sp
return RTEMS_INVALID_PRIORITY;
47316: 7013 moveq #19,%d0
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47318: 246e ffe4 moveal %fp@(-28),%a2
4731c: 4e5e unlk %fp
4731e: 4e75 rts
_Thread_Disable_dispatch(); /* prevents deletion */
the_semaphore = _Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
47320: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47326: 242e ffe0 movel %fp@(-32),%d2
the_semaphore = _Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
4732a: 7005 moveq #5,%d0
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4732c: 246e ffe4 moveal %fp@(-28),%a2
47330: 4e5e unlk %fp
47332: 4e75 rts
else
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
the_mutex_attr.priority_ceiling = priority_ceiling;
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
47334: 42ae fff2 clrl %fp@(-14)
the_mutex_attr.only_owner_release = false;
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
47338: 7001 moveq #1,%d0
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
the_mutex_attr.priority_ceiling = priority_ceiling;
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.only_owner_release = false;
4733a: 4202 clrb %d2
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY;
else
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
the_mutex_attr.priority_ceiling = priority_ceiling;
4733c: 2d6e 0014 fffc movel %fp@(20),%fp@(-4)
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.only_owner_release = false;
47342: 1d42 fff6 moveb %d2,%fp@(-10)
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
47346: b0ae fff8 cmpl %fp@(-8),%d0
4734a: 668a bnes 472d6 <rtems_semaphore_create+0x142>
if ( _Attributes_Is_inherit_priority( attribute_set ) ) {
4734c: 222e 0010 movel %fp@(16),%d1
47350: 0801 0006 btst #6,%d1
47354: 670e beqs 47364 <rtems_semaphore_create+0x1d0>
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
47356: 7402 moveq #2,%d2
47358: 2d42 fff8 movel %d2,%fp@(-8)
the_mutex_attr.only_owner_release = true;
4735c: 1d40 fff6 moveb %d0,%fp@(-10)
47360: 6000 ff74 braw 472d6 <rtems_semaphore_create+0x142>
} else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) {
47364: 222e 0010 movel %fp@(16),%d1
47368: 4a01 tstb %d1
4736a: 6c00 ff6a bgew 472d6 <rtems_semaphore_create+0x142>
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
4736e: 7403 moveq #3,%d2
the_mutex_attr.only_owner_release = true;
47370: 7001 moveq #1,%d0
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
if ( _Attributes_Is_inherit_priority( attribute_set ) ) {
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
the_mutex_attr.only_owner_release = true;
} else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) {
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
47372: 2d42 fff8 movel %d2,%fp@(-8)
the_mutex_attr.only_owner_release = true;
47376: 1d40 fff6 moveb %d0,%fp@(-10)
4737a: 6000 ff5a braw 472d6 <rtems_semaphore_create+0x142>
...
00047380 <rtems_semaphore_delete>:
#endif
rtems_status_code rtems_semaphore_delete(
rtems_id id
)
{
47380: 4e56 fffc linkw %fp,#-4
47384: 2f0a movel %a2,%sp@-
RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Semaphore_Control *)
47386: 486e fffc pea %fp@(-4)
4738a: 2f2e 0008 movel %fp@(8),%sp@-
4738e: 4879 0005 f938 pea 5f938 <_Semaphore_Information>
47394: 4eb9 0004 8edc jsr 48edc <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
4739a: 4fef 000c lea %sp@(12),%sp
4739e: 2440 moveal %d0,%a2
473a0: 4aae fffc tstl %fp@(-4)
473a4: 6624 bnes 473ca <rtems_semaphore_delete+0x4a>
473a6: 7030 moveq #48,%d0
473a8: c0aa 0010 andl %a2@(16),%d0
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
473ac: 6726 beqs 473d4 <rtems_semaphore_delete+0x54>
if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) &&
473ae: 4aaa 0062 tstl %a2@(98)
473b2: 6664 bnes 47418 <rtems_semaphore_delete+0x98>
473b4: 7220 moveq #32,%d1
473b6: b280 cmpl %d0,%d1
473b8: 675e beqs 47418 <rtems_semaphore_delete+0x98>
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
473ba: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
473c0: 246e fff8 moveal %fp@(-8),%a2
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) &&
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
473c4: 700c moveq #12,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
473c6: 4e5e unlk %fp
473c8: 4e75 rts
473ca: 246e fff8 moveal %fp@(-8),%a2
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
473ce: 7004 moveq #4,%d0
}
473d0: 4e5e unlk %fp
473d2: 4e75 rts
&the_semaphore->Core_control.mutex,
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_MUTEX_WAS_DELETED
);
} else {
_CORE_semaphore_Flush(
473d4: 4878 0002 pea 2 <DOUBLE_FLOAT>
473d8: 42a7 clrl %sp@-
473da: 486a 0014 pea %a2@(20)
473de: 4eb9 0004 8398 jsr 48398 <_CORE_semaphore_Flush>
473e4: 4fef 000c lea %sp@(12),%sp
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_WAS_DELETED
);
}
_Objects_Close( &_Semaphore_Information, &the_semaphore->Object );
473e8: 2f0a movel %a2,%sp@-
473ea: 4879 0005 f938 pea 5f938 <_Semaphore_Information>
473f0: 4eb9 0004 8a74 jsr 48a74 <_Objects_Close>
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
473f6: 2f0a movel %a2,%sp@-
473f8: 4879 0005 f938 pea 5f938 <_Semaphore_Information>
473fe: 4eb9 0004 8d5c jsr 48d5c <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
47404: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
4740a: 4fef 0010 lea %sp@(16),%sp
return RTEMS_SUCCESSFUL;
4740e: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47410: 246e fff8 moveal %fp@(-8),%a2
47414: 4e5e unlk %fp
47416: 4e75 rts
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
}
_CORE_mutex_Flush(
47418: 4878 0003 pea 3 <DIVIDE>
4741c: 42a7 clrl %sp@-
4741e: 486a 0014 pea %a2@(20)
47422: 4eb9 0004 8018 jsr 48018 <_CORE_mutex_Flush>
47428: 4fef 000c lea %sp@(12),%sp
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_WAS_DELETED
);
}
_Objects_Close( &_Semaphore_Information, &the_semaphore->Object );
4742c: 2f0a movel %a2,%sp@-
4742e: 4879 0005 f938 pea 5f938 <_Semaphore_Information>
47434: 4eb9 0004 8a74 jsr 48a74 <_Objects_Close>
4743a: 2f0a movel %a2,%sp@-
4743c: 4879 0005 f938 pea 5f938 <_Semaphore_Information>
47442: 4eb9 0004 8d5c jsr 48d5c <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
47448: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
4744e: 4fef 0010 lea %sp@(16),%sp
return RTEMS_SUCCESSFUL;
47452: 4280 clrl %d0
47454: 60ba bras 47410 <rtems_semaphore_delete+0x90>
...
000507cc <rtems_semaphore_flush>:
#endif
rtems_status_code rtems_semaphore_flush(
rtems_id id
)
{
507cc: 4e56 fffc linkw %fp,#-4
507d0: 486e fffc pea %fp@(-4)
507d4: 2f2e 0008 movel %fp@(8),%sp@-
507d8: 4879 0006 3f1c pea 63f1c <_Semaphore_Information>
507de: 4eb9 0004 a840 jsr 4a840 <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
507e4: 4fef 000c lea %sp@(12),%sp
507e8: 4aae fffc tstl %fp@(-4)
507ec: 662a bnes 50818 <rtems_semaphore_flush+0x4c>
507ee: 7230 moveq #48,%d1
507f0: 2040 moveal %d0,%a0
507f2: c2a8 0010 andl %a0@(16),%d1
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
507f6: 6726 beqs 5081e <rtems_semaphore_flush+0x52>
_CORE_mutex_Flush(
507f8: 4878 0001 pea 1 <ADD>
507fc: 42a7 clrl %sp@-
507fe: 4868 0014 pea %a0@(20)
50802: 4eb9 0004 997c jsr 4997c <_CORE_mutex_Flush>
50808: 4fef 000c lea %sp@(12),%sp
&the_semaphore->Core_control.semaphore,
SEND_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT
);
}
_Thread_Enable_dispatch();
5080c: 4eb9 0004 b5b0 jsr 4b5b0 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
50812: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
50814: 4e5e unlk %fp
50816: 4e75 rts
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
50818: 7004 moveq #4,%d0
}
5081a: 4e5e unlk %fp
5081c: 4e75 rts
&the_semaphore->Core_control.mutex,
SEND_OBJECT_WAS_DELETED,
CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT
);
} else {
_CORE_semaphore_Flush(
5081e: 4878 0001 pea 1 <ADD>
50822: 2040 moveal %d0,%a0
50824: 42a7 clrl %sp@-
50826: 4868 0014 pea %a0@(20)
5082a: 4eb9 0004 9cfc jsr 49cfc <_CORE_semaphore_Flush>
50830: 4fef 000c lea %sp@(12),%sp
&the_semaphore->Core_control.semaphore,
SEND_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT
);
}
_Thread_Enable_dispatch();
50834: 4eb9 0004 b5b0 jsr 4b5b0 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
5083a: 4280 clrl %d0
5083c: 60d6 bras 50814 <rtems_semaphore_flush+0x48>
...
00047458 <rtems_semaphore_obtain>:
rtems_status_code rtems_semaphore_obtain(
rtems_id id,
rtems_option option_set,
rtems_interval timeout
)
{
47458: 4e56 fff8 linkw %fp,#-8
4745c: 2f02 movel %d2,%sp@-
Objects_Id id,
Objects_Locations *location,
ISR_Level *level
)
{
return (Semaphore_Control *)
4745e: 486e fffc pea %fp@(-4)
47462: 486e fff8 pea %fp@(-8)
47466: 2f2e 0008 movel %fp@(8),%sp@-
4746a: 4879 0005 f938 pea 5f938 <_Semaphore_Information>
47470: 4eb9 0004 8e74 jsr 48e74 <_Objects_Get_isr_disable>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
ISR_Level level;
the_semaphore = _Semaphore_Get_interrupt_disable( id, &location, &level );
switch ( location ) {
47476: 4fef 0010 lea %sp@(16),%sp
4747a: 4aae fff8 tstl %fp@(-8)
4747e: 6650 bnes 474d0 <rtems_semaphore_obtain+0x78>
47480: 7230 moveq #48,%d1
47482: 2040 moveal %d0,%a0
47484: c2a8 0010 andl %a0@(16),%d1
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
47488: 6650 bnes 474da <rtems_semaphore_obtain+0x82>
return _Semaphore_Translate_core_mutex_return_code(
_Thread_Executing->Wait.return_code );
}
/* must be a counting semaphore */
_CORE_semaphore_Seize_isr_disable(
4748a: 222e 000c movel %fp@(12),%d1
4748e: 0801 0000 btst #0,%d1
47492: 6700 00a6 beqw 4753a <rtems_semaphore_obtain+0xe2>
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
47496: 2240 moveal %d0,%a1
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
47498: 2079 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a0
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
4749e: 2229 005c movel %a1@(92),%d1
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
474a2: 42a8 0034 clrl %a0@(52)
if ( the_semaphore->count != 0 ) {
474a6: 4a81 tstl %d1
474a8: 666e bnes 47518 <rtems_semaphore_obtain+0xc0>
_ISR_Enable( *level_p );
return;
}
if ( !wait ) {
_ISR_Enable( *level_p );
474aa: 202e fffc movel %fp@(-4),%d0
474ae: 46c0 movew %d0,%sr
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
474b0: 7001 moveq #1,%d0
474b2: 2140 0034 movel %d0,%a0@(52)
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
_Thread_Executing->Wait.return_code );
474b6: 2079 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a0
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
474bc: 2f28 0034 movel %a0@(52),%sp@-
474c0: 4eb9 0004 765a jsr 4765a <_Semaphore_Translate_core_semaphore_return_code>
474c6: 588f addql #4,%sp
break;
}
return RTEMS_INVALID_ID;
}
474c8: 242e fff4 movel %fp@(-12),%d2
474cc: 4e5e unlk %fp
474ce: 4e75 rts
474d0: 242e fff4 movel %fp@(-12),%d2
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
474d4: 7004 moveq #4,%d0
}
474d6: 4e5e unlk %fp
474d8: 4e75 rts
the_semaphore = _Semaphore_Get_interrupt_disable( id, &location, &level );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
_CORE_mutex_Seize(
474da: 2f2e fffc movel %fp@(-4),%sp@-
474de: 7401 moveq #1,%d2
474e0: 222e 000c movel %fp@(12),%d1
474e4: 4681 notl %d1
474e6: 2f2e 0010 movel %fp@(16),%sp@-
474ea: c481 andl %d1,%d2
474ec: 2f02 movel %d2,%sp@-
474ee: 2f2e 0008 movel %fp@(8),%sp@-
474f2: 4868 0014 pea %a0@(20)
474f6: 4eb9 0004 81ac jsr 481ac <_CORE_mutex_Seize>
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
level
);
return _Semaphore_Translate_core_mutex_return_code(
_Thread_Executing->Wait.return_code );
474fc: 2079 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a0
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
level
);
return _Semaphore_Translate_core_mutex_return_code(
47502: 2f28 0034 movel %a0@(52),%sp@-
47506: 4eb9 0004 7644 jsr 47644 <_Semaphore_Translate_core_mutex_return_code>
break;
}
return RTEMS_INVALID_ID;
}
4750c: 242e fff4 movel %fp@(-12),%d2
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
level
);
return _Semaphore_Translate_core_mutex_return_code(
47510: 4fef 0018 lea %sp@(24),%sp
break;
}
return RTEMS_INVALID_ID;
}
47514: 4e5e unlk %fp
47516: 4e75 rts
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
the_semaphore->count -= 1;
47518: 5381 subql #1,%d1
4751a: 2040 moveal %d0,%a0
4751c: 2141 005c movel %d1,%a0@(92)
_ISR_Enable( *level_p );
47520: 202e fffc movel %fp@(-4),%d0
47524: 46c0 movew %d0,%sr
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
_Thread_Executing->Wait.return_code );
47526: 2079 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a0
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
4752c: 2f28 0034 movel %a0@(52),%sp@-
47530: 4eb9 0004 765a jsr 4765a <_Semaphore_Translate_core_semaphore_return_code>
47536: 588f addql #4,%sp
47538: 608e bras 474c8 <rtems_semaphore_obtain+0x70>
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
4753a: 2240 moveal %d0,%a1
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
4753c: 2079 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a0
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
47542: 2229 005c movel %a1@(92),%d1
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
47546: 42a8 0034 clrl %a0@(52)
if ( the_semaphore->count != 0 ) {
4754a: 4a81 tstl %d1
4754c: 66ca bnes 47518 <rtems_semaphore_obtain+0xc0>
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
4754e: 2239 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d1
++level;
47554: 5281 addql #1,%d1
_Thread_Dispatch_disable_level = level;
47556: 23c1 0005 fa06 movel %d1,5fa06 <_Thread_Dispatch_disable_level>
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
4755c: 7201 moveq #1,%d1
4755e: 2240 moveal %d0,%a1
return;
}
_Thread_Disable_dispatch();
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
47560: 0680 0000 0014 addil #20,%d0
47566: 2341 0044 movel %d1,%a1@(68)
executing->Wait.id = id;
4756a: 222e 0008 movel %fp@(8),%d1
return;
}
_Thread_Disable_dispatch();
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
4756e: 2140 0044 movel %d0,%a0@(68)
executing->Wait.id = id;
47572: 2141 0020 movel %d1,%a0@(32)
_ISR_Enable( *level_p );
47576: 222e fffc movel %fp@(-4),%d1
4757a: 46c1 movew %d1,%sr
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
4757c: 4879 0004 a4f0 pea 4a4f0 <_Thread_queue_Timeout>
47582: 2f2e 0010 movel %fp@(16),%sp@-
47586: 2f00 movel %d0,%sp@-
47588: 4eb9 0004 a120 jsr 4a120 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
4758e: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
_Thread_Executing->Wait.return_code );
47594: 2079 0005 fb7e moveal 5fb7e <_Per_CPU_Information+0xe>,%a0
4759a: 4fef 000c lea %sp@(12),%sp
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
4759e: 2f28 0034 movel %a0@(52),%sp@-
475a2: 4eb9 0004 765a jsr 4765a <_Semaphore_Translate_core_semaphore_return_code>
475a8: 588f addql #4,%sp
475aa: 6000 ff1c braw 474c8 <rtems_semaphore_obtain+0x70>
...
00061112 <rtems_shell_rfs_format>:
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
61112: 7201 moveq #1,%d1 <== NOT EXECUTED
return 1;
}
int
rtems_shell_rfs_format (int argc, char* argv[])
{
61114: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED
rtems_rfs_format_config config;
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
61118: 4240 clrw %d0 <== NOT EXECUTED
return 1;
}
int
rtems_shell_rfs_format (int argc, char* argv[])
{
6111a: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
6111e: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
61122: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
rtems_rfs_format_config config;
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
61126: 3d40 fffe movew %d0,%fp@(-2) <== NOT EXECUTED
6112a: 42ae ffea clrl %fp@(-22) <== NOT EXECUTED
6112e: 42ae ffee clrl %fp@(-18) <== NOT EXECUTED
61132: 42ae fff2 clrl %fp@(-14) <== NOT EXECUTED
61136: 42ae fff6 clrl %fp@(-10) <== NOT EXECUTED
6113a: 42ae fffa clrl %fp@(-6) <== NOT EXECUTED
for (arg = 1; arg < argc; arg++)
6113e: b284 cmpl %d4,%d1 <== NOT EXECUTED
61140: 6c00 01ec bgew 6132e <rtems_shell_rfs_format+0x21c> <== NOT EXECUTED
61144: 7401 moveq #1,%d2 <== NOT EXECUTED
61146: 4283 clrl %d3 <== NOT EXECUTED
if (arg >= argc)
{
printf ("error: inode percentage overhead needs an argument\n");
return 1;
}
config.inode_overhead = strtoul (argv[arg], 0, 0);
61148: 47f9 0007 eeca lea 7eeca <strtoul>,%a3 <== NOT EXECUTED
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
{
if (argv[arg][0] == '-')
6114e: 2072 2c00 moveal %a2@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
61152: 722d moveq #45,%d1 <== NOT EXECUTED
61154: 1010 moveb %a0@,%d0 <== NOT EXECUTED
61156: 49c0 extbl %d0 <== NOT EXECUTED
61158: b280 cmpl %d0,%d1 <== NOT EXECUTED
6115a: 6734 beqs 61190 <rtems_shell_rfs_format+0x7e> <== NOT EXECUTED
return 1;
}
}
else
{
if (!driver)
6115c: 4a83 tstl %d3 <== NOT EXECUTED
6115e: 6600 0182 bnew 612e2 <rtems_shell_rfs_format+0x1d0> <== NOT EXECUTED
61162: 2608 movel %a0,%d3 <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
61164: 5282 addql #1,%d2 <== NOT EXECUTED
61166: b484 cmpl %d4,%d2 <== NOT EXECUTED
61168: 6de4 blts 6114e <rtems_shell_rfs_format+0x3c> <== NOT EXECUTED
return 1;
}
}
}
if (!driver) {
6116a: 4a83 tstl %d3 <== NOT EXECUTED
6116c: 6700 01c0 beqw 6132e <rtems_shell_rfs_format+0x21c> <== NOT EXECUTED
printf ("error: no driver name provided\n");
return 1;
}
if (rtems_rfs_format (driver, &config) < 0)
61170: 486e ffea pea %fp@(-22) <== NOT EXECUTED
61174: 2f03 movel %d3,%sp@- <== NOT EXECUTED
61176: 4eb9 0006 ea04 jsr 6ea04 <rtems_rfs_format> <== NOT EXECUTED
6117c: 508f addql #8,%sp <== NOT EXECUTED
6117e: 4a80 tstl %d0 <== NOT EXECUTED
61180: 6d00 017c bltw 612fe <rtems_shell_rfs_format+0x1ec> <== NOT EXECUTED
printf ("error: format of %s failed: %s\n",
driver, strerror (errno));
return 1;
}
return 0;
61184: 4280 clrl %d0 <== NOT EXECUTED
}
61186: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
6118c: 4e5e unlk %fp <== NOT EXECUTED
6118e: 4e75 rts <== NOT EXECUTED
for (arg = 1; arg < argc; arg++)
{
if (argv[arg][0] == '-')
{
switch (argv[arg][1])
61190: 1028 0001 moveb %a0@(1),%d0 <== NOT EXECUTED
61194: 0680 ffff ffb7 addil #-73,%d0 <== NOT EXECUTED
6119a: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
611a0: b280 cmpl %d0,%d1 <== NOT EXECUTED
611a2: 641c bccs 611c0 <rtems_shell_rfs_format+0xae> <== NOT EXECUTED
}
config.inode_overhead = strtoul (argv[arg], 0, 0);
break;
default:
printf ("error: invalid option: %s\n", argv[arg]);
611a4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
611a6: 4879 0009 47e5 pea 947e5 <iMinorError+0x2f1> <== NOT EXECUTED
611ac: 4eb9 0007 b884 jsr 7b884 <printf> <== NOT EXECUTED
611b2: 508f addql #8,%sp <== NOT EXECUTED
return 1;
611b4: 7001 moveq #1,%d0 <== NOT EXECUTED
driver, strerror (errno));
return 1;
}
return 0;
}
611b6: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
611bc: 4e5e unlk %fp <== NOT EXECUTED
611be: 4e75 rts <== NOT EXECUTED
for (arg = 1; arg < argc; arg++)
{
if (argv[arg][0] == '-')
{
switch (argv[arg][1])
611c0: 303b 0a08 movew %pc@(611ca <rtems_shell_rfs_format+0xb8>,%d0:l:2),%d0<== NOT EXECUTED
611c4: 48c0 extl %d0 <== NOT EXECUTED
611c6: 4efb 0802 jmp %pc@(611ca <rtems_shell_rfs_format+0xb8>,%d0:l)<== NOT EXECUTED
611ca: 0106 btst %d0,%d6 <== NOT EXECUTED
611cc: ffda .short 0xffda <== NOT EXECUTED
611ce: ffda .short 0xffda <== NOT EXECUTED
611d0: ffda .short 0xffda <== NOT EXECUTED
611d2: ffda .short 0xffda <== NOT EXECUTED
611d4: ffda .short 0xffda <== NOT EXECUTED
611d6: ffda .short 0xffda <== NOT EXECUTED
611d8: ffda .short 0xffda <== NOT EXECUTED
611da: ffda .short 0xffda <== NOT EXECUTED
611dc: ffda .short 0xffda <== NOT EXECUTED
611de: ffda .short 0xffda <== NOT EXECUTED
611e0: ffda .short 0xffda <== NOT EXECUTED
611e2: ffda .short 0xffda <== NOT EXECUTED
611e4: ffda .short 0xffda <== NOT EXECUTED
611e6: ffda .short 0xffda <== NOT EXECUTED
611e8: ffda .short 0xffda <== NOT EXECUTED
611ea: ffda .short 0xffda <== NOT EXECUTED
611ec: ffda .short 0xffda <== NOT EXECUTED
611ee: ffda .short 0xffda <== NOT EXECUTED
611f0: ffda .short 0xffda <== NOT EXECUTED
611f2: ffda .short 0xffda <== NOT EXECUTED
611f4: ffda .short 0xffda <== NOT EXECUTED
611f6: ffda .short 0xffda <== NOT EXECUTED
611f8: ffda .short 0xffda <== NOT EXECUTED
611fa: ffda .short 0xffda <== NOT EXECUTED
611fc: 00e0 .short 0x00e0 <== NOT EXECUTED
611fe: ffda .short 0xffda <== NOT EXECUTED
61200: ffda .short 0xffda <== NOT EXECUTED
61202: ffda .short 0xffda <== NOT EXECUTED
61204: ffda .short 0xffda <== NOT EXECUTED
61206: ffda .short 0xffda <== NOT EXECUTED
61208: ffda .short 0xffda <== NOT EXECUTED
6120a: 00ba ffda ffda oril #-2424870,%d2 <== NOT EXECUTED
61210: ffda .short 0xffda <== NOT EXECUTED
61212: ffda .short 0xffda <== NOT EXECUTED
61214: ffda .short 0xffda <== NOT EXECUTED
61216: 0094 ffda ffda oril #-2424870,%d4 <== NOT EXECUTED
6121c: ffda .short 0xffda <== NOT EXECUTED
6121e: 006e .short 0x006e <== NOT EXECUTED
61220: ffda .short 0xffda <== NOT EXECUTED
61222: ffda .short 0xffda <== NOT EXECUTED
61224: 005c .short 0x005c <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
61226: 5282 addql #1,%d2 <== NOT EXECUTED
if (argv[arg][0] == '-')
{
switch (argv[arg][1])
{
case 'v':
config.verbose = true;
61228: 7001 moveq #1,%d0 <== NOT EXECUTED
6122a: 1d40 ffff moveb %d0,%fp@(-1) <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
6122e: b484 cmpl %d4,%d2 <== NOT EXECUTED
61230: 6d00 ff1c bltw 6114e <rtems_shell_rfs_format+0x3c> <== NOT EXECUTED
61234: 6000 ff34 braw 6116a <rtems_shell_rfs_format+0x58> <== NOT EXECUTED
case 'v':
config.verbose = true;
break;
case 's':
arg++;
61238: 5282 addql #1,%d2 <== NOT EXECUTED
if (arg >= argc)
6123a: b484 cmpl %d4,%d2 <== NOT EXECUTED
6123c: 6c00 0124 bgew 61362 <rtems_shell_rfs_format+0x250> <== NOT EXECUTED
{
printf ("error: block size needs an argument\n");
return 1;
}
config.block_size = strtoul (argv[arg], 0, 0);
61240: 42a7 clrl %sp@- <== NOT EXECUTED
61242: 42a7 clrl %sp@- <== NOT EXECUTED
61244: 2f32 2c00 movel %a2@(00000000,%d2:l:4),%sp@- <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
61248: 5282 addql #1,%d2 <== NOT EXECUTED
if (arg >= argc)
{
printf ("error: block size needs an argument\n");
return 1;
}
config.block_size = strtoul (argv[arg], 0, 0);
6124a: 4e93 jsr %a3@ <== NOT EXECUTED
break;
6124c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (arg >= argc)
{
printf ("error: block size needs an argument\n");
return 1;
}
config.block_size = strtoul (argv[arg], 0, 0);
61250: 2d40 ffea movel %d0,%fp@(-22) <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
61254: b484 cmpl %d4,%d2 <== NOT EXECUTED
61256: 6d00 fef6 bltw 6114e <rtems_shell_rfs_format+0x3c> <== NOT EXECUTED
6125a: 6000 ff0e braw 6116a <rtems_shell_rfs_format+0x58> <== NOT EXECUTED
case 'I':
config.initialise_inodes = true;
break;
case 'o':
arg++;
6125e: 5282 addql #1,%d2 <== NOT EXECUTED
if (arg >= argc)
61260: b484 cmpl %d4,%d2 <== NOT EXECUTED
61262: 6c00 0132 bgew 61396 <rtems_shell_rfs_format+0x284> <== NOT EXECUTED
{
printf ("error: inode percentage overhead needs an argument\n");
return 1;
}
config.inode_overhead = strtoul (argv[arg], 0, 0);
61266: 42a7 clrl %sp@- <== NOT EXECUTED
61268: 42a7 clrl %sp@- <== NOT EXECUTED
6126a: 2f32 2c00 movel %a2@(00000000,%d2:l:4),%sp@- <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
6126e: 5282 addql #1,%d2 <== NOT EXECUTED
if (arg >= argc)
{
printf ("error: inode percentage overhead needs an argument\n");
return 1;
}
config.inode_overhead = strtoul (argv[arg], 0, 0);
61270: 4e93 jsr %a3@ <== NOT EXECUTED
break;
61272: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (arg >= argc)
{
printf ("error: inode percentage overhead needs an argument\n");
return 1;
}
config.inode_overhead = strtoul (argv[arg], 0, 0);
61276: 2d40 fff6 movel %d0,%fp@(-10) <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
6127a: b484 cmpl %d4,%d2 <== NOT EXECUTED
6127c: 6d00 fed0 bltw 6114e <rtems_shell_rfs_format+0x3c> <== NOT EXECUTED
61280: 6000 fee8 braw 6116a <rtems_shell_rfs_format+0x58> <== NOT EXECUTED
}
config.group_blocks = strtoul (argv[arg], 0, 0);
break;
case 'i':
arg++;
61284: 5282 addql #1,%d2 <== NOT EXECUTED
if (arg >= argc)
61286: b484 cmpl %d4,%d2 <== NOT EXECUTED
61288: 6c00 00f2 bgew 6137c <rtems_shell_rfs_format+0x26a> <== NOT EXECUTED
{
printf ("error: group inode count needs an argument\n");
return 1;
}
config.group_inodes = strtoul (argv[arg], 0, 0);
6128c: 42a7 clrl %sp@- <== NOT EXECUTED
6128e: 42a7 clrl %sp@- <== NOT EXECUTED
61290: 2f32 2c00 movel %a2@(00000000,%d2:l:4),%sp@- <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
61294: 5282 addql #1,%d2 <== NOT EXECUTED
if (arg >= argc)
{
printf ("error: group inode count needs an argument\n");
return 1;
}
config.group_inodes = strtoul (argv[arg], 0, 0);
61296: 4e93 jsr %a3@ <== NOT EXECUTED
break;
61298: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (arg >= argc)
{
printf ("error: group inode count needs an argument\n");
return 1;
}
config.group_inodes = strtoul (argv[arg], 0, 0);
6129c: 2d40 fff2 movel %d0,%fp@(-14) <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
612a0: b484 cmpl %d4,%d2 <== NOT EXECUTED
612a2: 6d00 feaa bltw 6114e <rtems_shell_rfs_format+0x3c> <== NOT EXECUTED
612a6: 6000 fec2 braw 6116a <rtems_shell_rfs_format+0x58> <== NOT EXECUTED
}
config.block_size = strtoul (argv[arg], 0, 0);
break;
case 'b':
arg++;
612aa: 5282 addql #1,%d2 <== NOT EXECUTED
if (arg >= argc)
612ac: b484 cmpl %d4,%d2 <== NOT EXECUTED
612ae: 6c00 0098 bgew 61348 <rtems_shell_rfs_format+0x236> <== NOT EXECUTED
{
printf ("error: group block count needs an argument\n");
return 1;
}
config.group_blocks = strtoul (argv[arg], 0, 0);
612b2: 42a7 clrl %sp@- <== NOT EXECUTED
612b4: 42a7 clrl %sp@- <== NOT EXECUTED
612b6: 2f32 2c00 movel %a2@(00000000,%d2:l:4),%sp@- <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
612ba: 5282 addql #1,%d2 <== NOT EXECUTED
if (arg >= argc)
{
printf ("error: group block count needs an argument\n");
return 1;
}
config.group_blocks = strtoul (argv[arg], 0, 0);
612bc: 4e93 jsr %a3@ <== NOT EXECUTED
break;
612be: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (arg >= argc)
{
printf ("error: group block count needs an argument\n");
return 1;
}
config.group_blocks = strtoul (argv[arg], 0, 0);
612c2: 2d40 ffee movel %d0,%fp@(-18) <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
612c6: b484 cmpl %d4,%d2 <== NOT EXECUTED
612c8: 6d00 fe84 bltw 6114e <rtems_shell_rfs_format+0x3c> <== NOT EXECUTED
612cc: 6000 fe9c braw 6116a <rtems_shell_rfs_format+0x58> <== NOT EXECUTED
612d0: 5282 addql #1,%d2 <== NOT EXECUTED
}
config.group_inodes = strtoul (argv[arg], 0, 0);
break;
case 'I':
config.initialise_inodes = true;
612d2: 7201 moveq #1,%d1 <== NOT EXECUTED
612d4: 1d41 fffe moveb %d1,%fp@(-2) <== NOT EXECUTED
const char* driver = NULL;
int arg;
memset (&config, 0, sizeof (rtems_rfs_format_config));
for (arg = 1; arg < argc; arg++)
612d8: b484 cmpl %d4,%d2 <== NOT EXECUTED
612da: 6d00 fe72 bltw 6114e <rtems_shell_rfs_format+0x3c> <== NOT EXECUTED
612de: 6000 fe8a braw 6116a <rtems_shell_rfs_format+0x58> <== NOT EXECUTED
{
if (!driver)
driver = argv[arg];
else
{
printf ("error: only one driver name allowed: %s\n", argv[arg]);
612e2: 2f08 movel %a0,%sp@- <== NOT EXECUTED
612e4: 4879 0009 62ad pea 962ad <rtems_rtc_shell_usage+0x14ad> <== NOT EXECUTED
612ea: 4eb9 0007 b884 jsr 7b884 <printf> <== NOT EXECUTED
612f0: 508f addql #8,%sp <== NOT EXECUTED
return 1;
612f2: 7001 moveq #1,%d0 <== NOT EXECUTED
driver, strerror (errno));
return 1;
}
return 0;
}
612f4: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
612fa: 4e5e unlk %fp <== NOT EXECUTED
612fc: 4e75 rts <== NOT EXECUTED
}
if (rtems_rfs_format (driver, &config) < 0)
{
printf ("error: format of %s failed: %s\n",
driver, strerror (errno));
612fe: 4eb9 0007 7798 jsr 77798 <__errno> <== NOT EXECUTED
return 1;
}
if (rtems_rfs_format (driver, &config) < 0)
{
printf ("error: format of %s failed: %s\n",
61304: 2040 moveal %d0,%a0 <== NOT EXECUTED
61306: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
61308: 4eb9 0007 d81c jsr 7d81c <strerror> <== NOT EXECUTED
6130e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
61310: 2f03 movel %d3,%sp@- <== NOT EXECUTED
61312: 4879 0009 62d6 pea 962d6 <rtems_rtc_shell_usage+0x14d6> <== NOT EXECUTED
61318: 4eb9 0007 b884 jsr 7b884 <printf> <== NOT EXECUTED
6131e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
driver, strerror (errno));
return 1;
61322: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return 0;
}
61324: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
6132a: 4e5e unlk %fp <== NOT EXECUTED
6132c: 4e75 rts <== NOT EXECUTED
}
}
}
if (!driver) {
printf ("error: no driver name provided\n");
6132e: 4879 0009 61e1 pea 961e1 <rtems_rtc_shell_usage+0x13e1> <== NOT EXECUTED
61334: 4eb9 0007 bad4 jsr 7bad4 <puts> <== NOT EXECUTED
6133a: 588f addql #4,%sp <== NOT EXECUTED
return 1;
6133c: 7001 moveq #1,%d0 <== NOT EXECUTED
driver, strerror (errno));
return 1;
}
return 0;
}
6133e: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
61344: 4e5e unlk %fp <== NOT EXECUTED
61346: 4e75 rts <== NOT EXECUTED
case 'b':
arg++;
if (arg >= argc)
{
printf ("error: group block count needs an argument\n");
61348: 4879 0009 6224 pea 96224 <rtems_rtc_shell_usage+0x1424> <== NOT EXECUTED
6134e: 4eb9 0007 bad4 jsr 7bad4 <puts> <== NOT EXECUTED
61354: 588f addql #4,%sp <== NOT EXECUTED
return 1;
61356: 7001 moveq #1,%d0 <== NOT EXECUTED
driver, strerror (errno));
return 1;
}
return 0;
}
61358: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
6135e: 4e5e unlk %fp <== NOT EXECUTED
61360: 4e75 rts <== NOT EXECUTED
case 's':
arg++;
if (arg >= argc)
{
printf ("error: block size needs an argument\n");
61362: 4879 0009 6200 pea 96200 <rtems_rtc_shell_usage+0x1400> <== NOT EXECUTED
61368: 4eb9 0007 bad4 jsr 7bad4 <puts> <== NOT EXECUTED
6136e: 588f addql #4,%sp <== NOT EXECUTED
return 1;
61370: 7001 moveq #1,%d0 <== NOT EXECUTED
driver, strerror (errno));
return 1;
}
return 0;
}
61372: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
61378: 4e5e unlk %fp <== NOT EXECUTED
6137a: 4e75 rts <== NOT EXECUTED
case 'i':
arg++;
if (arg >= argc)
{
printf ("error: group inode count needs an argument\n");
6137c: 4879 0009 624f pea 9624f <rtems_rtc_shell_usage+0x144f> <== NOT EXECUTED
61382: 4eb9 0007 bad4 jsr 7bad4 <puts> <== NOT EXECUTED
61388: 588f addql #4,%sp <== NOT EXECUTED
return 1;
6138a: 7001 moveq #1,%d0 <== NOT EXECUTED
driver, strerror (errno));
return 1;
}
return 0;
}
6138c: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
61392: 4e5e unlk %fp <== NOT EXECUTED
61394: 4e75 rts <== NOT EXECUTED
case 'o':
arg++;
if (arg >= argc)
{
printf ("error: inode percentage overhead needs an argument\n");
61396: 4879 0009 627a pea 9627a <rtems_rtc_shell_usage+0x147a> <== NOT EXECUTED
6139c: 4eb9 0007 bad4 jsr 7bad4 <puts> <== NOT EXECUTED
613a2: 588f addql #4,%sp <== NOT EXECUTED
return 1;
613a4: 7001 moveq #1,%d0 <== NOT EXECUTED
driver, strerror (errno));
return 1;
}
return 0;
}
613a6: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
613ac: 4e5e unlk %fp <== NOT EXECUTED
00047bb4 <rtems_shutdown_executive>:
void rtems_shutdown_executive(
uint32_t result
)
{
if ( _System_state_Is_up( _System_state_Get() ) ) {
47bb4: 7003 moveq #3,%d0
*/
void rtems_shutdown_executive(
uint32_t result
)
{
47bb6: 4e56 0000 linkw %fp,#0
if ( _System_state_Is_up( _System_state_Get() ) ) {
47bba: b0b9 0005 fb6c cmpl 5fb6c <_System_state_Current>,%d0
47bc0: 6710 beqs 47bd2 <rtems_shutdown_executive+0x1e>
****** RETURN TO RTEMS_INITIALIZE_START_MULTITASKING() ******
****** AND THEN TO BOOT_CARD() ******
*******************************************************************
*******************************************************************/
}
_Internal_error_Occurred(
47bc2: 4878 0014 pea 14 <OPER2>
47bc6: 4878 0001 pea 1 <ADD>
47bca: 42a7 clrl %sp@-
47bcc: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred>
if ( _System_state_Is_up( _System_state_Get() ) ) {
#if defined(RTEMS_SMP)
_SMP_Request_other_cores_to_shutdown();
#endif
_Per_CPU_Information[0].idle->Wait.return_code = result;
47bd2: 2079 0005 fb86 moveal 5fb86 <_Per_CPU_Information+0x16>,%a0
47bd8: 103c 0004 moveb #4,%d0
47bdc: 216e 0008 0034 movel %fp@(8),%a0@(52)
* if we were running within the same context, it would work.
*
* And we will not return to this thread, so there is no point of
* saving the context.
*/
_Context_Restart_self( &_Thread_BSP_context );
47be2: 4879 0005 f9d2 pea 5f9d2 <_Thread_BSP_context>
47be8: 23c0 0005 fb6c movel %d0,5fb6c <_System_state_Current>
47bee: 4eb9 0004 ac76 jsr 4ac76 <_CPU_Context_Restart_self>
47bf4: 588f addql #4,%sp <== NOT EXECUTED
****** RETURN TO RTEMS_INITIALIZE_START_MULTITASKING() ******
****** AND THEN TO BOOT_CARD() ******
*******************************************************************
*******************************************************************/
}
_Internal_error_Occurred(
47bf6: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
47bfa: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
47bfe: 42a7 clrl %sp@- <== NOT EXECUTED
47c00: 4eb9 0004 891c jsr 4891c <_Internal_error_Occurred> <== NOT EXECUTED
...
00056988 <rtems_signal_send>:
rtems_status_code rtems_signal_send(
rtems_id id,
rtems_signal_set signal_set
)
{
56988: 4e56 fffc linkw %fp,#-4
5698c: 2f02 movel %d2,%sp@-
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !signal_set )
5698e: 4aae 000c tstl %fp@(12)
56992: 660a bnes 5699e <rtems_signal_send+0x16>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56994: 242e fff8 movel %fp@(-8),%d2
Objects_Locations location;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !signal_set )
return RTEMS_INVALID_NUMBER;
56998: 700a moveq #10,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5699a: 4e5e unlk %fp
5699c: 4e75 rts
ASR_Information *asr;
if ( !signal_set )
return RTEMS_INVALID_NUMBER;
the_thread = _Thread_Get( id, &location );
5699e: 486e fffc pea %fp@(-4)
569a2: 2f2e 0008 movel %fp@(8),%sp@-
569a6: 4eb9 0005 b208 jsr 5b208 <_Thread_Get>
switch ( location ) {
569ac: 508f addql #8,%sp
569ae: 4aae fffc tstl %fp@(-4)
569b2: 6648 bnes 569fc <rtems_signal_send+0x74>
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
569b4: 2240 moveal %d0,%a1
569b6: 2069 00f8 moveal %a1@(248),%a0
asr = &api->Signal;
if ( ! _ASR_Is_null_handler( asr->handler ) ) {
569ba: 4aa8 000a tstl %a0@(10)
569be: 6746 beqs 56a06 <rtems_signal_send+0x7e>
if ( asr->is_enabled ) {
569c0: 4a28 0008 tstb %a0@(8)
569c4: 6762 beqs 56a28 <rtems_signal_send+0xa0>
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
569c6: 223c 0000 0700 movel #1792,%d1
569cc: 40c2 movew %sr,%d2
569ce: 8282 orl %d2,%d1
569d0: 46c1 movew %d1,%sr
*signal_set |= signals;
569d2: 222e 000c movel %fp@(12),%d1
569d6: 83a8 0012 orl %d1,%a0@(18)
_ISR_Enable( _level );
569da: 46c2 movew %d2,%sr
_ASR_Post_signals( signal_set, &asr->signals_posted );
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
569dc: 4ab9 0007 c47c tstl 7c47c <_Per_CPU_Information+0x8>
569e2: 6708 beqs 569ec <rtems_signal_send+0x64>
569e4: b0b9 0007 c482 cmpl 7c482 <_Per_CPU_Information+0xe>,%d0
569ea: 672a beqs 56a16 <rtems_signal_send+0x8e> <== ALWAYS TAKEN
_Thread_Dispatch_necessary = true;
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
569ec: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
569f2: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
569f4: 242e fff8 movel %fp@(-8),%d2
569f8: 4e5e unlk %fp
569fa: 4e75 rts
569fc: 242e fff8 movel %fp@(-8),%d2
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56a00: 7004 moveq #4,%d0
}
56a02: 4e5e unlk %fp
56a04: 4e75 rts
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
56a06: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a0c: 242e fff8 movel %fp@(-8),%d2
}
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
56a10: 700b moveq #11,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a12: 4e5e unlk %fp
56a14: 4e75 rts
if ( ! _ASR_Is_null_handler( asr->handler ) ) {
if ( asr->is_enabled ) {
_ASR_Post_signals( signal_set, &asr->signals_posted );
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
56a16: 7001 moveq #1,%d0
56a18: 13c0 0007 c480 moveb %d0,7c480 <_Per_CPU_Information+0xc>
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
56a1e: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
56a24: 4280 clrl %d0
56a26: 60cc bras 569f4 <rtems_signal_send+0x6c>
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
56a28: 203c 0000 0700 movel #1792,%d0
56a2e: 40c1 movew %sr,%d1
56a30: 8081 orl %d1,%d0
56a32: 46c0 movew %d0,%sr
*signal_set |= signals;
56a34: 202e 000c movel %fp@(12),%d0
56a38: 81a8 0016 orl %d0,%a0@(22)
_ISR_Enable( _level );
56a3c: 46c1 movew %d1,%sr
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
56a3e: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
56a44: 4280 clrl %d0
56a46: 60ac bras 569f4 <rtems_signal_send+0x6c>
0004e8e2 <rtems_sparse_disk_create_and_register>:
const char *device_file_name,
uint32_t media_block_size,
rtems_blkdev_bnum blocks_with_buffer,
rtems_blkdev_bnum media_block_count,
uint8_t fill_pattern )
{
4e8e2: 4e56 fff4 linkw %fp,#-12
4e8e6: 48d7 001c moveml %d2-%d4,%sp@
4e8ea: 262e 000c movel %fp@(12),%d3
4e8ee: 2003 movel %d3,%d0
4e8f0: 5080 addql #8,%d0
4e8f2: 242e 0010 movel %fp@(16),%d2
const rtems_blkdev_bnum blocks_with_buffer )
{
size_t const key_table_size = blocks_with_buffer
* sizeof( rtems_sparse_disk_key );
size_t const data_size = blocks_with_buffer * media_block_size;
size_t const alloc_size = sizeof( rtems_sparse_disk )
4e8f6: 4c02 0800 mulsl %d2,%d0
const char *device_file_name,
uint32_t media_block_size,
rtems_blkdev_bnum blocks_with_buffer,
rtems_blkdev_bnum media_block_count,
uint8_t fill_pattern )
{
4e8fa: 182e 001b moveb %fp@(27),%d4
* sizeof( rtems_sparse_disk_key );
size_t const data_size = blocks_with_buffer * media_block_size;
size_t const alloc_size = sizeof( rtems_sparse_disk )
+ key_table_size + data_size;
rtems_sparse_disk *const sd = (rtems_sparse_disk *) malloc(
4e8fe: 2040 moveal %d0,%a0
4e900: 4868 001a pea %a0@(26)
4e904: 4eb9 0004 50f4 jsr 450f4 <malloc>
rtems_sparse_disk *sparse_disk = sparse_disk_allocate(
media_block_size,
blocks_with_buffer
);
if ( sparse_disk != NULL ) {
4e90a: 588f addql #4,%sp
4e90c: 4a80 tstl %d0
4e90e: 6730 beqs 4e940 <rtems_sparse_disk_create_and_register+0x5e><== NEVER TAKEN
sc = rtems_sparse_disk_register(
4e910: 4879 0004 e7d4 pea 4e7d4 <rtems_sparse_disk_free>
4e916: 0284 0000 00ff andil #255,%d4
4e91c: 2f04 movel %d4,%sp@-
4e91e: 2f2e 0014 movel %fp@(20),%sp@-
4e922: 2f02 movel %d2,%sp@-
4e924: 2f03 movel %d3,%sp@-
4e926: 2f00 movel %d0,%sp@-
4e928: 2f2e 0008 movel %fp@(8),%sp@-
4e92c: 4eb9 0004 e7e0 jsr 4e7e0 <rtems_sparse_disk_register>
4e932: 4fef 001c lea %sp@(28),%sp
} else {
sc = RTEMS_NO_MEMORY;
}
return sc;
}
4e936: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4
4e93c: 4e5e unlk %fp
4e93e: 4e75 rts
media_block_count,
fill_pattern,
rtems_sparse_disk_free
);
} else {
sc = RTEMS_NO_MEMORY;
4e940: 701a moveq #26,%d0 <== NOT EXECUTED
}
return sc;
}
4e942: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED
4e948: 4e5e unlk %fp <== NOT EXECUTED
0004e7e0 <rtems_sparse_disk_register>:
uint32_t media_block_size,
rtems_blkdev_bnum blocks_with_buffer,
rtems_blkdev_bnum media_block_count,
uint8_t fill_pattern,
rtems_sparse_disk_delete_handler sparse_disk_delete )
{
4e7e0: 4e56 ffd4 linkw %fp,#-44
4e7e4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4e7e8: 262e 001c movel %fp@(28),%d3
4e7ec: 266e 0008 moveal %fp@(8),%a3
4e7f0: 246e 000c moveal %fp@(12),%a2
4e7f4: 2a2e 0010 movel %fp@(16),%d5
4e7f8: 242e 0014 movel %fp@(20),%d2
4e7fc: 282e 0018 movel %fp@(24),%d4
4e800: 2c2e 0020 movel %fp@(32),%d6
4e804: 1e03 moveb %d3,%d7
rtems_status_code sc;
if ( blocks_with_buffer <= media_block_count ) {
4e806: b882 cmpl %d2,%d4
4e808: 640c bccs 4e816 <rtems_sparse_disk_register+0x36><== ALWAYS TAKEN
sparse_disk_ioctl,
sparse_disk
);
}
} else {
sc = RTEMS_INVALID_NUMBER;
4e80a: 700a moveq #10,%d0 <== NOT EXECUTED
}
return sc;
}
4e80c: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4e812: 4e5e unlk %fp <== NOT EXECUTED
4e814: 4e75 rts <== NOT EXECUTED
const uint8_t fill_pattern )
{
rtems_status_code sc;
rtems_blkdev_bnum i;
if ( NULL == sd )
4e816: 4a8a tstl %a2
4e818: 6700 00bc beqw 4e8d6 <rtems_sparse_disk_register+0xf6>
return RTEMS_INVALID_ADDRESS;
uint8_t *data = (uint8_t *) sd;
size_t const key_table_size = blocks_with_buffer
4e81c: 2002 movel %d2,%d0
* sizeof( rtems_sparse_disk_key );
size_t const data_size = blocks_with_buffer * media_block_size;
memset( data, 0, sizeof( rtems_sparse_disk ) + key_table_size );
4e81e: 4bf9 0005 b1f8 lea 5b1f8 <memset>,%a5
sd->fill_pattern = fill_pattern;
memset( (uint8_t *) ( data + sizeof( rtems_sparse_disk ) + key_table_size ),
4e824: 1e03 moveb %d3,%d7
if ( NULL == sd )
return RTEMS_INVALID_ADDRESS;
uint8_t *data = (uint8_t *) sd;
size_t const key_table_size = blocks_with_buffer
4e826: e788 lsll #3,%d0
size_t const data_size = blocks_with_buffer * media_block_size;
memset( data, 0, sizeof( rtems_sparse_disk ) + key_table_size );
sd->fill_pattern = fill_pattern;
memset( (uint8_t *) ( data + sizeof( rtems_sparse_disk ) + key_table_size ),
4e828: 0287 0000 00ff andil #255,%d7
uint8_t *data = (uint8_t *) sd;
size_t const key_table_size = blocks_with_buffer
* sizeof( rtems_sparse_disk_key );
size_t const data_size = blocks_with_buffer * media_block_size;
memset( data, 0, sizeof( rtems_sparse_disk ) + key_table_size );
4e82e: 2200 movel %d0,%d1
4e830: 0681 0000 001a addil #26,%d1
if ( NULL == sd )
return RTEMS_INVALID_ADDRESS;
uint8_t *data = (uint8_t *) sd;
size_t const key_table_size = blocks_with_buffer
4e836: 2840 moveal %d0,%a4
* sizeof( rtems_sparse_disk_key );
size_t const data_size = blocks_with_buffer * media_block_size;
memset( data, 0, sizeof( rtems_sparse_disk ) + key_table_size );
4e838: 2f01 movel %d1,%sp@-
4e83a: 42a7 clrl %sp@-
4e83c: 2d41 fffc movel %d1,%fp@(-4)
4e840: 2f0a movel %a2,%sp@-
4e842: 4e95 jsr %a5@
sd->fill_pattern = fill_pattern;
memset( (uint8_t *) ( data + sizeof( rtems_sparse_disk ) + key_table_size ),
4e844: 2002 movel %d2,%d0
4e846: 4c05 0800 mulsl %d5,%d0
4e84a: 2f00 movel %d0,%sp@-
* sizeof( rtems_sparse_disk_key );
size_t const data_size = blocks_with_buffer * media_block_size;
memset( data, 0, sizeof( rtems_sparse_disk ) + key_table_size );
sd->fill_pattern = fill_pattern;
4e84c: 1543 0014 moveb %d3,%a2@(20)
memset( (uint8_t *) ( data + sizeof( rtems_sparse_disk ) + key_table_size ),
4e850: 2f07 movel %d7,%sp@-
4e852: 222e fffc movel %fp@(-4),%d1
4e856: 4872 1800 pea %a2@(00000000,%d1:l)
4e85a: 4e95 jsr %a5@
sd->fill_pattern,
data_size );
sd->delete_handler = sparse_disk_delete;
sc = rtems_semaphore_create(
4e85c: 2f0a movel %a2,%sp@-
4e85e: 42a7 clrl %sp@-
4e860: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
4e864: 4878 0001 pea 1 <ADD>
sd->fill_pattern = fill_pattern;
memset( (uint8_t *) ( data + sizeof( rtems_sparse_disk ) + key_table_size ),
sd->fill_pattern,
data_size );
sd->delete_handler = sparse_disk_delete;
4e868: 2546 0010 movel %d6,%a2@(16)
sc = rtems_semaphore_create(
4e86c: 2f3c 5350 4152 movel #1397768530,%sp@-
4e872: 4eb9 0004 9258 jsr 49258 <rtems_semaphore_create>
RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY,
0,
&sd->mutex
);
if ( sc != RTEMS_SUCCESSFUL ) {
4e878: 4fef 002c lea %sp@(44),%sp
4e87c: 4a80 tstl %d0
4e87e: 668c bnes 4e80c <rtems_sparse_disk_register+0x2c><== NEVER TAKEN
return sc;
}
data += sizeof( rtems_sparse_disk );
4e880: 220a movel %a2,%d1
4e882: 0681 0000 001a addil #26,%d1
sd->blocks_with_buffer = blocks_with_buffer;
sd->key_table = (rtems_sparse_disk_key *) data;
data += key_table_size;
4e888: 2001 movel %d1,%d0
4e88a: d08c addl %a4,%d0
return sc;
}
data += sizeof( rtems_sparse_disk );
sd->blocks_with_buffer = blocks_with_buffer;
4e88c: 2542 0004 movel %d2,%a2@(4)
sd->key_table = (rtems_sparse_disk_key *) data;
4e890: 2541 0016 movel %d1,%a2@(22)
data += key_table_size;
for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
4e894: 4a82 tstl %d2
4e896: 6712 beqs 4e8aa <rtems_sparse_disk_register+0xca><== NEVER TAKEN
}
return sc;
}
rtems_status_code rtems_sparse_disk_register(
4e898: 41ea 001e lea %a2@(30),%a0
4e89c: 220c movel %a4,%d1
4e89e: d288 addl %a0,%d1
sd->key_table = (rtems_sparse_disk_key *) data;
data += key_table_size;
for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
sd->key_table[i].data = data;
4e8a0: 2080 movel %d0,%a0@
sd->blocks_with_buffer = blocks_with_buffer;
sd->key_table = (rtems_sparse_disk_key *) data;
data += key_table_size;
for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
4e8a2: d085 addl %d5,%d0
4e8a4: 5088 addql #8,%a0
4e8a6: b288 cmpl %a0,%d1
4e8a8: 66f6 bnes 4e8a0 <rtems_sparse_disk_register+0xc0>
sd->key_table[i].data = data;
}
sd->media_block_size = media_block_size;
4e8aa: 2545 000c movel %d5,%a2@(12)
sparse_disk_delete,
fill_pattern
);
if ( RTEMS_SUCCESSFUL == sc ) {
sc = rtems_blkdev_create(
4e8ae: 203c 0004 e548 movel #320840,%d0
4e8b4: 2d4a 0018 movel %a2,%fp@(24)
4e8b8: 2d44 0010 movel %d4,%fp@(16)
4e8bc: 2d45 000c movel %d5,%fp@(12)
4e8c0: 2d4b 0008 movel %a3,%fp@(8)
} else {
sc = RTEMS_INVALID_NUMBER;
}
return sc;
}
4e8c4: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
sparse_disk_delete,
fill_pattern
);
if ( RTEMS_SUCCESSFUL == sc ) {
sc = rtems_blkdev_create(
4e8ca: 2d40 0014 movel %d0,%fp@(20)
} else {
sc = RTEMS_INVALID_NUMBER;
}
return sc;
}
4e8ce: 4e5e unlk %fp
sparse_disk_delete,
fill_pattern
);
if ( RTEMS_SUCCESSFUL == sc ) {
sc = rtems_blkdev_create(
4e8d0: 4ef9 0005 1144 jmp 51144 <rtems_blkdev_create>
{
rtems_status_code sc;
rtems_blkdev_bnum i;
if ( NULL == sd )
return RTEMS_INVALID_ADDRESS;
4e8d6: 7009 moveq #9,%d0 <== NOT EXECUTED
} else {
sc = RTEMS_INVALID_NUMBER;
}
return sc;
}
4e8d8: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4e8de: 4e5e unlk %fp <== NOT EXECUTED
00062dd0 <rtems_stack_checker_begin_extension>:
* rtems_stack_checker_Begin_extension
*/
void rtems_stack_checker_begin_extension(
Thread_Control *the_thread
)
{
62dd0: 4e56 0000 linkw %fp,#0
62dd4: 206e 0008 moveal %fp@(8),%a0
Stack_check_Control *the_pattern;
if ( the_thread->Object.id == 0 ) /* skip system tasks */
62dd8: 4aa8 0008 tstl %a0@(8)
62ddc: 672c beqs 62e0a <rtems_stack_checker_begin_extension+0x3a><== NEVER TAKEN
return;
the_pattern = Stack_check_Get_pattern_area(&the_thread->Start.Initial_stack);
*the_pattern = Stack_check_Pattern;
62dde: 2068 00b0 moveal %a0@(176),%a0
62de2: 43f9 000a 0138 lea a0138 <Stack_check_Pattern>,%a1
62de8: 2151 0008 movel %a1@,%a0@(8)
62dec: 43f9 000a 013c lea a013c <Stack_check_Pattern+0x4>,%a1
62df2: 2151 000c movel %a1@,%a0@(12)
62df6: 43f9 000a 0140 lea a0140 <Stack_check_Pattern+0x8>,%a1
62dfc: 2151 0010 movel %a1@,%a0@(16)
62e00: 43f9 000a 0144 lea a0144 <Stack_check_Pattern+0xc>,%a1
62e06: 2151 0014 movel %a1@,%a0@(20)
}
62e0a: 4e5e unlk %fp <== NOT EXECUTED
00062d30 <rtems_stack_checker_create_extension>:
*/
bool rtems_stack_checker_create_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *the_thread
)
{
62d30: 4e56 0000 linkw %fp,#0
62d34: 2f0a movel %a2,%sp@-
62d36: 246e 000c moveal %fp@(12),%a2
static uint32_t pattern[ 4 ] = {
0xFEEDF00D, 0x0BAD0D06, /* FEED FOOD to BAD DOG */
0xDEADF00D, 0x600D0D06 /* DEAD FOOD but GOOD DOG */
};
if ( Stack_check_Initialized )
62d3a: 4ab9 0009 f200 tstl 9f200 <Stack_check_Initialized>
62d40: 666a bnes 62dac <rtems_stack_checker_create_extension+0x7c>
/*
* If appropriate, setup the interrupt stack for high water testing
* also.
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {
62d42: 2039 0009 ffe4 movel 9ffe4 <_Per_CPU_Information>,%d0
/*
* Dope the pattern and fill areas
*/
p = Stack_check_Pattern.pattern;
for ( i = 0; i < PATTERN_SIZE_WORDS; i++ ) {
p[i] = pattern[ i%4 ];
62d48: 223c feed f00d movel #-17960947,%d1
62d4e: 23c1 000a 0138 movel %d1,a0138 <Stack_check_Pattern>
62d54: 223c 0bad 0d06 movel #195890438,%d1
62d5a: 23c1 000a 013c movel %d1,a013c <Stack_check_Pattern+0x4>
62d60: 223c dead f00d movel #-559026163,%d1
62d66: 23c1 000a 0140 movel %d1,a0140 <Stack_check_Pattern+0x8>
62d6c: 223c 600d 0d06 movel #1611468038,%d1
62d72: 23c1 000a 0144 movel %d1,a0144 <Stack_check_Pattern+0xc>
/*
* If appropriate, setup the interrupt stack for high water testing
* also.
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {
62d78: 4a80 tstl %d0
62d7a: 6728 beqs 62da4 <rtems_stack_checker_create_extension+0x74><== NEVER TAKEN
62d7c: 2239 0009 ffe8 movel 9ffe8 <_Per_CPU_Information+0x4>,%d1
62d82: 6720 beqs 62da4 <rtems_stack_checker_create_extension+0x74><== NEVER TAKEN
Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;
Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
62d84: 9280 subl %d0,%d1
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
62d86: 2f01 movel %d1,%sp@-
62d88: 4878 00a5 pea a5 <DBL_MANT_DIG+0x70>
* If appropriate, setup the interrupt stack for high water testing
* also.
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {
Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;
62d8c: 23c0 000a 014c movel %d0,a014c <Stack_check_Interrupt_stack+0x4>
Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
62d92: 2f00 movel %d0,%sp@-
* also.
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {
Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;
Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
62d94: 23c1 000a 0148 movel %d1,a0148 <Stack_check_Interrupt_stack>
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
62d9a: 4eb9 0007 aa60 jsr 7aa60 <memset>
62da0: 4fef 000c lea %sp@(12),%sp
}
#endif
Stack_check_Initialized = 1;
62da4: 7001 moveq #1,%d0
62da6: 23c0 0009 f200 movel %d0,9f200 <Stack_check_Initialized>
Thread_Control *the_thread
)
{
Stack_check_Initialize();
if (the_thread)
62dac: 4a8a tstl %a2
62dae: 6716 beqs 62dc6 <rtems_stack_checker_create_extension+0x96><== NEVER TAKEN
Stack_check_Dope_stack(&the_thread->Start.Initial_stack);
62db0: 2f2a 00ac movel %a2@(172),%sp@-
62db4: 4878 00a5 pea a5 <DBL_MANT_DIG+0x70>
62db8: 2f2a 00b0 movel %a2@(176),%sp@-
62dbc: 4eb9 0007 aa60 jsr 7aa60 <memset>
62dc2: 4fef 000c lea %sp@(12),%sp
return true;
}
62dc6: 246e fffc moveal %fp@(-4),%a2
62dca: 4e5e unlk %fp
62dcc: 7001 moveq #1,%d0 <== NOT EXECUTED
00062f46 <rtems_stack_checker_is_blown>:
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
{
62f46: 4e56 0000 linkw %fp,#0
Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack;
62f4a: 2279 0009 fff2 moveal 9fff2 <_Per_CPU_Information+0xe>,%a1
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
62f50: 2069 00b0 moveal %a1@(176),%a0
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
{
62f54: 2f02 movel %d2,%sp@-
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
62f56: b1ce cmpal %fp,%a0
62f58: 633a blss 62f94 <rtems_stack_checker_is_blown+0x4e><== ALWAYS TAKEN
/*
* The stack checker must be initialized before the pattern is there
* to check.
*/
if ( Stack_check_Initialized ) {
62f5a: 4ab9 0009 f200 tstl 9f200 <Stack_check_Initialized> <== NOT EXECUTED
62f60: 674a beqs 62fac <rtems_stack_checker_is_blown+0x66><== NOT EXECUTED
pattern_ok = (!memcmp(
62f62: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
62f66: 4879 000a 0138 pea a0138 <Stack_check_Pattern> <== NOT EXECUTED
62f6c: 4868 0008 pea %a0@(8) <== NOT EXECUTED
62f70: 4eb9 0007 a86c jsr 7a86c <memcmp> <== NOT EXECUTED
62f76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
62f7a: 4a80 tstl %d0 <== NOT EXECUTED
62f7c: 57c0 seq %d0 <== NOT EXECUTED
62f7e: 4480 negl %d0 <== NOT EXECUTED
/*
* Let's report as much as we can.
*/
if ( !sp_ok || !pattern_ok ) {
Stack_check_report_blown_task( _Thread_Executing, pattern_ok );
62f80: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
62f86: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62f88: 2f39 0009 fff2 movel 9fff2 <_Per_CPU_Information+0xe>,%sp@-<== NOT EXECUTED
62f8e: 4eb9 0006 2e0e jsr 62e0e <Stack_check_report_blown_task> <== NOT EXECUTED
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
return false;
}
if ( sp > (the_stack->area + the_stack->size) ) {
62f94: 2008 movel %a0,%d0
62f96: d0a9 00ac addl %a1@(172),%d0
62f9a: b08e cmpl %fp,%d0
62f9c: 54c2 scc %d2
62f9e: 4482 negl %d2
/*
* The stack checker must be initialized before the pattern is there
* to check.
*/
if ( Stack_check_Initialized ) {
62fa0: 4ab9 0009 f200 tstl 9f200 <Stack_check_Initialized>
62fa6: 661a bnes 62fc2 <rtems_stack_checker_is_blown+0x7c>
/*
* Let's report as much as we can.
*/
if ( !sp_ok || !pattern_ok ) {
62fa8: 4a02 tstb %d2 <== NOT EXECUTED
62faa: 663c bnes 62fe8 <rtems_stack_checker_is_blown+0xa2><== NOT EXECUTED
*/
bool rtems_stack_checker_is_blown( void )
{
Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack;
bool sp_ok;
bool pattern_ok = true;
62fac: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Let's report as much as we can.
*/
if ( !sp_ok || !pattern_ok ) {
Stack_check_report_blown_task( _Thread_Executing, pattern_ok );
62fae: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
62fb4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62fb6: 2f39 0009 fff2 movel 9fff2 <_Per_CPU_Information+0xe>,%sp@-<== NOT EXECUTED
62fbc: 4eb9 0006 2e0e jsr 62e0e <Stack_check_report_blown_task> <== NOT EXECUTED
/*
* The stack checker must be initialized before the pattern is there
* to check.
*/
if ( Stack_check_Initialized ) {
pattern_ok = (!memcmp(
62fc2: 4878 0010 pea 10 <INVALID_OPERATION>
62fc6: 4879 000a 0138 pea a0138 <Stack_check_Pattern>
62fcc: 4868 0008 pea %a0@(8)
62fd0: 4eb9 0007 a86c jsr 7a86c <memcmp>
62fd6: 4fef 000c lea %sp@(12),%sp
62fda: 4a80 tstl %d0
62fdc: 57c0 seq %d0
62fde: 4480 negl %d0
/*
* Let's report as much as we can.
*/
if ( !sp_ok || !pattern_ok ) {
62fe0: 4a02 tstb %d2
62fe2: 679c beqs 62f80 <rtems_stack_checker_is_blown+0x3a><== NEVER TAKEN
62fe4: 4a00 tstb %d0
62fe6: 6798 beqs 62f80 <rtems_stack_checker_is_blown+0x3a><== NEVER TAKEN
/*
* The Stack Pointer and the Pattern Area are OK so return false.
*/
return false;
}
62fe8: 242e fffc movel %fp@(-4),%d2
62fec: 4e5e unlk %fp
62fee: 4200 clrb %d0 <== NOT EXECUTED
00063054 <rtems_stack_checker_report_usage>:
void rtems_stack_checker_report_usage( void )
{
63054: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_stack_checker_report_usage_with_plugin( NULL, printk_plugin );
63058: 4879 0006 5210 pea 65210 <printk_plugin> <== NOT EXECUTED
6305e: 42a7 clrl %sp@- <== NOT EXECUTED
63060: 4eb9 0006 2ff2 jsr 62ff2 <rtems_stack_checker_report_usage_with_plugin><== NOT EXECUTED
63066: 508f addql #8,%sp <== NOT EXECUTED
}
63068: 4e5e unlk %fp <== NOT EXECUTED
00062ff2 <rtems_stack_checker_report_usage_with_plugin>:
void rtems_stack_checker_report_usage_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
62ff2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
62ff6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
62ff8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
62ffc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
62ffe: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
if ( !print )
63002: 4a8a tstl %a2 <== NOT EXECUTED
63004: 6742 beqs 63048 <rtems_stack_checker_report_usage_with_plugin+0x56><== NOT EXECUTED
return;
print_context = context;
print_handler = print;
(*print)( context, "Stack usage by thread\n");
63006: 4879 0009 6b5e pea 96b5e <RTEMS_BDPART_MBR_MASTER_TYPE+0x3c3><== NOT EXECUTED
)
{
if ( !print )
return;
print_context = context;
6300c: 23c2 0009 f204 movel %d2,9f204 <print_context> <== NOT EXECUTED
print_handler = print;
(*print)( context, "Stack usage by thread\n");
63012: 2f02 movel %d2,%sp@- <== NOT EXECUTED
{
if ( !print )
return;
print_context = context;
print_handler = print;
63014: 23ca 0009 f208 movel %a2,9f208 <print_handler> <== NOT EXECUTED
(*print)( context, "Stack usage by thread\n");
6301a: 4e92 jsr %a2@ <== NOT EXECUTED
(*print)( context,
6301c: 4879 0009 6b75 pea 96b75 <RTEMS_BDPART_MBR_MASTER_TYPE+0x3da><== NOT EXECUTED
63022: 2f02 movel %d2,%sp@- <== NOT EXECUTED
63024: 4e92 jsr %a2@ <== NOT EXECUTED
" ID NAME LOW HIGH CURRENT AVAILABLE USED\n"
);
/* iterate over all threads and dump the usage */
rtems_iterate_over_all_threads( Stack_check_Dump_threads_usage );
63026: 487a fb90 pea %pc@(62bb8 <Stack_check_Dump_threads_usage>)<== NOT EXECUTED
6302a: 4eb9 0006 6e54 jsr 66e54 <rtems_iterate_over_all_threads> <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
/* dump interrupt stack info if any */
Stack_check_Dump_threads_usage((Thread_Control *) -1);
63030: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
63034: 4eba fb82 jsr %pc@(62bb8 <Stack_check_Dump_threads_usage>)<== NOT EXECUTED
#endif
print_context = NULL;
print_handler = NULL;
63038: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
/* dump interrupt stack info if any */
Stack_check_Dump_threads_usage((Thread_Control *) -1);
#endif
print_context = NULL;
6303c: 42b9 0009 f204 clrl 9f204 <print_context> <== NOT EXECUTED
print_handler = NULL;
63042: 42b9 0009 f208 clrl 9f208 <print_handler> <== NOT EXECUTED
}
63048: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
6304c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
63050: 4e5e unlk %fp <== NOT EXECUTED
00062ec6 <rtems_stack_checker_switch_extension>:
*/
void rtems_stack_checker_switch_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *heir __attribute__((unused))
)
{
62ec6: 4e56 0000 linkw %fp,#0
62eca: 2f0a movel %a2,%sp@-
62ecc: 246e 0008 moveal %fp@(8),%a2
Stack_Control *the_stack = &running->Start.Initial_stack;
void *pattern;
bool sp_ok;
bool pattern_ok = true;
pattern = Stack_check_Get_pattern_area(the_stack);
62ed0: 222a 00b0 movel %a2@(176),%d1
62ed4: 5081 addql #8,%d1
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
62ed6: 202a 00b0 movel %a2@(176),%d0
62eda: b08e cmpl %fp,%d0
62edc: 622a bhis 62f08 <rtems_stack_checker_switch_extension+0x42><== NEVER TAKEN
return false;
}
if ( sp > (the_stack->area + the_stack->size) ) {
62ede: d0aa 00ac addl %a2@(172),%d0
62ee2: b08e cmpl %fp,%d0
62ee4: 6522 bcss 62f08 <rtems_stack_checker_switch_extension+0x42><== NEVER TAKEN
/*
* Check for an out of bounds stack pointer or an overwrite
*/
sp_ok = Stack_check_Frame_pointer_in_range( the_stack );
pattern_ok = (!memcmp( pattern,
62ee6: 4878 0010 pea 10 <INVALID_OPERATION>
62eea: 4879 000a 0138 pea a0138 <Stack_check_Pattern>
62ef0: 2f01 movel %d1,%sp@-
62ef2: 4eb9 0007 a86c jsr 7a86c <memcmp>
62ef8: 4fef 000c lea %sp@(12),%sp
(void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
if ( !sp_ok || !pattern_ok ) {
62efc: 4a80 tstl %d0
62efe: 6634 bnes 62f34 <rtems_stack_checker_switch_extension+0x6e><== NEVER TAKEN
Stack_check_report_blown_task( running, pattern_ok );
}
}
62f00: 246e fffc moveal %fp@(-4),%a2
62f04: 4e5e unlk %fp
62f06: 4e75 rts
/*
* Check for an out of bounds stack pointer or an overwrite
*/
sp_ok = Stack_check_Frame_pointer_in_range( the_stack );
pattern_ok = (!memcmp( pattern,
62f08: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
62f0c: 4879 000a 0138 pea a0138 <Stack_check_Pattern> <== NOT EXECUTED
62f12: 2f01 movel %d1,%sp@- <== NOT EXECUTED
62f14: 4eb9 0007 a86c jsr 7a86c <memcmp> <== NOT EXECUTED
62f1a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
62f1e: 4a80 tstl %d0 <== NOT EXECUTED
62f20: 57c0 seq %d0 <== NOT EXECUTED
62f22: 4480 negl %d0 <== NOT EXECUTED
(void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
if ( !sp_ok || !pattern_ok ) {
Stack_check_report_blown_task( running, pattern_ok );
62f24: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
62f2a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62f2c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
62f2e: 4eb9 0006 2e0e jsr 62e0e <Stack_check_report_blown_task> <== NOT EXECUTED
sp_ok = Stack_check_Frame_pointer_in_range( the_stack );
pattern_ok = (!memcmp( pattern,
(void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
if ( !sp_ok || !pattern_ok ) {
62f34: 4200 clrb %d0 <== NOT EXECUTED
Stack_check_report_blown_task( running, pattern_ok );
62f36: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
62f3c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
62f3e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
62f40: 4eb9 0006 2e0e jsr 62e0e <Stack_check_report_blown_task> <== NOT EXECUTED
0004e910 <rtems_string_to_double>:
rtems_status_code rtems_string_to_double (
const char *s,
double *n,
char **endptr
)
{
4e910: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4e914: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4e918: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
double result;
char *end;
if ( !n )
4e91c: 4a8a tstl %a2 <== NOT EXECUTED
4e91e: 6768 beqs 4e988 <rtems_string_to_double+0x78> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4e920: 47f9 0005 0b58 lea 50b58 <__errno>,%a3 <== NOT EXECUTED
4e926: 4e93 jsr %a3@ <== NOT EXECUTED
*n = 0;
4e928: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4e92a: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4e92c: 4280 clrl %d0 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4e92e: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
result = strtod( s, &end );
4e930: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4e934: 2480 movel %d0,%a2@ <== NOT EXECUTED
4e936: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
result = strtod( s, &end );
4e93a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4e93e: 4eb9 0005 3588 jsr 53588 <strtod> <== NOT EXECUTED
if ( endptr )
4e944: 508f addql #8,%sp <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
result = strtod( s, &end );
4e946: 2601 movel %d1,%d3 <== NOT EXECUTED
4e948: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( endptr )
*endptr = end;
4e94a: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
errno = 0;
*n = 0;
result = strtod( s, &end );
if ( endptr )
4e94e: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
4e952: 6706 beqs 4e95a <rtems_string_to_double+0x4a> <== NOT EXECUTED
*endptr = end;
4e954: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
4e958: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( end == s )
4e95a: b2ae 0008 cmpl %fp@(8),%d1 <== NOT EXECUTED
4e95e: 671c beqs 4e97c <rtems_string_to_double+0x6c> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4e960: 4e93 jsr %a3@ <== NOT EXECUTED
4e962: 7222 moveq #34,%d1 <== NOT EXECUTED
4e964: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e966: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4e968: 672a beqs 4e994 <rtems_string_to_double+0x84> <== NOT EXECUTED
(( result == 0 ) || ( result == HUGE_VAL ) || ( result == -HUGE_VAL )))
return RTEMS_INVALID_NUMBER;
*n = result;
4e96a: 2482 movel %d2,%a2@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4e96c: 4280 clrl %d0 <== NOT EXECUTED
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == HUGE_VAL ) || ( result == -HUGE_VAL )))
return RTEMS_INVALID_NUMBER;
*n = result;
4e96e: 2543 0004 movel %d3,%a2@(4) <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
4e972: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e978: 4e5e unlk %fp <== NOT EXECUTED
4e97a: 4e75 rts <== NOT EXECUTED
if ( endptr )
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
4e97c: 700b moveq #11,%d0 <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4e97e: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e984: 4e5e unlk %fp <== NOT EXECUTED
4e986: 4e75 rts <== NOT EXECUTED
{
double result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4e988: 7009 moveq #9,%d0 <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4e98a: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e990: 4e5e unlk %fp <== NOT EXECUTED
4e992: 4e75 rts <== NOT EXECUTED
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4e994: 42a7 clrl %sp@- <== NOT EXECUTED
4e996: 42a7 clrl %sp@- <== NOT EXECUTED
4e998: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e99a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e99c: 4eb9 0005 f0a0 jsr 5f0a0 <__eqdf2> <== NOT EXECUTED
4e9a2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e9a6: 4a80 tstl %d0 <== NOT EXECUTED
4e9a8: 660c bnes 4e9b6 <rtems_string_to_double+0xa6> <== NOT EXECUTED
(( result == 0 ) || ( result == HUGE_VAL ) || ( result == -HUGE_VAL )))
return RTEMS_INVALID_NUMBER;
4e9aa: 700a moveq #10,%d0 <== NOT EXECUTED
*n = result;
return RTEMS_SUCCESSFUL;
}
4e9ac: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e9b2: 4e5e unlk %fp <== NOT EXECUTED
4e9b4: 4e75 rts <== NOT EXECUTED
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == HUGE_VAL ) || ( result == -HUGE_VAL )))
4e9b6: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
4e9ba: 2f3c 7fef ffff movel #2146435071,%sp@- <== NOT EXECUTED
4e9c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e9c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e9c4: 4eb9 0005 f0c4 jsr 5f0c4 <__gtdf2> <== NOT EXECUTED
4e9ca: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e9ce: 4a80 tstl %d0 <== NOT EXECUTED
4e9d0: 6ed8 bgts 4e9aa <rtems_string_to_double+0x9a> <== NOT EXECUTED
4e9d2: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
4e9d6: 2f3c ffef ffff movel #-1048577,%sp@- <== NOT EXECUTED
4e9dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e9de: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e9e0: 4eb9 0005 f10c jsr 5f10c <__ltdf2> <== NOT EXECUTED
4e9e6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e9ea: 4a80 tstl %d0 <== NOT EXECUTED
4e9ec: 6c00 ff7c bgew 4e96a <rtems_string_to_double+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4e9f0: 700a moveq #10,%d0 <== NOT EXECUTED
4e9f2: 60b8 bras 4e9ac <rtems_string_to_double+0x9c> <== NOT EXECUTED
0004e9f4 <rtems_string_to_float>:
rtems_status_code rtems_string_to_float (
const char *s,
float *n,
char **endptr
)
{
4e9f4: 4e56 fff0 linkw %fp,#-16
4e9f8: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4e9fc: 246e 000c moveal %fp@(12),%a2
float result;
char *end;
if ( !n )
4ea00: 4a8a tstl %a2
4ea02: 675e beqs 4ea62 <rtems_string_to_float+0x6e>
return RTEMS_INVALID_ADDRESS;
errno = 0;
4ea04: 47f9 0005 0b58 lea 50b58 <__errno>,%a3
4ea0a: 4e93 jsr %a3@
4ea0c: 2040 moveal %d0,%a0
4ea0e: 4290 clrl %a0@
*n = 0;
result = strtof( s, &end );
4ea10: 486e fffc pea %fp@(-4)
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4ea14: 24bc 0000 0000 movel #0,%a2@
result = strtof( s, &end );
4ea1a: 2f2e 0008 movel %fp@(8),%sp@-
4ea1e: 4eb9 0005 35a8 jsr 535a8 <strtof>
if ( endptr )
*endptr = end;
4ea24: 222e fffc movel %fp@(-4),%d1
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
result = strtof( s, &end );
4ea28: 2400 movel %d0,%d2
if ( endptr )
4ea2a: 508f addql #8,%sp
4ea2c: 4aae 0010 tstl %fp@(16)
4ea30: 6706 beqs 4ea38 <rtems_string_to_float+0x44>
*endptr = end;
4ea32: 206e 0010 moveal %fp@(16),%a0
4ea36: 2081 movel %d1,%a0@
if ( end == s )
4ea38: b2ae 0008 cmpl %fp@(8),%d1
4ea3c: 6718 beqs 4ea56 <rtems_string_to_float+0x62>
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4ea3e: 4e93 jsr %a3@
4ea40: 7222 moveq #34,%d1
4ea42: 2040 moveal %d0,%a0
4ea44: b290 cmpl %a0@,%d1
4ea46: 6726 beqs 4ea6e <rtems_string_to_float+0x7a>
(( result == 0 ) || ( result == HUGE_VALF ) || ( result == -HUGE_VALF )))
return RTEMS_INVALID_NUMBER;
*n = result;
4ea48: 2482 movel %d2,%a2@
return RTEMS_SUCCESSFUL;
4ea4a: 4280 clrl %d0
}
4ea4c: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4ea52: 4e5e unlk %fp
4ea54: 4e75 rts
if ( endptr )
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
4ea56: 700b moveq #11,%d0
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4ea58: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4ea5e: 4e5e unlk %fp
4ea60: 4e75 rts
{
float result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4ea62: 7009 moveq #9,%d0
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4ea64: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4ea6a: 4e5e unlk %fp
4ea6c: 4e75 rts
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4ea6e: 2f3c 0000 0000 movel #0,%sp@-
4ea74: 2f02 movel %d2,%sp@-
4ea76: 4eb9 0005 f154 jsr 5f154 <__eqsf2>
4ea7c: 508f addql #8,%sp
4ea7e: 4a80 tstl %d0
4ea80: 660c bnes 4ea8e <rtems_string_to_float+0x9a> <== ALWAYS TAKEN
(( result == 0 ) || ( result == HUGE_VALF ) || ( result == -HUGE_VALF )))
return RTEMS_INVALID_NUMBER;
4ea82: 700a moveq #10,%d0 <== NOT EXECUTED
*n = result;
return RTEMS_SUCCESSFUL;
}
4ea84: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
4ea8a: 4e5e unlk %fp <== NOT EXECUTED
4ea8c: 4e75 rts <== NOT EXECUTED
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == HUGE_VALF ) || ( result == -HUGE_VALF )))
4ea8e: 2f3c 7f7f ffff movel #2139095039,%sp@-
4ea94: 2f02 movel %d2,%sp@-
4ea96: 4eb9 0005 f170 jsr 5f170 <__gtsf2>
4ea9c: 508f addql #8,%sp
4ea9e: 4a80 tstl %d0
4eaa0: 6ee0 bgts 4ea82 <rtems_string_to_float+0x8e> <== NEVER TAKEN
4eaa2: 2f3c ff7f ffff movel #-8388609,%sp@-
4eaa8: 2f02 movel %d2,%sp@-
4eaaa: 4eb9 0005 f18c jsr 5f18c <__ltsf2>
4eab0: 508f addql #8,%sp
4eab2: 4a80 tstl %d0
4eab4: 6c92 bges 4ea48 <rtems_string_to_float+0x54> <== ALWAYS TAKEN
return RTEMS_INVALID_NUMBER;
4eab6: 700a moveq #10,%d0 <== NOT EXECUTED
4eab8: 60ca bras 4ea84 <rtems_string_to_float+0x90> <== NOT EXECUTED
...
0005d188 <rtems_string_to_int>:
const char *s,
int *n,
char **endptr,
int base
)
{
5d188: 4e56 fff0 linkw %fp,#-16
5d18c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
5d190: 246e 000c moveal %fp@(12),%a2
long result;
char *end;
if ( !n )
5d194: 4a8a tstl %a2
5d196: 6760 beqs 5d1f8 <rtems_string_to_int+0x70>
return RTEMS_INVALID_ADDRESS;
errno = 0;
5d198: 47f9 0007 7798 lea 77798 <__errno>,%a3
5d19e: 4e93 jsr %a3@
5d1a0: 2040 moveal %d0,%a0
5d1a2: 4290 clrl %a0@
*n = 0;
result = strtol( s, &end, base );
5d1a4: 2f2e 0014 movel %fp@(20),%sp@-
5d1a8: 486e fffc pea %fp@(-4)
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
5d1ac: 4292 clrl %a2@
result = strtol( s, &end, base );
5d1ae: 2f2e 0008 movel %fp@(8),%sp@-
5d1b2: 4eb9 0007 ea26 jsr 7ea26 <strtol>
if ( endptr )
*endptr = end;
5d1b8: 222e fffc movel %fp@(-4),%d1
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
result = strtol( s, &end, base );
5d1bc: 2400 movel %d0,%d2
if ( endptr )
5d1be: 4fef 000c lea %sp@(12),%sp
5d1c2: 4aae 0010 tstl %fp@(16)
5d1c6: 6706 beqs 5d1ce <rtems_string_to_int+0x46>
*endptr = end;
5d1c8: 206e 0010 moveal %fp@(16),%a0
5d1cc: 2081 movel %d1,%a0@
if ( end == s )
5d1ce: b2ae 0008 cmpl %fp@(8),%d1
5d1d2: 6718 beqs 5d1ec <rtems_string_to_int+0x64>
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
5d1d4: 4e93 jsr %a3@
5d1d6: 7222 moveq #34,%d1
5d1d8: 2040 moveal %d0,%a0
5d1da: b290 cmpl %a0@,%d1
5d1dc: 6726 beqs 5d204 <rtems_string_to_int+0x7c>
errno = ERANGE;
return RTEMS_INVALID_NUMBER;
}
#endif
*n = result;
5d1de: 2482 movel %d2,%a2@
return RTEMS_SUCCESSFUL;
5d1e0: 4280 clrl %d0
}
5d1e2: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
5d1e8: 4e5e unlk %fp
5d1ea: 4e75 rts
if ( endptr )
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
5d1ec: 700b moveq #11,%d0
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
5d1ee: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
5d1f4: 4e5e unlk %fp
5d1f6: 4e75 rts
{
long result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
5d1f8: 7009 moveq #9,%d0
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
5d1fa: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
5d200: 4e5e unlk %fp
5d202: 4e75 rts
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
5d204: 4a82 tstl %d2
5d206: 660c bnes 5d214 <rtems_string_to_int+0x8c> <== ALWAYS TAKEN
(( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
return RTEMS_INVALID_NUMBER;
5d208: 700a moveq #10,%d0
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
5d20a: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
5d210: 4e5e unlk %fp
5d212: 4e75 rts
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
5d214: 0c82 7fff ffff cmpil #2147483647,%d2
5d21a: 67ec beqs 5d208 <rtems_string_to_int+0x80>
5d21c: 0c82 8000 0000 cmpil #-2147483648,%d2
5d222: 67e4 beqs 5d208 <rtems_string_to_int+0x80> <== ALWAYS TAKEN
errno = ERANGE;
return RTEMS_INVALID_NUMBER;
}
#endif
*n = result;
5d224: 2482 movel %d2,%a2@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
5d226: 4280 clrl %d0 <== NOT EXECUTED
5d228: 60b8 bras 5d1e2 <rtems_string_to_int+0x5a> <== NOT EXECUTED
...
0004ec24 <rtems_string_to_long>:
const char *s,
long *n,
char **endptr,
int base
)
{
4ec24: 4e56 fff0 linkw %fp,#-16
4ec28: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4ec2c: 246e 000c moveal %fp@(12),%a2
long result;
char *end;
if ( !n )
4ec30: 4a8a tstl %a2
4ec32: 6760 beqs 4ec94 <rtems_string_to_long+0x70>
return RTEMS_INVALID_ADDRESS;
errno = 0;
4ec34: 47f9 0005 0b58 lea 50b58 <__errno>,%a3
4ec3a: 4e93 jsr %a3@
4ec3c: 2040 moveal %d0,%a0
4ec3e: 4290 clrl %a0@
*n = 0;
result = strtol( s, &end, base );
4ec40: 2f2e 0014 movel %fp@(20),%sp@-
4ec44: 486e fffc pea %fp@(-4)
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4ec48: 4292 clrl %a2@
result = strtol( s, &end, base );
4ec4a: 2f2e 0008 movel %fp@(8),%sp@-
4ec4e: 4eb9 0005 378a jsr 5378a <strtol>
if ( endptr )
*endptr = end;
4ec54: 222e fffc movel %fp@(-4),%d1
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
result = strtol( s, &end, base );
4ec58: 2400 movel %d0,%d2
if ( endptr )
4ec5a: 4fef 000c lea %sp@(12),%sp
4ec5e: 4aae 0010 tstl %fp@(16)
4ec62: 6706 beqs 4ec6a <rtems_string_to_long+0x46>
*endptr = end;
4ec64: 206e 0010 moveal %fp@(16),%a0
4ec68: 2081 movel %d1,%a0@
if ( end == s )
4ec6a: b2ae 0008 cmpl %fp@(8),%d1
4ec6e: 6718 beqs 4ec88 <rtems_string_to_long+0x64>
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4ec70: 4e93 jsr %a3@
4ec72: 7222 moveq #34,%d1
4ec74: 2040 moveal %d0,%a0
4ec76: b290 cmpl %a0@,%d1
4ec78: 6726 beqs 4eca0 <rtems_string_to_long+0x7c>
(( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
return RTEMS_INVALID_NUMBER;
*n = result;
4ec7a: 2482 movel %d2,%a2@
return RTEMS_SUCCESSFUL;
4ec7c: 4280 clrl %d0
}
4ec7e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4ec84: 4e5e unlk %fp
4ec86: 4e75 rts
if ( endptr )
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
4ec88: 700b moveq #11,%d0
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4ec8a: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4ec90: 4e5e unlk %fp
4ec92: 4e75 rts
{
long result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4ec94: 7009 moveq #9,%d0
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4ec96: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4ec9c: 4e5e unlk %fp
4ec9e: 4e75 rts
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4eca0: 4a82 tstl %d2
4eca2: 660c bnes 4ecb0 <rtems_string_to_long+0x8c> <== ALWAYS TAKEN
(( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
return RTEMS_INVALID_NUMBER;
4eca4: 700a moveq #10,%d0
*n = result;
return RTEMS_SUCCESSFUL;
}
4eca6: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4ecac: 4e5e unlk %fp
4ecae: 4e75 rts
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
4ecb0: 0c82 7fff ffff cmpil #2147483647,%d2
4ecb6: 67ec beqs 4eca4 <rtems_string_to_long+0x80>
4ecb8: 0c82 8000 0000 cmpil #-2147483648,%d2
4ecbe: 67e4 beqs 4eca4 <rtems_string_to_long+0x80> <== ALWAYS TAKEN
return RTEMS_INVALID_NUMBER;
*n = result;
4ecc0: 2482 movel %d2,%a2@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4ecc2: 4280 clrl %d0 <== NOT EXECUTED
4ecc4: 60b8 bras 4ec7e <rtems_string_to_long+0x5a> <== NOT EXECUTED
...
0004eb60 <rtems_string_to_long_long>:
const char *s,
long long *n,
char **endptr,
int base
)
{
4eb60: 4e56 ffec linkw %fp,#-20
4eb64: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
4eb68: 246e 000c moveal %fp@(12),%a2
long long result;
char *end;
if ( !n )
4eb6c: 4a8a tstl %a2
4eb6e: 676e beqs 4ebde <rtems_string_to_long_long+0x7e>
return RTEMS_INVALID_ADDRESS;
errno = 0;
4eb70: 47f9 0005 0b58 lea 50b58 <__errno>,%a3
4eb76: 4e93 jsr %a3@
4eb78: 2040 moveal %d0,%a0
*n = 0;
4eb7a: 4280 clrl %d0
4eb7c: 4281 clrl %d1
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4eb7e: 4290 clrl %a0@
*n = 0;
4eb80: 2480 movel %d0,%a2@
4eb82: 2541 0004 movel %d1,%a2@(4)
result = strtoll( s, &end, base );
4eb86: 2f2e 0014 movel %fp@(20),%sp@-
4eb8a: 486e fffc pea %fp@(-4)
4eb8e: 2f2e 0008 movel %fp@(8),%sp@-
4eb92: 4eb9 0005 37ac jsr 537ac <strtoll>
if ( endptr )
4eb98: 4fef 000c lea %sp@(12),%sp
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
result = strtoll( s, &end, base );
4eb9c: 2400 movel %d0,%d2
4eb9e: 2601 movel %d1,%d3
if ( endptr )
*endptr = end;
4eba0: 222e fffc movel %fp@(-4),%d1
errno = 0;
*n = 0;
result = strtoll( s, &end, base );
if ( endptr )
4eba4: 4aae 0010 tstl %fp@(16)
4eba8: 6706 beqs 4ebb0 <rtems_string_to_long_long+0x50>
*endptr = end;
4ebaa: 206e 0010 moveal %fp@(16),%a0
4ebae: 2081 movel %d1,%a0@
if ( end == s )
4ebb0: b2ae 0008 cmpl %fp@(8),%d1
4ebb4: 671c beqs 4ebd2 <rtems_string_to_long_long+0x72>
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4ebb6: 4e93 jsr %a3@
4ebb8: 7222 moveq #34,%d1
4ebba: 2040 moveal %d0,%a0
4ebbc: b290 cmpl %a0@,%d1
4ebbe: 672a beqs 4ebea <rtems_string_to_long_long+0x8a>
(( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
4ebc0: 4280 clrl %d0
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
return RTEMS_INVALID_NUMBER;
*n = result;
4ebc2: 2482 movel %d2,%a2@
4ebc4: 2543 0004 movel %d3,%a2@(4)
return RTEMS_SUCCESSFUL;
}
4ebc8: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3
4ebce: 4e5e unlk %fp
4ebd0: 4e75 rts
if ( endptr )
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
4ebd2: 700b moveq #11,%d0
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4ebd4: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3
4ebda: 4e5e unlk %fp
4ebdc: 4e75 rts
{
long long result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4ebde: 7009 moveq #9,%d0
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4ebe0: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3
4ebe6: 4e5e unlk %fp
4ebe8: 4e75 rts
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4ebea: 2002 movel %d2,%d0
4ebec: 8083 orl %d3,%d0
4ebee: 660c bnes 4ebfc <rtems_string_to_long_long+0x9c> <== ALWAYS TAKEN
(( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
return RTEMS_INVALID_NUMBER;
4ebf0: 700a moveq #10,%d0
*n = result;
return RTEMS_SUCCESSFUL;
}
4ebf2: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3
4ebf8: 4e5e unlk %fp
4ebfa: 4e75 rts
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
4ebfc: 203c 7fff ffff movel #2147483647,%d0
4ec02: 72ff moveq #-1,%d1
4ec04: 9283 subl %d3,%d1
4ec06: 9182 subxl %d2,%d0
4ec08: 67e6 beqs 4ebf0 <rtems_string_to_long_long+0x90>
4ec0a: 203c 8000 0000 movel #-2147483648,%d0
4ec10: 4281 clrl %d1
4ec12: 9283 subl %d3,%d1
4ec14: 9182 subxl %d2,%d0
4ec16: 67d8 beqs 4ebf0 <rtems_string_to_long_long+0x90>
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
4ec18: 4280 clrl %d0 <== NOT EXECUTED
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
return RTEMS_INVALID_NUMBER;
*n = result;
4ec1a: 2482 movel %d2,%a2@ <== NOT EXECUTED
4ec1c: 2543 0004 movel %d3,%a2@(4) <== NOT EXECUTED
4ec20: 60a6 bras 4ebc8 <rtems_string_to_long_long+0x68> <== NOT EXECUTED
...
0005d248 <rtems_string_to_unsigned_char>:
const char *s,
unsigned char *n,
char **endptr,
int base
)
{
5d248: 4e56 fff0 linkw %fp,#-16
5d24c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
5d250: 246e 000c moveal %fp@(12),%a2
unsigned long result;
char *end;
if ( !n )
5d254: 4a8a tstl %a2
5d256: 6768 beqs 5d2c0 <rtems_string_to_unsigned_char+0x78>
return RTEMS_INVALID_ADDRESS;
errno = 0;
5d258: 47f9 0007 7798 lea 77798 <__errno>,%a3
5d25e: 4e93 jsr %a3@
5d260: 2040 moveal %d0,%a0
5d262: 4290 clrl %a0@
*n = 0;
5d264: 4212 clrb %a2@
result = strtoul( s, &end, base );
5d266: 2f2e 0014 movel %fp@(20),%sp@-
5d26a: 486e fffc pea %fp@(-4)
5d26e: 2f2e 0008 movel %fp@(8),%sp@-
5d272: 4eb9 0007 eeca jsr 7eeca <strtoul>
if ( endptr )
*endptr = end;
5d278: 222e fffc movel %fp@(-4),%d1
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
result = strtoul( s, &end, base );
5d27c: 2400 movel %d0,%d2
if ( endptr )
5d27e: 4fef 000c lea %sp@(12),%sp
5d282: 4aae 0010 tstl %fp@(16)
5d286: 6706 beqs 5d28e <rtems_string_to_unsigned_char+0x46>
*endptr = end;
5d288: 206e 0010 moveal %fp@(16),%a0
5d28c: 2081 movel %d1,%a0@
if ( end == s )
5d28e: b2ae 0008 cmpl %fp@(8),%d1
5d292: 6720 beqs 5d2b4 <rtems_string_to_unsigned_char+0x6c>
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
5d294: 4e93 jsr %a3@
5d296: 7222 moveq #34,%d1
5d298: 2040 moveal %d0,%a0
5d29a: b290 cmpl %a0@,%d1
5d29c: 6742 beqs 5d2e0 <rtems_string_to_unsigned_char+0x98>
(( result == 0 ) || ( result == ULONG_MAX )))
return RTEMS_INVALID_NUMBER;
#if (UCHAR_MAX < ULONG_MAX)
if ( result > UCHAR_MAX ) {
5d29e: 0c82 0000 00ff cmpil #255,%d2
5d2a4: 6226 bhis 5d2cc <rtems_string_to_unsigned_char+0x84>
}
#endif
*n = result;
return RTEMS_SUCCESSFUL;
5d2a6: 4280 clrl %d0
errno = ERANGE;
return RTEMS_INVALID_NUMBER;
}
#endif
*n = result;
5d2a8: 1482 moveb %d2,%a2@
return RTEMS_SUCCESSFUL;
}
5d2aa: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
5d2b0: 4e5e unlk %fp
5d2b2: 4e75 rts
if ( endptr )
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
5d2b4: 700b moveq #11,%d0
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
5d2b6: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
5d2bc: 4e5e unlk %fp
5d2be: 4e75 rts
{
unsigned long result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
5d2c0: 7009 moveq #9,%d0
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
5d2c2: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
5d2c8: 4e5e unlk %fp
5d2ca: 4e75 rts
(( result == 0 ) || ( result == ULONG_MAX )))
return RTEMS_INVALID_NUMBER;
#if (UCHAR_MAX < ULONG_MAX)
if ( result > UCHAR_MAX ) {
errno = ERANGE;
5d2cc: 4e93 jsr %a3@
5d2ce: 7222 moveq #34,%d1
5d2d0: 2040 moveal %d0,%a0
return RTEMS_INVALID_NUMBER;
5d2d2: 700a moveq #10,%d0
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
5d2d4: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
(( result == 0 ) || ( result == ULONG_MAX )))
return RTEMS_INVALID_NUMBER;
#if (UCHAR_MAX < ULONG_MAX)
if ( result > UCHAR_MAX ) {
errno = ERANGE;
5d2da: 2081 movel %d1,%a0@
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
5d2dc: 4e5e unlk %fp
5d2de: 4e75 rts
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == ULONG_MAX )))
5d2e0: 2002 movel %d2,%d0
5d2e2: 5380 subql #1,%d0
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
5d2e4: 72fd moveq #-3,%d1
5d2e6: b280 cmpl %d0,%d1
5d2e8: 64b4 bccs 5d29e <rtems_string_to_unsigned_char+0x56><== NEVER TAKEN
(( result == 0 ) || ( result == ULONG_MAX )))
return RTEMS_INVALID_NUMBER;
5d2ea: 700a moveq #10,%d0
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
5d2ec: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
5d2f2: 4e5e unlk %fp
...
0004ed94 <rtems_string_to_unsigned_int>:
const char *s,
unsigned int *n,
char **endptr,
int base
)
{
4ed94: 4e56 fff0 linkw %fp,#-16
4ed98: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4ed9c: 246e 000c moveal %fp@(12),%a2
unsigned long result;
char *end;
if ( !n )
4eda0: 4a8a tstl %a2
4eda2: 6760 beqs 4ee04 <rtems_string_to_unsigned_int+0x70>
return RTEMS_INVALID_ADDRESS;
errno = 0;
4eda4: 47f9 0005 0b58 lea 50b58 <__errno>,%a3
4edaa: 4e93 jsr %a3@
4edac: 2040 moveal %d0,%a0
4edae: 4290 clrl %a0@
*n = 0;
result = strtoul( s, &end, base );
4edb0: 2f2e 0014 movel %fp@(20),%sp@-
4edb4: 486e fffc pea %fp@(-4)
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4edb8: 4292 clrl %a2@
result = strtoul( s, &end, base );
4edba: 2f2e 0008 movel %fp@(8),%sp@-
4edbe: 4eb9 0005 3c2e jsr 53c2e <strtoul>
if ( endptr )
*endptr = end;
4edc4: 222e fffc movel %fp@(-4),%d1
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
result = strtoul( s, &end, base );
4edc8: 2400 movel %d0,%d2
if ( endptr )
4edca: 4fef 000c lea %sp@(12),%sp
4edce: 4aae 0010 tstl %fp@(16)
4edd2: 6706 beqs 4edda <rtems_string_to_unsigned_int+0x46>
*endptr = end;
4edd4: 206e 0010 moveal %fp@(16),%a0
4edd8: 2081 movel %d1,%a0@
if ( end == s )
4edda: b2ae 0008 cmpl %fp@(8),%d1
4edde: 6718 beqs 4edf8 <rtems_string_to_unsigned_int+0x64>
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4ede0: 4e93 jsr %a3@
4ede2: 7222 moveq #34,%d1
4ede4: 2040 moveal %d0,%a0
4ede6: b290 cmpl %a0@,%d1
4ede8: 6726 beqs 4ee10 <rtems_string_to_unsigned_int+0x7c>
errno = ERANGE;
return RTEMS_INVALID_NUMBER;
}
#endif
*n = result;
4edea: 2482 movel %d2,%a2@
return RTEMS_SUCCESSFUL;
4edec: 4280 clrl %d0
}
4edee: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4edf4: 4e5e unlk %fp
4edf6: 4e75 rts
if ( endptr )
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
4edf8: 700b moveq #11,%d0
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
4edfa: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4ee00: 4e5e unlk %fp
4ee02: 4e75 rts
{
unsigned long result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4ee04: 7009 moveq #9,%d0
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
4ee06: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4ee0c: 4e5e unlk %fp
4ee0e: 4e75 rts
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == ULONG_MAX )))
4ee10: 2002 movel %d2,%d0
4ee12: 5380 subql #1,%d0
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4ee14: 72fd moveq #-3,%d1
4ee16: b280 cmpl %d0,%d1
4ee18: 64d0 bccs 4edea <rtems_string_to_unsigned_int+0x56><== NEVER TAKEN
(( result == 0 ) || ( result == ULONG_MAX )))
return RTEMS_INVALID_NUMBER;
4ee1a: 700a moveq #10,%d0
#endif
*n = result;
return RTEMS_SUCCESSFUL;
}
4ee1c: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4ee22: 4e5e unlk %fp
...
0004b488 <rtems_string_to_unsigned_long>:
const char *s,
unsigned long *n,
char **endptr,
int base
)
{
4b488: 4e56 fff0 linkw %fp,#-16
4b48c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4b490: 246e 000c moveal %fp@(12),%a2
unsigned long result;
char *end;
if ( !n )
4b494: 4a8a tstl %a2
4b496: 6760 beqs 4b4f8 <rtems_string_to_unsigned_long+0x70>
return RTEMS_INVALID_ADDRESS;
errno = 0;
4b498: 47f9 0007 7798 lea 77798 <__errno>,%a3
4b49e: 4e93 jsr %a3@
4b4a0: 2040 moveal %d0,%a0
4b4a2: 4290 clrl %a0@
*n = 0;
result = strtoul( s, &end, base );
4b4a4: 2f2e 0014 movel %fp@(20),%sp@-
4b4a8: 486e fffc pea %fp@(-4)
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4b4ac: 4292 clrl %a2@
result = strtoul( s, &end, base );
4b4ae: 2f2e 0008 movel %fp@(8),%sp@-
4b4b2: 4eb9 0007 eeca jsr 7eeca <strtoul>
if ( endptr )
*endptr = end;
4b4b8: 222e fffc movel %fp@(-4),%d1
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
result = strtoul( s, &end, base );
4b4bc: 2400 movel %d0,%d2
if ( endptr )
4b4be: 4fef 000c lea %sp@(12),%sp
4b4c2: 4aae 0010 tstl %fp@(16)
4b4c6: 6706 beqs 4b4ce <rtems_string_to_unsigned_long+0x46>
*endptr = end;
4b4c8: 206e 0010 moveal %fp@(16),%a0
4b4cc: 2081 movel %d1,%a0@
if ( end == s )
4b4ce: b2ae 0008 cmpl %fp@(8),%d1
4b4d2: 6718 beqs 4b4ec <rtems_string_to_unsigned_long+0x64>
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4b4d4: 4e93 jsr %a3@
4b4d6: 7222 moveq #34,%d1
4b4d8: 2040 moveal %d0,%a0
4b4da: b290 cmpl %a0@,%d1
4b4dc: 6726 beqs 4b504 <rtems_string_to_unsigned_long+0x7c>
(( result == 0 ) || ( result == ULONG_MAX )))
return RTEMS_INVALID_NUMBER;
*n = result;
4b4de: 2482 movel %d2,%a2@
return RTEMS_SUCCESSFUL;
4b4e0: 4280 clrl %d0
}
4b4e2: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4b4e8: 4e5e unlk %fp
4b4ea: 4e75 rts
if ( endptr )
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
4b4ec: 700b moveq #11,%d0
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4b4ee: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4b4f4: 4e5e unlk %fp
4b4f6: 4e75 rts
{
unsigned long result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4b4f8: 7009 moveq #9,%d0
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4b4fa: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4b500: 4e5e unlk %fp
4b502: 4e75 rts
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == ULONG_MAX )))
4b504: 2002 movel %d2,%d0
4b506: 5380 subql #1,%d0
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4b508: 72fd moveq #-3,%d1
4b50a: b280 cmpl %d0,%d1
4b50c: 64d0 bccs 4b4de <rtems_string_to_unsigned_long+0x56><== NEVER TAKEN
(( result == 0 ) || ( result == ULONG_MAX )))
return RTEMS_INVALID_NUMBER;
4b50e: 700a moveq #10,%d0
*n = result;
return RTEMS_SUCCESSFUL;
}
4b510: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4b516: 4e5e unlk %fp
...
0004ee28 <rtems_string_to_unsigned_long_long>:
const char *s,
unsigned long long *n,
char **endptr,
int base
)
{
4ee28: 4e56 ffe4 linkw %fp,#-28
4ee2c: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
4ee30: 246e 000c moveal %fp@(12),%a2
unsigned long long result;
char *end;
if ( !n )
4ee34: 4a8a tstl %a2
4ee36: 676e beqs 4eea6 <rtems_string_to_unsigned_long_long+0x7e>
return RTEMS_INVALID_ADDRESS;
errno = 0;
4ee38: 47f9 0005 0b58 lea 50b58 <__errno>,%a3
4ee3e: 4e93 jsr %a3@
4ee40: 2040 moveal %d0,%a0
*n = 0;
4ee42: 4280 clrl %d0
4ee44: 4281 clrl %d1
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4ee46: 4290 clrl %a0@
*n = 0;
4ee48: 2480 movel %d0,%a2@
4ee4a: 2541 0004 movel %d1,%a2@(4)
result = strtoull( s, &end, base );
4ee4e: 2f2e 0014 movel %fp@(20),%sp@-
4ee52: 486e fffc pea %fp@(-4)
4ee56: 2f2e 0008 movel %fp@(8),%sp@-
4ee5a: 4eb9 0005 3c50 jsr 53c50 <strtoull>
if ( endptr )
4ee60: 4fef 000c lea %sp@(12),%sp
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
result = strtoull( s, &end, base );
4ee64: 2400 movel %d0,%d2
4ee66: 2601 movel %d1,%d3
if ( endptr )
*endptr = end;
4ee68: 222e fffc movel %fp@(-4),%d1
errno = 0;
*n = 0;
result = strtoull( s, &end, base );
if ( endptr )
4ee6c: 4aae 0010 tstl %fp@(16)
4ee70: 6706 beqs 4ee78 <rtems_string_to_unsigned_long_long+0x50>
*endptr = end;
4ee72: 206e 0010 moveal %fp@(16),%a0
4ee76: 2081 movel %d1,%a0@
if ( end == s )
4ee78: b2ae 0008 cmpl %fp@(8),%d1
4ee7c: 671c beqs 4ee9a <rtems_string_to_unsigned_long_long+0x72>
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4ee7e: 4e93 jsr %a3@
4ee80: 7222 moveq #34,%d1
4ee82: 2040 moveal %d0,%a0
4ee84: b290 cmpl %a0@,%d1
4ee86: 672a beqs 4eeb2 <rtems_string_to_unsigned_long_long+0x8a>
(( result == 0 ) || ( result == ULONG_LONG_MAX )))
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
4ee88: 4280 clrl %d0
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == ULONG_LONG_MAX )))
return RTEMS_INVALID_NUMBER;
*n = result;
4ee8a: 2482 movel %d2,%a2@
4ee8c: 2543 0004 movel %d3,%a2@(4)
return RTEMS_SUCCESSFUL;
}
4ee90: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3
4ee96: 4e5e unlk %fp
4ee98: 4e75 rts
if ( endptr )
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
4ee9a: 700b moveq #11,%d0
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4ee9c: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3
4eea2: 4e5e unlk %fp
4eea4: 4e75 rts
{
unsigned long long result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4eea6: 7009 moveq #9,%d0
return RTEMS_INVALID_NUMBER;
*n = result;
return RTEMS_SUCCESSFUL;
}
4eea8: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3
4eeae: 4e5e unlk %fp
4eeb0: 4e75 rts
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
(( result == 0 ) || ( result == ULONG_LONG_MAX )))
4eeb2: 70ff moveq #-1,%d0
4eeb4: 72ff moveq #-1,%d1
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4eeb6: 78ff moveq #-1,%d4
4eeb8: 7afd moveq #-3,%d5
(( result == 0 ) || ( result == ULONG_LONG_MAX )))
4eeba: d283 addl %d3,%d1
4eebc: d182 addxl %d2,%d0
*endptr = end;
if ( end == s )
return RTEMS_NOT_DEFINED;
if ( ( errno == ERANGE ) &&
4eebe: 9a81 subl %d1,%d5
4eec0: 9980 subxl %d0,%d4
4eec2: 64c4 bccs 4ee88 <rtems_string_to_unsigned_long_long+0x60><== NEVER TAKEN
(( result == 0 ) || ( result == ULONG_LONG_MAX )))
return RTEMS_INVALID_NUMBER;
4eec4: 700a moveq #10,%d0
*n = result;
return RTEMS_SUCCESSFUL;
}
4eec6: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3
4eecc: 4e5e unlk %fp <== NOT EXECUTED
00042bb4 <rtems_tarfs_load>:
int rtems_tarfs_load(
const char *mountpoint,
uint8_t *tar_image,
size_t tar_size
)
{
42bb4: 4e56 fe0c linkw %fp,#-500
42bb8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
IMFS_jnode_t *node;
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 =
42bbc: 4878 0018 pea 18 <OPER2+0x4>
42bc0: 2f2e 0008 movel %fp@(8),%sp@-
42bc4: 486e fe64 pea %fp@(-412)
42bc8: 4eb9 0004 4c8e jsr 44c8e <rtems_filesystem_eval_path_start>
static inline void rtems_filesystem_eval_path_extract_currentloc(
rtems_filesystem_eval_path_context_t *ctx,
rtems_filesystem_location_info_t *get
)
{
rtems_filesystem_location_copy_and_detach(
42bce: 486e fe7c pea %fp@(-388)
42bd2: 486e fe4c pea %fp@(-436)
42bd6: 2d40 fe40 movel %d0,%fp@(-448)
42bda: 4eb9 0004 5140 jsr 45140 <rtems_filesystem_location_copy_and_detach>
&ctx,
RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE
);
if (
rootloc.mt_entry->ops != &IMFS_ops
42be0: 206e fe60 moveal %fp@(-416),%a0
static inline void rtems_filesystem_eval_path_set_flags(
rtems_filesystem_eval_path_context_t *ctx,
int flags
)
{
ctx->flags = flags;
42be4: 7260 moveq #96,%d1
rtems_filesystem_eval_path_set_flags(
&ctx,
RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE
);
if (
42be6: 4fef 0014 lea %sp@(20),%sp
rootloc.mt_entry->ops != &IMFS_ops
42bea: 2028 000c movel %a0@(12),%d0
42bee: 2d41 fe74 movel %d1,%fp@(-396)
rtems_filesystem_eval_path_set_flags(
&ctx,
RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE
);
if (
42bf2: 0c80 0006 1d68 cmpil #400744,%d0
42bf8: 670a beqs 42c04 <rtems_tarfs_load+0x50> <== NEVER TAKEN
rootloc.mt_entry->ops != &IMFS_ops
&& rootloc.mt_entry->ops != &fifoIMFS_ops
42bfa: 0c80 0006 2752 cmpil #403282,%d0
42c00: 6600 0224 bnew 42e26 <rtems_tarfs_load+0x272>
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while ( rv == 0 ) {
if (offset + 512 > tar_size)
42c04: 222e 0010 movel %fp@(16),%d1
42c08: 0c81 0000 01ff cmpil #511,%d1
42c0e: 6300 0248 blsw 42e58 <rtems_tarfs_load+0x2a4>
* - For directories, just create directories as usual. IMFS
* will take care of the rest.
* - For files, create a file node with special tarfs properties.
*/
if (linkflag == DIRTYPE) {
strcpy(full_filename, mountpoint);
42c12: 220e movel %fp,%d1
42c14: 0681 ffff ff00 addil #-256,%d1
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while ( rv == 0 ) {
if (offset + 512 > tar_size)
42c1a: 2c3c 0000 0200 movel #512,%d6
42c20: 41f9 0004 36d0 lea 436d0 <rtems_filesystem_location_free>,%a0
hdr_ptr = (char *) &tar_image[offset];
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
42c26: 2a0e movel %fp,%d5
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while ( rv == 0 ) {
if (offset + 512 > tar_size)
42c28: 2406 movel %d6,%d2
42c2a: 95ca subal %a2,%a2
42c2c: 49f9 0005 25bc lea 525bc <strncmp>,%a4
hdr_ptr = (char *) &tar_image[offset];
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
42c32: 0685 ffff fe9c addil #-356,%d5
filename[MAX_NAME_FIELD_SIZE] = '\0';
linkflag = hdr_ptr[156];
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
42c38: 47f9 0004 b63c lea 4b63c <_rtems_octal2ulong>,%a3
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);
if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)
42c3e: 4bf9 0004 bb60 lea 4bb60 <_rtems_tar_header_checksum>,%a5
* - For directories, just create directories as usual. IMFS
* will take care of the rest.
* - For files, create a file node with special tarfs properties.
*/
if (linkflag == DIRTYPE) {
strcpy(full_filename, mountpoint);
42c44: 2d41 fe48 movel %d1,%fp@(-440)
42c48: 4681 notl %d1
42c4a: 2d48 fe3c movel %a0,%fp@(-452)
42c4e: 2d41 fe38 movel %d1,%fp@(-456)
42c52: 2d46 fe44 movel %d6,%fp@(-444)
/*
* Read a header.
*/
hdr_ptr = (char *) &tar_image[offset];
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
42c56: 4878 0005 pea 5 <COMPARE>
break;
/*
* Read a header.
*/
hdr_ptr = (char *) &tar_image[offset];
42c5a: d5ee 000c addal %fp@(12),%a2
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
42c5e: 4879 0006 1dec pea 61dec <IMFS_node_control_default+0x14>
42c64: 486a 0101 pea %a2@(257)
42c68: 4e94 jsr %a4@
42c6a: 4fef 000c lea %sp@(12),%sp
42c6e: 4a80 tstl %d0
42c70: 6674 bnes 42ce6 <rtems_tarfs_load+0x132>
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
42c72: 4878 0063 pea 63 <DBL_MANT_DIG+0x2e>
filename[MAX_NAME_FIELD_SIZE] = '\0';
42c76: 4203 clrb %d3
hdr_ptr = (char *) &tar_image[offset];
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
42c78: 2f0a movel %a2,%sp@-
42c7a: 2f05 movel %d5,%sp@-
42c7c: 4eb9 0005 26b8 jsr 526b8 <strncpy>
filename[MAX_NAME_FIELD_SIZE] = '\0';
linkflag = hdr_ptr[156];
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
42c82: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
42c86: 486a 0064 pea %a2@(100)
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
filename[MAX_NAME_FIELD_SIZE] = '\0';
42c8a: 1d43 feff moveb %d3,%fp@(-257)
linkflag = hdr_ptr[156];
42c8e: 182a 009c moveb %a2@(156),%d4
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
42c92: 4e93 jsr %a3@
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
42c94: 4878 000c pea c <OPER1>
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
filename[MAX_NAME_FIELD_SIZE] = '\0';
linkflag = hdr_ptr[156];
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
42c98: 2e00 movel %d0,%d7
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
42c9a: 486a 007c pea %a2@(124)
42c9e: 4e93 jsr %a3@
hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);
42ca0: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
filename[MAX_NAME_FIELD_SIZE] = '\0';
linkflag = hdr_ptr[156];
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
42ca4: 2c00 movel %d0,%d6
hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);
42ca6: 486a 0094 pea %a2@(148)
42caa: 4e93 jsr %a3@
if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)
42cac: 4fef 0020 lea %sp@(32),%sp
filename[MAX_NAME_FIELD_SIZE] = '\0';
linkflag = hdr_ptr[156];
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);
42cb0: 2600 movel %d0,%d3
if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)
42cb2: 2e8a movel %a2,%sp@
42cb4: 4e95 jsr %a5@
42cb6: 588f addql #4,%sp
42cb8: b680 cmpl %d0,%d3
42cba: 662a bnes 42ce6 <rtems_tarfs_load+0x132> <== NEVER TAKEN
* Generate an IMFS node depending on the file type.
* - For directories, just create directories as usual. IMFS
* will take care of the rest.
* - For files, create a file node with special tarfs properties.
*/
if (linkflag == DIRTYPE) {
42cbc: 7035 moveq #53,%d0
42cbe: 0284 0000 00ff andil #255,%d4
42cc4: b084 cmpl %d4,%d0
42cc6: 6746 beqs 42d0e <rtems_tarfs_load+0x15a>
mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);
}
/*
* Create a LINEAR_FILE node
*/
else if (linkflag == REGTYPE) {
42cc8: 7030 moveq #48,%d0
42cca: b084 cmpl %d4,%d0
42ccc: 6700 00a2 beqw 42d70 <rtems_tarfs_load+0x1bc>
42cd0: 2442 moveal %d2,%a2
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while ( rv == 0 ) {
if (offset + 512 > tar_size)
42cd2: 240a movel %a2,%d2
42cd4: 0682 0000 0200 addil #512,%d2
42cda: 2d42 fe44 movel %d2,%fp@(-444)
42cde: b4ae 0010 cmpl %fp@(16),%d2
42ce2: 6300 ff72 blsw 42c56 <rtems_tarfs_load+0xa2>
if (
rootloc.mt_entry->ops != &IMFS_ops
&& rootloc.mt_entry->ops != &fifoIMFS_ops
) {
rv = -1;
42ce6: 4280 clrl %d0
nblocks = (((file_size) + 511) & ~511) / 512;
offset += 512 * nblocks;
}
}
rtems_filesystem_location_free( &rootloc );
42ce8: 486e fe4c pea %fp@(-436)
42cec: 226e fe3c moveal %fp@(-452),%a1
42cf0: 2d40 fe34 movel %d0,%fp@(-460)
42cf4: 4e91 jsr %a1@
rtems_filesystem_eval_path_cleanup( &ctx );
42cf6: 486e fe64 pea %fp@(-412)
42cfa: 4eb9 0004 4de2 jsr 44de2 <rtems_filesystem_eval_path_cleanup>
42d00: 202e fe34 movel %fp@(-460),%d0
return rv;
}
42d04: 4cee 3cfc fe0c moveml %fp@(-500),%d2-%d7/%a2-%a5
42d0a: 4e5e unlk %fp
42d0c: 4e75 rts
* - For directories, just create directories as usual. IMFS
* will take care of the rest.
* - For files, create a file node with special tarfs properties.
*/
if (linkflag == DIRTYPE) {
strcpy(full_filename, mountpoint);
42d0e: 2f2e 0008 movel %fp@(8),%sp@-
if (full_filename[strlen(full_filename)-1] != '/')
42d12: 762f moveq #47,%d3
* - For directories, just create directories as usual. IMFS
* will take care of the rest.
* - For files, create a file node with special tarfs properties.
*/
if (linkflag == DIRTYPE) {
strcpy(full_filename, mountpoint);
42d14: 486e ff00 pea %fp@(-256)
42d18: 4eb9 0005 1f00 jsr 51f00 <stpcpy>
if (full_filename[strlen(full_filename)-1] != '/')
42d1e: 508f addql #8,%sp
42d20: 41f6 0800 lea %fp@(00000000,%d0:l),%a0
42d24: d1ee fe38 addal %fp@(-456),%a0
42d28: 1228 ff00 moveb %a0@(-256),%d1
42d2c: 49c1 extbl %d1
42d2e: b681 cmpl %d1,%d3
42d30: 6706 beqs 42d38 <rtems_tarfs_load+0x184> <== ALWAYS TAKEN
strcat(full_filename, "/");
42d32: 2040 moveal %d0,%a0 <== NOT EXECUTED
42d34: 30bc 2f00 movew #12032,%a0@ <== NOT EXECUTED
strcat(full_filename, filename);
42d38: 2f05 movel %d5,%sp@-
42d3a: 486e ff00 pea %fp@(-256)
mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);
42d3e: 2442 moveal %d2,%a2
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while ( rv == 0 ) {
if (offset + 512 > tar_size)
42d40: 240a movel %a2,%d2
42d42: 0682 0000 0200 addil #512,%d2
*/
if (linkflag == DIRTYPE) {
strcpy(full_filename, mountpoint);
if (full_filename[strlen(full_filename)-1] != '/')
strcat(full_filename, "/");
strcat(full_filename, filename);
42d48: 4eb9 0005 1f70 jsr 51f70 <strcat>
mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);
42d4e: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca>
42d52: 486e ff00 pea %fp@(-256)
42d56: 4eb9 0004 3cd0 jsr 43cd0 <mkdir>
42d5c: 4fef 0010 lea %sp@(16),%sp
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while ( rv == 0 ) {
if (offset + 512 > tar_size)
42d60: 2d42 fe44 movel %d2,%fp@(-444)
42d64: b4ae 0010 cmpl %fp@(16),%d2
42d68: 6300 feec blsw 42c56 <rtems_tarfs_load+0xa2>
42d6c: 6000 ff78 braw 42ce6 <rtems_tarfs_load+0x132> <== NOT EXECUTED
}
/*
* Create a LINEAR_FILE node
*/
else if (linkflag == REGTYPE) {
rtems_filesystem_location_free( currentloc );
42d70: 2f2e fe40 movel %fp@(-448),%sp@-
42d74: 206e fe3c moveal %fp@(-452),%a0
42d78: 4e90 jsr %a0@
rtems_filesystem_location_clone( currentloc, &rootloc );
42d7a: 486e fe4c pea %fp@(-436)
42d7e: 2f2e fe40 movel %fp@(-448),%sp@-
42d82: 4eb9 0004 33a0 jsr 433a0 <rtems_filesystem_location_clone>
rtems_filesystem_eval_path_set_path(
42d88: 2f05 movel %d5,%sp@-
42d8a: 4eb9 0005 25a0 jsr 525a0 <strlen>
42d90: 588f addql #4,%sp
&ctx,
filename,
strlen( filename )
);
rtems_filesystem_eval_path_continue( &ctx );
42d92: 486e fe64 pea %fp@(-412)
const char *path,
size_t pathlen
)
{
ctx->path = path;
ctx->pathlen = pathlen;
42d96: 2d40 fe68 movel %d0,%fp@(-408)
rtems_filesystem_eval_path_context_t *ctx,
const char *path,
size_t pathlen
)
{
ctx->path = path;
42d9a: 2d45 fe64 movel %d5,%fp@(-412)
42d9e: 4eb9 0004 4a72 jsr 44a72 <rtems_filesystem_eval_path_continue>
if ( !rtems_filesystem_location_is_null( currentloc ) ) {
42da4: 226e fe40 moveal %fp@(-448),%a1
42da8: 4fef 0010 lea %sp@(16),%sp
42dac: 203c 0006 24de movel #402654,%d0
42db2: b0a9 0010 cmpl %a1@(16),%d0
42db6: 6744 beqs 42dfc <rtems_tarfs_load+0x248> <== NEVER TAKEN
42db8: 42a7 clrl %sp@-
node = IMFS_create_node(
currentloc,
IMFS_LINEAR_FILE,
rtems_filesystem_eval_path_get_token( &ctx ),
rtems_filesystem_eval_path_get_tokenlen( &ctx ),
(file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
42dba: 0287 0000 01ff andil #511,%d7
42dc0: 08c7 000f bset #15,%d7
42dc4: 2f07 movel %d7,%sp@-
42dc6: 2f2e fe70 movel %fp@(-400),%sp@-
42dca: 2f2e fe6c movel %fp@(-404),%sp@-
size_t namelen,
mode_t mode,
const IMFS_types_union *info
)
{
const IMFS_fs_info_t *fs_info =
42dce: 2069 0014 moveal %a1@(20),%a0
(const IMFS_fs_info_t *) parentloc->mt_entry->fs_info;
return IMFS_create_node_with_control(
42dd2: 2068 0008 moveal %a0@(8),%a0
42dd6: 2f28 001c movel %a0@(28),%sp@-
42dda: 2f09 movel %a1,%sp@-
42ddc: 4eb9 0004 be2e jsr 4be2e <IMFS_create_node_with_control>
NULL
);
node->info.linearfile.size = file_size;
node->info.linearfile.direct = &tar_image[offset];
42de2: 222e 000c movel %fp@(12),%d1
42de6: d2ae fe44 addl %fp@(-444),%d1
42dea: 2040 moveal %d0,%a0
42dec: 4fef 0018 lea %sp@(24),%sp
42df0: 2141 0056 movel %d1,%a0@(86)
rtems_filesystem_eval_path_get_token( &ctx ),
rtems_filesystem_eval_path_get_tokenlen( &ctx ),
(file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
NULL
);
node->info.linearfile.size = file_size;
42df4: 2146 0052 movel %d6,%a0@(82)
42df8: 42a8 004e clrl %a0@(78)
node->info.linearfile.direct = &tar_image[offset];
}
nblocks = (((file_size) + 511) & ~511) / 512;
42dfc: 0686 0000 01ff addil #511,%d6
offset += 512 * nblocks;
42e02: 0286 ffff fe00 andil #-512,%d6
42e08: 246e fe44 moveal %fp@(-444),%a2
42e0c: d5c6 addal %d6,%a2
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while ( rv == 0 ) {
if (offset + 512 > tar_size)
42e0e: 240a movel %a2,%d2
42e10: 0682 0000 0200 addil #512,%d2
42e16: 2d42 fe44 movel %d2,%fp@(-444)
42e1a: b4ae 0010 cmpl %fp@(16),%d2
42e1e: 6300 fe36 blsw 42c56 <rtems_tarfs_load+0xa2>
42e22: 6000 fec2 braw 42ce6 <rtems_tarfs_load+0x132> <== NOT EXECUTED
42e26: 41f9 0004 36d0 lea 436d0 <rtems_filesystem_location_free>,%a0
if (
rootloc.mt_entry->ops != &IMFS_ops
&& rootloc.mt_entry->ops != &fifoIMFS_ops
) {
rv = -1;
42e2c: 70ff moveq #-1,%d0
nblocks = (((file_size) + 511) & ~511) / 512;
offset += 512 * nblocks;
}
}
rtems_filesystem_location_free( &rootloc );
42e2e: 486e fe4c pea %fp@(-436)
42e32: 2d48 fe3c movel %a0,%fp@(-452)
42e36: 226e fe3c moveal %fp@(-452),%a1
42e3a: 2d40 fe34 movel %d0,%fp@(-460)
42e3e: 4e91 jsr %a1@
rtems_filesystem_eval_path_cleanup( &ctx );
42e40: 486e fe64 pea %fp@(-412)
42e44: 4eb9 0004 4de2 jsr 44de2 <rtems_filesystem_eval_path_cleanup>
42e4a: 202e fe34 movel %fp@(-460),%d0
return rv;
}
42e4e: 4cee 3cfc fe0c moveml %fp@(-500),%d2-%d7/%a2-%a5
42e54: 4e5e unlk %fp
42e56: 4e75 rts
42e58: 41f9 0004 36d0 lea 436d0 <rtems_filesystem_location_free>,%a0<== NOT EXECUTED
if (
rootloc.mt_entry->ops != &IMFS_ops
&& rootloc.mt_entry->ops != &fifoIMFS_ops
) {
rv = -1;
42e5e: 4280 clrl %d0 <== NOT EXECUTED
42e60: 2d48 fe3c movel %a0,%fp@(-452) <== NOT EXECUTED
42e64: 6000 fe82 braw 42ce8 <rtems_tarfs_load+0x134> <== NOT EXECUTED
000508f8 <rtems_task_mode>:
rtems_status_code rtems_task_mode(
rtems_mode mode_set,
rtems_mode mask,
rtems_mode *previous_mode_set
)
{
508f8: 4e56 ffe4 linkw %fp,#-28
508fc: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
50900: 2a2e 0008 movel %fp@(8),%d5
50904: 242e 000c movel %fp@(12),%d2
50908: 286e 0010 moveal %fp@(16),%a4
ASR_Information *asr;
bool is_asr_enabled = false;
bool needs_asr_dispatching = false;
rtems_mode old_mode;
if ( !previous_mode_set )
5090c: 4a8c tstl %a4
5090e: 6700 0148 beqw 50a58 <rtems_task_mode+0x160>
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
50912: 2479 0006 4162 moveal 64162 <_Per_CPU_Information+0xe>,%a2
api = executing->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
50918: 4a2a 0070 tstb %a2@(112)
5091c: 57c3 seq %d3
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
5091e: 266a 00f8 moveal %a2@(248),%a3
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
50922: 49c3 extbl %d3
50924: 0283 0000 0100 andil #256,%d3
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
5092a: 4aaa 0076 tstl %a2@(118)
5092e: 6600 00cc bnew 509fc <rtems_task_mode+0x104>
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
50932: 4a2b 0008 tstb %a3@(8)
50936: 57c4 seq %d4
old_mode |= _ISR_Get_level();
50938: 4eb9 0004 c688 jsr 4c688 <_CPU_ISR_Get_level>
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
5093e: 49c4 extbl %d4
50940: 0284 0000 0400 andil #1024,%d4
50946: 8084 orl %d4,%d0
old_mode |= _ISR_Get_level();
50948: 8083 orl %d3,%d0
5094a: 2880 movel %d0,%a4@
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
5094c: 0802 0008 btst #8,%d2
50950: 670e beqs 50960 <rtems_task_mode+0x68>
50952: 2005 movel %d5,%d0
50954: 7201 moveq #1,%d1
50956: e088 lsrl #8,%d0
50958: b380 eorl %d1,%d0
5095a: c081 andl %d1,%d0
executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
5095c: 1540 0070 moveb %d0,%a2@(112)
if ( mask & RTEMS_TIMESLICE_MASK ) {
50960: 0802 0009 btst #9,%d2
50964: 6718 beqs 5097e <rtems_task_mode+0x86>
if ( _Modes_Is_timeslice(mode_set) ) {
50966: 0805 0009 btst #9,%d5
5096a: 6700 00f8 beqw 50a64 <rtems_task_mode+0x16c>
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
5096e: 7001 moveq #1,%d0
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
50970: 41f9 0006 3fa2 lea 63fa2 <_Thread_Ticks_per_timeslice>,%a0
if ( mask & RTEMS_PREEMPT_MASK )
executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
if ( mask & RTEMS_TIMESLICE_MASK ) {
if ( _Modes_Is_timeslice(mode_set) ) {
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
50976: 2540 0076 movel %d0,%a2@(118)
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
5097a: 2550 0072 movel %a0@,%a2@(114)
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
5097e: 7007 moveq #7,%d0
50980: c082 andl %d2,%d0
50982: 6712 beqs 50996 <rtems_task_mode+0x9e>
*/
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
Modes_Control mode_set
)
{
_ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
50984: 40c0 movew %sr,%d0
*/
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
Modes_Control mode_set
)
{
return ( mode_set & RTEMS_INTERRUPT_MASK );
50986: 7207 moveq #7,%d1
50988: c285 andl %d5,%d1
*/
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
Modes_Control mode_set
)
{
_ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
5098a: 0280 0000 f8ff andil #63743,%d0
50990: e189 lsll #8,%d1
50992: 8081 orl %d1,%d0
50994: 46c0 movew %d0,%sr
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
50996: 0802 000a btst #10,%d2
5099a: 6752 beqs 509ee <rtems_task_mode+0xf6>
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
5099c: 700a moveq #10,%d0
5099e: e0ad lsrl %d0,%d5
509a0: 7201 moveq #1,%d1
if ( is_asr_enabled != asr->is_enabled ) {
509a2: 4280 clrl %d0
509a4: 102b 0008 moveb %a3@(8),%d0
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
509a8: b385 eorl %d1,%d5
509aa: ca81 andl %d1,%d5
if ( is_asr_enabled != asr->is_enabled ) {
509ac: ba80 cmpl %d0,%d5
509ae: 673e beqs 509ee <rtems_task_mode+0xf6>
)
{
rtems_signal_set _signals;
ISR_Level _level;
_ISR_Disable( _level );
509b0: 203c 0000 0700 movel #1792,%d0
asr->is_enabled = is_asr_enabled;
509b6: 1745 0008 moveb %d5,%a3@(8)
509ba: 40c1 movew %sr,%d1
509bc: 8081 orl %d1,%d0
509be: 46c0 movew %d0,%sr
_signals = information->signals_pending;
509c0: 202b 0016 movel %a3@(22),%d0
information->signals_pending = information->signals_posted;
509c4: 276b 0012 0016 movel %a3@(18),%a3@(22)
information->signals_posted = _signals;
509ca: 2740 0012 movel %d0,%a3@(18)
_ISR_Enable( _level );
509ce: 46c1 movew %d1,%sr
_ASR_Swap_signals( asr );
if ( _ASR_Are_signals_pending( asr ) ) {
509d0: 4aab 0012 tstl %a3@(18)
509d4: 56c0 sne %d0
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
509d6: 7203 moveq #3,%d1
if ( mask & RTEMS_ASR_MASK ) {
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
if ( is_asr_enabled != asr->is_enabled ) {
asr->is_enabled = is_asr_enabled;
_ASR_Swap_signals( asr );
if ( _ASR_Are_signals_pending( asr ) ) {
509d8: 4480 negl %d0
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
509da: b2b9 0006 4150 cmpl 64150 <_System_state_Current>,%d1
509e0: 6744 beqs 50a26 <rtems_task_mode+0x12e> <== ALWAYS TAKEN
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
509e2: 4280 clrl %d0
}
509e4: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
509ea: 4e5e unlk %fp
509ec: 4e75 rts
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
509ee: 7203 moveq #3,%d1
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
509f0: 4200 clrb %d0
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
509f2: b2b9 0006 4150 cmpl 64150 <_System_state_Current>,%d1
509f8: 66e8 bnes 509e2 <rtems_task_mode+0xea>
509fa: 602a bras 50a26 <rtems_task_mode+0x12e>
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
509fc: 4a2b 0008 tstb %a3@(8)
50a00: 57c4 seq %d4
old_mode |= _ISR_Get_level();
50a02: 4eb9 0004 c688 jsr 4c688 <_CPU_ISR_Get_level>
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
50a08: 49c4 extbl %d4
50a0a: 0284 0000 0400 andil #1024,%d4
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
50a10: 08c3 0009 bset #9,%d3
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
50a14: 8084 orl %d4,%d0
old_mode |= _ISR_Get_level();
50a16: 8083 orl %d3,%d0
50a18: 2880 movel %d0,%a4@
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
50a1a: 0802 0008 btst #8,%d2
50a1e: 6700 ff40 beqw 50960 <rtems_task_mode+0x68>
50a22: 6000 ff2e braw 50952 <rtems_task_mode+0x5a>
bool are_signals_pending
)
{
Thread_Control *executing;
executing = _Thread_Executing;
50a26: 2079 0006 4162 moveal 64162 <_Per_CPU_Information+0xe>,%a0
if ( are_signals_pending ||
50a2c: 4a00 tstb %d0
50a2e: 660e bnes 50a3e <rtems_task_mode+0x146>
50a30: b1f9 0006 4166 cmpal 64166 <_Per_CPU_Information+0x12>,%a0
50a36: 67aa beqs 509e2 <rtems_task_mode+0xea>
(!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
50a38: 4a28 0070 tstb %a0@(112)
50a3c: 67a4 beqs 509e2 <rtems_task_mode+0xea> <== NEVER TAKEN
_Thread_Dispatch_necessary = true;
50a3e: 7001 moveq #1,%d0
50a40: 13c0 0006 4160 moveb %d0,64160 <_Per_CPU_Information+0xc>
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
50a46: 4eb9 0004 b41c jsr 4b41c <_Thread_Dispatch>
}
return RTEMS_SUCCESSFUL;
}
50a4c: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
if ( _System_state_Is_up( _System_state_Get() ) ) {
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
50a52: 4280 clrl %d0
}
50a54: 4e5e unlk %fp
50a56: 4e75 rts
bool is_asr_enabled = false;
bool needs_asr_dispatching = false;
rtems_mode old_mode;
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
50a58: 7009 moveq #9,%d0
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
}
50a5a: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
50a60: 4e5e unlk %fp
50a62: 4e75 rts
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
50a64: 7007 moveq #7,%d0
50a66: c082 andl %d2,%d0
if ( mask & RTEMS_TIMESLICE_MASK ) {
if ( _Modes_Is_timeslice(mode_set) ) {
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
} else
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
50a68: 42aa 0076 clrl %a2@(118)
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
50a6c: 4a80 tstl %d0
50a6e: 6700 ff26 beqw 50996 <rtems_task_mode+0x9e>
50a72: 6000 ff10 braw 50984 <rtems_task_mode+0x8c>
...
0004b91c <rtems_task_set_priority>:
rtems_status_code rtems_task_set_priority(
rtems_id id,
rtems_task_priority new_priority,
rtems_task_priority *old_priority
)
{
4b91c: 4e56 fffc linkw %fp,#-4
4b920: 2f02 movel %d2,%sp@-
4b922: 242e 000c movel %fp@(12),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
4b926: 670c beqs 4b934 <rtems_task_set_priority+0x18>
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
4b928: 4280 clrl %d0
4b92a: 1039 0006 22ac moveb 622ac <rtems_maximum_priority>,%d0
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
4b930: b082 cmpl %d2,%d0
4b932: 656e bcss 4b9a2 <rtems_task_set_priority+0x86>
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
if ( !old_priority )
4b934: 4aae 0010 tstl %fp@(16)
4b938: 6754 beqs 4b98e <rtems_task_set_priority+0x72>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
4b93a: 486e fffc pea %fp@(-4)
4b93e: 2f2e 0008 movel %fp@(8),%sp@-
4b942: 4eb9 0004 ddec jsr 4ddec <_Thread_Get>
switch ( location ) {
4b948: 508f addql #8,%sp
4b94a: 4aae fffc tstl %fp@(-4)
4b94e: 6648 bnes 4b998 <rtems_task_set_priority+0x7c>
case OBJECTS_LOCAL:
/* XXX need helper to "convert" from core priority */
*old_priority = the_thread->current_priority;
4b950: 206e 0010 moveal %fp@(16),%a0
4b954: 2240 moveal %d0,%a1
4b956: 20a9 0014 movel %a1@(20),%a0@
if ( new_priority != RTEMS_CURRENT_PRIORITY ) {
4b95a: 4a82 tstl %d2
4b95c: 6720 beqs 4b97e <rtems_task_set_priority+0x62>
the_thread->real_priority = new_priority;
4b95e: 2342 0018 movel %d2,%a1@(24)
if ( the_thread->resource_count == 0 ||
4b962: 4aa9 001c tstl %a1@(28)
4b966: 6706 beqs 4b96e <rtems_task_set_priority+0x52>
4b968: b4a9 0014 cmpl %a1@(20),%d2
4b96c: 6410 bccs 4b97e <rtems_task_set_priority+0x62> <== ALWAYS TAKEN
the_thread->current_priority > new_priority )
_Thread_Change_priority( the_thread, new_priority, false );
4b96e: 42a7 clrl %sp@-
4b970: 2f02 movel %d2,%sp@-
4b972: 2f00 movel %d0,%sp@-
4b974: 4eb9 0004 d8e8 jsr 4d8e8 <_Thread_Change_priority>
4b97a: 4fef 000c lea %sp@(12),%sp
}
_Thread_Enable_dispatch();
4b97e: 4eb9 0004 ddcc jsr 4ddcc <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4b984: 242e fff8 movel %fp@(-8),%d2
if ( the_thread->resource_count == 0 ||
the_thread->current_priority > new_priority )
_Thread_Change_priority( the_thread, new_priority, false );
}
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4b988: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4b98a: 4e5e unlk %fp
4b98c: 4e75 rts
4b98e: 242e fff8 movel %fp@(-8),%d2
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
if ( !old_priority )
return RTEMS_INVALID_ADDRESS;
4b992: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4b994: 4e5e unlk %fp
4b996: 4e75 rts
4b998: 242e fff8 movel %fp@(-8),%d2
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4b99c: 7004 moveq #4,%d0
}
4b99e: 4e5e unlk %fp
4b9a0: 4e75 rts
4b9a2: 242e fff8 movel %fp@(-8),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
4b9a6: 7013 moveq #19,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4b9a8: 4e5e unlk %fp <== NOT EXECUTED
00047990 <rtems_task_start>:
rtems_status_code rtems_task_start(
rtems_id id,
rtems_task_entry entry_point,
rtems_task_argument argument
)
{
47990: 4e56 fffc linkw %fp,#-4
register Thread_Control *the_thread;
Objects_Locations location;
if ( entry_point == NULL )
47994: 4aae 000c tstl %fp@(12)
47998: 6744 beqs 479de <rtems_task_start+0x4e> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
4799a: 486e fffc pea %fp@(-4)
4799e: 2f2e 0008 movel %fp@(8),%sp@-
479a2: 4eb9 0004 9c64 jsr 49c64 <_Thread_Get>
switch ( location ) {
479a8: 508f addql #8,%sp
479aa: 4aae fffc tstl %fp@(-4)
479ae: 6628 bnes 479d8 <rtems_task_start+0x48>
case OBJECTS_LOCAL:
if ( _Thread_Start(
479b0: 2f2e 0010 movel %fp@(16),%sp@-
479b4: 42a7 clrl %sp@-
479b6: 2f2e 000c movel %fp@(12),%sp@-
479ba: 42a7 clrl %sp@-
479bc: 2f00 movel %d0,%sp@-
479be: 4eb9 0004 a678 jsr 4a678 <_Thread_Start>
479c4: 4fef 0014 lea %sp@(20),%sp
479c8: 4a00 tstb %d0
479ca: 6618 bnes 479e4 <rtems_task_start+0x54>
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
479cc: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
return RTEMS_INCORRECT_STATE;
479d2: 700e moveq #14,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
479d4: 4e5e unlk %fp
479d6: 4e75 rts
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
479d8: 7004 moveq #4,%d0
}
479da: 4e5e unlk %fp
479dc: 4e75 rts
{
register Thread_Control *the_thread;
Objects_Locations location;
if ( entry_point == NULL )
return RTEMS_INVALID_ADDRESS;
479de: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
479e0: 4e5e unlk %fp
479e2: 4e75 rts
switch ( location ) {
case OBJECTS_LOCAL:
if ( _Thread_Start(
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
479e4: 4eb9 0004 9c44 jsr 49c44 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
479ea: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
479ec: 4e5e unlk %fp <== NOT EXECUTED
00045558 <rtems_task_variable_delete>:
rtems_status_code rtems_task_variable_delete(
rtems_id tid,
void **ptr
)
{
45558: 4e56 fffc linkw %fp,#-4
4555c: 2f02 movel %d2,%sp@-
4555e: 242e 000c movel %fp@(12),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
45562: 6740 beqs 455a4 <rtems_task_variable_delete+0x4c>
return RTEMS_INVALID_ADDRESS;
prev = NULL;
the_thread = _Thread_Get (tid, &location);
45564: 486e fffc pea %fp@(-4)
45568: 2f2e 0008 movel %fp@(8),%sp@-
4556c: 4eb9 0004 72fc jsr 472fc <_Thread_Get>
switch (location) {
45572: 508f addql #8,%sp
45574: 4aae fffc tstl %fp@(-4)
45578: 6620 bnes 4559a <rtems_task_variable_delete+0x42>
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
4557a: 2040 moveal %d0,%a0
4557c: 2268 0104 moveal %a0@(260),%a1
while (tvp) {
45580: 4a89 tstl %a1
45582: 672a beqs 455ae <rtems_task_variable_delete+0x56>
if (tvp->ptr == ptr) {
45584: b4a9 0004 cmpl %a1@(4),%d2
45588: 6752 beqs 455dc <rtems_task_variable_delete+0x84>
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
4558a: 2051 moveal %a1@,%a0
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
4558c: 4a88 tstl %a0
4558e: 671e beqs 455ae <rtems_task_variable_delete+0x56><== NEVER TAKEN
if (tvp->ptr == ptr) {
45590: b4a8 0004 cmpl %a0@(4),%d2
45594: 6728 beqs 455be <rtems_task_variable_delete+0x66>
45596: 2248 moveal %a0,%a1
45598: 60f0 bras 4558a <rtems_task_variable_delete+0x32>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4559a: 242e fff8 movel %fp@(-8),%d2
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4559e: 7004 moveq #4,%d0
}
455a0: 4e5e unlk %fp
455a2: 4e75 rts
455a4: 242e fff8 movel %fp@(-8),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
455a8: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
455aa: 4e5e unlk %fp
455ac: 4e75 rts
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
455ae: 4eb9 0004 72dc jsr 472dc <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
455b4: 242e fff8 movel %fp@(-8),%d2
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
455b8: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
455ba: 4e5e unlk %fp
455bc: 4e75 rts
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
if (prev)
prev->next = tvp->next;
455be: 2290 movel %a0@,%a1@
else
the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
455c0: 2f08 movel %a0,%sp@-
455c2: 2f00 movel %d0,%sp@-
455c4: 4eb9 0004 5678 jsr 45678 <_RTEMS_Tasks_Invoke_task_variable_dtor>
_Thread_Enable_dispatch();
455ca: 4eb9 0004 72dc jsr 472dc <_Thread_Enable_dispatch>
455d0: 508f addql #8,%sp
return RTEMS_SUCCESSFUL;
455d2: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
455d4: 242e fff8 movel %fp@(-8),%d2
455d8: 4e5e unlk %fp
455da: 4e75 rts
while (tvp) {
if (tvp->ptr == ptr) {
if (prev)
prev->next = tvp->next;
else
the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
455dc: 2040 moveal %d0,%a0
455de: 2151 0104 movel %a1@,%a0@(260)
455e2: 2049 moveal %a1,%a0
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
455e4: 2f08 movel %a0,%sp@-
455e6: 2f00 movel %d0,%sp@-
455e8: 4eb9 0004 5678 jsr 45678 <_RTEMS_Tasks_Invoke_task_variable_dtor>
_Thread_Enable_dispatch();
455ee: 4eb9 0004 72dc jsr 472dc <_Thread_Enable_dispatch>
455f4: 508f addql #8,%sp
return RTEMS_SUCCESSFUL;
455f6: 4280 clrl %d0
455f8: 60da bras 455d4 <rtems_task_variable_delete+0x7c>
...
000455fc <rtems_task_variable_get>:
rtems_status_code rtems_task_variable_get(
rtems_id tid,
void **ptr,
void **result
)
{
455fc: 4e56 fffc linkw %fp,#-4
45600: 2f02 movel %d2,%sp@-
45602: 242e 000c movel %fp@(12),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp;
if ( !ptr )
45606: 6742 beqs 4564a <rtems_task_variable_get+0x4e>
return RTEMS_INVALID_ADDRESS;
if ( !result )
45608: 4aae 0010 tstl %fp@(16)
4560c: 673c beqs 4564a <rtems_task_variable_get+0x4e>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
4560e: 486e fffc pea %fp@(-4)
45612: 2f2e 0008 movel %fp@(8),%sp@-
45616: 4eb9 0004 72fc jsr 472fc <_Thread_Get>
switch (location) {
4561c: 508f addql #8,%sp
4561e: 4aae fffc tstl %fp@(-4)
45622: 6630 bnes 45654 <rtems_task_variable_get+0x58>
case OBJECTS_LOCAL:
/*
* Figure out if the variable is in this task's list.
*/
tvp = the_thread->task_variables;
45624: 2240 moveal %d0,%a1
45626: 2069 0104 moveal %a1@(260),%a0
while (tvp) {
4562a: 4a88 tstl %a0
4562c: 670c beqs 4563a <rtems_task_variable_get+0x3e>
if (tvp->ptr == ptr) {
4562e: b4a8 0004 cmpl %a0@(4),%d2
45632: 672a beqs 4565e <rtems_task_variable_get+0x62>
*/
*result = tvp->tval;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
45634: 2050 moveal %a0@,%a0
case OBJECTS_LOCAL:
/*
* Figure out if the variable is in this task's list.
*/
tvp = the_thread->task_variables;
while (tvp) {
45636: 4a88 tstl %a0
45638: 66f4 bnes 4562e <rtems_task_variable_get+0x32> <== ALWAYS TAKEN
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
4563a: 4eb9 0004 72dc jsr 472dc <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
45640: 242e fff8 movel %fp@(-8),%d2
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
45644: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
45646: 4e5e unlk %fp
45648: 4e75 rts
4564a: 242e fff8 movel %fp@(-8),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
4564e: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
45650: 4e5e unlk %fp
45652: 4e75 rts
45654: 242e fff8 movel %fp@(-8),%d2
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
45658: 7004 moveq #4,%d0
}
4565a: 4e5e unlk %fp
4565c: 4e75 rts
if (tvp->ptr == ptr) {
/*
* Should this return the current (i.e not the
* saved) value if `tid' is the current task?
*/
*result = tvp->tval;
4565e: 226e 0010 moveal %fp@(16),%a1
45662: 22a8 000c movel %a0@(12),%a1@
_Thread_Enable_dispatch();
45666: 4eb9 0004 72dc jsr 472dc <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4566c: 242e fff8 movel %fp@(-8),%d2
* Should this return the current (i.e not the
* saved) value if `tid' is the current task?
*/
*result = tvp->tval;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
45670: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
45672: 4e5e unlk %fp
...
00045e14 <rtems_termios_baud_to_index>:
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45e14: 7209 moveq #9,%d1
#include <rtems/termiostypes.h>
int rtems_termios_baud_to_index(
rtems_termios_baud_t termios_baud
)
{
45e16: 4e56 0000 linkw %fp,#0
45e1a: 202e 0008 movel %fp@(8),%d0
int baud_index;
switch (termios_baud) {
45e1e: b280 cmpl %d0,%d1
45e20: 6700 0104 beqw 45f26 <rtems_termios_baud_to_index+0x112>
45e24: 6432 bccs 45e58 <rtems_termios_baud_to_index+0x44>
45e26: 720e moveq #14,%d1
45e28: b280 cmpl %d0,%d1
45e2a: 6700 00f4 beqw 45f20 <rtems_termios_baud_to_index+0x10c>
45e2e: 6456 bccs 45e86 <rtems_termios_baud_to_index+0x72>
45e30: 0c80 0000 1002 cmpil #4098,%d0
45e36: 6700 00e2 beqw 45f1a <rtems_termios_baud_to_index+0x106>
45e3a: 6300 009e blsw 45eda <rtems_termios_baud_to_index+0xc6>
45e3e: 0c80 0000 1003 cmpil #4099,%d0
45e44: 6700 00b6 beqw 45efc <rtems_termios_baud_to_index+0xe8>
45e48: 0c80 0000 1004 cmpil #4100,%d0
45e4e: 6700 00a0 beqw 45ef0 <rtems_termios_baud_to_index+0xdc>
case B38400: baud_index = 15; break;
case B57600: baud_index = 16; break;
case B115200: baud_index = 17; break;
case B230400: baud_index = 18; break;
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
45e52: 70ff moveq #-1,%d0
}
return baud_index;
}
45e54: 4e5e unlk %fp
45e56: 4e75 rts
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45e58: 123c 0004 moveb #4,%d1
45e5c: b280 cmpl %d0,%d1
45e5e: 6700 00cc beqw 45f2c <rtems_termios_baud_to_index+0x118>
45e62: 6444 bccs 45ea8 <rtems_termios_baud_to_index+0x94>
45e64: 7206 moveq #6,%d1
45e66: b280 cmpl %d0,%d1
45e68: 6700 008c beqw 45ef6 <rtems_termios_baud_to_index+0xe2>
45e6c: 625a bhis 45ec8 <rtems_termios_baud_to_index+0xb4>
45e6e: 123c 0007 moveb #7,%d1
45e72: b280 cmpl %d0,%d1
45e74: 6700 009e beqw 45f14 <rtems_termios_baud_to_index+0x100>
45e78: 123c 0008 moveb #8,%d1
45e7c: b280 cmpl %d0,%d1
45e7e: 66d2 bnes 45e52 <rtems_termios_baud_to_index+0x3e><== NEVER TAKEN
case B110: baud_index = 3; break;
case B134: baud_index = 4; break;
case B150: baud_index = 5; break;
case B200: baud_index = 6; break;
case B300: baud_index = 7; break;
case B600: baud_index = 8; break;
45e80: 7008 moveq #8,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45e82: 4e5e unlk %fp
45e84: 4e75 rts
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45e86: 123c 000b moveb #11,%d1
45e8a: b280 cmpl %d0,%d1
45e8c: 677a beqs 45f08 <rtems_termios_baud_to_index+0xf4>
45e8e: 6244 bhis 45ed4 <rtems_termios_baud_to_index+0xc0>
45e90: 123c 000c moveb #12,%d1
45e94: b280 cmpl %d0,%d1
45e96: 6700 009a beqw 45f32 <rtems_termios_baud_to_index+0x11e>
45e9a: 123c 000d moveb #13,%d1
45e9e: b280 cmpl %d0,%d1
45ea0: 66b0 bnes 45e52 <rtems_termios_baud_to_index+0x3e><== NEVER TAKEN
case B600: baud_index = 8; break;
case B1200: baud_index = 9; break;
case B1800: baud_index = 10; break;
case B2400: baud_index = 11; break;
case B4800: baud_index = 12; break;
case B9600: baud_index = 13; break;
45ea2: 700d moveq #13,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45ea4: 4e5e unlk %fp
45ea6: 4e75 rts
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45ea8: 123c 0001 moveb #1,%d1
45eac: b280 cmpl %d0,%d1
45eae: 6752 beqs 45f02 <rtems_termios_baud_to_index+0xee>
45eb0: 621c bhis 45ece <rtems_termios_baud_to_index+0xba>
45eb2: 123c 0002 moveb #2,%d1
45eb6: b280 cmpl %d0,%d1
45eb8: 677e beqs 45f38 <rtems_termios_baud_to_index+0x124>
45eba: 123c 0003 moveb #3,%d1
45ebe: b280 cmpl %d0,%d1
45ec0: 6690 bnes 45e52 <rtems_termios_baud_to_index+0x3e><== NEVER TAKEN
case B0: baud_index = 0; break;
case B50: baud_index = 1; break;
case B75: baud_index = 2; break;
case B110: baud_index = 3; break;
45ec2: 7003 moveq #3,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45ec4: 4e5e unlk %fp
45ec6: 4e75 rts
case B0: baud_index = 0; break;
case B50: baud_index = 1; break;
case B75: baud_index = 2; break;
case B110: baud_index = 3; break;
case B134: baud_index = 4; break;
case B150: baud_index = 5; break;
45ec8: 7005 moveq #5,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45eca: 4e5e unlk %fp
45ecc: 4e75 rts
)
{
int baud_index;
switch (termios_baud) {
case B0: baud_index = 0; break;
45ece: 4280 clrl %d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45ed0: 4e5e unlk %fp
45ed2: 4e75 rts
case B150: baud_index = 5; break;
case B200: baud_index = 6; break;
case B300: baud_index = 7; break;
case B600: baud_index = 8; break;
case B1200: baud_index = 9; break;
case B1800: baud_index = 10; break;
45ed4: 700a moveq #10,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45ed6: 4e5e unlk %fp
45ed8: 4e75 rts
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45eda: 720f moveq #15,%d1
45edc: b280 cmpl %d0,%d1
45ede: 672e beqs 45f0e <rtems_termios_baud_to_index+0xfa>
45ee0: 0c80 0000 1001 cmpil #4097,%d0
45ee6: 6600 ff6a bnew 45e52 <rtems_termios_baud_to_index+0x3e>
case B2400: baud_index = 11; break;
case B4800: baud_index = 12; break;
case B9600: baud_index = 13; break;
case B19200: baud_index = 14; break;
case B38400: baud_index = 15; break;
case B57600: baud_index = 16; break;
45eea: 7010 moveq #16,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45eec: 4e5e unlk %fp
45eee: 4e75 rts
case B19200: baud_index = 14; break;
case B38400: baud_index = 15; break;
case B57600: baud_index = 16; break;
case B115200: baud_index = 17; break;
case B230400: baud_index = 18; break;
case B460800: baud_index = 19; break;
45ef0: 7013 moveq #19,%d0
default: baud_index = -1; break;
}
return baud_index;
}
45ef2: 4e5e unlk %fp
45ef4: 4e75 rts
case B50: baud_index = 1; break;
case B75: baud_index = 2; break;
case B110: baud_index = 3; break;
case B134: baud_index = 4; break;
case B150: baud_index = 5; break;
case B200: baud_index = 6; break;
45ef6: 7006 moveq #6,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45ef8: 4e5e unlk %fp
45efa: 4e75 rts
case B9600: baud_index = 13; break;
case B19200: baud_index = 14; break;
case B38400: baud_index = 15; break;
case B57600: baud_index = 16; break;
case B115200: baud_index = 17; break;
case B230400: baud_index = 18; break;
45efc: 7012 moveq #18,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45efe: 4e5e unlk %fp
45f00: 4e75 rts
{
int baud_index;
switch (termios_baud) {
case B0: baud_index = 0; break;
case B50: baud_index = 1; break;
45f02: 7001 moveq #1,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45f04: 4e5e unlk %fp
45f06: 4e75 rts
case B200: baud_index = 6; break;
case B300: baud_index = 7; break;
case B600: baud_index = 8; break;
case B1200: baud_index = 9; break;
case B1800: baud_index = 10; break;
case B2400: baud_index = 11; break;
45f08: 700b moveq #11,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45f0a: 4e5e unlk %fp
45f0c: 4e75 rts
case B1800: baud_index = 10; break;
case B2400: baud_index = 11; break;
case B4800: baud_index = 12; break;
case B9600: baud_index = 13; break;
case B19200: baud_index = 14; break;
case B38400: baud_index = 15; break;
45f0e: 700f moveq #15,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45f10: 4e5e unlk %fp
45f12: 4e75 rts
case B75: baud_index = 2; break;
case B110: baud_index = 3; break;
case B134: baud_index = 4; break;
case B150: baud_index = 5; break;
case B200: baud_index = 6; break;
case B300: baud_index = 7; break;
45f14: 7007 moveq #7,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45f16: 4e5e unlk %fp
45f18: 4e75 rts
case B4800: baud_index = 12; break;
case B9600: baud_index = 13; break;
case B19200: baud_index = 14; break;
case B38400: baud_index = 15; break;
case B57600: baud_index = 16; break;
case B115200: baud_index = 17; break;
45f1a: 7011 moveq #17,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45f1c: 4e5e unlk %fp
45f1e: 4e75 rts
case B1200: baud_index = 9; break;
case B1800: baud_index = 10; break;
case B2400: baud_index = 11; break;
case B4800: baud_index = 12; break;
case B9600: baud_index = 13; break;
case B19200: baud_index = 14; break;
45f20: 700e moveq #14,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45f22: 4e5e unlk %fp
45f24: 4e75 rts
case B134: baud_index = 4; break;
case B150: baud_index = 5; break;
case B200: baud_index = 6; break;
case B300: baud_index = 7; break;
case B600: baud_index = 8; break;
case B1200: baud_index = 9; break;
45f26: 7009 moveq #9,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45f28: 4e5e unlk %fp
45f2a: 4e75 rts
switch (termios_baud) {
case B0: baud_index = 0; break;
case B50: baud_index = 1; break;
case B75: baud_index = 2; break;
case B110: baud_index = 3; break;
case B134: baud_index = 4; break;
45f2c: 7004 moveq #4,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45f2e: 4e5e unlk %fp
45f30: 4e75 rts
case B300: baud_index = 7; break;
case B600: baud_index = 8; break;
case B1200: baud_index = 9; break;
case B1800: baud_index = 10; break;
case B2400: baud_index = 11; break;
case B4800: baud_index = 12; break;
45f32: 700c moveq #12,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45f34: 4e5e unlk %fp
45f36: 4e75 rts
int baud_index;
switch (termios_baud) {
case B0: baud_index = 0; break;
case B50: baud_index = 1; break;
case B75: baud_index = 2; break;
45f38: 7002 moveq #2,%d0
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45f3a: 4e5e unlk %fp
...
000452ca <rtems_termios_close>:
rtems_interrupt_enable (level);
}
rtems_status_code
rtems_termios_close (void *arg)
{
452ca: 4e56 fff4 linkw %fp,#-12
452ce: 48d7 1c00 moveml %a2-%a4,%sp@
452d2: 266e 0008 moveal %fp@(8),%a3
rtems_libio_open_close_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
rtems_status_code sc;
sc = rtems_semaphore_obtain(
452d6: 49f9 0004 7458 lea 47458 <rtems_semaphore_obtain>,%a4
rtems_status_code
rtems_termios_close (void *arg)
{
rtems_libio_open_close_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
452dc: 2053 moveal %a3@,%a0
452de: 2468 002c moveal %a0@(44),%a2
rtems_status_code sc;
sc = rtems_semaphore_obtain(
452e2: 42a7 clrl %sp@-
452e4: 42a7 clrl %sp@-
452e6: 2f39 0005 f92c movel 5f92c <rtems_termios_ttyMutex>,%sp@-
452ec: 4e94 jsr %a4@
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
452ee: 4fef 000c lea %sp@(12),%sp
452f2: 4a80 tstl %d0
452f4: 6600 011c bnew 45412 <rtems_termios_close+0x148>
rtems_fatal_error_occurred (sc);
if (--tty->refcount == 0) {
452f8: 222a 0008 movel %a2@(8),%d1
452fc: 5381 subql #1,%d1
452fe: 2541 0008 movel %d1,%a2@(8)
45302: 6600 00a4 bnew 453a8 <rtems_termios_close+0xde>
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
45306: 222a 00cc movel %a2@(204),%d1
4530a: eb89 lsll #5,%d1
4530c: 0681 0005 f100 addil #389376,%d1
45312: 2241 moveal %d1,%a1
45314: 2051 moveal %a1@,%a0
45316: 4a88 tstl %a0
45318: 6700 0124 beqw 4543e <rtems_termios_close+0x174>
/*
* call discipline-specific close
*/
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
4531c: 2f0a movel %a2,%sp@-
4531e: 4e90 jsr %a0@
45320: 588f addql #4,%sp
}
drainOutput (tty);
rtems_semaphore_release (tty->osem);
}
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
45322: 7002 moveq #2,%d0
45324: b0aa 00b4 cmpl %a2@(180),%d0
45328: 6700 00c0 beqw 453ea <rtems_termios_close+0x120>
rtems_fatal_error_occurred (sc);
sc = rtems_event_send( tty->txTaskId, TERMIOS_TX_TERMINATE_EVENT );
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
}
if (tty->device.lastClose)
4532c: 206a 009c moveal %a2@(156),%a0
45330: 4a88 tstl %a0
45332: 6710 beqs 45344 <rtems_termios_close+0x7a>
(*tty->device.lastClose)(tty->major, tty->minor, arg);
45334: 2f0b movel %a3,%sp@-
45336: 2f2a 0010 movel %a2@(16),%sp@-
4533a: 2f2a 000c movel %a2@(12),%sp@-
4533e: 4e90 jsr %a0@
45340: 4fef 000c lea %sp@(12),%sp
if (tty->forw == NULL) {
45344: 2052 moveal %a2@,%a0
45346: 4a88 tstl %a0
45348: 6700 00de beqw 45428 <rtems_termios_close+0x15e>
rtems_termios_ttyTail = tty->back;
if ( rtems_termios_ttyTail != NULL ) {
rtems_termios_ttyTail->forw = NULL;
}
} else {
tty->forw->back = tty->back;
4534c: 216a 0004 0004 movel %a2@(4),%a0@(4)
45352: 226a 0004 moveal %a2@(4),%a1
}
if (tty->back == NULL) {
45356: 4a89 tstl %a1
45358: 6700 00c0 beqw 4541a <rtems_termios_close+0x150>
rtems_termios_ttyHead = tty->forw;
if ( rtems_termios_ttyHead != NULL ) {
rtems_termios_ttyHead->back = NULL;
}
} else {
tty->back->forw = tty->forw;
4535c: 2288 movel %a0,%a1@ <== NOT EXECUTED
}
rtems_semaphore_delete (tty->isem);
4535e: 2f2a 0014 movel %a2@(20),%sp@-
45362: 47f9 0004 7380 lea 47380 <rtems_semaphore_delete>,%a3
45368: 4e93 jsr %a3@
rtems_semaphore_delete (tty->osem);
4536a: 2f2a 0018 movel %a2@(24),%sp@-
4536e: 4e93 jsr %a3@
rtems_semaphore_delete (tty->rawOutBuf.Semaphore);
45370: 2f2a 008c movel %a2@(140),%sp@-
45374: 4e93 jsr %a3@
if ((tty->device.pollRead == NULL) ||
45376: 4fef 000c lea %sp@(12),%sp
4537a: 4aaa 00a0 tstl %a2@(160)
4537e: 6740 beqs 453c0 <rtems_termios_close+0xf6>
45380: 7002 moveq #2,%d0
45382: b0aa 00b4 cmpl %a2@(180),%d0
45386: 6738 beqs 453c0 <rtems_termios_close+0xf6>
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN))
rtems_semaphore_delete (tty->rawInBuf.Semaphore);
free (tty->rawInBuf.theBuf);
45388: 2f2a 0058 movel %a2@(88),%sp@-
4538c: 47f9 0004 30cc lea 430cc <free>,%a3
45392: 4e93 jsr %a3@
free (tty->rawOutBuf.theBuf);
45394: 2f2a 007c movel %a2@(124),%sp@-
45398: 4e93 jsr %a3@
free (tty->cbuf);
4539a: 2f2a 001c movel %a2@(28),%sp@-
4539e: 4e93 jsr %a3@
free (tty);
453a0: 2f0a movel %a2,%sp@-
453a2: 4e93 jsr %a3@
453a4: 4fef 0010 lea %sp@(16),%sp
}
rtems_semaphore_release (rtems_termios_ttyMutex);
453a8: 2f39 0005 f92c movel 5f92c <rtems_termios_ttyMutex>,%sp@-
453ae: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return RTEMS_SUCCESSFUL;
}
453b4: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4
453ba: 4280 clrl %d0
453bc: 4e5e unlk %fp
453be: 4e75 rts
rtems_semaphore_delete (tty->isem);
rtems_semaphore_delete (tty->osem);
rtems_semaphore_delete (tty->rawOutBuf.Semaphore);
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN))
rtems_semaphore_delete (tty->rawInBuf.Semaphore);
453c0: 2f2a 0068 movel %a2@(104),%sp@-
453c4: 4e93 jsr %a3@
453c6: 588f addql #4,%sp
free (tty->rawInBuf.theBuf);
453c8: 47f9 0004 30cc lea 430cc <free>,%a3
453ce: 2f2a 0058 movel %a2@(88),%sp@-
453d2: 4e93 jsr %a3@
free (tty->rawOutBuf.theBuf);
453d4: 2f2a 007c movel %a2@(124),%sp@-
453d8: 4e93 jsr %a3@
free (tty->cbuf);
453da: 2f2a 001c movel %a2@(28),%sp@-
453de: 4e93 jsr %a3@
free (tty);
453e0: 2f0a movel %a2,%sp@-
453e2: 4e93 jsr %a3@
453e4: 4fef 0010 lea %sp@(16),%sp
453e8: 60be bras 453a8 <rtems_termios_close+0xde>
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
/*
* send "terminate" to I/O tasks
*/
sc = rtems_event_send( tty->rxTaskId, TERMIOS_RX_TERMINATE_EVENT );
453ea: 4878 0001 pea 1 <ADD>
453ee: 49f9 0004 6f5c lea 46f5c <rtems_event_send>,%a4
453f4: 2f2a 00c4 movel %a2@(196),%sp@-
453f8: 4e94 jsr %a4@
if (sc != RTEMS_SUCCESSFUL)
453fa: 508f addql #8,%sp
453fc: 4a80 tstl %d0
453fe: 6612 bnes 45412 <rtems_termios_close+0x148> <== NEVER TAKEN
rtems_fatal_error_occurred (sc);
sc = rtems_event_send( tty->txTaskId, TERMIOS_TX_TERMINATE_EVENT );
45400: 4878 0001 pea 1 <ADD>
45404: 2f2a 00c8 movel %a2@(200),%sp@-
45408: 4e94 jsr %a4@
if (sc != RTEMS_SUCCESSFUL)
4540a: 508f addql #8,%sp
4540c: 4a80 tstl %d0
4540e: 6700 ff1c beqw 4532c <rtems_termios_close+0x62>
rtems_fatal_error_occurred (sc);
45412: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45414: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred> <== NOT EXECUTED
} else {
tty->forw->back = tty->back;
}
if (tty->back == NULL) {
rtems_termios_ttyHead = tty->forw;
4541a: 23c8 0005 f934 movel %a0,5f934 <rtems_termios_ttyHead>
if ( rtems_termios_ttyHead != NULL ) {
rtems_termios_ttyHead->back = NULL;
45420: 42a8 0004 clrl %a0@(4)
45424: 6000 ff38 braw 4535e <rtems_termios_close+0x94>
rtems_fatal_error_occurred (sc);
}
if (tty->device.lastClose)
(*tty->device.lastClose)(tty->major, tty->minor, arg);
if (tty->forw == NULL) {
rtems_termios_ttyTail = tty->back;
45428: 226a 0004 moveal %a2@(4),%a1
4542c: 23c9 0005 f930 movel %a1,5f930 <rtems_termios_ttyTail>
if ( rtems_termios_ttyTail != NULL ) {
45432: 6744 beqs 45478 <rtems_termios_close+0x1ae> <== ALWAYS TAKEN
rtems_termios_ttyTail->forw = NULL;
45434: 4291 clrl %a1@ <== NOT EXECUTED
45436: 2052 moveal %a2@,%a0 <== NOT EXECUTED
rtems_termios_ttyHead = tty->forw;
if ( rtems_termios_ttyHead != NULL ) {
rtems_termios_ttyHead->back = NULL;
}
} else {
tty->back->forw = tty->forw;
45438: 2288 movel %a0,%a1@ <== NOT EXECUTED
4543a: 6000 ff22 braw 4535e <rtems_termios_close+0x94> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
} else {
/*
* default: just flush output buffer
*/
sc = rtems_semaphore_obtain(tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
4543e: 42a7 clrl %sp@-
45440: 42a7 clrl %sp@-
45442: 2f2a 0018 movel %a2@(24),%sp@-
45446: 4e94 jsr %a4@
if (sc != RTEMS_SUCCESSFUL) {
45448: 4fef 000c lea %sp@(12),%sp
4544c: 4a80 tstl %d0
4544e: 66c2 bnes 45412 <rtems_termios_close+0x148> <== NEVER TAKEN
drainOutput (struct rtems_termios_tty *tty)
{
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {
45450: 4aaa 00b4 tstl %a2@(180)
45454: 6708 beqs 4545e <rtems_termios_close+0x194>
45456: 2f0a movel %a2,%sp@-
45458: 4eba f9b0 jsr %pc@(44e0a <drainOutput.part.0>)
4545c: 588f addql #4,%sp
sc = rtems_semaphore_obtain(tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred (sc);
}
drainOutput (tty);
rtems_semaphore_release (tty->osem);
4545e: 2f2a 0018 movel %a2@(24),%sp@-
45462: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
45468: 588f addql #4,%sp
}
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
4546a: 7002 moveq #2,%d0
4546c: b0aa 00b4 cmpl %a2@(180),%d0
45470: 6600 feba bnew 4532c <rtems_termios_close+0x62>
45474: 6000 ff74 braw 453ea <rtems_termios_close+0x120>
} else {
tty->forw->back = tty->back;
}
if (tty->back == NULL) {
rtems_termios_ttyHead = tty->forw;
45478: 42b9 0005 f934 clrl 5f934 <rtems_termios_ttyHead>
4547e: 6000 fede braw 4535e <rtems_termios_close+0x94>
00046896 <rtems_termios_dequeue_characters>:
* for each transmitted character.
* It returns number of characters left to transmit
*/
int
rtems_termios_dequeue_characters (void *ttyp, int len)
{
46896: 4e56 0000 linkw %fp,#0
rtems_status_code sc;
/*
* sum up character count already sent
*/
tty->t_dqlen += len;
4689a: 202e 000c movel %fp@(12),%d0
* for each transmitted character.
* It returns number of characters left to transmit
*/
int
rtems_termios_dequeue_characters (void *ttyp, int len)
{
4689e: 206e 0008 moveal %fp@(8),%a0
rtems_status_code sc;
/*
* sum up character count already sent
*/
tty->t_dqlen += len;
468a2: d1a8 0090 addl %d0,%a0@(144)
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
468a6: 7002 moveq #2,%d0
468a8: b0a8 00b4 cmpl %a0@(180),%d0
468ac: 6728 beqs 468d6 <rtems_termios_dequeue_characters+0x40>
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
return 0; /* nothing to output in IRQ... */
}
if (tty->t_line == PPPDISC ) {
468ae: 7005 moveq #5,%d0
468b0: b0a8 00cc cmpl %a0@(204),%d0
468b4: 670a beqs 468c0 <rtems_termios_dequeue_characters+0x2a>
rtems_termios_linesw[tty->t_line].l_start(tty);
}
return 0; /* nothing to output in IRQ... */
}
return rtems_termios_refill_transmitter(tty);
468b6: 2d48 0008 movel %a0,%fp@(8)
}
468ba: 4e5e unlk %fp
rtems_termios_linesw[tty->t_line].l_start(tty);
}
return 0; /* nothing to output in IRQ... */
}
return rtems_termios_refill_transmitter(tty);
468bc: 6000 e29a braw 44b58 <rtems_termios_refill_transmitter>
if (tty->t_line == PPPDISC ) {
/*
* call any line discipline start function
*/
if (rtems_termios_linesw[tty->t_line].l_start != NULL) {
468c0: 2279 0005 f1b0 moveal 5f1b0 <rtems_termios_linesw+0xb4>,%a1
468c6: 4a89 tstl %a1
468c8: 6706 beqs 468d0 <rtems_termios_dequeue_characters+0x3a><== NEVER TAKEN
rtems_termios_linesw[tty->t_line].l_start(tty);
468ca: 2f08 movel %a0,%sp@-
468cc: 4e91 jsr %a1@
468ce: 588f addql #4,%sp
}
return 0; /* nothing to output in IRQ... */
}
return rtems_termios_refill_transmitter(tty);
}
468d0: 4280 clrl %d0
468d2: 4e5e unlk %fp
468d4: 4e75 rts
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
/*
* send wake up to transmitter task
*/
sc = rtems_event_send(tty->txTaskId, TERMIOS_TX_START_EVENT);
468d6: 4878 0002 pea 2 <DOUBLE_FLOAT>
468da: 2f28 00c8 movel %a0@(200),%sp@-
468de: 4eb9 0004 6f5c jsr 46f5c <rtems_event_send>
if (sc != RTEMS_SUCCESSFUL)
468e4: 508f addql #8,%sp
468e6: 4a80 tstl %d0
468e8: 67e6 beqs 468d0 <rtems_termios_dequeue_characters+0x3a><== ALWAYS TAKEN
rtems_fatal_error_occurred (sc);
468ea: 2f00 movel %d0,%sp@- <== NOT EXECUTED
468ec: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred> <== NOT EXECUTED
...
00046530 <rtems_termios_enqueue_raw_characters>:
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
{
46530: 4e56 ffcc linkw %fp,#-52
46534: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
46538: 246e 0008 moveal %fp@(8),%a2
char c;
int dropped = 0;
bool flow_rcv = false; /* true, if flow control char received */
rtems_interrupt_level level;
if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {
4653c: 202a 00cc movel %a2@(204),%d0
46540: eb88 lsll #5,%d0
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
{
46542: 266e 000c moveal %fp@(12),%a3
char c;
int dropped = 0;
bool flow_rcv = false; /* true, if flow control char received */
rtems_interrupt_level level;
if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {
46546: 0680 0005 f10c addil #389388,%d0
4654c: 2240 moveal %d0,%a1
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
{
4654e: 262e 0010 movel %fp@(16),%d3
char c;
int dropped = 0;
bool flow_rcv = false; /* true, if flow control char received */
rtems_interrupt_level level;
if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {
46552: 2051 moveal %a1@,%a0
46554: 4a88 tstl %a0
46556: 6776 beqs 465ce <rtems_termios_enqueue_raw_characters+0x9e>
while (len--) {
46558: 4a83 tstl %d3
4655a: 6736 beqs 46592 <rtems_termios_enqueue_raw_characters+0x62><== NEVER TAKEN
c = *buf++;
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
4655c: 2f0a movel %a2,%sp@-
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
4655e: 5383 subql #1,%d3
46560: 4282 clrl %d2
rtems_interrupt_level level;
if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {
while (len--) {
c = *buf++;
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
46562: 181b moveb %a3@+,%d4
46564: 49c4 extbl %d4
46566: 2f04 movel %d4,%sp@-
46568: 4e90 jsr %a0@
int dropped = 0;
bool flow_rcv = false; /* true, if flow control char received */
rtems_interrupt_level level;
if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {
while (len--) {
4656a: 508f addql #8,%sp
4656c: b682 cmpl %d2,%d3
4656e: 6722 beqs 46592 <rtems_termios_enqueue_raw_characters+0x62>
46570: 202a 00cc movel %a2@(204),%d0
46574: 5282 addql #1,%d2
46576: eb88 lsll #5,%d0
46578: 0680 0005 f10c addil #389388,%d0
4657e: 2240 moveal %d0,%a1
46580: 2051 moveal %a1@,%a0
c = *buf++;
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
46582: 2f0a movel %a2,%sp@-
46584: 181b moveb %a3@+,%d4
46586: 49c4 extbl %d4
46588: 2f04 movel %d4,%sp@-
4658a: 4e90 jsr %a0@
int dropped = 0;
bool flow_rcv = false; /* true, if flow control char received */
rtems_interrupt_level level;
if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {
while (len--) {
4658c: 508f addql #8,%sp
4658e: b682 cmpl %d2,%d3
46590: 66de bnes 46570 <rtems_termios_enqueue_raw_characters+0x40>
}
/*
* check to see if rcv wakeup callback was set
*/
if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
46592: 4aaa 00e4 tstl %a2@(228)
46596: 6628 bnes 465c0 <rtems_termios_enqueue_raw_characters+0x90><== NEVER TAKEN
46598: 206a 00dc moveal %a2@(220),%a0
4659c: 4a88 tstl %a0
4659e: 6720 beqs 465c0 <rtems_termios_enqueue_raw_characters+0x90>
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
465a0: 2f2a 00e0 movel %a2@(224),%sp@-
tty->tty_rcvwakeup = 1;
}
return 0;
465a4: 4282 clrl %d2
/*
* check to see if rcv wakeup callback was set
*/
if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
465a6: 486a 0030 pea %a2@(48)
465aa: 4e90 jsr %a0@
tty->tty_rcvwakeup = 1;
465ac: 508f addql #8,%sp
465ae: 7001 moveq #1,%d0
465b0: 2540 00e4 movel %d0,%a2@(228)
}
tty->rawInBufDropped += dropped;
rtems_semaphore_release (tty->rawInBuf.Semaphore);
return dropped;
}
465b4: 2002 movel %d2,%d0
465b6: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
465bc: 4e5e unlk %fp
465be: 4e75 rts
*/
if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
tty->tty_rcvwakeup = 1;
}
return 0;
465c0: 4282 clrl %d2
}
tty->rawInBufDropped += dropped;
rtems_semaphore_release (tty->rawInBuf.Semaphore);
return dropped;
}
465c2: 2002 movel %d2,%d0
465c4: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
465ca: 4e5e unlk %fp
465cc: 4e75 rts
/*
* check to see if rcv wakeup callback was set
*/
if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
465ce: 41ea 0030 lea %a2@(48),%a0
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
465d2: 2e0b movel %a3,%d7
465d4: de83 addl %d3,%d7
465d6: 4282 clrl %d2
}
if (flow_rcv) {
/* restart output according to FL_ORCVXOF flag */
if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {
/* disable interrupts */
rtems_interrupt_disable(level);
465d8: 387c 0700 moveaw #1792,%a4
(tty->rawOutBufState == rob_idle)) {
/* if tx is stopped due to XOFF or out of data */
/* call write function here */
tty->flow_ctrl |= FL_ISNTXOF;
(*tty->device.write)(tty->minor,
(void *)&(tty->termios.c_cc[VSTOP]), 1);
465dc: 4bea 004a lea %a2@(74),%a5
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
465e0: 4201 clrb %d1
/*
* check to see if rcv wakeup callback was set
*/
if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
465e2: 2d48 fffc movel %a0,%fp@(-4)
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
465e6: 1d41 fff7 moveb %d1,%fp@(-9)
tty->tty_rcvwakeup = 1;
}
return 0;
}
while (len--) {
465ea: be8b cmpl %a3,%d7
465ec: 6700 00ea beqw 466d8 <rtems_termios_enqueue_raw_characters+0x1a8>
c = *buf++;
/* FIXME: implement IXANY: any character restarts output */
/* if incoming XON/XOFF controls outgoing stream: */
if (tty->flow_ctrl & FL_MDXON) {
465f0: 202a 00b8 movel %a2@(184),%d0
}
return 0;
}
while (len--) {
c = *buf++;
465f4: 121b moveb %a3@+,%d1
/* FIXME: implement IXANY: any character restarts output */
/* if incoming XON/XOFF controls outgoing stream: */
if (tty->flow_ctrl & FL_MDXON) {
465f6: 0800 0009 btst #9,%d0
465fa: 671c beqs 46618 <rtems_termios_enqueue_raw_characters+0xe8>
/* if received char is V_STOP and V_START (both are equal value) */
if (c == tty->termios.c_cc[VSTOP]) {
465fc: 4283 clrl %d3
465fe: 162a 004a moveb %a2@(74),%d3
46602: 1001 moveb %d1,%d0
46604: 49c0 extbl %d0
46606: b680 cmpl %d0,%d3
46608: 6700 014e beqw 46758 <rtems_termios_enqueue_raw_characters+0x228>
/* stop output */
tty->flow_ctrl |= FL_ORCVXOF;
}
flow_rcv = true;
}
else if (c == tty->termios.c_cc[VSTART]) {
4660c: 4283 clrl %d3
4660e: 162a 0049 moveb %a2@(73),%d3
46612: b680 cmpl %d0,%d3
46614: 6700 00de beqw 466f4 <rtems_termios_enqueue_raw_characters+0x1c4>
/* restart output */
tty->flow_ctrl &= ~FL_ORCVXOF;
flow_rcv = true;
}
}
if (flow_rcv) {
46618: 4a2e fff7 tstb %fp@(-9)
4661c: 6600 00e8 bnew 46706 <rtems_termios_enqueue_raw_characters+0x1d6>
}
/* reenable interrupts */
rtems_interrupt_enable(level);
}
} else {
newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;
46620: 226a 0060 moveal %a2@(96),%a1
46624: 2a09 movel %a1,%d5
46626: 5285 addql #1,%d5
/* if chars_in_buffer > highwater */
rtems_interrupt_disable(level);
46628: 200c movel %a4,%d0
}
/* reenable interrupts */
rtems_interrupt_enable(level);
}
} else {
newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;
4662a: 282a 0064 movel %a2@(100),%d4
4662e: 4c44 5003 remul %d4,%d3,%d5
/* if chars_in_buffer > highwater */
rtems_interrupt_disable(level);
46632: 40c5 movew %sr,%d5
46634: 8085 orl %d5,%d0
46636: 46c0 movew %d0,%sr
if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)
46638: 206a 005c moveal %a2@(92),%a0
4663c: 202a 0064 movel %a2@(100),%d0
46640: 9088 subl %a0,%d0
46642: 2040 moveal %d0,%a0
46644: d1c3 addal %d3,%a0
% tty->rawInBuf.Size) > tty->highwater) &&
46646: 2008 movel %a0,%d0
46648: 226a 0064 moveal %a2@(100),%a1
4664c: 2c09 movel %a1,%d6
4664e: 4c46 0004 remul %d6,%d4,%d0
}
} else {
newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;
/* if chars_in_buffer > highwater */
rtems_interrupt_disable(level);
if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)
46652: b8aa 00c0 cmpl %a2@(192),%d4
46656: 633e blss 46696 <rtems_termios_enqueue_raw_characters+0x166><== ALWAYS TAKEN
% tty->rawInBuf.Size) > tty->highwater) &&
!(tty->flow_ctrl & FL_IREQXOF)) {
46658: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
} else {
newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;
/* if chars_in_buffer > highwater */
rtems_interrupt_disable(level);
if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)
% tty->rawInBuf.Size) > tty->highwater) &&
4665c: 0800 0000 btst #0,%d0 <== NOT EXECUTED
46660: 6634 bnes 46696 <rtems_termios_enqueue_raw_characters+0x166><== NOT EXECUTED
!(tty->flow_ctrl & FL_IREQXOF)) {
/* incoming data stream should be stopped */
tty->flow_ctrl |= FL_IREQXOF;
46662: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
46666: 7801 moveq #1,%d4 <== NOT EXECUTED
46668: 8084 orl %d4,%d0 <== NOT EXECUTED
4666a: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))
4666e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
46672: 0280 0000 0402 andil #1026,%d0 <== NOT EXECUTED
46678: 0c80 0000 0400 cmpil #1024,%d0 <== NOT EXECUTED
4667e: 6700 0112 beqw 46792 <rtems_termios_enqueue_raw_characters+0x262><== NOT EXECUTED
/* call write function here */
tty->flow_ctrl |= FL_ISNTXOF;
(*tty->device.write)(tty->minor,
(void *)&(tty->termios.c_cc[VSTOP]), 1);
}
} else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
46682: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
46686: 0280 0000 0104 andil #260,%d0 <== NOT EXECUTED
4668c: 0c80 0000 0100 cmpil #256,%d0 <== NOT EXECUTED
46692: 6700 013c beqw 467d0 <rtems_termios_enqueue_raw_characters+0x2a0><== NOT EXECUTED
}
}
}
/* reenable interrupts */
rtems_interrupt_enable(level);
46696: 46c5 movew %d5,%sr
if (newTail == tty->rawInBuf.Head) {
46698: 202a 005c movel %a2@(92),%d0
4669c: b680 cmpl %d0,%d3
4669e: 6700 00d6 beqw 46776 <rtems_termios_enqueue_raw_characters+0x246>
dropped++;
} else {
tty->rawInBuf.theBuf[newTail] = c;
466a2: 206a 0058 moveal %a2@(88),%a0
466a6: 1181 3800 moveb %d1,%a0@(00000000,%d3:l)
tty->rawInBuf.Tail = newTail;
466aa: 2543 0060 movel %d3,%a2@(96)
/*
* check to see if rcv wakeup callback was set
*/
if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
466ae: 4aaa 00e4 tstl %a2@(228)
466b2: 6600 ff36 bnew 465ea <rtems_termios_enqueue_raw_characters+0xba>
466b6: 206a 00dc moveal %a2@(220),%a0
466ba: 4a88 tstl %a0
466bc: 6700 ff2c beqw 465ea <rtems_termios_enqueue_raw_characters+0xba>
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
466c0: 2f2a 00e0 movel %a2@(224),%sp@- <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
466c4: 7c01 moveq #1,%d6 <== NOT EXECUTED
/*
* check to see if rcv wakeup callback was set
*/
if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
466c6: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
466ca: 4e90 jsr %a0@ <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
466cc: 508f addql #8,%sp <== NOT EXECUTED
466ce: 2546 00e4 movel %d6,%a2@(228) <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
}
return 0;
}
while (len--) {
466d2: be8b cmpl %a3,%d7 <== NOT EXECUTED
466d4: 6600 ff1a bnew 465f0 <rtems_termios_enqueue_raw_characters+0xc0><== NOT EXECUTED
}
}
}
tty->rawInBufDropped += dropped;
rtems_semaphore_release (tty->rawInBuf.Semaphore);
466d8: 2f2a 0068 movel %a2@(104),%sp@-
}
}
}
}
tty->rawInBufDropped += dropped;
466dc: d5aa 0078 addl %d2,%a2@(120)
rtems_semaphore_release (tty->rawInBuf.Semaphore);
466e0: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return dropped;
466e6: 588f addql #4,%sp
}
466e8: 2002 movel %d2,%d0
466ea: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
466f0: 4e5e unlk %fp
466f2: 4e75 rts
flow_rcv = true;
}
else if (c == tty->termios.c_cc[VSTART]) {
/* VSTART received */
/* restart output */
tty->flow_ctrl &= ~FL_ORCVXOF;
466f4: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
466f8: 7cef moveq #-17,%d6 <== NOT EXECUTED
466fa: c086 andl %d6,%d0 <== NOT EXECUTED
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
466fc: 7201 moveq #1,%d1 <== NOT EXECUTED
flow_rcv = true;
}
else if (c == tty->termios.c_cc[VSTART]) {
/* VSTART received */
/* restart output */
tty->flow_ctrl &= ~FL_ORCVXOF;
466fe: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
46702: 1d41 fff7 moveb %d1,%fp@(-9) <== NOT EXECUTED
flow_rcv = true;
}
}
if (flow_rcv) {
/* restart output according to FL_ORCVXOF flag */
if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {
46706: 202a 00b8 movel %a2@(184),%d0
4670a: 7230 moveq #48,%d1
4670c: 7820 moveq #32,%d4
4670e: c081 andl %d1,%d0
46710: b880 cmpl %d0,%d4
46712: 6600 fed6 bnew 465ea <rtems_termios_enqueue_raw_characters+0xba>
/* disable interrupts */
rtems_interrupt_disable(level);
46716: 200c movel %a4,%d0 <== NOT EXECUTED
46718: 40c3 movew %sr,%d3 <== NOT EXECUTED
4671a: 8083 orl %d3,%d0 <== NOT EXECUTED
4671c: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
4671e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
46722: 7cdf moveq #-33,%d6 <== NOT EXECUTED
46724: c086 andl %d6,%d0 <== NOT EXECUTED
46726: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
4672a: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
4672e: 6606 bnes 46736 <rtems_termios_enqueue_raw_characters+0x206><== NOT EXECUTED
/* if chars available, call write function... */
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
}
/* reenable interrupts */
rtems_interrupt_enable(level);
46730: 46c3 movew %d3,%sr <== NOT EXECUTED
46732: 6000 feb6 braw 465ea <rtems_termios_enqueue_raw_characters+0xba><== NOT EXECUTED
rtems_interrupt_disable(level);
tty->flow_ctrl &= ~FL_OSTOP;
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
/* if chars available, call write function... */
(*tty->device.write)(
46736: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
4673a: 202a 0084 movel %a2@(132),%d0 <== NOT EXECUTED
rtems_interrupt_disable(level);
tty->flow_ctrl &= ~FL_OSTOP;
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
/* if chars available, call write function... */
(*tty->device.write)(
4673e: d0aa 007c addl %a2@(124),%d0 <== NOT EXECUTED
46742: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46744: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
46748: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
4674c: 4e90 jsr %a0@ <== NOT EXECUTED
4674e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
}
/* reenable interrupts */
rtems_interrupt_enable(level);
46752: 46c3 movew %d3,%sr <== NOT EXECUTED
46754: 6000 fe94 braw 465ea <rtems_termios_enqueue_raw_characters+0xba><== NOT EXECUTED
/* FIXME: implement IXANY: any character restarts output */
/* if incoming XON/XOFF controls outgoing stream: */
if (tty->flow_ctrl & FL_MDXON) {
/* if received char is V_STOP and V_START (both are equal value) */
if (c == tty->termios.c_cc[VSTOP]) {
if (c == tty->termios.c_cc[VSTART]) {
46758: 4281 clrl %d1
4675a: 122a 0049 moveb %a2@(73),%d1
4675e: b280 cmpl %d0,%d1
46760: 671a beqs 4677c <rtems_termios_enqueue_raw_characters+0x24c><== NEVER TAKEN
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
}
else {
/* VSTOP received (other code than VSTART) */
/* stop output */
tty->flow_ctrl |= FL_ORCVXOF;
46762: 202a 00b8 movel %a2@(184),%d0
46766: 7810 moveq #16,%d4
46768: 8084 orl %d4,%d0
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
4676a: 7201 moveq #1,%d1
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
}
else {
/* VSTOP received (other code than VSTART) */
/* stop output */
tty->flow_ctrl |= FL_ORCVXOF;
4676c: 2540 00b8 movel %d0,%a2@(184)
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
46770: 1d41 fff7 moveb %d1,%fp@(-9)
46774: 6090 bras 46706 <rtems_termios_enqueue_raw_characters+0x1d6>
/* reenable interrupts */
rtems_interrupt_enable(level);
if (newTail == tty->rawInBuf.Head) {
dropped++;
46776: 5282 addql #1,%d2 <== NOT EXECUTED
46778: 6000 fe70 braw 465ea <rtems_termios_enqueue_raw_characters+0xba><== NOT EXECUTED
/* if received char is V_STOP and V_START (both are equal value) */
if (c == tty->termios.c_cc[VSTOP]) {
if (c == tty->termios.c_cc[VSTART]) {
/* received VSTOP and VSTART==VSTOP? */
/* then toggle "stop output" status */
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
4677c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
46780: 7210 moveq #16,%d1 <== NOT EXECUTED
46782: b380 eorl %d1,%d0 <== NOT EXECUTED
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
46784: 7201 moveq #1,%d1 <== NOT EXECUTED
/* if received char is V_STOP and V_START (both are equal value) */
if (c == tty->termios.c_cc[VSTOP]) {
if (c == tty->termios.c_cc[VSTART]) {
/* received VSTOP and VSTART==VSTOP? */
/* then toggle "stop output" status */
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
46786: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
4678a: 1d41 fff7 moveb %d1,%fp@(-9) <== NOT EXECUTED
4678e: 6000 ff76 braw 46706 <rtems_termios_enqueue_raw_characters+0x1d6><== NOT EXECUTED
!(tty->flow_ctrl & FL_IREQXOF)) {
/* incoming data stream should be stopped */
tty->flow_ctrl |= FL_IREQXOF;
if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))
== (FL_MDXOF ) ) {
if ((tty->flow_ctrl & FL_OSTOP) ||
46792: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
46796: 0800 0005 btst #5,%d0 <== NOT EXECUTED
4679a: 6608 bnes 467a4 <rtems_termios_enqueue_raw_characters+0x274><== NOT EXECUTED
4679c: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
467a0: 6600 fef4 bnew 46696 <rtems_termios_enqueue_raw_characters+0x166><== NOT EXECUTED
(tty->rawOutBufState == rob_idle)) {
/* if tx is stopped due to XOFF or out of data */
/* call write function here */
tty->flow_ctrl |= FL_ISNTXOF;
(*tty->device.write)(tty->minor,
467a4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
== (FL_MDXOF ) ) {
if ((tty->flow_ctrl & FL_OSTOP) ||
(tty->rawOutBufState == rob_idle)) {
/* if tx is stopped due to XOFF or out of data */
/* call write function here */
tty->flow_ctrl |= FL_ISNTXOF;
467a8: 7c02 moveq #2,%d6 <== NOT EXECUTED
467aa: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
(*tty->device.write)(tty->minor,
467ae: 2f0d movel %a5,%sp@- <== NOT EXECUTED
467b0: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
467b4: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
== (FL_MDXOF ) ) {
if ((tty->flow_ctrl & FL_OSTOP) ||
(tty->rawOutBufState == rob_idle)) {
/* if tx is stopped due to XOFF or out of data */
/* call write function here */
tty->flow_ctrl |= FL_ISNTXOF;
467b8: 8086 orl %d6,%d0 <== NOT EXECUTED
467ba: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
(*tty->device.write)(tty->minor,
467be: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
467c2: 4e90 jsr %a0@ <== NOT EXECUTED
467c4: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
467c8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
467cc: 6000 fec8 braw 46696 <rtems_termios_enqueue_raw_characters+0x166><== NOT EXECUTED
(void *)&(tty->termios.c_cc[VSTOP]), 1);
}
} else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
tty->flow_ctrl |= FL_IRTSOFF;
467d0: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
467d4: 7804 moveq #4,%d4 <== NOT EXECUTED
467d6: 8084 orl %d4,%d0 <== NOT EXECUTED
/* deactivate RTS line */
if (tty->device.stopRemoteTx != NULL) {
467d8: 206a 00ac moveal %a2@(172),%a0 <== NOT EXECUTED
tty->flow_ctrl |= FL_ISNTXOF;
(*tty->device.write)(tty->minor,
(void *)&(tty->termios.c_cc[VSTOP]), 1);
}
} else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
tty->flow_ctrl |= FL_IRTSOFF;
467dc: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* deactivate RTS line */
if (tty->device.stopRemoteTx != NULL) {
467e0: 4a88 tstl %a0 <== NOT EXECUTED
467e2: 6700 feb2 beqw 46696 <rtems_termios_enqueue_raw_characters+0x166><== NOT EXECUTED
tty->device.stopRemoteTx(tty->minor);
467e6: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
467ea: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
467ee: 4e90 jsr %a0@ <== NOT EXECUTED
467f0: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
467f4: 588f addql #4,%sp <== NOT EXECUTED
467f6: 6000 fe9e braw 46696 <rtems_termios_enqueue_raw_characters+0x166><== NOT EXECUTED
000454aa <rtems_termios_ioctl>:
}
}
rtems_status_code
rtems_termios_ioctl (void *arg)
{
454aa: 4e56 ffec linkw %fp,#-20
454ae: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
454b2: 266e 0008 moveal %fp@(8),%a3
rtems_libio_ioctl_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
454b6: 2053 moveal %a3@,%a0
454b8: 2468 002c moveal %a0@(44),%a2
struct ttywakeup *wakeup = (struct ttywakeup *)args->buffer;
rtems_status_code sc;
args->ioctl_return = 0;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
454bc: 42a7 clrl %sp@-
rtems_status_code
rtems_termios_ioctl (void *arg)
{
rtems_libio_ioctl_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
struct ttywakeup *wakeup = (struct ttywakeup *)args->buffer;
454be: 286b 0008 moveal %a3@(8),%a4
rtems_status_code sc;
args->ioctl_return = 0;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
454c2: 42a7 clrl %sp@-
454c4: 2f2a 0018 movel %a2@(24),%sp@-
rtems_libio_ioctl_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
struct ttywakeup *wakeup = (struct ttywakeup *)args->buffer;
rtems_status_code sc;
args->ioctl_return = 0;
454c8: 42ab 000c clrl %a3@(12)
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
454cc: 4eb9 0004 7458 jsr 47458 <rtems_semaphore_obtain>
if (sc != RTEMS_SUCCESSFUL) {
454d2: 4fef 000c lea %sp@(12),%sp
struct rtems_termios_tty *tty = args->iop->data1;
struct ttywakeup *wakeup = (struct ttywakeup *)args->buffer;
rtems_status_code sc;
args->ioctl_return = 0;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
454d6: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL) {
454d8: 6650 bnes 4552a <rtems_termios_ioctl+0x80> <== NEVER TAKEN
return sc;
}
switch (args->command) {
454da: 202b 0004 movel %a3@(4),%d0
454de: 7205 moveq #5,%d1
454e0: b280 cmpl %d0,%d1
454e2: 6700 00a2 beqw 45586 <rtems_termios_ioctl+0xdc>
454e6: 654e bcss 45536 <rtems_termios_ioctl+0x8c>
454e8: 7602 moveq #2,%d3
454ea: b680 cmpl %d0,%d3
454ec: 6700 00b4 beqw 455a2 <rtems_termios_ioctl+0xf8>
454f0: 6500 02d8 bcsw 457ca <rtems_termios_ioctl+0x320>
454f4: 123c 0001 moveb #1,%d1
454f8: b280 cmpl %d0,%d1
454fa: 6700 022c beqw 45728 <rtems_termios_ioctl+0x27e>
default:
if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {
454fe: 202a 00cc movel %a2@(204),%d0
45502: eb88 lsll #5,%d0
45504: 0680 0005 f114 addil #389396,%d0
4550a: 2240 moveal %d0,%a1
4550c: 2051 moveal %a1@,%a0
4550e: 4a88 tstl %a0
45510: 6700 031c beqw 4582e <rtems_termios_ioctl+0x384>
sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);
45514: 2f0b movel %a3,%sp@-
45516: 2f0a movel %a2,%sp@-
45518: 4e90 jsr %a0@
4551a: 508f addql #8,%sp
4551c: 2400 movel %d0,%d2
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
4551e: 2f2a 0018 movel %a2@(24),%sp@-
45522: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
45528: 588f addql #4,%sp
}
4552a: 2002 movel %d2,%d0
4552c: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
45532: 4e5e unlk %fp
45534: 4e75 rts
args->ioctl_return = 0;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
switch (args->command) {
45536: 0c80 4004 667f cmpil #1074030207,%d0
4553c: 6700 01bc beqw 456fa <rtems_termios_ioctl+0x250>
45540: 6200 021e bhiw 45760 <rtems_termios_ioctl+0x2b6>
45544: 7606 moveq #6,%d3
45546: b680 cmpl %d0,%d3
45548: 66b4 bnes 454fe <rtems_termios_ioctl+0x54>
case RTEMS_IO_TCDRAIN:
drainOutput (tty);
break;
case RTEMS_IO_TCFLUSH:
switch ((intptr_t) args->buffer) {
4554a: 202b 0008 movel %a3@(8),%d0
4554e: 7201 moveq #1,%d1
45550: b280 cmpl %d0,%d1
45552: 6700 0326 beqw 4587a <rtems_termios_ioctl+0x3d0>
45556: 7602 moveq #2,%d3
45558: b680 cmpl %d0,%d3
4555a: 6700 03b2 beqw 4590e <rtems_termios_ioctl+0x464>
4555e: 4a80 tstl %d0
45560: 6600 039a bnew 458fc <rtems_termios_ioctl+0x452>
static void
flushInput (struct rtems_termios_tty *tty)
{
rtems_interrupt_level level;
rtems_interrupt_disable (level);
45564: 303c 0700 movew #1792,%d0
45568: 40c1 movew %sr,%d1
4556a: 8081 orl %d1,%d0
4556c: 46c0 movew %d0,%sr
tty->rawInBuf.Tail = 0;
4556e: 42aa 0060 clrl %a2@(96)
tty->rawInBuf.Head = 0;
45572: 42aa 005c clrl %a2@(92)
rtems_interrupt_enable (level);
45576: 46c1 movew %d1,%sr
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
45578: 2f2a 0018 movel %a2@(24),%sp@-
4557c: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
45582: 588f addql #4,%sp
45584: 60a4 bras 4552a <rtems_termios_ioctl+0x80>
break;
}
break;
case RTEMS_IO_SNDWAKEUP:
tty->tty_snd = *wakeup;
45586: 2014 movel %a4@,%d0
45588: 222c 0004 movel %a4@(4),%d1
4558c: 2540 00d4 movel %d0,%a2@(212)
45590: 2541 00d8 movel %d1,%a2@(216)
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
45594: 2f2a 0018 movel %a2@(24),%sp@-
45598: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
4559e: 588f addql #4,%sp
455a0: 6088 bras 4552a <rtems_termios_ioctl+0x80>
case RTEMS_IO_GET_ATTRIBUTES:
*(struct termios *)args->buffer = tty->termios;
break;
case RTEMS_IO_SET_ATTRIBUTES:
tty->termios = *(struct termios *)args->buffer;
455a2: 206b 0008 moveal %a3@(8),%a0
455a6: 47ea 0030 lea %a2@(48),%a3
455aa: 2698 movel %a0@+,%a3@
455ac: 2558 0034 movel %a0@+,%a2@(52)
455b0: 2558 0038 movel %a0@+,%a2@(56)
455b4: 2558 003c movel %a0@+,%a2@(60)
455b8: 2558 0040 movel %a0@+,%a2@(64)
455bc: 2558 0044 movel %a0@+,%a2@(68)
455c0: 2558 0048 movel %a0@+,%a2@(72)
455c4: 2558 004c movel %a0@+,%a2@(76)
/*
* check for flow control options to be switched off
*/
/* check for outgoing XON/XOFF flow control switched off */
if (( tty->flow_ctrl & FL_MDXON) &&
455c8: 202a 00b8 movel %a2@(184),%d0
case RTEMS_IO_GET_ATTRIBUTES:
*(struct termios *)args->buffer = tty->termios;
break;
case RTEMS_IO_SET_ATTRIBUTES:
tty->termios = *(struct termios *)args->buffer;
455cc: 2550 0050 movel %a0@,%a2@(80)
/*
* check for flow control options to be switched off
*/
/* check for outgoing XON/XOFF flow control switched off */
if (( tty->flow_ctrl & FL_MDXON) &&
455d0: 0800 0009 btst #9,%d0
455d4: 6746 beqs 4561c <rtems_termios_ioctl+0x172>
!(tty->termios.c_iflag & IXON)) {
455d6: 202a 0030 movel %a2@(48),%d0
455da: 0280 0000 0400 andil #1024,%d0
/*
* check for flow control options to be switched off
*/
/* check for outgoing XON/XOFF flow control switched off */
if (( tty->flow_ctrl & FL_MDXON) &&
455e0: 663a bnes 4561c <rtems_termios_ioctl+0x172>
!(tty->termios.c_iflag & IXON)) {
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDXON | FL_ORCVXOF);
455e2: 202a 00b8 movel %a2@(184),%d0
455e6: 0280 ffff fdef andil #-529,%d0
455ec: 2540 00b8 movel %d0,%a2@(184)
/* has output been stopped due to received XOFF? */
if (tty->flow_ctrl & FL_OSTOP) {
455f0: 202a 00b8 movel %a2@(184),%d0
455f4: 0800 0005 btst #5,%d0
455f8: 6722 beqs 4561c <rtems_termios_ioctl+0x172> <== ALWAYS TAKEN
/* disable interrupts */
rtems_interrupt_disable(level);
455fa: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
45600: 40c3 movew %sr,%d3 <== NOT EXECUTED
45602: 8083 orl %d3,%d0 <== NOT EXECUTED
45604: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
45606: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
4560a: 72df moveq #-33,%d1 <== NOT EXECUTED
4560c: c081 andl %d1,%d0 <== NOT EXECUTED
4560e: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
45612: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
45616: 6600 02c2 bnew 458da <rtems_termios_ioctl+0x430> <== NOT EXECUTED
/* if chars available, call write function... */
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
}
/* reenable interrupts */
rtems_interrupt_enable(level);
4561a: 46c3 movew %d3,%sr <== NOT EXECUTED
}
}
/* check for incoming XON/XOFF flow control switched off */
if (( tty->flow_ctrl & FL_MDXOF) && !(tty->termios.c_iflag & IXOFF)) {
4561c: 202a 00b8 movel %a2@(184),%d0
45620: 0800 000a btst #10,%d0
45624: 6724 beqs 4564a <rtems_termios_ioctl+0x1a0>
45626: 202a 0030 movel %a2@(48),%d0
4562a: 0280 0000 1000 andil #4096,%d0
45630: 6618 bnes 4564a <rtems_termios_ioctl+0x1a0> <== NEVER TAKEN
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDXOF);
45632: 202a 00b8 movel %a2@(184),%d0
/* FIXME: what happens, if we had sent XOFF but not yet XON? */
tty->flow_ctrl &= ~(FL_ISNTXOF);
45636: 76fd moveq #-3,%d3
}
}
/* check for incoming XON/XOFF flow control switched off */
if (( tty->flow_ctrl & FL_MDXOF) && !(tty->termios.c_iflag & IXOFF)) {
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDXOF);
45638: 0880 000a bclr #10,%d0
4563c: 2540 00b8 movel %d0,%a2@(184)
/* FIXME: what happens, if we had sent XOFF but not yet XON? */
tty->flow_ctrl &= ~(FL_ISNTXOF);
45640: 202a 00b8 movel %a2@(184),%d0
45644: c083 andl %d3,%d0
45646: 2540 00b8 movel %d0,%a2@(184)
}
/* check for incoming RTS/CTS flow control switched off */
if (( tty->flow_ctrl & FL_MDRTS) && !(tty->termios.c_cflag & CRTSCTS)) {
4564a: 202a 00b8 movel %a2@(184),%d0
4564e: 222a 0038 movel %a2@(56),%d1
45652: 0800 0008 btst #8,%d0
45656: 673a beqs 45692 <rtems_termios_ioctl+0x1e8> <== ALWAYS TAKEN
45658: 4a81 tstl %d1 <== NOT EXECUTED
4565a: 6d00 0262 bltw 458be <rtems_termios_ioctl+0x414> <== NOT EXECUTED
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDRTS);
4565e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45662: 0880 0008 bclr #8,%d0 <== NOT EXECUTED
45666: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* restart remote Tx, if it was stopped */
if ((tty->flow_ctrl & FL_IRTSOFF) && (tty->device.startRemoteTx != NULL)) {
4566a: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
4566e: 44c0 movew %d0,%ccr <== NOT EXECUTED
45670: 6614 bnes 45686 <rtems_termios_ioctl+0x1dc> <== NOT EXECUTED
45672: 206a 00b0 moveal %a2@(176),%a0 <== NOT EXECUTED
45676: 4a88 tstl %a0 <== NOT EXECUTED
45678: 670c beqs 45686 <rtems_termios_ioctl+0x1dc> <== NOT EXECUTED
tty->device.startRemoteTx(tty->minor);
4567a: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4567e: 4e90 jsr %a0@ <== NOT EXECUTED
45680: 222a 0038 movel %a2@(56),%d1 <== NOT EXECUTED
45684: 588f addql #4,%sp <== NOT EXECUTED
}
tty->flow_ctrl &= ~(FL_IRTSOFF);
45686: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
4568a: 76fb moveq #-5,%d3 <== NOT EXECUTED
4568c: c083 andl %d3,%d0 <== NOT EXECUTED
4568e: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/*
* check for flow control options to be switched on
*/
/* check for incoming RTS/CTS flow control switched on */
if (tty->termios.c_cflag & CRTSCTS) {
45692: 4a81 tstl %d1
45694: 6d00 0228 bltw 458be <rtems_termios_ioctl+0x414>
tty->flow_ctrl |= FL_MDRTS;
}
/* check for incoming XON/XOF flow control switched on */
if (tty->termios.c_iflag & IXOFF) {
45698: 202a 0030 movel %a2@(48),%d0
4569c: 0800 000c btst #12,%d0
456a0: 670c beqs 456ae <rtems_termios_ioctl+0x204>
tty->flow_ctrl |= FL_MDXOF;
456a2: 222a 00b8 movel %a2@(184),%d1
456a6: 08c1 000a bset #10,%d1
456aa: 2541 00b8 movel %d1,%a2@(184)
}
/* check for outgoing XON/XOF flow control switched on */
if (tty->termios.c_iflag & IXON) {
456ae: 0800 000a btst #10,%d0
456b2: 670c beqs 456c0 <rtems_termios_ioctl+0x216>
tty->flow_ctrl |= FL_MDXON;
456b4: 202a 00b8 movel %a2@(184),%d0
456b8: 08c0 0009 bset #9,%d0
456bc: 2540 00b8 movel %d0,%a2@(184)
tty->termios = *(struct termios *)args->buffer;
/* check for and process change in flow control options */
termios_set_flowctrl(tty);
if (tty->termios.c_lflag & ICANON) {
456c0: 7002 moveq #2,%d0
456c2: c0aa 003c andl %a2@(60),%d0
456c6: 6700 0178 beqw 45840 <rtems_termios_ioctl+0x396>
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
else
tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;
} else {
if (tty->termios.c_cc[VMIN]) {
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
456ca: 42aa 006c clrl %a2@(108)
tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;
456ce: 42aa 0070 clrl %a2@(112)
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
456d2: 42aa 0074 clrl %a2@(116)
} else {
tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;
}
}
}
if (tty->device.setAttributes)
456d6: 206a 00a8 moveal %a2@(168),%a0
456da: 4a88 tstl %a0
456dc: 6700 fe40 beqw 4551e <rtems_termios_ioctl+0x74>
(*tty->device.setAttributes)(tty->minor, &tty->termios);
456e0: 2f0b movel %a3,%sp@-
456e2: 2f2a 0010 movel %a2@(16),%sp@-
456e6: 4e90 jsr %a0@
456e8: 508f addql #8,%sp
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
456ea: 2f2a 0018 movel %a2@(24),%sp@-
456ee: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
456f4: 588f addql #4,%sp
456f6: 6000 fe32 braw 4552a <rtems_termios_ioctl+0x80>
case TIOCGETD:
*(int*)(args->buffer)=tty->t_line;
break;
#endif
case FIONREAD: {
int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head;
456fa: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED
456fe: 222a 005c movel %a2@(92),%d1 <== NOT EXECUTED
45702: 9081 subl %d1,%d0 <== NOT EXECUTED
if ( rawnc < 0 )
45704: 6b00 019e bmiw 458a4 <rtems_termios_ioctl+0x3fa> <== NOT EXECUTED
rawnc += tty->rawInBuf.Size;
/* Half guess that this is the right operation */
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
45708: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
4570c: 92aa 0024 subl %a2@(36),%d1 <== NOT EXECUTED
45710: d280 addl %d0,%d1 <== NOT EXECUTED
45712: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
45716: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
break;
}
rtems_semaphore_release (tty->osem);
45718: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
4571c: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
45722: 588f addql #4,%sp <== NOT EXECUTED
45724: 6000 fe04 braw 4552a <rtems_termios_ioctl+0x80> <== NOT EXECUTED
sc = RTEMS_INVALID_NUMBER;
}
break;
case RTEMS_IO_GET_ATTRIBUTES:
*(struct termios *)args->buffer = tty->termios;
45728: 206b 0008 moveal %a3@(8),%a0
4572c: 20ea 0030 movel %a2@(48),%a0@+
45730: 20ea 0034 movel %a2@(52),%a0@+
45734: 20ea 0038 movel %a2@(56),%a0@+
45738: 20ea 003c movel %a2@(60),%a0@+
4573c: 20ea 0040 movel %a2@(64),%a0@+
45740: 20ea 0044 movel %a2@(68),%a0@+
45744: 20ea 0048 movel %a2@(72),%a0@+
45748: 20ea 004c movel %a2@(76),%a0@+
4574c: 20aa 0050 movel %a2@(80),%a0@
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
45750: 2f2a 0018 movel %a2@(24),%sp@-
45754: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
4575a: 588f addql #4,%sp
4575c: 6000 fdcc braw 4552a <rtems_termios_ioctl+0x80>
args->ioctl_return = 0;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
switch (args->command) {
45760: 0c80 4004 741a cmpil #1074033690,%d0
45766: 6700 00ae beqw 45816 <rtems_termios_ioctl+0x36c>
4576a: 0c80 8004 741b cmpil #-2147191781,%d0
45770: 6600 fd8c bnew 454fe <rtems_termios_ioctl+0x54>
#if 1 /* FIXME */
case TIOCSETD:
/*
* close old line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
45774: 202a 00cc movel %a2@(204),%d0
45778: eb88 lsll #5,%d0
4577a: 0680 0005 f100 addil #389376,%d0
45780: 2240 moveal %d0,%a1
45782: 2051 moveal %a1@,%a0
45784: 4a88 tstl %a0
45786: 6708 beqs 45790 <rtems_termios_ioctl+0x2e6>
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
45788: 2f0a movel %a2,%sp@-
4578a: 4e90 jsr %a0@
4578c: 588f addql #4,%sp
4578e: 2400 movel %d0,%d2
}
tty->t_line=*(int*)(args->buffer);
45790: 206b 0008 moveal %a3@(8),%a0
45794: 2010 movel %a0@,%d0
tty->t_sc = NULL; /* ensure that no more valid data */
/*
* open new line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
45796: 2200 movel %d0,%d1
45798: 41f9 0005 f0fc lea 5f0fc <rtems_termios_linesw>,%a0
4579e: eb89 lsll #5,%d1
* close old line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
}
tty->t_line=*(int*)(args->buffer);
457a0: 2540 00cc movel %d0,%a2@(204)
tty->t_sc = NULL; /* ensure that no more valid data */
/*
* open new line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
457a4: 2070 1800 moveal %a0@(00000000,%d1:l),%a0
*/
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
}
tty->t_line=*(int*)(args->buffer);
tty->t_sc = NULL; /* ensure that no more valid data */
457a8: 42aa 00d0 clrl %a2@(208)
/*
* open new line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
457ac: 4a88 tstl %a0
457ae: 6700 fd6e beqw 4551e <rtems_termios_ioctl+0x74>
sc = rtems_termios_linesw[tty->t_line].l_open(tty);
457b2: 2f0a movel %a2,%sp@-
457b4: 4e90 jsr %a0@
457b6: 588f addql #4,%sp
457b8: 2400 movel %d0,%d2
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
457ba: 2f2a 0018 movel %a2@(24),%sp@-
457be: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
457c4: 588f addql #4,%sp
457c6: 6000 fd62 braw 4552a <rtems_termios_ioctl+0x80>
args->ioctl_return = 0;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL) {
return sc;
}
switch (args->command) {
457ca: 7603 moveq #3,%d3
457cc: b680 cmpl %d0,%d3
457ce: 6726 beqs 457f6 <rtems_termios_ioctl+0x34c>
457d0: 7204 moveq #4,%d1
457d2: b280 cmpl %d0,%d1
457d4: 6600 fd28 bnew 454fe <rtems_termios_ioctl+0x54>
case RTEMS_IO_SNDWAKEUP:
tty->tty_snd = *wakeup;
break;
case RTEMS_IO_RCVWAKEUP:
tty->tty_rcv = *wakeup;
457d8: 2014 movel %a4@,%d0
457da: 222c 0004 movel %a4@(4),%d1
457de: 2540 00dc movel %d0,%a2@(220)
457e2: 2541 00e0 movel %d1,%a2@(224)
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
457e6: 2f2a 0018 movel %a2@(24),%sp@-
457ea: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
457f0: 588f addql #4,%sp
457f2: 6000 fd36 braw 4552a <rtems_termios_ioctl+0x80>
drainOutput (struct rtems_termios_tty *tty)
{
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {
457f6: 4aaa 00b4 tstl %a2@(180)
457fa: 6700 fd22 beqw 4551e <rtems_termios_ioctl+0x74>
457fe: 2f0a movel %a2,%sp@-
45800: 4eba f608 jsr %pc@(44e0a <drainOutput.part.0>)
45804: 588f addql #4,%sp
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
45806: 2f2a 0018 movel %a2@(24),%sp@-
4580a: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
45810: 588f addql #4,%sp
45812: 6000 fd16 braw 4552a <rtems_termios_ioctl+0x80>
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
sc = rtems_termios_linesw[tty->t_line].l_open(tty);
}
break;
case TIOCGETD:
*(int*)(args->buffer)=tty->t_line;
45816: 206b 0008 moveal %a3@(8),%a0
4581a: 20aa 00cc movel %a2@(204),%a0@
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
4581e: 2f2a 0018 movel %a2@(24),%sp@-
45822: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
45828: 588f addql #4,%sp
4582a: 6000 fcfe braw 4552a <rtems_termios_ioctl+0x80>
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
4582e: 2f2a 0018 movel %a2@(24),%sp@-
default:
if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {
sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);
}
else {
sc = RTEMS_INVALID_NUMBER;
45832: 740a moveq #10,%d2
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
45834: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
4583a: 588f addql #4,%sp
4583c: 6000 fcec braw 4552a <rtems_termios_ioctl+0x80>
if (tty->termios.c_lflag & ICANON) {
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
} else {
tty->vtimeTicks = tty->termios.c_cc[VTIME] *
45840: 4283 clrl %d3
45842: 162a 0046 moveb %a2@(70),%d3
rtems_clock_get_ticks_per_second() / 10;
45846: 4eb9 0004 6d30 jsr 46d30 <rtems_clock_get_ticks_per_second>
if (tty->termios.c_lflag & ICANON) {
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
} else {
tty->vtimeTicks = tty->termios.c_cc[VTIME] *
4584c: 4c03 0800 mulsl %d3,%d0
rtems_clock_get_ticks_per_second() / 10;
45850: 760a moveq #10,%d3
45852: 4c43 0000 remul %d3,%d0,%d0
if (tty->termios.c_lflag & ICANON) {
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
} else {
tty->vtimeTicks = tty->termios.c_cc[VTIME] *
45856: 2540 0054 movel %d0,%a2@(84)
rtems_clock_get_ticks_per_second() / 10;
if (tty->termios.c_cc[VTIME]) {
4585a: 4a2a 0046 tstb %a2@(70)
4585e: 6700 00e2 beqw 45942 <rtems_termios_ioctl+0x498>
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
45862: 42aa 006c clrl %a2@(108)
tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;
45866: 2540 0070 movel %d0,%a2@(112)
if (tty->termios.c_cc[VMIN])
4586a: 4a2a 0047 tstb %a2@(71)
4586e: 6600 fe62 bnew 456d2 <rtems_termios_ioctl+0x228>
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
else
tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;
45872: 2540 0074 movel %d0,%a2@(116)
45876: 6000 fe5e braw 456d6 <rtems_termios_ioctl+0x22c>
static void
flushOutput (struct rtems_termios_tty *tty)
{
rtems_interrupt_level level;
rtems_interrupt_disable (level);
4587a: 203c 0000 0700 movel #1792,%d0
45880: 40c1 movew %sr,%d1
45882: 8081 orl %d1,%d0
45884: 46c0 movew %d0,%sr
tty->rawOutBuf.Tail = 0;
45886: 42aa 0084 clrl %a2@(132)
tty->rawOutBuf.Head = 0;
tty->rawOutBufState = rob_idle;
4588a: 42aa 0094 clrl %a2@(148)
{
rtems_interrupt_level level;
rtems_interrupt_disable (level);
tty->rawOutBuf.Tail = 0;
tty->rawOutBuf.Head = 0;
4588e: 42aa 0080 clrl %a2@(128)
tty->rawOutBufState = rob_idle;
rtems_interrupt_enable (level);
45892: 46c1 movew %d1,%sr
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
45894: 2f2a 0018 movel %a2@(24),%sp@-
45898: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
4589e: 588f addql #4,%sp
458a0: 6000 fc88 braw 4552a <rtems_termios_ioctl+0x80>
break;
#endif
case FIONREAD: {
int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head;
if ( rawnc < 0 )
rawnc += tty->rawInBuf.Size;
458a4: 222a 0064 movel %a2@(100),%d1 <== NOT EXECUTED
458a8: d081 addl %d1,%d0 <== NOT EXECUTED
/* Half guess that this is the right operation */
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
458aa: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
458ae: 92aa 0024 subl %a2@(36),%d1 <== NOT EXECUTED
458b2: d280 addl %d0,%d1 <== NOT EXECUTED
458b4: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
458b8: 2081 movel %d1,%a0@ <== NOT EXECUTED
458ba: 6000 fe5c braw 45718 <rtems_termios_ioctl+0x26e> <== NOT EXECUTED
/*
* check for flow control options to be switched on
*/
/* check for incoming RTS/CTS flow control switched on */
if (tty->termios.c_cflag & CRTSCTS) {
tty->flow_ctrl |= FL_MDRTS;
458be: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
458c2: 08c0 0008 bset #8,%d0 <== NOT EXECUTED
458c6: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
}
/* check for incoming XON/XOF flow control switched on */
if (tty->termios.c_iflag & IXOFF) {
458ca: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
458ce: 0800 000c btst #12,%d0 <== NOT EXECUTED
458d2: 6700 fdda beqw 456ae <rtems_termios_ioctl+0x204> <== NOT EXECUTED
458d6: 6000 fdca braw 456a2 <rtems_termios_ioctl+0x1f8> <== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
/* if chars available, call write function... */
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
458da: 202a 0084 movel %a2@(132),%d0 <== NOT EXECUTED
rtems_interrupt_disable(level);
tty->flow_ctrl &= ~FL_OSTOP;
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
/* if chars available, call write function... */
(*tty->device.write)(
458de: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
458e2: d0aa 007c addl %a2@(124),%d0 <== NOT EXECUTED
458e6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
458e8: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
458ec: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
458f0: 4e90 jsr %a0@ <== NOT EXECUTED
458f2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
}
/* reenable interrupts */
rtems_interrupt_enable(level);
458f6: 46c3 movew %d3,%sr <== NOT EXECUTED
458f8: 6000 fd22 braw 4561c <rtems_termios_ioctl+0x172> <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
458fc: 2f2a 0018 movel %a2@(24),%sp@-
case TCIOFLUSH:
flushOutput (tty);
flushInput (tty);
break;
default:
sc = RTEMS_INVALID_NAME;
45900: 7403 moveq #3,%d2
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
45902: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
45908: 588f addql #4,%sp
4590a: 6000 fc1e braw 4552a <rtems_termios_ioctl+0x80>
static void
flushOutput (struct rtems_termios_tty *tty)
{
rtems_interrupt_level level;
rtems_interrupt_disable (level);
4590e: 203c 0000 0700 movel #1792,%d0
45914: 40c1 movew %sr,%d1
45916: 8081 orl %d1,%d0
45918: 46c0 movew %d0,%sr
tty->rawOutBuf.Tail = 0;
4591a: 42aa 0084 clrl %a2@(132)
tty->rawOutBuf.Head = 0;
4591e: 42aa 0080 clrl %a2@(128)
tty->rawOutBufState = rob_idle;
45922: 42aa 0094 clrl %a2@(148)
rtems_interrupt_enable (level);
45926: 46c1 movew %d1,%sr
static void
flushInput (struct rtems_termios_tty *tty)
{
rtems_interrupt_level level;
rtems_interrupt_disable (level);
45928: 203c 0000 0700 movel #1792,%d0
4592e: 40c1 movew %sr,%d1
45930: 8081 orl %d1,%d0
45932: 46c0 movew %d0,%sr
tty->rawInBuf.Tail = 0;
45934: 42aa 0060 clrl %a2@(96)
tty->rawInBuf.Head = 0;
45938: 42aa 005c clrl %a2@(92)
rtems_interrupt_enable (level);
4593c: 46c1 movew %d1,%sr
4593e: 6000 fc38 braw 45578 <rtems_termios_ioctl+0xce>
if (tty->termios.c_cc[VMIN])
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
else
tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;
} else {
if (tty->termios.c_cc[VMIN]) {
45942: 4a2a 0047 tstb %a2@(71)
45946: 6600 fd82 bnew 456ca <rtems_termios_ioctl+0x220>
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
} else {
tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;
4594a: 7001 moveq #1,%d0
4594c: 2540 006c movel %d0,%a2@(108)
45950: 6000 fd84 braw 456d6 <rtems_termios_ioctl+0x22c>
00044e78 <rtems_termios_open>:
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
44e78: 4e56 ffdc linkw %fp,#-36
44e7c: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
44e80: 42a7 clrl %sp@-
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
44e82: 242e 0008 movel %fp@(8),%d2
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
44e86: 42a7 clrl %sp@-
44e88: 2f39 0005 f92c movel 5f92c <rtems_termios_ttyMutex>,%sp@-
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
44e8e: 262e 000c movel %fp@(12),%d3
44e92: 266e 0010 moveal %fp@(16),%a3
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
44e96: 4eb9 0004 7458 jsr 47458 <rtems_semaphore_obtain>
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
44e9c: 4fef 000c lea %sp@(12),%sp
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
44ea0: 2800 movel %d0,%d4
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
44ea2: 6600 026e bnew 45112 <rtems_termios_open+0x29a>
return sc;
for (tty = rtems_termios_ttyHead ; tty != NULL ; tty = tty->forw) {
44ea6: 2879 0005 f934 moveal 5f934 <rtems_termios_ttyHead>,%a4
44eac: 4a8c tstl %a4
44eae: 6710 beqs 44ec0 <rtems_termios_open+0x48>
44eb0: 244c moveal %a4,%a2
if ((tty->major == major) && (tty->minor == minor))
44eb2: b4aa 000c cmpl %a2@(12),%d2
44eb6: 6700 0266 beqw 4511e <rtems_termios_open+0x2a6>
sc = rtems_semaphore_obtain(
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
return sc;
for (tty = rtems_termios_ttyHead ; tty != NULL ; tty = tty->forw) {
44eba: 2452 moveal %a2@,%a2
44ebc: 4a8a tstl %a2
44ebe: 66f2 bnes 44eb2 <rtems_termios_open+0x3a> <== NEVER TAKEN
static char c = 'a';
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
44ec0: 4878 00e8 pea e8 <DBL_MANT_DIG+0xb3>
44ec4: 4878 0001 pea 1 <ADD>
44ec8: 4eb9 0004 2e28 jsr 42e28 <calloc>
if (tty == NULL) {
44ece: 508f addql #8,%sp
static char c = 'a';
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
44ed0: 2440 moveal %d0,%a2
if (tty == NULL) {
44ed2: 4a80 tstl %d0
44ed4: 6700 0358 beqw 4522e <rtems_termios_open+0x3b6>
return RTEMS_NO_MEMORY;
}
/*
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
44ed8: 41f9 0005 e29c lea 5e29c <rtems_termios_raw_input_size>,%a0
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
44ede: 4bf9 0004 33cc lea 433cc <malloc>,%a5
return RTEMS_NO_MEMORY;
}
/*
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
44ee4: 2550 0064 movel %a0@,%a2@(100)
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
44ee8: 202a 0064 movel %a2@(100),%d0
44eec: 2f00 movel %d0,%sp@-
44eee: 4e95 jsr %a5@
if (tty->rawInBuf.theBuf == NULL) {
44ef0: 588f addql #4,%sp
}
/*
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
44ef2: 2a00 movel %d0,%d5
44ef4: 2540 0058 movel %d0,%a2@(88)
if (tty->rawInBuf.theBuf == NULL) {
44ef8: 6700 0274 beqw 4516e <rtems_termios_open+0x2f6>
return RTEMS_NO_MEMORY;
}
/*
* allocate raw output buffer
*/
tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;
44efc: 41f9 0005 e2a0 lea 5e2a0 <rtems_termios_raw_output_size>,%a0
44f02: 2550 0088 movel %a0@,%a2@(136)
tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);
44f06: 202a 0088 movel %a2@(136),%d0
44f0a: 2f00 movel %d0,%sp@-
44f0c: 4e95 jsr %a5@
if (tty->rawOutBuf.theBuf == NULL) {
44f0e: 588f addql #4,%sp
}
/*
* allocate raw output buffer
*/
tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;
tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);
44f10: 2c00 movel %d0,%d6
44f12: 2540 007c movel %d0,%a2@(124)
if (tty->rawOutBuf.theBuf == NULL) {
44f16: 6700 0332 beqw 4524a <rtems_termios_open+0x3d2>
return RTEMS_NO_MEMORY;
}
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
44f1a: 2f39 0005 e2a4 movel 5e2a4 <rtems_termios_cbufsize>,%sp@-
44f20: 4e95 jsr %a5@
if (tty->cbuf == NULL) {
44f22: 588f addql #4,%sp
return RTEMS_NO_MEMORY;
}
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
44f24: 2540 001c movel %d0,%a2@(28)
if (tty->cbuf == NULL) {
44f28: 6700 0370 beqw 4529a <rtems_termios_open+0x422>
return RTEMS_NO_MEMORY;
}
/*
* Initialize wakeup callbacks
*/
tty->tty_snd.sw_pfn = NULL;
44f2c: 42aa 00d4 clrl %a2@(212)
tty->tty_snd.sw_arg = NULL;
44f30: 42aa 00d8 clrl %a2@(216)
tty->tty_rcv.sw_pfn = NULL;
44f34: 42aa 00dc clrl %a2@(220)
tty->tty_rcv.sw_arg = NULL;
44f38: 42aa 00e0 clrl %a2@(224)
tty->tty_rcvwakeup = 0;
44f3c: 42aa 00e4 clrl %a2@(228)
/*
* link tty
*/
tty->forw = rtems_termios_ttyHead;
44f40: 248c movel %a4,%a2@
tty->back = NULL;
44f42: 42aa 0004 clrl %a2@(4)
if (rtems_termios_ttyHead != NULL)
44f46: 4a8c tstl %a4
44f48: 6704 beqs 44f4e <rtems_termios_open+0xd6>
rtems_termios_ttyHead->back = tty;
44f4a: 294a 0004 movel %a2,%a4@(4)
rtems_termios_ttyHead = tty;
44f4e: 23ca 0005 f934 movel %a2,5f934 <rtems_termios_ttyHead>
if (rtems_termios_ttyTail == NULL)
44f54: 4ab9 0005 f930 tstl 5f930 <rtems_termios_ttyTail>
44f5a: 6700 02c8 beqw 45224 <rtems_termios_open+0x3ac>
rtems_termios_ttyTail = tty;
tty->minor = minor;
44f5e: 2543 0010 movel %d3,%a2@(16)
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
44f62: 49f9 0004 7194 lea 47194 <rtems_semaphore_create>,%a4
rtems_termios_ttyHead = tty;
if (rtems_termios_ttyTail == NULL)
rtems_termios_ttyTail = tty;
tty->minor = minor;
tty->major = major;
44f68: 2542 000c movel %d2,%a2@(12)
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
44f6c: 486a 0014 pea %a2@(20)
rtems_build_name ('T', 'R', 'i', c),
44f70: 1039 0005 e2a8 moveb 5e2a8 <c.6708>,%d0
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
44f76: 42a7 clrl %sp@-
44f78: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
rtems_build_name ('T', 'R', 'i', c),
44f7c: 49c0 extbl %d0
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
44f7e: 4878 0001 pea 1 <ADD>
44f82: 0080 5452 6900 oril #1414686976,%d0
44f88: 2f00 movel %d0,%sp@-
44f8a: 4e94 jsr %a4@
rtems_build_name ('T', 'R', 'i', c),
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&tty->isem);
if (sc != RTEMS_SUCCESSFUL)
44f8c: 4fef 0014 lea %sp@(20),%sp
44f90: 4a80 tstl %d0
44f92: 6600 0226 bnew 451ba <rtems_termios_open+0x342>
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
44f96: 486a 0018 pea %a2@(24)
rtems_build_name ('T', 'R', 'o', c),
44f9a: 1039 0005 e2a8 moveb 5e2a8 <c.6708>,%d0
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&tty->isem);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
44fa0: 42a7 clrl %sp@-
44fa2: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
rtems_build_name ('T', 'R', 'o', c),
44fa6: 49c0 extbl %d0
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&tty->isem);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
44fa8: 4878 0001 pea 1 <ADD>
44fac: 0080 5452 6f00 oril #1414688512,%d0
44fb2: 2f00 movel %d0,%sp@-
44fb4: 4e94 jsr %a4@
rtems_build_name ('T', 'R', 'o', c),
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&tty->osem);
if (sc != RTEMS_SUCCESSFUL)
44fb6: 4fef 0014 lea %sp@(20),%sp
44fba: 4a80 tstl %d0
44fbc: 6600 01fc bnew 451ba <rtems_termios_open+0x342>
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
44fc0: 486a 008c pea %a2@(140)
rtems_build_name ('T', 'R', 'x', c),
44fc4: 1039 0005 e2a8 moveb 5e2a8 <c.6708>,%d0
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&tty->osem);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
44fca: 42a7 clrl %sp@-
44fcc: 4878 0020 pea 20 <OPER2+0xc>
rtems_build_name ('T', 'R', 'x', c),
44fd0: 49c0 extbl %d0
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&tty->osem);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
44fd2: 0080 5452 7800 oril #1414690816,%d0
44fd8: 42a7 clrl %sp@-
44fda: 2f00 movel %d0,%sp@-
44fdc: 4e94 jsr %a4@
rtems_build_name ('T', 'R', 'x', c),
0,
RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_FIFO,
RTEMS_NO_PRIORITY,
&tty->rawOutBuf.Semaphore);
if (sc != RTEMS_SUCCESSFUL)
44fde: 4fef 0014 lea %sp@(20),%sp
44fe2: 4a80 tstl %d0
44fe4: 6600 01d4 bnew 451ba <rtems_termios_open+0x342>
tty->rawOutBufState = rob_idle;
/*
* Set callbacks
*/
tty->device = *callbacks;
44fe8: 226e 0014 moveal %fp@(20),%a1
44fec: 41ea 0098 lea %a2@(152),%a0
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
44ff0: 7002 moveq #2,%d0
tty->rawOutBufState = rob_idle;
/*
* Set callbacks
*/
tty->device = *callbacks;
44ff2: 20d9 movel %a1@+,%a0@+
44ff4: 20d9 movel %a1@+,%a0@+
44ff6: 20d9 movel %a1@+,%a0@+
44ff8: 20d9 movel %a1@+,%a0@+
44ffa: 20d9 movel %a1@+,%a0@+
44ffc: 20d9 movel %a1@+,%a0@+
44ffe: 20d9 movel %a1@+,%a0@+
45000: 2091 movel %a1@,%a0@
RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_FIFO,
RTEMS_NO_PRIORITY,
&tty->rawOutBuf.Semaphore);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
tty->rawOutBufState = rob_idle;
45002: 42aa 0094 clrl %a2@(148)
tty->device = *callbacks;
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
45006: b0aa 00b4 cmpl %a2@(180),%d0
4500a: 6700 01b6 beqw 451c2 <rtems_termios_open+0x34a>
&tty->rxTaskId);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
4500e: 4aaa 00a0 tstl %a2@(160)
45012: 6700 017e beqw 45192 <rtems_termios_open+0x31a>
45016: 7202 moveq #2,%d1
45018: b2aa 00b4 cmpl %a2@(180),%d1
4501c: 6700 0174 beqw 45192 <rtems_termios_open+0x31a>
tty->termios.c_cc[VDISCARD] = '\017';
tty->termios.c_cc[VWERASE] = '\027';
tty->termios.c_cc[VLNEXT] = '\026';
/* start with no flow control, clear flow control flags */
tty->flow_ctrl = 0;
45020: 42aa 00b8 clrl %a2@(184)
/*
* set low/highwater mark for XON/XOFF support
*/
tty->lowwater = tty->rawInBuf.Size * 1/2;
45024: 222a 0064 movel %a2@(100),%d1
tty->highwater = tty->rawInBuf.Size * 3/4;
45028: 206a 0064 moveal %a2@(100),%a0
/* start with no flow control, clear flow control flags */
tty->flow_ctrl = 0;
/*
* set low/highwater mark for XON/XOFF support
*/
tty->lowwater = tty->rawInBuf.Size * 1/2;
4502c: e289 lsrl #1,%d1
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
tty->termios.c_lflag =
ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;
tty->termios.c_cc[VINTR] = '\003';
4502e: 7c03 moveq #3,%d6
tty->flow_ctrl = 0;
/*
* set low/highwater mark for XON/XOFF support
*/
tty->lowwater = tty->rawInBuf.Size * 1/2;
tty->highwater = tty->rawInBuf.Size * 3/4;
45030: 41f0 8a00 lea %a0@(00000000,%a0:l:2),%a0
/* start with no flow control, clear flow control flags */
tty->flow_ctrl = 0;
/*
* set low/highwater mark for XON/XOFF support
*/
tty->lowwater = tty->rawInBuf.Size * 1/2;
45034: 2541 00bc movel %d1,%a2@(188)
tty->highwater = tty->rawInBuf.Size * 3/4;
45038: 2008 movel %a0,%d0
4503a: e488 lsrl #2,%d0
}
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
4503c: 307c 2502 moveaw #9474,%a0
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
tty->termios.c_lflag =
ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;
tty->termios.c_cc[VINTR] = '\003';
45040: 1546 0041 moveb %d6,%a2@(65)
tty->termios.c_cc[VQUIT] = '\034';
45044: 7c1c moveq #28,%d6
tty->flow_ctrl = 0;
/*
* set low/highwater mark for XON/XOFF support
*/
tty->lowwater = tty->rawInBuf.Size * 1/2;
tty->highwater = tty->rawInBuf.Size * 3/4;
45046: 2540 00c0 movel %d0,%a2@(192)
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
tty->termios.c_lflag =
ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;
tty->termios.c_cc[VINTR] = '\003';
tty->termios.c_cc[VQUIT] = '\034';
4504a: 1546 0042 moveb %d6,%a2@(66)
}
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
4504e: 2548 0030 movel %a0,%a2@(48)
tty->termios.c_lflag =
ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;
tty->termios.c_cc[VINTR] = '\003';
tty->termios.c_cc[VQUIT] = '\034';
tty->termios.c_cc[VERASE] = '\177';
45052: 7c7f moveq #127,%d6
tty->termios.c_cc[VKILL] = '\025';
45054: 7015 moveq #21,%d0
tty->termios.c_lflag =
ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;
tty->termios.c_cc[VINTR] = '\003';
tty->termios.c_cc[VQUIT] = '\034';
tty->termios.c_cc[VERASE] = '\177';
45056: 1546 0043 moveb %d6,%a2@(67)
tty->termios.c_cc[VKILL] = '\025';
tty->termios.c_cc[VEOF] = '\004';
4505a: 7c04 moveq #4,%d6
ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;
tty->termios.c_cc[VINTR] = '\003';
tty->termios.c_cc[VQUIT] = '\034';
tty->termios.c_cc[VERASE] = '\177';
tty->termios.c_cc[VKILL] = '\025';
4505c: 1540 0044 moveb %d0,%a2@(68)
tty->termios.c_cc[VEOF] = '\004';
tty->termios.c_cc[VEOL] = '\000';
45060: 4200 clrb %d0
tty->termios.c_cc[VINTR] = '\003';
tty->termios.c_cc[VQUIT] = '\034';
tty->termios.c_cc[VERASE] = '\177';
tty->termios.c_cc[VKILL] = '\025';
tty->termios.c_cc[VEOF] = '\004';
45062: 1546 0045 moveb %d6,%a2@(69)
tty->termios.c_cc[VEOL] = '\000';
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
45066: 7c11 moveq #17,%d6
tty->termios.c_cc[VINTR] = '\003';
tty->termios.c_cc[VQUIT] = '\034';
tty->termios.c_cc[VERASE] = '\177';
tty->termios.c_cc[VKILL] = '\025';
tty->termios.c_cc[VEOF] = '\004';
tty->termios.c_cc[VEOL] = '\000';
45068: 1540 004c moveb %d0,%a2@(76)
tty->termios.c_cc[VEOL2] = '\000';
4506c: 1540 0051 moveb %d0,%a2@(81)
tty->termios.c_cc[VSTART] = '\021';
tty->termios.c_cc[VSTOP] = '\023';
45070: 7013 moveq #19,%d0
tty->termios.c_cc[VERASE] = '\177';
tty->termios.c_cc[VKILL] = '\025';
tty->termios.c_cc[VEOF] = '\004';
tty->termios.c_cc[VEOL] = '\000';
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
45072: 1546 0049 moveb %d6,%a2@(73)
tty->termios.c_cc[VSTOP] = '\023';
tty->termios.c_cc[VSUSP] = '\032';
45076: 7c1a moveq #26,%d6
tty->termios.c_cc[VKILL] = '\025';
tty->termios.c_cc[VEOF] = '\004';
tty->termios.c_cc[VEOL] = '\000';
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
tty->termios.c_cc[VSTOP] = '\023';
45078: 1540 004a moveb %d0,%a2@(74)
tty->termios.c_cc[VSUSP] = '\032';
tty->termios.c_cc[VREPRINT] = '\022';
4507c: 7012 moveq #18,%d0
tty->termios.c_cc[VEOF] = '\004';
tty->termios.c_cc[VEOL] = '\000';
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
tty->termios.c_cc[VSTOP] = '\023';
tty->termios.c_cc[VSUSP] = '\032';
4507e: 1546 004b moveb %d6,%a2@(75)
tty->termios.c_cc[VREPRINT] = '\022';
tty->termios.c_cc[VDISCARD] = '\017';
45082: 7c0f moveq #15,%d6
tty->termios.c_cc[VEOL] = '\000';
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
tty->termios.c_cc[VSTOP] = '\023';
tty->termios.c_cc[VSUSP] = '\032';
tty->termios.c_cc[VREPRINT] = '\022';
45084: 1540 004d moveb %d0,%a2@(77)
tty->termios.c_cc[VDISCARD] = '\017';
tty->termios.c_cc[VWERASE] = '\027';
45088: 7017 moveq #23,%d0
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
tty->termios.c_cc[VSTOP] = '\023';
tty->termios.c_cc[VSUSP] = '\032';
tty->termios.c_cc[VREPRINT] = '\022';
tty->termios.c_cc[VDISCARD] = '\017';
4508a: 1546 004e moveb %d6,%a2@(78)
tty->termios.c_cc[VWERASE] = '\027';
tty->termios.c_cc[VLNEXT] = '\026';
4508e: 7c16 moveq #22,%d6
tty->lowwater = tty->rawInBuf.Size * 1/2;
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
45090: 1a39 0005 e2a8 moveb 5e2a8 <c.6708>,%d5
tty->termios.c_cc[VSTART] = '\021';
tty->termios.c_cc[VSTOP] = '\023';
tty->termios.c_cc[VSUSP] = '\032';
tty->termios.c_cc[VREPRINT] = '\022';
tty->termios.c_cc[VDISCARD] = '\017';
tty->termios.c_cc[VWERASE] = '\027';
45096: 1540 004f moveb %d0,%a2@(79)
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
4509a: 203c 0000 1805 movel #6149,%d0
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
tty->termios.c_lflag =
450a0: 207c 0000 823b moveal #33339,%a0
tty->lowwater = tty->rawInBuf.Size * 1/2;
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
450a6: 1205 moveb %d5,%d1
tty->termios.c_cc[VSTOP] = '\023';
tty->termios.c_cc[VSUSP] = '\032';
tty->termios.c_cc[VREPRINT] = '\022';
tty->termios.c_cc[VDISCARD] = '\017';
tty->termios.c_cc[VWERASE] = '\027';
tty->termios.c_cc[VLNEXT] = '\026';
450a8: 1546 0050 moveb %d6,%a2@(80)
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
450ac: 2540 0034 movel %d0,%a2@(52)
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
450b0: 2c3c 0000 08bd movel #2237,%d6
tty->lowwater = tty->rawInBuf.Size * 1/2;
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
450b6: 49c1 extbl %d1
450b8: 303c 007a movew #122,%d0
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
450bc: 2546 0038 movel %d6,%a2@(56)
tty->termios.c_lflag =
450c0: 2548 003c movel %a0,%a2@(60)
tty->lowwater = tty->rawInBuf.Size * 1/2;
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
450c4: b081 cmpl %d1,%d0
450c6: 6700 01ae beqw 45276 <rtems_termios_open+0x3fe>
450ca: 5285 addql #1,%d5
450cc: 13c5 0005 e2a8 moveb %d5,5e2a8 <c.6708>
c = 'a';
}
args->iop->data1 = tty;
if (!tty->refcount++) {
450d2: 202a 0008 movel %a2@(8),%d0
450d6: 2c00 movel %d0,%d6
450d8: 5286 addql #1,%d6
*/
if (c++ == 'z')
c = 'a';
}
args->iop->data1 = tty;
450da: 2053 moveal %a3@,%a0
450dc: 214a 002c movel %a2,%a0@(44)
if (!tty->refcount++) {
450e0: 2546 0008 movel %d6,%a2@(8)
450e4: 4a80 tstl %d0
450e6: 661c bnes 45104 <rtems_termios_open+0x28c>
if (tty->device.firstOpen)
450e8: 206a 0098 moveal %a2@(152),%a0
450ec: 4a88 tstl %a0
450ee: 670c beqs 450fc <rtems_termios_open+0x284>
(*tty->device.firstOpen)(major, minor, arg);
450f0: 2f0b movel %a3,%sp@-
450f2: 2f03 movel %d3,%sp@-
450f4: 2f02 movel %d2,%sp@-
450f6: 4e90 jsr %a0@
450f8: 4fef 000c lea %sp@(12),%sp
/*
* start I/O tasks, if needed
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
450fc: 7002 moveq #2,%d0
450fe: b0aa 00b4 cmpl %a2@(180),%d0
45102: 672c beqs 45130 <rtems_termios_open+0x2b8>
tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
45104: 2f39 0005 f92c movel 5f92c <rtems_termios_ttyMutex>,%sp@-
4510a: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return RTEMS_SUCCESSFUL;
45110: 588f addql #4,%sp
}
45112: 2004 movel %d4,%d0
45114: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
4511a: 4e5e unlk %fp
4511c: 4e75 rts
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
return sc;
for (tty = rtems_termios_ttyHead ; tty != NULL ; tty = tty->forw) {
if ((tty->major == major) && (tty->minor == minor))
4511e: b6aa 0010 cmpl %a2@(16),%d3
45122: 67ae beqs 450d2 <rtems_termios_open+0x25a> <== ALWAYS TAKEN
sc = rtems_semaphore_obtain(
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
return sc;
for (tty = rtems_termios_ttyHead ; tty != NULL ; tty = tty->forw) {
45124: 2452 moveal %a2@,%a2 <== NOT EXECUTED
45126: 4a8a tstl %a2 <== NOT EXECUTED
45128: 6600 fd88 bnew 44eb2 <rtems_termios_open+0x3a> <== NOT EXECUTED
4512c: 6000 fd92 braw 44ec0 <rtems_termios_open+0x48> <== NOT EXECUTED
/*
* start I/O tasks, if needed
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_start(
45130: 2f0a movel %a2,%sp@-
45132: 487a 16c6 pea %pc@(467fa <rtems_termios_rxdaemon>)
45136: 47f9 0004 7990 lea 47990 <rtems_task_start>,%a3
4513c: 2f2a 00c4 movel %a2@(196),%sp@-
45140: 4e93 jsr %a3@
tty->rxTaskId, rtems_termios_rxdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
45142: 4fef 000c lea %sp@(12),%sp
45146: 4a80 tstl %d0
45148: 6670 bnes 451ba <rtems_termios_open+0x342> <== NEVER TAKEN
rtems_fatal_error_occurred (sc);
sc = rtems_task_start(
4514a: 2f0a movel %a2,%sp@-
4514c: 487a fc3c pea %pc@(44d8a <rtems_termios_txdaemon>)
45150: 2f2a 00c8 movel %a2@(200),%sp@-
45154: 4e93 jsr %a3@
tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
45156: 4fef 000c lea %sp@(12),%sp
4515a: 4a80 tstl %d0
4515c: 665c bnes 451ba <rtems_termios_open+0x342> <== NEVER TAKEN
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
4515e: 2f39 0005 f92c movel 5f92c <rtems_termios_ttyMutex>,%sp@-
45164: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return RTEMS_SUCCESSFUL;
4516a: 588f addql #4,%sp
4516c: 60a4 bras 45112 <rtems_termios_open+0x29a>
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
if (tty->rawInBuf.theBuf == NULL) {
free(tty);
4516e: 2f0a movel %a2,%sp@-
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_NO_MEMORY;
45170: 781a moveq #26,%d4
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
if (tty->rawInBuf.theBuf == NULL) {
free(tty);
45172: 4eb9 0004 30cc jsr 430cc <free>
rtems_semaphore_release (rtems_termios_ttyMutex);
45178: 2f39 0005 f92c movel 5f92c <rtems_termios_ttyMutex>,%sp@-
4517e: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return RTEMS_NO_MEMORY;
45184: 508f addql #8,%sp
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
45186: 2004 movel %d4,%d0
45188: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
4518e: 4e5e unlk %fp
45190: 4e75 rts
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
45192: 486a 0068 pea %a2@(104)
rtems_build_name ('T', 'R', 'r', c),
45196: 1039 0005 e2a8 moveb 5e2a8 <c.6708>,%d0
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
4519c: 42a7 clrl %sp@-
4519e: 4878 0024 pea 24 <OPER2+0x10>
rtems_build_name ('T', 'R', 'r', c),
451a2: 49c0 extbl %d0
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
451a4: 0080 5452 7200 oril #1414689280,%d0
451aa: 42a7 clrl %sp@-
451ac: 2f00 movel %d0,%sp@-
451ae: 4e94 jsr %a4@
rtems_build_name ('T', 'R', 'r', c),
0,
RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&tty->rawInBuf.Semaphore);
if (sc != RTEMS_SUCCESSFUL)
451b0: 4fef 0014 lea %sp@(20),%sp
451b4: 4a80 tstl %d0
451b6: 6700 fe68 beqw 45020 <rtems_termios_open+0x1a8>
rtems_fatal_error_occurred (sc);
sc = rtems_task_start(
tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
451ba: 2f00 movel %d0,%sp@-
451bc: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred>
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_create (
451c2: 486a 00c8 pea %a2@(200)
451c6: 4bf9 0004 76c4 lea 476c4 <rtems_task_create>,%a5
rtems_build_name ('T', 'x', 'T', c),
451cc: 1039 0005 e2a8 moveb 5e2a8 <c.6708>,%d0
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_create (
451d2: 42a7 clrl %sp@-
451d4: 4878 0500 pea 500 <DBL_MAX_EXP+0xff>
rtems_build_name ('T', 'x', 'T', c),
451d8: 49c0 extbl %d0
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_create (
451da: 4878 0400 pea 400 <D_BIAS+0x2>
451de: 4878 000a pea a <LASTO>
451e2: 0080 5478 5400 oril #1417171968,%d0
451e8: 2f00 movel %d0,%sp@-
451ea: 4e95 jsr %a5@
TERMIOS_TXTASK_STACKSIZE,
RTEMS_NO_PREEMPT | RTEMS_NO_TIMESLICE |
RTEMS_NO_ASR,
RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,
&tty->txTaskId);
if (sc != RTEMS_SUCCESSFUL)
451ec: 4fef 0018 lea %sp@(24),%sp
451f0: 4a80 tstl %d0
451f2: 66c6 bnes 451ba <rtems_termios_open+0x342> <== NEVER TAKEN
rtems_fatal_error_occurred (sc);
sc = rtems_task_create (
451f4: 486a 00c4 pea %a2@(196)
rtems_build_name ('R', 'x', 'T', c),
451f8: 1039 0005 e2a8 moveb 5e2a8 <c.6708>,%d0
RTEMS_NO_ASR,
RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,
&tty->txTaskId);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_task_create (
451fe: 42a7 clrl %sp@-
45200: 4878 0500 pea 500 <DBL_MAX_EXP+0xff>
rtems_build_name ('R', 'x', 'T', c),
45204: 49c0 extbl %d0
RTEMS_NO_ASR,
RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,
&tty->txTaskId);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_task_create (
45206: 4878 0400 pea 400 <D_BIAS+0x2>
4520a: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1>
4520e: 0080 5278 5400 oril #1383617536,%d0
45214: 2f00 movel %d0,%sp@-
45216: 4e95 jsr %a5@
TERMIOS_RXTASK_STACKSIZE,
RTEMS_NO_PREEMPT | RTEMS_NO_TIMESLICE |
RTEMS_NO_ASR,
RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,
&tty->rxTaskId);
if (sc != RTEMS_SUCCESSFUL)
45218: 4fef 0018 lea %sp@(24),%sp
4521c: 4a80 tstl %d0
4521e: 6700 fdee beqw 4500e <rtems_termios_open+0x196>
45222: 6096 bras 451ba <rtems_termios_open+0x342> <== NOT EXECUTED
tty->back = NULL;
if (rtems_termios_ttyHead != NULL)
rtems_termios_ttyHead->back = tty;
rtems_termios_ttyHead = tty;
if (rtems_termios_ttyTail == NULL)
rtems_termios_ttyTail = tty;
45224: 23ca 0005 f930 movel %a2,5f930 <rtems_termios_ttyTail>
4522a: 6000 fd32 braw 44f5e <rtems_termios_open+0xe6>
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
if (tty == NULL) {
rtems_semaphore_release (rtems_termios_ttyMutex);
4522e: 2f39 0005 f92c movel 5f92c <rtems_termios_ttyMutex>,%sp@-
return RTEMS_NO_MEMORY;
45234: 781a moveq #26,%d4
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
if (tty == NULL) {
rtems_semaphore_release (rtems_termios_ttyMutex);
45236: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return RTEMS_NO_MEMORY;
4523c: 588f addql #4,%sp
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
4523e: 2004 movel %d4,%d0
45240: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
45246: 4e5e unlk %fp
45248: 4e75 rts
* allocate raw output buffer
*/
tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;
tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);
if (tty->rawOutBuf.theBuf == NULL) {
free((void *)(tty->rawInBuf.theBuf));
4524a: 2f05 movel %d5,%sp@-
4524c: 47f9 0004 30cc lea 430cc <free>,%a3
free(tty);
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_NO_MEMORY;
45252: 781a moveq #26,%d4
* allocate raw output buffer
*/
tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;
tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);
if (tty->rawOutBuf.theBuf == NULL) {
free((void *)(tty->rawInBuf.theBuf));
45254: 4e93 jsr %a3@
free(tty);
45256: 2f0a movel %a2,%sp@-
45258: 4e93 jsr %a3@
rtems_semaphore_release (rtems_termios_ttyMutex);
4525a: 2f39 0005 f92c movel 5f92c <rtems_termios_ttyMutex>,%sp@-
45260: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return RTEMS_NO_MEMORY;
45266: 4fef 000c lea %sp@(12),%sp
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
4526a: 2004 movel %d4,%d0
4526c: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
45272: 4e5e unlk %fp
45274: 4e75 rts
if (c++ == 'z')
c = 'a';
}
args->iop->data1 = tty;
if (!tty->refcount++) {
45276: 202a 0008 movel %a2@(8),%d0
4527a: 2c00 movel %d0,%d6
4527c: 5286 addql #1,%d6
*/
if (c++ == 'z')
c = 'a';
}
args->iop->data1 = tty;
4527e: 2053 moveal %a3@,%a0
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
c = 'a';
45280: 7261 moveq #97,%d1
}
args->iop->data1 = tty;
45282: 214a 002c movel %a2,%a0@(44)
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
c = 'a';
45286: 13c1 0005 e2a8 moveb %d1,5e2a8 <c.6708>
}
args->iop->data1 = tty;
if (!tty->refcount++) {
4528c: 2546 0008 movel %d6,%a2@(8)
45290: 4a80 tstl %d0
45292: 6700 fe54 beqw 450e8 <rtems_termios_open+0x270>
45296: 6000 fe6c braw 45104 <rtems_termios_open+0x28c> <== NOT EXECUTED
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
if (tty->cbuf == NULL) {
free((void *)(tty->rawOutBuf.theBuf));
4529a: 2f06 movel %d6,%sp@-
4529c: 47f9 0004 30cc lea 430cc <free>,%a3
free((void *)(tty->rawInBuf.theBuf));
free(tty);
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_NO_MEMORY;
452a2: 781a moveq #26,%d4
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
if (tty->cbuf == NULL) {
free((void *)(tty->rawOutBuf.theBuf));
452a4: 4e93 jsr %a3@
free((void *)(tty->rawInBuf.theBuf));
452a6: 2f05 movel %d5,%sp@-
452a8: 4e93 jsr %a3@
free(tty);
452aa: 2f0a movel %a2,%sp@-
452ac: 4e93 jsr %a3@
rtems_semaphore_release (rtems_termios_ttyMutex);
452ae: 2f39 0005 f92c movel 5f92c <rtems_termios_ttyMutex>,%sp@-
452b4: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return RTEMS_NO_MEMORY;
452ba: 4fef 0010 lea %sp@(16),%sp
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
452be: 2004 movel %d4,%d0
452c0: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
452c6: 4e5e unlk %fp <== NOT EXECUTED
00045954 <rtems_termios_puts>:
* Send characters to device-specific code
*/
void
rtems_termios_puts (
const void *_buf, size_t len, struct rtems_termios_tty *tty)
{
45954: 4e56 ffdc linkw %fp,#-36
45958: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@
4595c: 286e 0008 moveal %fp@(8),%a4
45960: 282e 000c movel %fp@(12),%d4
45964: 246e 0010 moveal %fp@(16),%a2
const unsigned char *buf = _buf;
unsigned int newHead;
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {
45968: 4aaa 00b4 tstl %a2@(180)
4596c: 6700 00c6 beqw 45a34 <rtems_termios_puts+0xe0>
(*tty->device.write)(tty->minor, buf, len);
return;
}
newHead = tty->rawOutBuf.Head;
45970: 2a2a 0080 movel %a2@(128),%d5
while (len) {
45974: 4a84 tstl %d4
45976: 6700 008e beqw 45a06 <rtems_termios_puts+0xb2>
*
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
rtems_interrupt_disable (level);
4597a: 263c 0000 0700 movel #1792,%d3
45980: 47f9 0004 7458 lea 47458 <rtems_semaphore_obtain>,%a3
* len -= ncopy
*
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
45986: 222a 0088 movel %a2@(136),%d1
4598a: 5285 addql #1,%d5
rtems_interrupt_disable (level);
4598c: 2003 movel %d3,%d0
* len -= ncopy
*
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
4598e: 4c41 5006 remul %d1,%d6,%d5
45992: 2a06 movel %d6,%d5
rtems_interrupt_disable (level);
45994: 40c2 movew %sr,%d2
45996: 8082 orl %d2,%d0
45998: 46c0 movew %d0,%sr
while (newHead == tty->rawOutBuf.Tail) {
4599a: 2e2a 0084 movel %a2@(132),%d7
4599e: bc87 cmpl %d7,%d6
459a0: 662c bnes 459ce <rtems_termios_puts+0x7a>
tty->rawOutBufState = rob_wait;
459a2: 7002 moveq #2,%d0
459a4: 2540 0094 movel %d0,%a2@(148)
rtems_interrupt_enable (level);
459a8: 46c2 movew %d2,%sr
sc = rtems_semaphore_obtain(
459aa: 42a7 clrl %sp@-
459ac: 42a7 clrl %sp@-
459ae: 2f2a 008c movel %a2@(140),%sp@-
459b2: 4e93 jsr %a3@
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
459b4: 4fef 000c lea %sp@(12),%sp
459b8: 4a80 tstl %d0
459ba: 6600 0094 bnew 45a50 <rtems_termios_puts+0xfc>
rtems_fatal_error_occurred (sc);
rtems_interrupt_disable (level);
459be: 2003 movel %d3,%d0
459c0: 40c2 movew %sr,%d2
459c2: 8082 orl %d2,%d0
459c4: 46c0 movew %d0,%sr
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
rtems_interrupt_disable (level);
while (newHead == tty->rawOutBuf.Tail) {
459c6: 202a 0084 movel %a2@(132),%d0
459ca: be80 cmpl %d0,%d7
459cc: 67d4 beqs 459a2 <rtems_termios_puts+0x4e> <== NEVER TAKEN
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
rtems_interrupt_disable (level);
}
tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;
459ce: 202a 0080 movel %a2@(128),%d0
459d2: 206a 007c moveal %a2@(124),%a0
459d6: 119c 0800 moveb %a4@+,%a0@(00000000,%d0:l)
tty->rawOutBuf.Head = newHead;
459da: 2546 0080 movel %d6,%a2@(128)
if (tty->rawOutBufState == rob_idle) {
459de: 4aaa 0094 tstl %a2@(148)
459e2: 661c bnes 45a00 <rtems_termios_puts+0xac>
/* check, whether XOFF has been received */
if (!(tty->flow_ctrl & FL_ORCVXOF)) {
459e4: 202a 00b8 movel %a2@(184),%d0
459e8: 0800 0004 btst #4,%d0
459ec: 6722 beqs 45a10 <rtems_termios_puts+0xbc> <== ALWAYS TAKEN
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
} else {
/* remember that output has been stopped due to flow ctrl*/
tty->flow_ctrl |= FL_OSTOP;
459ee: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
459f2: 7220 moveq #32,%d1 <== NOT EXECUTED
459f4: 8081 orl %d1,%d0 <== NOT EXECUTED
459f6: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy;
459fa: 7001 moveq #1,%d0 <== NOT EXECUTED
459fc: 2540 0094 movel %d0,%a2@(148) <== NOT EXECUTED
}
rtems_interrupt_enable (level);
45a00: 46c2 movew %d2,%sr
len--;
45a02: 5384 subql #1,%d4
if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {
(*tty->device.write)(tty->minor, buf, len);
return;
}
newHead = tty->rawOutBuf.Head;
while (len) {
45a04: 6680 bnes 45986 <rtems_termios_puts+0x32>
tty->rawOutBufState = rob_busy;
}
rtems_interrupt_enable (level);
len--;
}
}
45a06: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4
45a0c: 4e5e unlk %fp
45a0e: 4e75 rts
tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;
tty->rawOutBuf.Head = newHead;
if (tty->rawOutBufState == rob_idle) {
/* check, whether XOFF has been received */
if (!(tty->flow_ctrl & FL_ORCVXOF)) {
(*tty->device.write)(
45a10: 4878 0001 pea 1 <ADD>
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
45a14: 202a 0084 movel %a2@(132),%d0
tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;
tty->rawOutBuf.Head = newHead;
if (tty->rawOutBufState == rob_idle) {
/* check, whether XOFF has been received */
if (!(tty->flow_ctrl & FL_ORCVXOF)) {
(*tty->device.write)(
45a18: d0aa 007c addl %a2@(124),%d0
45a1c: 2f00 movel %d0,%sp@-
45a1e: 2f2a 0010 movel %a2@(16),%sp@-
45a22: 206a 00a4 moveal %a2@(164),%a0
45a26: 4e90 jsr %a0@
45a28: 4fef 000c lea %sp@(12),%sp
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
} else {
/* remember that output has been stopped due to flow ctrl*/
tty->flow_ctrl |= FL_OSTOP;
}
tty->rawOutBufState = rob_busy;
45a2c: 7001 moveq #1,%d0
45a2e: 2540 0094 movel %d0,%a2@(148)
45a32: 60cc bras 45a00 <rtems_termios_puts+0xac>
unsigned int newHead;
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {
(*tty->device.write)(tty->minor, buf, len);
45a34: 226a 00a4 moveal %a2@(164),%a1
45a38: 2d6a 0010 0008 movel %a2@(16),%fp@(8)
45a3e: 2d44 0010 movel %d4,%fp@(16)
45a42: 2d4c 000c movel %a4,%fp@(12)
tty->rawOutBufState = rob_busy;
}
rtems_interrupt_enable (level);
len--;
}
}
45a46: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4
45a4c: 4e5e unlk %fp
unsigned int newHead;
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {
(*tty->device.write)(tty->minor, buf, len);
45a4e: 4ed1 jmp %a1@
tty->rawOutBufState = rob_wait;
rtems_interrupt_enable (level);
sc = rtems_semaphore_obtain(
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
45a50: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45a52: 4eb9 0004 7c4c jsr 47c4c <rtems_fatal_error_occurred> <== NOT EXECUTED
000461ba <rtems_termios_read>:
return RTEMS_SUCCESSFUL;
}
rtems_status_code
rtems_termios_read (void *arg)
{
461ba: 4e56 ffd4 linkw %fp,#-44
461be: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
461c2: 2a6e 0008 moveal %fp@(8),%a5
struct rtems_termios_tty *tty = args->iop->data1;
uint32_t count = args->count;
char *buffer = args->buffer;
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
461c6: 2a3c 0004 7458 movel #291928,%d5
rtems_status_code
rtems_termios_read (void *arg)
{
rtems_libio_rw_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
461cc: 2055 moveal %a5@,%a0
461ce: 2468 002c moveal %a0@(44),%a2
uint32_t count = args->count;
char *buffer = args->buffer;
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
461d2: 2045 moveal %d5,%a0
461d4: 42a7 clrl %sp@-
rtems_status_code
rtems_termios_read (void *arg)
{
rtems_libio_rw_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
uint32_t count = args->count;
461d6: 242d 0010 movel %a5@(16),%d2
char *buffer = args->buffer;
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
461da: 42a7 clrl %sp@-
461dc: 2f2a 0014 movel %a2@(20),%sp@-
rtems_termios_read (void *arg)
{
rtems_libio_rw_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
uint32_t count = args->count;
char *buffer = args->buffer;
461e0: 286d 000c moveal %a5@(12),%a4
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
461e4: 4e90 jsr %a0@
if (sc != RTEMS_SUCCESSFUL)
461e6: 4fef 000c lea %sp@(12),%sp
struct rtems_termios_tty *tty = args->iop->data1;
uint32_t count = args->count;
char *buffer = args->buffer;
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
461ea: 2800 movel %d0,%d4
if (sc != RTEMS_SUCCESSFUL)
461ec: 662e bnes 4621c <rtems_termios_read+0x62> <== NEVER TAKEN
return sc;
if (rtems_termios_linesw[tty->t_line].l_read != NULL) {
461ee: 202a 00cc movel %a2@(204),%d0
461f2: eb88 lsll #5,%d0
461f4: 0680 0005 f104 addil #389380,%d0
461fa: 2240 moveal %d0,%a1
461fc: 2051 moveal %a1@,%a0
461fe: 4a88 tstl %a0
46200: 6726 beqs 46228 <rtems_termios_read+0x6e>
sc = rtems_termios_linesw[tty->t_line].l_read(tty,args);
46202: 2f0d movel %a5,%sp@-
46204: 2f0a movel %a2,%sp@-
46206: 4e90 jsr %a0@
46208: 2800 movel %d0,%d4
tty->tty_rcvwakeup = 0;
4620a: 42aa 00e4 clrl %a2@(228)
rtems_semaphore_release (tty->isem);
4620e: 2f2a 0014 movel %a2@(20),%sp@-
46212: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
46218: 4fef 000c lea %sp@(12),%sp
}
args->bytes_moved = args->count - count;
tty->tty_rcvwakeup = 0;
rtems_semaphore_release (tty->isem);
return sc;
}
4621c: 2004 movel %d4,%d0
4621e: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
46224: 4e5e unlk %fp
46226: 4e75 rts
tty->tty_rcvwakeup = 0;
rtems_semaphore_release (tty->isem);
return sc;
}
if (tty->cindex == tty->ccount) {
46228: 202a 0020 movel %a2@(32),%d0
4622c: b0aa 0024 cmpl %a2@(36),%d0
46230: 6752 beqs 46284 <rtems_termios_read+0xca> <== ALWAYS TAKEN
sc = fillBufferQueue (tty);
if (sc != RTEMS_SUCCESSFUL)
tty->cindex = tty->ccount = 0;
}
while (count && (tty->cindex < tty->ccount)) {
46232: 4a82 tstl %d2
46234: 6700 01bc beqw 463f2 <rtems_termios_read+0x238>
46238: 202a 0024 movel %a2@(36),%d0
4623c: b0aa 0020 cmpl %a2@(32),%d0
46240: 6c1c bges 4625e <rtems_termios_read+0xa4>
*buffer++ = tty->cbuf[tty->cindex++];
46242: 206a 001c moveal %a2@(28),%a0
count--;
46246: 5382 subql #1,%d2
if (sc != RTEMS_SUCCESSFUL)
tty->cindex = tty->ccount = 0;
}
while (count && (tty->cindex < tty->ccount)) {
*buffer++ = tty->cbuf[tty->cindex++];
46248: 18f0 0800 moveb %a0@(00000000,%d0:l),%a4@+
4624c: 5280 addql #1,%d0
4624e: 2540 0024 movel %d0,%a2@(36)
sc = fillBufferQueue (tty);
if (sc != RTEMS_SUCCESSFUL)
tty->cindex = tty->ccount = 0;
}
while (count && (tty->cindex < tty->ccount)) {
46252: 4a82 tstl %d2
46254: 6700 019c beqw 463f2 <rtems_termios_read+0x238>
46258: b0aa 0020 cmpl %a2@(32),%d0
4625c: 6de4 blts 46242 <rtems_termios_read+0x88>
*buffer++ = tty->cbuf[tty->cindex++];
count--;
}
args->bytes_moved = args->count - count;
4625e: 202d 0010 movel %a5@(16),%d0
46262: 9082 subl %d2,%d0
46264: 2b40 0018 movel %d0,%a5@(24)
tty->tty_rcvwakeup = 0;
46268: 42aa 00e4 clrl %a2@(228)
rtems_semaphore_release (tty->isem);
4626c: 2f2a 0014 movel %a2@(20),%sp@-
46270: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
46276: 588f addql #4,%sp
}
46278: 2004 movel %d4,%d0
4627a: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5
46280: 4e5e unlk %fp
46282: 4e75 rts
}
if (tty->cindex == tty->ccount) {
tty->cindex = tty->ccount = 0;
tty->read_start_column = tty->column;
if (tty->device.pollRead != NULL &&
46284: 206a 00a0 moveal %a2@(160),%a0
return sc;
}
if (tty->cindex == tty->ccount) {
tty->cindex = tty->ccount = 0;
tty->read_start_column = tty->column;
46288: 256a 0028 002c movel %a2@(40),%a2@(44)
rtems_semaphore_release (tty->isem);
return sc;
}
if (tty->cindex == tty->ccount) {
tty->cindex = tty->ccount = 0;
4628e: 42aa 0020 clrl %a2@(32)
46292: 42aa 0024 clrl %a2@(36)
tty->read_start_column = tty->column;
if (tty->device.pollRead != NULL &&
46296: 4a88 tstl %a0
46298: 6708 beqs 462a2 <rtems_termios_read+0xe8>
4629a: 4aaa 00b4 tstl %a2@(180)
4629e: 6700 0172 beqw 46412 <rtems_termios_read+0x258>
== (FL_MDXON | FL_ISNTXOF))
&& ((tty->rawOutBufState == rob_idle)
|| (tty->flow_ctrl & FL_OSTOP))) {
/* XON should be sent now... */
(*tty->device.write)(
tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
462a2: 41ea 0049 lea %a2@(73),%a0
static rtems_status_code
fillBufferQueue (struct rtems_termios_tty *tty)
{
rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;
rtems_status_code sc;
int wait = 1;
462a6: 7601 moveq #1,%d3
462a8: 47fa fdca lea %pc@(46074 <siproc>),%a3
* Fill the input buffer from the raw input queue
*/
static rtems_status_code
fillBufferQueue (struct rtems_termios_tty *tty)
{
rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;
462ac: 2e2a 0074 movel %a2@(116),%d7
== (FL_MDXON | FL_ISNTXOF))
&& ((tty->rawOutBufState == rob_idle)
|| (tty->flow_ctrl & FL_OSTOP))) {
/* XON should be sent now... */
(*tty->device.write)(
tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
462b0: 2d48 fffc movel %a0,%fp@(-4)
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
462b4: 222a 005c movel %a2@(92),%d1
462b8: 202a 0060 movel %a2@(96),%d0
462bc: b081 cmpl %d1,%d0
462be: 6700 00c6 beqw 46386 <rtems_termios_read+0x1cc>
(tty->ccount < (CBUFSIZE-1))) {
462c2: 2039 0005 e2a4 movel 5e2a4 <rtems_termios_cbufsize>,%d0
462c8: 5380 subql #1,%d0
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
462ca: b0aa 0020 cmpl %a2@(32),%d0
462ce: 6300 00b6 blsw 46386 <rtems_termios_read+0x1cc>
(tty->ccount < (CBUFSIZE-1))) {
unsigned char c;
unsigned int newHead;
newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;
462d2: 2e2a 005c movel %a2@(92),%d7
462d6: 5287 addql #1,%d7
462d8: 222a 0064 movel %a2@(100),%d1
c = tty->rawInBuf.theBuf[newHead];
462dc: 206a 0058 moveal %a2@(88),%a0
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
(tty->ccount < (CBUFSIZE-1))) {
unsigned char c;
unsigned int newHead;
newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;
462e0: 4c41 7000 remul %d1,%d0,%d7
c = tty->rawInBuf.theBuf[newHead];
462e4: 1e30 0800 moveb %a0@(00000000,%d0:l),%d7
tty->rawInBuf.Head = newHead;
462e8: 2540 005c movel %d0,%a2@(92)
if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)
462ec: 222a 0060 movel %a2@(96),%d1
462f0: 206a 0064 moveal %a2@(100),%a0
462f4: d288 addl %a0,%d1
462f6: 9280 subl %d0,%d1
% tty->rawInBuf.Size)
462f8: 202a 0064 movel %a2@(100),%d0
462fc: 4c40 1006 remul %d0,%d6,%d1
unsigned int newHead;
newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;
c = tty->rawInBuf.theBuf[newHead];
tty->rawInBuf.Head = newHead;
if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)
46300: bcaa 00bc cmpl %a2@(188),%d6
46304: 6446 bccs 4634c <rtems_termios_read+0x192> <== NEVER TAKEN
% tty->rawInBuf.Size)
< tty->lowwater) {
tty->flow_ctrl &= ~FL_IREQXOF;
46306: 202a 00b8 movel %a2@(184),%d0
4630a: 72fe moveq #-2,%d1
4630c: c081 andl %d1,%d0
4630e: 2540 00b8 movel %d0,%a2@(184)
/* if tx stopped and XON should be sent... */
if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))
46312: 202a 00b8 movel %a2@(184),%d0
46316: 0280 0000 0202 andil #514,%d0
4631c: 0c80 0000 0202 cmpil #514,%d0
46322: 6700 00a2 beqw 463c6 <rtems_termios_read+0x20c>
&& ((tty->rawOutBufState == rob_idle)
|| (tty->flow_ctrl & FL_OSTOP))) {
/* XON should be sent now... */
(*tty->device.write)(
tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
} else if (tty->flow_ctrl & FL_MDRTS) {
46326: 202a 00b8 movel %a2@(184),%d0
4632a: 0800 0008 btst #8,%d0
4632e: 671c beqs 4634c <rtems_termios_read+0x192> <== ALWAYS TAKEN
tty->flow_ctrl &= ~FL_IRTSOFF;
46330: 222a 00b8 movel %a2@(184),%d1 <== NOT EXECUTED
46334: 70fb moveq #-5,%d0 <== NOT EXECUTED
46336: c280 andl %d0,%d1 <== NOT EXECUTED
/* activate RTS line */
if (tty->device.startRemoteTx != NULL) {
46338: 206a 00b0 moveal %a2@(176),%a0 <== NOT EXECUTED
|| (tty->flow_ctrl & FL_OSTOP))) {
/* XON should be sent now... */
(*tty->device.write)(
tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
} else if (tty->flow_ctrl & FL_MDRTS) {
tty->flow_ctrl &= ~FL_IRTSOFF;
4633c: 2541 00b8 movel %d1,%a2@(184) <== NOT EXECUTED
/* activate RTS line */
if (tty->device.startRemoteTx != NULL) {
46340: 4a88 tstl %a0 <== NOT EXECUTED
46342: 6708 beqs 4634c <rtems_termios_read+0x192> <== NOT EXECUTED
tty->device.startRemoteTx(tty->minor);
46344: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
46348: 4e90 jsr %a0@ <== NOT EXECUTED
4634a: 588f addql #4,%sp <== NOT EXECUTED
}
}
}
/* continue processing new character */
if (tty->termios.c_lflag & ICANON) {
4634c: 7002 moveq #2,%d0
4634e: c0aa 003c andl %a2@(60),%d0
46352: 6754 beqs 463a8 <rtems_termios_read+0x1ee> <== NEVER TAKEN
if (siproc (c, tty))
46354: 2f0a movel %a2,%sp@-
46356: 0287 0000 00ff andil #255,%d7
4635c: 2f07 movel %d7,%sp@-
4635e: 4e93 jsr %a3@
46360: 508f addql #8,%sp
46362: 4a80 tstl %d0
46364: 665c bnes 463c2 <rtems_termios_read+0x208>
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
46366: 222a 005c movel %a2@(92),%d1
} else {
siproc (c, tty);
if (tty->ccount >= tty->termios.c_cc[VMIN])
wait = 0;
}
timeout = tty->rawInBufSemaphoreTimeout;
4636a: 2e2a 0070 movel %a2@(112),%d7
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
4636e: 202a 0060 movel %a2@(96),%d0
46372: b081 cmpl %d1,%d0
46374: 6710 beqs 46386 <rtems_termios_read+0x1cc>
(tty->ccount < (CBUFSIZE-1))) {
46376: 2039 0005 e2a4 movel 5e2a4 <rtems_termios_cbufsize>,%d0
4637c: 5380 subql #1,%d0
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
4637e: b0aa 0020 cmpl %a2@(32),%d0
46382: 6200 ff4e bhiw 462d2 <rtems_termios_read+0x118>
}
/*
* Wait for characters
*/
if ( wait ) {
46386: 4a83 tstl %d3
46388: 6700 fea8 beqw 46232 <rtems_termios_read+0x78>
sc = rtems_semaphore_obtain(
4638c: 2f07 movel %d7,%sp@-
4638e: 2f2a 006c movel %a2@(108),%sp@-
46392: 2045 moveal %d5,%a0
46394: 2f2a 0068 movel %a2@(104),%sp@-
46398: 4e90 jsr %a0@
tty->rawInBuf.Semaphore, tty->rawInBufSemaphoreOptions, timeout);
if (sc != RTEMS_SUCCESSFUL)
4639a: 4fef 000c lea %sp@(12),%sp
4639e: 4a80 tstl %d0
463a0: 6700 ff12 beqw 462b4 <rtems_termios_read+0xfa>
463a4: 6000 fe8c braw 46232 <rtems_termios_read+0x78>
/* continue processing new character */
if (tty->termios.c_lflag & ICANON) {
if (siproc (c, tty))
wait = 0;
} else {
siproc (c, tty);
463a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
463aa: 0287 0000 00ff andil #255,%d7 <== NOT EXECUTED
463b0: 2f07 movel %d7,%sp@- <== NOT EXECUTED
463b2: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->ccount >= tty->termios.c_cc[VMIN])
463b4: 508f addql #8,%sp <== NOT EXECUTED
463b6: 4280 clrl %d0 <== NOT EXECUTED
463b8: 102a 0047 moveb %a2@(71),%d0 <== NOT EXECUTED
463bc: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED
463c0: 6ea4 bgts 46366 <rtems_termios_read+0x1ac> <== NOT EXECUTED
}
/* continue processing new character */
if (tty->termios.c_lflag & ICANON) {
if (siproc (c, tty))
wait = 0;
463c2: 4283 clrl %d3
463c4: 60a0 bras 46366 <rtems_termios_read+0x1ac>
< tty->lowwater) {
tty->flow_ctrl &= ~FL_IREQXOF;
/* if tx stopped and XON should be sent... */
if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))
== (FL_MDXON | FL_ISNTXOF))
&& ((tty->rawOutBufState == rob_idle)
463c6: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
463ca: 670c beqs 463d8 <rtems_termios_read+0x21e> <== NOT EXECUTED
|| (tty->flow_ctrl & FL_OSTOP))) {
463cc: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
463d0: 0800 0005 btst #5,%d0 <== NOT EXECUTED
463d4: 6700 ff50 beqw 46326 <rtems_termios_read+0x16c> <== NOT EXECUTED
/* XON should be sent now... */
(*tty->device.write)(
463d8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
463dc: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
463e0: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
463e4: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
463e8: 4e90 jsr %a0@ <== NOT EXECUTED
463ea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
463ee: 6000 ff5c braw 4634c <rtems_termios_read+0x192> <== NOT EXECUTED
}
while (count && (tty->cindex < tty->ccount)) {
*buffer++ = tty->cbuf[tty->cindex++];
count--;
}
args->bytes_moved = args->count - count;
463f2: 202d 0010 movel %a5@(16),%d0
static rtems_status_code
fillBufferQueue (struct rtems_termios_tty *tty)
{
rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;
rtems_status_code sc;
int wait = 1;
463f6: 4282 clrl %d2
}
while (count && (tty->cindex < tty->ccount)) {
*buffer++ = tty->cbuf[tty->cindex++];
count--;
}
args->bytes_moved = args->count - count;
463f8: 9082 subl %d2,%d0
463fa: 2b40 0018 movel %d0,%a5@(24)
tty->tty_rcvwakeup = 0;
463fe: 42aa 00e4 clrl %a2@(228)
rtems_semaphore_release (tty->isem);
46402: 2f2a 0014 movel %a2@(20),%sp@-
46406: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
4640c: 588f addql #4,%sp
4640e: 6000 fe68 braw 46278 <rtems_termios_read+0xbe>
static rtems_status_code
fillBufferPoll (struct rtems_termios_tty *tty)
{
int n;
if (tty->termios.c_lflag & ICANON) {
46412: 7002 moveq #2,%d0
46414: c0aa 003c andl %a2@(60),%d0
46418: 6740 beqs 4645a <rtems_termios_read+0x2a0>
4641a: 47fa fc58 lea %pc@(46074 <siproc>),%a3
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
if (n < 0) {
rtems_task_wake_after (1);
4641e: 263c 0004 7a40 movel #293440,%d3
{
int n;
if (tty->termios.c_lflag & ICANON) {
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
46424: 2f2a 0010 movel %a2@(16),%sp@-
46428: 4e90 jsr %a0@
if (n < 0) {
4642a: 588f addql #4,%sp
4642c: 4a80 tstl %d0
4642e: 6d1a blts 4644a <rtems_termios_read+0x290>
rtems_task_wake_after (1);
} else {
if (siproc (n, tty))
46430: 2f0a movel %a2,%sp@-
46432: 0280 0000 00ff andil #255,%d0
46438: 2f00 movel %d0,%sp@-
4643a: 4e93 jsr %a3@
4643c: 508f addql #8,%sp
4643e: 4a80 tstl %d0
46440: 6600 fdf0 bnew 46232 <rtems_termios_read+0x78>
46444: 206a 00a0 moveal %a2@(160),%a0
46448: 60da bras 46424 <rtems_termios_read+0x26a>
if (tty->termios.c_lflag & ICANON) {
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
if (n < 0) {
rtems_task_wake_after (1);
4644a: 4878 0001 pea 1 <ADD>
4644e: 2043 moveal %d3,%a0
46450: 4e90 jsr %a0@
46452: 206a 00a0 moveal %a2@(160),%a0
46456: 588f addql #4,%sp
46458: 60ca bras 46424 <rtems_termios_read+0x26a>
break;
}
}
rtems_task_wake_after (1);
} else {
siproc (n, tty);
4645a: 47fa fc18 lea %pc@(46074 <siproc>),%a3
}
}
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
4645e: 2a3c 0004 6d48 movel #290120,%d5
now = rtems_clock_get_ticks_since_boot();
if ((now - then) > tty->vtimeTicks) {
break;
}
}
rtems_task_wake_after (1);
46464: 263c 0004 7a40 movel #293440,%d3
}
}
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
4646a: 2245 moveal %d5,%a1
4646c: 4e91 jsr %a1@
4646e: 2c00 movel %d0,%d6
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
46470: 2f2a 0010 movel %a2@(16),%sp@-
46474: 206a 00a0 moveal %a2@(160),%a0
46478: 4e90 jsr %a0@
if (n < 0) {
4647a: 588f addql #4,%sp
4647c: 4a80 tstl %d0
4647e: 6d38 blts 464b8 <rtems_termios_read+0x2fe>
break;
}
}
rtems_task_wake_after (1);
} else {
siproc (n, tty);
46480: 2f0a movel %a2,%sp@-
46482: 0280 0000 00ff andil #255,%d0
46488: 2f00 movel %d0,%sp@-
4648a: 4e93 jsr %a3@
if (tty->ccount >= tty->termios.c_cc[VMIN])
4648c: 508f addql #8,%sp
4648e: 4281 clrl %d1
46490: 102a 0047 moveb %a2@(71),%d0
46494: 1200 moveb %d0,%d1
46496: b2aa 0020 cmpl %a2@(32),%d1
4649a: 6f00 fd96 blew 46232 <rtems_termios_read+0x78>
break;
if (tty->termios.c_cc[VMIN] && tty->termios.c_cc[VTIME])
4649e: 4a00 tstb %d0
464a0: 67ce beqs 46470 <rtems_termios_read+0x2b6> <== NEVER TAKEN
464a2: 4a2a 0046 tstb %a2@(70)
464a6: 66c2 bnes 4646a <rtems_termios_read+0x2b0> <== ALWAYS TAKEN
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
464a8: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
464ac: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
464b0: 4e90 jsr %a0@ <== NOT EXECUTED
if (n < 0) {
464b2: 588f addql #4,%sp <== NOT EXECUTED
464b4: 4a80 tstl %d0 <== NOT EXECUTED
464b6: 6cc8 bges 46480 <rtems_termios_read+0x2c6> <== NOT EXECUTED
if (tty->termios.c_cc[VMIN]) {
464b8: 4a2a 0047 tstb %a2@(71)
464bc: 6732 beqs 464f0 <rtems_termios_read+0x336> <== NEVER TAKEN
if (tty->termios.c_cc[VTIME] && tty->ccount) {
464be: 4a2a 0046 tstb %a2@(70)
464c2: 6706 beqs 464ca <rtems_termios_read+0x310> <== NEVER TAKEN
464c4: 4aaa 0020 tstl %a2@(32)
464c8: 660c bnes 464d6 <rtems_termios_read+0x31c>
now = rtems_clock_get_ticks_since_boot();
if ((now - then) > tty->vtimeTicks) {
break;
}
}
rtems_task_wake_after (1);
464ca: 4878 0001 pea 1 <ADD>
464ce: 2043 moveal %d3,%a0
464d0: 4e90 jsr %a0@
464d2: 588f addql #4,%sp
464d4: 609a bras 46470 <rtems_termios_read+0x2b6>
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
if (n < 0) {
if (tty->termios.c_cc[VMIN]) {
if (tty->termios.c_cc[VTIME] && tty->ccount) {
now = rtems_clock_get_ticks_since_boot();
464d6: 2245 moveal %d5,%a1
464d8: 4e91 jsr %a1@
if ((now - then) > tty->vtimeTicks) {
464da: 9086 subl %d6,%d0
464dc: b0aa 0054 cmpl %a2@(84),%d0
464e0: 6200 fd50 bhiw 46232 <rtems_termios_read+0x78>
now = rtems_clock_get_ticks_since_boot();
if ((now - then) > tty->vtimeTicks) {
break;
}
}
rtems_task_wake_after (1);
464e4: 4878 0001 pea 1 <ADD>
464e8: 2043 moveal %d3,%a0
464ea: 4e90 jsr %a0@
464ec: 588f addql #4,%sp
464ee: 6080 bras 46470 <rtems_termios_read+0x2b6>
if ((now - then) > tty->vtimeTicks) {
break;
}
}
} else {
if (!tty->termios.c_cc[VTIME])
464f0: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED
464f4: 6700 fd3c beqw 46232 <rtems_termios_read+0x78> <== NOT EXECUTED
break;
now = rtems_clock_get_ticks_since_boot();
464f8: 2045 moveal %d5,%a0 <== NOT EXECUTED
464fa: 4e90 jsr %a0@ <== NOT EXECUTED
if ((now - then) > tty->vtimeTicks) {
464fc: 9086 subl %d6,%d0 <== NOT EXECUTED
464fe: b0aa 0054 cmpl %a2@(84),%d0 <== NOT EXECUTED
46502: 6200 fd2e bhiw 46232 <rtems_termios_read+0x78> <== NOT EXECUTED
break;
}
}
rtems_task_wake_after (1);
46506: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4650a: 2043 moveal %d3,%a0 <== NOT EXECUTED
4650c: 4e90 jsr %a0@ <== NOT EXECUTED
4650e: 588f addql #4,%sp <== NOT EXECUTED
46510: 6000 ff5e braw 46470 <rtems_termios_read+0x2b6> <== NOT EXECUTED
00044b58 <rtems_termios_refill_transmitter>:
* in task-driven mode, this function is called in Tx task context
* in interrupt-driven mode, this function is called in TxIRQ context
*/
static int
rtems_termios_refill_transmitter (struct rtems_termios_tty *tty)
{
44b58: 4e56 fff4 linkw %fp,#-12
44b5c: 48d7 040c moveml %d2-%d3/%a2,%sp@
44b60: 246e 0008 moveal %fp@(8),%a2
int nToSend;
rtems_interrupt_level level;
int len;
/* check for XOF/XON to send */
if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))
44b64: 202a 00b8 movel %a2@(184),%d0
44b68: 0280 0000 0403 andil #1027,%d0
44b6e: 0c80 0000 0401 cmpil #1025,%d0
44b74: 6700 0140 beqw 44cb6 <rtems_termios_refill_transmitter+0x15e>
tty->flow_ctrl |= FL_ISNTXOF;
rtems_interrupt_enable(level);
nToSend = 1;
} else if ((tty->flow_ctrl & (FL_IREQXOF | FL_ISNTXOF)) == FL_ISNTXOF) {
44b78: 202a 00b8 movel %a2@(184),%d0
44b7c: 7603 moveq #3,%d3
44b7e: 7202 moveq #2,%d1
44b80: c083 andl %d3,%d0
44b82: b280 cmpl %d0,%d1
44b84: 6700 0172 beqw 44cf8 <rtems_termios_refill_transmitter+0x1a0>
tty->flow_ctrl &= ~FL_ISNTXOF;
rtems_interrupt_enable(level);
nToSend = 1;
} else {
if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {
44b88: 222a 0080 movel %a2@(128),%d1
44b8c: 202a 0084 movel %a2@(132),%d0
44b90: b081 cmpl %d1,%d0
44b92: 6700 009a beqw 44c2e <rtems_termios_refill_transmitter+0xd6>
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
}
return 0;
}
rtems_interrupt_disable(level);
44b96: 203c 0000 0700 movel #1792,%d0
44b9c: 40c2 movew %sr,%d2
44b9e: 8082 orl %d2,%d0
44ba0: 46c0 movew %d0,%sr
len = tty->t_dqlen;
44ba2: 222a 0090 movel %a2@(144),%d1
tty->t_dqlen = 0;
44ba6: 42aa 0090 clrl %a2@(144)
rtems_interrupt_enable(level);
44baa: 46c2 movew %d2,%sr
newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;
44bac: 202a 0084 movel %a2@(132),%d0
44bb0: d280 addl %d0,%d1
44bb2: 202a 0088 movel %a2@(136),%d0
44bb6: 4c40 1002 remul %d0,%d2,%d1
tty->rawOutBuf.Tail = newTail;
if (tty->rawOutBufState == rob_wait) {
44bba: 7002 moveq #2,%d0
len = tty->t_dqlen;
tty->t_dqlen = 0;
rtems_interrupt_enable(level);
newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;
tty->rawOutBuf.Tail = newTail;
44bbc: 2542 0084 movel %d2,%a2@(132)
if (tty->rawOutBufState == rob_wait) {
44bc0: b0aa 0094 cmpl %a2@(148),%d0
44bc4: 6700 00d8 beqw 44c9e <rtems_termios_refill_transmitter+0x146>
* wake up any pending writer task
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
}
if (newTail == tty->rawOutBuf.Head) {
44bc8: 202a 0080 movel %a2@(128),%d0
44bcc: b480 cmpl %d0,%d2
44bce: 6776 beqs 44c46 <rtems_termios_refill_transmitter+0xee>
if ( tty->tty_snd.sw_pfn != NULL) {
(*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);
}
}
/* check, whether output should stop due to received XOFF */
else if ((tty->flow_ctrl & (FL_MDXON | FL_ORCVXOF))
44bd0: 202a 00b8 movel %a2@(184),%d0
44bd4: 0280 0000 0210 andil #528,%d0
44bda: 0c80 0000 0210 cmpil #528,%d0
44be0: 6700 015a beqw 44d3c <rtems_termios_refill_transmitter+0x1e4>
nToSend = 0;
} else {
/*
* Buffer not empty, start tranmitter
*/
if (newTail > tty->rawOutBuf.Head)
44be4: 202a 0080 movel %a2@(128),%d0
44be8: b082 cmpl %d2,%d0
44bea: 647c bccs 44c68 <rtems_termios_refill_transmitter+0x110>
nToSend = tty->rawOutBuf.Size - newTail;
44bec: 262a 0088 movel %a2@(136),%d3
44bf0: 9682 subl %d2,%d3
else
nToSend = tty->rawOutBuf.Head - newTail;
/* when flow control XON or XOF, don't send blocks of data */
/* to allow fast reaction on incoming flow ctrl and low latency*/
/* for outgoing flow control */
if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {
44bf2: 202a 00b8 movel %a2@(184),%d0
44bf6: 0280 0000 0600 andil #1536,%d0
44bfc: 667c bnes 44c7a <rtems_termios_refill_transmitter+0x122><== NEVER TAKEN
44bfe: 2003 movel %d3,%d0
nToSend = 1;
}
tty->rawOutBufState = rob_busy; /*apm*/
44c00: 7201 moveq #1,%d1
(*tty->device.write)(
44c02: 2f00 movel %d0,%sp@-
44c04: 202a 007c movel %a2@(124),%d0
44c08: d082 addl %d2,%d0
44c0a: 2f00 movel %d0,%sp@-
44c0c: 2f2a 0010 movel %a2@(16),%sp@-
44c10: 206a 00a4 moveal %a2@(164),%a0
/* to allow fast reaction on incoming flow ctrl and low latency*/
/* for outgoing flow control */
if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {
nToSend = 1;
}
tty->rawOutBufState = rob_busy; /*apm*/
44c14: 2541 0094 movel %d1,%a2@(148)
(*tty->device.write)(
44c18: 4e90 jsr %a0@
44c1a: 4fef 000c lea %sp@(12),%sp
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
44c1e: 2542 0084 movel %d2,%a2@(132)
}
return nToSend;
}
44c22: 2003 movel %d3,%d0
44c24: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
44c2a: 4e5e unlk %fp
44c2c: 4e75 rts
} else {
if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {
/*
* buffer was empty
*/
if (tty->rawOutBufState == rob_wait) {
44c2e: 7602 moveq #2,%d3
44c30: b6aa 0094 cmpl %a2@(148),%d3
44c34: 6700 0130 beqw 44d66 <rtems_termios_refill_transmitter+0x20e>
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
}
return 0;
44c38: 4283 clrl %d3
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
44c3a: 2003 movel %d3,%d0
44c3c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
44c42: 4e5e unlk %fp
44c44: 4e75 rts
nToSend = 0;
/*
* check to see if snd wakeup callback was set
*/
if ( tty->tty_snd.sw_pfn != NULL) {
44c46: 206a 00d4 moveal %a2@(212),%a0
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
44c4a: 42aa 0094 clrl %a2@(148)
nToSend = 0;
/*
* check to see if snd wakeup callback was set
*/
if ( tty->tty_snd.sw_pfn != NULL) {
44c4e: 4a88 tstl %a0
44c50: 6700 012e beqw 44d80 <rtems_termios_refill_transmitter+0x228>
(*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);
44c54: 2f2a 00d8 movel %a2@(216),%sp@- <== NOT EXECUTED
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
nToSend = 0;
44c58: 4283 clrl %d3 <== NOT EXECUTED
/*
* check to see if snd wakeup callback was set
*/
if ( tty->tty_snd.sw_pfn != NULL) {
(*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);
44c5a: 486a 0030 pea %a2@(48) <== NOT EXECUTED
44c5e: 4e90 jsr %a0@ <== NOT EXECUTED
44c60: 508f addql #8,%sp <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy; /*apm*/
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
44c62: 2542 0084 movel %d2,%a2@(132) <== NOT EXECUTED
44c66: 60ba bras 44c22 <rtems_termios_refill_transmitter+0xca><== NOT EXECUTED
* Buffer not empty, start tranmitter
*/
if (newTail > tty->rawOutBuf.Head)
nToSend = tty->rawOutBuf.Size - newTail;
else
nToSend = tty->rawOutBuf.Head - newTail;
44c68: 262a 0080 movel %a2@(128),%d3
44c6c: 9682 subl %d2,%d3
/* when flow control XON or XOF, don't send blocks of data */
/* to allow fast reaction on incoming flow ctrl and low latency*/
/* for outgoing flow control */
if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {
44c6e: 202a 00b8 movel %a2@(184),%d0
44c72: 0280 0000 0600 andil #1536,%d0
44c78: 6784 beqs 44bfe <rtems_termios_refill_transmitter+0xa6>
44c7a: 7001 moveq #1,%d0
nToSend = 1;
}
tty->rawOutBufState = rob_busy; /*apm*/
44c7c: 7201 moveq #1,%d1
nToSend = tty->rawOutBuf.Head - newTail;
/* when flow control XON or XOF, don't send blocks of data */
/* to allow fast reaction on incoming flow ctrl and low latency*/
/* for outgoing flow control */
if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {
nToSend = 1;
44c7e: 7601 moveq #1,%d3
}
tty->rawOutBufState = rob_busy; /*apm*/
(*tty->device.write)(
44c80: 2f00 movel %d0,%sp@-
44c82: 202a 007c movel %a2@(124),%d0
44c86: d082 addl %d2,%d0
44c88: 2f00 movel %d0,%sp@-
44c8a: 2f2a 0010 movel %a2@(16),%sp@-
44c8e: 206a 00a4 moveal %a2@(164),%a0
/* to allow fast reaction on incoming flow ctrl and low latency*/
/* for outgoing flow control */
if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {
nToSend = 1;
}
tty->rawOutBufState = rob_busy; /*apm*/
44c92: 2541 0094 movel %d1,%a2@(148)
(*tty->device.write)(
44c96: 4e90 jsr %a0@
44c98: 4fef 000c lea %sp@(12),%sp
44c9c: 6080 bras 44c1e <rtems_termios_refill_transmitter+0xc6>
tty->rawOutBuf.Tail = newTail;
if (tty->rawOutBufState == rob_wait) {
/*
* wake up any pending writer task
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
44c9e: 2f2a 008c movel %a2@(140),%sp@-
44ca2: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
}
if (newTail == tty->rawOutBuf.Head) {
44ca8: 202a 0080 movel %a2@(128),%d0
tty->rawOutBuf.Tail = newTail;
if (tty->rawOutBufState == rob_wait) {
/*
* wake up any pending writer task
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
44cac: 588f addql #4,%sp
}
if (newTail == tty->rawOutBuf.Head) {
44cae: b480 cmpl %d0,%d2
44cb0: 6600 ff1e bnew 44bd0 <rtems_termios_refill_transmitter+0x78>
44cb4: 6090 bras 44c46 <rtems_termios_refill_transmitter+0xee>
/* check for XOF/XON to send */
if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))
== (FL_MDXOF | FL_IREQXOF)) {
/* XOFF should be sent now... */
(*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTOP]), 1);
44cb6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44cba: 486a 004a pea %a2@(74) <== NOT EXECUTED
44cbe: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44cc2: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
44cc6: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_interrupt_disable(level);
44cc8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
44cce: 40c1 movew %sr,%d1 <== NOT EXECUTED
44cd0: 8081 orl %d1,%d0 <== NOT EXECUTED
44cd2: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->t_dqlen--;
tty->flow_ctrl |= FL_ISNTXOF;
44cd4: 7402 moveq #2,%d2 <== NOT EXECUTED
== (FL_MDXOF | FL_IREQXOF)) {
/* XOFF should be sent now... */
(*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTOP]), 1);
rtems_interrupt_disable(level);
tty->t_dqlen--;
44cd6: 53aa 0090 subql #1,%a2@(144) <== NOT EXECUTED
tty->flow_ctrl |= FL_ISNTXOF;
44cda: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44cde: 8082 orl %d2,%d0 <== NOT EXECUTED
44ce0: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
rtems_interrupt_enable(level);
44ce4: 46c1 movew %d1,%sr <== NOT EXECUTED
nToSend = 1;
44ce6: 7601 moveq #1,%d3 <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
44ce8: 2003 movel %d3,%d0 <== NOT EXECUTED
(*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTOP]), 1);
rtems_interrupt_disable(level);
tty->t_dqlen--;
tty->flow_ctrl |= FL_ISNTXOF;
rtems_interrupt_enable(level);
44cea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
44cee: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44cf4: 4e5e unlk %fp <== NOT EXECUTED
44cf6: 4e75 rts <== NOT EXECUTED
* FIXME: this .write call will generate another
* dequeue callback. This will advance the "Tail" in the data
* buffer, although the corresponding data is not yet out!
* Therefore the dequeue "length" should be reduced by 1
*/
(*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
44cf8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44cfc: 486a 0049 pea %a2@(73) <== NOT EXECUTED
44d00: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44d04: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
44d08: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_interrupt_disable(level);
44d0a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
44d10: 40c1 movew %sr,%d1 <== NOT EXECUTED
44d12: 8081 orl %d1,%d0 <== NOT EXECUTED
44d14: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->t_dqlen--;
tty->flow_ctrl &= ~FL_ISNTXOF;
44d16: 74fd moveq #-3,%d2 <== NOT EXECUTED
* Therefore the dequeue "length" should be reduced by 1
*/
(*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
rtems_interrupt_disable(level);
tty->t_dqlen--;
44d18: 53aa 0090 subql #1,%a2@(144) <== NOT EXECUTED
tty->flow_ctrl &= ~FL_ISNTXOF;
44d1c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44d20: c082 andl %d2,%d0 <== NOT EXECUTED
44d22: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
rtems_interrupt_enable(level);
44d26: 46c1 movew %d1,%sr <== NOT EXECUTED
nToSend = 1;
44d28: 163c 0001 moveb #1,%d3 <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
44d2c: 2003 movel %d3,%d0 <== NOT EXECUTED
(*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
rtems_interrupt_disable(level);
tty->t_dqlen--;
tty->flow_ctrl &= ~FL_ISNTXOF;
rtems_interrupt_enable(level);
44d2e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
44d32: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44d38: 4e5e unlk %fp <== NOT EXECUTED
44d3a: 4e75 rts <== NOT EXECUTED
/* check, whether output should stop due to received XOFF */
else if ((tty->flow_ctrl & (FL_MDXON | FL_ORCVXOF))
== (FL_MDXON | FL_ORCVXOF)) {
/* Buffer not empty, but output stops due to XOFF */
/* set flag, that output has been stopped */
rtems_interrupt_disable(level);
44d3c: 303c 0700 movew #1792,%d0 <== NOT EXECUTED
44d40: 40c1 movew %sr,%d1 <== NOT EXECUTED
44d42: 8081 orl %d1,%d0 <== NOT EXECUTED
44d44: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl |= FL_OSTOP;
44d46: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44d4a: 7620 moveq #32,%d3 <== NOT EXECUTED
44d4c: 8083 orl %d3,%d0 <== NOT EXECUTED
tty->rawOutBufState = rob_busy; /*apm*/
44d4e: 163c 0001 moveb #1,%d3 <== NOT EXECUTED
else if ((tty->flow_ctrl & (FL_MDXON | FL_ORCVXOF))
== (FL_MDXON | FL_ORCVXOF)) {
/* Buffer not empty, but output stops due to XOFF */
/* set flag, that output has been stopped */
rtems_interrupt_disable(level);
tty->flow_ctrl |= FL_OSTOP;
44d52: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
tty->rawOutBufState = rob_busy; /*apm*/
44d56: 2543 0094 movel %d3,%a2@(148) <== NOT EXECUTED
rtems_interrupt_enable(level);
44d5a: 46c1 movew %d1,%sr <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy; /*apm*/
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
44d5c: 2542 0084 movel %d2,%a2@(132) <== NOT EXECUTED
/* set flag, that output has been stopped */
rtems_interrupt_disable(level);
tty->flow_ctrl |= FL_OSTOP;
tty->rawOutBufState = rob_busy; /*apm*/
rtems_interrupt_enable(level);
nToSend = 0;
44d60: 4203 clrb %d3 <== NOT EXECUTED
44d62: 6000 febe braw 44c22 <rtems_termios_refill_transmitter+0xca><== NOT EXECUTED
*/
if (tty->rawOutBufState == rob_wait) {
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
44d66: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED
}
return 0;
44d6a: 4203 clrb %d3 <== NOT EXECUTED
*/
if (tty->rawOutBufState == rob_wait) {
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
44d6c: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release> <== NOT EXECUTED
44d72: 588f addql #4,%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
44d74: 2003 movel %d3,%d0 <== NOT EXECUTED
44d76: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44d7c: 4e5e unlk %fp <== NOT EXECUTED
44d7e: 4e75 rts <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy; /*apm*/
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
44d80: 2542 0084 movel %d2,%a2@(132)
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
nToSend = 0;
44d84: 4283 clrl %d3
44d86: 6000 fe9a braw 44c22 <rtems_termios_refill_transmitter+0xca>
000467fa <rtems_termios_rxdaemon>:
/*
* this task actually processes any receive events
*/
static rtems_task rtems_termios_rxdaemon(rtems_task_argument argument)
{
467fa: 4e56 ffe0 linkw %fp,#-32
467fe: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
46802: 240e movel %fp,%d2
46804: 260e movel %fp,%d3
46806: 5982 subql #4,%d2
46808: 47f9 0004 6db0 lea 46db0 <rtems_event_receive>,%a3
4680e: 49f9 0004 7824 lea 47824 <rtems_task_delete>,%a4
46814: 5b83 subql #5,%d3
46816: 4bf9 0004 6530 lea 46530 <rtems_termios_enqueue_raw_characters>,%a5
4681c: 246e 0008 moveal %fp@(8),%a2
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
46820: 2f02 movel %d2,%sp@-
46822: 42a7 clrl %sp@-
46824: 4878 0002 pea 2 <DOUBLE_FLOAT>
46828: 4878 0003 pea 3 <DIVIDE>
4682c: 4e93 jsr %a3@
(TERMIOS_RX_PROC_EVENT | TERMIOS_RX_TERMINATE_EVENT),
RTEMS_EVENT_ANY | RTEMS_WAIT,
RTEMS_NO_TIMEOUT,
&the_event
);
if ((the_event & TERMIOS_RX_TERMINATE_EVENT) != 0) {
4682e: 4fef 0010 lea %sp@(16),%sp
46832: 7001 moveq #1,%d0
46834: c0ae fffc andl %fp@(-4),%d0
46838: 663e bnes 46878 <rtems_termios_rxdaemon+0x7e> <== NEVER TAKEN
}
/*
* do something
*/
c = tty->device.pollRead(tty->minor);
4683a: 2f2a 0010 movel %a2@(16),%sp@-
4683e: 206a 00a0 moveal %a2@(160),%a0
46842: 4e90 jsr %a0@
if (c != EOF) {
46844: 588f addql #4,%sp
46846: 72ff moveq #-1,%d1
46848: b280 cmpl %d0,%d1
4684a: 67d4 beqs 46820 <rtems_termios_rxdaemon+0x26>
/*
* pollRead did call enqueue on its own
*/
c_buf = c;
rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);
4684c: 4878 0001 pea 1 <ADD>
c = tty->device.pollRead(tty->minor);
if (c != EOF) {
/*
* pollRead did call enqueue on its own
*/
c_buf = c;
46850: 1d40 fffb moveb %d0,%fp@(-5)
rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);
46854: 2f03 movel %d3,%sp@-
46856: 2f0a movel %a2,%sp@-
46858: 4e95 jsr %a5@
4685a: 4fef 000c lea %sp@(12),%sp
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
4685e: 2f02 movel %d2,%sp@-
46860: 42a7 clrl %sp@-
46862: 4878 0002 pea 2 <DOUBLE_FLOAT>
46866: 4878 0003 pea 3 <DIVIDE>
4686a: 4e93 jsr %a3@
(TERMIOS_RX_PROC_EVENT | TERMIOS_RX_TERMINATE_EVENT),
RTEMS_EVENT_ANY | RTEMS_WAIT,
RTEMS_NO_TIMEOUT,
&the_event
);
if ((the_event & TERMIOS_RX_TERMINATE_EVENT) != 0) {
4686c: 4fef 0010 lea %sp@(16),%sp
46870: 7001 moveq #1,%d0
46872: c0ae fffc andl %fp@(-4),%d0
46876: 67c2 beqs 4683a <rtems_termios_rxdaemon+0x40> <== ALWAYS TAKEN
tty->rxTaskId = 0;
46878: 42aa 00c4 clrl %a2@(196) <== NOT EXECUTED
rtems_task_delete(RTEMS_SELF);
4687c: 42a7 clrl %sp@- <== NOT EXECUTED
4687e: 4e94 jsr %a4@ <== NOT EXECUTED
46880: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* do something
*/
c = tty->device.pollRead(tty->minor);
46882: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
46886: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
4688a: 4e90 jsr %a0@ <== NOT EXECUTED
if (c != EOF) {
4688c: 588f addql #4,%sp <== NOT EXECUTED
4688e: 72ff moveq #-1,%d1 <== NOT EXECUTED
46890: b280 cmpl %d0,%d1 <== NOT EXECUTED
46892: 678c beqs 46820 <rtems_termios_rxdaemon+0x26> <== NOT EXECUTED
46894: 60b6 bras 4684c <rtems_termios_rxdaemon+0x52> <== NOT EXECUTED
00044d8a <rtems_termios_txdaemon>:
/*
* this task actually processes any transmit events
*/
static rtems_task rtems_termios_txdaemon(rtems_task_argument argument)
{
44d8a: 4e56 ffe8 linkw %fp,#-24
44d8e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
44d92: 240e movel %fp,%d2
44d94: 5982 subql #4,%d2
44d96: 49f9 0004 6db0 lea 46db0 <rtems_event_receive>,%a4
44d9c: 4bf9 0004 7824 lea 47824 <rtems_task_delete>,%a5
44da2: 47fa fdb4 lea %pc@(44b58 <rtems_termios_refill_transmitter>),%a3
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
44da6: 2f02 movel %d2,%sp@-
/*
* this task actually processes any transmit events
*/
static rtems_task rtems_termios_txdaemon(rtems_task_argument argument)
{
44da8: 246e 0008 moveal %fp@(8),%a2
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
44dac: 42a7 clrl %sp@-
44dae: 4878 0002 pea 2 <DOUBLE_FLOAT>
44db2: 4878 0003 pea 3 <DIVIDE>
44db6: 4e94 jsr %a4@
(TERMIOS_TX_START_EVENT | TERMIOS_TX_TERMINATE_EVENT),
RTEMS_EVENT_ANY | RTEMS_WAIT,
RTEMS_NO_TIMEOUT,
&the_event
);
if ((the_event & TERMIOS_TX_TERMINATE_EVENT) != 0) {
44db8: 4fef 0010 lea %sp@(16),%sp
44dbc: 7001 moveq #1,%d0
44dbe: c0ae fffc andl %fp@(-4),%d0
44dc2: 663a bnes 44dfe <rtems_termios_txdaemon+0x74> <== NEVER TAKEN
}
/*
* call any line discipline start function
*/
if (rtems_termios_linesw[tty->t_line].l_start != NULL) {
44dc4: 202a 00cc movel %a2@(204),%d0
44dc8: eb88 lsll #5,%d0
44dca: 0680 0005 f110 addil #389392,%d0
44dd0: 2240 moveal %d0,%a1
44dd2: 2051 moveal %a1@,%a0
44dd4: 4a88 tstl %a0
44dd6: 6706 beqs 44dde <rtems_termios_txdaemon+0x54> <== ALWAYS TAKEN
rtems_termios_linesw[tty->t_line].l_start(tty);
44dd8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44dda: 4e90 jsr %a0@ <== NOT EXECUTED
44ddc: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* try to push further characters to device
*/
rtems_termios_refill_transmitter(tty);
44dde: 2f0a movel %a2,%sp@-
44de0: 4e93 jsr %a3@
}
44de2: 588f addql #4,%sp
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
44de4: 2f02 movel %d2,%sp@-
44de6: 42a7 clrl %sp@-
44de8: 4878 0002 pea 2 <DOUBLE_FLOAT>
44dec: 4878 0003 pea 3 <DIVIDE>
44df0: 4e94 jsr %a4@
(TERMIOS_TX_START_EVENT | TERMIOS_TX_TERMINATE_EVENT),
RTEMS_EVENT_ANY | RTEMS_WAIT,
RTEMS_NO_TIMEOUT,
&the_event
);
if ((the_event & TERMIOS_TX_TERMINATE_EVENT) != 0) {
44df2: 4fef 0010 lea %sp@(16),%sp
44df6: 7001 moveq #1,%d0
44df8: c0ae fffc andl %fp@(-4),%d0
44dfc: 67c6 beqs 44dc4 <rtems_termios_txdaemon+0x3a> <== ALWAYS TAKEN
tty->txTaskId = 0;
44dfe: 42aa 00c8 clrl %a2@(200) <== NOT EXECUTED
rtems_task_delete(RTEMS_SELF);
44e02: 42a7 clrl %sp@- <== NOT EXECUTED
44e04: 4e95 jsr %a5@ <== NOT EXECUTED
44e06: 588f addql #4,%sp <== NOT EXECUTED
44e08: 60ba bras 44dc4 <rtems_termios_txdaemon+0x3a> <== NOT EXECUTED
000460e4 <rtems_termios_write>:
rtems_termios_puts (&c, 1, tty);
}
rtems_status_code
rtems_termios_write (void *arg)
{
460e4: 4e56 ffe8 linkw %fp,#-24
460e8: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
460ec: 286e 0008 moveal %fp@(8),%a4
rtems_libio_rw_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
460f0: 2054 moveal %a4@,%a0
460f2: 2468 002c moveal %a0@(44),%a2
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
460f6: 42a7 clrl %sp@-
460f8: 42a7 clrl %sp@-
460fa: 2f2a 0018 movel %a2@(24),%sp@-
460fe: 4eb9 0004 7458 jsr 47458 <rtems_semaphore_obtain>
if (sc != RTEMS_SUCCESSFUL)
46104: 4fef 000c lea %sp@(12),%sp
{
rtems_libio_rw_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
46108: 2600 movel %d0,%d3
if (sc != RTEMS_SUCCESSFUL)
4610a: 662a bnes 46136 <rtems_termios_write+0x52> <== NEVER TAKEN
return sc;
if (rtems_termios_linesw[tty->t_line].l_write != NULL) {
4610c: 222a 00cc movel %a2@(204),%d1
46110: eb89 lsll #5,%d1
46112: 0681 0005 f108 addil #389384,%d1
46118: 2241 moveal %d1,%a1
4611a: 2051 moveal %a1@,%a0
4611c: 4a88 tstl %a0
4611e: 6722 beqs 46142 <rtems_termios_write+0x5e>
sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);
46120: 2f0c movel %a4,%sp@-
46122: 2f0a movel %a2,%sp@-
46124: 4e90 jsr %a0@
rtems_semaphore_release (tty->osem);
46126: 2f2a 0018 movel %a2@(24),%sp@-
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
return sc;
if (rtems_termios_linesw[tty->t_line].l_write != NULL) {
sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);
4612a: 2600 movel %d0,%d3
rtems_semaphore_release (tty->osem);
4612c: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
46132: 4fef 000c lea %sp@(12),%sp
rtems_termios_puts (args->buffer, args->count, tty);
args->bytes_moved = args->count;
}
rtems_semaphore_release (tty->osem);
return sc;
}
46136: 2003 movel %d3,%d0
46138: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4613e: 4e5e unlk %fp
46140: 4e75 rts
if (rtems_termios_linesw[tty->t_line].l_write != NULL) {
sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);
rtems_semaphore_release (tty->osem);
return sc;
}
if (tty->termios.c_oflag & OPOST) {
46142: 7001 moveq #1,%d0
46144: c0aa 0034 andl %a2@(52),%d0
46148: 6740 beqs 4618a <rtems_termios_write+0xa6> <== NEVER TAKEN
uint32_t count = args->count;
4614a: 242c 0010 movel %a4@(16),%d2
char *buffer = args->buffer;
4614e: 266c 000c moveal %a4@(12),%a3
while (count--)
46152: 675e beqs 461b2 <rtems_termios_write+0xce> <== NEVER TAKEN
46154: 4bfa f902 lea %pc@(45a58 <oproc>),%a5
oproc (*buffer++, tty);
46158: 4281 clrl %d1
4615a: 121b moveb %a3@+,%d1
4615c: 5382 subql #1,%d2
4615e: 2f0a movel %a2,%sp@-
46160: 2f01 movel %d1,%sp@-
46162: 4e95 jsr %a5@
return sc;
}
if (tty->termios.c_oflag & OPOST) {
uint32_t count = args->count;
char *buffer = args->buffer;
while (count--)
46164: 508f addql #8,%sp
46166: 4a82 tstl %d2
46168: 66ee bnes 46158 <rtems_termios_write+0x74>
4616a: 202c 0010 movel %a4@(16),%d0
oproc (*buffer++, tty);
args->bytes_moved = args->count;
4616e: 2940 0018 movel %d0,%a4@(24)
} else {
rtems_termios_puts (args->buffer, args->count, tty);
args->bytes_moved = args->count;
}
rtems_semaphore_release (tty->osem);
46172: 2f2a 0018 movel %a2@(24),%sp@-
46176: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
return sc;
4617c: 588f addql #4,%sp
}
4617e: 2003 movel %d3,%d0
46180: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
46186: 4e5e unlk %fp
46188: 4e75 rts
char *buffer = args->buffer;
while (count--)
oproc (*buffer++, tty);
args->bytes_moved = args->count;
} else {
rtems_termios_puts (args->buffer, args->count, tty);
4618a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4618c: 2f2c 0010 movel %a4@(16),%sp@- <== NOT EXECUTED
46190: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED
46194: 4eb9 0004 5954 jsr 45954 <rtems_termios_puts> <== NOT EXECUTED
args->bytes_moved = args->count;
4619a: 296c 0010 0018 movel %a4@(16),%a4@(24) <== NOT EXECUTED
461a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
rtems_semaphore_release (tty->osem);
461a4: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
461a8: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
461ae: 588f addql #4,%sp <== NOT EXECUTED
461b0: 60cc bras 4617e <rtems_termios_write+0x9a> <== NOT EXECUTED
return sc;
}
if (tty->termios.c_oflag & OPOST) {
uint32_t count = args->count;
char *buffer = args->buffer;
while (count--)
461b2: 4280 clrl %d0 <== NOT EXECUTED
oproc (*buffer++, tty);
args->bytes_moved = args->count;
461b4: 2940 0018 movel %d0,%a4@(24) <== NOT EXECUTED
461b8: 60b8 bras 46172 <rtems_termios_write+0x8e> <== NOT EXECUTED
000573b8 <rtems_timer_cancel>:
*/
rtems_status_code rtems_timer_cancel(
rtems_id id
)
{
573b8: 4e56 fffc linkw %fp,#-4
RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
573bc: 486e fffc pea %fp@(-4)
573c0: 2f2e 0008 movel %fp@(8),%sp@-
573c4: 4879 0007 c4fc pea 7c4fc <_Timer_Information>
573ca: 4eb9 0005 a480 jsr 5a480 <_Objects_Get>
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
573d0: 4fef 000c lea %sp@(12),%sp
573d4: 4aae fffc tstl %fp@(-4)
573d8: 6622 bnes 573fc <rtems_timer_cancel+0x44>
case OBJECTS_LOCAL:
if ( !_Timer_Is_dormant_class( the_timer->the_class ) )
573da: 7204 moveq #4,%d1
573dc: 2040 moveal %d0,%a0
573de: b2a8 0038 cmpl %a0@(56),%d1
573e2: 670c beqs 573f0 <rtems_timer_cancel+0x38> <== NEVER TAKEN
(void) _Watchdog_Remove( &the_timer->Ticker );
573e4: 4868 0010 pea %a0@(16)
573e8: 4eb9 0005 c128 jsr 5c128 <_Watchdog_Remove>
573ee: 588f addql #4,%sp
_Thread_Enable_dispatch();
573f0: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
573f6: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
573f8: 4e5e unlk %fp
573fa: 4e75 rts
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
573fc: 7004 moveq #4,%d0
}
573fe: 4e5e unlk %fp
...
000577b4 <rtems_timer_reset>:
*/
rtems_status_code rtems_timer_reset(
rtems_id id
)
{
577b4: 4e56 fff0 linkw %fp,#-16
577b8: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
577bc: 486e fffc pea %fp@(-4)
577c0: 2f2e 0008 movel %fp@(8),%sp@-
577c4: 4879 0007 c4fc pea 7c4fc <_Timer_Information>
577ca: 4eb9 0005 a480 jsr 5a480 <_Objects_Get>
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
577d0: 4fef 000c lea %sp@(12),%sp
577d4: 2440 moveal %d0,%a2
577d6: 4aae fffc tstl %fp@(-4)
577da: 6620 bnes 577fc <rtems_timer_reset+0x48>
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
577dc: 202a 0038 movel %a2@(56),%d0
577e0: 6728 beqs 5780a <rtems_timer_reset+0x56>
_Watchdog_Remove( &the_timer->Ticker );
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
} else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) {
577e2: 7201 moveq #1,%d1
577e4: b280 cmpl %d0,%d1
577e6: 674a beqs 57832 <rtems_timer_reset+0x7e>
/*
* Must be dormant or time of day timer (e.g. TIMER_DORMANT,
* TIMER_TIME_OF_DAY, or TIMER_TIME_OF_DAY_ON_TASK). We
* can only reset active interval timers.
*/
status = RTEMS_NOT_DEFINED;
577e8: 740b moveq #11,%d2
}
_Thread_Enable_dispatch();
577ea: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
577f0: 2002 movel %d2,%d0
577f2: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
577f8: 4e5e unlk %fp
577fa: 4e75 rts
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
577fc: 7404 moveq #4,%d2
}
577fe: 2002 movel %d2,%d0
57800: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
57806: 4e5e unlk %fp
57808: 4e75 rts
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
_Watchdog_Remove( &the_timer->Ticker );
5780a: 45ea 0010 lea %a2@(16),%a2
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
5780e: 4282 clrl %d2
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
_Watchdog_Remove( &the_timer->Ticker );
57810: 2f0a movel %a2,%sp@-
57812: 4eb9 0005 c128 jsr 5c128 <_Watchdog_Remove>
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
57818: 2f0a movel %a2,%sp@-
5781a: 4879 0007 c39e pea 7c39e <_Watchdog_Ticks_chain>
57820: 4eb9 0005 bff8 jsr 5bff8 <_Watchdog_Insert>
57826: 4fef 000c lea %sp@(12),%sp
* TIMER_TIME_OF_DAY, or TIMER_TIME_OF_DAY_ON_TASK). We
* can only reset active interval timers.
*/
status = RTEMS_NOT_DEFINED;
}
_Thread_Enable_dispatch();
5782a: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
57830: 60be bras 577f0 <rtems_timer_reset+0x3c>
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
57832: 486a 0010 pea %a2@(16)
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
57836: 4282 clrl %d2
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
_Watchdog_Remove( &the_timer->Ticker );
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
} else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) {
Timer_server_Control *timer_server = _Timer_server;
57838: 2679 0007 c534 moveal 7c534 <_Timer_server>,%a3
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
5783e: 4eb9 0005 c128 jsr 5c128 <_Watchdog_Remove>
(*timer_server->schedule_operation)( timer_server, the_timer );
57844: 2f0a movel %a2,%sp@-
57846: 2f0b movel %a3,%sp@-
57848: 206b 0004 moveal %a3@(4),%a0
5784c: 4e90 jsr %a0@
5784e: 4fef 000c lea %sp@(12),%sp
* TIMER_TIME_OF_DAY, or TIMER_TIME_OF_DAY_ON_TASK). We
* can only reset active interval timers.
*/
status = RTEMS_NOT_DEFINED;
}
_Thread_Enable_dispatch();
57852: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
57858: 6096 bras 577f0 <rtems_timer_reset+0x3c>
...
00057954 <rtems_timer_server_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
57954: 4e56 ffec linkw %fp,#-20
57958: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
Timer_Control *the_timer;
Objects_Locations location;
rtems_interval seconds;
Timer_server_Control *timer_server = _Timer_server;
5795c: 2479 0007 c534 moveal 7c534 <_Timer_server>,%a2
if ( !timer_server )
57962: 4a8a tstl %a2
57964: 6736 beqs 5799c <rtems_timer_server_fire_when+0x48>
return RTEMS_INCORRECT_STATE;
if ( !_TOD.is_set )
57966: 4a39 0007 c2b8 tstb 7c2b8 <_TOD+0x14>
5796c: 660c bnes 5797a <rtems_timer_server_fire_when+0x26><== ALWAYS TAKEN
return RTEMS_NOT_DEFINED;
5796e: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57970: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED
57976: 4e5e unlk %fp <== NOT EXECUTED
57978: 4e75 rts <== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !_TOD.is_set )
return RTEMS_NOT_DEFINED;
if ( !routine )
5797a: 4aae 0010 tstl %fp@(16)
5797e: 6728 beqs 579a8 <rtems_timer_server_fire_when+0x54>
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
57980: 2f2e 000c movel %fp@(12),%sp@-
57984: 4eb9 0005 44b4 jsr 544b4 <_TOD_Validate>
5798a: 588f addql #4,%sp
5798c: 4a00 tstb %d0
5798e: 6624 bnes 579b4 <rtems_timer_server_fire_when+0x60>
return RTEMS_INVALID_CLOCK;
57990: 7014 moveq #20,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57992: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
57998: 4e5e unlk %fp
5799a: 4e75 rts
Objects_Locations location;
rtems_interval seconds;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
5799c: 700e moveq #14,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5799e: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
579a4: 4e5e unlk %fp
579a6: 4e75 rts
if ( !_TOD.is_set )
return RTEMS_NOT_DEFINED;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
579a8: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
579aa: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
579b0: 4e5e unlk %fp
579b2: 4e75 rts
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
579b4: 2f2e 000c movel %fp@(12),%sp@-
579b8: 47f9 0006 c3c0 lea 6c3c0 <__divdi3>,%a3
579be: 4eb9 0005 4410 jsr 54410 <_TOD_To_seconds>
579c4: 2400 movel %d0,%d2
579c6: 2f3c 3b9a ca00 movel #1000000000,%sp@-
579cc: 42a7 clrl %sp@-
579ce: 2f39 0007 c2a8 movel 7c2a8 <_TOD+0x4>,%sp@-
579d4: 2f39 0007 c2a4 movel 7c2a4 <_TOD>,%sp@-
579da: 4e93 jsr %a3@
if ( seconds <= _TOD_Seconds_since_epoch() )
579dc: 4fef 0014 lea %sp@(20),%sp
579e0: b282 cmpl %d2,%d1
579e2: 64ac bccs 57990 <rtems_timer_server_fire_when+0x3c>
579e4: 486e fffc pea %fp@(-4)
579e8: 2f2e 0008 movel %fp@(8),%sp@-
579ec: 4879 0007 c4fc pea 7c4fc <_Timer_Information>
579f2: 4eb9 0005 a480 jsr 5a480 <_Objects_Get>
return RTEMS_INVALID_CLOCK;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
579f8: 4fef 000c lea %sp@(12),%sp
579fc: 2840 moveal %d0,%a4
579fe: 4aae fffc tstl %fp@(-4)
57a02: 666a bnes 57a6e <rtems_timer_server_fire_when+0x11a>
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
57a04: 486c 0010 pea %a4@(16)
57a08: 4eb9 0005 c128 jsr 5c128 <_Watchdog_Remove>
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
57a0e: 296e 0014 0034 movel %fp@(20),%a4@(52)
the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;
57a14: 7003 moveq #3,%d0
57a16: 2940 0038 movel %d0,%a4@(56)
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
57a1a: 202e 0010 movel %fp@(16),%d0
57a1e: 2940 002c movel %d0,%a4@(44)
the_watchdog->id = id;
57a22: 202e 0008 movel %fp@(8),%d0
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
57a26: 42ac 0018 clrl %a4@(24)
the_watchdog->routine = routine;
the_watchdog->id = id;
57a2a: 2940 0030 movel %d0,%a4@(48)
57a2e: 2f3c 3b9a ca00 movel #1000000000,%sp@-
57a34: 42a7 clrl %sp@-
57a36: 2f39 0007 c2a8 movel 7c2a8 <_TOD+0x4>,%sp@-
57a3c: 2f39 0007 c2a4 movel 7c2a4 <_TOD>,%sp@-
57a42: 4e93 jsr %a3@
57a44: 4fef 0010 lea %sp@(16),%sp
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
57a48: 9481 subl %d1,%d2
57a4a: 2942 001c movel %d2,%a4@(28)
(*timer_server->schedule_operation)( timer_server, the_timer );
57a4e: 2f0c movel %a4,%sp@-
57a50: 2f0a movel %a2,%sp@-
57a52: 206a 0004 moveal %a2@(4),%a0
57a56: 4e90 jsr %a0@
_Thread_Enable_dispatch();
57a58: 4eb9 0005 b1e8 jsr 5b1e8 <_Thread_Enable_dispatch>
57a5e: 4fef 000c lea %sp@(12),%sp
return RTEMS_SUCCESSFUL;
57a62: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57a64: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
57a6a: 4e5e unlk %fp
57a6c: 4e75 rts
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
57a6e: 7004 moveq #4,%d0
}
57a70: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4
57a76: 4e5e unlk %fp
...
00042e8c <rtems_verror>:
static int rtems_verror(
rtems_error_code_t error_flag,
const char *printf_format,
va_list arglist
)
{
42e8c: 4e56 ffe8 linkw %fp,#-24
42e90: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
42e94: 242e 0008 movel %fp@(8),%d2
int local_errno = 0;
int chars_written = 0;
rtems_status_code status;
if (error_flag & RTEMS_ERROR_PANIC) {
42e98: 0802 001d btst #29,%d2
42e9c: 6730 beqs 42ece <rtems_verror+0x42>
if (rtems_panic_in_progress++)
42e9e: 2239 0005 f8f0 movel 5f8f0 <rtems_panic_in_progress>,%d1
42ea4: 2001 movel %d1,%d0
42ea6: 5280 addql #1,%d0
42ea8: 23c0 0005 f8f0 movel %d0,5f8f0 <rtems_panic_in_progress>
42eae: 4a81 tstl %d1
42eb0: 6714 beqs 42ec6 <rtems_verror+0x3a> <== ALWAYS TAKEN
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
42eb2: 2039 0005 fa06 movel 5fa06 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
++level;
42eb8: 5280 addql #1,%d0 <== NOT EXECUTED
_Thread_Dispatch_disable_level = level;
42eba: 23c0 0005 fa06 movel %d0,5fa06 <_Thread_Dispatch_disable_level><== NOT EXECUTED
void _Thread_Disable_dispatch( void );
#else
RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void )
{
_Thread_Dispatch_increment_disable_level();
RTEMS_COMPILER_MEMORY_BARRIER();
42ec0: 2039 0005 f8f0 movel 5f8f0 <rtems_panic_in_progress>,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch(); /* disable task switches */
/* don't aggravate things */
if (rtems_panic_in_progress > 2)
42ec6: 7202 moveq #2,%d1
42ec8: b280 cmpl %d0,%d1
42eca: 6d00 00b6 bltw 42f82 <rtems_verror+0xf6>
return 0;
}
(void) fflush(stdout); /* in case stdout/stderr same */
42ece: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
42ed4: 45f9 0004 e4c2 lea 4e4c2 <fflush>,%a2
status = error_flag & ~RTEMS_ERROR_MASK;
42eda: 2802 movel %d2,%d4
/* don't aggravate things */
if (rtems_panic_in_progress > 2)
return 0;
}
(void) fflush(stdout); /* in case stdout/stderr same */
42edc: 2f28 0008 movel %a0@(8),%sp@-
status = error_flag & ~RTEMS_ERROR_MASK;
42ee0: 0284 8fff ffff andil #-1879048193,%d4
/* don't aggravate things */
if (rtems_panic_in_progress > 2)
return 0;
}
(void) fflush(stdout); /* in case stdout/stderr same */
42ee6: 4e92 jsr %a2@
status = error_flag & ~RTEMS_ERROR_MASK;
if (error_flag & RTEMS_ERROR_ERRNO) /* include errno? */
42ee8: 588f addql #4,%sp
42eea: 0802 001e btst #30,%d2
42eee: 6600 00ca bnew 42fba <rtems_verror+0x12e>
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
42ef2: 2f2e 0010 movel %fp@(16),%sp@-
rtems_error_code_t error_flag,
const char *printf_format,
va_list arglist
)
{
int local_errno = 0;
42ef6: 4283 clrl %d3
42ef8: 47f9 0004 e872 lea 4e872 <fprintf>,%a3
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
42efe: 2f2e 000c movel %fp@(12),%sp@-
42f02: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
42f08: 2f28 000c movel %a0@(12),%sp@-
42f0c: 4eb9 0005 50f8 jsr 550f8 <vfprintf>
if (status)
42f12: 4fef 000c lea %sp@(12),%sp
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
42f16: 2400 movel %d0,%d2
if (status)
42f18: 4a84 tstl %d4
42f1a: 6674 bnes 42f90 <rtems_verror+0x104>
chars_written +=
fprintf(stderr, " (status: %s)", rtems_status_text(status));
if (local_errno) {
42f1c: 4a83 tstl %d3
42f1e: 6732 beqs 42f52 <rtems_verror+0xc6>
if ((local_errno > 0) && *strerror(local_errno))
42f20: 4a83 tstl %d3
42f22: 6f14 bles 42f38 <rtems_verror+0xac>
42f24: 2f03 movel %d3,%sp@-
42f26: 49f9 0004 f46c lea 4f46c <strerror>,%a4
42f2c: 4e94 jsr %a4@
42f2e: 588f addql #4,%sp
42f30: 2040 moveal %d0,%a0
42f32: 4a10 tstb %a0@
42f34: 6600 00ba bnew 42ff0 <rtems_verror+0x164>
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
42f38: 2f03 movel %d3,%sp@-
42f3a: 4879 0005 cdca pea 5cdca <IMFS_node_control_default+0x34>
42f40: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
42f46: 2f28 000c movel %a0@(12),%sp@-
42f4a: 4e93 jsr %a3@
42f4c: 4fef 000c lea %sp@(12),%sp
42f50: d480 addl %d0,%d2
}
chars_written += fprintf(stderr, "\n");
42f52: 4879 0005 c995 pea 5c995 <Configuration_Initial_Extensions+0x351>
42f58: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
42f5e: 2f28 000c movel %a0@(12),%sp@-
42f62: 4e93 jsr %a3@
(void) fflush(stderr);
42f64: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
}
chars_written += fprintf(stderr, "\n");
42f6a: d480 addl %d0,%d2
(void) fflush(stderr);
42f6c: 2f28 000c movel %a0@(12),%sp@-
42f70: 4e92 jsr %a2@
return chars_written;
42f72: 4fef 000c lea %sp@(12),%sp
}
42f76: 2002 movel %d2,%d0
42f78: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
42f7e: 4e5e unlk %fp
42f80: 4e75 rts
if (rtems_panic_in_progress++)
_Thread_Disable_dispatch(); /* disable task switches */
/* don't aggravate things */
if (rtems_panic_in_progress > 2)
return 0;
42f82: 4282 clrl %d2 <== NOT EXECUTED
chars_written += fprintf(stderr, "\n");
(void) fflush(stderr);
return chars_written;
}
42f84: 2002 movel %d2,%d0 <== NOT EXECUTED
42f86: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
42f8c: 4e5e unlk %fp <== NOT EXECUTED
42f8e: 4e75 rts <== NOT EXECUTED
chars_written += vfprintf(stderr, printf_format, arglist);
if (status)
chars_written +=
fprintf(stderr, " (status: %s)", rtems_status_text(status));
42f90: 2f04 movel %d4,%sp@-
42f92: 4eb9 0004 2e74 jsr 42e74 <rtems_status_text>
42f98: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
42f9e: 2f00 movel %d0,%sp@-
42fa0: 4879 0005 cdaf pea 5cdaf <IMFS_node_control_default+0x19>
42fa6: 2f28 000c movel %a0@(12),%sp@-
42faa: 4e93 jsr %a3@
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
if (status)
chars_written +=
42fac: 4fef 0010 lea %sp@(16),%sp
42fb0: d480 addl %d0,%d2
fprintf(stderr, " (status: %s)", rtems_status_text(status));
if (local_errno) {
42fb2: 4a83 tstl %d3
42fb4: 679c beqs 42f52 <rtems_verror+0xc6>
42fb6: 6000 ff68 braw 42f20 <rtems_verror+0x94>
(void) fflush(stdout); /* in case stdout/stderr same */
status = error_flag & ~RTEMS_ERROR_MASK;
if (error_flag & RTEMS_ERROR_ERRNO) /* include errno? */
local_errno = errno;
42fba: 4eb9 0004 e144 jsr 4e144 <__errno>
42fc0: 47f9 0004 e872 lea 4e872 <fprintf>,%a3
42fc6: 2040 moveal %d0,%a0
42fc8: 2610 movel %a0@,%d3
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
42fca: 2f2e 0010 movel %fp@(16),%sp@-
42fce: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
42fd4: 2f2e 000c movel %fp@(12),%sp@-
42fd8: 2f28 000c movel %a0@(12),%sp@-
42fdc: 4eb9 0005 50f8 jsr 550f8 <vfprintf>
if (status)
42fe2: 4fef 000c lea %sp@(12),%sp
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
42fe6: 2400 movel %d0,%d2
if (status)
42fe8: 4a84 tstl %d4
42fea: 6700 ff30 beqw 42f1c <rtems_verror+0x90>
42fee: 60a0 bras 42f90 <rtems_verror+0x104>
chars_written +=
fprintf(stderr, " (status: %s)", rtems_status_text(status));
if (local_errno) {
if ((local_errno > 0) && *strerror(local_errno))
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
42ff0: 2f03 movel %d3,%sp@-
42ff2: 4e94 jsr %a4@
42ff4: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
42ffa: 2f00 movel %d0,%sp@-
42ffc: 4879 0005 cdbd pea 5cdbd <IMFS_node_control_default+0x27>
43002: 2f28 000c movel %a0@(12),%sp@-
43006: 4e93 jsr %a3@
43008: 4fef 0010 lea %sp@(16),%sp
4300c: d480 addl %d0,%d2
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
}
chars_written += fprintf(stderr, "\n");
4300e: 4879 0005 c995 pea 5c995 <Configuration_Initial_Extensions+0x351>
43014: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
4301a: 2f28 000c movel %a0@(12),%sp@-
4301e: 4e93 jsr %a3@
(void) fflush(stderr);
43020: 2079 0005 e3d0 moveal 5e3d0 <_impure_ptr>,%a0
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
}
chars_written += fprintf(stderr, "\n");
43026: d480 addl %d0,%d2
(void) fflush(stderr);
43028: 2f28 000c movel %a0@(12),%sp@-
4302c: 4e92 jsr %a2@
return chars_written;
4302e: 4fef 000c lea %sp@(12),%sp
43032: 6000 ff42 braw 42f76 <rtems_verror+0xea>
00047fec <rtems_workspace_greedy_free>:
void rtems_workspace_greedy_free( void *opaque )
{
47fec: 4e56 0000 linkw %fp,#0
*
* This rountine increments the thread dispatch level
*/
RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
{
uint32_t level = _Thread_Dispatch_disable_level;
47ff0: 2239 0006 05ea movel 605ea <_Thread_Dispatch_disable_level>,%d1
++level;
47ff6: 5281 addql #1,%d1
47ff8: 202e 0008 movel %fp@(8),%d0
_Thread_Dispatch_disable_level = level;
47ffc: 23c1 0006 05ea movel %d1,605ea <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
_Heap_Greedy_free( &_Workspace_Area, opaque );
48002: 2f00 movel %d0,%sp@-
48004: 4879 0006 05fa pea 605fa <_Workspace_Area>
4800a: 4eb9 0004 8bb8 jsr 48bb8 <_Heap_Greedy_free>
_Thread_Enable_dispatch();
48010: 508f addql #8,%sp
}
48012: 4e5e unlk %fp
void rtems_workspace_greedy_free( void *opaque )
{
_Thread_Disable_dispatch();
_Heap_Greedy_free( &_Workspace_Area, opaque );
_Thread_Enable_dispatch();
48014: 4ef9 0004 a264 jmp 4a264 <_Thread_Enable_dispatch>
...
000645c8 <scanInt>:
/**
* Extract an integer value from the database
*/
static int
scanInt(FILE *fp, int *val)
{
645c8: 4e56 ffe4 linkw %fp,#-28
645cc: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@
645d0: 246e 0008 moveal %fp@(8),%a2
int c;
unsigned int i = 0;
unsigned int limit = INT_MAX;
int sign = 0;
645d4: 4284 clrl %d4
static int
scanInt(FILE *fp, int *val)
{
int c;
unsigned int i = 0;
unsigned int limit = INT_MAX;
645d6: 263c 7fff ffff movel #2147483647,%d3
*/
static int
scanInt(FILE *fp, int *val)
{
int c;
unsigned int i = 0;
645dc: 4282 clrl %d2
unsigned int limit = INT_MAX;
int sign = 0;
int d;
for (;;) {
c = getc(fp);
645de: 47f9 0007 c624 lea 7c624 <__srget_r>,%a3
645e4: 202a 0004 movel %a2@(4),%d0
645e8: 5380 subql #1,%d0
645ea: 2540 0004 movel %d0,%a2@(4)
645ee: 6d64 blts 64654 <scanInt+0x8c> <== NEVER TAKEN
645f0: 2052 moveal %a2@,%a0
645f2: 4280 clrl %d0
645f4: 1010 moveb %a0@,%d0
645f6: 5288 addql #1,%a0
if (c == ':')
645f8: 723a moveq #58,%d1
unsigned int limit = INT_MAX;
int sign = 0;
int d;
for (;;) {
c = getc(fp);
645fa: 2488 movel %a0,%a2@
if (c == ':')
645fc: b280 cmpl %d0,%d1
645fe: 6766 beqs 64666 <scanInt+0x9e>
break;
if (sign == 0) {
64600: 4a84 tstl %d4
64602: 660a bnes 6460e <scanInt+0x46>
if (c == '-') {
64604: 7a2d moveq #45,%d5
64606: ba80 cmpl %d0,%d5
64608: 6700 0086 beqw 64690 <scanInt+0xc8>
sign = -1;
limit++;
continue;
}
sign = 1;
6460c: 7801 moveq #1,%d4
}
if (!isdigit(c))
6460e: 2079 0009 baec moveal 9baec <__ctype_ptr__>,%a0
64614: 7c04 moveq #4,%d6
64616: 1230 0801 moveb %a0@(00000001,%d0:l),%d1
6461a: c286 andl %d6,%d1
6461c: 4a01 tstb %d1
6461e: 6764 beqs 64684 <scanInt+0xbc>
return 0;
d = c - '0';
if ((i > (limit / 10))
64620: 2203 movel %d3,%d1
64622: 1c3c 000a moveb #10,%d6
}
sign = 1;
}
if (!isdigit(c))
return 0;
d = c - '0';
64626: 0680 ffff ffd0 addil #-48,%d0
if ((i > (limit / 10))
6462c: 4c46 1005 remul %d6,%d5,%d1
64630: 4c46 1001 remul %d6,%d1,%d1
64634: b282 cmpl %d2,%d1
64636: 654c bcss 64684 <scanInt+0xbc>
|| ((i == (limit / 10)) && (d > (limit % 10))))
64638: 6746 beqs 64680 <scanInt+0xb8>
return 0;
i = i * 10 + d;
6463a: 2202 movel %d2,%d1
6463c: e789 lsll #3,%d1
6463e: 2241 moveal %d1,%a1
64640: 41f1 2a00 lea %a1@(00000000,%d2:l:2),%a0
64644: 2400 movel %d0,%d2
unsigned int limit = INT_MAX;
int sign = 0;
int d;
for (;;) {
c = getc(fp);
64646: 202a 0004 movel %a2@(4),%d0
6464a: 5380 subql #1,%d0
return 0;
d = c - '0';
if ((i > (limit / 10))
|| ((i == (limit / 10)) && (d > (limit % 10))))
return 0;
i = i * 10 + d;
6464c: d488 addl %a0,%d2
unsigned int limit = INT_MAX;
int sign = 0;
int d;
for (;;) {
c = getc(fp);
6464e: 2540 0004 movel %d0,%a2@(4)
64652: 6c9c bges 645f0 <scanInt+0x28> <== ALWAYS TAKEN
64654: 2f0a movel %a2,%sp@- <== NOT EXECUTED
64656: 2f39 0009 baf8 movel 9baf8 <_impure_ptr>,%sp@- <== NOT EXECUTED
6465c: 4e93 jsr %a3@ <== NOT EXECUTED
6465e: 508f addql #8,%sp <== NOT EXECUTED
if (c == ':')
64660: 723a moveq #58,%d1 <== NOT EXECUTED
64662: b280 cmpl %d0,%d1 <== NOT EXECUTED
64664: 669a bnes 64600 <scanInt+0x38> <== NOT EXECUTED
if ((i > (limit / 10))
|| ((i == (limit / 10)) && (d > (limit % 10))))
return 0;
i = i * 10 + d;
}
if (sign == 0)
64666: 4a84 tstl %d4
64668: 671a beqs 64684 <scanInt+0xbc> <== NEVER TAKEN
return 0;
*val = i * sign;
6466a: 4c02 4800 mulsl %d2,%d4
return 1;
6466e: 7001 moveq #1,%d0
return 0;
i = i * 10 + d;
}
if (sign == 0)
return 0;
*val = i * sign;
64670: 206e 000c moveal %fp@(12),%a0
64674: 2084 movel %d4,%a0@
return 1;
}
64676: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3
6467c: 4e5e unlk %fp
6467e: 4e75 rts
}
if (!isdigit(c))
return 0;
d = c - '0';
if ((i > (limit / 10))
|| ((i == (limit / 10)) && (d > (limit % 10))))
64680: ba80 cmpl %d0,%d5
64682: 64b6 bccs 6463a <scanInt+0x72> <== NEVER TAKEN
continue;
}
sign = 1;
}
if (!isdigit(c))
return 0;
64684: 4280 clrl %d0
}
if (sign == 0)
return 0;
*val = i * sign;
return 1;
}
64686: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3
6468c: 4e5e unlk %fp
6468e: 4e75 rts
if (c == ':')
break;
if (sign == 0) {
if (c == '-') {
sign = -1;
limit++;
64690: 5283 addql #1,%d3
c = getc(fp);
if (c == ':')
break;
if (sign == 0) {
if (c == '-') {
sign = -1;
64692: 78ff moveq #-1,%d4
limit++;
continue;
64694: 6000 ff4e braw 645e4 <scanInt+0x1c>
00064698 <scanString>:
/**
* Extract a string value from the database
*/
static int
scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag)
{
64698: 4e56 fff0 linkw %fp,#-16
int c;
*name = *bufp;
6469c: 206e 000c moveal %fp@(12),%a0
/**
* Extract a string value from the database
*/
static int
scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag)
{
646a0: 48d7 3c00 moveml %a2-%a5,%sp@
646a4: 266e 0010 moveal %fp@(16),%a3
int c;
*name = *bufp;
for (;;) {
c = getc(fp);
646a8: 4bf9 0007 c624 lea 7c624 <__srget_r>,%a5
/**
* Extract a string value from the database
*/
static int
scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag)
{
646ae: 246e 0008 moveal %fp@(8),%a2
int c;
*name = *bufp;
646b2: 2093 movel %a3@,%a0@
for (;;) {
c = getc(fp);
646b4: 202a 0004 movel %a2@(4),%d0
646b8: 5380 subql #1,%d0
/**
* Extract a string value from the database
*/
static int
scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag)
{
646ba: 286e 0014 moveal %fp@(20),%a4
int c;
*name = *bufp;
for (;;) {
c = getc(fp);
646be: 2540 0004 movel %d0,%a2@(4)
646c2: 6d36 blts 646fa <scanString+0x62>
646c4: 2052 moveal %a2@,%a0
646c6: 4280 clrl %d0
646c8: 1010 moveb %a0@,%d0
646ca: 5288 addql #1,%a0
if (c == ':') {
646cc: 723a moveq #58,%d1
{
int c;
*name = *bufp;
for (;;) {
c = getc(fp);
646ce: 2488 movel %a0,%a2@
if (c == ':') {
646d0: b280 cmpl %d0,%d1
646d2: 6738 beqs 6470c <scanString+0x74>
if (nlFlag)
return 0;
break;
}
if (c == '\n') {
646d4: 720a moveq #10,%d1
646d6: b280 cmpl %d0,%d1
646d8: 674c beqs 64726 <scanString+0x8e>
if (!nlFlag)
return 0;
break;
}
if (c == EOF)
646da: 72ff moveq #-1,%d1
646dc: b280 cmpl %d0,%d1
646de: 674c beqs 6472c <scanString+0x94>
return 0;
if (*nleft < 2)
646e0: 7201 moveq #1,%d1
646e2: b294 cmpl %a4@,%d1
646e4: 6446 bccs 6472c <scanString+0x94>
return 0;
**bufp = c;
646e6: 2053 moveal %a3@,%a0
646e8: 1080 moveb %d0,%a0@
++(*bufp);
646ea: 5293 addql #1,%a3@
--(*nleft);
646ec: 5394 subql #1,%a4@
{
int c;
*name = *bufp;
for (;;) {
c = getc(fp);
646ee: 202a 0004 movel %a2@(4),%d0
646f2: 5380 subql #1,%d0
646f4: 2540 0004 movel %d0,%a2@(4)
646f8: 6cca bges 646c4 <scanString+0x2c>
646fa: 2f0a movel %a2,%sp@-
646fc: 2f39 0009 baf8 movel 9baf8 <_impure_ptr>,%sp@-
64702: 4e95 jsr %a5@
64704: 508f addql #8,%sp
if (c == ':') {
64706: 723a moveq #58,%d1
64708: b280 cmpl %d0,%d1
6470a: 66c8 bnes 646d4 <scanString+0x3c> <== ALWAYS TAKEN
if (nlFlag)
6470c: 4aae 0018 tstl %fp@(24)
64710: 661a bnes 6472c <scanString+0x94>
return 0;
**bufp = c;
++(*bufp);
--(*nleft);
}
**bufp = '\0';
64712: 2053 moveal %a3@,%a0
++(*bufp);
--(*nleft);
return 1;
64714: 7001 moveq #1,%d0
return 0;
**bufp = c;
++(*bufp);
--(*nleft);
}
**bufp = '\0';
64716: 4210 clrb %a0@
++(*bufp);
64718: 5293 addql #1,%a3@
--(*nleft);
6471a: 5394 subql #1,%a4@
return 1;
}
6471c: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5
64722: 4e5e unlk %fp
64724: 4e75 rts
if (nlFlag)
return 0;
break;
}
if (c == '\n') {
if (!nlFlag)
64726: 4aae 0018 tstl %fp@(24)
6472a: 66e6 bnes 64712 <scanString+0x7a>
*name = *bufp;
for (;;) {
c = getc(fp);
if (c == ':') {
if (nlFlag)
return 0;
6472c: 4280 clrl %d0
}
**bufp = '\0';
++(*bufp);
--(*nleft);
return 1;
}
6472e: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5
64734: 4e5e unlk %fp <== NOT EXECUTED
00064738 <scangr>:
FILE *fp,
struct group *grp,
char *buffer,
size_t bufsize
)
{
64738: 4e56 ffec linkw %fp,#-20
6473c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
int grgid;
char *grmem, *cp;
int memcount;
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
64740: 42a7 clrl %sp@-
64742: 486e 0014 pea %fp@(20)
64746: 47fa ff50 lea %pc@(64698 <scanString>),%a3
6474a: 486e 0010 pea %fp@(16)
FILE *fp,
struct group *grp,
char *buffer,
size_t bufsize
)
{
6474e: 246e 000c moveal %fp@(12),%a2
64752: 242e 0008 movel %fp@(8),%d2
int grgid;
char *grmem, *cp;
int memcount;
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
64756: 2f0a movel %a2,%sp@-
64758: 2f02 movel %d2,%sp@-
6475a: 4e93 jsr %a3@
6475c: 4fef 0014 lea %sp@(20),%sp
64760: 4a80 tstl %d0
64762: 660c bnes 64770 <scangr+0x38>
|| !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)
|| !scanInt(fp, &grgid)
|| !scanString(fp, &grmem, &buffer, &bufsize, 1))
return 0;
64764: 4280 clrl %d0
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
return 1;
}
64766: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3
6476c: 4e5e unlk %fp
6476e: 4e75 rts
int grgid;
char *grmem, *cp;
int memcount;
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
|| !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)
64770: 42a7 clrl %sp@-
64772: 486e 0014 pea %fp@(20)
64776: 486e 0010 pea %fp@(16)
6477a: 486a 0004 pea %a2@(4)
6477e: 2f02 movel %d2,%sp@-
64780: 4e93 jsr %a3@
64782: 4fef 0014 lea %sp@(20),%sp
64786: 4a80 tstl %d0
64788: 67da beqs 64764 <scangr+0x2c> <== NEVER TAKEN
|| !scanInt(fp, &grgid)
6478a: 486e fff8 pea %fp@(-8)
6478e: 2f02 movel %d2,%sp@-
64790: 4eba fe36 jsr %pc@(645c8 <scanInt>)
64794: 508f addql #8,%sp
64796: 4a80 tstl %d0
64798: 67ca beqs 64764 <scangr+0x2c> <== NEVER TAKEN
|| !scanString(fp, &grmem, &buffer, &bufsize, 1))
6479a: 4878 0001 pea 1 <ADD>
6479e: 486e 0014 pea %fp@(20)
647a2: 486e 0010 pea %fp@(16)
647a6: 486e fffc pea %fp@(-4)
647aa: 2f02 movel %d2,%sp@-
647ac: 4e93 jsr %a3@
647ae: 4fef 0014 lea %sp@(20),%sp
647b2: 4a80 tstl %d0
647b4: 67ae beqs 64764 <scangr+0x2c> <== NEVER TAKEN
grp->gr_gid = grgid;
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
647b6: 226e fffc moveal %fp@(-4),%a1
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
|| !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)
|| !scanInt(fp, &grgid)
|| !scanString(fp, &grmem, &buffer, &bufsize, 1))
return 0;
grp->gr_gid = grgid;
647ba: 356e fffa 0008 movew %fp@(-6),%a2@(8)
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
647c0: 1011 moveb %a1@,%d0
647c2: 677a beqs 6483e <scangr+0x106> <== NEVER TAKEN
}
/**
* Extract a single group record from the database
*/
static int scangr(
647c4: 41e9 0001 lea %a1@(1),%a0
grp->gr_gid = grgid;
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
647c8: 7201 moveq #1,%d1
if(*cp == ',')
647ca: 49c0 extbl %d0
647cc: 742c moveq #44,%d2
647ce: b480 cmpl %d0,%d2
647d0: 6756 beqs 64828 <scangr+0xf0>
grp->gr_gid = grgid;
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
647d2: 1018 moveb %a0@+,%d0
647d4: 66f4 bnes 647ca <scangr+0x92>
647d6: e589 lsll #2,%d1
647d8: 0681 0000 0013 addil #19,%d1
}
/*
* Hack to produce (hopefully) a suitably-aligned array of pointers
*/
if (bufsize < (((memcount+1)*sizeof(char *)) + 15))
647de: b2ae 0014 cmpl %fp@(20),%d1
647e2: 6280 bhis 64764 <scangr+0x2c> <== NEVER TAKEN
return 0;
grp->gr_mem = (char **)(((uintptr_t)buffer + 15) & ~15);
647e4: 202e 0010 movel %fp@(16),%d0
647e8: 72f0 moveq #-16,%d1
647ea: 0680 0000 000f addil #15,%d0
647f0: c081 andl %d1,%d0
647f2: 2540 000a movel %d0,%a2@(10)
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
647f6: 2040 moveal %d0,%a0
647f8: 2089 movel %a1,%a0@
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
647fa: 206e fffc moveal %fp@(-4),%a0
647fe: 1010 moveb %a0@,%d0
64800: 6740 beqs 64842 <scangr+0x10a> <== NEVER TAKEN
}
/**
* Extract a single group record from the database
*/
static int scangr(
64802: 5288 addql #1,%a0
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
64804: 7201 moveq #1,%d1
if(*cp == ',') {
64806: 49c0 extbl %d0
64808: 742c moveq #44,%d2
6480a: b480 cmpl %d0,%d2
6480c: 671e beqs 6482c <scangr+0xf4>
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
6480e: 1018 moveb %a0@+,%d0
64810: 66f4 bnes 64806 <scangr+0xce>
if(*cp == ',') {
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
64812: 206a 000a moveal %a2@(10),%a0
return 1;
64816: 7001 moveq #1,%d0
64818: e589 lsll #2,%d1
if(*cp == ',') {
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
6481a: 42b0 1800 clrl %a0@(00000000,%d1:l)
return 1;
}
6481e: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3
64824: 4e5e unlk %fp
64826: 4e75 rts
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
if(*cp == ',')
memcount++;
64828: 5281 addql #1,%d1
6482a: 60a6 bras 647d2 <scangr+0x9a>
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
if(*cp == ',') {
*cp = '\0';
6482c: 4200 clrb %d0
6482e: 1140 ffff moveb %d0,%a0@(-1)
grp->gr_mem[memcount++] = cp + 1;
64832: 226a 000a moveal %a2@(10),%a1
64836: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4)
6483a: 5281 addql #1,%d1
6483c: 60d0 bras 6480e <scangr+0xd6>
grp->gr_gid = grgid;
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
6483e: 7217 moveq #23,%d1 <== NOT EXECUTED
64840: 609c bras 647de <scangr+0xa6> <== NOT EXECUTED
if(*cp == ',') {
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
64842: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
64846: 7204 moveq #4,%d1 <== NOT EXECUTED
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
return 1;
64848: 7001 moveq #1,%d0 <== NOT EXECUTED
if(*cp == ',') {
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
6484a: 42b0 1800 clrl %a0@(00000000,%d1:l) <== NOT EXECUTED
6484e: 60ce bras 6481e <scangr+0xe6> <== NOT EXECUTED
00064850 <scanpw>:
FILE *fp,
struct passwd *pwd,
char *buffer,
size_t bufsize
)
{
64850: 4e56 ffe8 linkw %fp,#-24
64854: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
64858: 42a7 clrl %sp@-
6485a: 486e 0014 pea %fp@(20)
6485e: 47fa fe38 lea %pc@(64698 <scanString>),%a3
64862: 486e 0010 pea %fp@(16)
FILE *fp,
struct passwd *pwd,
char *buffer,
size_t bufsize
)
{
64866: 246e 000c moveal %fp@(12),%a2
6486a: 242e 0008 movel %fp@(8),%d2
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
6486e: 2f0a movel %a2,%sp@-
64870: 2f02 movel %d2,%sp@-
64872: 4e93 jsr %a3@
64874: 4fef 0014 lea %sp@(20),%sp
64878: 4a80 tstl %d0
6487a: 660c bnes 64888 <scanpw+0x38>
|| !scanInt(fp, &pwgid)
|| !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))
return 0;
6487c: 4280 clrl %d0
pwd->pw_uid = pwuid;
pwd->pw_gid = pwgid;
return 1;
}
6487e: 4cee 1c04 ffe8 moveml %fp@(-24),%d2/%a2-%a4
64884: 4e5e unlk %fp
64886: 4e75 rts
)
{
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_passwd, &buffer, &bufsize, 0)
64888: 42a7 clrl %sp@-
6488a: 486e 0014 pea %fp@(20)
6488e: 486e 0010 pea %fp@(16)
64892: 486a 0004 pea %a2@(4)
64896: 2f02 movel %d2,%sp@-
64898: 4e93 jsr %a3@
6489a: 4fef 0014 lea %sp@(20),%sp
6489e: 4a80 tstl %d0
648a0: 67da beqs 6487c <scanpw+0x2c> <== NEVER TAKEN
|| !scanInt(fp, &pwuid)
648a2: 486e fff8 pea %fp@(-8)
648a6: 49fa fd20 lea %pc@(645c8 <scanInt>),%a4
648aa: 2f02 movel %d2,%sp@-
648ac: 4e94 jsr %a4@
648ae: 508f addql #8,%sp
648b0: 4a80 tstl %d0
648b2: 67c8 beqs 6487c <scanpw+0x2c>
|| !scanInt(fp, &pwgid)
648b4: 486e fffc pea %fp@(-4)
648b8: 2f02 movel %d2,%sp@-
648ba: 4e94 jsr %a4@
648bc: 508f addql #8,%sp
648be: 4a80 tstl %d0
648c0: 67ba beqs 6487c <scanpw+0x2c> <== NEVER TAKEN
|| !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)
648c2: 42a7 clrl %sp@-
648c4: 486e 0014 pea %fp@(20)
648c8: 486e 0010 pea %fp@(16)
648cc: 486a 000c pea %a2@(12)
648d0: 2f02 movel %d2,%sp@-
648d2: 4e93 jsr %a3@
648d4: 4fef 0014 lea %sp@(20),%sp
648d8: 4a80 tstl %d0
648da: 67a0 beqs 6487c <scanpw+0x2c> <== NEVER TAKEN
|| !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)
648dc: 42a7 clrl %sp@-
648de: 486e 0014 pea %fp@(20)
648e2: 486e 0010 pea %fp@(16)
648e6: 486a 0010 pea %a2@(16)
648ea: 2f02 movel %d2,%sp@-
648ec: 4e93 jsr %a3@
648ee: 4fef 0014 lea %sp@(20),%sp
648f2: 4a80 tstl %d0
648f4: 6786 beqs 6487c <scanpw+0x2c> <== NEVER TAKEN
|| !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)
648f6: 42a7 clrl %sp@-
648f8: 486e 0014 pea %fp@(20)
648fc: 486e 0010 pea %fp@(16)
64900: 486a 0014 pea %a2@(20)
64904: 2f02 movel %d2,%sp@-
64906: 4e93 jsr %a3@
64908: 4fef 0014 lea %sp@(20),%sp
6490c: 4a80 tstl %d0
6490e: 6700 ff6c beqw 6487c <scanpw+0x2c>
|| !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))
64912: 4878 0001 pea 1 <ADD>
64916: 486e 0014 pea %fp@(20)
6491a: 486e 0010 pea %fp@(16)
6491e: 486a 0018 pea %a2@(24)
64922: 2f02 movel %d2,%sp@-
64924: 4e93 jsr %a3@
64926: 4fef 0014 lea %sp@(20),%sp
6492a: 4a80 tstl %d0
6492c: 6700 ff4e beqw 6487c <scanpw+0x2c>
return 0;
pwd->pw_uid = pwuid;
pwd->pw_gid = pwgid;
return 1;
64930: 7001 moveq #1,%d0
|| !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))
return 0;
pwd->pw_uid = pwuid;
64932: 356e fffa 0008 movew %fp@(-6),%a2@(8)
pwd->pw_gid = pwgid;
64938: 356e fffe 000a movew %fp@(-2),%a2@(10)
return 1;
}
6493e: 4cee 1c04 ffe8 moveml %fp@(-24),%d2/%a2-%a4
64944: 4e5e unlk %fp <== NOT EXECUTED
00046074 <siproc>:
/*
* Process input character, with semaphore.
*/
static int
siproc (unsigned char c, struct rtems_termios_tty *tty)
{
46074: 4e56 0000 linkw %fp,#0
46078: 2f0a movel %a2,%sp@-
4607a: 246e 000c moveal %fp@(12),%a2
int i;
/*
* Obtain output semaphore if character will be echoed
*/
if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
4607e: 202a 003c movel %a2@(60),%d0
46082: 0280 0000 0e78 andil #3704,%d0
/*
* Process input character, with semaphore.
*/
static int
siproc (unsigned char c, struct rtems_termios_tty *tty)
{
46088: 2f02 movel %d2,%sp@-
4608a: 142e 000b moveb %fp@(11),%d2
int i;
/*
* Obtain output semaphore if character will be echoed
*/
if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
4608e: 4a80 tstl %d0
46090: 6618 bnes 460aa <siproc+0x36> <== ALWAYS TAKEN
}
else {
i = iproc (c, tty);
}
return i;
}
46092: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
i = iproc (c, tty);
rtems_semaphore_release (tty->osem);
}
else {
i = iproc (c, tty);
46096: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
4609c: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return i;
}
460a0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
460a4: 4e5e unlk %fp <== NOT EXECUTED
rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
i = iproc (c, tty);
rtems_semaphore_release (tty->osem);
}
else {
i = iproc (c, tty);
460a6: 6000 fd8c braw 45e34 <iproc> <== NOT EXECUTED
/*
* Obtain output semaphore if character will be echoed
*/
if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
460aa: 42a7 clrl %sp@-
i = iproc (c, tty);
460ac: 0282 0000 00ff andil #255,%d2
/*
* Obtain output semaphore if character will be echoed
*/
if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
460b2: 42a7 clrl %sp@-
460b4: 2f2a 0018 movel %a2@(24),%sp@-
460b8: 4eb9 0004 7458 jsr 47458 <rtems_semaphore_obtain>
i = iproc (c, tty);
460be: 2f0a movel %a2,%sp@-
460c0: 2f02 movel %d2,%sp@-
460c2: 4eba fd70 jsr %pc@(45e34 <iproc>)
rtems_semaphore_release (tty->osem);
460c6: 2f2a 0018 movel %a2@(24),%sp@-
/*
* Obtain output semaphore if character will be echoed
*/
if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
i = iproc (c, tty);
460ca: 2400 movel %d0,%d2
rtems_semaphore_release (tty->osem);
460cc: 4eb9 0004 75b0 jsr 475b0 <rtems_semaphore_release>
}
else {
i = iproc (c, tty);
}
return i;
}
460d2: 246e fffc moveal %fp@(-4),%a2
460d6: 2002 movel %d2,%d0
* Obtain output semaphore if character will be echoed
*/
if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
i = iproc (c, tty);
rtems_semaphore_release (tty->osem);
460d8: 4fef 0018 lea %sp@(24),%sp
}
else {
i = iproc (c, tty);
}
return i;
}
460dc: 242e fff8 movel %fp@(-8),%d2
460e0: 4e5e unlk %fp <== NOT EXECUTED
0004e548 <sparse_disk_ioctl>:
/*
* ioctl handler to be passed to the block device handler
*/
static int sparse_disk_ioctl( rtems_disk_device *dd, uint32_t req, void *argp )
{
4e548: 4e56 ffc8 linkw %fp,#-56
4e54c: 206e 0008 moveal %fp@(8),%a0
4e550: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4e554: 202e 000c movel %fp@(12),%d0
} else {
sc = RTEMS_INVALID_NUMBER;
}
return sc;
}
4e558: 2468 003c moveal %a0@(60),%a2
static int sparse_disk_ioctl( rtems_disk_device *dd, uint32_t req, void *argp )
{
rtems_status_code sc;
rtems_sparse_disk *sd = rtems_disk_get_driver_data( dd );
if ( RTEMS_BLKIO_REQUEST == req ) {
4e55c: 0c80 c018 4201 cmpil #-1072152063,%d0
4e562: 6778 beqs 4e5dc <sparse_disk_ioctl+0x94>
case RTEMS_BLKDEV_REQ_WRITE:
return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
default:
break;
}
} else if ( RTEMS_BLKIO_DELETED == req ) {
4e564: 0c80 2000 4207 cmpil #536887815,%d0
4e56a: 671c beqs 4e588 <sparse_disk_ioctl+0x40>
if ( NULL != sd->delete_handler )
( *sd->delete_handler )( sd );
return 0;
} else {
return rtems_blkdev_ioctl( dd, req, argp );
4e56c: 2f2e 0010 movel %fp@(16),%sp@-
4e570: 2f00 movel %d0,%sp@-
4e572: 2f08 movel %a0,%sp@-
4e574: 4eb9 0005 131c jsr 5131c <rtems_blkdev_ioctl>
4e57a: 4fef 000c lea %sp@(12),%sp
}
errno = EINVAL;
return -1;
}
4e57e: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
4e584: 4e5e unlk %fp
4e586: 4e75 rts
return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
default:
break;
}
} else if ( RTEMS_BLKIO_DELETED == req ) {
sc = rtems_semaphore_delete( sd->mutex );
4e588: 2f12 movel %a2@,%sp@-
4e58a: 4eb9 0004 9444 jsr 49444 <rtems_semaphore_delete>
if ( RTEMS_SUCCESSFUL != sc )
4e590: 588f addql #4,%sp
4e592: 4a80 tstl %d0
4e594: 6600 0232 bnew 4e7c8 <sparse_disk_ioctl+0x280>
rtems_fatal_error_occurred( 0xdeadbeef );
sd->mutex = RTEMS_ID_NONE;
if ( NULL != sd->delete_handler )
4e598: 206a 0010 moveal %a2@(16),%a0
sc = rtems_semaphore_delete( sd->mutex );
if ( RTEMS_SUCCESSFUL != sc )
rtems_fatal_error_occurred( 0xdeadbeef );
sd->mutex = RTEMS_ID_NONE;
4e59c: 4292 clrl %a2@
if ( NULL != sd->delete_handler )
4e59e: 4a88 tstl %a0
4e5a0: 672e beqs 4e5d0 <sparse_disk_ioctl+0x88> <== NEVER TAKEN
( *sd->delete_handler )( sd );
4e5a2: 2f0a movel %a2,%sp@-
4e5a4: 4e90 jsr %a0@
4e5a6: 588f addql #4,%sp
return 0;
4e5a8: 4280 clrl %d0
return rtems_blkdev_ioctl( dd, req, argp );
}
errno = EINVAL;
return -1;
}
4e5aa: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
4e5b0: 4e5e unlk %fp
4e5b2: 4e75 rts
bytes_handled += rv;
buff_size -= rv;
}
}
rtems_semaphore_release( sparse_disk->mutex );
4e5b4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4e5b6: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release> <== NOT EXECUTED
static inline void rtems_blkdev_request_done(
rtems_blkdev_request *req,
rtems_status_code status
)
{
(*req->done)(req, status);
4e5bc: 4878 001b pea 1b <OPER2+0x7> <== NOT EXECUTED
4e5c0: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
4e5c4: 2069 0004 moveal %a1@(4),%a0 <== NOT EXECUTED
4e5c8: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4e5ca: 4e90 jsr %a0@ <== NOT EXECUTED
4e5cc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_blkdev_request *r = argp;
switch ( r->req ) {
case RTEMS_BLKDEV_REQ_READ:
case RTEMS_BLKDEV_REQ_WRITE:
return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
4e5d0: 4280 clrl %d0 <== NOT EXECUTED
return rtems_blkdev_ioctl( dd, req, argp );
}
errno = EINVAL;
return -1;
}
4e5d2: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4e5d8: 4e5e unlk %fp <== NOT EXECUTED
4e5da: 4e75 rts <== NOT EXECUTED
rtems_sparse_disk *sd = rtems_disk_get_driver_data( dd );
if ( RTEMS_BLKIO_REQUEST == req ) {
rtems_blkdev_request *r = argp;
switch ( r->req ) {
4e5dc: 206e 0010 moveal %fp@(16),%a0
4e5e0: 7001 moveq #1,%d0
4e5e2: 2e10 movel %a0@,%d7
4e5e4: b087 cmpl %d7,%d0
4e5e6: 6418 bccs 4e600 <sparse_disk_ioctl+0xb8> <== ALWAYS TAKEN
return 0;
} else {
return rtems_blkdev_ioctl( dd, req, argp );
}
errno = EINVAL;
4e5e8: 4eb9 0005 a7e0 jsr 5a7e0 <__errno> <== NOT EXECUTED
4e5ee: 7216 moveq #22,%d1 <== NOT EXECUTED
4e5f0: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4e5f2: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4e5f4: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
return 0;
} else {
return rtems_blkdev_ioctl( dd, req, argp );
}
errno = EINVAL;
4e5fa: 2081 movel %d1,%a0@ <== NOT EXECUTED
return -1;
}
4e5fc: 4e5e unlk %fp <== NOT EXECUTED
4e5fe: 4e75 rts <== NOT EXECUTED
rtems_blkdev_bnum block;
uint8_t *buff;
size_t buff_size;
unsigned int bytes_handled;
rtems_semaphore_obtain( sparse_disk->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4e600: 42a7 clrl %sp@-
4e602: 4bee fff8 lea %fp@(-8),%a5
4e606: 42a7 clrl %sp@-
4e608: 2f12 movel %a2@,%sp@-
4e60a: 49f9 0005 a77c lea 5a77c <bsearch>,%a4
4e610: 2d40 fff4 movel %d0,%fp@(-12)
4e614: 4eb9 0004 951c jsr 4951c <rtems_semaphore_obtain>
4e61a: 206e 0010 moveal %fp@(16),%a0
4e61e: 4fef 000c lea %sp@(12),%sp
4e622: 202e fff4 movel %fp@(-12),%d0
4e626: 5380 subql #1,%d0
4e628: 2228 0010 movel %a0@(16),%d1
for ( req_buffer = 0;
( 0 <= rv ) && ( req_buffer < req->bufnum );
4e62c: b280 cmpl %d0,%d1
4e62e: 6300 0094 blsw 4e6c4 <sparse_disk_ioctl+0x17c>
++req_buffer ) {
scatter_gather = &req->bufs[req_buffer];
4e632: 226e 0010 moveal %fp@(16),%a1
4e636: e988 lsll #4,%d0
4e638: 41f1 0818 lea %a1@(00000018,%d0:l),%a0
bytes_handled = 0;
buff = (uint8_t *) scatter_gather->buffer;
4e63c: 2c28 0008 movel %a0@(8),%d6
block = scatter_gather->block;
4e640: 2810 movel %a0@,%d4
buff_size = scatter_gather->length;
4e642: 2628 0004 movel %a0@(4),%d3
while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {
4e646: 676c beqs 4e6b4 <sparse_disk_ioctl+0x16c> <== NEVER TAKEN
4e648: 4285 clrl %d5
const rtems_blkdev_bnum block,
uint8_t *buffer,
const size_t buffer_size )
{
rtems_sparse_disk_key *key;
rtems_sparse_disk_key block_key = {
4e64a: 2d44 fff8 movel %d4,%fp@(-8)
.block = block,
.data = NULL
};
size_t bytes_to_copy = sparse_disk->media_block_size;
4e64e: 202a 000c movel %a2@(12),%d0
block = scatter_gather->block;
buff_size = scatter_gather->length;
while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {
if ( read )
rv = sparse_disk_read_block( sparse_disk,
4e652: 2646 moveal %d6,%a3
4e654: d7c5 addal %d5,%a3
4e656: 2403 movel %d3,%d2
const rtems_blkdev_bnum block,
uint8_t *buffer,
const size_t buffer_size )
{
rtems_sparse_disk_key *key;
rtems_sparse_disk_key block_key = {
4e658: 42ae fffc clrl %fp@(-4)
buff = (uint8_t *) scatter_gather->buffer;
block = scatter_gather->block;
buff_size = scatter_gather->length;
while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {
if ( read )
4e65c: 4a87 tstl %d7
4e65e: 6600 008a bnew 4e6ea <sparse_disk_ioctl+0x1a2>
4e662: b083 cmpl %d3,%d0
4e664: 6402 bccs 4e668 <sparse_disk_ioctl+0x120>
4e666: 2400 movel %d0,%d2
size_t bytes_to_copy = sparse_disk->media_block_size;
if ( buffer_size < bytes_to_copy )
bytes_to_copy = buffer_size;
key = bsearch(
4e668: 487a feba pea %pc@(4e524 <sparse_disk_compare>)
4e66c: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
4e670: 2f2a 0008 movel %a2@(8),%sp@-
4e674: 2f2a 0016 movel %a2@(22),%sp@-
4e678: 2f0d movel %a5,%sp@-
4e67a: 4e94 jsr %a4@
sparse_disk->used_count,
sizeof( rtems_sparse_disk_key ),
sparse_disk_compare
);
if ( NULL != key )
4e67c: 4fef 0014 lea %sp@(20),%sp
4e680: 4a80 tstl %d0
4e682: 6700 0120 beqw 4e7a4 <sparse_disk_ioctl+0x25c>
memcpy( buffer, key->data, bytes_to_copy );
4e686: 2040 moveal %d0,%a0
4e688: 2f02 movel %d2,%sp@-
4e68a: 2f28 0004 movel %a0@(4),%sp@-
4e68e: 2f0b movel %a3,%sp@-
4e690: 4eb9 0005 b188 jsr 5b188 <memcpy>
4e696: 4fef 000c lea %sp@(12),%sp
if ( NULL != key )
memcpy( key->data, buffer, bytes_to_copy );
else if ( block_needs_writing )
return -1;
return bytes_to_copy;
4e69a: 2002 movel %d2,%d0
rv = sparse_disk_write_block( sparse_disk,
block,
&buff[bytes_handled],
buff_size );
++block;
4e69c: 5284 addql #1,%d4
bytes_handled += rv;
4e69e: da82 addl %d2,%d5
buff_size -= rv;
4e6a0: 9682 subl %d2,%d3
bytes_handled = 0;
buff = (uint8_t *) scatter_gather->buffer;
block = scatter_gather->block;
buff_size = scatter_gather->length;
while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {
4e6a2: 4a80 tstl %d0
4e6a4: 6d00 ff0e bltw 4e5b4 <sparse_disk_ioctl+0x6c>
4e6a8: 4a83 tstl %d3
4e6aa: 669e bnes 4e64a <sparse_disk_ioctl+0x102>
4e6ac: 206e 0010 moveal %fp@(16),%a0
4e6b0: 2228 0010 movel %a0@(16),%d1
4e6b4: 52ae fff4 addql #1,%fp@(-12)
4e6b8: 202e fff4 movel %fp@(-12),%d0
4e6bc: 5380 subql #1,%d0
unsigned int bytes_handled;
rtems_semaphore_obtain( sparse_disk->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
for ( req_buffer = 0;
( 0 <= rv ) && ( req_buffer < req->bufnum );
4e6be: b280 cmpl %d0,%d1
4e6c0: 6200 ff70 bhiw 4e632 <sparse_disk_ioctl+0xea>
bytes_handled += rv;
buff_size -= rv;
}
}
rtems_semaphore_release( sparse_disk->mutex );
4e6c4: 2f12 movel %a2@,%sp@-
4e6c6: 4eb9 0004 9674 jsr 49674 <rtems_semaphore_release>
4e6cc: 226e 0010 moveal %fp@(16),%a1
4e6d0: 2069 0004 moveal %a1@(4),%a0
4e6d4: 42a7 clrl %sp@-
4e6d6: 2f09 movel %a1,%sp@-
4e6d8: 4e90 jsr %a0@
4e6da: 4fef 000c lea %sp@(12),%sp
rtems_blkdev_request *r = argp;
switch ( r->req ) {
case RTEMS_BLKDEV_REQ_READ:
case RTEMS_BLKDEV_REQ_WRITE:
return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
4e6de: 4280 clrl %d0
return rtems_blkdev_ioctl( dd, req, argp );
}
errno = EINVAL;
return -1;
}
4e6e0: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
4e6e6: 4e5e unlk %fp
4e6e8: 4e75 rts
4e6ea: b083 cmpl %d3,%d0
4e6ec: 6402 bccs 4e6f0 <sparse_disk_ioctl+0x1a8>
4e6ee: 2400 movel %d0,%d2
/* we only need to write the block if it is different from the fill pattern.
* If the read method does not find a block it will deliver the fill pattern anyway.
*/
key = bsearch(
4e6f0: 487a fe32 pea %pc@(4e524 <sparse_disk_compare>)
4e6f4: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
4e6f8: 2f2a 0008 movel %a2@(8),%sp@-
4e6fc: 2f2a 0016 movel %a2@(22),%sp@-
4e700: 2f0d movel %a5,%sp@-
4e702: 4e94 jsr %a4@
sparse_disk->used_count,
sizeof( rtems_sparse_disk_key ),
sparse_disk_compare
);
if ( NULL == key ) {
4e704: 4fef 0014 lea %sp@(20),%sp
4e708: 4a80 tstl %d0
4e70a: 671a beqs 4e726 <sparse_disk_ioctl+0x1de>
key = sparse_disk_get_new_block( sparse_disk, block );
}
}
if ( NULL != key )
memcpy( key->data, buffer, bytes_to_copy );
4e70c: 2f02 movel %d2,%sp@-
4e70e: 2040 moveal %d0,%a0
4e710: 2f0b movel %a3,%sp@-
4e712: 2f28 0004 movel %a0@(4),%sp@-
4e716: 4eb9 0005 b188 jsr 5b188 <memcpy>
4e71c: 4fef 000c lea %sp@(12),%sp
else if ( block_needs_writing )
return -1;
return bytes_to_copy;
4e720: 2002 movel %d2,%d0
4e722: 6000 ff78 braw 4e69c <sparse_disk_ioctl+0x154>
sizeof( rtems_sparse_disk_key ),
sparse_disk_compare
);
if ( NULL == key ) {
for ( i = 0; ( !block_needs_writing ) && ( i < bytes_to_copy ); ++i ) {
4e726: 4a82 tstl %d2
4e728: 6700 ff70 beqw 4e69a <sparse_disk_ioctl+0x152>
4e72c: 4281 clrl %d1
4e72e: 4280 clrl %d0
4e730: 1213 moveb %a3@,%d1
4e732: 102a 0014 moveb %a2@(20),%d0
4e736: b081 cmpl %d1,%d0
4e738: 6616 bnes 4e750 <sparse_disk_ioctl+0x208>
}
/*
* ioctl handler to be passed to the block device handler
*/
static int sparse_disk_ioctl( rtems_disk_device *dd, uint32_t req, void *argp )
4e73a: 43f3 2800 lea %a3@(00000000,%d2:l),%a1
4e73e: 41eb 0001 lea %a3@(1),%a0
sizeof( rtems_sparse_disk_key ),
sparse_disk_compare
);
if ( NULL == key ) {
for ( i = 0; ( !block_needs_writing ) && ( i < bytes_to_copy ); ++i ) {
4e742: b3c8 cmpal %a0,%a1
4e744: 6700 ff54 beqw 4e69a <sparse_disk_ioctl+0x152>
4e748: 4280 clrl %d0
4e74a: 1018 moveb %a0@+,%d0
4e74c: b280 cmpl %d0,%d1
4e74e: 67f2 beqs 4e742 <sparse_disk_ioctl+0x1fa>
rtems_sparse_disk *sparse_disk,
const rtems_blkdev_bnum block )
{
rtems_sparse_disk_key *key;
if ( sparse_disk->used_count < sparse_disk->blocks_with_buffer ) {
4e750: 202a 0008 movel %a2@(8),%d0
4e754: b0aa 0004 cmpl %a2@(4),%d0
4e758: 6466 bccs 4e7c0 <sparse_disk_ioctl+0x278> <== NEVER TAKEN
key = &sparse_disk->key_table[sparse_disk->used_count];
key->block = block;
++sparse_disk->used_count;
4e75a: 2040 moveal %d0,%a0
4e75c: 5288 addql #1,%a0
const rtems_blkdev_bnum block )
{
rtems_sparse_disk_key *key;
if ( sparse_disk->used_count < sparse_disk->blocks_with_buffer ) {
key = &sparse_disk->key_table[sparse_disk->used_count];
4e75e: e788 lsll #3,%d0
4e760: 222a 0016 movel %a2@(22),%d1
4e764: d081 addl %d1,%d0
key->block = block;
4e766: 2240 moveal %d0,%a1
4e768: 2284 movel %d4,%a1@
++sparse_disk->used_count;
4e76a: 2548 0008 movel %a0,%a2@(8)
qsort( sparse_disk->key_table, sparse_disk->used_count,
4e76e: 487a fdb4 pea %pc@(4e524 <sparse_disk_compare>)
4e772: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
4e776: 2f08 movel %a0,%sp@-
4e778: 2d40 fff0 movel %d0,%fp@(-16)
4e77c: 2f01 movel %d1,%sp@-
4e77e: 4eb9 0005 b264 jsr 5b264 <qsort>
4e784: 4fef 0010 lea %sp@(16),%sp
4e788: 202e fff0 movel %fp@(-16),%d0
key = sparse_disk_get_new_block( sparse_disk, block );
}
}
if ( NULL != key )
memcpy( key->data, buffer, bytes_to_copy );
4e78c: 2040 moveal %d0,%a0
4e78e: 2f02 movel %d2,%sp@-
4e790: 2f0b movel %a3,%sp@-
4e792: 2f28 0004 movel %a0@(4),%sp@-
4e796: 4eb9 0005 b188 jsr 5b188 <memcpy>
4e79c: 4fef 000c lea %sp@(12),%sp
4e7a0: 6000 ff7e braw 4e720 <sparse_disk_ioctl+0x1d8>
);
if ( NULL != key )
memcpy( buffer, key->data, bytes_to_copy );
else
memset( buffer, sparse_disk->fill_pattern, buffer_size );
4e7a4: 2f03 movel %d3,%sp@-
4e7a6: 4280 clrl %d0
4e7a8: 102a 0014 moveb %a2@(20),%d0
4e7ac: 2f00 movel %d0,%sp@-
4e7ae: 2f0b movel %a3,%sp@-
4e7b0: 4eb9 0005 b1f8 jsr 5b1f8 <memset>
4e7b6: 4fef 000c lea %sp@(12),%sp
if ( NULL != key )
memcpy( key->data, buffer, bytes_to_copy );
else if ( block_needs_writing )
return -1;
return bytes_to_copy;
4e7ba: 2002 movel %d2,%d0
4e7bc: 6000 fede braw 4e69c <sparse_disk_ioctl+0x154>
rtems_sparse_disk *sparse_disk,
const rtems_blkdev_bnum block )
{
rtems_sparse_disk_key *key;
if ( sparse_disk->used_count < sparse_disk->blocks_with_buffer ) {
4e7c0: 74ff moveq #-1,%d2 <== NOT EXECUTED
}
if ( NULL != key )
memcpy( key->data, buffer, bytes_to_copy );
else if ( block_needs_writing )
return -1;
4e7c2: 70ff moveq #-1,%d0 <== NOT EXECUTED
4e7c4: 6000 fed6 braw 4e69c <sparse_disk_ioctl+0x154> <== NOT EXECUTED
}
} else if ( RTEMS_BLKIO_DELETED == req ) {
sc = rtems_semaphore_delete( sd->mutex );
if ( RTEMS_SUCCESSFUL != sc )
rtems_fatal_error_occurred( 0xdeadbeef );
4e7c8: 2f3c dead beef movel #-559038737,%sp@- <== NOT EXECUTED
4e7ce: 4eb9 0004 9d54 jsr 49d54 <rtems_fatal_error_occurred> <== NOT EXECUTED
000459e4 <sync_per_thread>:
fdatasync(fn);
}
/* iterate over all FILE *'s for this thread */
static void sync_per_thread(Thread_Control *t)
{
459e4: 4e56 0000 linkw %fp,#0
459e8: 206e 0008 moveal %fp@(8),%a0
/*
* The sync_wrapper() function will operate on the current thread's
* reent structure so we will temporarily use that.
*/
this_reent = t->libc_reent;
459ec: 2028 00f4 movel %a0@(244),%d0
fdatasync(fn);
}
/* iterate over all FILE *'s for this thread */
static void sync_per_thread(Thread_Control *t)
{
459f0: 2f02 movel %d2,%sp@-
/*
* The sync_wrapper() function will operate on the current thread's
* reent structure so we will temporarily use that.
*/
this_reent = t->libc_reent;
if ( this_reent ) {
459f2: 4a80 tstl %d0
459f4: 6728 beqs 45a1e <sync_per_thread+0x3a> <== NEVER TAKEN
current_reent = _Thread_Executing->libc_reent;
459f6: 2279 0006 14de moveal 614de <_Per_CPU_Information+0xe>,%a1
459fc: 2429 00f4 movel %a1@(244),%d2
_Thread_Executing->libc_reent = this_reent;
45a00: 2340 00f4 movel %d0,%a1@(244)
_fwalk (t->libc_reent, sync_wrapper);
45a04: 487a 0020 pea %pc@(45a26 <sync_wrapper>)
45a08: 2f28 00f4 movel %a0@(244),%sp@-
45a0c: 4eb9 0004 febc jsr 4febc <_fwalk>
_Thread_Executing->libc_reent = current_reent;
45a12: 2079 0006 14de moveal 614de <_Per_CPU_Information+0xe>,%a0
45a18: 508f addql #8,%sp
45a1a: 2142 00f4 movel %d2,%a0@(244)
}
}
45a1e: 242e fffc movel %fp@(-4),%d2
45a22: 4e5e unlk %fp <== NOT EXECUTED
00054c80 <tcsetattr>:
int tcsetattr(
int fd,
int opt,
struct termios *tp
)
{
54c80: 4e56 0000 linkw %fp,#0
54c84: 202e 000c movel %fp@(12),%d0
54c88: 2f03 movel %d3,%sp@-
54c8a: 262e 0010 movel %fp@(16),%d3
54c8e: 2f02 movel %d2,%sp@-
54c90: 242e 0008 movel %fp@(8),%d2
switch (opt) {
54c94: 4a80 tstl %d0
54c96: 6738 beqs 54cd0 <tcsetattr+0x50>
54c98: 7201 moveq #1,%d1
54c9a: b280 cmpl %d0,%d1
54c9c: 671c beqs 54cba <tcsetattr+0x3a>
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
54c9e: 4eb9 0005 81e4 jsr 581e4 <__errno>
54ca4: 2040 moveal %d0,%a0
54ca6: 20bc 0000 0086 movel #134,%a0@
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
}
}
54cac: 242e fff8 movel %fp@(-8),%d2
54cb0: 70ff moveq #-1,%d0
54cb2: 262e fffc movel %fp@(-4),%d3
54cb6: 4e5e unlk %fp
54cb8: 4e75 rts
switch (opt) {
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
case TCSADRAIN:
if (ioctl( fd, RTEMS_IO_TCDRAIN, NULL ) < 0)
54cba: 42a7 clrl %sp@-
54cbc: 4878 0003 pea 3 <DIVIDE>
54cc0: 2f02 movel %d2,%sp@-
54cc2: 4eb9 0005 7a58 jsr 57a58 <ioctl>
54cc8: 4fef 000c lea %sp@(12),%sp
54ccc: 4a80 tstl %d0
54cce: 6ddc blts 54cac <tcsetattr+0x2c> <== NEVER TAKEN
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
54cd0: 2d43 0010 movel %d3,%fp@(16)
54cd4: 7002 moveq #2,%d0
54cd6: 2d42 0008 movel %d2,%fp@(8)
}
}
54cda: 242e fff8 movel %fp@(-8),%d2
54cde: 262e fffc movel %fp@(-4),%d3
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
54ce2: 2d40 000c movel %d0,%fp@(12)
}
}
54ce6: 4e5e unlk %fp
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
54ce8: 4ef9 0005 7a58 jmp 57a58 <ioctl>
...
00046d38 <unmount>:
* in some form is supported on most UNIX and POSIX systems. This
* routine is necessary to mount instantiations of a file system
* into the file system name space.
*/
int unmount( const char *path )
{
46d38: 4e56 ffb4 linkw %fp,#-76
46d3c: 48d7 041c moveml %d2-%d4/%a2,%sp@
int rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_FOLLOW_LINK;
const rtems_filesystem_location_info_t *currentloc =
46d40: 4878 0018 pea 18 <OPER2+0x4>
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
46d44: 260e movel %fp,%d3
46d46: 0683 ffff ffc8 addil #-56,%d3
int unmount( const char *path )
{
int rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_FOLLOW_LINK;
const rtems_filesystem_location_info_t *currentloc =
46d4c: 2f2e 0008 movel %fp@(8),%sp@-
46d50: 2f03 movel %d3,%sp@-
46d52: 4eb9 0004 47c6 jsr 447c6 <rtems_filesystem_eval_path_start>
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
rtems_filesystem_mount_table_entry_t *mt_entry = currentloc->mt_entry;
46d58: 2040 moveal %d0,%a0
46d5a: 2468 0014 moveal %a0@(20),%a2
const rtems_filesystem_location_info_t *loc
)
{
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
return (*mt_entry->ops->are_nodes_equal_h)(
46d5e: 206a 000c moveal %a2@(12),%a0
46d62: 2f2a 0024 movel %a2@(36),%sp@-
46d66: 2f00 movel %d0,%sp@-
46d68: 2068 0010 moveal %a0@(16),%a0
46d6c: 4e90 jsr %a0@
if ( rtems_filesystem_location_is_instance_root( currentloc ) ) {
46d6e: 4fef 0014 lea %sp@(20),%sp
46d72: 4a00 tstb %d0
46d74: 6700 00b4 beqw 46e2a <unmount+0xf2>
static bool contains_root_or_current_directory(
const rtems_filesystem_mount_table_entry_t *mt_entry
)
{
const rtems_filesystem_location_info_t *root =
&rtems_filesystem_root->location;
46d78: 2079 0005 e90c moveal 5e90c <rtems_current_user_env>,%a0
const rtems_filesystem_location_info_t *current =
&rtems_filesystem_current->location;
46d7e: 2250 moveal %a0@,%a1
return mt_entry == root->mt_entry || mt_entry == current->mt_entry;
46d80: 2068 0004 moveal %a0@(4),%a0
46d84: b5e8 0014 cmpal %a0@(20),%a2
46d88: 6700 0086 beqw 46e10 <unmount+0xd8>
46d8c: b5e9 0014 cmpal %a1@(20),%a2
46d90: 677e beqs 46e10 <unmount+0xd8>
rtems_filesystem_mount_table_entry_t *mt_entry = currentloc->mt_entry;
if ( rtems_filesystem_location_is_instance_root( currentloc ) ) {
if ( !contains_root_or_current_directory( mt_entry ) ) {
const rtems_filesystem_operations_table *mt_point_ops =
mt_entry->mt_point_node->location.mt_entry->ops;
46d92: 206a 0020 moveal %a2@(32),%a0
46d96: 2068 0014 moveal %a0@(20),%a0
rv = (*mt_point_ops->unmount_h)( mt_entry );
46d9a: 2068 000c moveal %a0@(12),%a0
46d9e: 2f0a movel %a2,%sp@-
46da0: 2068 0038 moveal %a0@(56),%a0
46da4: 4e90 jsr %a0@
if ( rv == 0 ) {
46da6: 588f addql #4,%sp
if ( rtems_filesystem_location_is_instance_root( currentloc ) ) {
if ( !contains_root_or_current_directory( mt_entry ) ) {
const rtems_filesystem_operations_table *mt_point_ops =
mt_entry->mt_point_node->location.mt_entry->ops;
rv = (*mt_point_ops->unmount_h)( mt_entry );
46da8: 2400 movel %d0,%d2
if ( rv == 0 ) {
46daa: 6716 beqs 46dc2 <unmount+0x8a>
} else {
errno = EACCES;
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
46dac: 2f03 movel %d3,%sp@-
46dae: 4eb9 0004 491a jsr 4491a <rtems_filesystem_eval_path_cleanup>
46db4: 588f addql #4,%sp
rtems_fatal_error_occurred( 0xdeadbeef );
}
}
return rv;
}
46db6: 2002 movel %d2,%d0
46db8: 4cee 041c ffb4 moveml %fp@(-76),%d2-%d4/%a2
46dbe: 4e5e unlk %fp
46dc0: 4e75 rts
const rtems_filesystem_operations_table *mt_point_ops =
mt_entry->mt_point_node->location.mt_entry->ops;
rv = (*mt_point_ops->unmount_h)( mt_entry );
if ( rv == 0 ) {
rtems_id self_task_id = rtems_task_self();
46dc2: 4eb9 0004 7f14 jsr 47f14 <rtems_task_self>
rtems_filesystem_mt_entry_declare_lock_context( lock_context );
rtems_filesystem_mt_entry_lock( lock_context );
46dc8: 223c 0000 0700 movel #1792,%d1
46dce: 40c4 movew %sr,%d4
46dd0: 8284 orl %d4,%d1
46dd2: 46c1 movew %d1,%sr
mt_entry->unmount_task = self_task_id;
46dd4: 2540 003a movel %d0,%a2@(58)
mt_entry->mounted = false;
46dd8: 4200 clrb %d0
46dda: 1540 0028 moveb %d0,%a2@(40)
rtems_filesystem_mt_entry_unlock( lock_context );
46dde: 46c4 movew %d4,%sr
} else {
errno = EACCES;
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
46de0: 2f03 movel %d3,%sp@-
46de2: 4eb9 0004 491a jsr 4491a <rtems_filesystem_eval_path_cleanup>
rtems_interval ticks
)
{
rtems_event_set event_out;
return rtems_event_system_receive(
46de8: 486e ffc4 pea %fp@(-60)
46dec: 42a7 clrl %sp@-
46dee: 42a7 clrl %sp@-
46df0: 2f3c 8000 0000 movel #-2147483648,%sp@-
46df6: 4eb9 0004 7bc4 jsr 47bc4 <rtems_event_system_receive>
rtems_status_code sc = rtems_event_transient_receive(
RTEMS_WAIT,
RTEMS_NO_TIMEOUT
);
if ( sc != RTEMS_SUCCESSFUL ) {
46dfc: 4fef 0014 lea %sp@(20),%sp
46e00: 4a80 tstl %d0
46e02: 67b2 beqs 46db6 <unmount+0x7e> <== ALWAYS TAKEN
rtems_fatal_error_occurred( 0xdeadbeef );
46e04: 2f3c dead beef movel #-559038737,%sp@- <== NOT EXECUTED
46e0a: 4eb9 0004 81e4 jsr 481e4 <rtems_fatal_error_occurred> <== NOT EXECUTED
mt_entry->unmount_task = self_task_id;
mt_entry->mounted = false;
rtems_filesystem_mt_entry_unlock( lock_context );
}
} else {
errno = EBUSY;
46e10: 4eb9 0004 e6dc jsr 4e6dc <__errno>
rv = -1;
46e16: 74ff moveq #-1,%d2
mt_entry->unmount_task = self_task_id;
mt_entry->mounted = false;
rtems_filesystem_mt_entry_unlock( lock_context );
}
} else {
errno = EBUSY;
46e18: 2040 moveal %d0,%a0
46e1a: 7010 moveq #16,%d0
46e1c: 2080 movel %d0,%a0@
} else {
errno = EACCES;
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
46e1e: 2f03 movel %d3,%sp@-
46e20: 4eb9 0004 491a jsr 4491a <rtems_filesystem_eval_path_cleanup>
46e26: 588f addql #4,%sp
46e28: 608c bras 46db6 <unmount+0x7e>
} else {
errno = EBUSY;
rv = -1;
}
} else {
errno = EACCES;
46e2a: 4eb9 0004 e6dc jsr 4e6dc <__errno>
rv = -1;
46e30: 74ff moveq #-1,%d2
} else {
errno = EBUSY;
rv = -1;
}
} else {
errno = EACCES;
46e32: 720d moveq #13,%d1
46e34: 2040 moveal %d0,%a0
46e36: 2081 movel %d1,%a0@
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
46e38: 2f03 movel %d3,%sp@-
46e3a: 4eb9 0004 491a jsr 4491a <rtems_filesystem_eval_path_cleanup>
46e40: 588f addql #4,%sp
46e42: 6000 ff72 braw 46db6 <unmount+0x7e>
...
000469a4 <vprintk>:
*/
void vprintk(
const char *fmt,
va_list ap
)
{
469a4: 4e56 ffc0 linkw %fp,#-64
469a8: 206e 0008 moveal %fp@(8),%a0
469ac: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
for (; *fmt != '\0'; fmt++) {
469b0: 1010 moveb %a0@,%d0
469b2: 672e beqs 469e2 <vprintk+0x3e> <== NEVER TAKEN
* console is not yet initialized or in ISR's.
*
* Arguments:
* as in printf: fmt - format string, ... - unnamed arguments.
*/
void vprintk(
469b4: 2a0e movel %fp,%d5
bool sign = false;
char lead = ' ';
char c;
if (*fmt != '%') {
rtems_putc(*fmt);
469b6: 47f9 0004 bd6c lea 4bd6c <rtems_putc>,%a3
* console is not yet initialized or in ISR's.
*
* Arguments:
* as in printf: fmt - format string, ... - unnamed arguments.
*/
void vprintk(
469bc: 0685 ffff ffec addil #-20,%d5
469c2: 49f9 0005 d490 lea 5d490 <null_ops+0x54>,%a4
bool minus = false;
bool sign = false;
char lead = ' ';
char c;
if (*fmt != '%') {
469c8: 49c0 extbl %d0
469ca: 7225 moveq #37,%d1
469cc: b280 cmpl %d0,%d1
469ce: 671c beqs 469ec <vprintk+0x48>
rtems_putc(*fmt);
469d0: 2f00 movel %d0,%sp@-
continue;
469d2: 2448 moveal %a0,%a2
bool sign = false;
char lead = ' ';
char c;
if (*fmt != '%') {
rtems_putc(*fmt);
469d4: 4e93 jsr %a3@
continue;
469d6: 588f addql #4,%sp
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
469d8: 41ea 0001 lea %a2@(1),%a0
469dc: 102a 0001 moveb %a2@(1),%d0
469e0: 66e6 bnes 469c8 <vprintk+0x24>
sign,
width,
lead
);
}
}
469e2: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5
469e8: 4e5e unlk %fp
469ea: 4e75 rts
if (*fmt != '%') {
rtems_putc(*fmt);
continue;
}
fmt++;
if (*fmt == '0' ) {
469ec: 7430 moveq #48,%d2
469ee: 1028 0001 moveb %a0@(1),%d0
469f2: 1200 moveb %d0,%d1
469f4: 49c1 extbl %d1
469f6: b481 cmpl %d1,%d2
469f8: 6700 022e beqw 46c28 <vprintk+0x284>
if (*fmt != '%') {
rtems_putc(*fmt);
continue;
}
fmt++;
469fc: 45e8 0001 lea %a0@(1),%a2
unsigned base = 0;
unsigned width = 0;
bool lflag = false;
bool minus = false;
bool sign = false;
char lead = ' ';
46a00: 7620 moveq #32,%d3
46a02: 1d43 ffeb moveb %d3,%fp@(-21)
fmt++;
if (*fmt == '0' ) {
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
46a06: 7c2d moveq #45,%d6
46a08: bc81 cmpl %d1,%d6
46a0a: 6700 01f6 beqw 46c02 <vprintk+0x25e>
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
46a0e: 0680 ffff ffd0 addil #-48,%d0
46a14: 7409 moveq #9,%d2
46a16: 0280 0000 00ff andil #255,%d0
{
for (; *fmt != '\0'; fmt++) {
unsigned base = 0;
unsigned width = 0;
bool lflag = false;
bool minus = false;
46a1c: 4203 clrb %d3
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
46a1e: b480 cmpl %d0,%d2
46a20: 6500 0200 bcsw 46c22 <vprintk+0x27e>
* console is not yet initialized or in ISR's.
*
* Arguments:
* as in printf: fmt - format string, ... - unnamed arguments.
*/
void vprintk(
46a24: 41ea 0001 lea %a2@(1),%a0
46a28: 4202 clrb %d2
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
width *= 10;
46a2a: 2802 movel %d2,%d4
width += ((unsigned) *fmt - '0');
fmt++;
46a2c: 2448 moveal %a0,%a2
46a2e: 5288 addql #1,%a0
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
46a30: 7c09 moveq #9,%d6
width *= 10;
46a32: e78c lsll #3,%d4
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
46a34: 1012 moveb %a2@,%d0
width *= 10;
46a36: 2244 moveal %d4,%a1
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
46a38: 2800 movel %d0,%d4
46a3a: 0684 ffff ffd0 addil #-48,%d4
width *= 10;
46a40: 43f1 2a00 lea %a1@(00000000,%d2:l:2),%a1
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
46a44: 0284 0000 00ff andil #255,%d4
width *= 10;
width += ((unsigned) *fmt - '0');
46a4a: 43f1 18d0 lea %a1@(ffffffd0,%d1:l),%a1
46a4e: 1200 moveb %d0,%d1
46a50: 2409 movel %a1,%d2
46a52: 49c1 extbl %d1
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
46a54: bc84 cmpl %d4,%d6
46a56: 64d2 bccs 46a2a <vprintk+0x86>
46a58: 1200 moveb %d0,%d1
46a5a: 49c1 extbl %d1
width *= 10;
width += ((unsigned) *fmt - '0');
fmt++;
}
if ((c = *fmt) == 'l') {
46a5c: 706c moveq #108,%d0
46a5e: b081 cmpl %d1,%d0
46a60: 6700 0166 beqw 46bc8 <vprintk+0x224>
lflag = true;
c = *++fmt;
}
if ( c == 'c' ) {
46a64: 7863 moveq #99,%d4
)
{
for (; *fmt != '\0'; fmt++) {
unsigned base = 0;
unsigned width = 0;
bool lflag = false;
46a66: 4200 clrb %d0
if ((c = *fmt) == 'l') {
lflag = true;
c = *++fmt;
}
if ( c == 'c' ) {
46a68: b881 cmpl %d1,%d4
46a6a: 6700 0170 beqw 46bdc <vprintk+0x238>
/* need a cast here since va_arg() only takes fully promoted types */
char chr = (char) va_arg(ap, int);
rtems_putc(chr);
continue;
}
if ( c == 's' ) {
46a6e: 7873 moveq #115,%d4
46a70: b881 cmpl %d1,%d4
46a72: 6700 01ca beqw 46c3e <vprintk+0x29a>
continue;
}
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
46a76: 766f moveq #111,%d3
46a78: b681 cmpl %d1,%d3
46a7a: 6700 0140 beqw 46bbc <vprintk+0x218>
46a7e: 784f moveq #79,%d4
46a80: b881 cmpl %d1,%d4
46a82: 6700 0138 beqw 46bbc <vprintk+0x218>
base = 8; sign = false;
} else if ( c == 'i' || c == 'I' ||
46a86: 7c69 moveq #105,%d6
46a88: bc81 cmpl %d1,%d6
46a8a: 6760 beqs 46aec <vprintk+0x148>
46a8c: 163c 0049 moveb #73,%d3
46a90: b681 cmpl %d1,%d3
46a92: 6758 beqs 46aec <vprintk+0x148>
46a94: 183c 0064 moveb #100,%d4
46a98: b881 cmpl %d1,%d4
46a9a: 6750 beqs 46aec <vprintk+0x148>
c == 'd' || c == 'D' ) {
46a9c: 1c3c 0044 moveb #68,%d6
46aa0: bc81 cmpl %d1,%d6
46aa2: 6748 beqs 46aec <vprintk+0x148>
base = 10; sign = true;
} else if ( c == 'u' || c == 'U' ) {
46aa4: 163c 0075 moveb #117,%d3
46aa8: b681 cmpl %d1,%d3
46aaa: 6700 0254 beqw 46d00 <vprintk+0x35c>
46aae: 183c 0055 moveb #85,%d4
46ab2: b881 cmpl %d1,%d4
46ab4: 6700 024a beqw 46d00 <vprintk+0x35c>
base = 10; sign = false;
} else if ( c == 'x' || c == 'X' ) {
46ab8: 1c3c 0078 moveb #120,%d6
46abc: bc81 cmpl %d1,%d6
46abe: 6700 0260 beqw 46d20 <vprintk+0x37c>
46ac2: 163c 0058 moveb #88,%d3
46ac6: b681 cmpl %d1,%d3
46ac8: 6700 0256 beqw 46d20 <vprintk+0x37c>
base = 16; sign = false;
} else if ( c == 'p' ) {
46acc: 183c 0070 moveb #112,%d4
46ad0: b881 cmpl %d1,%d4
46ad2: 6700 00d4 beqw 46ba8 <vprintk+0x204>
base = 16; sign = false; lflag = true;
} else {
rtems_putc(c);
46ad6: 2f01 movel %d1,%sp@-
46ad8: 4e93 jsr %a3@
continue;
46ada: 588f addql #4,%sp
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
46adc: 41ea 0001 lea %a2@(1),%a0
46ae0: 102a 0001 moveb %a2@(1),%d0
46ae4: 6600 fee2 bnew 469c8 <vprintk+0x24>
46ae8: 6000 fef8 braw 469e2 <vprintk+0x3e> <== NOT EXECUTED
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
base = 8; sign = false;
} else if ( c == 'i' || c == 'I' ||
c == 'd' || c == 'D' ) {
base = 10; sign = true;
46aec: 760a moveq #10,%d3
46aee: 7201 moveq #1,%d1
} else {
rtems_putc(c);
continue;
}
printNum(
46af0: 4a00 tstb %d0
46af2: 6600 00b8 bnew 46bac <vprintk+0x208>
46af6: 226e 000c moveal %fp@(12),%a1
46afa: 2811 movel %a1@,%d4
lflag ? va_arg(ap, long) : (long) va_arg(ap, int),
46afc: 5889 addql #4,%a1
46afe: 2d49 000c movel %a1,%fp@(12)
unsigned long unsigned_num;
unsigned long n;
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
46b02: 4a01 tstb %d1
46b04: 6706 beqs 46b0c <vprintk+0x168>
46b06: 4a84 tstl %d4
46b08: 6d00 01c0 bltw 46cca <vprintk+0x326>
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
46b0c: 2004 movel %d4,%d0
46b0e: 4c43 0000 remul %d3,%d0,%d0
46b12: 6700 01d2 beqw 46ce6 <vprintk+0x342>
46b16: 2a42 moveal %d2,%a5
46b18: 2200 movel %d0,%d1
46b1a: 2245 moveal %d5,%a1
if (maxwidth) maxwidth--;
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
46b1c: 91c8 subal %a0,%a0
while ((n = unsigned_num / base) > 0) {
toPrint[count++] = (char) (unsigned_num - (n * base));
46b1e: 5288 addql #1,%a0
46b20: 1e03 moveb %d3,%d7
46b22: 3c00 movew %d0,%d6
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
46b24: 4c43 1001 remul %d3,%d1,%d1
toPrint[count++] = (char) (unsigned_num - (n * base));
46b28: cdc7 mulsw %d7,%d6
46b2a: 9886 subl %d6,%d4
46b2c: 2c04 movel %d4,%d6
46b2e: 2800 movel %d0,%d4
46b30: 12c6 moveb %d6,%a1@+
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
46b32: 4a81 tstl %d1
46b34: 671a beqs 46b50 <vprintk+0x1ac>
46b36: 2001 movel %d1,%d0
46b38: 2200 movel %d0,%d1
toPrint[count++] = (char) (unsigned_num - (n * base));
46b3a: 5288 addql #1,%a0
46b3c: 3c00 movew %d0,%d6
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
46b3e: 4c43 1001 remul %d3,%d1,%d1
toPrint[count++] = (char) (unsigned_num - (n * base));
46b42: cdc7 mulsw %d7,%d6
46b44: 9886 subl %d6,%d4
46b46: 2c04 movel %d4,%d6
46b48: 2800 movel %d0,%d4
46b4a: 12c6 moveb %d6,%a1@+
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
46b4c: 4a81 tstl %d1
46b4e: 66e6 bnes 46b36 <vprintk+0x192>
46b50: 2608 movel %a0,%d3
46b52: 240d movel %a5,%d2
46b54: 5283 addql #1,%d3
46b56: 182e ffeb moveb %fp@(-21),%d4
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
46b5a: 1d80 88ec moveb %d0,%fp@(ffffffec,%a0:l)
46b5e: 49c4 extbl %d4
for (n=maxwidth ; n > count; n-- )
46b60: b483 cmpl %d3,%d2
46b62: 630c blss 46b70 <vprintk+0x1cc>
rtems_putc(lead);
46b64: 2f04 movel %d4,%sp@-
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
46b66: 5382 subql #1,%d2
rtems_putc(lead);
46b68: 4e93 jsr %a3@
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
46b6a: 588f addql #4,%sp
46b6c: b483 cmpl %d3,%d2
46b6e: 62f4 bhis 46b64 <vprintk+0x1c0>
* console is not yet initialized or in ISR's.
*
* Arguments:
* as in printf: fmt - format string, ... - unnamed arguments.
*/
void vprintk(
46b70: 2a45 moveal %d5,%a5
46b72: dbc3 addal %d3,%a5
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
rtems_putc(lead);
for (n = 0; n < count; n++) {
46b74: 4a83 tstl %d3
46b76: 6700 fe60 beqw 469d8 <vprintk+0x34>
rtems_putc("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
46b7a: 1025 moveb %a5@-,%d0
46b7c: 49c0 extbl %d0
46b7e: 1034 0800 moveb %a4@(00000000,%d0:l),%d0
46b82: 49c0 extbl %d0
46b84: 2f00 movel %d0,%sp@-
46b86: 4e93 jsr %a3@
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
rtems_putc(lead);
for (n = 0; n < count; n++) {
46b88: 588f addql #4,%sp
46b8a: ba8d cmpl %a5,%d5
46b8c: 6700 fe4a beqw 469d8 <vprintk+0x34>
rtems_putc("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
46b90: 1025 moveb %a5@-,%d0
46b92: 49c0 extbl %d0
46b94: 1034 0800 moveb %a4@(00000000,%d0:l),%d0
46b98: 49c0 extbl %d0
46b9a: 2f00 movel %d0,%sp@-
46b9c: 4e93 jsr %a3@
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
rtems_putc(lead);
for (n = 0; n < count; n++) {
46b9e: 588f addql #4,%sp
46ba0: ba8d cmpl %a5,%d5
46ba2: 66d6 bnes 46b7a <vprintk+0x1d6>
46ba4: 6000 fe32 braw 469d8 <vprintk+0x34>
} else if ( c == 'u' || c == 'U' ) {
base = 10; sign = false;
} else if ( c == 'x' || c == 'X' ) {
base = 16; sign = false;
} else if ( c == 'p' ) {
base = 16; sign = false; lflag = true;
46ba8: 7610 moveq #16,%d3
46baa: 4201 clrb %d1
} else {
rtems_putc(c);
continue;
}
printNum(
46bac: 206e 000c moveal %fp@(12),%a0
46bb0: 2810 movel %a0@,%d4
lflag ? va_arg(ap, long) : (long) va_arg(ap, int),
46bb2: 5888 addql #4,%a0
46bb4: 2d48 000c movel %a0,%fp@(12)
46bb8: 6000 ff48 braw 46b02 <vprintk+0x15e>
continue;
}
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
base = 8; sign = false;
46bbc: 7608 moveq #8,%d3
46bbe: 4201 clrb %d1
} else {
rtems_putc(c);
continue;
}
printNum(
46bc0: 4a00 tstb %d0
46bc2: 6700 ff32 beqw 46af6 <vprintk+0x152>
46bc6: 60e4 bras 46bac <vprintk+0x208> <== NOT EXECUTED
if ((c = *fmt) == 'l') {
lflag = true;
c = *++fmt;
}
if ( c == 'c' ) {
46bc8: 7863 moveq #99,%d4
fmt++;
}
if ((c = *fmt) == 'l') {
lflag = true;
c = *++fmt;
46bca: 102a 0001 moveb %a2@(1),%d0
46bce: 528a addql #1,%a2
46bd0: 1200 moveb %d0,%d1
width += ((unsigned) *fmt - '0');
fmt++;
}
if ((c = *fmt) == 'l') {
lflag = true;
46bd2: 7001 moveq #1,%d0
46bd4: 49c1 extbl %d1
c = *++fmt;
}
if ( c == 'c' ) {
46bd6: b881 cmpl %d1,%d4
46bd8: 6600 fe94 bnew 46a6e <vprintk+0xca>
/* need a cast here since va_arg() only takes fully promoted types */
char chr = (char) va_arg(ap, int);
46bdc: 206e 000c moveal %fp@(12),%a0
46be0: 2010 movel %a0@,%d0
rtems_putc(chr);
46be2: 49c0 extbl %d0
46be4: 2f00 movel %d0,%sp@-
lflag = true;
c = *++fmt;
}
if ( c == 'c' ) {
/* need a cast here since va_arg() only takes fully promoted types */
char chr = (char) va_arg(ap, int);
46be6: 2008 movel %a0,%d0
46be8: 5880 addql #4,%d0
46bea: 2d40 000c movel %d0,%fp@(12)
rtems_putc(chr);
46bee: 4e93 jsr %a3@
continue;
46bf0: 588f addql #4,%sp
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
46bf2: 41ea 0001 lea %a2@(1),%a0
46bf6: 102a 0001 moveb %a2@(1),%d0
46bfa: 6600 fdcc bnew 469c8 <vprintk+0x24>
46bfe: 6000 fde2 braw 469e2 <vprintk+0x3e>
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
46c02: 7409 moveq #9,%d2
46c04: 102a 0001 moveb %a2@(1),%d0
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
minus = true;
fmt++;
46c08: 528a addql #1,%a2
46c0a: 1200 moveb %d0,%d1
}
while (*fmt >= '0' && *fmt <= '9' ) {
46c0c: 0680 ffff ffd0 addil #-48,%d0
46c12: 0280 0000 00ff andil #255,%d0
46c18: 49c1 extbl %d1
if (*fmt == '0' ) {
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
minus = true;
46c1a: 7601 moveq #1,%d3
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
46c1c: b480 cmpl %d0,%d2
46c1e: 6400 fe04 bccw 46a24 <vprintk+0x80>
46c22: 4282 clrl %d2
46c24: 6000 fe36 braw 46a5c <vprintk+0xb8>
continue;
}
fmt++;
if (*fmt == '0' ) {
lead = '0';
fmt++;
46c28: 45e8 0002 lea %a0@(2),%a2
46c2c: 1028 0002 moveb %a0@(2),%d0
rtems_putc(*fmt);
continue;
}
fmt++;
if (*fmt == '0' ) {
lead = '0';
46c30: 7830 moveq #48,%d4
46c32: 1200 moveb %d0,%d1
46c34: 1d44 ffeb moveb %d4,%fp@(-21)
46c38: 49c1 extbl %d1
46c3a: 6000 fdca braw 46a06 <vprintk+0x62>
}
if ( c == 's' ) {
unsigned i, len;
char *s, *str;
str = va_arg(ap, char *);
46c3e: 206e 000c moveal %fp@(12),%a0
46c42: 2c08 movel %a0,%d6
46c44: 5886 addql #4,%d6
46c46: 2a50 moveal %a0@,%a5
if ( str == NULL ) {
46c48: 4a8d tstl %a5
46c4a: 6700 00c2 beqw 46d0e <vprintk+0x36a>
str = "";
}
/* calculate length of string */
for ( len=0, s=str ; *s ; len++, s++ )
46c4e: 4a15 tstb %a5@
46c50: 6700 00c8 beqw 46d1a <vprintk+0x376>
* console is not yet initialized or in ISR's.
*
* Arguments:
* as in printf: fmt - format string, ... - unnamed arguments.
*/
void vprintk(
46c54: 41ed 0001 lea %a5@(1),%a0
if ( str == NULL ) {
str = "";
}
/* calculate length of string */
for ( len=0, s=str ; *s ; len++, s++ )
46c58: 4284 clrl %d4
46c5a: 5284 addql #1,%d4
46c5c: 4a18 tstb %a0@+
46c5e: 66fa bnes 46c5a <vprintk+0x2b6>
;
/* leading spaces */
if ( !minus )
46c60: 4a03 tstb %d3
46c62: 6614 bnes 46c78 <vprintk+0x2d4>
for ( i=len ; i<width ; i++ )
46c64: b484 cmpl %d4,%d2
46c66: 6310 blss 46c78 <vprintk+0x2d4>
46c68: 2e04 movel %d4,%d7
rtems_putc(' ');
46c6a: 4878 0020 pea 20 <OPER2+0xc>
for ( len=0, s=str ; *s ; len++, s++ )
;
/* leading spaces */
if ( !minus )
for ( i=len ; i<width ; i++ )
46c6e: 5287 addql #1,%d7
rtems_putc(' ');
46c70: 4e93 jsr %a3@
for ( len=0, s=str ; *s ; len++, s++ )
;
/* leading spaces */
if ( !minus )
for ( i=len ; i<width ; i++ )
46c72: 588f addql #4,%sp
46c74: b487 cmpl %d7,%d2
46c76: 62f2 bhis 46c6a <vprintk+0x2c6>
rtems_putc(' ');
/* no width option */
if (width == 0) {
46c78: 4a82 tstl %d2
46c7a: 6606 bnes 46c82 <vprintk+0x2de>
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
46c7c: 4a84 tstl %d4
46c7e: 6736 beqs 46cb6 <vprintk+0x312>
46c80: 2404 movel %d4,%d2
46c82: 1015 moveb %a5@,%d0
46c84: 671a beqs 46ca0 <vprintk+0x2fc> <== NEVER TAKEN
rtems_putc(*str);
46c86: 49c0 extbl %d0
if (width == 0) {
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
46c88: 528d addql #1,%a5
rtems_putc(*str);
46c8a: 2f00 movel %d0,%sp@-
46c8c: 4e93 jsr %a3@
46c8e: 588f addql #4,%sp
if (width == 0) {
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
46c90: 101d moveb %a5@+,%d0
46c92: 670c beqs 46ca0 <vprintk+0x2fc>
rtems_putc(*str);
46c94: 49c0 extbl %d0
46c96: 2f00 movel %d0,%sp@-
46c98: 4e93 jsr %a3@
46c9a: 588f addql #4,%sp
if (width == 0) {
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
46c9c: 101d moveb %a5@+,%d0
46c9e: 66f4 bnes 46c94 <vprintk+0x2f0>
rtems_putc(*str);
/* trailing spaces */
if ( minus )
46ca0: 4a03 tstb %d3
46ca2: 6712 beqs 46cb6 <vprintk+0x312>
for ( i=len ; i<width ; i++ )
46ca4: b484 cmpl %d4,%d2
46ca6: 630e blss 46cb6 <vprintk+0x312>
rtems_putc(' ');
46ca8: 4878 0020 pea 20 <OPER2+0xc>
for ( i=0 ; i<width && *str ; str++ )
rtems_putc(*str);
/* trailing spaces */
if ( minus )
for ( i=len ; i<width ; i++ )
46cac: 5284 addql #1,%d4
rtems_putc(' ');
46cae: 4e93 jsr %a3@
for ( i=0 ; i<width && *str ; str++ )
rtems_putc(*str);
/* trailing spaces */
if ( minus )
for ( i=len ; i<width ; i++ )
46cb0: 588f addql #4,%sp
46cb2: b484 cmpl %d4,%d2
46cb4: 62f2 bhis 46ca8 <vprintk+0x304>
}
if ( c == 's' ) {
unsigned i, len;
char *s, *str;
str = va_arg(ap, char *);
46cb6: 2d46 000c movel %d6,%fp@(12)
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
46cba: 41ea 0001 lea %a2@(1),%a0
46cbe: 102a 0001 moveb %a2@(1),%d0
46cc2: 6600 fd04 bnew 469c8 <vprintk+0x24>
46cc6: 6000 fd1a braw 469e2 <vprintk+0x3e> <== NOT EXECUTED
unsigned long n;
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
rtems_putc('-');
46cca: 4878 002d pea 2d <OPER2+0x19>
unsigned_num = (unsigned long) -num;
46cce: 4484 negl %d4
unsigned long n;
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
rtems_putc('-');
46cd0: 4e93 jsr %a3@
unsigned_num = (unsigned long) -num;
if (maxwidth) maxwidth--;
46cd2: 588f addql #4,%sp
46cd4: 4a82 tstl %d2
46cd6: 6700 fe34 beqw 46b0c <vprintk+0x168>
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
46cda: 2004 movel %d4,%d0
char toPrint[20];
if ( sign && (num < 0) ) {
rtems_putc('-');
unsigned_num = (unsigned long) -num;
if (maxwidth) maxwidth--;
46cdc: 5382 subql #1,%d2
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
46cde: 4c43 0000 remul %d3,%d0,%d0
46ce2: 6600 fe32 bnew 46b16 <vprintk+0x172>
46ce6: 2004 movel %d4,%d0
if (maxwidth) maxwidth--;
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
46ce8: 91c8 subal %a0,%a0
while ((n = unsigned_num / base) > 0) {
46cea: 7601 moveq #1,%d3
46cec: 182e ffeb moveb %fp@(-21),%d4
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
46cf0: 1d80 88ec moveb %d0,%fp@(ffffffec,%a0:l)
46cf4: 49c4 extbl %d4
for (n=maxwidth ; n > count; n-- )
46cf6: b483 cmpl %d3,%d2
46cf8: 6200 fe6a bhiw 46b64 <vprintk+0x1c0>
46cfc: 6000 fe72 braw 46b70 <vprintk+0x1cc>
base = 8; sign = false;
} else if ( c == 'i' || c == 'I' ||
c == 'd' || c == 'D' ) {
base = 10; sign = true;
} else if ( c == 'u' || c == 'U' ) {
base = 10; sign = false;
46d00: 760a moveq #10,%d3
46d02: 4201 clrb %d1
} else {
rtems_putc(c);
continue;
}
printNum(
46d04: 4a00 tstb %d0
46d06: 6700 fdee beqw 46af6 <vprintk+0x152>
46d0a: 6000 fea0 braw 46bac <vprintk+0x208>
char *s, *str;
str = va_arg(ap, char *);
if ( str == NULL ) {
str = "";
46d0e: 4bf9 0005 d40e lea 5d40e <rtems_termios_baud_table+0x10a>,%a5
}
/* calculate length of string */
for ( len=0, s=str ; *s ; len++, s++ )
46d14: 4a15 tstb %a5@
46d16: 6600 ff3c bnew 46c54 <vprintk+0x2b0>
46d1a: 4284 clrl %d4
46d1c: 6000 ff42 braw 46c60 <vprintk+0x2bc>
c == 'd' || c == 'D' ) {
base = 10; sign = true;
} else if ( c == 'u' || c == 'U' ) {
base = 10; sign = false;
} else if ( c == 'x' || c == 'X' ) {
base = 16; sign = false;
46d20: 7610 moveq #16,%d3
46d22: 4201 clrb %d1
} else {
rtems_putc(c);
continue;
}
printNum(
46d24: 4a00 tstb %d0
46d26: 6700 fdce beqw 46af6 <vprintk+0x152>
46d2a: 6000 fe80 braw 46bac <vprintk+0x208>
...
0005c09c <write>:
ssize_t write(
int fd,
const void *buffer,
size_t count
)
{
5c09c: 4e56 0000 linkw %fp,#0
5c0a0: 202e 0008 movel %fp@(8),%d0
5c0a4: 2f0a movel %a2,%sp@-
5c0a6: 222e 000c movel %fp@(12),%d1
5c0aa: 206e 0010 moveal %fp@(16),%a0
5c0ae: 2f02 movel %d2,%sp@-
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5c0b0: b0b9 0005 e260 cmpl 5e260 <rtems_libio_number_iops>,%d0
5c0b6: 6454 bccs 5c10c <write+0x70>
iop = rtems_libio_iop( fd );
5c0b8: 2400 movel %d0,%d2
5c0ba: ed88 lsll #6,%d0
5c0bc: e98a lsll #4,%d2
5c0be: 2279 0005 f8f4 moveal 5f8f4 <rtems_libio_iops>,%a1
5c0c4: 9082 subl %d2,%d0
5c0c6: d3c0 addal %d0,%a1
rtems_libio_check_is_open( iop );
5c0c8: 2029 000c movel %a1@(12),%d0
5c0cc: 0800 0008 btst #8,%d0
5c0d0: 673a beqs 5c10c <write+0x70>
rtems_libio_check_buffer( buffer );
5c0d2: 4a81 tstl %d1
5c0d4: 6750 beqs 5c126 <write+0x8a> <== NEVER TAKEN
rtems_libio_check_count( count );
5c0d6: 4a88 tstl %a0
5c0d8: 6724 beqs 5c0fe <write+0x62>
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
5c0da: 44c0 movew %d0,%ccr
5c0dc: 662e bnes 5c10c <write+0x70>
/*
* Now process the write() request.
*/
return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
5c0de: 2469 0020 moveal %a1@(32),%a2
5c0e2: 2d48 0010 movel %a0,%fp@(16)
}
5c0e6: 242e fff8 movel %fp@(-8),%d2
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
/*
* Now process the write() request.
*/
return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
5c0ea: 2d41 000c movel %d1,%fp@(12)
5c0ee: 2d49 0008 movel %a1,%fp@(8)
5c0f2: 226a 000c moveal %a2@(12),%a1
}
5c0f6: 246e fffc moveal %fp@(-4),%a2
5c0fa: 4e5e unlk %fp
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
/*
* Now process the write() request.
*/
return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
5c0fc: 4ed1 jmp %a1@
}
5c0fe: 242e fff8 movel %fp@(-8),%d2
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
rtems_libio_check_count( count );
5c102: 4280 clrl %d0
/*
* Now process the write() request.
*/
return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
}
5c104: 246e fffc moveal %fp@(-4),%a2
5c108: 4e5e unlk %fp
5c10a: 4e75 rts
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
rtems_libio_check_count( count );
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
5c10c: 4eb9 0004 e144 jsr 4e144 <__errno>
/*
* Now process the write() request.
*/
return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
}
5c112: 242e fff8 movel %fp@(-8),%d2
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
rtems_libio_check_count( count );
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
5c116: 2040 moveal %d0,%a0
5c118: 7209 moveq #9,%d1
5c11a: 70ff moveq #-1,%d0
/*
* Now process the write() request.
*/
return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
}
5c11c: 246e fffc moveal %fp@(-4),%a2
5c120: 4e5e unlk %fp
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
rtems_libio_check_count( count );
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
5c122: 2081 movel %d1,%a0@
/*
* Now process the write() request.
*/
return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
}
5c124: 4e75 rts
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
5c126: 4eb9 0004 e144 jsr 4e144 <__errno> <== NOT EXECUTED
5c12c: 7416 moveq #22,%d2 <== NOT EXECUTED
5c12e: 2040 moveal %d0,%a0 <== NOT EXECUTED
5c130: 70ff moveq #-1,%d0 <== NOT EXECUTED
5c132: 2082 movel %d2,%a0@ <== NOT EXECUTED
/*
* Now process the write() request.
*/
return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
}
5c134: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5c138: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5c13c: 4e5e unlk %fp <== NOT EXECUTED
00047b94 <writev>:
ssize_t writev(
int fd,
const struct iovec *iov,
int iovcnt
)
{
47b94: 4e56 ffe8 linkw %fp,#-24
47b98: 202e 0008 movel %fp@(8),%d0
47b9c: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
47ba0: 266e 000c moveal %fp@(12),%a3
47ba4: 282e 0010 movel %fp@(16),%d4
int bytes;
rtems_libio_t *iop;
ssize_t old;
bool all_zeros;
rtems_libio_check_fd( fd );
47ba8: b0b9 0005 ec60 cmpl 5ec60 <rtems_libio_number_iops>,%d0
47bae: 6400 00c8 bccw 47c78 <writev+0xe4>
iop = rtems_libio_iop( fd );
47bb2: 2200 movel %d0,%d1
47bb4: ed88 lsll #6,%d0
47bb6: e989 lsll #4,%d1
47bb8: 2879 0006 02f4 moveal 602f4 <rtems_libio_iops>,%a4
47bbe: 9081 subl %d1,%d0
47bc0: d9c0 addal %d0,%a4
rtems_libio_check_is_open( iop );
47bc2: 202c 000c movel %a4@(12),%d0
47bc6: 0800 0008 btst #8,%d0
47bca: 6700 00ac beqw 47c78 <writev+0xe4>
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
47bce: 44c0 movew %d0,%ccr
47bd0: 6600 00a6 bnew 47c78 <writev+0xe4>
/*
* Argument validation on IO vector
*/
if ( !iov )
47bd4: 4a8b tstl %a3
47bd6: 6736 beqs 47c0e <writev+0x7a>
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt <= 0 )
47bd8: 4a84 tstl %d4
47bda: 6f32 bles 47c0e <writev+0x7a>
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt > IOV_MAX )
47bdc: 0c84 0000 0400 cmpil #1024,%d4
47be2: 6e2a bgts 47c0e <writev+0x7a> <== NEVER TAKEN
47be4: 244b moveal %a3,%a2
#include <sys/uio.h>
#include <rtems/libio_.h>
#include <rtems/seterr.h>
ssize_t writev(
47be6: 204b moveal %a3,%a0
47be8: 4280 clrl %d0
47bea: e78c lsll #3,%d4
47bec: 7401 moveq #1,%d2
47bee: d88b addl %a3,%d4
/*
* iov[v].iov_len cannot be less than 0 because size_t is unsigned.
* So we only check for zero.
*/
if ( iov[v].iov_base == 0 )
47bf0: 4a90 tstl %a0@
47bf2: 671a beqs 47c0e <writev+0x7a> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
47bf4: 2228 0004 movel %a0@(4),%d1
all_zeros = false;
47bf8: 57c3 seq %d3
/* check for wrap */
old = total;
total += iov[v].iov_len;
47bfa: d280 addl %d0,%d1
47bfc: 5088 addql #8,%a0
*/
if ( iov[v].iov_base == 0 )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
all_zeros = false;
47bfe: c483 andl %d3,%d2
/* check for wrap */
old = total;
total += iov[v].iov_len;
if ( total < old || total > SSIZE_MAX )
47c00: b081 cmpl %d1,%d0
47c02: 6e0a bgts 47c0e <writev+0x7a>
* this loop does that check as well and sets "all-zero" appropriately.
* The variable "all_zero" is used as an early exit point before
* entering the write loop.
*/
all_zeros = true;
for ( old=0, total=0, v=0 ; v < iovcnt ; v++ ) {
47c04: b888 cmpl %a0,%d4
47c06: 6720 beqs 47c28 <writev+0x94>
47c08: 2001 movel %d1,%d0
/*
* iov[v].iov_len cannot be less than 0 because size_t is unsigned.
* So we only check for zero.
*/
if ( iov[v].iov_base == 0 )
47c0a: 4a90 tstl %a0@
47c0c: 66e6 bnes 47bf4 <writev+0x60>
/* check for wrap */
old = total;
total += iov[v].iov_len;
if ( total < old || total > SSIZE_MAX )
rtems_set_errno_and_return_minus_one( EINVAL );
47c0e: 4eb9 0004 ee00 jsr 4ee00 <__errno>
47c14: 74ff moveq #-1,%d2
47c16: 2040 moveal %d0,%a0
47c18: 7016 moveq #22,%d0
47c1a: 2080 movel %d0,%a0@
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
47c1c: 2002 movel %d2,%d0
47c1e: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
47c24: 4e5e unlk %fp
47c26: 4e75 rts
}
/*
* A writev with all zeros is supposed to have no effect per OpenGroup.
*/
if ( all_zeros == true ) {
47c28: 4a02 tstb %d2
47c2a: 663e bnes 47c6a <writev+0xd6>
#include <sys/uio.h>
#include <rtems/libio_.h>
#include <rtems/seterr.h>
ssize_t writev(
47c2c: 588b addql #4,%a3
47c2e: 4282 clrl %d2
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
/* all zero lengths has no effect */
if ( iov[v].iov_len == 0 )
47c30: 2213 movel %a3@,%d1
47c32: 660c bnes 47c40 <writev+0xac> <== ALWAYS TAKEN
47c34: 508b addql #8,%a3 <== NOT EXECUTED
47c36: 508a addql #8,%a2 <== NOT EXECUTED
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
47c38: b88a cmpl %a2,%d4 <== NOT EXECUTED
47c3a: 67e0 beqs 47c1c <writev+0x88> <== NOT EXECUTED
/* all zero lengths has no effect */
if ( iov[v].iov_len == 0 )
47c3c: 2213 movel %a3@,%d1
47c3e: 67f4 beqs 47c34 <writev+0xa0> <== NEVER TAKEN
continue;
bytes = (*iop->pathinfo.handlers->write_h)(
47c40: 206c 0020 moveal %a4@(32),%a0
47c44: 2f01 movel %d1,%sp@-
47c46: 2f12 movel %a2@,%sp@-
47c48: 2f0c movel %a4,%sp@-
47c4a: 2068 000c moveal %a0@(12),%a0
47c4e: 4e90 jsr %a0@
iop,
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
47c50: 4fef 000c lea %sp@(12),%sp
47c54: 4a80 tstl %d0
47c56: 6d3a blts 47c92 <writev+0xfe> <== NEVER TAKEN
return -1;
if ( bytes > 0 ) {
47c58: 6702 beqs 47c5c <writev+0xc8> <== NEVER TAKEN
total += bytes;
47c5a: d480 addl %d0,%d2
}
if (bytes != iov[ v ].iov_len)
47c5c: b093 cmpl %a3@,%d0
47c5e: 66bc bnes 47c1c <writev+0x88> <== NEVER TAKEN
47c60: 508b addql #8,%a3
47c62: 508a addql #8,%a2
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
47c64: b88a cmpl %a2,%d4
47c66: 66d4 bnes 47c3c <writev+0xa8>
47c68: 60b2 bras 47c1c <writev+0x88>
/*
* A writev with all zeros is supposed to have no effect per OpenGroup.
*/
if ( all_zeros == true ) {
return 0;
47c6a: 4282 clrl %d2
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
47c6c: 2002 movel %d2,%d0
47c6e: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
47c74: 4e5e unlk %fp
47c76: 4e75 rts
bool all_zeros;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
47c78: 4eb9 0004 ee00 jsr 4ee00 <__errno>
47c7e: 74ff moveq #-1,%d2
47c80: 7209 moveq #9,%d1
47c82: 2040 moveal %d0,%a0
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
47c84: 2002 movel %d2,%d0
47c86: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
bool all_zeros;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
47c8c: 2081 movel %d1,%a0@
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
47c8e: 4e5e unlk %fp
47c90: 4e75 rts
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
return -1;
47c92: 74ff moveq #-1,%d2 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
47c94: 2002 movel %d2,%d0 <== NOT EXECUTED
47c96: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
47c9c: 4e5e unlk %fp <== NOT EXECUTED